SE311 - Software Requirements Engineering

Click any node to expand ยท Click any leaf to see details
๐Ÿ”
CH1 Fundamentals CH2 RE Process CH3 Problem Analysis CH4 Elicitation CH5 Analysis & Modeling CH6 Validation & Verification CH7 Requirements Management CH8 - 9 Agile / Scrum
CH1
Software Requirements Fundamentals
Core truths, types of requirements, success/failure factors
โ–ถ
Top 10 Truths of RE list โ–ถ
Truth #1 - Get Requirements Right
Truth #2 - Discovery & Invention
Truth #3 - Change Happens
Truth #4 - Stakeholders Intersect
Truth #5 - Customer Involvement
Truth #6 - Customer Always Has a Point
Truth #7 - Is This In Scope?
Truth #8 - Dialogue Cannot Be Replaced
Truth #9 - Requirements May Be Vague
Truth #10 - Never Perfect Requirements

Truth #1

If you don't get the requirements right, it doesn't matter how well you execute the rest of the project.

Truth #2

Requirements development is a discovery and invention process, not just a collection process.

Truth #3

Change happens. Requirements evolve throughout the project lifecycle.

Truth #4

The interests of all project stakeholders intersect in the requirements process.

Truth #5

Customer involvement is the most critical contributor to software quality.

Truth #6

The customer is not always right, but the customer always has a point.

Truth #7

The first question an analyst should ask about a proposed new requirement is: "Is this requirement in scope?"

Truth #8

Even the best requirements document cannot - and should not - replace human dialogue.

Truth #9

The requirements might be vague, but the product will be specific.

Truth #10

You're never going to have perfect requirements.

Top 10 Project Success Factors list โ–ถ
1. User Involvement
2. Executive Management Support
3. Clear Statement of Requirements
4. Proper Planning
5. Realistic Expectations
6. Smaller Project Milestones
7. Competent Staff
8. Ownership
9. Clear Vision and Objectives
10. Hard-working, Focused Staff

Success Factors

These are the top 10 factors that lead to successful software projects, with user involvement being the most critical.

Types of Requirements list โ–ถ
Business Requirements
User Requirements
Functional Requirements
System Requirements
Non-Functional Requirements
Domain Requirements

Business Requirements

Describe why the organization is implementing the system. High-level goals.
Example: "Airline wants to reduce airport counter staff costs by 25%."

User Requirements

Goals or tasks users must be able to perform with the product that will provide value.
Example: "User needs to be able to check-in for flight using airline's website."

Functional Requirements

Specify the behaviors the product will exhibit under specific conditions - what the system does.
Example: "If the Passenger's profile does not indicate a seating preference, the system shall assign a seat."

System Requirements

Requirements for a product composed of multiple components or subsystems.
Example: "The airport check-in kiosks need a barcode reader to scan a passport."

Non-Functional Requirements (NFRs)

Describe how well the product carries out its tasks. Three main categories:

  • Quality Attributes - performance, reliability, security, usability, etc.
  • External Interfaces - connections to the outside world (HW, SW, users)
  • Constraints - restrictions on design/implementation choices

Domain Requirements

Derived from the application domain. Describe system characteristics reflecting the domain. May be new FRs or constraints on existing requirements.
Example: "A patient's designated physician is the only entity allowed to retrieve a patient's medical reports."

NFR Sub-Types (Quality Attributes) list โ–ถ
Availability
Integrity
Performance
Reliability
Robustness
Safety
Security
Usability
Maintainability
Portability
Scalability
Testability
Integrability
Reusability

Availability

Percentage of time system is up and running correctly.
Formula: MTBF / (MTBF + MTTR)
MTBF = Mean Time Between Failures; MTTR = Mean Time to Repair

Integrity

Preventing information loss and protecting correctness of data. No tolerance for errors. Security is sometimes considered a subset of integrity.

Performance

Measures: response time, throughput, capacity, latency, usage ratio, number of events processed/denied in a time interval. Usually stated with probabilities and confidence intervals.

Reliability

Probability the software executes without failure for a specific period. Measured using defect rate, degree of precision for computations.

Robustness

Ability to cope with unexpected cases - invalid inputs, extreme loads, faults. Measured by: % failures on invalid inputs, degree of service degradation, minimum performance under extreme loads.

Safety

Deals with preventing a system from causing injury to people or damage to equipment/environment.

Security

Blocking unauthorized access. Measures: success rate in authentication, resistance to known attacks, time/effort to find a key, % of successful attacks, encryption level, lifespan of passwords/sessions.

Usability

Ease of use and training. Sub-measures:

  • Learnability - % of tasks mastered after X training time
  • Efficiency - tasks/time, mouse clicks to info
  • Memorability - tasks still done after idle period
  • Error avoidance - errors per time period
  • Error handling - mean time to recover
  • User satisfaction - satisfaction ratio

Maintainability

Ability to make changes quickly and cost-effectively. Measured by: mean time to fix a defect, mean time to add functionality, quality/quantity of documentation.

Portability

Ability to run under different computing environments (HW, SW, OS, versions). Measured by: number of targeted platforms, proportion of platform-specific components, mean time to port.

Scalability

Ability to grow to accommodate more users, data, services, geographic locations, transactions, network traffic.

Testability

Ability to detect, isolate, and fix defects. Measured by: time to run tests, time to set up testing environment, probability of visible failure in presence of a defect, test coverage.

Integrability

Ability to make separated components work together. Measured by: mean time to integrate with a new interfacing system.

Reusability

