Software development life cycle (SDLC) (also referred to as the application development life-cycle) is a process for planning, creating, testing, and deploying a software system. The system development life cycle framework provides a sequence of activities for system designers and developers to follow. It consists of a set of steps or phases in which each phase of the SDLC uses the results of the previous one.
The SDLC adheres to important phases that are essential for developers—such as planning, analysis, design, and implementation. Like anything that is manufactured on an assembly line, an SDLC aims to produce high-quality systems that meet or exceed customer expectations, based on customer requirements, by delivering systems that move through each clearly defined phase, within scheduled time frames and cost estimates.
There are a number of SDLC models or methodologies that have been created, such as waterfall, spiral, Agile software development, rapid prototyping, and etc.
A traditional software development life cycle is composed of a number of clearly defined and distinct work phases which are used by systems engineers and systems developers to plan for, design, build, test, and deliver information systems. For example, the waterfall model focuses on complete and correct planning to guide large projects and risks to successful and predictable results
Few people in the modern computing world would use a strict waterfall model for their SDLC as many modern methodologies have superseded this thinking. Some will argue that the SDLC no longer applies to models like Agile computing, but it is still a term widely in use in technology circles. The SDLC practice has advantages in traditional models of systems development that lends itself more to a structured environment. The disadvantage of using the SDLC methodology is when there is a need for iterative development or (i.e. web development or e-commerce) where stakeholders need to review on a regular basis the software being designed.
SDLC can also be described along a spectrum of agile to iterative to sequential methodologies. Agile methodologies, such as XP and Scrum, focus on lightweight processes that allow for rapid changes (without necessarily following the pattern of SDLC approach) along the development cycle.
Traditional vs Agile Approaches
The traditional Project Management (waterfall) approach is linear where all the phases of a process occur in a sequence. The approach depends on predictable tools and predictable experience. Each and every project follows the same life cycle which includes the stages such as feasibility, plan, design, build, test, production, support, as shown in the figure below.
The entire project is planned upfront without any scope for changing requirements, such as Waterfall are all rigid and highly controlled. They outline distinct stages for project planning from start to finish and assume that you have all the requirements and information you need upfront. The following table summarizes many of the differences between Scrum and traditional project management models.
Categories | Traditional | Agile |
Development Model | Traditional | Iterative |
Focus | Process | People |
Management | Controlling | Facilitating |
Customer involvement | Requirements gathering and delivery phases | On-site and constantly involved |
Developers | Work individually within teams | Collaborative or in pairs |
Technology | Any | Mostly Object-Oriented |
Product Features | All included | Most important first |
Testing | End of the development cycle | Iterative and/or Drives code |
Documentation | Through | Only when needed |
It is the oldest and most straightforward. With this methodology, we finish one phase and then start the next. Each phase has its own mini-plan and each phase “waterfalls” into the next. It was the first model to identify the different stages that make up the system development process, and its simplicity has made it a useful model for many years. However, the waterfall model is not really a true reflection of what actually happens in system development, since it does not emphasize the need to iterate over the stages. The biggest drawback of this model is that small details left incomplete can hold up the entire process.
An extension of the waterfall model, this SDLC methodology tests at each stage of development. As with the waterfall, this process can run into roadblocks. It emphasizes how later stages of development are related to earlier stages; for example, how testing should be derived from the activities that are carried out during requirements and analysis.
The most flexible of the SDLC models, the spiral model is similar to the iterative model in its emphasis on repetition. The spiral model goes through the planning, design, build and test phases over and over, with gradual improvements at each pass.
In this life cycle model, the system is partitioned according to areas of functionality. Each major functional area is developed and delivered independently to the client. For example, in the bike hire system, tasks relating to issuing a bike might be developed and delivered, followed by returning a bike and then maintaining customer records.
Agile is a mindset and it’s a set of values and principles. Agile is a way of thinking and acting. Agile is all about short cycles, iterative and incremental delivery, failing fast, getting feedback, delivering business value to customers early and about people, collaboration and interaction. Agile is a mindset that is all about transparency, inspection, and adaptation. Agile, however, doesn’t consist of any roles, events or artifacts. It’s a mindset. For example, Scrum is one of the widely used frameworks under the Agile umbrella, which may help you in becoming more Agile, there are however many more frameworks within the Agile movement, like Kanban, XP, Crystal and many more as shown in the Figure below:
The Agile SDLC model separates the product into cycles and delivers a working product very quickly. This approach produces a succession of releases. Testing of each release feeds back info that’s incorporated into the next version.
SDLC done right can allow the highest level of management control and documentation. Developers understand what they should build and why. All parties agree on the goal upfront and see a clear plan for arriving at that goal. Everyone understands the costs and resources required.