February 11th, 2006

Requirements vs Design - Which is Which and Why?

faceoff

Requirements versus design - which is what, when and why?

A classic debate. It comes up often. Unfortunately, it’s a source of confusion that causes many teams to shy away from staffing, creating, or managing any formal requirements processes. There’s a discussion on Seilevel’s forum where this has been brought up again, and it’s shaping up to be a fine grudge match here in Austin. Thanks to Cauvin for calling it to our attention. We can’t let the other folks have all the fun, so we’ll chime in too.

We’ve described the software development process before as being like an onion - having multiple layers of abstraction within which you describe the problem and solution. In this post we will translate that perspective into “what is a requirement” and “what is design”.

The layers of abstraction

  1. Market requirements. The problems or opportunities that express potential ROI opportunities. These can be captured in an MRD.
  2. Product requirements. In a process that uses structured requirements, these are the functional requirements, user requirements and business requirements. Design constraints are also requirements (non-functional requirements). Product requirements can be captured in an FRS, SRS, or PRD.
  3. Solution design. The architectural description of the implementation, UI and test suite. Design decisions define much of the reality for developers - good design decisions make implementation and maintenance easy. Bad design decisions can make for disaster.
  4. Implementation. The actual code that is written and running. The user interface that is presented. The tests that are included in a regression suite. We do what we’re asked, in the way that we’re asked.

The point of contention

The debate is over the classification of product requirements. In this post we’ll talk about the red team and the blue team, much like the foosball players in the image above. We’ll also use one of the examples presented in the forum as the anecdote for describing our perspective. I want to avoid putting words in other people’s mouths, so I will hilight my interpretations as being just that. And as interpretations, they may very well be wrong.

My interpretation is that the blue team believes that market requirements are the requirements, and any further specificity should be classified as design (also this). My interpretation is that the red team agrees with what we’ll write in the rest of this post.

A red team quote:

My philosophy on this is simple. If the business or the business users care about it, it is a requirement.

That being said, the business often times cares or wants things that they shouldn’t care about or want, so they do have to be careful not to demand things that truly arent requirements.

An unambiguous description of requirements and design

There is a middle ground between market requirements and design. There is a step in the software development process that happens between “defining the problem” and “designing the solution.”

mrd to prd

When talking about market requirements, we describe the problems and opportunities that define the space. A great place to document our insight into the market is in a market requirements document, or MRD. In this hypothetical example, our mythical company is losing customers because they have to wait too long when they are on the phone to get support.

There is an ideation step, where we perform an analysis - as engineers, we would call this a root cause analysis, where we identify why the customers make software decisions based on support-call length, why the call lengths are long, etc. After we identify the root causes, we determine which ones are properly addressed with software, versus process, project, expectation setting or any other solution.

Our mythical company has decided that there will be a software component to the solution, and it will have the goal of reducing support call times.

The instant we decide that this problem is going to be solved with software, it becomes a software product requirement. And a great place to record that information is in a product requirements document, or PRD. We talk more about this in our post, From MRD to PRD - the key to defining a spec. And this is the source of our disagreement with the red team - we believe that these are both requirements, they are distinct, and they should coexist - and still both be labeled as requirements.

prd is structured

At Tyner Blain, we strongly support the use of structured requirements as a means of capturing, managing, and communicating our software product requirements. We start with the GOAL of reducing the average support call time. We define the use cases that capture the support-call process (or story, or scenario - if that’s your term du jour). We articulate the functional requirements (sales rep can find the customer records for the customer on the phone). And we define the design constraints, or non-functional requirements.

This is where we think we agree with the blue team as long as we add the following clarifications. Design constraints are requirements. When our client expresses the need to conform to a corporate look and feel - that’s a constraint. When we describe support for color-blind users - it’s also a constraint (although it is an ambiguous requirement without supporting material or cross-domain experts on the team). Any time we define performance characteristics (search must happen in five seconds), it is a constraint.

In all these cases, we require the software developers to design a solution within the bounds of our constraints. Constraints are requirements.

prd to design

The implementation team will design (and later develop and test) a solution based upon the requirements. The requirements include constraints on how the implementors are allowed to design and implement.

Where we disagree with the red team

While generally agreeing with the red team (that requirements do exist between markets and designs), there is one statement where we do disagree.

Red team:

If I specify that the support rep must be able to search by last name, partial names, customer ids, address, phone number etc. Is that requirements or design?

Lets say you can agree that the above are requirements

[...]

Are all of those things design? I think it depends on the capabilities of your teams.

We disagree - we believe that these implementation details (by what fields a user should be able to search - and, in fact, specifying that search is the implementation approach) are not part of requirements - they are part of design.

I understand how easy it is to let project realities affect the classification of some design elements as product requirements. I’ve personally made the mistake of taking that perspective to extremes in the past.