Ability of existing components to be reused in new applications. Measured by: % of reused requirements/design/code/tests, coupling of components.

Why RE? - RE Challenges & Impaired Factors list โ–ถ
Top 10 Challenged Project Factors
Top 10 Impaired Project Factors
Distribution of Defects by Source
RE Definition

Top 10 Challenged Project Factors

  • 1. Lack of user involvement
  • 2. Incomplete requirements and specifications
  • 3. Changing requirements and specifications
  • 4. Lack of executive support
  • 5. Technology incompetence
  • 6. Lack of resources
  • 7. Unrealistic expectations
  • 8. Unclear objectives
  • 9. Unrealistic timeframe
  • 10. New technology

Top 10 Impaired Project Factors

  • 1. Incomplete requirements
  • 2. Lack of user involvement
  • 3. Lack of resources
  • 4. Unrealistic expectations
  • 5. Lack of executive support
  • 6. Changing requirements & specs
  • 7. Lack of planning
  • 8. Didn't need anymore
  • 9. Lack of IT management
  • 10. Technology illiteracy

Distribution of Defects

Source: Requirements = 56%, Design = 27%, Code = 7%, Other = 10%
Effort to Fix: Requirements defects account for 82% of fix effort - extremely costly if caught late!

RE Definition

Requirements Engineering is the activity of development, elicitation, specification, analysis, and management of stakeholder requirements, which are to be met by a new or evolving system. A requirement is a statement which translates or expresses a need and its associated constraints and conditions.

CH2
Requirements Engineering Process
RE activities, stakeholders, best practices
โ–ถ
RE Activities (Sequence) list โ–ถ
1. Inception
2. Requirements Elicitation
3. Analysis & Negotiation
4. Requirements Specification
5. Requirements Validation
6. Requirements Management

Inception

Start the process: business need, market opportunity, great idea. Includes business case, feasibility study, system scope, risks.

Requirements Elicitation

Requirements discovered through consultation with stakeholders. All tasks involved in discovering and gathering requirements (interviews, document analysis, etc.).

Analysis & Negotiation

Requirements analyzed, conflicts resolved through negotiation. Develop deeper understanding individually and as a whole (decomposition, conflicts, gaps).

Requirements Specification

A precise requirements document is produced. Documenting requirements in a well-organized way suitable for the intended audiences.

Requirements Validation

Requirements document checked for consistency and completeness. Reviewing documented requirements to confirm complete, properly represented, and meets customer needs.

Requirements Management

Needs and contexts evolve, and so do requirements. Managing requirements through implementation until project completion (tracing, tracking status, assessing impact).

Stakeholder Types list โ–ถ
Client / Customer
Buyer
User
Domain Expert
Software Engineer
Inspector
Market Research Specialist
Lawyer

Client / Customer

Person who pays for the software development. Has final word on what the product will be. For internal products = product manager; for consumer market = marketing department.

Buyer

Person who pays for the software once it is developed. Possibly a user or a business owner buying a product for his employees. Must participate actively in the project.

User

Users of the current or future system. Experts of current system indicate which functions to maintain/improve. May have special needs (usability, training). Select carefully - different seniority levels.

Domain Expert

Expert who knows the work involved. Familiar with the problem the software must solve (e.g., financial expert for finance software, meteorologist for weather systems). Also knows the environment in which the product will be used.

Software Engineer

Expert who knows the technology and process. Determines technical and economic feasibility. Estimates cost and time. Educates buyer/client on latest technologies.

Inspector

Expert in governmental rules and safety relevant to the project. Examples: safety inspectors, auditors, technical inspectors, government inspectors.

Market Research Specialist

Can play the role of the customer for software developed for the general public. Expert who studied the market to determine trends and needs of potential customers.

Lawyer

Familiar with laws and legal aspects. Knows standards relevant to the project.

Best Practices by Activity list โ–ถ
Elicitation Best Practices
Analysis Best Practices
Specification Best Practices
Validation Best Practices
Management Best Practices

Elicitation Best Practices

  • Define product vision and project scope
  • Identify user classes and their characteristics
  • Select a product champion for each user class
  • Conduct focus groups with typical users
  • Work with user representatives to identify user requirements
  • Identify system events and responses
  • Hold elicitation interviews
  • Observe users performing their jobs
  • Distribute questionnaires
  • Examine problems of current system
  • Reuse existing requirements

Analysis Best Practices

  • Model the application environment
  • Create user interface and technical prototypes
  • Analyze requirements feasibility
  • Prioritize requirements
  • Create data dictionary
  • Model the requirements
  • Analyze interfaces between system and outside world
  • Allocate requirements to subsystems

Specification Best Practices

  • Adopt requirement document templates
  • Identify requirement origins
  • Uniquely label each requirement
  • Record business rules
  • Specify non-functional requirements

Validation Best Practices

  • Review the requirements
  • Test the requirements
  • Define acceptance criteria
  • Simulate the requirements

Management Best Practices

  • Establish a requirements change control process
  • Perform impact analysis on requirements changes
  • Establish baselines and control versions
  • Maintain a history of requirements changes
  • Track the status of each requirement
  • Track requirements issues
  • Maintain a requirements traceability matrix
  • Use a requirements management tool
CH3
Problem Analysis & Project Inception
Vision & scope, stakeholder profiles, 5 steps
โ–ถ
5 Steps for Problem Analysis list โ–ถ
1. Gain Agreement on Problem Definition
2. Understand Root Causes
3. Identify Stakeholders
4. Define Solution Vision & Boundary
5. Identify Constraints

