Click to See Complete Forum and Search --> : How can I plan the development of an application?


rfeio
08-23-2008, 07:19 AM
Hi,

I'm looking for a book or some sort of documentation that could help me plan the development of an application. I would like to have an idea what pros do before they actually start coding. It's too irritating to start coding and then remembering that I did not consider something and have to go back and change lots of pieces of code.

Cheers!

scragar
08-23-2008, 10:31 AM
depending on the size of the project I(we if I'm in a team) may skip steps, this is what I do for huge projects, where often I'm not the only person working on them, so making sure everyone knows what they are doing is most important.

I(from here on out replace I with we for when I'm in a team, normally it starts of as a team, but I'll be the sole back end programmer) start making a list of information it will need to provide/return, then reverse engineer this list into a list of inputs required(don't think of inputs till you know what you need from them, you will miss something).
I then do a quick plot on paper of the program flow(so I know what functions and goals I will need).
Then I start working on classes for the core tasks, that way by the time the main work begins everyone knows what the core classes can accomplish, which helps keep the repeated code to a min.

That process can take anywhere from a few minutes for simple projects(where steps are skipped since they are obvious), extending up a whole afternoon(for a few of the larger projects(our discussions on such projects are weird, first there's the whole team meeting, where we get the first step done(in the presence of the client, taking up to an hour with some people), then we break in 2, the graphics people work on how it should look, the back end people(which I'm in BTW) go on with the rest of my steps, after we've each done out part of that we get back together to discuss individual parts of the project in more detail, not only in case the original ideas are wrong(while it's still a core it's easy thrown away if a restart is needed), but also to ensure all parts of the project will fit together and mesh without conflicting).

I have a few complaints about the current system we use though:
firstly there are no dedicated discussions on the long term storage solutions, that is assumed to be part of the back end work, leading to a few conflicts from time to time when a field will be used for 2 or more different things, or a bad choice of field type will cause a few problems.
Secondly no-one is explicitly in charge of documentation, the designers think it's a programming job(no idea why), while I believe that it's a collaborative effort(after all, the front end is all the user ever sees, while you still need to explain as simply as you can what the back end does in each instance).


Oh, and I've only done 4 or 5 projects that took more than a hour of planning, so I don't think that excessive planning is required(if you actually read all this I'm shocked :P )

NogDog
08-23-2008, 04:48 PM
Start with thorough requirements gathering and analysis, so that you can determine what the customer really wants (http://www.google.com/search?q=UML). :)

Then start your high-level design, followed by your database design and the back-end classes/functions that will interact directly with the DB. Then you are ready to start writing the code that performs the user interactions and business processes. (I think the biggest mistake I see novice developers make is reversing that process, starting with designing pretty HTML forms, then starting with the form-handler scripts, and then ginning up a bunch poorly thought out database tables and processes to work with that pretty front end.)

Anyway, for reading material, I would suggest googling on things like "UML", "use cases", "object patterns", and "software design patterns". The classic book on design patterns is Design Patterns: Elements of Reusable Object-Oriented Software (ISBN 0-201-63361-2). IBM.com has many articles you might want to peruse at [url]http://www.ibm.com/developerworks/architecture (http://en.wikipedia.org/wiki/Design_Patterns).