Software development should be done in a planned and organised manner, especially for big projects involving many people.
The development needs to be clearly documented so that it can be understood by other developers who may maintain or enhance the program in the future.
A development lifecyle really continues as long as the program is being used, as it can always be adapted for new requirements.
Over time, several different approaches to software development have been.... developed!
a linear sequential cycle in which each stage is completed before the next is begun.
| advantages | drawbacks |
|---|---|
| easy to manage | difficult to change requirements later |
| stages do not overlap | working program is produced late in the lifecyle |
| each stage has specific deliverables | not suitable for long, complex projects |
a cycle in which a basic set of requirements is first developed, then expanded over time until the full system has been developed.
| advantages | drawbacks |
|---|---|
| some working programs developed early in the cycle | whole system needs to be defined at the start of the project |
| easier to test and debug smaller programs | needs good planning for each iteration |
| customers are involved at the very start, so no late surprises! | not suitable for short, simple projects |
different requirements are developed in parallel focusing on early user involvement in testing (using prototypes).
| advantages | drawbacks |
|---|---|
| reduced overall development time | system needs to be modular |
| frequent customer feedback help development | needs strong teams of skilled developers |
| very flexible as requirements evolve from feedback | not suitable for short, simple projects |
Software development lifecycles are broken into the following stages:
different requirements are developed in parallel focusing on early user involvement in testing (using prototypes).
| stage | description |
|---|---|
| analysis | a problem must be clearly defined before it can be solved! The analysis stage involves finding out exactly what the problem is and what is required (a requirements specification is developed). This may involve a feasibility study. |
| design | Structure charts are designed to identify modules that will be required and variables that will pass between them. State transition diagrams can be documented to clearly express how the system works. Pseudocode is developed to solve any programming aspects. This is all done in the design stage. |
| coding | A suitable programming language(s) is used to code the program(s). |
| testing | Suitable test data is identified and used to test the program at various stages - alpha, beta, acceptance |
| maintenance | The program is maintained throughout its life to ensure it continues to work effectively. This involves improving functionality and adapting the program to new requirements. |