Step 1 - Gain Agreement

Document the problem and seek agreement. Ask stakeholders to write a problem statement: What is the problem? Who is affected? What is the impact? Proposed solution? Key benefits?

Step 2 - Understand Root Causes

There is often "a problem behind the problem." Root cause analysis finds underlying causes not immediately apparent. Determine recursively what factors contribute to the problem. Example: "Our ecommerce site is not profitable โ†’ Why? โ†’ Poor site design? Bad pricing? Poor customer management?"

Step 3 - Identify Stakeholders

Create stakeholder profiles including: major value/benefit, likely attitude toward product, major features of interest, known constraints. Ask: Who uses/evaluates/maintains the system? Who is affected by outputs? Who cares (legal/regulatory)?

Step 4 - Vision & Boundary

Product Vision: describes what the product is about and what it could eventually become.
Project Scope: identifies what portion of the ultimate vision the current project addresses.
Vision Statement template: "For [customer] who [need] the [product] is [category] that [benefit] unlike [alternative] our product [differentiation]"

Step 5 - Identify Constraints

Sources of constraints:

  • Economics (costs, licensing)
  • Politics (internal/external, interdepartmental)
  • Technology (choice of platform)
  • Systems (existing system, compatibility)
  • Environment (legal, security, standards)
  • Schedule and resources (fixed schedule, team)

Vision & Scope Document Contents list โ–ถ
Business Requirements
Vision of the Solution
Scope and Limitation
Business Context
Risks

Business Requirements Section

Includes: Business opportunity, Business objectives and success criteria, Success metrics, Vision statement, Business risks.

Vision of the Solution

Includes major features and dependencies. Describes what the product will do and what it could eventually become.

Scope and Limitation

Includes: Major features for initial and subsequent releases, Scope of initial release, Scope of subsequent releases, Limitations and Exclusions (features NOT included).

Business Context

Includes: Stakeholder profiles (major value, attitude, features of interest, constraints), Project priorities, Deployment considerations.

Risks

Documents all identified risks to the project, helping stakeholders understand what could go wrong and how to mitigate those risks.

Scope Representation Techniques list โ–ถ
Context Diagram
Ecosystem Map
Feature Tree
Event Lists

Context Diagram

Shows all types of external entities that directly interface with the system. No features/functions, from the outside only. Defines system boundary.

Ecosystem Map

Shows all systems related to the system being developed and interactions among them. Includes systems with no direct connection (indirect relationships).

Feature Tree

Hierarchically subdivides each feature into further levels of detail. Useful for organizing features in a logical hierarchy.

Event Lists

Identifies external events that could trigger behavior in the system. Events could be triggered by users (user-initiated) or by time (time-triggered).

CH4
Requirements Elicitation
Techniques, use cases, prototyping, misuse cases
โ–ถ
Elicitation Goals & Challenges list โ–ถ
Elicitation Goals
Problems of Scope
Problems of Understanding
Problems of Volatility
When Are We Done?
Factors for Choosing Techniques

Elicitation Goals

  • Determine sources of requirements and select appropriate techniques
  • Elicit information on domain, problem, needs, and constraints
  • Produce a first document (mainly user requirements and elicitation notes)

Problems of Scope

  • System boundaries inadequately defined or defined too soon
  • Unnecessary technical details included

Problems of Understanding

  • Stakeholder not sure of what is needed
  • Stakeholder has trouble communicating needs
  • Stakeholder does not understand computing environment capabilities
  • Requirements limited by what stakeholders think is possible
  • Stakeholders state conflicting requirements

Problems of Volatility

Stakeholders will not commit to a set of written requirements. Requirements keep changing throughout the project.

When Are We Done?

  • Users can't think of any more use cases
  • Users propose new scenarios with no new functional requirements
  • Users repeat issues previously covered
  • Suggested new features are all out of scope
  • Proposed new requirements are all low priority
  • Developers/testers reviewing requirements have few questions

Factors for Choosing Techniques

  • The distinction between conscious, unconscious, and subconscious requirements to be elicited
  • Time and budget constraints
  • Availability of stakeholders
  • Experience of the requirements engineer with a particular technique
Elicitation Techniques - Facilitated list โ–ถ
Interviews
Workshops (JAD)
Focus Groups
Observations / Ethnography
Questionnaires & Surveys
Brainstorming

Interviews

Strengths: Get to know domain quickly; interviewees more comfortable sharing; easier to establish involvement; suitable for busy executives.
Tips: Acquire background knowledge; prepare questions; establish rapport; stay in scope; listen actively; suggest ideas.
Common Mistakes: Not interviewing all right people; asking direct questions too early; interviewing one-at-a-time; assuming stated needs are exactly correct.

Workshops (JAD)

Facilitated structured meetings with selected stakeholders. Requirements elicited from multiple stakeholders concurrently.
Strengths: Effective in solving disagreements; suitable for tight schedules.
Tips: Establish ground rules; plan agenda; stay in scope; use parking lots; timebox discussions; keep team small but right.

Focus Groups

Representative group of users in a facilitated elicitation activity. Useful for exploring users' attitudes, impressions, preferences, and needs.
Strengths: Valuable for developing commercial products; highlights consensus and conflict.
Participants normally don't have decision-making authority.

Observations / Ethnography

Get into the trenches and observe specialists in the wild. Shadow important users as they do their work. Can be silent or interactive.
Strengths: Useful for high-risk tasks; facilitates requirements validation; identifies new topics for interviews.
Ethnography also discovers social, human, and political factors.

