The Software Development Life Cycle (SDLC) is a conceptual model used in project management to describe the stages involved in an information system development project from an initial feasibility study through maintenance of the completed application.
Several SDLC methodologies have been developed and each of them has it’s own advantages and disadvantages. It is up to the development team to adopt the most appropriate one for the project. Sometimes, a combination of the models is more suitable. This post will primarily look at the Waterfall and Agile methodologies.
This is the typical IT project methodology and was developed in the 1970s. It is also known as the Classic Life Cycle Model or Linear Sequential Model. This is organized by phases and each phase must be completed before the next phase can begin. Phases of a traditional waterfall project include:
- Planning: The initiation phase is leveraged to create the business case, charter or vision statement, budget, and some planning documents.
- Requirements Analysis: This phase allows project teams to describe the project’s requirements and understand the needs of process and application’s functionality. The typical deliverables are the project requirements document and business requirements/specifications.
- Design: This is the technical design phase. Prototypes are created to ensure the final product will meet the customer needs. The deliverables are dependent on the environment and interpretation is needed for the teams to become aligned.
- Development: This encompasses final technical design and development. It is more of “behind-the-scenes” effort by the technical team and the business partners typically do not have heavy involvement during this phase.
- Testing/Deployment: As the name suggests, testing and deployment is done in this phase.
- Warranty: Usually, a 30-day cycle allows the project team to manage any open or new defects before handing the product over to the support team.
Waterfall is schedule and mile-oriented and a change control process is put in place to ensure the right things are documented and nothing is missing. Waterfall discourages revisiting and revising any prior phase once it is complete. This inflexibility in a pure Waterfall model has been a source of criticism by supporters of other more flexible models.
This methodology stands in contradiction with waterfall model of business and data management. It is based on iterative and incremental development and places emphasis on supporting rapidly developing business and always puts business value first. These processes use feedback rather than planning as their primary control mechanism.
Agile leverages the 80/20 rule in many ways, such as allowing one to start a project after doing the 20 percent of the requirements and design that provides 80 percent of the project definition, filling in the remaining details once development is underway and everyone has a good look at what the challenge really entails.
Agile allows teams to work on multiple tasks at once or at a minimum run through shorter steps in a cycle. Benefits to this include getting the requirements more correct closer to the beginning of the project and getting data into customers’ hands sooner for additional feedback and testing. The following are a few popular Agile methods:
- Agile Unified Process (AUP)
- Extreme Programming (XP)
- Open Unified Process (OpenUP)
Waterfall is literally like a traditional waterfall. It starts at the top and drops in a linear fashion until it is done. Agile is not as predictive and allows for iterative change and process.
Waterfall is time-consuming, intense and detailed, which will mitigate the two primary advantages of agile development – speed and flexibility.
Waterfall is better for projects that are predefined and understood. Agile is better in situations where there is still a bit of uncertainty regarding the end solution. Waterfall does not allow for interactive development while feedback is the basis for agile methodology.