0% found this document useful (0 votes)
6 views109 pages

Lecture 04 RE

Requirements engineering is a critical process in software development that involves systematically determining what a software product should achieve and ensuring it meets stakeholder needs. It encompasses elicitation, analysis, specification, and validation of requirements, which serve as a foundation for all subsequent development activities. Effective requirements engineering helps prevent project failures due to unclear or unstable requirements, ultimately leading to the successful delivery of quality software on time and within budget.

Uploaded by

Aatika
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views109 pages

Lecture 04 RE

Requirements engineering is a critical process in software development that involves systematically determining what a software product should achieve and ensuring it meets stakeholder needs. It encompasses elicitation, analysis, specification, and validation of requirements, which serve as a foundation for all subsequent development activities. Effective requirements engineering helps prevent project failures due to unclear or unstable requirements, ultimately leading to the successful delivery of quality software on time and within budget.

Uploaded by

Aatika
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 109

Requirement

Engineering

by

Dr. Rizwan
Software Requirement

 The hardest single part of building a software system


is deciding what to build….
 No other part of the work so cripples the resulting
system if done wrong.
 No other part is more difficult to rectify later.
 Requirements form the basis for all software products
 Requirements engineering is the process, which
enables us to systematically determine the
requirements for a software product.
Software Requirement

 Something required, something wanted or needed –


Webster’s Definition
 There is a huge difference between wanted and
needed and it should be kept in mind all the time.
 “A condition or capability that must be met or
possessed by a system...to satisfy a contract,
standard, specification, or other formally imposed
document” – IEEE Definition

3
4

To achieve done right and managed


right, software development must start
with a clear set of software
requirements, which are later planned,
designed, implemented, and tested.
Software Requirement

 Software Requirement stimulates what must be


 Accomplished,
 Transformed,

 Produced or Provided

 Software Requirement is a capability that must be met or


possessed by a software in order to satisfy a contract, standard,
or specification
 The source of these Requirements could come from
 Client/Customer
 Buyers,
 Users/End user, or system specifications

5
Requirement
Can be
functionality
constraint

 A condition or capability that must be met or possessed by a


system...tosatisfy a contract, standard, specification, or other formally
imposed document.
IEEE Std729
Requirement

How? the
System
system
Property or
should
Attributes
behave

Constraint on
What?
the
should be
development
implemented
process
Requirement
Need and Want

 Something required, something wanted or needed


 There is a huge difference between wanted and needed and it should be
kept in mind all the time
 Need‐ something you have to have
 Want ‐something you would like to have

8
Requirements Engineering
 The hardest single part of building a software system is
deciding what to build… No other part of the work so
cripples the resulting system if done wrong. No other part
is more difficult to rectify later.

 One of the two most common causes of runaway projects is


unstable requirements

9
Requirement Engineering Vs
Architecture and Design

 Requirements specify what a system must do.


 Requirements engineering is the process of eliciting
stakeholder needs and desires and developing them into an
agreed-upon set of detailed requirements that can serve as a
basis for all subsequent development activities.
 Architecture describes how a system will be organized and
how it will behave in order to fulfill these requirements.
 Requirements describe the problem and architecture
describes the high-level solution.
Types of Requirements

 Functional requirements
 Non-Functional requirements
 Domain requirements
 Business Requirements
 UI Requirements
 Inverse Requirements
 Design and Implementation Constraints

11
Functional and Non-Functional Requirements

 Functional requirements
 Statements of services the system should provide, how
the system should react to particular inputs and how the
system should behave in particular situations.
 May state what the system should not do.
 Functional system requirements should describe the
system services in detail.
 Customers and developers usually focus all their
attention on functional requirements

12
Functional Requirements

 Abnormal behavior is also documented as functional


requirements in the form of exception handling
 In practice, it is impossible to produce a complete and
consistent requirements document
 Incomplete and ambiguous requirements are open to multiple
interpretations and assumptions
 This can lead to the development of poor quality, or faulty,
software products

13
Non-functional Requirements
 Constraints on the services or functions offered by the
system such as timing constraints, constraints on the
development process, standards, etc.
 Often apply to the system as a whole rather than individual
features or services.
 These define system properties and constraints e.g.
