graph TD
A[Elicitation] --> B[Analysis]
B --> C[Specification]
C --> D[Validation]
D --> E[Management]
E --> A
style A fill:#f9d5e5,stroke:#333
style B fill:#eeeeee,stroke:#333
style C fill:#d4f1f9,stroke:#333
style D fill:#d8f3dc,stroke:#333
style E fill:#ffcccb,stroke:#333
Requirements Engineering Guide
Introduction to Requirements Engineering
Requirements Engineering is a systematic approach to eliciting, documenting, validating, and managing requirements throughout the software development lifecycle. This guide provides a structured framework for modern requirements practices, methodologies, and techniques that lead to successful software development outcomes.
Requirements Engineering Process Overview
The requirements engineering process consists of iterative activities that transform stakeholder needs into well-defined requirements:
Types of Requirements
Functional Requirements
Functional requirements define specific behaviors, capabilities, and functions that a system must perform to meet user needs.
- Describe what the system should do
- Detail the features and services provided
- Specify behaviors under particular conditions
- Define interactions between users and the system
- Often expressed as “The system shall…”
Example: Functional Requirement Specification
FR-103: User Authentication
Description: The system must authenticate users before granting access to protected resources.
Details: - The system shall provide a login interface requiring username and password - The system shall validate credentials against the user database - The system shall enforce password complexity requirements - The system shall lock accounts after 5 failed login attempts - The system shall provide a password recovery mechanism
Priority: Must have
Source: Security policy SP-42
Dependent requirements: FR-101, FR-102
Verification method: Security testing
Non-Functional Requirements
Non-functional requirements define quality attributes, constraints, and characteristics that affect how the system performs its functions.
- Performance: Response times, throughput, resource utilization
- Security: Authentication, authorization, data protection
- Usability: User interface, accessibility, learning curve
- Reliability: Fault tolerance, recoverability, availability
- Compatibility: Platform support, integration capabilities
- Scalability: Growth capacity, load handling
- Maintainability: Ease of updates, modularity, documentation
User Stories
User stories are short, simple descriptions of functionality from an end user perspective. They follow this format:
As a [user type], I want [goal] so that [benefit/value].
Example: > As a mobile app user, I want to save my data locally so that I can access it offline.
User Story Quality Criteria: The INVEST Model
Each user story should meet the INVEST criteria:
- Independent: Can be developed and delivered separately
- Negotiable: Details can be discussed and refined
- Valuable: Delivers specific value to users or stakeholders
- Estimable: Team can reasonably estimate development effort
- Small: Fits within a single iteration
- Testable: Has clear acceptance criteria
Acceptance Criteria
Acceptance criteria define when a user story is complete. They should be:
- Written in clear, unambiguous language
- Testable with specific conditions
- Include both happy path and edge cases
- Defined before development begins
Example: > Given I am a logged-in user
> When I navigate to my profile
> And I click the “Edit Profile” button
> And I update my profile information
> And I click “Save”
> Then my updated information should be displayed
> And I should see a success message
Requirements Documentation Methods
Scenarios and Acceptance Tests
Scenarios describe specific examples of system behavior using the Given-When-Then format:
@test-type @priority @scope
Scenario: E[XX]-F[XX]-S[XX] - [Descriptive Title]
Given [initial context]
When [action occurs]
Then [expected outcome]
Example Scenarios:
@happy-path @smoke @automated
Scenario: E01-F01-S01 - Successful User Registration
Given a new user on the registration page
When they complete the registration form with valid data
Then their account should be created
And they should receive a confirmation email
@edge-case @security
Scenario: E01-F01-S02 - Registration with Existing Email
Given a new user on the registration page
And an existing account with email "test@example.com"
When they attempt to register with the same email
Then registration should be prevented
And they should see an error message
For detailed scenario templates and examples, see the Scenarios and Acceptance Tests Template.
Gherkin Specifications and Numbering System
Gherkin specifications should follow a hierarchical numbering format for clear organization:
- EPIC: E[01-99] (e.g., E01)
- Feature: E[01-99]-F[01-99] (e.g., E01-F01)
- User Story: E[01-99]-F[01-99]-US[01-99] (e.g., E01-F01-US01)
- Scenario: E[01-99]-F[01-99]-S[01-99] (e.g., E01-F01-S01)
- Acceptance Test: E[01-99]-F[01-99]-TA[01-99] (e.g., E01-F01-TA01)
Example Structure:
## EPIC: E01 - [User Account Management]
### Feature: E01-F01 - [User Registration]
@functional @critical @sprint-1 @user-role-all
**User Story:** E01-F01-US01 - As a new user, I want to create an account so that I can access the application's features.
@happy-path @smoke @automated
Scenario: E01-F01-S01 - Successful Registration
Given the user is on the registration page
When the user enters valid registration information
And submits the registration form
Then a new account should be created
And the user should be redirected to the welcome page
Use Cases
Use cases describe interactions between actors and the system to achieve specific goals, typically including:
- Actors involved
- Preconditions
- Main success scenario
- Alternative paths
- Postconditions
Data Requirements
Data requirements define the structure, relationships, and characteristics of data in the system:
- Data Structures
- Entity definitions
- Attributes and data types
- Relationships and cardinality
- Data constraints and validation rules
- Data Quality Requirements
- Accuracy standards
- Completeness requirements
- Consistency rules
- Timeliness requirements
- Data Lifecycle
- Creation and acquisition
- Storage and retention
- Archival and backup
- Deletion and purging
Example Data Requirement:
Entity: Customer
Description: Represents a registered user of the system
Attributes:
- id: UUID (primary key)
- email: String (unique, validated)
- name: String (required)
- created_at: Timestamp
Relationships:
- has_many: Orders
- has_one: ShippingAddress
Constraints:
- email must be unique
- password must meet security policy
Quality:
- 99.99% data accuracy
- < 1s retrieval timeFor detailed templates and examples, see the Data Requirements Template.
External Interface Requirements
External interface requirements define how the system interacts with other systems, users, hardware, and software:
- User Interfaces
- Visual elements and layouts
- Navigation patterns
- Input/output methods
- Accessibility standards
- System Interfaces
- API specifications
- Data formats
- Communication protocols
- Integration points
Example Interface Requirement:
Interface: Payment Gateway API
Type: REST API
Description: Integration with payment processing service
Specifications:
- Protocol: HTTPS
- Authentication: OAuth 2.0
- Data Format: JSON
- Endpoints:
- POST /api/v1/payments
- GET /api/v1/transactions
Requirements:
- Max response time: 3 seconds
- 99.99% availability
- End-to-end encryptionFor detailed templates and examples, see the External Interface Requirements Template.
Requirements Specification Documents
Formal documents that detail:
- System overview: Provides a high-level description of the system, its purpose, scope, and objectives
- Functional and non-functional requirements: Details specific behaviors (functional) and quality attributes (non-functional) of the system
- Data requirements: Specifies data structures, relationships, and persistence needs
- External interface requirements: Documents how the system interacts with external components, including APIs, UIs, and hardware interfaces
- Constraints and assumptions: Lists technical, business, and environmental limitations and presumptions that impact the system
- Traceability matrix: Maps relationships between requirements, design components, and test cases to ensure complete coverage
System Overview
The system overview provides a high-level understanding of the system’s purpose, scope, and key components:
System Purpose and Scope
- Primary goals and objectives
- Target users and stakeholders
- Key value propositions
- Business objectives
System Context
graph TD A[System] --> B[External System 1] A --> C[External System 2] A --> D[External System 3] E[User Type 1] --> A F[User Type 2] --> ATechnology Stack | Layer | Technologies | Rationale | |——-|————-|———–| | Frontend | [Technologies] | [Justification] | | Backend | [Technologies] | [Justification] | | Database | [Technologies] | [Justification] | | Infrastructure | [Technologies] | [Justification] |
For detailed templates and examples, see the System Overview Template.
Requirements Gathering Process
An effective requirements gathering process typically includes:
Stakeholder Identification: Determine who has input on or is affected by the system.
Elicitation Techniques:
- Interviews with stakeholders
- Workshops and focus groups
- Surveys and questionnaires
- Observation of current processes
- Analysis of existing documentation
- Prototyping and user feedback
Analysis and Refinement:
- Remove ambiguities and resolve conflicts
- Identify gaps and inconsistencies
- Elaborate high-level requirements into detailed specifications
- Validate requirements with stakeholders
Documentation:
- Create formal requirements documentation using appropriate templates
- Establish traceability between requirements
- Manage requirements versioning
Prioritization:
- Apply the MoSCoW method (Must have, Should have, Could have, Won’t have)
- Consider business value, risk, dependencies, effort, and time constraints
- Create a prioritized backlog for implementation
Validation and Verification:
- Review requirements with stakeholders
- Ensure requirements are testable
- Check for completeness and consistency
- Validate alignment with business goals
Requirements Visualization Techniques
Visual representations often communicate requirements more effectively than text alone:
User Journey Maps
Visualize the end-to-end user experience through a service or product, highlighting touchpoints, emotions, and pain points.
Story Maps
Organize user stories into a narrative flow that shows the user journey horizontally and details vertically.
Impact Mapping
Connect business goals to user needs, deliverables, and development activities in a hierarchical diagram.
Event Storming
Collaborative modeling technique using sticky notes to explore domain events, commands, aggregates, and policies.
Example Story Map
graph TD
subgraph "User Journey"
A["Sign Up"] --> B["Create Profile"]
B --> C["Connect Devices"]
C --> D["Track Activity"]
D --> E["View Reports"]
end
subgraph "Epic: Sign Up"
A1["Email Sign Up"]
A2["Social Sign Up"]
A3["Account Verification"]
end
subgraph "Epic: Create Profile"
B1["Basic Info"]
B2["Fitness Goals"]
B3["Health Metrics"]
end
A --- A1
A --- A2
A --- A3
B --- B1
B --- B2
B --- B3
Domain-Driven Design in Requirements Engineering
Domain-Driven Design (DDD) provides a powerful approach to requirements engineering by focusing on the core domain and domain logic.
Ubiquitous Language
- Create a shared language between developers and domain experts
- Document domain terminology in a glossary
- Use consistent terminology in requirements, code, and tests
Bounded Contexts
- Identify different contexts within the system where terms might have different meanings
- Document context boundaries and relationships
- Align requirements organization with bounded contexts
Example Domain Model
### Example Domain Model
```{.plantuml}
@startuml
' Set horizontal layout
left to right direction
skinparam nodesep 80
skinparam ranksep 60
class Order {
+OrderId
+OrderDate
+Status
+calculateTotal()
}
class Customer {
+CustomerId
+Name
+Address
+placeOrder()
}
class OrderItem {
+ProductId
+Quantity
+UnitPrice
+calculateSubtotal()
}
class Product {
+ProductId
+Name
+Description
+Price
}
Customer "1" --> "*" Order : places
Order "1" *-- "*" OrderItem : contains
OrderItem "*" --> "1" Product : references
@enduml
Requirements Traceability
Traceability Framework
A comprehensive traceability framework should include:
| Requirement ID | Source | User Story | Design Document | Implementation | Test Case | Status |
|---|---|---|---|---|---|---|
| E01-F01-S01 | Client Meeting #2 | E01-F01-US01 | DB Schema v1.2 | UserController.kt | E01-F01-TA01 | Verified |
Requirement Dependencies and Relationships
Document relationships between requirements using these conventions:
| Relationship | Syntax | Description |
|---|---|---|
| Depends on | @depends-on:E01-F02 |
Requirement depends on another being implemented first |
| Extends | @extends:E01-F02 |
Requirement extends functionality of another |
| Conflicts with | @conflicts-with:E01-F02 |
Potential conflict needing resolution |
| Replaces | @replaces:E01-F02 |
Requirement supersedes an earlier one |
| Related to | @related-to:E01-F02 |
General relationship with another requirement |
Traceability Matrix Overview
A comprehensive traceability matrix maps relationships between:
- Business Requirements to System Requirements
- Links high-level business needs to specific system features
- Ensures complete coverage of business objectives
- Identifies gaps in implementation
- Requirements to Design Components
- Maps requirements to architectural components
- Validates technical implementation approach
- Tracks design coverage
- Requirements to Test Cases
- Links requirements to verification methods
- Ensures complete test coverage
- Validates requirement testability
Example Matrix:
| Requirement ID | Business Req | User Story | Design Doc | Test Case | Status |
|---|---|---|---|---|---|
| FR-103 | BR-001 | US-001 | DESIGN-001 | TC-001 | Verified |
| NFR-201 | BR-002 | US-002 | DESIGN-002 | TC-002 | In Progress |
For detailed templates and examples, see the Traceability Matrix Template.
Best Practices for Requirements Engineering
Involve the right stakeholders: Ensure all relevant perspectives are considered.
Use clear, unambiguous language: Avoid vague terms like “user-friendly,” “fast,” or “efficient” without measurable criteria.
Be specific and measurable: Define quantifiable criteria for non-functional requirements.
Maintain traceability: Link requirements to business goals, design elements, code implementation, and test cases.
Iteratively refine requirements: Requirements evolve; plan for ongoing refinement.
Document assumptions and constraints: Make implicit limitations explicit.
Use visual aids: Diagrams, mockups, and prototypes can clarify complex requirements.
Establish a glossary: Define domain-specific terms to ensure shared understanding.
Consider edge cases and exceptions: Document how the system should handle unusual situations.
Validate with acceptance criteria: Each requirement should have clear criteria for determining when it’s met.
Modern Requirements Practices
Requirements in DevOps Environments
Modern DevOps practices change how requirements are managed:
Continuous Requirements
- Requirements evolve alongside continuous delivery
- Feedback loops inform requirement adjustments
- Feature flags enable progressive delivery of requirements
- A/B testing validates requirement assumptions
Requirements as Code
- Version control requirements alongside code
- Automated validation of requirements
- Requirements expressed as executable specifications
- Infrastructure requirements defined as code
Integration into CI/CD Pipeline
- Automated requirements validation
- Requirements compliance verification
- Traceability enforcement
- Release notes generation from requirements changes
Agile Adaptation
Progressive Refinement
Progressive refinement is a core agile practice that involves:
- Starting with high-level epics and gradually breaking them down
- Regular refinement sessions with stakeholders
- Continuous evolution of requirements based on feedback
- Using story splitting techniques for complex requirements
- Maintaining a healthy backlog refinement cadence
Living Documentation
Living documentation keeps requirements aligned with the evolving system:
- Automated testing as documentation (Behavior-Driven Development)
- Wiki-based requirements that evolve with the product
- Version-controlled requirements alongside code
- Automated generation of documentation from code and tests
- Regular review and updates based on implementation feedback
Just-enough Documentation
- Balance between documentation and agility
- Focus on essential information capture
- Documentation that serves a clear purpose
AI-Assisted Requirements
- Natural language processing for requirement analysis
- Automated consistency checking
- Smart requirement classification
Requirements Management Tools
Various tools can help with requirements gathering and management:
- Specialized requirements management tools (e.g., Jira, Azure DevOps, ReqSuite)
- Documentation tools with requirements templates (e.g., Confluence, SharePoint)
- Modeling tools for visual requirements (e.g., Lucidchart, Draw.io)
- Collaborative workspaces (e.g., Miro, Mural) for requirements workshops
- Version control systems for requirements documentation
Requirements Templates and Frameworks
For detailed templates and frameworks to document requirements effectively, see our standardized templates in the Requirements Templates Guide:
Project Constraints and Assumptions
Understanding and documenting constraints and assumptions is crucial for successful requirements engineering:
Types of Constraints
- Business Constraints
- Regulatory requirements
- Budget limitations
- Timeline restrictions
- Resource availability
- Technical Constraints
- Hardware limitations
- Software dependencies
- Integration requirements
- Performance boundaries
- Environmental Constraints
- User environment
- System environment
- Infrastructure requirements
- Deployment restrictions
Managing Assumptions
- Documentation
- Clearly state each assumption
- Provide rationale
- Identify risks
- Plan validation approach
- Validation Process
- Regular review of assumptions
- Update as new information emerges
- Track impact on requirements
- Maintain traceability
For detailed templates and guidance on documenting constraints and assumptions, see the Constraints and Assumptions Template.
Common Challenges in Requirements Engineering
- Scope creep: Continuously expanding requirements
- Unstated assumptions: Implicit requirements that aren’t documented
- Conflicting requirements: Contradictory needs from different stakeholders
- Analysis paralysis: Excessive detail slowing down the process
- Ambiguity: Unclear or vague specifications
- Over-specification: Dictating implementation rather than requirements
- Changing requirements: Managing evolving needs during development
Addressing these challenges requires strong communication, stakeholder engagement, appropriate methodology selection, and effective requirements management tools and processes.
Requirements Validation Techniques
Requirements validation ensures that the documented requirements accurately represent stakeholder needs and can be implemented into a working system that meets those needs.
Review Techniques
Peer Reviews
- Description: Systematic examination of requirements by peers and colleagues
- Benefits: Identifies inconsistencies and ambiguities early
- Process:
- Distribute requirements to reviewers
- Allow time for individual review
- Collect and consolidate feedback
- Address issues identified
Walkthrough Sessions
- Description: Presenter guides stakeholders through requirements step by step
- Benefits: Creates shared understanding and surfaces questions
- Process:
- Present requirements in logical order
- Encourage questions and discussion
- Document concerns and suggested improvements
- Follow up with revisions
Formal Inspections
- Description: Structured review process with defined roles and procedures
- Benefits: High defect detection rate, provides metrics on requirements quality
- Roles:
- Moderator: Manages the process
- Reader: Presents the material
- Recorder: Documents issues
- Inspector: Reviews for specific issues
- Process:
- Planning and preparation
- Inspection meeting
- Rework
- Follow-up verification
Stakeholder Reviews
- Description: Validation sessions with business stakeholders
- Benefits: Ensures requirements meet business needs, builds buy-in
- Best Practices:
- Prepare executive summaries for high-level stakeholders
- Use visual aids to help explain technical concepts
- Document sign-off and approval
Validation Methods
Prototyping
- Types:
- Low-fidelity: Paper sketches, wireframes
- Medium-fidelity: Interactive mockups
- High-fidelity: Working prototypes
- Benefits:
- Makes abstract requirements tangible
- Allows early user feedback
- Reveals unstated requirements
- Example Process:
- Create prototype based on requirements
- Conduct user testing sessions
- Collect feedback
- Refine requirements based on insights
Requirements Testing
Description: Creating test cases directly from requirements
Techniques:
- Requirements-based test design
- Boundary value analysis
- Equivalence partitioning
Example:
Requirement: The system shall accept passwords between 8-20 characters Test Cases: - 7 characters (invalid) - 8 characters (valid) - 20 characters (valid) - 21 characters (invalid)
Model Validation
- Description: Validating requirements through models and simulations
- Modeling Techniques:
- UML diagrams
- Business process models
- State machines
- Data models
- Validation Approach:
- Create models representing requirements
- Walk through scenarios using models
- Verify logic and completeness
- Update requirements based on model insights
Use Case Simulation
- Description: Mentally executing use cases step by step
- Benefits:
- Validates flow and logic
- Identifies missing steps and conditions
- Tests alternative paths
- Process:
- Select a use case
- Define test scenarios
- Execute each step mentally or with simple tools
- Document issues and gaps found
Validation Checklist
A comprehensive requirements validation should verify the following qualities:
Completeness
- All required functionality is specified
- All interfaces are defined
- All constraints are documented
- No “TBD” (To Be Determined) items remain without explanation
Consistency
- No contradictions between requirements
- Consistent terminology throughout
- Consistent level of detail
- Alignment with higher-level requirements
Feasibility
- Technical feasibility assessment
- Schedule feasibility evaluation
- Budget feasibility check
- Operational feasibility confirmation
Testability
- Each requirement can be verified objectively
- Clear acceptance criteria exist
- Quantifiable metrics where appropriate
- Test cases can be derived
Traceability
- Each requirement is uniquely identified
- Links to source (business need, stakeholder, etc.)
- Forward traceability to design and tests
- Backward traceability to higher-level requirements
Unambiguity
- Clear, precise language
- Measurable criteria where applicable
- No subjective terms without definition
- Single interpretation possible
Correctness
- Reflects stakeholder needs accurately
- Aligns with business objectives
- Conforms to standards and regulations
- Technically sound
Validation Documentation
Document the results of validation activities to ensure traceability and accountability:
- Validation Report
- Summary of validation activities
- Issues identified
- Resolution actions
- Validation status of each requirement
- Review Record
- Date and participants
- Requirements reviewed
- Comments and issues raised
- Decisions made
- Formal Sign-off
- Stakeholder acknowledgment
- Approval signatures
- Conditions of approval
- Date of validation
Requirements Artifacts Relationships
Hierarchy and Relationships
graph TD
E[Epic] --> F[Feature]
F --> US[User Story]
US --> FR[Functional Requirement]
US --> NFR[Non-Functional Requirement]
FR --> S[Scenario]
NFR --> S
US --> UC[Use Case]
UC --> S
S --> AT[Acceptance Test]
Requirements Artifact Comparison
| Aspect | User Story | Use Case | Functional Req | Non-Functional Req | Scenario |
|---|---|---|---|---|---|
| Focus | User value | User interaction | System behavior | System qualities | Specific example |
| Format | As a/I want/So that | Steps & flows | System shall | System shall be | Given/When/Then |
| Scope | Single feature slice | Complete interaction | Specific function | Quality attribute | Single interaction path |
| Level | Business | User interaction | Technical | Technical | Implementation |
| Purpose | Planning | Design | Specification | Constraints | Validation |
Relationships and Mappings
Epic to Features
- Epic: Large initiative (e.g., “User Account Management”)
- Features: Major components (e.g., “Registration”, “Authentication”)
Features to User Stories
Feature: E01-F01 - User Registration User Story: E01-F01-US01 - As a new user... User Story: E01-F01-US02 - As a registered user...User Stories to Requirements
User Story: E01-F01-US01 @implements-fr:FR-103 // Authentication requirement @implements-nfr:NFR-201 // Response time requirementRequirements to Scenarios
FR-103: User Authentication Scenario: E01-F01-S01 - Successful Login Scenario: E01-F01-S02 - Failed LoginUse Cases to Scenarios
Use Case: UC-01 - User Login Process Main Scenario: E01-F01-S01 - Successful Login Alternative: E01-F01-S02 - Failed Login Exception: E01-F01-S03 - Account Locked
Key Differences
- User Stories vs Use Cases
- User Stories: Brief, focused on value
- Use Cases: Detailed, focused on interaction steps
- Functional vs Non-Functional Requirements
- Functional: What the system does
- Non-Functional: How well the system does it
- Scenarios vs Use Cases
- Scenarios: Specific instances/examples
- Use Cases: Complete interaction flows
- Requirements vs Tests
- Requirements: Specify what’s needed
- Tests: Verify implementation meets requirements
Example Flow
# Epic
E01 - User Account Management
# Feature
E01-F01 - User Registration
# User Story
E01-F01-US01 - As a new user, I want to create an account...
# Functional Requirement
FR-103 - The system shall authenticate users...
# Non-Functional Requirement
NFR-201 - Registration process shall complete within 2 seconds...
# Use Case
UC-01 - User Registration Process
1. User navigates to registration
2. System displays form
3. User submits information
...
# Scenario
E01-F01-S01 - Successful Registration
Given a new user on the registration page
When they submit valid information
Then their account is created
# Acceptance Test
E01-F01-TA01 - Verify Registration Success
Given test user data "test@example.com"
When registration form is submitted
Then database contains new user
And welcome email is sent
Requirements Documentation Types
Requirements documentation follows a hierarchical structure:
- System Requirements Specification (SRS)
- Complete system documentation
- High-level overview
- All requirement types
- User Stories and Use Cases
- Business value focused
- User interaction flows
- Acceptance criteria
- Technical Requirements
- Functional specifications
- Non-functional attributes
- Interface definitions
- Supporting Documentation
- Data requirements
- Constraints and assumptions
- Traceability information
Documentation Structure
graph TD
SRS[System Requirements Specification] --> US[User Stories]
SRS --> UC[Use Cases]
SRS --> FR[Functional Requirements]
SRS --> NFR[Non-Functional Requirements]
SRS --> DR[Data Requirements]
SRS --> IR[Interface Requirements]
US --> AC[Acceptance Criteria]
UC --> SC[Scenarios]
FR --> TS[Test Specifications]
NFR --> VM[Validation Methods]
Document Dependencies
| Document Type | Depends On | Influences |
|---|---|---|
| SRS | Business Requirements | All other docs |
| User Stories | SRS | Functional Reqs |
| Use Cases | User Stories | Scenarios |
| Functional Reqs | User Stories | Test Specs |
| Non-Functional Reqs | SRS | Validation |
Requirements Analysis Techniques
Behavior-Driven Development (BDD)
Principle: Define expected system behaviors through scenarios understandable by all stakeholders.
Implementation: - Use of Gherkin format (Given-When-Then) - Example Mapping sessions to develop scenarios - Automated tests directly linked to specifications
Recommended Tools: - Cucumber, Specflow, JBehave - FitNesse for acceptance testing
References: - “BDD in Action” by John Ferguson Smart - “Specification by Example” by Gojko Adzic
Use Case Modeling
Principle: Document interactions between actors and the system to achieve specific goals.
Recommended Structure: - Primary and secondary actors - Pre and post conditions - Main flow and alternatives - Extensions and exceptions
Documentation Format:
Use Case: [Use Case Name]
Primary Actor: [Actor]
Preconditions: [Required Conditions]
Main Flow:
1. [Step 1]
2. [Step 2]
...
Alternative Flows:
- [Condition]: [Action Sequence]
Postconditions: [System State After Execution]
References: - “Writing Effective Use Cases” by Alistair Cockburn - “UML Distilled” by Martin Fowler
Requirements Prioritization
Prioritization Methods
Recommended Techniques:
- MoSCoW:
- Must have: Essential features
- Should have: Important features
- Could have: Desirable features
- Won’t have: Postponed features
- Weighted Scoring:
- Business value (30-50%)
- Technical complexity (20-30%)
- Risk (15-25%)
- Cost (10-20%)
- User Story Mapping:
- Horizontal organization by user activities
- Vertical organization by priority
- Identification of coherent releases
References: - “User Story Mapping” by Jeff Patton - “Software Requirements” by Karl Wiegers and Joy Beatty
Release Planning
Recommended Structure: - MVP (Minimum Viable Product): Core features only - Incremental releases: 4-6 weeks per release - Priority reassessment after each user feedback