Chapter 2: System Specification
This chapter contains recipes related to capturing and analyzing requirements. The first four recipes are alternative ways to achieve essentially the same thing. Functional analysis generates high-quality requirements, use cases, and user stories, all of which are means to understand what the system must consist of.
By high-quality requirements, I mean requirements focused around a use case that are demonstrably the following:
- Complete
- Accurate
- Correct
- Consistent
- Verifiable
The problem with textual requirements is that natural language is ambiguous, imprecise, and only weakly verifiable. Keeping text human-readable is very useful, especially for non-technical stakeholders, but is insufficient to ensure we are building the right system. The recipes covered in this chapter are as follows:
- Functional analysis with scenarios
- Functional analysis with activities
- Functional analysis with state machines
- Functional analysis with user stories
- Model-based safety analysis
- Model-based threat analysis
- Specifying logical system interfaces
- Creating the logical data schema