Regardless of the type of software process, every serious software process contains all of the same element phases of planning, requirements, design, implementation, testing, documenting, and deployment and maintenance. These basic components of the software development process are all addressed with a level of formality based on size and type of the software system which is being built. The way in which each of these issues is addressed is defined per development model.
Four of the most popular models of software development include the waterfall model, the spiral model, iterative and incremental development, and agile development. All of these types of software development models deal with the software process differently and are finely tuned for specific size and type of projects. All of these different development models can be scaled for use in web development with the help of collaborative tools.
Waterfall Model
The waterfall software development model aims at completing all phases in the sequenced order of events above. The waterfall model of software development does not encourage any revisiting of previous phases for changes, while encouraging completion per phase. This can be ensured through phase reviews of checks to guarantee completeness of each phase. The mentality behind the waterfall is much like a physical waterfall itself, picking up steam as more and more drops of water reach the edge of the fall. This is analogous to the phase’s development which will eventually fall to completion. The waterfall software development model can be used on both small and large projects but is highly scrutinized due to not allowing visitation to previous phases.
Spiral Model
When we look at the spiral model of software development it is more of a risk analysis based model as opposed to the completion oriented waterfall technique. The spiral model is targeted for large system implementations. The spiral model of software development uses several “spirals” of risk management analysis, with phase completion and phase evaluation to reduce each phase of development to smaller and smaller steps which can then be modeled in an iterative or incremental development manner.
Iterative and Incremental Development
An example of the iterative or Incremental development model would be the IBM Rational Unified Process (RUP). RUP and other iterative modeled development processes are modeled in a cyclic pattern which is designed to conform to the ideology of the waterfall model while fixing the problems associated with it. Each of the element phases of development are split up into four slices: inception, elaboration, construction, and transition. Of each of these phases can be split up into multiple iterations which will be worked on one or more times by testers, developers, and analysts. The beauty behind iterative software process model is that when compared to the waterfall methods, revisiting of phases can be done during iterations of the iterative model.
Agile Development
Agile software development is one of the more recent schools of thought when it comes to software development. Agile development is done using the iterative development model as a base, and tries to finely tune the process for a non-traditional approach. Agile software development changes the planning phase into a feedback system which is used as a management control. Testers, developers, and other involved persons in the development process generate feedback and collectively manage the project as it matures. SCRUM is an example of the iterative agile approach, by breaking an entire project into sprints, represented with a product backlog and sprint backlogs, working increments of software are produced with deliverables after every sprint iteration. There is a sprint retrospective at the end of each sprint and a project retrospective at the end of the project to recant wrongs and rights of the project. This is an example of how feedback is used to replace management in scrum process. To track progress teams will organize documents to track progress. The tracking of the project via documents and sprint logs is also another example of how team feedback is used to replace management.
All of these different models of software development keep the basic five software development activities in mind, as well as in the same order, even if revisiting of phases is allowed in the process. Requirements, design, implementation, testing, release and maintenance; these are the five categorical processes represented in all software development processes.
These processes are proven and continue to work today. Selecting one of these style processes in web or application development, we can using any development process and mirror the actions and organization by using one of the industries current collaboration tools. The use of a collaboration too provides a happy medium and meeting place between product owner and developers. Making use of tools such as TRAC or Redmine allow for grouping “tasks” or “tickets” into “target revisions” in a road map that closely resembles the iterative and linear portions of any of the above named software processes.
From a high level, it can be seen that the correlation between following a solid software development process and the production of quality web applications and software does exist. It is certain that any the basic components of the software development process exist in all styles and hybrid development processes today.
