Dreamhost Site Hosting     Dreamhost Site Hosting
SIMON METZ - SOFTWARE DEVELOPMENT METHODOLOGY
Software engineering encompasses a number of techniques to ensure successful high quality launches of software and web development. Most software and web professionals agree that using past experience, and spending the appropriate amount of time planning and designing features, will identify and mitigate risks. In the end this will allow teams produce products with greater functionality, fewer defects, in less time.

These processes, documents, and templates are encapsulated and referred to as software development methodology (SDM) or system development life cycle (SDLC). Various forms of programming will affect the final application with respect to the ease of testing, maintenance and extendibility.

There are so many methodologies in place and the challenge is to select the correct one for you organization, clients, and development teams. No matter what methodology that you use, the focus should be on as much analysis and design before you touch a line of code. You need to evaluate how successful previous projects have been:
  • Quality of product(s)
  • Ease of maintenance
  • Development time
  • Development costs
  • Development team satisfaction
  • Amount of risk that was identified before development began
Software Development Methodologies fall into these categories: Waterfall, Iterative, Spiral, and Agile.
Waterfall Methodology is the best-known and oldest process is the waterfall model, where developers (roughly) follow these steps in order. They state requirements, analyze them, design a solution approach, architect a software framework for that solution, develop code, test (perhaps unit tests then system tests), deploy, and maintain. After each step is finished, the methodology proceeds to the next step, just as builders don't revise the foundation of a house after the framing has been erected. There is no provision in the methodology for correcting errors in early steps (for example, in the requirements), so the entire (expensive) engineering process may be executed to the end, resulting in unusable or unneeded software features, just as a house built on an incorrect foundation might be uninhabitable after it is handed over to the customer. The original description of the methodology did include for iteration, but that part of the methodology is usually overlooked. One source of difficulty is that the number of dependencies among the artifacts (outputs) of the various steps is surprisingly high, much higher in a typical software project than in a typical building project.

Iterative Methodology describes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster. Iterative processes are preferred by commercial developers because it allows a potential of reaching the design goals of a customer who does not know how to define what he wants.

One form of software development that many project managers and developers are familiar with is the Change Order. A change order is a form of iterative development as a client requests a specific set of changes or upgrades in a change order and each set of processes must be followed on the change order iteration. The additional functionality can be developed on top of previous codes bases.
All images and content © 2007 Simon Metz
Dreamhost Web Hosting
Dreamhost Site Hosting
adbright ads