Questionnaires & Surveys

Strengths: Can reach many people anonymously; asynchronous, cheap.
Challenges: Preparation time; choice of questions; statistical significance; validity; getting people to answer.
Question types: Demography, Attitudinal (Likert scales), Open supplementary, Redundant for robustness.

Brainstorming

Used when much is unknown or to invent new ways of doing things.
Two phases:

  • The Storm: Generate as many ideas as possible (quantity not quality)
  • The Calm: Filter ideas (combine, clarify, prioritize, improve)
Roles: Scribe, Moderator, Participants.
Objective: Hear unconventional ideas; encourage creativity.

Elicitation Techniques - Independent list โ–ถ
System Interface Analysis
User Interface Analysis
Document Analysis
Analysis of Existing Systems

System Interface Analysis

Examining systems to which your system connects. Reveals functional requirements regarding data/service exchange. Consult context diagrams and ecosystem maps to identify systems.

User Interface Analysis

Study existing systems to discover user and functional requirements. Great for getting up to speed on how an existing system works. Don't have to stick to all features for next implementation.
Strengths: Suitable for building new versions; clarifies user input.

Document Analysis

Examining existing documentation for potential requirements. Includes user documents, development docs, requirements docs, internal memos, change histories. Often out of date but a good starting point.

Analysis of Existing Systems

Useful when building a new improved version of an existing system. Important to know: what is used/not used/missing, what works/doesn't work, how the system is actually used vs. how it was supposed to be used.

Use Cases list โ–ถ
Definition & Components
Actors
Relationships (Include / Extend)
Scenario Types
UC Templates
Misuse Cases

Use Case Definition

A sequence of interactions between a system and an external actor that results in the actor achieving some outcome of value. A scenario is a specific instance of a use case (specific actor, at specific time, with specific data). Many scenarios can come from a single use case.

Actors

Any entity that performs a role in the system (people, organizations, external systems). Drawn as a stick figure. Actors don't interact with other actors. Names should reflect roles rather than actual people.

Relationships

<<include>>: The base use case always executes the included use case. Arrow points to the included use case. Represents common functionality needed in multiple use cases.
<<extend>>: Optionally extends the base use case. Arrow points to the base use case. Base is meaningful on its own. Can have extension conditions.

Scenario Types

  • As-is scenario: Describes current situation (re-engineering projects)
  • Visionary scenario: Describes future system (greenfield/reengineering)
  • Evaluation scenario: User tasks against which system is evaluated
  • Training scenario: Step-by-step instructions for novice users

Use Case Templates

  • Narrative Form: Paragraph focusing on primary scenario and some secondary ones. Useful when stakeholders first meet.
  • Simple Column Form: Linear sequences (main and alternatives)
  • Multiple Column Form: One column per actor; more detailed view

Misuse Cases

Negative scenarios with goals undesirable from the business perspective. The misactor is a hostile agent.
Steps: 1) Find misactors โ†’ 2) Identify what misactor would do to harm system (<<threaten>>) โ†’ 3) Mitigate (<<mitigate>>)
Strengths: Elicits security/safety requirements; early identification of threats.
Risks: May lead to premature design solutions in step 3.

Prototyping list โ–ถ
Types (Evolutive vs Throwaway)
Fidelity (Low vs High)
3 Purposes
Strengths & Risks

Prototype Types

  • Evolutive: Turned into a product incrementally. Begins with well-understood requirements. Gives users a working system more quickly.
  • Throwaway: Less precise, thrown away after use. Focuses on less well-understood aspects. Designed to elicit or validate requirements.
Forms: Paper prototypes, Screen mock-ups, Interactive prototypes, Executable models.

Fidelity Levels

Low fidelity (static):
Pros: Easy/quick/cheap to build; excellent for interfaces; encourages creativity; engages users before coding.
Cons: Not interactive; may not cover all aspects; may seem non-professional.

High fidelity (functional):
Pros: Deeper understanding of functionality; reduces design risk; more precise decisions.
Cons: Time-consuming; costly; difficult to change; false sense of security.

3 Purposes of Prototyping

  • 1. Requirements tool: Clarify, complete, and validate requirements
  • 2. Design tool: Explore design alternatives
  • 3. Construction tool: Create a subset that will grow into the ultimate product
The purpose must be made clear from the very beginning!

Strengths & Risks

Strengths: Enhances user involvement; closes expectation gaps; resolves uncertainties early.
Risks: Pressure to release the prototype as final product; distraction by detail; unrealistic performance expectations; excessive effort invested.

CH5
Analysis, Modeling & Writing Requirements
UML diagrams, writing pitfalls, characteristics, prioritization
โ–ถ
Characteristics of Excellent Requirements list โ–ถ
Complete
Correct
Concise
Feasible
Necessary
Prioritized
Unambiguous
Verifiable
Consistent
Traceable
Modifiable

Complete

Contains sufficient detail for those using it to guide their work. Every gap forces designers to guess. Use TBD to flag missing information; resolve all TBDs before implementation.

Correct

Error-free. Must accurately describe a capability meeting some stakeholder's need. Check against source materials and subject matter experts. A requirement conflicting with its parent is incorrect.

Concise

Contains just the needed information in as few words as possible. Lack of conciseness often caused by compound statements, embedded rationale, or overly complex grammar.

Feasible

At least one design and implementation exists for it given constraints of time, budget, staff, and environment. Proof-of-concept prototypes can evaluate feasibility.

Necessary