reliability, response time and storage requirements.
Constraints are I/O device capability, system
representations, etc.
 Process requirements may also be specified mandating a
particular IDE, programming language or development
method.

14
Non-Functional Requirements

 Non-functional requirements may be more critical than


functional requirements. If these are not met, the system
may be useless.
 Most non-functional requirements relate to the system as a
whole
 They include constraints on timing, performance,
reliability, security, maintainability, accuracy, the
development process, standards, etc.

15
Non-Functional Requirements
 They are often more critical than individual functional
requirements
 Capture the emergent behavior of the system, that is they relate to
system as a whole
 Failure to meet a non-functional system requirement may make
the whole system unusable
 If an aircraft system does not meet reliability requirements, it will
not be certified as ‘safe’
 If a real-time control system fails to meet its performance
requirements, the control functions will not operate correctly
 Non-functional requirements may arise through user needs,
because of Budget constraints, organizational policies, need of
interoperability with other software and hardware systems,
external factors such as safety regulations, privacy legislation,
etc.
16
Non-Functional Requirements

 Non-functional requirements are sometimes written as


general goals, which are difficult to verify
 They should be expressed quantitatively using metrics
(measures) that can be objectively tested
 Example of a Goal (unverifiable)
 The system should be easy to use by experienced
controllers and should be organized in such a way
that user errors are minimized
 Example of an NFR (verifiable)
 Experienced controllers shall be able to use all the
system functions after a total of two hours’ training.
After this training, the average number of errors made
by experienced users shall not exceed two per day
17
Metrics for Non-Functional Requirements
 Speed
Processed transactions/second
 Response time
 Screen refresh time
 Robustness
 Time to restart after failure
 Percentage of events causing failure
 Probability of data corruption on failure
 Number of function points
 Ease of use
 Training time
 Number of help frames
 Number of target systems

18
Metrics for Non-Functional Requirements

 Reliability
 Mean time to failure
 Probability of unavailability
 Rate of failure occurrence
 Availability
 Portability
 Percentage of target-dependent statements
Software Requirement Types
User Requirement vs.
System Requirement
 User requirements
 Statements in natural language plus diagrams of the services the
system provides and its operational constraints. Written for
customers.

 System requirements
 A structured document setting out detailed descriptions of the
system’s functions, services and operational constraints. Defines
what should be implemented so may be part of a contract
between client and contractor.
Stakeholders

 Any person or organization who is affected by the system


in some way and so who has a legitimate interest

 Stakeholder types
 End users

 System managers

 System owners

 External stakeholders
Software Engineering: Goal

 GOAL: to develop quality software—on time and on


budget—that meets customers' real needs
 A software is good if it MEETS STAKEHOLDERS
EXPECTATIONS: (?)
 However, stakeholders are different!
 Then?
 it should be(at least) correct, reliable, maintainable, user-
friendly …
 the total cost it incurs over all phases of its life cycle
should be minimal and within the budget
Role of Requirements: A Contract
 The set of requirements constitute a contract
between the client and the software developer
 Software requirement documents are the medium
used to communicate user requirements to
technical people responsible for developing the
software.
 Requirement documents should emphasize user
behavior and activities.
 Serves as a basis for project planning (schedule,
budget)
 Requirements document is used both to drive the
design stage, and as a basis for test planning.
Reality

 31.1% of computer software projects get canceled


before they are completed,
 52.7% will overrun their initial cost estimates by
189%.
 94% of project start-ups are restarts of previously
failed projects.
The Root Causes of Project Failure/Success

 The Three Largest Problems in Software Industry:


 Lack of user input: 13 percent of all “challenged”
projects
 Incomplete requirements and specifications: 12 percent
of all “challenged” projects
 Changing requirements specifications: 12 percent of all
“challenged” projects
 The Three Primary Success Factors:
 User involvement: 16 percent of all successful projects
 Executive management support: 14 percent of all
successful projects
 Clear statement of requirements: 12 percent of all
successful projects
High Cost of Requirements Errors

If a unit cost of one is


assigned to the effort
required to detect and repair
an error during the coding
stage ….
Why Engineer Requirement

 Insufficient user involvement


 Creeping user requirements
 Ambiguous requirements
 Gold plating
 Minimal specification
 Overlooked user classes
