What is the Software Development LifeCycle?
The SDLC (Software Development Life Cycle) is a breakdown of all the steps involved in the creation of software and will normally move through the following steps:
- Requirement analysis
- In-depth planning
- Product design
- Deployment (putting the software ‘live’)
- Post-production maintenance
Why is it used?
The SDLC gives a business or team a tried-and-tested foundation for every software related project that they produce. Subsequently, teams can develop high-quality products with more speed and consistency while the company can:
- Maintain deadlines and keep projects within budget
- Maintain high standards for code quality
- Keep bugs and vulnerabilities out of production
- Align product features with business goals
- Prioritise tasks effectively
- Avoid scenarios where team members work on the same or low value tasks
- Lower the number of post deployment bug fixes.
The SDLC outlines each stage of software development and breaks them down in separate phases. While SDLC strategies have been around since the 1960s, most of the core concepts have evolved over time. The most significant change is in the testing phase, which was traditionally a separate SDLC stage. Modern teams prefer to integrate testing and security activities into every stage of the life cycle to create a more reliable software that’s secure by design. Nevertheless, it’s still important to have a separate stage for in-depth testing.
The below image gives a quick overview of the 6-stage SDLC most organisations use and which team members are involved in each stage:
Stages of the SDLC
This is the first step where we define the project’s requirements. Overall questions we ask during this stage are:
- What is the goal of this project?
- What does the business hope to get from the product?
- Is the team going to write code from scratch or are we updating an existing system?
- Do we have any hard deadlines to meet?
- Do we have the necessary knowledge in-house or will we have to outsource some part(s) of the project?
All the data gathered in this stage goes into a document called a Software Requirement Specification document (SRS). It includes all the software, hardware, security, and network specifications for the product, as well as information on how many people are needed for the project, what the deadlines are and how much it will cost.
Once the project has been approved in the stage above, the team would then start creating a design plan that will lay out all major aspects of the new product, including:
- Architecture (programming language, databases, interfaces, operating system, pre-made templates, APIs and so on)
- Features list (what the product will do and how it will behave)
- Infrastructure requirements (servers, network and so on)
- UI design (how it will look, colours etc.)
- Necessary security measures (e.g. SSL encryption, password protection, recommended database migrations, etc.)
The team adds this information to a Design Document Specification (DDS) which is reviewed by a stakeholder and approved or rejected. The DDS lists all the information that developers will need to code the product.
The development team start to work on the code. This phase results in operational software that meets all the requirements listed in the SRS and DDS. Although the code will need more testing, the developers should have carried out some basic tests.
In-depth software testing
The software created in the previous stage now goes through extensive testing. Companies will have a wide variety of test methods, depending on the product, including:
- Code quality testing
- Unit testing (functional tests)
- Integration testing
- Performance testing
- Security testing
- Acceptance testing
- Non-functional testing.
While most modern teams rely on automated tests to speed up this phase, some manual tests are still needed such as penetration testing. If the team finds a defect, the code goes back to the development phase where developers will resolve the defect. We would end the testing phase when the product is stable, bug free and up to the quality standards that were defined in previous phases.
The product leaves testing and is ready to go into production (accessible to the end users), and some projects need the team to write user manuals or create instructional videos before the product is fully deployed.
Ideally this phase will happen automatically to reduce the chance of human error, but some companies may still require manual approvals during this stage.
Product maintenance and enhancement
Every piece of software requires periodic reviews and updates based on user feedback. The most common activities during this stage are:
- Bug fixing
- Setting up continuous monitoring
- Upgrading the software to newer versions
- Adding new features to the software
Once a bug is discovered the team will move back as many steps in the SDLC as needed. Occasionally, severe defects need updates in the design stage, while most take it back to the development stage.
Interested in computer engineering? Find out more about all the computer engineering courses we have available by clicking here.
Diploma in Computer Engineering
Diploma in Artificial Intelligence
Alternatively, you can view all our online engineering courses here.
How can buildings be classified?
How can buildings be classified? We spend a lot of time in various structures, more so than we ever do outside. There are different types of buildings we spend our time in and might be involved in constructing, so let’s have a look at how we can classify these buildings. Classification of buildings based on […]
What is Agile Software Development?
What is Agile Software Development? Agile development is an approach that is a combination of iterative and incremental sequences with a focus on process adaptability and customer satisfaction via a rapid delivery of the working product. Unlike the more traditional waterfall model previously used in development, where each step is completed sequentially, agile promotes an […]
What are coding standards? Do we really need them?
What are coding standards? Do we really need them? Coding standards are rules and guidelines that help developers create cleaner, more readable, and more efficient code with minimal bugs and errors. They also offer a uniform way for developers to build highly functional code. Coding standards aren’t the personal opinions of any one developer. They […]