Prior to Agile coming into existence, I was fortunate to
learn how to write requirements by Elemer Magaziner (i.e., business
requirements) and Alistair Cockburn (i.e., use cases). They provided various alternatives to writing
clear requirements that were irrespective of methodology.
From this I learned that there is a strong benefit to
establish what I term as the “requirements language construct”. This construct helps you consistently
document your requirements focusing on key requirements elements. One common
requirements language construct in the Agile world is the canonical form. It is
important to realize that elements of the canonical form have been around for
years. With that being said, the three
basic elements of the canonical form provide a good framework for establishing
requirements.
First I will discuss the user story that is typically
expressed within the three-part canonical form.
Then I will introduce the enhancement
of a requirements language construct that can adapt the canonical form. The language construct for a user story in
canonical form looks like this:
The persona is the user type who will receive the value. The action is what the user type
desires. The business value is the
benefit to that user type. Note: you can
learn more about personas in the article Personas
– Do you really know your Users?
The following are examples of user stories in canonical form:
- As a learner (persona), I want to set up my profile to include my photo (action), so that my distributed team members know what I look like (business value).
- As a prospective buyer (persona), I want to search on homes (action) so that I know what properties are available in my price range (business value).
As enhancements to this construct, you may consider adding
the system that will be used or interacted with and the receiving entity which
identified the expected output from the requirements. If applying these, the requirements language
construct would look something like this:
As a (persona)
I want (action) from (system) to the (receiving entity)
so that (business value)
The following are examples of user stories with these enhancements. The first example below takes the second
example from above and enhances it with the system and receiving entity.
- As a prospective buyer (persona), I want to search on homes (action) from MLS (system) to a separate window (receiving entity) so that I know what properties are available in my price range (business value).
- As a quant analyst (persona), I want a derivatives report (action) from the asset management application (system) in the form of a pdf (receiving entity), so that I can distribute it to my fund managers (business value).
There is no “right” requirements language construct. It is important to craft one and then
experiment with it. I would suggest
starting with the canonical form and work from there.
Finally, the Product Owner, Business Analyst, Product
Manager, and anyone who writes requirements should be trained in writing user
stories in whatever form is used to articulate requirements. The Agile Team
should be educated in understanding what to look for in a user story and asking
questions regarding the elements of the canonical form. You may also want to train
stakeholders and customers on how to provide their needs in your requirements
language construct for consistency and clarity.
To read more about establishing an Agile Lagging to Leading
Metric Path and Agile Measures of Success, consider reading Chapter 18 of Being
Agile.