Software Engineering
(303105253)
Requirements Engineering
Requirements Engineering in software engineering is a crucial
process that focuses on eliciting, documenting, analyzing, and
validating requirements for software systems.
It is a systematic approach to defining what the software
should do and how it should behave, ensuring that the final
product meets the needs and expectations of stakeholders.
The key aspects and activities involved in Requirements
Engineering:
Image source : Google
Problem Recognition
Problem recognition in Requirements Engineering is the initial
phase.
This phase is critical because it sets the stage for the entire RE
process by clarifying the goals and scope of the software project.
Here’s how problem recognition typically unfolds in
requirement engineering.
Identifying Stakeholders: The process begins by identifying all
stakeholders who are involved or impacted by the software
system. Stakeholders can include end-users, customers,
managers, domain experts, regulatory bodies, and others who
have a vested interest in the software.
Image source : Google
Cont….
Understanding Current Issues: Analysts and stakeholders
collaborate to understand the current problems, deficiencies, or
opportunities that require addressing through the software system.
This involves gathering feedback, conducting interviews, and
analyzing existing systems or processes.
Gathering Requirements: Based on the identified issues or
opportunities, requirements are elicited from stakeholders. This
involves capturing both functional requirements and non-functional
requirements.
Defining Goals and Objectives: Clear goals and objectives for the
software project are established. These goals should be specific,
measurable, achievable, relevant, and time-bound providing a
clear direction for the development effort.
Image source : Google
Cont….
Prioritizing Requirements: Requirements are prioritized based on
their importance to stakeholders and their impact on achieving
project goals. This helps in focusing development efforts on the
most critical and high-value features.
Identifying Constraints and Assumptions: Analysts also identify
any constraints and assumptions that could affect the development
and implementation of the software system.
Documenting the Problem Statement: The culmination of
problem recognition is often a formal document known as the
Problem Statement or Project Initiation Document. This document
outlines the context of the project, the identified issues or
opportunities, the goals and objectives, and the initial set of
requirements to be addressed.
Image source : Google
Requirement Engineering tasks
Requirements Elicitation: This involves gathering requirements
from stakeholders. Techniques such as interviews, workshops,
surveys, and observations are used to capture the needs and
expectations of users, customers, and other relevant parties.
Requirements Analysis: Once requirements are collected, they
need to be analyzed to ensure they are clear, complete, consistent,
and feasible. This involves refining requirements, identifying
dependencies, and resolving conflicts or ambiguities.
Requirements Specification: Documenting requirements in a
formal and structured manner. This includes creating artifacts such
as use cases, user stories, functional and non-functional
requirements, system models, and prototypes to describe what the
software should do and how it should behave.
Image source : Google
Cont….
Requirements Validation: Ensuring that the specified requirements
meet the needs of stakeholders and are technically feasible.
Validation involves checking requirements for correctness,
consistency, and completeness through techniques such as reviews,
prototyping, simulations, and demonstrations.
Requirements Management: Managing changes to requirements
throughout the software development lifecycle. This involves
maintaining traceability of requirements, establishing baselines,
controlling changes, and ensuring that all stakeholders are informed
about the status and evolution of requirements.
Image source : Google
Cont….
Requirements Communication: Effectively communicating
requirements to all stakeholders, including developers, testers,
project managers, and customers. Clear and unambiguous
communication helps ensure that everyone understands what needs
to be built and how it should function.
Requirements Negotiation: Resolving conflicts and prioritizing
requirements when stakeholders have different needs or priorities.
Negotiation ensures that compromises are made when necessary to
achieve consensus and balance competing interests.
Requirements Traceability: Establishing and maintaining
traceability links between requirements and other artifacts such as
design documents, test cases, and implemented code. Traceability
helps ensure that all requirements are properly implemented and
tested.
Image source : Google
Cont….
Requirements Documentation Management: Managing the
documentation of requirements throughout their lifecycle, ensuring
that documents are kept up-to-date, accessible, and organized. This
includes version control and ensuring that changes to requirements
are properly documented and communicated.
Requirements Evolution: Recognizing that requirements may
change over time due to various factors such as new insights,
stakeholder feedback, or changes in the business environment.
Managing requirements evolution involves being responsive to
changes while maintaining project stability and alignment with
project goals.
Image source : Google
Requirement Engineering Processes
The Requirements Engineering process is a systematic approach
used in software engineering to ensure that software systems meet
the needs and expectations of stakeholders.
It involves several interconnected activities that are performed
iteratively throughout the software development lifecycle.
1. Requirements Elicitation
Goal: Gather and collect requirements from stakeholders.
Activities: Conduct interviews, workshops, surveys, and
observations to understand stakeholders' needs and expectations.
Outputs: Requirements elicitation document, stakeholder
requirements, user stories, use cases, etc.
Image source : Google
Cont…
2. Requirements Analysis
Goal: Analyze and refine gathered requirements for clarity,
completeness, consistency, and feasibility.
Activities: Review and prioritize requirements, identify
dependencies, and resolve conflicts or ambiguities.
Outputs: Refined requirements document, prioritized
requirements list, requirements models (e.g., use case
diagrams, activity diagrams).
Image source : Google
Cont…
3. Requirements Specification
Goal: Document requirements in a clear, unambiguous, and
structured manner.
Activities: Write detailed descriptions of functional and non-
functional requirements, create system models (if applicable),
and validate with stakeholders.
Outputs: Requirements specification document, system
models (e.g., class diagrams, sequence diagrams), prototype
(if used for validation).
Image source : Google
Cont…
4. Requirements Validation
Goal: Ensure that the specified requirements are correct,
consistent, complete, and feasible.
Activities: Validate requirements through reviews,
walkthroughs, prototyping, simulations, and demonstrations.
Outputs: Validated requirements document, feedback from
stakeholders, identified changes or refinements.
Image source : Google
Cont…
5. Requirements Management
Goal: Manage changes to requirements throughout the software
development lifecycle.
Activities: Establish baselines for requirements, manage version
control, track changes, and ensure traceability between
requirements and other project artifacts.
Outputs: Baseline requirements document, traceability
matrix, change requests and impact analysis.
Image source : Google
Cont…
6. Requirements Communication
Goal: Ensure that requirements are clearly communicated to all
stakeholders.
Activities: Present requirements in formats understandable to
different stakeholders (e.g., technical specifications for
developers, user stories for users), conduct meetings and status
updates.
Outputs: Updated project documentation, meeting minutes,
communication plans.
Image source : Google
Cont…
7. Requirements Traceability
Goal: Maintain traceability links between requirements and
other project artifacts.
Activities: Establish and manage traceability matrices, ensuring
that every requirement is traced to design elements, test cases,
and implemented code.
Outputs: Traceability matrix, reports on traceability
coverage, updated documentation.
Image source : Google
Cont…
8. Requirements Evolution
Goal: Manage changes in requirements over time.
Activities: Track changes in stakeholder needs, analyze impacts
on existing requirements and project scope, prioritize and
implement changes.
Outputs: Updated requirements documentation, change
requests, revised project plans
Image source : Google
Software Requirement Specifications
A Software requirement specification (SRS) is a document
that mentioned complete description about how the system is
expected to perform, behavior of system, functional and non-
functional requirements of the system.
SRS is a formal report, that enables the customers to review
whether it (SRS) is according to their requirements.
It is usually signed of at end of requirements engineering
phase.
User of SRS
1. Client
2. Development Team
3. maintenance team
4. technical Writers
Image source : Google
Need of SRS Document
It structures and formalizes all project requirements.
It helps the development team build a product that exactly
meets customer and target audience needs.
It provides all team members with the necessary information
while working on the project.
It minimize the possible misunderstanding between the
members of the development team and the customer.
It clearly define the scope of work, and that allows
developers to plan particular iterations and release dates.
It allows estimating the required development budget.
Image source : Google
Structures of SRS
1. Introduction 3. System features and requirements
1.1 Purpose 3.1 Functional requirements
1.2 Intended Audience 3.2 Use cases/ sequence diagram
1.3 Scope 3.3 External Interface requirements
1.4 Definition 3.4 Database requirements
1.5 References 3.5 References
3.6 Non-functional requirements
2. Overall Description 4. Delivery for approval
2.1 User Interface
2.2 System Interface
2.3 Software & Hardware requirements
2.4 Constraints
2.5 User Characteristics
Image source : Google
Characteristics of good SRS
1. Correctness: provide accurate functional and non-functional
requirements as discussed with client.
2. Completeness: Should complete all essential features like
functionality, performance, features, design, constraints &
external interfaces.
3. consistency: Same abbreviation, tabular format, diagram
format, naming format follow.
4. Unambiguousness: Should not be any confusion regarding
understanding of the requirements. Everything mentioned
uniquely and clearly.
5. Ranking for importance and stability: Every requirement is
important. But some are urgent and must be fulfilled before
other requirements and some could be delayed. It’s better to
classify each requirement according to its importance and
stability Image source : Google
Characteristics of good SRS
6. Modifiability: It is capable of quickly obtain changes to the
system without affecting other.
7. Verifiability: the requirements are verified with the help of
reviewers & stakeholders.
8. Traceability : Every requirements having unique number that
is easy to use in future development.
9. Design Independence: There should be an option to select
from multiple design alternatives for the final system. SRS
should not contain any implementation details.
10. Testability: An SRS should be written in such a method that it
is simple to generate test cases and test plans from the report.
11. Understandable by the customer: The language should be
kept simple and clear.
Image source : Google
Use cases and Functional specification
https://www.slideshare.net/slideshow/uc-
workshop-v2/41862983
Requirements validation
What is Requirements Validation?
The process of checking that the requirements accurately reflect
the needs of the stakeholders.
Ensures the software meets user expectations, prevents costly
rework, and improves overall project success.
Objectives of Requirements Validation
1. Ensure requirements are complete, consistent, unambiguous,
and verifiable.
2. Identify and resolve errors, inconsistencies, and omissions
early in the development process.
3. Improve stakeholder confidence in the project.
Image source : Google
Cont…
Requirements Validation Techniques
1. Reviews and Inspections
2. Prototyping
3. Test Case Generation
4. Modeling and Simulation
Challenges in Requirements Validation
1. Difficulty in defining complete and accurate requirements.
2. Stakeholder involvement and collaboration.
3. Balancing cost and quality.
4. Evolving requirements
Image source : Google
Cont…
Best Practices for Requirements Validation
1. Involve stakeholders early and continuously.
2. Use multiple validation techniques.
3. Document validation activities.
4. Iterative and incremental approach.
5. Prioritize requirements for validation
Image source : Google
Requirements Analysis
Image source : Google
Cont..
Image source : Google
Cont..
Image source : Google
Cont..
Image source : Google
Cont..
Image source : Google
Cont..
Image source : Google
Cont..
Image source : Google