Why Engineer Requirement

29
Why Engineer Requirement
30
Why Engineer Requirement
 The requirements are how we communicate
 They are the only part that everyone understand

CUSTOMER

USER DEVELOPER

Requirements
Why Engineer Requirement
Why Engineer Requirement
Causes of the failed projects

Incomplete requirements

Lack of user involvement

Lack of resources

Unrealistic expectations

Lack of executive support

Changing requirements

Lack of planning

System no more needed

10% 20%
 Inconsistent and incomplete requirements are the most frequent causes of the system
problems
Why Engineer Requirement
 Wicked problems
 Most large software systems address wicked problems
 Problems which are so complex that they can never be
fully understood and where understanding evolves during
the system development
 Therefore, requirements are normally both incomplete and
inconsistent
Why Engineer Requirement

 Requirement engineering is the basic building block of any


project
 If requirements are not engineered software can have:
 Errors due to incomplete requirements
 Errors due to lack of involvement of users
 Cost of rectifying errors
Why Engineer Requirement

36
Why Engineer Requirement

 Stakeholders don’t know what they really want


 Requirements expressed in domain specific terms
 Different stakeholders may have conflicting
requirements
 Organizational and political factors may influence the
system requirements
 The requirements change during the analysis process
 New stakeholders may emerge
 The business environment may change
37
Why Engineer Requirement

 To identify the right product, you have to understand the needs


of your clients and users, not just the wants.
 What is a problem they need to solve?
 What are the tasks they need to do?
 Who will use this software and how will the user interact with
it?
 When you can answer these questions, you will help your
development team build the right product.

38
Without Requirement Engineering
After Requirement Engineering
Requirements Engineering Process

 Elicitation: work with the customer on gathering


requirements
 Analysis: process this information to understand it,
classify in various categories, and relate the customer
needs to possible software requirements
 Specification: Structure the customer input and
derived requirements as written documents and
diagrams
 Validation: you’ll ask your customer to confirm that
what you’ve written is accurate and complete and to
correct errors.
Feasibility Study
 A feasibility study decides whether or not the proposed system is
worthwhile based on information collection, information
assessment and report writing
 The study checks if the system
 contributes to organizational objectives
 can be engineered using current technology and within budget
 can be integrated with other systems that are used
 Questions for people in the organization
 What if the system wasn’t implemented?
 What are current process problems?
 How will the proposed system help?
 What will be the integration problems?
 Is new technology needed? What skills?
 What facilities must be supported by the proposed system? 43
Feasibility Study: Analysis Techniques

 IF-Then Analysis: If-Then Analysis is a decision-making


technique that involves evaluating different scenarios and their
potential outcomes based on certain conditions.
 Root Cause Analysis (RCA): It is a method used to
identify the core problem behind an issue or failure. The goal is
to address the actual cause of a problem rather than its
symptoms.
 Cost-Benefit Analysis (CBA): This technique is used to
determine the potential benefits of a project or decision
compared to its costs. The results can be used to decide
whether to undertake an initiative.
Feasibility Study: Analysis Techniques

 SWOT Analysis: This is a strategic planning tool used to


evaluate the Strengths, Weaknesses, Opportunities, and Threats
involved in a project or business venture.
 PESTEL Analysis: It is a framework used to analyze the
macro-environmental factors affecting an organization or
business. The factors are Political, Economic, Social,
Technological, Environmental, and Legal.
 Value Chain Analysis: This technique analyzes the activities
that go into delivering a product or service. The goal is to
understand where value is added in the process and how to
maximize it.
Feasibility Study: Analysis Techniques

 Gap Analysis: This is used to identify the difference


between the current state and the desired future state of a
process or system. It helps organizations decide on the
necessary steps to bridge that gap.
 Risk Analysis: A process used to understand the
uncertainties in achieving program objectives. It identifies
potential risks and assesses the potential impact of those risks.
Requirements Engineering Process
Requirement Engineering

 The description of the services and constraints are


the requirements for the system and
 The process of
 Finding out,
 Analyzing,
 Documenting and
 Checking these services and Constraints are called
