Where Does Specification Fit in the RE Process?
Specification is the 4th step in Requirements Development — after Inception, Elicitation, and Analysis. It comes before Validation and is followed by Requirements Management.
Inception
Elicitation
Analysis
Specification
The result of requirements development is a documented agreement among stakeholders about the product to be built. The three main documents produced across RE are:
| Document | Contains | Audience |
|---|---|---|
| Vision & Scope Document | Business requirements, high-level scope | Executives, sponsors |
| Use Cases / User Stories | User requirements | Developers, users |
| SRS | Functional + Non-functional requirements | All stakeholders |
Requirements can be represented in three ways:
Well-structured and carefully written sentences. Most common and accessible to all stakeholders, but prone to ambiguity without care.
Diagrams such as UML Use Case, Class, Activity, Sequence diagrams. Complement written requirements and aid understanding.
Use mathematically precise specification languages. Provide the greatest rigor and precision, but few developers — and even fewer customers — are familiar with them. Rarely used in practice.
The Software Requirements Specification (SRS)
- Functions and capabilities the system must provide
- System characteristics and constraints it must respect
- System behaviors under various conditions
- Desired qualities: performance, security, usability
- Known design and implementation constraints
- Basis for planning, design, coding, testing, and user documentation
- Design decisions — how the system will be built
- Construction or implementation details
- Testing procedures or test scripts
- Project management details
SRS Audience 8 TYPES
Labeling Requirements KEY TOPIC
Every requirement needs a unique and persistent identifier. Simple numbered or bulleted lists are not adequate.
- Helps refer to specific requirements in change requests and modification history
- Enables requirements to be reused across multiple projects
- Facilitates collaboration between team members
- Enables a proper requirements traceability matrix
- A number is never reused if a requirement is deleted — prevents confusion
The 3 Labeling Methods — compared:
Simplest approach. Gives every requirement a unique number. The prefix indicates the type (FR = Functional Req, UC = Use Case). Numbers are never reused. Used by commercial RM tools.
- Easy to retain unique ID when moving requirements around
- Supported by commercial requirements management tools
- No logical or hierarchical grouping of related requirements
- Numeric labels tell you nothing about the intent of a requirement
If functional requirements appear in section 3.2 of your SRS, all their labels begin with "3.2". More digits = lower-level requirement. 3.2.4.3 is a child of 3.2.4.
- Simple, compact, and familiar to most people
- Word processor can assign numbers automatically
- Supported in requirements management tools
- Labels can grow to many digits in a medium-sized SRS
- Numeric labels tell you nothing about intent
Unique ID = Parent label.Child label. Tags are structured, meaningful, and unaffected by adding, deleting, or moving other requirements.
- Avoids maintenance problems of hierarchical numbers
- Tags are meaningful — label shows the intent
- Unaffected by inserting, deleting, or moving requirements
- Tags are longer and harder to create
- Harder to maintain uniqueness in large projects
| Method | Example | Strength | Weakness |
|---|---|---|---|
| Sequence Number | FR-26 | Simple, persistent, tool-friendly | No hierarchy, no meaning in label |
| Hierarchical Number | 3.2.4.3 | Familiar, auto-generated | Not persistent in word processors |
| Hierarchical Text Tag | Product.Cart.01 | Meaningful, persistent, structured | Longer, harder to maintain |
The Volere shell uses Customer Satisfaction (1–5) and Customer Dissatisfaction (1–5) scores. This maps to Prioritization based on Value, Cost, and Risk — the analytical method that uses measurable scores rather than subjective grouping (like MoSCoW or 3-level scales).
Dealing with Incompleteness — TBD
No requirements document will be 100% complete on the first draft. The TBD (To Be Determined) notation is the systematic way to handle gaps.
- Use TBD to flag any missing information
- Plan to resolve all TBDs before implementing a set of requirements
- If you must proceed, defer implementing unresolved requirements OR design those portions to be easily modifiable
- Record TBDs and other issues in an issues list
- Number each TBD item
- Record who is responsible for resolving it
- Record by when it must be resolved
- Review their status at regular checkpoints
- Track them to closure — never let them linger
User Interfaces and the SRS
Including UI designs in the SRS is a double-edged sword. Here is the full balanced view:
- Paper prototypes, wireframes, and mock-ups make requirements tangible to both users and developers
- Helps set accurate user expectations about the look & feel of the product
- Easier for non-technical stakeholders to validate requirements
- Screen images make the SRS much larger — big documents scare people away
- Delaying baselining until UI design is complete slows development
- UI design can start driving requirements → leads to functional gaps
- Use an appropriate template to organize all necessary information
- Label and style sections, subsections, and individual requirements consistently
- Use visual emphasis (bold, underline, italics, color) consistently — remember: color may be invisible to colorblind readers or when printed in grayscale
- Create a table of contents so readers can find information quickly
- Number all figures and tables, give them captions, and refer to them by number
- Use cross-references (not hard-coded page numbers) to link within the document
- Define hyperlinks to let readers jump to related sections
- Include visual representations of information whenever possible to aid understanding
Requirements Specification Best Practices MEMORIZE
There are 5 core best practices for requirements specification. Memorize them:
The Requirement Shell (Volere Shell) PAST EXAM
The Volere Shell is a structured template for documenting a single requirement. It captures everything needed to understand, prioritize, trace, and verify that requirement. Think of it as a "business card" for one requirement.
Scale: 1 (uninterested) → 5 (extremely pleased)
Scale: 1 (hardly matters) → 5 (extremely displeased)
Use the Customer Satisfaction and Customer Dissatisfaction scores. A requirement with Satisfaction = 5 AND Dissatisfaction = 5 has the highest priority — stakeholders care deeply both ways. Also check Dependencies: if a lower-priority requirement blocks this one, it must be reconsidered. The Source tells who raised it (executive vs. user), which can also weight priority.
Q2B: "Which prioritization technique is the Volere shell closest to?"
Prioritization based on Value, Cost, and Risk — because it uses a measurable, analytical satisfaction/dissatisfaction scale (1–5) rather than subjective groupings like MoSCoW or 3-level scales.
Study Tips & Memorization Tricks 🧠
- What is the SRS and what does it contain / NOT contain?
- Name 3 ways to represent requirements in the SRS (natural language, visual, formal).
- List and compare the 3 requirements labeling methods with pros and cons.
- Why does every requirement need a unique label?
- How should TBDs be handled? Why can't you ignore them?
- What are the pros and cons of including UI designs in the SRS?
- What are the 5 requirements specification best practices?
- What is a Volere Shell and what are its main fields?
- How do satisfaction/dissatisfaction scores in the Volere shell help prioritization?
- Name 4 audiences of the SRS and what they use it for.
- What is the TRAP with hierarchical numbering in word processors, and what is the mitigation?
- What is the difference between the Vision & Scope document and the SRS?