Getting Your Priorities Straight in Agile Software Development
Any custom software development project is a big undertaking, especially if the product is complex and multi-faceted. Throughout the development lifecycle, prioritizing tasks should be an ongoing process, to ensure a smooth workflow and prevent redundancies. Because custom software projects have a multitude of moving parts, it is easy to lose sight of the forest for the trees. Project requirements prioritization keeps your project moving forward toward your end goal, with minimal speed bumps and distractions along the way.
The Product Prioritization Process
Project prioritization is a key facet of Agile product development, and knowing how to prioritize projects is one of the primary skills required of the project manager. It is up to the project manager to define high priority requirements for each iteration, with feedback from the customer and the development team.
The project backlog clearly lists tasks for the development team in order of priority, and the team references it by iteration as they progress through each sprint. The product backlog is a living document, with built-in flexibility to accommodate changes in product requirements, and to handle unexpected roadblocks or setbacks.
The backlog assigns greater detail to high priority items to be executed in the earliest upcoming iteration, while lower priority items are less clearly defined. As the development team moves on to the next sprint, new priorities are set, and greater detail provided.
Requirements prioritization improves the planning, budget control and scheduling of software engineering projects, to ensure stakeholder satisfaction with the end product.
Approaches for Prioritizing Requirements
When it comes to prioritization, there are numerous different techniques. The choice of technique depends on the particular project and its requirements, and on the preferences and experience of the project manager.
Requirements prioritization techniques can be categorized and subcategorized in the following ways:
Nominal scale approach. In this approach, requirements are classified into categories, which are then prioritized. All requirements in a given category are assigned the same priority.
Subcategories of the nominal scale approach include:
- Numerical assignment technique, where requirement categories are assigned a numerical value. For example, 1=Low priority or optional; 2=Moderate priority; 3=High priority/critical. All tasks within each category are given the same priority.
- MoSCoW technique, where requirements are classified into one of four categories of priority:
M=Must haves: For the project to be successfully delivered, these requirements must be met.
S=Should haves: These are high-priority features that will benefit users, but are not critical to product delivery.
C=Could haves: These are wish-list items that will enhance the product’s design or functionality.
W=Won’t haves: Requirements that will be omitted for now, but may possibly be included at a later stage.
As with numerical assignment, all items assigned to each MoSCoW group are given the same priority.
Ordinal scale approach. In the ordinal scale approach, all items are ranked by priority. Ordinal scale ranking includes the following techniques:
- Priority groups technique prioritizes requirements by high, medium and low, and then further sub-prioritizes the groups in each category by high, medium and low. The process is repeated recursively, until there is only one requirement in each subgroup. This approach is best suited for large projects with multiple requirements.
- Binary search tree technique assigns top priority to a single “parent” requirement, then assigns it two child requirements, each of which are in turn assigned two child requirements, and so on, until all requirements are mapped out, creating a pyramid of sorts.
- Bubble sort technique uses pairwise comparisons to prioritize project tasks. Bubble sort is effective for comparing time-intensiveness and subjective measures. It is a fairly simple method, most suitable for projects with a low number of requirements.
Ratio scale approach. Prioritization by ratio scale generates ranked lists of requirements. Variations of this approach include:
- Analytic hierarchy process is a popular favorite for projects requiring complex decision-making. AHP is essentially a 3-step process:
- Attributes and alternatives are identified for each requirement.
- Users rate each pair of attributes by importance, comparing them on a scale of 1-9, with one being of equal importance, and 9 being an extreme difference in importance.
- User evaluations are converted to numerical values, and each element of the hierarchy is assigned a numerical priority.
- $100, aka cumulative voting technique. In this approach, stakeholders are given X number of units, for example, $100, and asked to distribute them among the various requirements according to their value, or priority. At the end, the distributed amounts are tallied, and requirements ranked accordingly.
- Minimal spanning tree technique. This approach is one of the fastest methods for prioritizing requirements, and is intended to eliminate redundancies by minimizing the number of pairwise comparisons. In this approach, pairs of requirements are compared using the AHP scale of 1-9. Due to its scalability, the minimal spanning tree approach is suitable for projects prioritizing a large number of requirements.
- Data mining and ML techniques. These prioritization approaches use data mining and machine learning techniques to prioritize requirements based on the client’s business goals, stakeholder concerns, and other interests such as security or performance requirements.
Requirements prioritization is fundamental to keeping your software development project on track and on time. Without it, you can expect delays, setbacks and costly errors that add up to an inferior product and a dissatisfied customer.
Make Your Project a Priority with Tateeda
Software development is a creative process that requires both hard and soft skills. The software development team at Tateeda has the skills and experience necessary to bring your software project to life, exactly as you imagined it. During the Agile development process, we keep you in the loop at every stage, answering your questions and inviting your feedback. At Tateeda, your software development project is always our priority.