Requirements Engineering.”

Ian Sommerville
Requirement Engineering (Cont.)

 The process of establishing the services that a customer


requires from a system and the constraints under which it
operates and is developed.

 The system requirements are the descriptions of the


system services and constraints that are generated during
the requirements engineering process.

49
Requirement Engineering Process

 RE involves:
 Identification of user requirements,
 Analysis of the requirements to drive additional requirements,
 Documentation of the requirements as a specification
 Validation of the documented requirements against user
needs, as well as processes that support these activities.
Requirement Engineering Process
Requirement Engineering Process

 Software Requirement Elicitation


 In reality these processes cannot be performed
sequentially.
 Instead all phases are intertwined and performed
repeatedly.
Software Requirement Elicitation

 The process through which the customers, buyers


or the users of software system discover, reveal,
articulate and understanding their requirements
 Software Requirements Elicitation is any activity
that has as its objectives to:
 Identifying
 Gathering
 Determining
 Formulating
 Extracting
 Exposing
Difficulties in Requirement Elicitation

 The process of elicitation of requirements is a difficult process.


 No single person has the complete picture.
 Work effectively as a coherent group.
 The following are some common difficulties associated with this
process:
 Articulation Problems
 Expression/ Communication
 Articulation problems can occur because the users are usually
experts in their application domain but not in the process of
engineering software.
 Additionally, the engineers are experts in development and not
in the users application domain.
 This problem is magnified by the users and developers having
different vocabulary, terms, and concepts
Difficulties in Requirement Elicitation

 Articulation of the users needs


 The users may not be aware of their needs
 Users who are unwilling to prioritize and make tradeoffs
 The users may be aware of needs but be afraid to articulating it
 Users and developers misunderstand concepts or relationships
 User cannot make up their minds
 No single person has complete picture
 Developers may not really be listening to the users
Difficulties in Requirement Elicitation

 Articulation of the users needs


 Developer may fail to understand, appreciate, or relate to the
users
 Developers who are not skilled in listening
 Developers who are dominating in their approach to
elicitation
 Developers who are solution not problem orientated
Difficulties in Requirement Elicitation

 Communication Barriers
 Communication is not a single direction information flow
 Users and developers come from different worlds and have
different professional vocabularies
 The users have different concerns from those of developers
 Medium of communication-Natural language are inherently
ambiguous
 People involved are different-some are submissive, some
are assertive
 There are different value system among people
Difficulties in Requirement Elicitation

 Problem Complexity
 The complexity of modern software system makes the
process of requirements elicitation extremely difficult.
 These systems have interconnections between subsystems
and environments that even expert in specialized disciplines
have difficulty understanding.
 Nature of Requirements
 Requirements change and migrate
 Users learn and grow
 Requirements are diverse and conflicting
 Multiple views can be difficult to integrate
 Requirements can be difficult to evaluate.
Difficulties in Requirement Elicitation

 Knowledge and Cognitive Limitations


 Tunnel vision
 User and Developers don’t have adequate domain
knowledge
 No person has perfect memory
 Interpretation of statistics
 Problem simplification and ignoring part of the problem
because of complexity
 Some people are uncomfortable or impatient with
exploration
Difficulties in Requirement Elicitation
 Human Behavioral Issues
 Elicitation is a social process
 Everyone (users) assumes that it is not his/her responsibility to
tell the developers
 Developer may assume that user will give the information
 User may assume that developer will ask appropriate questions
 Expectation and /or fears from proposed system
 Technical Issues
 Obsolete requirement by the time the elicitation process is
completed
 Software and hardware technologies (corporate management,
government regulations, sales and marketing department)
 Unprecedented system
Requirement Elicitation Techniques

 Joint Application Development (JAD)


 Quality Function Deployment (QFD)
 Adaptive Loops Framework
 Prototyping
 Contextual Inquiry
 Critical Success Factors Analysis
 Brainstorming
 Interviewing
 PIECES framework
 Performance information and data, Economy
Control, Efficiency, and services
Requirement Engineering Process
 Software Requirement Analysis
 The process of reasoning about the requirements that
have been elicited .
 Involves examining requirements for conflicts or