At least one of: traceable to a stakeholder need, makes product market competitive, establishes a product differentiator, or is dictated by business strategy/standards.

Prioritized

Ranked or ordered according to importance. All requirements compete for limited resources. Should be a collaborative activity involving multiple stakeholders.

Unambiguous

Has a single interpretation. Ambiguity depends on reader background. Reduce by defining terms, writing concisely, and testing understanding. Augment with diagrams and tables.

Verifiable

A tester can devise tests to determine whether it was properly implemented. Verification via demonstration, analysis, inspection, or testing. Ambiguous/incomplete requirements are unverifiable.

Consistent

Does not conflict with any other requirements at any level. Refer to original statements instead of repeating to improve consistency.

Traceable

Uniquely and persistently identified with a Tag. Can be traced to/from designs, tests, usage models, other artifacts. Enables change impact assessment, coverage analysis, and scope management.

Modifiable

Maintain history of changes; understand connections/dependencies; use unique labels; avoid redundancy; cross-reference related items.

Writing Pitfalls & Typical Mistakes list โ–ถ
Over-specification
Ambiguity Sources
Vague Indefinable Terms
Multiple Requirements in One
Let-out / Escape Clauses
Speculation & Wishful Thinking
Typical Mistake Types

Over-specification

Describing HOW the system achieves something instead of WHAT it should do. Refrain from designing prematurely. Danger signs: naming components, materials, software objects, fields & records in requirements.

Ambiguity Sources

  • Fuzzy words: reasonably, approximately, generally, quickly, usually, systematically
  • A/B construct: "Delivery/Fulfillment" - does slash mean and, or, or a name?
  • Boundary values: "5 to 10 days" - what happens at exactly 5 or 10? Use "through," "inclusive," "exclusive"
  • Negative requirements: "Prevent user from X if not Y" - convert to positive form

Vague Indefinable Terms

Words too vague to be verified. Danger signs: user-friendly, highly versatile, flexible, to the maximum extent, approximately, as much as possible, minimal impact.

Multiple Requirements in One

Keep each requirement as a single sentence. Conjunction danger signs: and, or, with, also, additionally. Words like "unless," "except," "but" indicate multiple requirements should be split.

Let-out / Escape Clauses

Requirements with escape clauses are dangerous because of testing problems. Danger signs: if, but, when, except, unless, although.

Speculation & Wishful Thinking

Speculation: Vague subjects like usually, generally, often, normally, typically.
Wishful thinking: Asking for the impossible (100% reliable, handle all failures, run on all platforms).
Suggestions: May, might, should, ought, could, perhaps, probably - these are not requirements!

Typical Mistake Types

  • Noise: Text carrying no relevant information
  • Silence: A feature not covered by any text
  • Over-specification: Text describing the solution, not the problem
  • Contradiction: Same feature defined incompatibly
  • Ambiguity: Text with โ‰ฅ2 possible interpretations
  • Forward reference: Reference to a feature yet to be defined
  • Wishful thinking: Feature that cannot possibly be validated
  • Jigsaw puzzles: Requirements distributed across document requiring cross-referencing
  • Inconsistent terminology: Inventing then changing terminology
Prioritization Techniques list โ–ถ
1. In or Out
2. Pairwise Comparison & Rank Ordering
3. Three-Level Scale (High/Med/Low)
4. MoSCoW
5. The $100 Technique
6. Value / Cost / Risk

In or Out

Work through a list: is each requirement "in" or "out"? Keep referring to business objectives. Cut to bare minimum for first release, then revisit "out" requirements for next release.

Pairwise Comparison & Rank Ordering

Assign a prioritized sequence number to each requirement. Make pairwise comparisons between all requirements to judge which has higher priority. Group requirements into features/small sets with similar priorities.

Three-Level Scale

Group requirements into High, Medium, and Low. Consider two measures: importance and urgency. Stakeholders must agree on what each level means. Include priority in SRS. Watch for dependencies between priority levels.

MoSCoW

  • Must: Requirements that MUST be satisfied for success
  • Should: Should be included if possible but not necessary for success
  • Could: Could be included but can be postponed or eliminated
  • Won't: Will NOT be implemented in the current release (not in this release or never)

The $100 Technique

Give stakeholders a hypothetical $100 to allocate among requirements based on priority. Makes prioritization more tangible. Gets groups thinking in terms of resource allocation. Risk: room for cheating/gaming the system.

Prioritization Based on Value / Cost / Risk

Used when stakeholders can't agree informally. Features with high risk-adjusted value/cost ratio have highest priority. Feature attractiveness is directly proportional to value and inversely proportional to cost. Participants: PM/BA, customer representative, development representative.

UML Diagrams for RE list โ–ถ
Use Case Diagram
Sequence Diagram
Class Diagram
Activity Diagram
State Machine Diagram
Swimlane Diagram
Data Flow Diagram (DFD)
State Transition Diagram (STD)
Entity-Relationship Diagram (ERD)
Dialog Map
Decision Tables & Trees

Use Case Diagram

Behavioral UML diagram. Shows actors, use cases, and relationships. 5 relationship types: Association (actor-UC), Generalization (actor), Extend (UC-UC), Include (UC-UC), Generalization (UC). Actors don't interact with each other.

Sequence Diagram

Models interactions between objects in a single use case. Shows order of message exchanges. Components: Lifelines, Activation Bars, Message Arrows (synchronous=solid arrowhead; asynchronous=open), Return messages, Reflexive messages, Sequence Fragments (Alternative=if-else; Option=if; Loop; Reference).

