Requirements and Specification: Part Two
Requirements and Specification: Part Two
Requirements and
Specification
This part of the Worktext is concerned with the introductory phases of
the software process in which the requirements for the software are
established and specified in detail for further development.
Contents
1. Requirements Engineering and Analysis
2. System Models
3. Requirements Definition and Specification
4. Software Prototyping
In 1994, the Standish Group surveyed over 350 companies about their over 8000 software
projects to find out how well they were faring. The result are sobering. Thirty-one percent of the
software projects were canceled before they were completed. Moreover, in large companies, only
9% of the projects were delivered on time and within budget; 16% met those criteria in small
companies (Standish 1994).
To understand why, Standish (1995) asked the survey respondents to explain the causes
of the failed projects. The top factors were reported to be:
Boehm and Papaccio (1988) report that if it cost $1 to find and fix a requirements-based
problem during the requirements definition process, it can cost $5 to repair it during design, $10
during unit testing, and as much as $200 after delivery of the system.
2. Requirement Specification. A structured document which sets out the system services in
details. This document, which sometimes called functional specification, should be
precise. It may serve as a contract between the system buyer and the software developer.
The requirement process should normally involve writing a requirement definition then
expanding this requirements specification. Figure 2.1.1 illustrates how a definition of a
requirement may be expected in more detailed level as a requirement specification.
Requirement Definition
1. The software must provide a means of representing and accessing external files
created by other tools.
Requirement Specification
1. The user should be provided with facilities to define the type of external files.
2. Each external file type may have an associated tool which may be applied to the
file.
3. Each external file type may be represented as a specific icon on the user’s
display.
4. Facilities should be provided for the icon representing an external file type to be
defined by the user.
5. When a user selects an icon representing an external file, the effect of that
selection is to apply the toll associated with the type of the external file to the
file represented by the selected icon.
\
Types of requirements
The requirements definition describes everything about how the system is to interact with
its environment.
Physical Environment:
Where is the equipment to function?
Is there one location or several?
Are there any environmental restrictions, such as temperature, humidity, or magnetic
interference?
Interfaces:
Is the input coming from one or more other systems?
Is the output going to one or more other systems?
Is there a prescribe way in which the data be formatted?
Is there a prescribed medium that the data must use.
Functionality:
What will the system do?
When will system do it?
How and when can the system be change or enhanced?
Are there constraints on execution speed, response time, or throughput?
Documentation:
How much documentation is required?
To what audience is the documentation addressed?
Data:
For both input and output, what should the format of the data be?
Resources:
What materials, personnel, or other resources are required to build, use, and maintain
the system?
What skills must the developers have?
How much physical space will be taken up by the system?
What are the requirements for power, heating, or air conditioning?
Is there a prescribed timetable for development?
Is there a limit on the amount of money to be spent on development or on hardware
and software?
Security:
Must access to the system or to information be controlled?
How will one user’s data be isolated from others?
How will user programs be isolated from other programs and from the operating
system?
How often will the system be backed up?
Should precautions be taken against fire or theft?
Quality Assurance:
What are the requirements for reliability?
How must the characteristics of the system be demonstrated to others?
Must the system detect and isolate faults?
What is the prescribed mean time between faults?
Is there a maximum time allowed for restarting the system after a failure?
How can the system incorporate changes to the design?
Will maintenance merely correct errors, or will it also include improving the system?
What efficiency measures will apply to resources usage and response time?
How easy should it be to move the system from one location to another or from one
type of computer to another?
Functionality
Functionality Security
Security
Users and
Quality
Human
Human Assurance
Assurance
Factors
Factors
Physical
Physical
Interface
Interface Requirements Environment
Environment
The requirement engineering process is shown in Figure 2.1.3. This process is a set of
activities that lead to the production of the requirements definition and requirements
specification.
Requirement
Definition
Feasibility Report
Requirements
Specification
System Models
Definition of
Requirements
Requirement Specification of
Document Requirements
Software Engineering | For CICT Classroom Use Only
30
Figure 2.1.3. The Requirements Engineering Process
1. Feasibility Study. The study will decide if the proposed system will be cosy-effective
from a business point of view and if it can be developed given existing budgetary
constraints.
2. Requirement analysis. This is the process of deriving the system requirements
through observation of existing systems, discussions with potential users and
procurers, task analysis and so on. This may involve the development of one or more
different system models.
3. Requirement Definition. It translates the information gathered during the analysis
activity into a document that defines a set of requirements. These should accurately
reflect what the customer wants.
4. Requirement Specification. A detailed and precise description of the systems
requirements is set out to act as a basis for a contract between client and software
developer. The creation of document is usually carried out in parallel with some high-
level design.
Heninger (1980) suggest that there are six requirements which a software requirements
document should satisfy:
Table 2.1.1
The Structure of a Requirement Document
The requirement document may also include, either in separate chapter in the document
or as appendices, the following information:
Hardware. If the system is to be implemented on special hardware, this hardware and its
interface should be described.
Database Requirements. The logical organization of the data used by the system and its
interrelationships should be described.
Index. More than one kind of index to the document may be provided. As well as a
normal alphabetic index, there may be an index per chapter, an index of functions and so
on.
Requirements Validation
Requirements validation is concerned with showing that the requirements actually define
the system that the customer wants. If this validation is inadequate, errors in the requirements
will be propagated to the system design and implementation.
1. Validity. A user may think that a system is needed to perform certain functions.
However, further thought and analysis may identify additional or different functions
that are required.
2. Consistency. Any one requirement should not conflict with any other.
A requirements review is manual process which involves multiple readers from both
clients and contractor staff checking the requirements document for anomalies and omissions.
Requirements review can be formal or informal. Informal Review simply involves contractors
discussing requirements with clients. In a Formal Review, the development team should “walk”
the client through the system requirements explaining the implications of each requirement.
The review team should check each requirement for consistency and should check the
requirements as a whole for completeness. They might also check for:
Requirements Evolution
Harker et al. (1993) have suggested that volatile requirements fall into four classes:
Requirements Analysis
After the initial feasibility studies, the first major stage is the requirements analysis or
elicitation. This may involve a variety of different kinds of people in an organization. These
include system end-users who will ultimately interact with the system and their managers.
Requirements
Requirements
Definition and
Definition and
Specification
Specification
Requirements
Requirements
Validation
Validation
Requirements Conflict
Requirements Conflict
Collections Resolution
Collections Resolution
Classification
Classification
The activities shown in Figure 2.1.4 are highly interactive with continual feedback from
each activity to other activities. The process can be viewed as a cycle, starting with domain
understanding and ending with requirements validation. The process activities are:
Davis (1990) suggests that the analysis process must always include three important
structuring activities:
1. Partitioning. Concerned with identifying the structural relationship between entities so
that one entity can be described in terms of its parts.
2. Abstraction. Concerned with identifying generalities among entities.
3. Projection. Concerned with identifying different ways of looking at a problem.
Viewpoint-oriented Analysis
Data source or sink. In this case, viewpoints are responsible for producing or
consuming data. The analysis involves identifying all such viewpoints. Identifying
what data is produced or consumed and what processing is carried out.
Representation Framework. In this case, a viewpoint is considered to be a particular
type of system model.
Reserve
Method-based Analysis
A process model. This defines the activities in the method. Examples of activities are
data-flow analysis and control scenario identification.
Characteristics of Requirements
To ensure that the eventual product is successful, it is important that the requirements be
of high quality; what is not specified usually is not built. Below are the desirable characteristics
for which we should check.
1. Are the requirements correct? Both developer and the customer should review the
documented requirements, to ensure that they conforms to our understanding of the
requirements.
2. Are the requirements consistent? In general, two requirements are inconsistent if it is
impossible to satisfy both simultaneously.
3. Are the requirements unambiguous? The requirements are ambiguous if multiple
readers of the requirements can walk away with different but valid interpretations.
4. Are the requirements complete? The set of requirements is complete if it specifies
required behavior and output for all possible inputs in all possible states under all
possible constraints. The requirements are externally complete if all states, state changes,
inputs, products and constraints are described by some requirement. A requirements
description is internally complete if there are no undefined terms among the
requirements.
5. Are the requirements feasible? That is, does a solution to the customer’s needs even
exists?
6. Is every requirement relevant? Sometimes a requirements restricts the developers
unnecessarily, or includes functions that are not directly related to the customer’s needs.
7. Are the requirements testable? The requirements are testable if they suggest accepted
test that would clearly demonstrate whether the eventual product meets the requirements.
8. Are the requirements traceable? Are the requirements organized and uniquely labeled
for easy reference.
Data-processing Model. Data flow diagrams may be used to show data is processed at
different stages of the system.
Composition Model. Entity-relationship diagrams may be used to show some entities in
the system are composed of other entities.
Classification Model. Object class/inheritance diagrams may be used to show how
entities have common characteristics.
Stimulus-Response Model. State transition diagram may be used to show how the
system reacts to internal and external events.
Process Model. Process models may be used to show the principal activities and
deliverables involved in carrying out some process.
Data-flow Model
Data-flow models are intuitive way of showing how data is processed by a system. This
are used to show how fata flows through a sequence of processing steps. The data is transformed
at each step before moving to the next stage.
Processing Step
Data Sources
Data Name
ER diagram have three core constructs – entities, attributes, and relations – that are
combined to specify a problem’s elements and their interrelationships as shown in Figure 2.2.1.
Object Models
Object Models developed during requirements analysis may be used to represent both
system data and its processing. An object class is an abstraction over a set of objects which
identifies common attributes and the services or operation which are provided by each object.
Figure 2.2.3 shows the notation used to represent object model.
Requirements Definition
Three types of major problem with requirements definition written in natural language:
1. Lack of clarity. It is very difficult to use language in a precise and unambiguous way
without making the document wordy and difficult to read.
2. Requirements confusion. Functional requirements, non-functional requirements,
system goals and design information may not be clearly distinguished.
3. Requirements amalgamation. Several different requirements may be expressed
together as a single requirement.
Requirements Specification
Alternatives to the use of natural language which add structure to the specification and
which should reduce ambiguity:
Non-functional Requirements
Table 2.3.1 shows different types of non-functional requirements. These can be classified
depending on how they had been derived.
Non-functional Requirements
Product Usability requirements
Requirements Efficiency requirements
Reliability requirements
Portability requirements
Performance requirements
Space requirements
Process Requirements Delivery requirements
Implementation requirements
Standard requirements
External Interoperability requirements
Requirements Ethical requirements
Legislative requirements
Safety requirements
Privacy requirements
1. User training. A prototype system can be used for training users before the final
system has been delivered.
2. System testing. Prototypes can run “back-to-back” tests. This reduces the need for
tedious manual checking of test runs.
Types of Prototyping
There are three main problems it evolutionary prototyping which are particularly
important when large. Long-lifetime systems are to be developed:
2. Throw-away Prototyping. This approach extends the requirements analysis process with
the intention of reducing overall life costs. The principal function of the prototype is to
clarify requirements and provide additional information for managers to access process
risks. Components from the prototype may be reuse in the production of quality systems.
Prototyping Techniques
Prototyping techniques allow the rapid development of a prototype system. As staff costs
are the principal software cost, rapid development means that prototype costs are minimized. It
also means that feedback from users can be obtained early in the overall software process.
There are a number of techniques which have been used for system prototyping. These
include:
EVALUATION NO. 02
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
2. Explain why requirements analyst need to develop knowledge of the application domain
of the system which is being specified.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
3. Suggest why data-flow diagrams are intuitive and easy to understand by non-technical
staff.
4. Based on your experience using the ATM (Automated Teller Machine). Draw a data-flow
diagram, modeling the data processing involved when a customer withdraws cash from
the machine.
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
6. From your own point of view, what type of prototyping techniques would you
recommend and why?
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________