I am confused with what's the different between clarify and gather. I know using interview, observe or questionnaire can to elicit the requirement we want, but how to clarify the functional requirement?

1 Answer 1


Gathering requirements means just that: collecting them.

Clarifying requirements means making sure that those requirements are clear and unambiguous. You need clear and unambiguous requirements so that there is no dispute with the customer over whether or not something that was asked for has been provided.

One way to clarify requirements is to write acceptance tests. Acceptance tests are tests that, if they pass, indicate that the requirement has been fulfilled.

// Acceptance Test
public void GetRandomNumber_ShouldReturn4()
    var result = GetRandomNumber();
    Assert.IsEqual(result, 4);

// Implementation
public int GetRandomNumber()
    return 4;  // Chosen by fair dice roll.  Guaranteed to be random.

If you're having difficulty with things like scope creep, inaccurate time estimates and disputes over completion of requirements, one way to refine those things is to write a Software Design Specification, including the classes and interfaces it would take to fulfill the requirements. This can be combined with the Ubiquitous Language of DDD to get a clear understanding of the scope of a project (from both the developers' and customer's perspective), and what it takes to declare success on each requirement.

Further Reading
Clarifying Requirements

  • The fundamental issue is that there is no good, objective way to test for "clear and unambiguous". You would not believe some of the crap I have seen masquerading as "requirements". Apr 6, 2014 at 17:37
  • See my edit.... Apr 6, 2014 at 18:17
  • Another item to clarity of requirements is the location where the requirements are being interpreted. A societal norm in the US is not the same in Canada, India, China, Russia, or elsewhere in the world. Though Canadian may have the closest interpretation to the US it is still different. Each region has different preconceived notions about the correct way to do things. It is called cognitive bias. Apr 6, 2014 at 19:10
  • @AdamZuckerman: The code in the test above executes the same way, whether it is running in the US or Canada. Apr 7, 2014 at 1:50
  • @RobertHarvey I am agreeing with you. Code is not going to argue that it didn't mean that. That will be the users who didn't tell you exactly what they wanted. Apr 7, 2014 at 2:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.