The software development life cycle (SDLC) is a term used to describe the formalised approach teams take to creating software. The most popular SDLCs are Waterfall and Agile, although there are many other models, such as the Spiral and Big Bang models. The aim of employing one of these methodologies is to ensure efficiency during production.
What are the phases of the software development life cycle?
While each life cycle model takes a different approach to development, there are six stages that are common to all. Some models will move through these stages in a linear fashion, while others may revisit each stage several times. The stages are:
- Requirement analysis
- Planning
- Solution architecture
- Software development
- Testing
- Deployment
Requirement Analysis
In this initial phase the software house works with the client to define their expectation of the application. The Solutions Architect collects information from stakeholders around the project, seeking input from potential users (or current users in the case of existing system updates), sales people, the development team, and sometimes even industry experts. Technical documentation and market research also feed in at this stage to help produce a clear definition of the project.
Planning
The purpose of this stage is to determine feasibility, looking at the practicalities of a project, and exactly how it can be set up to deliver on its objectives. The team will broadly look at what resources will be needed to achieve the client’s wishes, including team size and skill sets needed.
A well-executed planning stage should drive out potential project pitfalls. The team will attempt to address these with contingency planning around project variables.
Solutions Architecture
With all the requirements defined, and an approximation of how the project will work, the Solutions Architect now steps in to flesh out the system. Using best practice frameworks and standards, the system design will map out how the system will integrate disparate applications into a cohesive whole, and show how data will flow through it. It will also demonstrate the purpose and functionality of each module.
Acting as a project blueprint, the system architecture is a crucial document that needs understanding and sign off from both clients and developers.
Software Development
With the design signed off, here the development team takes over to turn the blueprint into a working system. The team will use the pre-agreed programming languages to code the design, following best-practice guidelines to help reduce errors.
Testing
There are two phases to the testing stage: software testing and quality control.
For the software testing phase, testers seek to ‘break the system’ by uncovering bugs and identifying defects. Tests will be both manual and automated, and will determine whether the system is robust enough for release.
Quality control seeks to determine whether the product meets its functional requirements, and adheres to the client specification.
Deployment
Deployment means releasing the product for use. However, depending on the complexity of the project some products may be first released into a testing environment for final checks. Alternatively sophisticated systems may move first into User Acceptance Testing, where the system is added to a replicated environment, so they can ensure the product meets their expectations before general release.
Following the deployment phase, many SDLCs also list ‘maintenance’ as a phase, as this is common to many projects. Maintenance keeps the system in tip-top condition by keeping platforms updated and providing enhancements where possible.
We can also host your system through public clouds like AWS, Azure, or on our own private cloud. This is something we’ll discuss during the planning or Requirements Gathering stage.
What is the life cycle of software development?
Below are two of the most popular SDLCs, both of which we offer at illumo digital:
Waterfall
Waterfall employs a straightforward process in which the project progresses sequentially down a set of six phases:
- Requirement gathering
- Software design
- Implementation
- Testing
- Deployment
- Maintenance
Waterfall requires little customer involvement, with the software delivered at the end of the project. It benefits from clear progress measurement and can save time and money. Crucially, Waterfall projects can be assigned a fixed cost, as end-goal requirements are agreed at the beginning of the work. Comprehensive product documentation is needed to ensure all parties are fully aligned before work commences, as there will not be back-and-forth during design and build.
This limited communication is one of the risk factors around the Waterfall methodology. With projects delivered once completed, without interim checkpoints, clients may be dissatisfied with the outcome but unable to make amends. Additionally, the long software development life cycle means that client requirements may change during build – not something Waterfall can accommodate.
Where there is a clear scope which is not likely to change, a simple project with a predictable timeline, and clearly defined requirements, Waterfall can be an excellent way for companies to realise their software needs within a fixed time and budget.
Agile
Agile is a modern methodology, taking a flexible approach to development meaning clients can alter their brief throughout the project. Projects are divided into short ‘sprints’, with a defined number of sprints within a project.
The sprint cycle runs:
- Plan
- Design
- Develop
- Test
- Deploy
- Review
In Agile, the customer benefits from a series of review points in which they can see progress made and evaluate whether the software is meeting their needs. This enhanced insight is a big plus point in most customer’s eyes. Additionally, the emphasis on iterative production means teams can show real results very quickly, building out from an initial minimal product to encapsulate the project’s full requirements.
Agile’s flexible approach is well suited to larger projects whose scope may change during the lengthy development process. Software with untried or experimental elements also benefit from this approach, allowing project components to ‘fail fast’ without large investment, or alternatively secure buy-in.
The main drawbacks of Agile against Waterfall are around pricing. Agile will generally be more expensive than Waterfall, and its evolving nature means costs and timings are often undefinable. There is also a greater commitment required from the client, to have regular meetings and assessments, which may be a waste of time for companies with a simple project or clearly defined scope.
Understanding the Software Development Life Cycle: download the free guide
Learn more with our complementary ebook Understanding the Software Development Life Cycle, to gain full visibility into illumo digital’s development process.