Introduction
Software development methodology is the series of process useful for software development. It is a special way of handling software development projects.
Software development methodology is a part of software engineering. It is useful for both individual and organization. This is a useful technique for successful software development. It is useful for software engineers. There are different types of methodology useful for different projects. Every methodology has its own development phases. The project need to go through the development phases.
Requirement, Analysis, Design, Coding, Testing, Deployment, etc. are the development phases of a software development methodology. Choosing an appropriate software development methodology can make a big difference in achieving successful development. Not utilizing software development methodology may lead to software fail. The software development methodology is useful for eliminating project risks. All the methodology has its benefits and drawbacks for some reason.
Here some of the software development methodology are:
Waterfall Model
![Waterfall model software development methodology - waterfall model](https://code-mentor.online/wp-content/uploads/2023/10/Waterfall-model.png)
Benefits
- This model is simple and easy to understand.
- It is easy to manage due to the flexibility of the model.
- Phases do not overlap in this software development methodology.
- It is completed one at a time.
- This model works for smaller project where requirements are well known.
Drawbacks
- Does not work for large and complex projects.
- High amount of risk and uncertainty.
- Once an application is in the testing stage, it is very difficult to go back and change something.
- No working software is produced until late during the life cycle.
Incremental Model
![incremental incremental model](https://code-mentor.online/wp-content/uploads/2023/10/incremental.png)
Benefits
- Requires low cost to modify the scope and requirements.
- Easy to test and debug the project.
- Risk management and flexible.
- The customer provides feedback on each iteration.
Drawbacks
- Requires proper planning and designing.
- It requires clear and complete definition of whole system.
- Each phase of iteration is rigid and do not overlap with each other.
Prototype Model
![Prototype model prototype model](https://code-mentor.online/wp-content/uploads/2023/10/Prototype-model.png)
Benefits
- Active user involvement in development.
- The users get better understanding of the developing system.
- Errors can be detected much faster.
- Quicker user feedback is available.
- Missing functionality can be identified easily.
Drawbacks
- It increases the complexity of the system.
- Not suitable for small projects.
- Leads to implementing and then repairing way of building systems.
- An incomplete application may cause application no to use due to inadequate problem analysis.
Agile Software Development
![GILE4 agile model](https://code-mentor.online/wp-content/uploads/2023/10/GILE4.png)
Benefits
- It is driven by customer description of what is required.
- Software changes can be made during the development.
- The best form of communication is face to face conversation.
- It provides proper attention to technical excellence and design.
- The product is delivered frequently after developed.
Drawbacks
- It is high-cost model than other development methodology.
- Useful for large projects.
- Expert project members are requiring in decision making process.
- Not analysing the requiremnt properly may lead project go off track.
- There is a lack of strength on necessary designing and documentation.
Spiral Model
![spiral spiral model](https://code-mentor.online/wp-content/uploads/2023/10/spiral.png)
Benefits
- High amount of risk analysis.
- Good for large and mission-critical projects.
- Strong approval and documentation control.
- Additional Functionality can be added at a later date.
Drawbacks
- Can be a costly model to use.
- Risk analysis requires highly specific expertise.
- Project’s success is highly dependent on the risk analysis phase.
- Doesn’t work well for smaller projects.
DSDM (Dynamic System Development Model)
![dsdm DSDM](https://code-mentor.online/wp-content/uploads/2023/10/dsdm.jpg)
Benefits
- Users are highly involved into the development.
- Functionality of the system is delivered in frequent intervals.
- DSDM provides easy access to the end users.
- Projects are delivered in time.
Drawbacks
- This method is difficult to understand.
- It is not suitable for small projects.
- Requires high cost to implement.
- It requires both trained users and developers.
Extreme Programming Methodology
![Extreme programming](https://code-mentor.online/wp-content/uploads/2023/10/extreme.png)
Benefits
- Follows the KIS (keep it simple) principle.
- It reduces the risks related to programming.
- XP influences the power of simplicity.
- It allows developer to focus on coding instead of paperwork.
Drawbacks
- XP focus on coding rather than design.
- It lacks proper documentation.
- Lots of pressure on working with tight deadlines.
- Requires customer interaction for functionality implementation.
Rapid Application Development
![rapid2 rapid application development](https://code-mentor.online/wp-content/uploads/2023/10/rapid2.png)
Benefits
- Flexibility and Adaptability to change.
- It is useful for reducing risk.
- Development progress can be measured.
- Code can be reuse.
- Encourages customer feedback.
Drawbacks
- It is not suitable for small projects.
- Requires expert developer and designers.
- It lacks documentation.
- Requires user involvement throughout the life cycle of the project.
Feature Driven Development
![feature feature driven development](https://code-mentor.online/wp-content/uploads/2023/10/feature.png)
Benefits
- The five steps of FDD accelerates the software development process.
- It is suitable for large projects.
- FDD provides progress tracking and reporting capability.
- It supports multiple team working in parallel.
- A features list is created and “plan by feature” is conducted.
Drawbacks
- Documentation is not provided for the customers.
- Not suitable for individual projects.
- The success of this project depends on project leader.
- High dependency on the main developer.
Lean Development
![lean lean deveopment](https://code-mentor.online/wp-content/uploads/2023/10/lean.png)
Benefits
- Development team can provide functionality in short time.
- Lean eliminates waste within a production facility.
- It mainly focuses on loyal customers.
- The product is developed in short period with limited budget.
Drawbacks
- The project is highly dependable on team members.
- Developers must understand the customer requirements.
- Too much flexibility on development may go off track.
Scrum Development
![scrum2 1200x600 1 scrum deveopment](https://code-mentor.online/wp-content/uploads/2023/10/scrum2-1200x600-1.png)
Benefits
- Scrum safeguards effective use of time and money.
- Large projects are easily managed.
- It creates system transparency.
- Clients feedback is receiving on every short sprint.
- Individual effort is visible.
Drawbacks
- Not suitable for large projects.
- Difficult for planning and structuring the project.
- It requires experienced and expert team members.
- Team members may suffer from frustration due to daily meetings.
- There are no deadlines for delivering the project in this software development methodology.