Defining details like this (what, exactly, does the software do) are design decisions. Irrespective of the capabilities of the teams, these are design steps. It may be, for a given team, that the product or requirements manager has to help a particular software designer to make good decisions. But that doesn’t make those suggestions into requirements - it just means that the RM is helping with design. And those details would belong in a design document. Yes it’s more convenient for a product manager to put those details into the PRD, but they don’t belong there.

Summary

In conclusion - there is a natural flow from market opportunities to product requirements to design decisions in the state of all value-driven software development projects. These three concepts are distinct. They should be documented distinctly. We suggest using an MRD, a PRD, and a design document. As a simple checklist, think of each idea in this way:

  • Am I describing an opportunity and it’s relative value? MRD
  • Am I defining a particular opportunity that we’ve agreed to solve with software? PRD
  • Am I describing the implementation of the solution? Design Document

Please join in on the discussion - if not here, then at the forum or on Cauvin’s blog.

Please Rate This Article!
Just Plain BadLameAverageGoodGreat (3 votes, average: 4.67 out of 5)
Loading ... Loading ...

6 Responses to “Requirements vs Design - Which is Which and Why?”

  1. Roger L. Cauvin Says:

    Scott, thanks for contributing your observations and ideas on this topic.

    I think the “ideation” step you describe is critical. Would you characterize it as a form of scoping; i.e. deciding what “system(s)” (software, hardware, manual procedure, documentation) will achieve the business goals?

    Taking your example goal of reducing average support call time to five minutes per call, we might choose to achieve this goal partially through support rep training and partially via software. In doing so, we essentially are designing, at a very high level, a solution to the problem. You can almost think of it as “business process architecture”.

    Once we complete that design step, we now are faced with specifying the responsibilities of the systems. I think it’s fair to characterize this next step as a requirements activity (correct me if I’m wrong, but you would call such a specification a PRD).

    However, specifying the requirements at the scope of the software system does not mean we should mention any user interface or process entities. In fact, we can simply further scope the original business requirement.

    The original requirement:

    “The average support call should take no longer than five minutes.”

    becomes something like:

    “Assuming all support call representatives have x amount of training, the average support call should take no longer than five minutes.”

    Thus you can see we still do not yet need to “design” any interface or interaction with the software system, even after we decide software will be part of the solution.

  2. Scott Sehlhorst Says:

    Thanks Roger!

    I generally agree with what you’re saying - especially the part about not specifying implementation details. I do, however, believe that the process of creating a PRD does involve some articulation of what the software is expected to accomplish. I’ve just written a separate response (with more diagrams) titled Software requirements - process and roles.

    I believe there are synergies in the process that require some steps to be performed by the same person, and some to be performed by different people.

    Thanks again for reading and especially for commenting on several of our posts!

  3. Bruce Altmann Says:

    Agree that known business constraints are requirements.

    Depends on Product process in a product company versus new business application inside an a company working with IT.

    Mock up screens normally come into play for the end user experience. In your article these would be design. But the reality is that humans normally have a picture in mind (expectations). And expectation mgmt is key to any product/project.

    My guidance for function requirements within a company with IT: If the product/businss application has a road map - write down everyhting you are willing to pay for (whether it is ver 1, or ver 2, or ver3) - as design for ver 1.0 must not limit ver 2or3.
    Items where you need an impact analysis (can not determine until we get more information from design pass ) are clearly handled in DESIGN.

    The line does blur inside large companies when dealing with learge business units.

    Another item - requirements gathering has a tendancy to go on forever. If the group is no skill at requirements (and most businss units are not) change tactices. Get them in a room for a week. And force a lock down deadline. The document can and will change - but as long as you have address or identifed all reasonable issues that could inmpact scope/timeline - you must force them to a “its right not perfect” point - and then handle all future changes via formal change control in the mgmt reviews.

    This one is alsways tough in business unit customers. For a Product Mgr at a product company, the line somewhat easier to handle.

  4. Scott Sehlhorst Says:

    Thanks for reading and commenting, Bruce!

    Your lockdown idea is a good one - I’ve used it in a “past life” when working on a large engagement. It is easiest to use when you are either part of the organization (especially if you have some juice), or as an outsider with a strong reputation and good relationships. I would caution folks to not try the lockdown approach when they are relatively unknown. If that’s the case - get a project sponsor within the organization to create the lockdown, and then just facilitate it for them. If the group is resistant, take some cues from the movie, Twelve Angry Men, and be the jury foreman. Create an association of “we all have the same goal” - not - “You must tell me”.

    Getting to ‘right’ not ‘perfect’ is another great piece of advice.

    Keep sharing your thoughts with us!

  5. Jim Morris Says:

    Great post.

    I just came here from this blog.
    http://thebusinessanalyst.blogspot.com/

    Seems to be talking the same thing.

    Requirements and design are two separate areas.

    Cheers

  6. Scott Sehlhorst Says:

    Hey, thanks Jim, and welcome to Tyner Blain!

    Looks like some interesting content - it’s in my feed reader now, looking forward to checking it out.

    Scott

Join The Discussion