This tutorial explains the top 12 Software development methodologies or SDLC Methodologies in detail with diagrams, advantages, and disadvantages:
Software development methodologies (Software Development Life Cycle- SDLC Methodologies) are very important for developing software.
There are many development methods and each method has its own pros and cons. To deliver a successful project it is necessary to select an appropriate development method for Project.
What You Will Learn:
- SDLC Methodologies
- #1) Waterfall Model
- #2) Prototype Methodology
- #3) Spiral Methodology
- #4) Rapid Application Development
- #5) Rational Unified Process Methodology
- #6) Agile Software Development Methodology
- #7) Scrum Development Methodology
- #8) Lean Development Methodology
- #9) Extreme Programming Methodology
- #10) Joint Application Development Methodology
- #11) Dynamic System Development Model Methodology
- #12) Feature-Driven Development
A detailed description of the various methods is given below:
#1) Waterfall Model
Waterfall Model also known as a linear sequential model is the traditional model in the Software development process. In this model, the next phase starts only when the previous one gets completed.
The output of one phase acts as the input for the next phase. This model does not support any changes to be done once it has reached the testing phase.
The waterfall model follows the phases as shown below in a linear order.
- The waterfall model is a simple model.
- It is easily understood as all the phases are done step by step.
- No complexity as the deliverables of each phase are well defined.
- This model cannot be used for the Project wherein the requirement is not clear or the requirement keeps on changing.
- A working model can only be available once the software reaches the last stage of the cycle.
- It is a time-consuming model.
#2) Prototype Methodology
Prototype Methodology is the software development process in which a prototype is created before developing an actual product.
A prototype is demonstrated to a customer to evaluate the product if it is as per their expectation or if any changes are required. The refined prototype is created after the customer’s feedback and is again evaluated by the customer. This process goes on until the customer is satisfied.
Once the customer approves the prototype, the actual product is built by keeping the prototype as a reference.
- Any missing feature or change in requirement can be easily accommodated in this model as it can be taken care of while creating a refined prototype.
- Reduces the cost and time of development as potential risks are identified in the prototype itself.
- As a customer is involved, it is easy to understand the requirement and any confusion can be easily sorted.
- As the customer is involved in every phase, the customer can change the requirement of the end product which increases the complexity of the scope and may increase the delivery time of the product.
#3) Spiral Methodology
Spiral Model focuses mainly on risk identification. The developer identifies the potential risks and their solution is implemented. Later a prototype is created to verify risk coverage and check for other risks.
- Risk analysis done here reduces the scope of risk occurrence.
- Any requirement change can be accommodated in the next iteration.
- Model is good for large projects that are prone to risks and the requirement keeps on changing.
- The spiral model is best suited for large Projects only.
- The cost can be high as it might take a large no of iterations that can take high time to reach the final product.
#4) Rapid Application Development
Rapid Application Development methodology helps to get high-quality results. It focuses more on the adaptive process than on planning. This methodology accelerates the entire development process and takes maximum advantage of developing software.
Rapid Application Development divides the process into four phases:
- The requirement planning phase combines the planning and analysis phase of the Software Development Lifecycle. Requirement gathering and analysis are done in this phase.
- In the user design phase, the user requirement is converted into a working model. A prototype is created as per the user requirement that represents all the system processes. In this phase, a user is constantly involved to get the model output as expected.
- The construction phase is the same as the development phase of SDLC. Since users are involved in this phase as well, they keep on suggesting any changes or improvements.
- The cutover Phase is similar to the implementation phase of SDLC including testing, and deployment. The new system built is delivered and goes live much sooner when compared to the other methodologies.
- It helps the customer to take a quick review of the project.
- A high-quality product is delivered as the users interact continuously with the evolving prototype.
- This model encourages feedback from a customer for improvement.
- This model cannot be used for small Projects.
- Requires experienced developers to handle complexities.
#5) Rational Unified Process Methodology
Rational Unified Process Methodology follows the Iterative software development process. It is an Object-oriented and Web-enabled development methodology.
RUP has four phases:
- Inception Phase
- Elaboration Phase
- Construction Phase
- Transition Phase
A brief description of each phase is given below.
- Inception Phase: The scope of the project is defined.
- Elaboration Phase: Project requirements and their feasibility are done in-depth and the architecture of the same is defined.
- Construction Phase: Developers create a source code i.e. the actual product is developed in this phase. Also, the integrations with other services or existing software occur in this phase.
- Transition Phase: Product/application/system developed is delivered to the customer.
As RUP follows an iterative process, it provides a prototype at the end of each iteration. It emphasizes the development of components so that they can be used in the future as well. All the above four phases involve the workflows – Business Modeling, Requirement, Analysis and Design, Implementation, Testing, and Deployment.
- Business Modeling: In this workflow business context, the scope of the project is defined.
- Requirement: Here, the requirement of the product to be used in the entire development process is defined.
- Analysis & Design: Once the requirement is frozen, in the analysis & design phase, the requirement is analyzed i.e. the feasibility of the project is determined and then the requirement is transformed into a design.
- Implementation: The output of the design phase is used in the Implementation phase i.e. coding is done. Development of the Product takes place in this phase.
- Testing: Testing of the developed product takes place in this phase.
- Deployment: In this phase, the tested Product is deployed to the production environment.
- Adaptive to changing requirements.
- Focuses on accurate documentation.
- As the integration process goes through the development phase, it requires very little integration.
- RUP method requires highly experienced developers.
- As the integration is done throughout the development process, it might cause confusion as it can conflict in the testing phase.
- It is a complicated model.
#6) Agile Software Development Methodology
Agile Software Development methodology is an approach that is used to develop software in an iterative and incremental manner that allows frequent changes in the project. In agile, rather than focusing on requirements, the emphasis is on flexibility and an adaptive approach while developing a product.
Example: In agile, the team discusses the core features of the product and decides which feature can be taken up in the first iteration, and starts developing the same following the SDLC phases.
The next feature is taken up in the next iteration and is developed on the previously developed feature. Hence, a product is incremented in terms of features. After every iteration, the working product is delivered to the customer for their feedback and each iteration lasts for 2-4 weeks.
- Changes in requirements can be accommodated easily.
- Focus on flexibility and adaptive approach.
- Customer satisfaction as feedback and suggestions are taken at every stage.
- Lack of documentation as the focus is on the working model.
- Agile needs experienced and highly skilled resources.
- If a customer is not clear about what exactly they want the Product to be, then the project would fail.
#7) Scrum Development Methodology
Scrum is an iterative and incremental agile software development framework. It is a more time-boxed and planned method.
It is best suited for Projects in which requirements are not clear and keeps on changing rapidly. The scrum process includes planning, meeting & discussions, and reviews. Using this methodology helps in the fast development of the Project.
Scrum is organized by the Scrum Master, who helps to successfully deliver the Sprint goals. In scrum, the backlog is defined as the work to be done as a priority. The backlog items are completed in small sprints that last for2-4 weeks.
Scrum meeting is done on a daily basis to explain the progress of backlogs and to discuss possible obstacles.
- Decision-making is completely in the hands of the team.
- The daily meeting helps the developer to know the productivity of individual team members thereby leading to improvement in productivity.
- Not Suitable for small-sized Projects.
- Needs highly experienced resources.
#8) Lean Development Methodology
The lean development methodology is a method that is used in software development to decrease cost, effort, and waste. It helps in developing software one-third time when compared to the others that too within a limited budget and fewer resources.
- Identify value refers to the identification of products to be delivered at a specific time and cost.
- Mapping the value refers to the requirement of what is required to deliver the product to the customer.
- Creating flow refers to delivering a product to the customer on time as the customer needs it.
- Establish pull is establishing the product as per the customer’s needs only. It should be as per the customer’s requirement.
- Seek Perfection refers to delivering a product as expected by the customer within the time allocated and cost decided.
Lean Development focuses on 7 principles as explained below:
Waste Elimination: Anything that hinders the delivery of the product on time or reduces the quality of the product comes under waste. Unclear or inadequate requirements, coding delays, and insufficient testing comes under the causes of waste. The lean development method focuses on eliminating this waste.
Amplifying Learning: Amplify learning via learning the technologies required for the delivery of the product and understanding the requirement of the customer for what exactly they need. This can be achieved by taking feedback from the customer after every iteration.
Late Decision Making: It is better to make late decisions so that any change in the requirement can be accommodated with less cost. Taking early decisions while the requirement is uncertain leads to high costs as changes need to be done in all phases.
Fast Delivery: For fast delivery of the product or any change request or enhancement, an iterative development approach is used as it delivers the working model at the end of each iteration.
Team Empowerment: The team should be motivated and should be allowed to make their own commitments. Management should be supportive and should allow the team to explore and learn. The team should be helped to eliminate bad practices.
Built-in Integrity: The software is integrated to make sure it as a complete system it works well.
View Application as a whole: A product is developed in small iterations wherein the features are taken up to deliver. Different teams work on different aspects to deliver the product on time. The product as a whole should be optimized i.e. developer, tester, Customer, and Designer should work in an effective way to give the best results.
- Low Budget and efforts.
- Less time-consuming.
- Deliver the product very early when compared to the other methods.
- The success of development depends entirely on the team’s decisions.
- As the developer is flexible to work, it can also lead to losing his focus.
#9) Extreme Programming Methodology
Extreme Programming methodology is also known as XP methodology. This methodology is used to create software wherein the requirement is not stable. In the XP model, any change in requirement at the later stages leads to high costs for the Project.
This methodology requires more time and resources to complete the project when compared to the other methods. It focuses to reduce the cost of the software with continuous testing & planning. XP provides iterative and frequent releases throughout the SDLC phases of the Project.
Core Practices of Extreme Methodology:
- TDD (test-driven development)
- Pair Programming
- Planning game
- Whole team
- Continuous Integration
- Design Improvement
- Small releases
- Coding Standard
- Collective code ownership
- Simple Design
- System Metaphor
- Sustainable Pace
- Emphasis is on customer involvement.
- It delivers a high-quality product.
- This model requires meetings at frequent intervals which thereby increases the cost to customers.
- Development changes are too much to handle every time.
#10) Joint Application Development Methodology
The joint application development methodology involves the developer, end-user, and clients for meetings and JAD sessions to finalize the software system to be developed. It accelerates the product development process and increases the developer’s productivity.
This methodology provides customer satisfaction as the customer is involved throughout the development phase.
Planning: The very first thing in JAD is to select the executive sponsor. The planning stage includes selecting the executive sponsor, and team members for the definition stage, and defining the scope of the session. The deliverables from the definition stage can be completed by conducting a JAD session with high-level managers.
Once it is finalized that the project is to be taken, the executive sponsor and facilitator select the team for the Definition phase.
Preparation: The preparation phase includes preparation for conducting a kickoff meeting for the design sessions. Design sessions are conducted for the design team with an agenda.
This meeting is conducted by the executive sponsor wherein he explains the JAD process in detail. He takes up the concerns of the team and makes sure that members of the team are confident enough to work on Project.
Design Sessions: In the design session, the team should go through the Definition document to understand the requirement and Project scope. Later, the technique to be used for designing is finalized. The point of contact is finalized by the facilitator for the resolution of any issues/concerns.
Documentation: The documentation stage is completed when the sign-off on the design document is done. Based on the requirement in the document, the prototype is developed and another document is prepared for the deliverables to be given in the future.
- The quality of the Product is improved.
- Team productivity increases.
- Lowers the development and maintenance cost.
- Takes an excessive amount of time for planning and schedule.
- Requires significant investment of time and effort.
#11) Dynamic System Development Model Methodology
Dynamic System Development methodology is based on the RAD method. It uses an iterative & incremental approach. DSDM is a simple model that follows best practices to be implemented in the project.
Best Practices followed in DSDM:
- Active User Involvement.
- The team must be empowered to make decisions.
- The focus is on frequent delivery.
- Fit for business purposes as the criteria for acceptance of Product.
- The iterative and incremental development approach ensures that the right product is being created.
- Reversible changes during development.
- Requirements are baselined at a high level.
- Integrated testing throughout the cycle.
- Collaboration & co-operation between all the stakeholders.
Techniques used in DSDM:
Timeboxing: This technique is of 2-4 weeks of the interval. In exceptional cases, it goes up to 6 weeks also. A disadvantage of a longer interval is that the team can lose focus. At the end of the interval, the product has to be delivered. It can contain several tasks.
It follows the below rule:
- Must-Have: All the features defined should be delivered, or else the system would not work.
- Should Have: These features should be there in the product, but can be dropped in case of time constraints.
- Could Have: These features can be reassigned to a later time box.
- Want to Have: These features are not of much value.
The prototype is created first for the main functionality and then the other functionalities and features are implemented incrementally on the previous build.
- Iterative & Increment approach.
- Decision-making power to the team.
- Not good for small Organizations as this technique is costly to implement.
#12) Feature-Driven Development
FDD also follows an iterative & incremental approach to delivering the working software. The feature is a small, client-valued function. E.g. “Validate the password of a user”. The project is divided into features.
FDD has 5 process Steps:
#1) Develop an Overall model: An overall model which is basically a merge of detailed domain models is developed in this step. The model is developed by the developer wherein the customer is also involved.
#2) Build a feature list: In this step, the features list is prepared. The complete project is divided into features. Features to FDD have the same relation as user stories to scrum. A feature has to be delivered in two weeks of time.
#3) The plan by feature: Once the feature list is built, the next step is to decide the order in which the features should be implemented and who would be the owner of the feature i.e. teams are selected and features to be implemented are assigned to them.
#4) Design by feature: Features are designed in this step. The chief programmer selects the features to be designed in the time span of 2 weeks. Along with the feature owners, detailed sequence diagrams are drawn for each feature. Then the class and method prologues which are followed by the design inspection are written.
#5) Build by feature: Once the design inspection is successful, the owner of the class develops the code for their class. Code developed is unit tested & inspected. The chief programmer’s acceptance of the code is developed to let the complete feature be added to man build.
- Scalability of FDD to large projects.
- It is a simple methodology that can be easily adopted by companies.
- Not suitable for smaller projects.
- No written documentation is provided to the customer.
SDLC methodologies can be used for a project depending on the Project requirement and nature. Not all methodologies are suitable for every Project. Selecting the correct methodology for a Project is an important decision.
Hope this tutorial helped you to get a good understanding of the different Software Development Methodologies.