inconsistencies, combining related requirements, and
identifying missing requirements
 Software Requirements Analysis is any activity that has
as its objective to
 Organize,

 Interpret,

 Understand,

 Classify, or assess feasibility,

 Completeness, or consistency of software requirements.


Analysis

Analysis Phase
Involves great detail
what the information system needs to accomplish
In order to provide the organization
with the desired benefits.
Analysis
 Analysis means looking into the problem,
investigating.
 Its purpose is to understand the business
requirements “WHAT” through problem domain
understanding so as to suggest solution in
accordance to user requirements.
 This is only possible when analysis is brought under
consideration.
 Be sure you really understand problem!
 Refine, simplify, clarify, think. Repeat.
 Decompose it into sub-problems
 First ideas are NEVER the best ones.
Analysis

Analysis Phase involves:


 gather information,
 define system requirements,
 prioritize requirements,
 prototype for feasibility and discovery,
 generate and evaluate alternatives, and
 review recommendations with management.
Output of Requirements Analysis

 Software Requirements Specification (SRS) is the


direct result of a requirement analysis
 A SRS is a document that enlists all necessary
requirements for project development.
 To derive the requirements we need to have clear
and thorough understanding of the domain and the
product to be developed.

66
Why Analyze Software

 Stakeholders don’t know what they really want


 Requirements expressed in domain specific terms
 Different stakeholders may have conflicting
requirements
 Organizational and political factors may influence the
system requirements
 The requirements change during the analysis
process
 New stakeholders may emerge
 The business environment may change

67
Why Analyze Software

 Complexity
 Due to larger size of software

 Problem domains (areas) tend to have poorly defined


BOUNDARIES.
 Problem domain solutions usually require
INTERDISCIPLINARY knowledge and skills.
Why Analyze Software

 The STARS radar display terminals for the US air


traffic control system.
 Old system has knobs to adjust the display, and
ABC keyboard.
 New system has color display, pull down menus, and
a QWERTY keyboard. Controllers found it very
difficult (and dangerous) to use the new terminals.
 Ear rings,Ring or POLO
Requirement Engineering Process

 Software Requirement Specification


 The process of recording the requirements in one or
more forms, including natural language and formal,
symbolic, or graphical representations
 Software Requirements Specification is any activity
that has as its objective to capture a description of the
software requirements
 Usually the final form of this description is a software
requirements specification (SRS).
Requirement Engineering Process

 Software Requirement Specification Document


 SRS (Software Requirement specification)
 The official statement of what is required by the system
developers
 The goal of the SRS is to describe all externally observed
behaviors and characteristics expected of the software
system
 Includes user requirements and system requirements
 Standards for SRS
 RUP

 IEEE

 Ian Summerville
Requirement Engineering Process

 Characteristics of SRS
 Correct
 All requirements stated in the SRS are one that the

software shall meet.


 Unambiguous
 Every requirement stated in the SRS only has one

logical interpretation.
Characteristics of SRS

With requirement engineering


Without requirement engineering

The system must The user-interface shall


be user friendly. be menu driven .It shall
provide dialogue boxes,
How should we help screens, radio
measure user- buttons, dropdown
menus.
friendliness?

Unambiguous Requirements
Requirement Engineering Process

 Complete
 The SRS includes all significant requirements
 The SRS includes all realizable classes of input
data
 The SRS includes full labels and references to
all figures, tables and diagrams.
With requirement engineering
All screens must When the user
accesses any screen,
Without requirement engineering

appear on the
it must appear on the
monitor quickly. monitor within 2
How long is seconds.
quickly?

Incomplete Requirements
With requirement engineering
On power loss,
Without requirement engineering

battery backup
must support On power loss ,
normal operations. battery backup must
support normal
For how long? operations for 20
minutes.

Incomplete Requirements
Requirement Engineering Process: An
Example of Incompleteness
Incomplete Requirements

D grade at 47
No grading criteria is defined e.g. Relative marking,
Absolute marking etc.
Requirement Engineering Process

 Characteristics of SRS
 Verifiable
 For every requirement stated in the SRS, there exists
some finite cost-effective process with which a person or
machine can check that the software meets the
requirements.
 Modifiable
 The entire SRS has a style and structure such that any