Class Diagram

Main building block of OO modeling. Shows objects, attributes, operations, and relationships. Relationship types: Association (logical connection), Multiplicity (cardinality), Aggregation (part-of, open diamond), Composition (strong part-of, filled diamond - parts destroyed with whole), Inheritance/Generalization (is-a relationship, arrow to parent).

Activity Diagram

Describes dynamic behavior as a flow of activities (workflow). Shows sequence, alternative paths, and parallel flows. Used for modeling processes and workflows.

State Machine Diagram

Depicts states and transitions. Not best for overall progression of events - better for specific state shifts. Used for: event-driven reactive system objects, use case scenarios, object lifecycle behavior.

Swimlane Diagram

Used to show business processes, workflows, or system/user interactions. Similar to UML Activity Diagrams. Contains: process steps, transitions, decisions. One of the easiest models for stakeholders to understand.

Data Flow Diagram (DFD)

Takes a functional decomposition approach. Provides a big-picture view of how data moves through a system. Represents systems over a wide range of abstractions. Don't show more than 8 - 10 processes on a single diagram.

State Transition Diagram

3 elements: States (possible system conditions), Transitions (events or conditions causing state changes), Canceled states. Provides brief, complete, and unambiguous representation.

Entity-Relationship Diagram (ERD)

Represents system data relationships. Provides a high-level view of the system. Entity = physical item or collection of data (rectangle, singular noun). Relationship = logical link between pairs of entities. Cardinality shown with numbers/letters (M = many).

Dialog Map

Represents user interface design at a high level. Dialog elements as states (rectangles); navigation as transitions (arrows); conditions shown on arrows. Used to represent interactions between an actor and the system in a use case. Helps find missing, incorrect, or unnecessary navigation.

Decision Tables & Trees

For requirements describing what system should do under all possible combinations of conditions. Factors shown as: statements (true/false), yes/no questions, or questions with more than 2 values. Alternative techniques for representing complex business rules.

CH6
Requirements Validation & Verification
V&V difference, reviews, inspections, techniques
โ–ถ
Validation vs Verification key concept โ–ถ
Validation
Verification
Main Difference
What to Validate

Validation

Assesses whether a product satisfies customer needs. "Are we building the right product?" Checks the software requirements specification against stakeholders' goals and requirements.

Verification

Determines whether the product meets its requirements. "Are we building the product right?" Checks consistency of the SRS artifacts and other development products against the specification.

Main Difference

Validation: "Are we building the right product?" โ†’ Against stakeholder goals.
Verification: "Are we building the product right?" โ†’ Against the specification.
Both must be performed at every stage: elicitation, analysis, specification.

What to Validate

  • Requirements accurately describe intended system capabilities and properties
  • Requirements correctly derived from business requirements and other sources
  • Requirements are complete, feasible, and verifiable
  • All requirements are necessary; the entire set is sufficient
  • All requirements representations are consistent
  • Requirements provide adequate basis to proceed with design
V&V Techniques list โ–ถ
Simple Checks (Traceability)
Prototyping
Functional Test Design
Reviews & Inspections
Model-Based V&V

Simple Checks

Various checks using traceability techniques. Developing a traceability matrix. Verify that requirements are well-written according to established criteria.

Prototyping for Validation

Excellent for validation by users and customers. More accessible than specification. Demonstrates requirements and helps stakeholders discover problems. Come in all shapes: paper prototypes to formal executable models (horizontal, vertical, evolutive, throwaway).

Functional Test Design

Derive functional tests from the requirements specification. Each functional requirement should have an associated test. Designing tests may reveal specification errors even before building the system. TDD (Test-Driven Development) begins with tests before programming.

Reviews & Inspections

A group reads/analyzes requirements, finds problems, meets to discuss, agrees on action items.
Informal reviews: desk checks, pass-arounds, walkthroughs.
Formal reviews / Fagan Inspection: Not more than 2 hours; 3 - 5 reviewers; author presents; metrics collected; supervisor doesn't participate; moderator leads; all reviewers use checklists; re-inspect if >5% changes.

Model-Based V&V

Formal techniques using modeling paradigms. Tools may provide: completeness checking, consistency checking, refinement checking, model checking, theorem proving.

Review Checklist Elements list โ–ถ
Comprehensibility
Redundancy
Completeness
Ambiguity
Consistency
Organisation
Conformance to Standards
Traceability

Comprehensibility

Can readers of the document understand what the requirements mean?

Redundancy

Is information unnecessarily repeated in the requirements document?

Completeness

Does the checker know of any missing requirements? Is any information missing from individual requirement descriptions?

Ambiguity

Are requirements expressed using clearly defined terms? Could readers from different backgrounds make different interpretations?

Consistency

Do descriptions of different requirements contain contradictions? Are there contradictions between individual and overall system requirements?

Organisation

Is the document structured sensibly? Are descriptions organized so related requirements are grouped together?

Conformance to Standards

Does the requirements document conform to defined standards? Are departures from standards justified?

Traceability

Are requirements unambiguously identified? Do they include links to related requirements and to the reasons why they were included?

CH7
Requirements Management
Traceability, baselines, change management, tools
โ–ถ
Requirements Statuses & Attributes list โ–ถ
Status Lifecycle
Requirement Attributes
Requirements Change Factors
Requirements Identification

Requirement Status Lifecycle

  • Proposed: Submitted by some stakeholder
  • Approved: Part of baseline; committed to implement
  • Rejected: After evaluation, not included
  • Implemented: Designed and implemented
  • Verified: Relevant tests have passed
  • Deleted: Removed from the list

