Common stages in software development lifecycles
Analysis
Design
Development
Testing
Implementation
Evaluation
Maintenance
Analysis
Stakeholders state what they require from the finished product which is used to clearly define the problem and the system requirements
Design
Different aspects of the new system are designed, such as:
inputs, outputs, security features, hardware set-up, user interface
Development
Design from previous stage is used to split the project into individual, self-contained modules, which are allocated to teams for programming
Testing
Program is tested against plan formed in design stage. Various tests can be carried out
Alpha testing
Carried out in-house by the software development teams within the company. Bugs are pinpointed and fixed
Beta testing
Carried out by end-users after alpha testing is complete. Feedback is used to inform the next stage of development
White box testing
Carried out by software development teams in which the test plan is based on the internal structure of the program. All possible routes through the program are tested
Black box testing
Software is tested without the testers being aware of the internal structure of the software. The test plan traces through inputs and outputs within the software
Implementation
The software is installed onto the users’ systems
Evaluation
The effectiveness of the software is evaluated against the system requirements defined in analysis
Maintenance
Any errors or improvements that could be made are flagged by the end-users. Software updates will regularly be sent out
Waterfall Lifecycle
Method of software development based on a series of stages which are completed in sequence, from start to finish
Advantages of the Waterfall Lifecycle
Straightforward to manage
Clearly documented
Disadvantages of the Waterfall Lifecyle
Lack of flexibility
No risk analysis
Users have very little input
Agile Methodologies
A collection of methodologies which aim to improve the flexibility of software development and adapt to changes in user requirements faster. The problem is broken down into sections which can be developed in parallel
Advantages of Agile
Produces high quality code
A working prototype is delivered early on
Flexible to changing
Disadvantages of Agile
Poor documentation
Requires consistent interaction between user and programmer
Extreme Programming
An agile model in which the development team consists of a pair of programmers alongside a representative end-user
Advantages of Extreme
Produces high-quality code
Constant user involvement
Programmers work low hours
Disadvantages of Extreme
Teamwork is essential
High cost of two people working on one project
Spiral Model
Built on four key stages with the focus of effectively managing risk-heavy projects. Suited to very large-scale methods
Advantages of Spiral
Thorough risk analysis
Produces prototypes throughout
Disadvantages of Spiral
Expensive to high risk assessors
Lack of code efficiency
High cost
Rapid Application Development
An iterative methodology which uses partially functioning prototypes which are continually built upon
Advantages of RAD
Highly usable finished product
Focus on core features
Disadvantages of RAD
Poor documentation
Fast pace can reduce code quality