Software Development Models
There
are several different software development life cycle Models aimed at improving programmer
productivity and software quality. The development team should adopt the most appropriate
Model for their projects.
Of course there must also be effective project management to ensure that expectations are
met for functionality, cost and delivery.
Waterfall Model
The waterfall Model is where the developers follow these phases:
- Requirements analysis
- Software design
- Implementation and Integration
- Testing
- Deployment
- Maintenance
In the Waterfall Model, after each phase is finished, it proceeds to the next one. Reviews
may occur at any stage, allowing for the possibility of change.
Spiral Model
The Spiral Model combines the waterfall Model, rapid prototyping and iterative risk analysis.
It is suited to large-scale projects.
The risk analysis concentrates on the options and constraints in order to support software
Re-use and quality.
Iterative and Incremental Development
Iterative development of a software project starts with minimal functionality. The functionality
is increased as the project advances. This will reveal issues early in the development cycle.
The Iterative process will also reveal design goals when they are not clearly defined.
In each increment, a slice of functionality is delivered. The process then iteratively enhances
the evolving versions until the system is implemented. The goal for the design of any iteration
is to be simple, straightforward, and modular. The analysis of an iteration is based upon
user feedback.
Agile Development
Agile software development uses iterative development as a basis but with a lighter and more
people oriented perspective than traditional approaches. Agile processes use feedback, rather
than planning, as the control mechanism. The feedback is driven by regular testing and releases
of the evolving software.
The Agile Manifesto defines the attitudes for software development:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
All common sense – but see also the
The human factor which I think is vital for successful software development.
Code and Fix
The "Code and fix" development is not so much a Model, as a strategy for coping with management
pressures. Programmers immediately begin producing code without much planning. When testing
begins, the inevitable occurs – what is delivered is not what was wanted.
Evolutionary Development Model
There is usually an existing computer system that needs enhancing. The Evolutionary Model allows
for a gradual transition from an old system to the new.