The Requirements Engineering Magazine appears quarterly. It is cost free and provides you with up-to-date articles reflecting the activities of the RE and BA community.
Simply sign up for being notified about new issues of the Requirements Engineering Magazine.
You may unregister at any time by sending a mail to email@example.com from the e-mail address which you have registered with.
All organizations strive to meet their envisioned goals and strategic objectives, creating greater business value for their stakeholders. While not all organizations are commercially driven, all organizations conduct business-related activities. Whether it is a commercial corporation, government agency or a non-profit organization, all focus on attaining return on their respective investments, and thus, it’s vital that projects spend their time wisely and on things that have meaning from a business perspective. We need to be proactive in order to channel resources into what we assume matters the most, and reactive to quickly identify and discard the things that prove wasteful. A project is not successful because it delivered on time and within scope and budget, it is only successful if it has a positive effect on the business.
Successful software systems from the combined effort and brainwork of a visionary business organization and a technically skilled delivery organization. Optimal solutions to the wrong problems are not likely to achieve the desired business results. Therefore, software projects need to broaden their scope and not only work on solutions but also commit to the discovery of the right problem. Strangely though, most software development methodologies focus only on how to produce new features and functions. But the difficulty lies not only in making the software per se, but also in finding out which problem to solve.
We want to build what we can sell rather than sell what we can build!
To accomplish this we shall introduce the art of hypothesis testing into the toolbox of the requirements engineer. Hypothesis testing comes from the world of science as a method of objectively determining the validity of uncertain claims. Then, by defining and building the smallest possible product, and shipping it as a hypothesis test, we can learn about our customers and avoid wasting our resources on futile products and focus our efforts on the ones that will achieve desired business results.
A business model reflects the intent of a company to deliver value to customers, entice customers to pay for value, and to convert those payments to profit. At design-time, a business model is just a chain of hypotheses about the cause and effect relationships that enable the long-term business effects. It might look good on paper and the work put into its design might be substantial, but it does not make it a solid foundation to craft new businesses from. Yet, high level models are strikingly often taken as hard fact, while in reality, it is ’terra incognita’ and needs to be tested incrementally. The problem is that people tend to stick to their beliefs and defend, justify, and rationalize them with a battery of intellectual reasons, cogent arguments, and rational explanations. We simply have a hard time letting go of ideas we have fallen in love with.
Originating from the world of science, hypothesis testing is an essential part of the scientific method. The scientific method guarantees that a claim becomes a fact only when it is confirmed to such an extent it would be reasonable to offer general agreement. The process steps of the scientific method are simple but effective:
Although software development is more art than science, we can design products with better market fit by applying the fundamentals of the scientific method. In order for a software solution to work under real market conditions and not just as a clever idea, we need to confirm the following general hypotheses:
Hypothesis 1: People have this problem
How to test: Pre-studies and market research are often used to answer a question like this. The bigger the study-group, and the more elaborate techniques invoked, the higher the confidence in the results.
Hypothesis 2: Our solution addresses the problem
How to test: If the problem is well-defined, system testing will validate the claim by checking it against the specified requirements.
Hypothesis 3: People will use our solution
How to test: Build the smallest thing you can and ship it as a hypothesis test.
Many projects tests hypotheses of type 1. Feasibility studies and market research before committing to a project investment is an effective insurance not to waste unnecessary resources on futile product development.
Basically, all projects test hypotheses of type 2. This is where the ordinary functional verification process comes in play and this type of testing is relatively easy to do.
Very few projects build and ship small product increments to track and act on market metrics and will have no notion of the business effects until the product is finalized. By then, all resources will be spent.
Requirements engineers are often (or should be) deeply involved in assisting testers develop tests for functional verification. These are important tests, but they will only validate the system in terms of functional quality, while we also need to validate whether people will buy, sign-up or use our product. This is where hypothesis tests matter and the requirements engineer should be deeply involved, or even the driving force, creating them as well.
Since requirements are concocted from hypotheses, then requirements are hypotheses themselves. This offers a good opportunity for the forward thinking requirements engineers who are able to think about, understand, and act on information in a critical way and adept enough to reason about hypotheses and hypothesis testing. Let us take a look at how we can design a good hypothesis test.
Per definition, a hypothesis is something we believe (or wish) to be true but have not yet proved correct. For example, ”we believe customers will sign up for our new online gaming service”. Our job, as requirements engineers, is to make sure we do not waste time building features that do not stand the test of their hypotheses. In the example above, there should be a smallest thing we can build and ship in order to learn whether the online gaming service will attract customers or not. We should not need to build the complete system up front, but rather focus on the few features that can prove or refute the claim.
A hypothesis test consists of the three components; the hypothesis formulation, the test itself and the evidence of a successful outcome. Using sentence templates to formulate them is a good way of starting off.
Since the basis for the hypothesis test is the formulation of the hypothesis, you should put in some effort into describing it well and unambiguously. Here are some other tips that can help you construct good hypothesis tests:
In order to carry out hypothesis testing we would define an increment of the product requirements, build and ship it as a ’tool’ to measure user behaviour and learn from that. Let us define a simple requirements process and include hypothesis testing as an integral part. Such a process would iteratively work on increments of product requirements, fractional compared to the full-scaled system. Because of the small-scale approach, the requirements can quickly be constructed and tested at a fraction of the risk and cost. The hypotheses we test will either be true, false or to some extent true. Depending on the outcome we might need to modify our product or feature ideas, the hypotheses derived from them or the requirements themselves. When a hypothesis is confirmed, we dig into the next important hypothesis and repeat the process.
This simplistic process starts by asking you to choose the metrics you want to improve. Your choice of metrics will drive the process and which requirements set to develop in the current increment.
Hypothesis testing is the natural way of confirming or refuting hypotheses. It comes from the world of science as a method to objectively determine the validity of uncertain claims. By defining, building and shipping the smallest possible product increment that can shed light on the hypotheses, we do not need to waste unnecessary resources on futile products.
One might argue that it is an approach more conceivable in certain lines of business than others, and yes, that is the case. It is much easier to run a continuous series of hypothesis tests for a web-based service than on a banking system running on mainframe. The point is, however, that the speed and frequency by which hypothesis testing can drive the requirements process is all relative to the competition. If one bank ships a new version of its’ Internet banking service once a year, a more competitive bank might do it every three months as a hypothesis test.
The art of requirements engineering is the glue that binds together hypothesis testing, continuous shipment and business effect tracking. As a requirements engineer, with the right insight and equipped with the right tools you can make a world of difference and a real impact for your future organizations by embracing these techniques and incorporating them into your requirements engineering toolbox.