Requirement Attributes

Attributes to consider: Priority, Status, Date created, Release number, Validation method used. More complex projects = richer attributes. Many are predefined in RM tools; others defined by requirements engineers per project.

Requirements Change Factors

  • Requirements errors, conflicts, and inconsistencies
  • Evolving customer/user knowledge of the system
  • Technical, schedule, or cost problems
  • Changing customer priorities and new needs
  • Collaborating systems may change
  • Changing laws and regulations

Requirements Identification

Every requirement must have a unique identification. Most common: requirements numbering by chapter/section. Problems: numbers can't be assigned until document is complete; implicit classification by section may mislead readers.

Traceability list โ–ถ
Definition & Benefits
Types of Traceability
Traceability Matrix

Traceability Definition & Benefits

A requirement is traceable if you can discover: who suggested it, why it exists, what requirements relate to it, how it relates to designs/implementations/documentation.
Benefits: Impact analysis, change control, process monitoring, improved software quality, risk reduction.

Types of Traceability

  • Source traceability: Links requirements with person or document
  • Rationale traceability: Links to the reason for the requirement
  • Requirements-requirements: Links dependent requirements to each other
  • Architecture traceability: Links to subsystems implementing the requirement
  • Design traceability: Links to hardware/software components
  • Interface traceability: Links to interfaces of external systems
  • Feature traceability: Links to product features
  • Tests traceability: Links to test cases verifying the requirement
  • Code traceability: Generally inferred, not directly established

Traceability Matrix

Defines links between pairs of elements. For hundreds/thousands of requirements, matrices become large and sparsely populated. Simplified form: maintain lists of related requirement identifiers alongside each requirement description.

Baselines & Version Control list โ–ถ
Baseline Definition
Version Control
Change Management Process

Baseline

Non-modifiable (read-only) version of a document. Describes a moment in time. Enables document comparison. Comes with a change history. Requires access control.
For requirements: represents the set of functional and non-functional requirements the development team committed to implement in a specific release. All changes after baselining must follow a change control process.

Version Control

Every version of a requirement needs a unique identifier. Last version must be available to all team members. Changes must be documented and communicated. Requirements documents should include a revision history (changes, dates, by whom, why). Version control tools store and manage revision history.

Change Management Process

Steps:

  1. Identify requirements problem
  2. Analyze requirements and propose changes
  3. Analyze the proposed changes (how many affected? cost in time/money?)
  4. Implement the change (produce amendments or new document version)
Change Request Form includes: Date, Customer, Requester, Product+version, Description and rationale, Change analysis fields, Signature fields, Status, Comments.

RM Tools & Approaches list โ–ถ
Document Approach (Word)
Database Approach (DOORS)
Available RM Tools

Document Approach

Pros: Easy to use, easy to access, simple training, easy to produce final document.
Cons: Poor traceability, no status reports, no granularity, limited search/navigation, poor change management and version control, simultaneous access issues.

Database Approach (e.g., DOORS)

Pros: Good for management, controlled access, links, analysis, reports, query/navigation, version management, change management.
Cons: Hard and costly to configure, manage, and use; link between database and final document must be maintained.

Available RM Tools

  • Word processor (MS Word with templates)
  • Spreadsheet (MS Excel)
  • Commercial: IBM/Telelogic DOORS, IBM Requisite Pro, Jama Contour, Accompa
  • Open source: OSRMT (SourceForge)
  • Bug tracking: Bugzilla, GitHub
  • Collaboration: Assembla, GitHub, Twiki
SRS
Software Requirements Specification (SRS)
Labeling methods, readability, TBDs, Volere shell
โ–ถ
Labeling / Identification Methods list โ–ถ
Sequence Numbering (UC-9, FR-26)
Hierarchical Numbering (3.2.4.3)
Hierarchical Textual Tags

Sequence Numbering

Simplest approach. Prefix indicates requirement type (UC-9, FR-26). Numbers not reused when a requirement is deleted. Used by commercial RM tools.
Pros: Easy to retain unique identifier even when moving requirements.
Cons: No logical/hierarchical grouping; numeric labels say nothing about intent.

Hierarchical Numbering

Requirements labeled with section numbers (e.g., 3.2.4.3 is a child of 3.2.4). More digits = more detailed requirement.
Pros: Simple, compact, familiar; word processor can auto-assign; supported in RM tools.
Cons: Labels can grow to many digits; TRAP - word processors don't generate persistent labels (inserting/moving changes numbers).
Mitigation: Number major sections hierarchically, then use short text codes with sequence numbers in each section.

Hierarchical Textual Tags

Structured, meaningful tags: e.g., "Print.ConfirmCopies." Unaffected by adding/deleting/moving other requirements. Unique ID = Parent.Child (e.g., Product.Cart.01).
Pros: Avoids maintenance problems of hierarchical numbers; tags are meaningful.
Cons: Longer and more difficult to create/maintain uniqueness.

SRS Audience list โ–ถ
All SRS Audiences

SRS Audiences

  • Developers: Need to know what to build
  • Project Managers: Schedule and resource estimations
  • Customers, marketing & sales: Know what product they expect
  • Testers: Develop requirements-based tests and test plans
  • Maintenance & support: Understand what each part should do
  • Documentation writers & training personnel: Develop user manuals
  • Legal staff: Ensure requirements comply with laws
  • Subcontractors: Base their work on specified requirements
