Professional Documents
Culture Documents
Ch1-Introduction To Requirements Engineering-Updated DR Ahmad
Ch1-Introduction To Requirements Engineering-Updated DR Ahmad
REQUIREMENTS
ENGINEERING
Software System Requirements engineering Module, 1503271
1
Edited By:
Dr Ahmad Nabot
Dr Ahmad Nabot
SOFTWARE ENGINEERING
Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use.
Engineering discipline
Using appropriate theories, methods and tools to solve problems bearing in mind
organizational and financial constraints.
All aspects of software production:
Software Engineering is Not just technical process of software development.
Also, software project management and the development of tools, methods etc. to
support software production.
2
SOFTWARE PROCESS
The systematic approach that is used in software engineering is
sometimes called a software process.
There are four fundamental activities that are common to all software
processes. These activities are:
3
SOFTWARE PROCESS
ACTIVITIES:
1. Software Specification (Requirements), where customers and engineers define
the software that is to be produced and the constraints on its operation.
2. Software Development, where the software is designed and programmed
(Design and implementation (Code)).
(Creating Models (class diagram, flow charts, use cases, interactions,
algorithms, internal structure, data to be used, etc.), then Programming
(new or reuse).
3. Software Validation (Testing), where the software is checked to ensure that it
is what the customer requires.
4. Software Evolution, where the software is modified to reflect changing
customer and market requirements.
(Management and Documentation are ongoing activities that are aligned with
the previous activities).
4
REQUIREMENT ENGINEERING (RE)
5
Definitions
Requirement Engineering:
The subset of system engineering concerned with discovering, developing,
tracing, analyzing, qualifying, communicating and managing requirements
that define the system at successive levels of abstraction.
6
-Notes about the definition of requirements engineering:
A. Discovering: requirements elicitation.
B. Tracing: tracing requirements to other artifact, provides a mean of
validating requirements and capturing rationale of design.
C. Qualifying: refers to all kinds of testing.
D. Communication: requirements are the means of comm. Between
customers, developers, users…
E. Level of abstraction: organize requirements into layers. the requirements
at the top layer define the system in terms of problems to be solved,
requirements at subsequent layers define the system in terms of
implementable solution.
7
WHAT ARE REQUIREMENTS?
Requirements:
Are specifications of what should be implemented. They are descriptions of how
the system should behave, or of a system property or attribute. They may be
constraints on the development process of the system.
Requirement, functional
A statement of some function or feature that should be implemented in a system.
Requirement, non-functional
A statement of a constraint or expected behavior that applies to a system. This
constraint may refer to the emergent properties of the software that is being
developed or to the development process.
8
WHAT ARE REQUIREMENTS?
Requirement:
9
Definition Explained:
10
Product or process. Complete solutions contain varying mixtures of product
(things that are built in response to requirements) and process (procedures for
using the things that are built). Requirements may therefore define process as
well as product. In addition to this, there may be requirements that stipulate
how the product should be developed, usually for quality control purposes.
11
Testable or measurable. Requirements are used to test that the design or
solution is acceptable. For this to be possible, the requirement should be
quantified, thus providing a means of “measuring” the solution against it.
12
DEFINITION OF
STAKEHOLDER
A stakeholder is a person, group, or organization that is actively
involved in a project, is affected by its process or outcome, or can
influence its process or outcome. Stakeholders can be internal or
external to the project team and to the developing organization. The
next Figure identifies many of the potential stakeholders in these
categories. Not all of these will apply to every project or situation, of
course.
13
What do customers want?
-The requirements engineer seeks to satisfy customer wants and need.
14
What do customers want?
- The figure shows Maslow’s hierarchy of self-actualization.
15
What do customers want?
- The figure shows the hierarchy of customer needs/wants
16
What do customers want?
the lowest level is basic functionality. Being a point of sale system implies certain functions must be
present—such as create a sale, return an item, update inventory, and so on.
At the enabling level, the customer desires features that provide enabling capabilities with respect to other
systems (software, hardware, or process) within the organization. So the POS system ties into some
management software that allows for sales data to be tracked by managers for forecasting or inventory
control purposes. The functionality at the enabling level may not meet or exceed competitors’ capabilities.
Those functional needs are met at the competitive advantage level. Here the customer wishes for this new
system to provide capabilities that exceed those of the competition or otherwise create a business
advantage.
Finally, ground-breaking desires would imply development of technology that exceeds current theory or
practice and has implications and applications beyond the system in question. For example, some kind of
new data-mining technology might be desired that exceeds current technologies. As with the Maslow
hierarchy, the idea is that the lower-level functionality must not be sacrificed to meet the higher
levels of functionality.
17
WHAT IS REQUIREMENT
SPECIFICATION
Requirements specification is the process of writing down the user and
system requirements in a requirements document.
18
IS REQUIREMENT ENGINEERING
IMPORTANT TO SOFTWARE
ENGINEERING?
WHY??
19
IMPORTANCE OF REQUIREMENT
ENGINEERING
Requirements engineering (RE) is the most important area of software
engineering and possibly of the entire software life cycle.
21
The most common reasons for project failure are not technical the
following table identifies main reasons for project fail:
22
Project success factors:
15.9 % User involvement. *1
13.9 % Management support. 2
13.0 % Clear statement of req. *3 Smaller milestone
(Is the same of check
9.6 % Proper planning. 4 point).
8.2 % Realistic expectation. *5
7.7 % Smaller milestone. 6
7.2 % Competent staff. 7
5.3 % Owner ship. *8
23
IS REQUIREMENT SPECIFICATION
IMPORTANT TO SOFTWARE
ENGINEERING?
WHY??
24
IMPORTANCE OF REQUIREMENT
SPECIFICATION
An agreement with your customer on exactly how the system will operate
A point of synchronization for the project team
A basis for building a master plan and schedule
Instructions to engineers on what to build
A baseline for change control
25
LEVELS OF REQUIREMENTS:
If a company wishes to let a contract for a large software development
project, it must define its needs in a sufficiently abstract way that a
solution is not predefined. The requirements must be written so that
several contractors can bid for the contract, offering, perhaps,
different ways of meeting the client organization’s needs.
28
READERS OF DIFFERENT TYPES OF REQUIREMENTS
SPECIFICATION
You need to write requirements at different levels of detail because different readers
use them in different ways
29
REQUIREMENTS CLASSIFICATION FROM
FUNCTIONAL POINT OF VIEW:
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.
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.
30
FUNCTIONAL REQUIREMENTS
Describe functionality or system services.
Depend on the type of software, expected users and the
type of system where the software is used.
Functional user requirements may be high-level
statements of what the system should do.
Functional system requirements should describe the
system services in detail.
31
EXAMPLE:
FUNCTIONAL REQUIREMENTS FOR THE MENTAL HEALTH
CARE PATIENT MANAGEMENT SYSTEM (MHC-PMS)
1) A user shall be able to search the appointments lists for all clinics.
2) The system shall generate each day, for each clinic, a list of patients who are
expected to attend appointments that day.
3) Each staff member using the system shall be uniquely identified by his or her 8-
digit employee number.
33
REQUIREMENTS IMPRECISION (LACK OF
ACCURACY)
Problems arise when requirements are not precisely stated.
Ambiguous requirements may be interpreted in different ways by
developers and users.
Consider the term ‘search’ in requirement 1(A user shall be able to search
the appointments lists for all clinics).
User intention – search for a patient name across all appointments in all
clinics;
Developer interpretation – search for a patient name in an individual
clinic. User chooses clinic then search.
34
NON-FUNCTIONAL
REQUIREMENTS
These define system properties and constraints e.g.
reliability, response time and storage requirements.
Alternatively, they may define constraints on the system
implementation, such as Constraints on I/O device capability,
system representations (Interfaces), etc.
Process requirements may also be specified mandating a
particular IDE, programming language or development
method.
Non-functional requirements may be more critical than
functional requirements. If these are not met, the system may
be useless.
35
NON-FUNCTIONAL REQUIREMENTS IMPLEMENTATION
Non-functional requirements may affect the overall architecture of a
system rather than the individual components.
For example, to ensure that performance requirements are met,
you may have to organize the system to minimize
communications between components.
A single non-functional requirement, such as a security requirement,
may generate a number of related functional requirements that
define system services that are required.
It may also generate requirements that restrict existing
requirements.
(Notes) 36
NON-FUNCTIONAL REQUIREMENTS CLASSIFICATIONS:
37
NON-FUNCTIONAL
CLASSIFICATIONS
Product requirements
Requirements which specify that the delivered product must behave in a
particular way e.g. execution speed, reliability, etc.
38
NON-FUNCTIONAL
CLASSIFICATIONS
Organisational requirements
Requirements which are a consequence of organisational
policies and procedures e.g. process standards used,
implementation requirements, etc.
39
NON-FUNCTIONAL CLASSIFICATIONS
External requirements
Requirements which arise from factors which are external to the system
and its development process e.g. interoperability requirements,
legislative requirements, etc.
These may include regulatory requirements that set out what must be
done for the system to be approved for use by a regulator, such as a
central bank; legislative requirements that must be followed to ensure
that the system operates within the law; and ethical requirements that
ensure that the system will be acceptable to its users and the general
public.
40
EXAMPLES OF NONFUNCTIONAL
REQUIREMENTS IN THE MHC-PMS
Product requirement
The MHC-PMS shall be available to all clinics during normal working
hours (Mon–Fri, 0830–17.30). Downtime within normal working hours
shall not exceed five seconds in any one day.
Organizational requirement
Users of the MHC-PMS system shall authenticate themselves using their
health authority identity card.
External requirement
The system shall implement patient privacy provisions as set out in HStan-
03-2006-priv.
41
DOMAIN REQUIREMENTS
Are derived from the application domain.
Domain requirements may consist of new functional requirements
and constraints on existing requirements, or they may specify how
particular computations are performed.
If domain requirements are not satisfied, the system may be
unworkable
Example: banking domain. Requirements related to finance
and account shall be provided to the requirements engineer
such as taxes calculations
Example: in baggage handling system, the new system should
follow regulations applied in the domain.
Example: a train control system has to take into account the 42
braking characteristics in different weather conditions
DOMAIN REQUIREMENTS PROBLEMS
Understandability
Requirements are expressed in the language of the application domain;
This is often not understood by software engineers developing the system.
e.g. The system safety shall be assured according to standard IEC 60601-
1:Medical Electrical Equipment – Part 1:General Requirements for Basic Safety
and Essential Performance.
43
DOMAIN REQUIREMENTS PROBLEMS
Implicitness
Domain specialists understand the area so well that they do not
think of making the domain requirements explicit.
e.g. The deceleration of the train shall be computed as: D
(train) = D (control) + D (gradient)
where
D (gradient) is 9.81ms2 * compensated gradient/alpha and
the values of 9.81ms2 /alpha are known for different types of
train.
44
ADDRESSING THE REQUIREMENTS 4CS:
In principle, requirements should be
Complete:
They should include descriptions of all facilities required.
All services required by the users should be defined.
Consistent:
There should be no conflicts or contradictions in the descriptions of the
system facilities.
The requirements should not have contradictory definitions.
Correct: requirements are not wrong.
Clear: Requirements should be written in unambiguous and clear
way.
45
RELATIONSHIP BETWEEN REQUIREMENTS SPECIFICATION LEVELS
AND TESTING
46
PRODUCT VS. PROJECT REQUIREMENTS
So far we have been discussing requirements that describe properties of a software system to be
built. Let’s call those product requirements. Projects certainly do have other expectations and
deliverables that are not a part of the software the team implements, but that are necessary to the
successful completion of the project as a whole. For Example:
Physical resources the development team needs, such as workstations, special hardware devices,
testing labs, testing tools and equipment, team rooms, and videoconferencing equipment.
Staff training needs.
User documentation, including training materials, tutorials, reference manuals, and release notes.
Support documentation, such as help desk resources and field maintenance and service
information for hardware devices.
Infrastructure changes needed in the operating environment.
47
WHAT ARE THE FUNDAMENTAL
ACTIVITIES OF REQUIREMENT
ENGINEERING???
48
REQUIREMENTS DEVELOPMENT AND MANAGEMENT
Analyzing the information received from users to distinguish their task goals from
functional requirements, quality expectations, business rules, suggested solutions, and
other information
Decomposing high-level requirements into an appropriate level of detail
Deriving functional requirements from other requirements information
Understanding the relative importance of quality attributes
Allocating requirements to software components defined in the system architecture
Negotiating implementation priorities
Identifying gaps in requirements or unnecessary requirements as they relate to the
defined scope
51
SPECIFICATION
Requirements specification involves representing and storing the collected
requirements knowledge in a persistent and well-organized fashion. The
principal activity is:
Translating the collected user needs into written requirements and diagrams
suitable for comprehension, review, and use by their intended audiences.
52
VALIDATION
Requirements validation confirms that you have the correct set of
requirements information that will enable developers to build a solution
that satisfies the business objectives. The central activities are:
53
NOTE:
Iteration is a key to requirements development success.
Plan for multiple cycles of exploring requirements,
progressively refining high-level requirements into more
precision and detail, and confirming correctness with users.
This takes time and it can be frustrating. Nonetheless, it’s an
intrinsic aspect of dealing with the fuzzy uncertainty of
defining a new software system.
54
REQUIREMENTS MANAGEMENT
Requirements management activities include the following:
56
The boundary between requirements development and requirements management. 57
WHEN BAD REQUIREMENTS HAPPEN TO
GOOD PEOPLE
The major consequence of requirements problems is rework—doing
again something that you thought was already done—late in development
or after release.
Rework often consumes 30 to 50 percent of your total development cost,
and requirements errors can account for 70 to 85 percent of the rework
cost.
It can cost far more to correct a defect that’s found late in the project than
to fix it shortly after its creation.
Suppose it costs $100 (on a relative scale) to find and fix a requirement
defect while you’re still working on the requirements. If you discover that
error during design instead, you have to pay the $1 to fix the requirement
error, plus another $200 or $300 to redo the design that was based on the
incorrect requirement. 58
SOME OF THE MOST COMMON REQUIREMENTS RISKS
ARE
Insufficient user involvement:
Insufficient user involvement leads to late-breaking requirements that
generate rework and delay completion.
particularly when reviewing and validating the requirements, is that the
business analyst might not understand and properly record the true
business or customer needs.
Inaccurate planning:
Vague, poorly understood requirements lead to overly optimistic estimates,
which come back to haunt you when the inevitable overruns occur.
The top contributors to poor software cost estimation are frequent
requirements changes, missing requirements, insufficient communication
with users, poor specification of requirements, and insufficient
requirements analysis 59
SOME OF THE MOST COMMON REQUIREMENTS RISKS
ARE
Creeping user requirements:
As requirements evolve and change during development, projects often
exceed their planned schedules and budgets (which are nearly always too
optimistic anyway).
Project managers should build contingency buffers into schedules so the
first new requirement that comes along doesn’t derail the schedule.
Ambiguous requirements:
One symptom of ambiguity in requirements is that a reader can interpret a
requirement statement in several ways. Another sign is that multiple readers of a
requirement arrive at different understandings of what it means.
Ambiguity leads to different expectations on the part of various stakeholders. Some of
them are then surprised at whatever is delivered. Ambiguous requirements cause
wasted time when developers implement a solution for the wrong problem. Testers
who expect the product to behave differently from what the developers built waste
time resolving the differences. 60
SOME OF THE MOST COMMON REQUIREMENTS RISKS
ARE
Gold plating:
takes place when a developer adds functionality that wasn’t in the requirements
specification (or was deemed out of scope) but which the developer believes “the
users are just going to love.” If users don’t care about this functionality, the time
spent implementing it is wasted. Rather than simply inserting new features,
developers and BAs should present stakeholders with creative ideas for their
consideration. Developers should strive for leanness and simplicity, not going
beyond what stakeholders request without their approval.
Overlooked stakeholders:
If you don’t identify the important user classes for your product early on,
some user needs won’t be met. After identifying all user classes, make sure
that each has a voice, as discussed in Chapter 6, “Finding the voice of the
user.”
61
REFERENCES
This presentation material has been prepared from the references below:
Karl Wiegers and Joy Betty, Software Requirements, 3rd Edition, Microsoft. Chapter 1
Ian Somerville, Software Engineering, 10th edition, Pearson. Chapter 2
62