Requirements Engineering for Agile development 0 xcRfwsOO sgmT27A

Requirements Engineering for Agile development

Are you feeling overwhelmed as a product owner, business analyst or architect trying to determine the most crucial features for your product? Look no further! This article offers a comprehensive introduction to requirements engineering in an agile environment. By delving into the basics of this field, you will gain some relevant knowledge and insights on measuring the value of qualities in order to make informed decisions and create a successful product roadmap.

Value and Scrum

According to Scrum, a Product Owner is accountable for maximizing the value of the product. Where the focus used to be more with the product, Scrum has moved more and more to a value focused approach. One could even go as far as saying the product is merely a vehicle to deliver the value.

Value is the reward for solution of problems, the satisfaction of wants and needs.

– Peter Drucker

Value you say?

In IT we often see technical solutions or functions of a product as value, but it’s the qualities of the product where the value lies. With any given product, it’s the qualities that dictate the interaction with the product and therefore the value of the product. Using the example of a smartphone, one could argue that the value is strongly related to the function, but once we dig deeper, qualities such as reliability, affordability, ease of use and design are what drive the value.

So, if value is so important, how do we go about maximizing it?

Whatever the product is, if we want to increase value, we first need to understand the qualities related to the product. Is it important the product is easy to use? Is it important that the product is reliable? Or is it more important that the product is cost efficient? Once we know the important qualities, we can start maximizing.

Quantifying

If we know what is important and we want to maximize it, make it higher, we need to first understand where it is now. And to understand where something is now, we need to start measuring. But before we can start measuring, we need to establish how we will quantify the qualities of a product. This implies that all qualities are quantifiable, which can be difficult sometimes.

According to Tom Gilb (a fundamental author in the field of requirements engineering), everything is quantifiable, as he explains in his Ted Talk:

Scales

In his book, Competitive Engineering (one of the landmark books on requirements engineering) Tom Gilb uses a so called Scales to quantify stakeholder values or product qualities. A Scale, Scale of measure or Quantification Scale has the following elements:

Stakeholders: Which stakeholders of the product get value from this quality.

Unit of measure: The variable that will be measured, for example; euro’s, kilo’s, seconds, purchase orders, etc.

Rate: The rate of the variable, for example; per order, per 100 units, per visit, etc.

Description: The description of the scale, for example; time spend doing an activity, spend on product category, etc.

A good scale is explicit and doesn’t state a quantity, for instance; “% of offers converted to orders.” The example; “60% of offers converted to orders”, would be a bad scale, because it is already quantified. Above all, the function of the scale is to be a literal “scale” on which we can plot our data points.

Quantification ScaleDesired ChangeMetric
Customer SatisfactionFewer received complaintsNumber of complaints about [Product] within a [Period]
Customer SatisfactionFewer returnsPercentage of returns of [Product] within [Period after purchase] with [Customer issue]
Environmentally FriendlyImproved ratingNumber of [Product types] that fail [Test] within [Period]
User-friendlyFewer mistakesPercentage of [Transaction type] with [Error] made by [User type]
User-friendlyFaster certain actionTime in minutes to complete [Transaction] to satisfaction
ReliabilityFewer outagesMean Time Between Failure (MTBF)
PredictabilityLess variance to first responsePercentage of [Service Type] calls that exceed [First response] within [Period]
Examples of Scales from the book Competitive Engineering from Tom Gilb.

Meters

Now that we have a scale, we can start measuring to know where we are currently. And to measure we need data.

Without data, you’re just another person with an opinion.

– Peter Drucker

To get relevant data to plot on our scale we need to start measuring. Defining a scale itself has no cost, but measuring with a so called meter, does have costs. This meter or measurement can be either a process or a tool with a cost, accuracy, delay and believably. When selecting a meter it is important to evaluate these factors to make sure it fits the job. Measuring customer satisfaction can be done by a simple check with a few select customers, or by implementing a user rating feature.

If we can quantify the value of something and we can measure it, we can also track if solutions that we build, have the impact on the qualities that we expect. As long as we keep measuring the realization of the expected increase in value, we know where we are on the scale. Of course the characteristics of the meter need to be kept in mind when evaluating these measurements. A point often overlooked is the delay of a measurement. Defining the right scale and staying mindful of the characteristics of the meter are essential.

