Requirements
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)
- 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
- Chapter 4: Requirements engineering
(60–75 minutes)
- Attend the class meeting
(60 minutes)
- Complete the handout (after class if necessary)
Resources
Videos
- When NASA Lost a Spacecraft Because It Didn’t Use Metric (3 minutes)
- What is a Requirement (6 minutes)
- User and System Requirements and Functional and Nonfunctional Requirements (4 minutes)
- Analyzing Requirements (2 minutes)
Further Reading
RFC 2119: Key words for use in RFCs to Indicate Requirement Levels