Read time: 6 mins
Most software development can be classified as either Agile or Waterfall types of methodologies. A development methodology is the process by which an engineering team will build a given product.
The Agile methodology is an iterative approach to product development that is performed in a collaborative environment by self-organizing teams. The methodology produces high-quality software in a cost-effective and timely manner to meet stakeholders’ changing needs.
Every product release begins with a list called a“backlog,” which consists of a list of prioritized requirements. This is not a backlog in the traditional negative sense of the word; rather, it is a list of work to be done. As discussed in the article, Determining the product release, when using the project triangle, you must choose between schedule, scope and cost.
Using the Agile methodology, the team will always adjust the scope of work to ensure that the most important items are completed first. Software developers work from this list in order of importance. The backlog is a dynamic set of requirements that can change weekly (depending on the length of your iterations).
If you choose to release a product on a particular date with your current team, then the scope of what requirements will be completed will continually adjust. Should you decide that all of the requirements must be completed, then your process will require additional iterations (see below).
Instead of delivering the entire backlog at the end of a release, you can divide the work into“iterations.” Iterations (also known as sprints) are smaller amounts of delivered requirements, which are taken from the backlog in their order of importance. Review the example near the end of this article to understand how requirements are broken into iterations.
Iterations have short timeframes that last from one to four weeks, depending on the team’s experience. If you are working with a team that has not worked in an Agile environment, it is advisable to use one- to two-week iterations, as they enable you to quickly change priorities at the end of the iteration.
A key element of an iteration is that the priorities regarding which requirements should be built do not change within the iteration (for example, during the two-week period); this list should only change from one iteration to another.
During an iteration, the team works through a full development cycle (from analysis to testing). At the end, they demonstrate a working product to stakeholders.
Note that one iteration might not produce a marketable release; multiple iterations may be required for a release and to complete all backlog items. However, the team should be able to demonstrate all agreed-upon functions at the end of the iteration.
The Agile methodology accepts that project change is inevitable. The use of small iterations allows changes to be absorbed quickly without inflicting significant project risk. The backlog order can adjust as business priorities evolve; with the next iteration, the team can adapt to those priorities.
In the context of a product release, the items that are the most technically difficult (that is, that hold the larger risk) tend to be done in early iterations to ensure that the risk can be minimized.
This approach to mitigating risk is a key differentiator from the Waterfall methodology . Instead of adjusting during the development process, the Waterfall methodology involves planning and researching each task in advance. However, should items need to change after the investment of this upfront work, revision tends to be resisted by the team and can also be expensive.
An Agile team (consisting of five to nine people) includes the functions of a larger development organization, such as developers, testers, documenters and product managers.
Team members are self-organizing; they decide how and who delivers the requirements within an iteration. When there are questions during the process, having access to a product manager allows for quick resolution to any issues.
The role of the product manager is integrated into the Agile methodology. He or she creates and maintains the backlog and provides the requirements for the release. The product manager participates throughout the process by answering questions as they arise.
The Agile methodology emphasizes face-to-face conversations and test cases to promote collaboration and to keep teams aligned in their focus. This method also emphasizes demonstrable features as the primary measure of tracking progress. Given these factors, the Agile methodology produces less written documentation than other product development methods.
Every day during an iteration, the team will hold a stand-up meeting (also called a scrum). During this meeting, each developer will outline their progress from the day before, as well as any obstacles encountered. The goal is to resolve problems and improve developers’ productivity.
The scrum master (that is, the head of the process) removes obstacles—for example, they will ensure that the right people are brought together to discuss a business issue, or that a computer problem is fixed. Product managers should attend these meetings to address business questions or related difficulties.
As the product team delivers demonstrable functions at the end of every iteration, the process of securing customer feedback is simplified as features can be shown to customers then, instead of having to wait until the final released product.
The testing team plays an integral role in the Agile methodology. These team members test new functions as they are delivered. Although regression testing might occur at the end of the process, test cases are executed with every iteration as problems can be found at any time during the project, not just during completion of the development phase.
If a team were to develop a customer address book using the Agile methodology, the order of work would be as follows (timeframes are for demonstration purposes only):
1. Requirements: Product manager creates requirements documents that include the following requirements (in order of priority):
These requirements documents will be simple, and will include user scenarios. As each item is worked on, questions will arise, and there will be opportunities to discuss them as they occur. From this list, the requirements for the first iteration are chosen (starting with the highest priority items).
Timeframe: 1 week
2. Iteration #1: The team works on the functionality to create new contacts and to view contacts. This includes the design, development and testing for these items. At the end of the iteration, the team demonstrates the functionality to the product manager, where he or she can provide feedback.
Timeframe: 2 weeks
3. Iteration #2: Team works on the functionality to import contacts, to email and to add pictures to the contacts. This includes the design, development and testing for these items. At the end of the iteration, the team demonstrates the functionality to the product manager, where he or she can provide feedback.
Timeframe: 2 weeks
4. Iteration #3: Team conducts a regression test and prepares to release the product.
Timeframe: 1 week
5. Release: The product functionality is released.
Total elapsed time: 6 weeks
Note that if any changes to the requirements occur during this project, each iteration would adjust accordingly.
There is much debate about the merits of the two different product development methodologies, Waterfall and Agile. In the end, it is up to your organization to choose the most appropriate method.