Ch 1-Introduction
Ch 1-Introduction
2
What are requirements?
Software requirements are the descriptions of the system
services (essential & desired) and constraints (on System
operation and software development process).
Requirements are statements of what the system must do,
how it must behave in particular situations, the properties
it must exhibit, the qualities it must possess, and the
constraints that the system and its development must
satisfy.
According to Institute of Electrical and Electronics
Engineers (IEEE) standard 729, a requirement is defined
as follows:
a condition or capability needed by a user to solve a
3
problem or achieve an objective
a condition or capability that must be met or
possessed by a system or system component to
satisfy a contract, standard, specification, or other
formally imposed document
a documented representation of a condition or
capability as in definition 1 or 2 [IEEE 1990a] .
Requirement: A statement that identifies a product
or process operational, functional, or design
characteristic or constraint, which is un ambiguous,
testable or measurable, and necessary for product
or process acceptability (by consumers or internal
quality assurance guidelines).
4
Requirements might describe:
•A user-level facility (e.g. the word processor must include a
spell checking and correction command)
•A very general system property (e.g. the system must
ensure that personal information is never made available
without authorization)
•How to carry out some computation (e.g. the overall mark
is computed by adding the students exam, project &
coursework marks based on the following formula. Total =
[2 * exam + 3*(project + coursework)]/5
• constraint on the development of the system (e.g. The
system must be developed using java) Etc..
• [Davis 1990a, Faulk 1997a]. "The inability to produce
complete, correct, and unambiguous software requirements
5
is still considered the major cause of software failure
today" .
What are requirements?...
As much as possible, requirements should describe what the
system should do, but not how it should do it.
However, sometimes it is necessary for the requirement
documents to include information about the design of the
system. Because:
Readers are often practical engineers – they can relate it
to implementation descriptions
The system may be one of several systems in an
environment - to be compatible with its environment
specifying implementation issues are important
The specifiers are often experts in the application
domain where the system is to be used. The requirements
may be descriptions of how to carry out a computation
6
using application domain
The most common reasons for project failures are not
technical. Below the main reasons why projects fail is
identified. The data is drawn from surveys conducted by the
Standish Group in 1995 and 1996.
Incomplete requirements 13.1%
Lack of user involvement 12.4%
Lack of resources 10.6%
Unrealistic expectations 9.9%
Lack of executive support 9.3%
Changing requirements/specifications 8.7%
Lack of planning
8.1%
Didn’t need it any longer 7.5%
7
Hence giving emphasis to requirements is crucial in any system
dev’t.
Types of requirements
Software requirements are often classified as functional
requirements, non-functional requirements or domain
requirements
Functional requirements: Functional requirements capture
the intended behavior of the system. This behavior may
be expressed as services, tasks or functions the system is
required to perform. i.e. “What the system should do?”.
IEEE defines functional requirements as 'a function that a
system or component must be able to perform.'
Statements of services the system should provide, how the
system should react to particular inputs and how the
system should behave in particular situations.
8
In order to find out functional requirements of a system try
to answer the questions below
What inputs the system should accept?
What outputs the system should produce?
What data the system should store that other systems
might use?
What computations the system should perform?
E.g. The system shall display the longitude and latitude
of the employee through GPS.
Non-functional requirements (NR): define the overall
qualities or attributes of the resulting system like:
portability, (security), maintainability, reliability, scalability,
performance, reusability, flexibility,…
They are basically the quality constraints that the system
9
must satisfy according to the project contract.
Types of requirements…
NR place restrictions on the product being developed, the
development process, and specify external constraints that the
product must meet.
Constraints on the services or functions offered by the
system such as timing constraints, constraints on the
development process, standards, etc.
Example
The product must be available at the beginning of the next
year.
The product shall operate on a 3G mobile telephone.
The system shall be easy to use.
The system should not fail more than twice in a week.
10 The system shall respond to every user action in less than 3 sec.
Types of requirements…
Functional Vs Non-Functional Requirements
There is no a clear distinction between functional and
non-functional requirements.
Whether or not a requirement is expressed as a
functional or a non-functional requirement may depend:
on the level of detail to be included in the
requirements document
the degree of trust which exists between a system
customer and a system developer.
11
Types of requirements…
Example: The system shall ensure that data is protected from
unauthorised access.
Conventionally, this would be considered as a non-
functional requirement because it does not specify specific
system functionality which must be provided. However, it
could have been specified in slightly more detail as
follows:
The system shall include a user authorisation procedure
where users must identify themselves using a login name
and password. Only users who are authorised in this way
may access the system data.
In this form, the requirement looks rather more like a
functional requirement as it specifies a function (user login)
12
which must be incorporated in the system.
Types of requirements…
Domain Requirements
Constraints on the system from the domain of operation.
Requirements that come from the application domain of
the system and that reflect characteristics of that domain.
They are the requirements which are characteristic of a
particular category or domain of projects.
Domain requirements are not from specific needs of
system users.
They usually include specialized terminologies reference
to domain concept - they are difficult to understand
They may be new functional requirements (may be
defining specific computations) or can be constraints on
existing requirements.
If domain requirements are not satisfied, the system may
13
be unworkable.
For instance, in an academic software that maintains
records of a school or college, the functionality of
being able to access the list of faculty and list of
students of each grade is a domain requirement.
These requirements are therefore identified from that
domain model and are not user specific.
Domain requirements problems
Understandability
Req’ts are expressed in the language of the application
domain; often not understood by software engineers.
Implicitness
Domain specialists understand the area so well that they
do not think of making the domain requirements explicit.
14
Kinds of requirements based on the intended purpose
and target audience:
Business Requirements:
Describes why the project is being started and what is
its scope and objective.
These are used to state the high-level business objective
of the organization or customer requesting the system or
product.
They are used to document main system features and
functionalities without going into their nitty-gritty (basic
important) details.
E.g. Implement a web and mobile-based employee tracking
system that tracks field employees and increases efficiency by
means of monitoring employee activity, absenteeism, and
15
productivity.
User Requirements:
User requirements add further detail to the business
requirements.
What services the system is expected to provide to
system users and the constraints under which it must
operate.
They are called user requirements because they are
written from a user’s perspective and the focus of user
requirement describe tasks the user must be able to
accomplish in order to fulfill the above stated business
requirements.
E.g. The system should be easy to use by site
engineers and should be organized in such a way
16 that user errors are minimized.
System Requirements:
Detailed description of what the system should do
including the software system's functions, services, and
operational constraints.
The system requirements document (sometimes called a
functional specification) should define exactly what is to
be implemented.
are expanded versions of the user requirements that
are used by software engineers as the starting point
for the system design.
They add detail and explain how the user requirements
should be provided by the system
Written as a contract between client and contractor
17
18
Requirement Engineering: Introduction
Requirement Engineering is the process of defining,
documenting and maintaining the requirements.
It is the process of understanding and defining what
services are required and identifying the constraints on
these services.
Requirement engineering provides
the appropriate mechanism to understand what the customer
desires,
analyzing the need, and assessing feasibility,
negotiating a reasonable solution,
specifying the solution clearly,
validating the specifications and
managing the requirements as they are transformed into a
19
working system.
Requirements Engineering(RE) provides the basic
agreement between end-users and developers on what
the software should do.
RE “involves all life-cycle activities devoted to
identification of user requirements, analysis of the
requirements to derive additional requirements,
documentation of the requirements as a specification, and
validation of the documented requirements against user
needs, as well as processes that support these activities”
(DoD 1991).
A branch of SWE concerned with the real world goals for,
functions of, and constraints on software systems and also
concerned with the relationship of these factors to precise
specifications of software behavior (Zave 1997).
20
The subset of systems engineering concerned with
discovering, developing, tracing, analyzing,
qualifying, communicating and managing
requirements that define the system at successive
levels of abstraction.
Requirements engineering is complex because of
the three roles involved in producing even a single
requirement:
the requestor (referred to as the "user" in the IEEE
definition),
the author (who will document the requirements).
the developer (who will design and implement the
21
system), and
Contd…
Typically, the requestor understands the problem to be
solved by the system but not how to develop a system.
The author needs to create a statement that
communicates unambiguously to the developer what the
requestor desires. Hence, requirements address a
fundamental communications problem.
The developer understands the tools and techniques
required to construct and maintain a system but not the
problem to be solved by that system.
22
What is Requirement Engineering?
Definition
23
Why Requirement Engineering?
There are many issues that can have a negative impact on software
development projects and products if practitioners don’t do a good
job of defining their software requirements.
These issues include:
Incomplete requirements
software product does not meet all of the customer and user’s
needs.
Lack of user involvement
Requirements churn
changes in the requirements after they are initially agreed to
and baselined.
Wasted resources
Requirements errors account for 70 to 85 percent of the rework
costs on a software project
24
Why Requirement Engineering?...
Gold plating
developer adds functionality to the software that was not in the
requirements
Inaccurate estimates
Without a clear picture of that scope, estimates of the project
schedule, cost, and quality will be less accurate.
29
Stakeholders…
There are three main categories of stakeholders:
the acquirers of the software product
the suppliers of the software product and
other stakeholders.
The acquirer type stakeholders can be divided into two
major groups.
customers who request, purchase, and/or pay for the
software product in order to meet their business
objectives.
users, also called end-users, who actually use the
product directly or use the product indirectly by
receiving reports, outputs, or other information
30
generated by the product.
The suppliers of the software product include individuals
and teams that:
are part of the organization that develops the software product
are part of the organizations that distribute the software product
are involved in other product delivery methods (for example,
outsourcing).
System analysts, designers, developers etc are some
examples among suppliers
Suppliers who pay for the development of the product
are called client.
Other stakeholders includes legal or contract
management, manufacturing or product release
management, sales and marketing, upper management,
government or regulator agencies, and the society at
31
large .
Stakeholders: Example
Assume MAU has signed an agreement with a software company called ABC for
the automation of the clinic system which encompasses subsystems like clinical lab
subsystem, patient admission subsystem and the like.