Successful projects are managed well. In order to manage a project efficiently, the manager or dev team must choose which software development method works best for the project at hand. All of the numerous software development methodologies that exist are used for different reasons. I've been doing some research to understand why different methodologies exist, and which ones are the most commonly used software development methodologies.
Waterfall Development Methodology
Considered the traditional software development method, the waterfall method is a rigid linear model that consists of sequential phases (Requirements, Design, Implementation, Verification, Maintenance) in which distinct goals are accomplished. Each phase must be 100% complete before moving onto the next phase, and traditionally there is no process for going back to modify the project or direction.
The linear nature of this method makes it easy to understand and manage. Projects with clear objectives and stable requirements can best use the waterfall method. Less experienced project managers, project teams, and teams whose composition changes frequently may benefit the most from using the waterfall development methodology. However, it is often slow and costly due to the rigid structure and tight controls. These drawbacks led waterfall method users to the explore other development methodologies.
Rapid Application Development Methodology
Rapid Application Development (RAD) is a condensed development process that produces a high quality system with low investment costs. In a recent Forbes article, Scott Stiner,CEO & President of UM Technologies, said “This RAD process allows our developers to quickly adjust to shifting requirements in a fast-paced and constantly changing market.” The ability to quickly adjust is what allows such a low investment cost. The Rapid Application Development method is divided into four phases: Requirements Planning, User Design, Construction, and Cutover. The user design and construction phases are repeated until the user approves that all of the requirements are met.
RAD is most effective for projects with a well-defined business objective and a clearly defined user group, but which are not computationally complex. It is especially useful if the project is of small to medium size and time sensitive. However, it requires a stable team composition with highly skilled developers and users who are deeply knowledgeable about the application area. Deep knowledge is essential when working on a condensed development timeline that requires approval after each construction phase. If you don't have these requirements, RAD may not work well for your organization.
Agile Development Methodology
There are many different forms of the Agile development method including: Scrum, Crystal, Extreme Programming (XP), and Feature-Driven Development (FDD). Agile methods attempt to minimize risk (such as bugs, cost overruns, and changing requirements) by developing the software in iterations that are mini-increments of the new functionality. The benefit of multiple iterations is that it improves efficiency by finding and fixing defects and expectation mismatches early on.
Agile methods rely on real-time communication, which fails to provide new users with documentation to get up to speed. They require a huge time commitment from the users, and is labor-intensive on the developers due to the need to fully complete each feature within each iteration for user approval. The benefits to the software are realized early on due to the incremental addition of the iterations. The Agile methods are similar to RAD, and can be inefficient in large organizations. Programmers, management and organizations accustomed to the Waterfall Method may have difficulty adjusting to Agile, and often a hybrid approach works well for them.
DevOps Deployment Methodology
DevOps deployment is centered around organizational change that enhances the collaboration between the departments responsible for different segments of the development life cycle, such as development, quality assurance and operations. It is focused on improving the time to market, lowering the failure rate of new releases, shortening the lead time between fixes, and prioritizing minimal disruption as well as maximum reliability. To achieve this, DevOps aims to automate its continuous deployment to ensure everything happens smoothly and reliably.
Companies that use DevOps have benefitted by significantly reducing the time to market, improving customer satisfaction, improving product quality and improving productivity and efficiency of its employees. A few drawbacks of DevOps include:
- Some customers don’t want continuous updates to their systems
- Some industries have regulations that require extensive testing before being allowed to move to the operations phase
- Different environments used in the different departments can allow undetected issues to slip into production
- Some quality attributes require human interaction, which slows down the delivery pipeline
These four methodologies are the most pervasive in software development. Each one has its own strengths, weaknesses, and works effectively in appropriate situations. This information may be helpful for you when choosing your development methodology.
Our appreciation for the images illustrating these software development methodologies to:
Image 1: Paulsmith99 at en.wikipedia (link: https://commons.wikimedia.org/wiki/File:Waterfall_model_(1).svg )
Image 3: Planbox (link: https://commons.wikimedia.org/wiki/File:Agile_Project_Management_by_Planbox.png )
Image 4: Kharnagy (link: https://commons.wikimedia.org/wiki/File:Devops-toolchain.svg )