SDLC Approaches
SDLC approaches
To successfully build a software project, development teams must choose a software development methodology that works best for the project on-hand. This article overviews some of the popular SDLC approaches.
Waterfall development method
The Waterfall development methodology is one of the traditional software development methods. This method works well for smaller well-defined projects. The SDLC stages - requirements gathering, analysis and design, development, testing, deployment, and maintenance are performed sequentially in the waterfall development method, meaning the prior stage has to finish before the project moves on to the next step in the development life cycle.
Rational unified process (RUP)
RUP was an early attempt to develop a comprehensive, iterative development process. RUP is a documentation-heavy approach containing artifacts, processes, templates, and disciplines. The RUP development method is customizable depending on the project’s size. RUP has four phases - inception, elaboration, construction, and transition.
Dynamic systems development method (DSDM)
The dynamic systems development method (DSDM) is an iterative approach developed in the mid-90s. During this period, organizations were moving away from the waterfall development method, and Rapid Application Development (RAD) was becoming popular. The RAD method encouraged building applications very quickly with mockups and prototypes. Even though RAD was very agile, there was no formal process governing the software development. Hence the DSDM Consortium was formed by a group of organizations. They created a framework to formalize the product development process.
Several DSDM principles are relevant to any software project - time-boxed, iterative, incremental development and prioritizing the requirements using the MoSCow principle. MoSCow stands for Must have, Should have, Could have, and Wont have.
Scrum framework
Scrum is the most popular agile project management framework with a set of practices and principles. Scrum framework’s iterations are time-boxed short periods called sprints. The duration of the sprint can vary between 2 to 4 weeks.
The Scrum team mainly consists of three roles - the Scrum Master, the Product Owner, and the Development Team. The project’s requirements are broken into smaller work units and added to the product backlog. The product owner is accountable for maintaining and prioritizing the product backlog. A cross-functional development team picks work items to be worked on within the sprint and adds them to the sprint backlog. The development team creates a program increment at the end of the sprint iteration. The scrum master facilitates and oversees the scrum processes. The scrum master plays a vital role in unblocking roadblocks during the sprint iteration.
Kanban
Kanban teams aim to reduce the time spent completing a user story. It is achieved by limiting the number of work items in progress (WIP) and visualizing the workflow with a Kanban board.
Feature-driven development (FDD)
Feature-driven development is a customer-centric, iterative Agile development method that focuses on feature-based development. FDD is used in large software development projects. Features are developed in 2 to 10-day cycles in FDD.
Below are the five critical activities of FDD:
- Develop an overall plan
- Create a feature list
- Plan a feature
- Design a feature
- Build a feature
Extreme programming
Extreme Programming is another Agile methodology introduced by Kent Beck in the late 1990s. The XP methodology’s goal was to remove resistance to changing code during the development process.
The XP methodology comes with a set of guiding principles and practices. Many of the XP’s 12 practices are based on the Agile manifesto. Some popular XP practices include Pair Programming, Test-Driven Development (TDD), Refactoring, Continuous Integration, and Coding Standards.
Conclusion
As outlined in this write-up, several methodologies and frameworks are available for developing software. Each organization must adopt the SDLC methodology/framework that fits its unique needs.