Writing Guidelines & Style list โ–ถ
System or User Perspective
Writing Style Tips
Level of Detail
The "Shall" Keyword
RFC 2119 Keywords

System or User Perspective

Write as: "The system shall [action] [observable result]" or "The [user class] shall be able to [do something] [to some object]."
Include optional preconditions and trigger events. Active voice makes it clear who is taking the action.

Writing Style Tips

  • Put the punch line first (statement of need/functionality)
  • Use complete sentences with proper grammar/spelling
  • Keep sentences short and direct - avoid jargon
  • Don't use multiple terms for the same concept
  • Avoid interleaving passive and active voice
  • Write in active voice to clarify who takes the action
  • Avoid "and/or" - leaves interpretation to the reader
  • Split requirements with "unless," "except," "but" into multiple requirements

Level of Detail

More detail when: External client; outsourced development/testing; geographically dispersed team; testing based on requirements; accurate estimates needed; traceability required.
Less detail when: Internal work; customers extensively involved; developers have domain experience; precedents available; package solution used.

The "Shall" Keyword

Use "shall" (or "must") to indicate mandatory requirements. Be consistent - pick one word and stick with it. "May" or "should" indicate optional/recommended behavior. "Shall" is a standard signal to developers and testers that implementation is required.

RFC 2119 Requirement Keywords

  • MUST / REQUIRED / SHALL: Absolute requirement
  • MUST NOT / SHALL NOT: Absolute prohibition
  • SHOULD / RECOMMENDED: Think twice about NOT doing it
  • SHOULD NOT / NOT RECOMMENDED: Think twice about doing it
  • MAY / OPTIONAL: Truly optional
CH8 - 9
Agile Methods & Scrum
Agile values, principles, Scrum roles, artifacts, ceremonies
โ–ถ
Agile Manifesto Values list โ–ถ
Individuals & Interactions > Process & Tools
Working Software > Comprehensive Documentation
Customer Collaboration > Contract Negotiation
Responding to Change > Following a Plan

Individuals & Interactions

Individuals create value. Without a skilled craftsman, the best tools are useless. Focus on people, not processes.

Working Software

Heavy processes generate exhaustive documentation with ambiguity and maintenance costs. A single criterion measures progress: working software. Documentation is a support tool, not the goal.

Customer Collaboration

Negotiation protects from financial risk but can cause project failure and endless disputes. Think as one team with a common goal: a successful project.

Responding to Change

A predefined plan makes us unresponsive to events. Agile methods are designed to accommodate change, ensuring accurate and adaptive strategic planning.

Agile Manifesto Principles (12) list โ–ถ
All 12 Principles

12 Agile Manifesto Principles

  1. Satisfy customer through early and continuous delivery of valuable software
  2. Welcome changing requirements, even late in development
  3. Deliver working software frequently (weeks to months, shorter preferred)
  4. Business people and developers work together daily
  5. Build projects around motivated individuals; give them support and trust them
  6. Most efficient communication: face-to-face conversation
  7. Working software is the primary measure of progress
  8. Agile promotes sustainable development pace (sponsors, devs, users)
  9. Continuous attention to technical excellence and good design
  10. Simplicity - maximize the amount of work NOT done
  11. Best architectures and designs emerge from self-organizing teams
  12. Team regularly reflects on how to become more effective and adjusts
Scrum Roles list โ–ถ
Product Owner
Scrum Master
Project Team

Product Owner

Possibly a Product Manager or Project Sponsor. Decides features, release date, prioritization, and budget. Has final say on product decisions.

Scrum Master

Typically a Project Manager or Team Leader. Responsible for enacting Scrum values and practices. Handles risk management and politics. Keeps everyone productive. Removes impediments.

Project Team

5 - 10 members. Self-organizing. Cross-functional: QA, Programmers, UI Designers, etc. Membership should change only between sprints.

Scrum Artifacts list โ–ถ
Product Backlog
User Stories
Sprint Backlog
Sprint Burndown Chart

Product Backlog

The project requirements. Prioritized by the Product Owner. Reprioritized at the start of each sprint. Contains all features, enhancements, and fixes needed.

User Stories

Format: "As a [user role], I want to [goal], so I can [reason]."
Example: "As a user, I want to log in, so I can access subscriber content."
Captures: Who (user role), What (goal), Why (reason).

Sprint Backlog

Set of Product Backlog items selected for the Sprint. Created during Sprint Planning. Contains tasks identified and estimated (1 - 16 hours each). Created collaboratively, not by Scrum Master alone.

Sprint Burndown Chart

Displays what work has been completed and what remains. One per developer or work item. Updated every day. Make best guess about hours/points completed each day.

Scrum Ceremonies list โ–ถ
Sprint Planning
Daily Scrum (Stand-up)
Sprint Review
Sprint Retrospective

Sprint Planning

Team selects items from product backlog they can commit to completing. Sprint Backlog created with tasks identified and estimated. Collaboratively done. High-level design considered. Usually a 2-week to 1-month cycle.

Daily Scrum (Stand-up)

Daily, 15 minutes, standing. Not for problem solving. The whole world is invited to observe but only team members, Scrum Master, and Product Owner can talk. Helps avoid unnecessary meetings. 3 questions: What did I do yesterday? What will I do today? Any impediments?

Sprint Review

Team presents what it accomplished during the sprint (typically a demo of new features). Informal - 2-hour prep time rule, no slides. Whole team participates. Invite the world.

Sprint Retrospective

Team reflects on the process: What went well? What could improve? How to make next sprint better? Results in concrete action items for the next sprint.