The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is so difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines, and to other software systems. No other part of the work so cripples the resulting system if done wrong. No other part is more difficult to rectify later. (Brooks 1987)

Learning Objectives

  • Contrast user requirements and system requirements
  • Classify requirements as either functional requirements or non-functional requirements
  • Define the terms must (i.e., shall), should, and may in the context of a requirements document
  • Analyze requirements for consistency and completeness
  • Write requirements for a software system

How to Complete this Lesson

Complete the following learning activities: (2–2.25 hours total)

  1. Read the following in Software Engineering and (optionally) complete the reading guide:
    • Chapter 4: Requirements engineering (60–75 minutes)
      • Functional and non-functional requirements
      • Requirements engineering processes
      • Requirements elicitation
  2. Attend the class meeting (60 minutes)
    • Complete the handout (after class if necessary)

Resources

Videos

Further Reading

RFC 2119: Key words for use in RFCs to Indicate Requirement Levels