|The primary goal in delivering software is to:
- Deliver software that meets the requirements and specifications.
- Deliver the software within the time frame promised.
- Ensure that the software is of high quality.
Meeting these 3 goals is not easy. It requires your entire software team to have a defined development / project management methodology, and tools to make implementing the methodology easy.
When choosing your development methodology, you have many to choose from, each having advantages and disadvantages. The latest buzzword is "Agile Development", this newsletter explores the advantages and disadvantages of Waterfall vs. Agile.
Traditionally, companies have used the Waterfall methodology. The Waterfall methodology performs each phase of the software lifecycle sequentially:
- The team creates a list of all requirements before any design is done.
- Upon requirements completion, a detailed design is created for each requirement.
- Upon design completion, all tasks are estimated and submitted for approval.
- Upon approval, coding begins and test cases are created in preparation for quality assurance.
- Upon code completion, testing begins and continues until all test cases are run and all defects are fixed.
- Upon quality assurance completion, the software is documented and moved to production.
The advantage of Waterfall is that it is a very disciplined methodology, producing very detailed specifications that can be translated to user and technical documentation. It also provides very detailed oversight, including continual risk management and disciplined project management planning and measurement.
The disadvantage of the Waterfall methodology is that it takes a long time to deliver software to production (normally more than a year). The reason is due to the effort involved in defining all features of the software and creating detailed designs for all of them. It is also problematic because if major flaws are found in the requirements or design, it does not appear until the testing phase, and reworking a flawed design adds risk to the project as well as a lot of effort. Last, because the duration of Waterfall tends to span a year or more, business rules and needs can change, and the original design of the software may not still apply, making features of the new software obsolete before it ever makes it to production.
Agile is all the buzz these days. With Agile, analysis is done similar to the Waterfall method. However, once analysis is done, each requirement is prioritized as follows:
- High - These are mission critical requirements that absolutely have to be done in the first release.
- Medium - These are requirements that are important but can be worked around until implemented.
- Low - These are requirements that are nice-to-have but not critical to the operation of the software.
Once priorities have been established, the release "iterations" are planned. The first release (Release 1.0) begins by working on just the high priority items. Unlike Waterfall, new requirements can be introduced into the release anytime before quality assurance begins, and high priority items can be reprioritized, allowing you to drop features you had originally slated for the release. Normally, each Agile release iteration takes between 1 to 3 months to deliver.
Below are the advantages of the Agile Iterative Life Cycle:
- The Design phase goes much faster, as designs are only done on the items in the current release (Release 1.0 for example).
- Coding and Testing go much faster because there are less items to code and test. If major design flaws are found, re-work is much faster since the functional areas have been greatly reduced.
- The client gets into production in less than 3 months, allowing them to begin earning revenue or reducing expenses quicker with their product.
- If market conditions change for the client, changes can be incorporated in the next iterative release, allowing the software to be much more nimble.
- As the software is implemented, the client can make recommendations for the next iteration due to experiences learned in the past iteration.
Searching the Internet for Agile will produce results that discuss different "methods" of Agile. You will see Scrum, Extreme Programming, Adaptive Software Development, Crystal Clear, and many others. These are simply different adaptations of Agile to fit the needs of specific teams.
You may also hear that Agile is a "cowboy coding" methodology. This simply means that teams are coding without regard to how the end product will look and feel, and they make adjustments on the fly to meet the needs of the day. "Cowboy coding" has a negative connotation because it implies that there is no oversight, measurement, or prediction as to when the first usable version of the software will be ready for production.
In the coming months we will discuss Agile development in more detail, and explain how you can use Pragmatic Agile Development (PAD) to gain the benefits of nimbleness of Agile, combined with the oversight, project management, and deliverable measurement, resulting in a methodology that is both nimble and has discipline. Learn more about Pragmatic Agile Development today.
Upcoming newsletters will discuss the following topics:
Start improving your project efficiency and success by signing up for our monthly newsletters today.