Software Development: 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.
Software Development: The Waterfall Model
The waterfall Model is the traditional software development life cycle. This is where the developers follow these phases:
- Requirements analysis
- Software design
- Implementation and Integration
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.
Software Development: The 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.
Software Development: 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.
Software Development: Agile Methodology
The Agile Methodology 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.
Software Development: Just "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 or is unmaintainable.
Software Development: 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.