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. Watch When NASA Lost a Spacecraft Because It Didn’t Use Metric (3 minutes)
  2. 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
  3. Watch What is a Requirement (6 minutes)
  4. Watch User and System Requirements and Functional and Nonfunctional Requirements (4 minutes)
  5. Watch Analyzing Requirements (2 minutes)
  6. Complete the handout (10–15 minutes)
  7. Participate in the synchronous session during the class meeting time (optional)
  8. Complete the quiz (5–8 minutes)
  9. Start the W5HH assignment (30 minutes)
    • Meet with your team to discuss the assignment, especially the project schedule and each team member’s responsibilities

Due

As a reminder, the following is due this lesson:

Resources

Further Reading

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