SE Notes
Detailed analysis of requirements to guide development.
The requirement analysis phase is the critical bridge between understanding what stakeholders want and defining what the development team will build. It transforms vague business needs and user wishes into precise, testable, and implementable specifications. This phase answers the fundamental question: "What exactly should this software system do?" Getting this right is arguably the most important determinant of project success—studies consistently show that requirements defects discovered late in development cost 50-200 times more to fix than those caught during this phase.
Purpose and Importance
Imagine building a house without blueprints. The carpenter asks "what kind of house do you want?" and the owner says "a nice one with enough rooms." Without precise specifications—room dimensions, plumbing locations, electrical layout, materials—the result will almost certainly disappoint. Software development without thorough requirement analysis faces the same problem amplified by software's invisible, abstract nature.
The requirement analysis phase serves several crucial purposes: it creates a shared understanding between stakeholders and developers, establishes the boundaries of what the system will and will not do, provides the basis for project estimation and planning, and defines the criteria against which the delivered system will be judged.
Activities in Requirement Analysis
Requirements Elicitation gathers information from all relevant sources. This involves stakeholder interviews (structured conversations with users, managers, domain experts), questionnaires (collecting input from large user populations), observation (watching users perform current tasks to understand workflows), document analysis (reviewing existing system documentation, business procedures, and regulations), and workshops (facilitated sessions bringing multiple stakeholders together to discuss needs).
Requirements Analysis examines gathered information for completeness, consistency, and feasibility. Are any requirements contradictory? Are there gaps where certain scenarios are not addressed? Are any requirements technically impossible within the project constraints? This activity often reveals conflicts between different stakeholders' needs that must be resolved through negotiation.
Requirements Specification documents analyzed requirements in a formal, structured format. The Software Requirements Specification (SRS) document is the primary output, containing functional requirements (what the system does), non-functional requirements (performance, security, usability constraints), and interface requirements (how the system interacts with users, hardware, and other systems).
Requirements Validation confirms that documented requirements accurately reflect stakeholder needs. Techniques include formal reviews (stakeholders read and approve the SRS), prototyping (building mockups to validate understanding), and test case derivation (writing acceptance tests from requirements—if you cannot test a requirement, it is probably not well-specified).
Requirement Types
Functional Requirements describe what the system must do:
- "The system shall allow users to search products by name, category, or price range"
- "The system shall send email confirmation within 30 seconds of order placement"
- "The system shall calculate shipping costs based on weight, destination, and selected carrier"
Non-Functional Requirements describe how well the system performs:
- Performance: "Search results shall be returned within 2 seconds for up to 1 million products"
- Security: "All user passwords shall be stored using bcrypt with a work factor of 12"
- Availability: "The system shall maintain 99.9% uptime during business hours"
- Usability: "New users shall be able to complete a purchase without training"
Constraints limit design choices:
- "The system must run on the existing Oracle database infrastructure"
- "Development must use Java per corporate technology standards"
- "The system must comply with PCI-DSS for payment processing"
Real-World Example: University Course Registration System
A university needs a new course registration system. Here is how requirement analysis proceeds:
Elicitation: The team interviews students, professors, academic advisors, the registrar's office, and IT administrators. They observe the current paper-based registration process during peak enrollment periods. They review university policies on prerequisites, course capacity, and enrollment priorities.
Analysis reveals conflicts: Students want instant enrollment confirmation, but the registrar needs to verify prerequisites manually for transfer students. Professors want to control their class size, but the administration wants to maximize enrollment. These conflicts require stakeholder negotiation to resolve.
Key requirements documented:
- Students can search available courses by department, time slot, or keyword
- The system enforces prerequisite chains automatically for courses within the university
- Transfer student prerequisites require manual advisor approval within 48 hours
- Course waitlists automatically enroll students when spots open, in priority order
- Professors receive enrollment notifications when their courses reach 80% capacity
- The system handles 5,000 concurrent users during peak registration without degradation
Tools and Techniques
Use Case Diagrams visualize system boundaries and actor interactions at a high level. Each use case represents a goal a user accomplishes through the system.
User Stories capture requirements from the user's perspective: "As a student, I want to see my complete degree progress so that I know which courses I still need to take."
Decision Tables clarify complex business rules with multiple conditions and outcomes, ensuring every combination is addressed.
State Diagrams model entities that change state over time, like an order progressing from placed → paid → shipped → delivered.
Data Flow Diagrams show how information moves through the system, helping identify all processing, storage, and external interface requirements.
Common Pitfalls
Ambiguous language: Requirements like "the system should be fast" or "user-friendly interface" are untestable. Every requirement should be specific enough that you can write a test to verify it.
Gold plating: Including features that are nice to have but not actually needed inflates project scope and cost. Disciplined prioritization (MoSCoW method: Must have, Should have, Could have, Won't have) helps maintain focus.
Missing stakeholders: Failing to involve all affected parties leads to requirements gaps discovered during testing or deployment when they are expensive to address.
Premature design: Requirements should describe what the system does, not how it does it. "The system shall store data in a MySQL database" is a design decision masquerading as a requirement. The actual requirement might be "The system shall store customer data reliably with recovery capability."
Deliverables
The primary deliverable is the Software Requirements Specification (SRS), but the phase also produces use case documents, data dictionaries, interface specifications, and acceptance test criteria. These documents serve as the contract between stakeholders and the development team and as the baseline against which the completed system is validated.
Exam Focus
Revise definitions, diagrams, examples, and short-answer points for Requirement Analysis Phase.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Software Engineering topic.
Search Terms
software-engineering, software engineering, software, engineering, development, life, cycle, requirement
Related Software Engineering Topics