Chapter -2
Software Requirement Analysis
Overview
• What is Software Requirement Analysis?
– Software Requirement Analysis is the process of identifying,
documenting, and verifying the requirements of a software
system.
– Key Activities: Eliciting, analyzing, documenting, and
validating requirements.
– Importance: Crucial phase in software development, ensuring
that the final product meets user needs and expectations.
– Scope: Encompasses both functional and non-functional
requirements, covering aspects such as features, usability,
performance, and security.
– Outcome: Clear and comprehensive requirements
documentation, serving as the foundation for the entire
Overview
• Importance of Requirement Analysis in Software
Development
– Foundation: Requirement analysis lays the groundwork for
successful software development by defining what needs to be
built.
– Understanding User Needs: Helps in comprehensively
understanding and prioritizing user needs and expectations.
– Cost and Time Savings: Early identification and clarification of
requirements minimize rework and project delays.
– Risk Mitigation: Reduces the risk of project failure by ensuring
that the developed software meets stakeholders' expectations.
– Alignment: Ensures alignment between the software solution and
the business goals and objectives.
– Quality Assurance: Contributes to the development of high-quality
Definition
• Defining Software Requirements
– Definition: Software requirements are detailed
descriptions of the functionalities, features, and
constraints that the software system must adhere
to.
– Purpose: To establish a clear understanding of
what the software is expected to accomplish and
how it should behave.
Definition
• Role of Requirement Analysis in the Software
Development Life Cycle (SDLC)
– Foundation: Requirement analysis serves as the foundation
for the entire software development process.
– Initiation Phase: In the SDLC, requirement analysis initiates
the project by identifying and understanding stakeholders'
needs.
– Planning Phase: It informs project planning, resource
allocation, and scheduling based on the identified
requirements.
– Design Phase: Requirement analysis guides the design
process by defining system functionalities and constraints.
Cont..
• Role of Requirement Analysis in the Software Development
Life Cycle (SDLC)
– Implementation Phase: Developers use the requirements to build
the software according to the specified features and
functionalities.
– Testing Phase: Requirements serve as the basis for creating test
cases and verifying that the software meets stakeholders'
expectations.
– Deployment Phase: The finalized requirements ensure that the
deployed software aligns with user needs and organizational
goals.
– Maintenance Phase: Requirement analysis helps in managing
changes and enhancements to the software over time.
Objective
• Objectives of Software Requirement Analysis
– Understand Stakeholder Needs: Identify and comprehend the
needs, expectations, and goals of all stakeholders involved in the
software project.
– Define System Functionalities: Clearly define the desired
functionalities and features of the software system to be
developed.
– Establish Scope and Constraints: Determine the boundaries,
limitations, and constraints within which the software solution
must operate.
– Prioritize Requirements: Prioritize requirements based on their
importance, criticality, and impact on the overall project success.
Cont..
• Objectives of Software Requirement Analysis
– Manage Expectations: Ensure alignment between
stakeholders' expectations and the capabilities of the
proposed software solution.
– Reduce Risks: Identify potential risks, ambiguities, and conflicts
early in the project lifecycle to mitigate them effectively.
– Facilitate Communication: Promote effective communication
and collaboration among project stakeholders to ensure a
shared understanding of requirements.
– Enable Traceability: Establish traceability between
requirements and other artifacts throughout the software
development process to ensure accountability and
transparency.
Objective
• Key Goals in Analyzing Software Requirements
– Understand User Needs: Gain a comprehensive understanding
of the needs, preferences, and expectations of end-users and
stakeholders.
– Define Functionalities: Clearly define the functionalities,
features, and capabilities that the software system should
deliver to meet user requirements.
– Identify Constraints: Identify and document any constraints,
limitations, or dependencies that may impact the design and
development of the software.
– Prioritize Requirements: Prioritize requirements based on their
importance, urgency, and impact on the success of the project.
Cont..
• Key Goals in Analyzing Software Requirements
– Ensure Feasibility: Evaluate the feasibility of implementing
each requirement within the project's constraints, including
time, budget, and resources.
– Validate Requirements: Validate requirements to ensure they
are accurate, complete, and consistent with stakeholders'
needs and expectations.
– Manage Changes: Establish processes for managing changes to
requirements throughout the software development lifecycle.
– Facilitate Communication: Foster effective communication and
collaboration among project stakeholders to ensure a shared
understanding of requirements and project goals.
The requirements analysis process
• Generally, there are seven steps in the requirements analysis
process.
1. Identify stakeholders. The first step is to pinpoint exactly who
the key stakeholders are for the project. This includes internal
and external customers, users, regulatory agencies, and
stakeholder involved in the development of the product. It is
the stakeholders who are the source of the needs and
requirements the product must fulfill.
2. Elicit stakeholder needs and requirements. During this step of
the requirements analysis process — also called needs and
requirements gathering — teams work with the stakeholders
to identify the latter’s needs and requirements.
Cont..
3. Model needs and requirements.
– With the initial sets of stakeholder needs and
requirements captured, teams can create visual
representations or diagrams of the needs and
requirements as part of their analysis to inform the
definition of the product requirements, use cases, and
user stories.
– These visual representations and diagrams are used to
solicit feedback from stakeholders and to resolve
issues, conflicts, and inconsistencies before defining
and base lining the product requirements.
Cont..
4. Retrospective.
– The project team reviews the data and information
gathered during elicitation, diagraming, and modeling.
– Of particular interest is understanding the drivers and
constraints to better understand the feasibility and risks
associated with developing the product, to assess
whether anything has been missed, and to establish a
budget and schedule.
Cont..
5. Define an integrated set of needs.
– The project team derives an integrated set of stakeholder needs
and requirements that represent the stakeholders’ expectations,
goals, objectives, drivers, and constraints for the product.
6. Define product requirements.
– At this point, teams review the resulting integrated set of needs
and stakeholder requirements and transforms them into a set of
requirements for the product to which the product will be
designed and built.
– It is important that the resulting requirements are high-quality
requirements having the characteristics of well-formed
requirements.
– It’s wise to make sure that all team members know how to write
good requirements.
Cont..
7. Sign-off and baseline.
– The final step of the requirements analysis process is to get
sign-off agreement from all key stakeholders (or
representatives from stakeholder groups) identified in step
one for the integrated set of needs and resulting set of
product requirements.
– This is a formal contract that lets everyone know what the
product will be verified and validated against, the cost, and
the schedule.
– It helps eliminate surprises and scope creep later in the
development process.
Requirement Analysis Techniques
• Interviews: Direct interaction with stakeholders to gather
detailed insights into their needs, preferences, and
expectations.
• Surveys: Collect feedback from a large group of
stakeholders through structured questionnaires to identify
common patterns and trends.
• Workshops: Collaborative sessions involving stakeholders to
brainstorm ideas, clarify requirements, and resolve conflicts.
• Observations: Direct observation of users in their natural
environment to understand their behavior, challenges, and
preferences.
Requirement Analysis Techniques
• Prototyping: Iterative development of prototypes or mockups to
visualize requirements and gather feedback early in the process.
• Use Cases: Scenarios describing interactions between users and
the system to capture functional requirements and user
interactions.
• User Stories: Brief, informal descriptions of user requirements
from the perspective of end-users to prioritize features and
functionalities.
• Requirement Prioritization Techniques: Methods such as
MoSCoW (Must-have, Should-have, Could-have, Won't-have),
Kano model, and pairwise comparison to prioritize requirements
based on their importance and impact.
Identifying Project Stakeholders
• Project stakeholders are any group of people
that can have an influence or can be
influenced by the project.
• After completion, whether the project failed
or succeeded depends on how much the
stakeholders are satisfied.
Cont..
• Primary Stakeholders: Individuals or groups directly impacted
by the software project, such as end-users, clients, and
sponsors.
• Secondary Stakeholders: Entities indirectly affected by the
project, including regulatory bodies, vendors, and support
teams.
• Internal Stakeholders: Individuals within the organization
involved in the project, such as project managers, developers,
and testers.
• External Stakeholders: Individuals or entities outside the
organization, such as customers, suppliers, and third-party
vendors.
Cont..
• Key Decision-Makers: Individuals with authority to make
critical decisions regarding project scope, budget, and
timelines.
• Influencers: Individuals or groups with the ability to influence
project outcomes, such as subject matter experts and industry
leaders.
• Users: End-users who will interact with the software system
directly and whose needs must be addressed during
requirement analysis.
• Support Staff: Individuals responsible for providing ongoing
support and maintenance for the software system post-
[Link] stakeholders:-
Cont..
• Importance of Stakeholder Engagement in Requirement
Analysis
– Enhanced Understanding: Engaging stakeholders ensures a
comprehensive understanding of their needs, preferences, and
expectations regarding the software system.
– Improved Requirements: Stakeholder input leads to more accurate
and relevant requirements, resulting in a software solution that
better aligns with user needs.
– Increased Stakeholder Buy-in: Involving stakeholders in the
requirement analysis process fosters a sense of ownership and
commitment to the project's success.
– Reduced Miscommunication: Direct communication with
stakeholders minimizes the risk of misinterpretation or
misunderstanding of requirements, leading to fewer errors and
rework.
Cont..
• Importance of Stakeholder Engagement in Requirement
Analysis
– Early Issue Identification: Stakeholder engagement facilitates the early
identification of potential issues, conflicts, or ambiguities in
requirements, allowing for timely resolution.
– Effective Prioritization: Collaborating with stakeholders enables the
prioritization of requirements based on their importance, urgency, and
impact on project goals.
– Enhanced Project Transparency: Open communication with
stakeholders promotes transparency throughout the requirement
analysis process, building trust and credibility.
– Continuous Improvement: Feedback from stakeholders enables
continuous improvement of requirements and the overall software
development process, leading to better outcomes.
Requirement Elicitation
• Requirements elicitation is the systematic process
of gathering, analyzing, and documenting
information to define project objectives and
constraints.
• This phase typically involves engaging with
stakeholders to understand their needs,
expectations, and desired outcomes.
• It serves as the foundation for creating
comprehensive and accurate project requirements
that guide the development and implementation
phases.
Requirement Elicitation
• Techniques for Requirement Elicitation
– Interviews: Conduct one-on-one or group interviews with
stakeholders to gather detailed insights into their needs,
expectations, and challenges.
– Surveys: Distribute structured questionnaires to a wide range
of stakeholders to collect feedback on their requirements
and preferences.
– Workshops: Facilitate collaborative sessions with
stakeholders to brainstorm ideas, clarify requirements, and
identify common goals.
– Observations: Observe users in their natural environment to
understand their workflows, pain points, and usage patterns.
Cont..
– Prototyping: Develop interactive prototypes or mockups to
visualize requirements and gather feedback from
stakeholders early in the process.
– Focus Groups: Organize group discussions with stakeholders
to explore specific topics or areas of interest related to the
software project.
– Document Analysis: Review existing documentation, such as
business process documents, user manuals, and technical
specifications, to extract relevant requirements.
– Questionnaires: Administer structured questionnaires or
surveys to stakeholders to gather quantitative data on their
preferences, priorities, and requirements.
Requirements Documentation
• Documenting Software Requirements
– Requirements documentation is the process of
capturing, organizing, and communicating the
functional and non-functional needs of the
software system in a structured format.
– Compile all identified requirements into a
comprehensive document that serves as a
blueprint for the software project.
Requirements Documentation
• Importance of Clear and Detailed Documentation
– Communication: Clear documentation ensures that stakeholders,
including developers, testers, and clients, understand the
requirements effectively.
– Alignment: Detailed documentation aligns the project team's efforts
with the project goals, reducing misunderstandings and deviations
from the intended outcomes.
– Reference Point: Provides a reference point for decision-making,
allowing stakeholders to refer back to the documented requirements
throughout the project lifecycle.
– Validation: Enables stakeholders to validate whether the implemented
features meet the specified requirements and user expectations.
– Risk Mitigation: Reduces the risk of misinterpretation or omission of
critical requirements, minimizing rework and project delays.
Cont..
• Importance of Clear and Detailed Documentation
– Change Management: Facilitates change management
by providing a structured framework for evaluating
and implementing changes to requirements.
– Legal and Regulatory Compliance: Helps ensure
compliance with legal and regulatory requirements by
documenting necessary features, functionalities, and
constraints.
– Knowledge Transfer: Serves as a knowledge repository
for future projects, enabling knowledge transfer and
continuous improvement within the organization.
Requirement Prioritization
• Prioritizing Software Requirements
– Prioritizing software requirements is the process of
systematically organizing and ranking requirements
based on their importance, urgency, and impact on
project success.
– It involves identifying the most critical features and
functionalities to ensure efficient resource allocation
and project delivery.
– Importance of Prioritization: Prioritizing requirements
ensures that limited resources are allocated to the most
critical features and functionalities.
Requirement Validation
• Requirement validation:
– Is the process of ensuring that the documented
requirements accurately reflect the needs and
expectations of stakeholders and are feasible to
implement within the project constraints.
Requirement Validation
• Validating Software Requirements:
– Stakeholder Review: Engage stakeholders to review and validate
the documented requirements to ensure they align with their
needs and expectations.
– Prototyping: Develop prototypes or mockups to demonstrate key
functionalities and gather feedback from stakeholders to validate
requirements early in the process.
– User Acceptance Testing (UAT): Conduct UAT sessions with end-
users to validate whether the implemented features meet their
requirements and usability expectations.
– Requirement Traceability: Trace requirements back to their
sources and forward to design, implementation, and testing
phases to ensure all requirements are accounted for and
implemented correctly.
Requirement Validation
• Validating Software Requirements:
– Peer Review: Involve peers or subject matter experts to review and
validate the documented requirements for accuracy, completeness,
and consistency.
– Requirement Ambiguity Analysis: Analyze requirements to identify
and resolve any ambiguities, contradictions, or inconsistencies that
may lead to misinterpretation or implementation errors.
– Compliance Check: Verify that the documented requirements comply
with relevant standards, regulations, and industry best practices to
ensure legal and regulatory compliance.
– Continuous Feedback Loop: Establish a feedback loop with
stakeholders throughout the requirement validation process to
address any issues or concerns promptly and ensure ongoing
alignment with project goals.
Types of Requirements
• The main types of software requirements can
be classified into two types:
1. Functional requirements
2. Non-functional requirements
Types of Requirements
• Functional Requirements:
– Functional requirements specify the specific
functionalities, features, and interactions that the
software system must perform to meet the needs of
end-users and stakeholders.
• Characteristics:
– Describes what the system should do.
– Focuses on behaviors and actions.
– Defines the inputs, outputs, and processing logic of
the system.
Types of Requirements
• Functional Requirements:
Example:
• User Authentication:
– Users must be able to register for an account with a
valid email address and password.
– Registered users must be able to log in using their
credentials securely..
Types of Requirements
• Functional Requirements:
Example:
• Search Functionality:
– Users should be able to search for products by keyword, category,
or other filters.
– The search results should be displayed in a clear and organized
manner.
• Data Input and Validation:
– Users must provide required information when submitting a form,
such as name, address, and payment details.
– The system should validate input data to ensure accuracy and
completeness, displaying error messages for invalid entries.
Types of Requirements
• Functional Requirements:
Example:
• Order Processing:
– Users should be able to add items to their shopping cart, update
quantities, and proceed to checkout.
– Upon successful payment, users should receive an order
confirmation email with details of their purchase.
• Reporting Functionality:
– Administrators must be able to generate sales reports by date
range, product category, or customer demographics.
– Reports should be exportable in various formats, such as PDF or
CSV, for further analysis.
Types of Requirements
• Non-Functional Requirements:
– Non-functional requirements define the quality
attributes, performance metrics, and constraints that
govern the behavior and performance of the software
system.
• Characteristics:
– Describe how the system should behave.
– Focus on system attributes rather than specific
functionalities.
– Influence the overall user experience and system
performance.
Types of Requirements
Categories of Non-Functional Requirements
• Reliability:
– Defines the system's ability to perform consistently and
predictably under normal and abnormal conditions.
– Examples: Mean Time Between Failures (MTBF), fault
tolerance, recovery mechanisms.
• Performance:
– Specifies the system's responsiveness, throughput, and
resource utilization under varying workload conditions.
– Examples: Response time, throughput, scalability,
efficiency
Types of Requirements
Categories of Non-Functional Requirements
• Usability:
– Focuses on the ease of use, learnability, and user satisfaction
with the system's interface and interactions.
– Examples: User interface design, accessibility, user training
requirements.
• Security:
– Addresses the protection of data, resources, and functionalities
from unauthorized access, breaches, and malicious activities.
– Examples: Authentication, authorization, encryption, audit trails.
Types of Requirements
Categories of Non-Functional Requirements
• Scalability:
– Describes the system's ability to handle increasing workload, data
volume, and user concurrency without significant performance
degradation.
– Examples: Horizontal scalability, vertical scalability, load balancing.
• Maintainability:
– Refers to the ease of modifying, updating, and extending the
system to accommodate changes and enhancements over time.
– Examples: Code readability, modularity, documentation, version
control.
Ended
Quiz
• Describe types of requirements that may be
placed on a system. Give examples of each of
these types of requirements.