Software Development Life Cycle is a process followed for a software project, within a software organization. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process.
SDLC Key Takeaways
Here are some things that are going to be central to our explanation of the software development life cycle:
- SDLC encompasses: planning, implementation, testing, documentation, deployment and maintenance.
- Models shifted from traditional staged SDLC processes, to agile, and then to Devops.
- Agile and Devops as practices merged traditional staging in new and interesting ways.
- The cloud brought the arrival of web-delivered resources into the picture.
- Although SDLC is now much changed, the concept remains largely the same
History of the Software Development Life Cycle
The consensus is that the SDLC as a framework developed in the 1950s and 1960s as computer science itself evolved quickly.
Prior to the second half of the 1900s, when the ENIAC and various other innovations moved the computing world forward quickly, computing really wasn’t elaborate enough to need something like the SDLC. The first implementations of software technologies involved simple tools, like basic go-to lines and if/then statements.
Over time, the concept of structured programming brought in the need for developmental models and the SDLC was born.
The first early models were mainly defined by the stages.
Take a look at this infographic to understand this historic migration of practices from the waterfall to new DevOps and agile methodologies.
A typical Software Development Life Cycle consists of the following stages −
1. General Analysis And Requirements Gathering:
In software development, requirements for the products to be designed are sourced in this step. For most projects, this step happens to be the primary focus. Project managers, interested stakeholders gather around to meet and put together the requirements. Questions such as “Who gets to use the product? Utilization of the product, what kind of data goes into the product? And what kind of data is returned by the product as output?” are all answered in this step.
After the requirements have been gathered, and questions like above have been answered, analysis of the conditions comes next. The plausibility of putting the elements assembled into the final product is analyzed and carefully studied in detail. A requirement specification document is created. After completion of the requirements analysis, the development team can then proceed to the next level of making out a product design to be followed throughout the development process.
2. Product Design:
During this step, the creation of the product design from the requirements documentation ensues. Product design assists in the specification of the necessary hardware required to run the product, in other words, the deployment. It also helps in clearly marking out the general product architecture, depicting the software modules required to be developed and their relationships.
It is also time to make a choice of development platform, e.g. .NET, Java, Laravel, Ruby on Rails or FileMaker. This choice depends on the requirements themselves but also on which platform is commonly used within the company.
Furthermore, the User Interface and User Experience are designed in this step. Taking into account the target users of the software application and the main features, a user-friendly and modern looking User Interface is designed. If you like to read more about “Foundation UX: Prototyping”,
The product design layouts further serve as a base for the next step in the development cycle. In the next step, which involves coding, the development team would have to come up with a plan for implementing the programming language.
After the phase of product design, the development team moves on to the stage of coding and implementation. Once the development team has the requirement specification and the design documents in hand, the software developers can start programming. Besides coding, the developers also perform unit or module testing in this phase, as to detect potential problems as early as possible in the development phase.
Some companies prefer to outsource the coding activities, and many times also the previous step of Product Design, to a third-party software development company. Reasons for this outsourcing vary from simply not having the required resources or skills available or wanting to focus with their own team on the company’s core products and services.
After the coding phase, the team can then move on to the next step of development, which is testing.
After the step of coding and implementation, the team can then proceed to integration and validation testing. Software development service teams are in the constant process of releasing different software applications for various purposes, as such this process is necessary as it is important to test the product against all parameters available vigorously. This phase exposes potential bugs in the product, and if any, these are corrected.
As we saw in the previous step, the software developers themselves will perform unit or module testing. The next stage of testing would be Integration testing. Here the interaction between the individual modules and/or external systems are tested. After integration testing Validation testing will be performed, testing the end software product based on the requirements and UI/UX design, from an end-user point of view.
A different approach to test is the so called Test Driven Development (TDD) method. Using this method software developers would first write a test script for particular requirements and only after that write the code to fulfill those requirements. Then the test is run and the code is adjusted until the test passes.
If the software application contains no more (non-acceptable) problems anymore, the application is deployed.
5. Deployment Of The Product:
Once the software product passes the testing phase, deployment of the product can ensue. Once the product is ready, the first batch is rolled out and opened to the public. That is known as Beta testing. If any changes are required due to customer feedback, or any bugs not seen during the testing phase arises, they can be corrected and implemented during this phase of software development.
Deployment normally involves setting up a so called ‘Production’ server on which the software will run. Such a server can be one of the company’s own servers or it can be in the ‘cloud’ by using for example Amazon Web Services or Microsoft Azure.
After deployment the next phase is Maintenance and Operations.
6. Maintenance And Operations:
Once all above steps have been successfully passed, and the software product is fully released into the market, the product must be kept operational and maintenance of the product is required. This involves fixing issues, keeping the systems up to date with the latest operating system patches or updates of used third-party software. In case the user base of the software product increases significantly, expansion in the form of additional processing power, memory and/or database capacity might need to be done to keep the system running smoothly.