Let’s compare apples to oranges

If we know the values or the preferred qualities of our product according to the users or stakeholders and we can quantify and measure them, we can ultimately compare them. This enables a product owner to select which features of a product to focus on. The expected benefits of a specific feature, weighted against the costs can help a product owner prioritize and order backlog items based on their relative added values.

Comparing apples to oranges is possible using their qualities with requirements engineering
Yes, it is possible to compare apples to oranges based on their quantified values.

Backlog prioritization

How do we use requirements engineering to apply all these concepts to the task of prioritizing a backlog? If we know which values we want to achieve and which qualities drive these values, we can order the values based on their importance. For example, the value of a smartphone may be greatly impacted by its design and ease of use, while the value of a car may be more affected by its reliability and fuel efficiency.

It’s important to consider the weight of each quality to accurately evaluate its contribution to the value of a product.For instance, if a company is developing a new software, it may prioritize developing a user-friendly interface as the most crucial quality, as it is more likely to drive more value for the product compared to other features. Implementing a new feature can improve one quality, but also multiple. Taking in mind the weights of each quality, the best feature will be the one that adds the most overall value.

Feature value formula:

Feature value = (Weight of Quality 1 * Impact on Quality 1) + (Weight of Quality 2 * Impact on Quality 2) + ... + (Weight of Quality n * Impact on Quality n)

Where “Quality 1”, “Quality 2”, …, “Quality n” are the different qualities that impact the value of the product, and “Weight of Quality 1”, “Weight of Quality 2”, …, “Weight of Quality n” are the weights assigned to each quality based on their importance. “Impact on Quality 1”, “Impact on Quality 2”, …, “Impact on Quality n” are the estimated impact of each quality on the value of the product.

In order to prioritize these values we only need to divide the Feature value by the Cost of implementing the feature:

Priority = (Feature value) / (Cost of implementing the feature)

One last variable that could be used to impact the priority is the time used to implement the feature, although one could argue this can be factored into the cost of the implementation. Delivering product increments to gather feedback is a crucial aspect of Scrum, so a feature that can be inspected regularly and consistently is preferred.

Now show me!

Let’s say we are prioritizing new “smart grid” features for an IoT platform. We have two possible new features; a data product that enables predictive maintenance and a data product that enables heat grid optimization. The values/qualities, scale, status, goal and relative weight are defined using requirements engineering in this example as following:

QualityEnvironmentally FriendlyCost ReductionReliabilityCustomer Satisfaction
ScaleAverage Coefficient of Performance (COP) per year% Distribution Loss per monthMean Time Between Failure (MTBF) in daysNumber of Complaints about heating per 100 households per year
Status3,520%4112
Goal414%1003
Weight60201010
Fictive example of quantified values of a product.

Then we can quantify the expected impact of each feature or backlog item, percentages are used to indicate the relative change compared to the status and goal:

Backlog itemEnvironmentally FriendlyCost ReductionReliabilityCustomer Satisfaction
Predictive maintenance0,05 (10%)-1% (17%)60 (102%)-6 (67%)
Grid optimization0,3 (60%)-3% (50%)-5 (-8%)-3 (33%)
Fictive example of expected benefits of backlog items or features.

To finally calculate the priority based on the ratio or expected benefits and costs where the average benefit does not keep the relative weight of the quality in mind but the weighted benefit does:

Backlog itemCostAvg. BenefitWeighted benefitPriority
Predictive maintenance849%26%0,033
Grid optimization1334%48%0,037
Fictive example of priority calculation.

Using the example above, grid optimization has a higher priority based on it’s cost benefit ratio even though it has an expected negative impact on Reliability.

When you can measure what you are speaking about, and express it in numbers, you know something about it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind.

– Lord Kelvin

Takeaways

All in all the job of the product owner is to maximize value. To maximize value, the product owner first needs to understand stakeholder needs and the qualities of the product. Stakeholder needs to use requirements engineering to quantify and measure the value of a feature. Only then the product owner can balance different values and maximize between them.

I would like to thank Bas van der Hoek from Zilverline and his excellent training on requirements engineering and for introducing the topic to me. 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.