Requirement gathering
CS-160: Software Engineering
Instructor: Rob Bruce
Fall 2016

SLIDE 1: Requirement gathering

Requirement gathering: Defining the features of the project.

Requirements should be:

  • specific
  • unambiguous
  • comprehensive

Source: Rod Stephens' Beginning software Engineering, pp. 54-56

SLIDE 2: The MOSCOW method

MoSCoW method:

  • "Must: these are required features that must be included."
  • "Should: These are important features that should be included if possible."
  • "Could: These are desirable features that can be omitted if they won’t fit in the schedule."
  • "Won’t: These are completely optional features that customers have agreed will not be included in the current release."

Source: Rod Stephens' Beginning software Engineering, p. 57

SLIDE 3: Undesirable

Equilateral triangle with text in the center that reads 'Choose two' and triangle corners labeled: GOOD, FAST, CHEAP. The idea is you can choose to create something GOOD and FAST but it will NOT be cheap or you could choose GOOD and CHEAP but it will not be FAST or you could choose FAST and CHEAP but it will not be GOOD.

SLIDE 4: Even worse...

Equilateral triangle with text in the center that reads 'Choose none' and triangle corners labeled: GOOD, FAST, CHEAP. This is a cynical idea that you can NOT create something GOOD, FAST, or CHEAP.

SLIDE 5: Requirement gathering: Words to avoid

Subjective words to avoid in your writeup:

  • "Comparatives: faster, better, more, and shinier."
  • "Imprecise adjectives: Words like fast, robust, user-friendly, efficient, flexible, and glorious."

Source: Rod Stephens' Beginning software Engineering, p. 60

SLIDE 6: Requirement gathering: verification

Requirements must be verifiable.

"...requirements must be limited and precisely defined."

"If you can’t verify a requirement, how do you know whether you’ve met it?"

Source: Rod Stephens' Beginning software Engineering, p. 60

SLIDE 7: User-specific Requirements

Also referred to as "audience-oriented requirements"

"Business requirements: lay out the project’s high-level goals."

"User requirements" or "Stakeholder requirements": "describe how the project will be used by the eventual end users."

Source: Rod Stephens' Beginning software Engineering, p. 60