As software development is becoming synonymous with project management, different software development methods are attempting to minimize costs, create more effective channels of communication amongst stakeholders which consequently maximizes satisfaction amongst all parties involved in a project.
Depending on the resources that are available, the overarching purpose for any software development team depends on the project’s scope, timeline, and costs. This article will outline the main features and the pros and cons of the 5 main software development methodologies: Waterfall, Rapid Application Development, De Ops, Agile, and Extreme programming (EX).
The Waterfall methodology uses a sequential and linear approach to developing software. The waterfall is mostly aligned to the traditional approach to project management in which the project is planned, and the project plan is created before any work has begun on the project.
This approach to software development is ideal for speed, it is cost effective, and developers know all the deliverables and their deadlines ahead of time. On the other hand, many waterfall projects are prone to multiple changes post-mortem which agile software development ideologies’ main focus is to avoid.
As previously stated, the waterfall method consists of 5 major steps which include: i. defining the requirements outlined in a project plan ii. design the software to be created iii. implement the design iv. verify the implementation and test the software and v. maintain the software.
Although some forms of the waterfall method are well respected by the public, such as the British government’s PRINCE2 software development method, the waterfall method has its downfalls. One of these downfalls is that the Waterfall method requires everything to be prescribed in a project plan before any code is written. This is why if a development team decides to use the waterfall method, they should thoroughly define, from the start, all of their requirements, as revisions will be difficult to implement later in the project lifecycle.
Pros: what you plan is what is delivered, cost effective and no hidden expenses, and creates straight forward goals for everyone involved.
Cons: most projects need to be revamped post-mortem, the waterfall method can be very rigid and does not offer the flexibility that most projects need, and due to new variables in the project lifecycle and the rigidity in the waterfall method, project may be extended, and scope creep may occur.
DevOps (development and operations) is a software development method which main goal is to swiftly develop an app and consistently assure quality throughout the project lifecycle. This is the preferred software development method in order to launch a product fast onto the market and creates a continuous feedback flow for all stakeholders involved in developing and maintain the project.
Traditionally, the development and the operations teams operated separate of one another. The development team would design the system, build, test, and then would ultimately hand over their deliverables to the operations team. The operations team uses it for work and reports errors to the development team. In DevOps, like in Rapid app development, there is consistent communication between operations (end users) and the development team.
Many big IT companies have implemented a DevOps culture such as Facebook and Google. For these companies, it is important that there is a constant flow of information so that they can improve processes and provide the best product to their end users.
Pros: Faster product launch, there is a shift of culture for employees working on the project to be more productive, developers process efficiently, and developers are more engaged which is necessary for software that needs to be updated.
Cons: It requires that there is a shift in mindset, dealing with legacy systems can be a challenge, getting the right expertise can be an issue.
Agile is an alternative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. In the Agile Manifesto, programmers from around the world have described the principles in which agile developers should develop software.
The Agile Manifesto has 12 principles, some of which are: to satisfy the customer, welcome changing requirements, deliver working software frequently, business people and developers must work together daily, commitment to face to face conversation, and the programmers agree that the best architects, requirements and designs emerge from self-organizing teams.
The main focus behind agile is in the name- it is about being able to respond to the market and to the customer by adapting quickly to their needs and demands.
Unlike the waterfall software development method, Agile splits a longer delivery cycle into smaller deliverable periods called sprints, also known as iterations. An iteration provides the cadence for delivering a working product to the customer, receiving feedback and making changes based on the feedback they receive from all stakeholders. Agile is similar to DevOps as there is continuous integration and deliverables which requires more interaction with stakeholders but leaves less room for mistakes and scope creep.
Pros: Better response to change, accepting uncertainty better than in the waterfall model, there are faster review cycles, and there is less upfront work.
Cons: Flexibility in the project can lead to less discipline on the project, there is a significant business culture shift that needs to happen, and not all stakeholders are satisfied and comfortable with working with the lack of predictability, especially those financing the project.
Extreme Programming (XP)
Extreme Programming (XP) is a software development method that has many principles rooted in Agile. Its values, principles and practices are spearheaded to allow small to medium sized teams to produce advanced software and to adjust to evolving and changing requirements.
What differentiates XP apart from other agile methodologies is that XP emphasizes the technical aspects of software development. The emphasis for XP is on how engineers produce the final deliverables and create high quality code at a sustainable pace.
XP’s values are the main motivation for the team some of which are similar to Agile such as: Communication, simplicity, courage and feedback. What makes XP a bit different from Agile is that XP adds onto the principles enshrined in the Agile manifesto. XP concentrates on incremental changes, embracing change, assumed simplicity, quality work and rapid feedback.
Pros: Unlike other software developing methods, XP finishes projects more swiftly, it is visible amongst all the stakeholders, and as time is money, it helps to reduce many costs that can be found in other software development methods.
Cons: XP projects are difficult to implement when the customer is not as involved in the project as they need to be, the constant changes are hard to document and may lead to issues in troubleshooting if a portion of the project fails and working with tight deadlines creates a more stressful environment for developers and the client.
Rapid Application Development (RAD)
Software is not a finite resource. This is the main premise in which Barry Boehm and James Martin established the foundations of the Rapid App Development model (RAD). Rapid Application development consists of 4 main steps:
- Defining the software development requirements
- Create a prototype and test it
- Collect feedback and improve the product and
- Finalize the product.
Rapid app development is like the waterfall methodology as it creates a plan and defines the requirements before developing a prototype, but it is more agile than the waterfall method as the first milestone in the project lifecycle is developing a prototype to test with end users.
RAD is great if a development team has access to their end users. It is the preferred software development method for producing applications in a short period of time. When using the RAD software development method, usually the prototype is launched as a product and then over a longer period of time it is consistently updated.
With the traditional waterfall approach, developers do not have interaction with the end user and so are more likely to revise the software post-mortem. This can add extra costs to the client as it is seen as an additional task outside of the project.
Pros: If you have access to end users, it can save you a lot of time and money in producing an end product and it is a good project management technique for quickly launching an apps that need consistent updates. Rapid application development enables shortened time to market, which allows you to get ahead of competitors. With the right RAD platform, you get boilerplate modules which allow for greater speed of process.
There is no vendor lock-in, and the final product is of high quality because the continuous user engagement and prototypes.
Cons: If you do not have access to end users, it will be hard to use this method. Also, this method needs a lot of collaboration, strong developers and is hard to implement with large teams.
Deciding on which software development method a team uses depends on a project’s deadline, budget, and scope. Different methodologies work in different circumstances. If you want to create custom software in the shortest time possible, we recommend RAD. Find out more about this methodology in our whitepaper.