changes to the requirements can be made
 Easily,
 Completely, and
 Consistently and retaining the structure and style.
Requirement Engineering Process

 Consistent
 No subset of individual requirements stated in the
SRS conflict with other individual requirements.
Requirement Engineering

 The user presses the Assign Course’ button.


Characteristics of SRS

 Traceable
 For every requirement stated in the SRS, it is
clear of the requirements origin and it is possible
to reference each requirement in future
developments.
Traceability in Requirement Engineering
Requirement Engineering

 Software Requirement Validation


 The process of confirming with the customer or user of the
software that the specified requirements are
 valid,
 correct, and
 complete
 Software Requirements Validation is any activity that has
as its objective to obtain buyer approval of the
specification of the software requirements.
Requirement Engineering
Requirement Engineering
Validation with
the Customer

Verification of
the SRS
Document
Requirement Engineering Process

 Advantages of SRS
 The SRS can establish the basis for contractual
agreement between the customer and developers.
 The SRS can establish the basis for performing cost,
schedule, and resource estimates for the
developmental effort.
 The SRS can provide a baseline for verification and
validation of the software.
Requirements Reviews

 A group of people read and analyze the


requirements, look for problems, meet and discuss
the problems and agree on actions to address these
problems.

88
Requirements Review Process

Plan review Distribute


documents

Prepare for Hold review


review meeting

Follow‐up Revise
actions documents

89
Review Activities

 Plan review
 The review team is selected and a time and place
for the review meeting is chosen.
 Distribute documents
 The requirements document is distributed to the
review team members.
 Prepare for review
 Individual reviewers read the requirements to find
conflicts, omissions, inconsistencies, deviations
from standards and other problems.
90
Review Activities Cont.
 Hold review meeting
 Individual comments and problems are
discussed and a set of actions to address the
problems is agreed.
 Follow-up actions
 The chair of the review checks that the agreed
actions have been carried out.
 Revise document
 The requirements document is revised to
reflect the agreed actions. At this stage, it may
be accepted or it may be re-reviewed.
91
Types of SRS
 Production of System Specification
 Written document
 Graphical model
 Formal mathematical model
 Usage scenarios
 Prototype
 Any combination of above
Outcomes of Requirement Engineering

Tangible
Intangible
Outcome of a Good Requirement
Engineering Process

 Users Perspective
 The users will have a better understanding of their needs and
constraints.
 The users will be in a position to evaluate alternatives and
understand the implications of their decisions.
 This level of understanding is extremely important since it is
usually the users who drives the requirements, which in turn
drives the design and implementation of the entire software
system.
 Thus, the quality of the requirements document is related to
the users understanding of the issues and tradeoffs involved.
Outcome of a Good Requirement
Engineering Process

 Users Perspective
 The users and the developers form a common vision of
the problem and the conceptualized software solution.
 To strive for this common understanding of all
individuals involved in the software engineering
process
 A sense of ownership
 Feel informed and educated
 Committed to the success of the project
Outcome of a Good Requirement
Engineering Process
 Developers Perspective
 This is the fundamental process that will be used
to construct a clear high level specification of the
problem that is to be solved.
 Other outcomes of a good elicitation process are
developers who:
 Are developing a solution to the right problem
 Are solving a problem that is feasible from all
perspectives
 Have a high level specification of the solution
 Have cooperative users
Outcome of a Good Requirement
Engineering Process

 Developers Perspective
 Have all the necessary information, explanations, and
justifications
 Can make proper design justifications
 Need minimal ongoing interactions with the users
 They have trust and confidence of the customer
 Knowledge of the domain of the system
Agile Methods and Requirements

 Many agile methods argue that producing detailed system


requirements is a waste of time as requirements change so quickly.

 The requirements document is therefore always out of date.

 Agile methods usually use incremental requirements engineering and

may express requirements as “user stories”.

 This is practical for business systems but problematic for systems

that require pre-delivery analysis (e.g., critical systems) or systems


developed by several teams.
98
99
https://boosthigh.com/software-requirements-specification/

100
Mastering the Requirements Process – Third Edition,
Page # 24

101
102
103
104
105
106
107
108
109

You might also like