Professional Documents
Culture Documents
SE Chapter04 Software Requirement Analysis
SE Chapter04 Software Requirement Analysis
SE Chapter04 Software Requirement Analysis
1. Introduction
• Many projects fail because they start implementing the system without determining
whether they are building what the customer really wants.
• It is important to learn requirements analysis and specification techniques thoroughly.
• The inputs to this process include the customer’s requirements and the project
constraints.
• Requirements relate directly to the performance characteristics of the system being
designed.
• They are the stated life-cycle customer needs and objectives for the system, and they
relate to how well the system will work in its intended environment.
• Constraints are conditions that exist because of limitations imposed by external
interfaces, project support, technology, or life cycle support systems. Constraints bound
the development teams’ design opportunities.
• Requirements Engineering is the process of establishing the services that the customer
requires from the system and the constraints under which it is to be developed and
operated. Requirements may serve a dual function:
o As the basis of a bid for a contract
o As the basis for the contract itself
• IEEE has defined the term requirements as:
(1) a condition of capability needed by a user to solve a problem or achieve.
(2) a condition or a capability that must be met or possessed by a system...,to
satisfy a contract ,standard, specification or other formally imposed
document....[IEE87].
2. Types of Requirements
• Requirements are categorized in several ways. The following are common
categorizations of requirements that relate to technical management:
1. Customer Requirements: Statements of fact and assumptions that define the
expectations of the system in terms of mission objectives, environment, constraints.
2. Functional Requirements: Functional requirements explain what has to be done by
identifying the necessary task, action or activity that must be accomplished.
Functional requirements analysis will be used as the top level functions for functional
analysis.
3. Non-functional Requirements: Non-functional requirements are requirements that
specify criteria that can be used to judge the operation of a system, rather than
specific behaviors.
Page 1 of 11
Software Engineering Chapter 04: Software Requirement Analysis
3. Characteristics of Requirements
Characteristic Explanation
Unitary
The requirement addresses one and only one thing.
(Cohesive)
Complete The requirement is fully stated in one place with no missing information.
The requirement does not contradict any other requirement and is fully
Consistent
consistent with all authoritative external documentation.
The requirement is atomic, i.e., it does not contain conjunctions. E.g., "The
postal code field must validate American and Canadian postal codes" should
Non-Conjugated
be written as two separate requirements: (1) "The postal code field must
(Atomic)
validate American postal codes" and (2) "The postal code field must validate
Canadian postal codes".
The requirement meets all or part of a business need as stated by stakeholders
Traceable
and authoritatively documented.
Current The requirement has not been made obsolete by the passage of time.
The requirement is concisely stated without recourse to technical jargon,
acronyms (unless defined elsewhere in the Requirements document), or other
esoteric verbiage. It expresses objective facts, not subjective opinions. It is
Unambiguous
subject to one and only one interpretation. Vague subjects, adjectives,
prepositions, verbs and subjective phrases are avoided. Negative statements
and compound statements are avoided.
Many requirements represent a stakeholder-defined characteristic the absence
Specify of which will result in a major or even fatal deficiency. Others represent
Importance features that may be implemented if time and budget permits. The requirement
must specify a level of importance.
The implementation of the requirement can be determined through basic
Verifiable possible methods: inspection, demonstration, test (instrumented) or analysis
(to include validated modeling & simulation).
Page 2 of 11
Software Engineering Chapter 04: Software Requirement Analysis
Page 3 of 11
Software Engineering Chapter 04: Software Requirement Analysis
Defining Requirement: The basic step for any system analyst is to understand the requirements
of the users. This is achieved by various fact finding techniques like interviewing, observation,
questionnaire etc. The information should be collected in such a way that it will be useful to
develop such a system which can provide additional features to the users apart from the desired.
Prioritizing Requirements: Number of users use the system in the organization. Each one has a
different requirement and retrieves different information. Due to certain limitations in computing
capacity it may not be possible to satisfy the needs of all the users. Even if the computer capacity
is good enough is it necessary to take some tasks and update the tasks as per the changing
requirements. Hence it is important to create list of priorities according to users requirements.
The best way to overcome the above limitations is to have a common formal or informal
discussion with the users of the system. This helps the system analyst to arrive at a better
conclusion.
Gathering Facts, data and opinions of Users: After determining the necessary needs and
collecting useful information the analyst starts the development of the system with active
cooperation from the users of the system. Time to time, the users update the analyst with the
necessary information for developing the system. The analyst while developing the system
continuously consults the users and acquires their views and opinions.
Evaluation and Analysis: As the analyst maintains continuous he constantly changes and
modifies the system to make it better and more user friendly for the users.
Solving Problems: The analyst must provide alternate solutions to the management and should
an in-depth study of the system to avoid future problems. The analyst should provide with some
flexible alternatives to the management which will help the manager to pick the system which
provides the best solution.
Drawing Specifications: The analyst must draw certain specifications which will be useful for
the manager. The analyst should lay the specification which can be easily understood by the
manager and they should be purely non-technical. The specifications must be in detailed and in
well-presented form.
Page 4 of 11
Software Engineering Chapter 04: Software Requirement Analysis
7.2 Modeling:
We create functional models to gain a better understanding of the actual entity to be built. It
must be capable of representing the information that software transforms, the functions (and
sub-functions) that enable the transformation to occur, and the behavior of the system as the
transformation is taking place.
a. Functional models: It focuses on the functions - transformations of data - that the
software must include. Software transforms information, and in order to accomplish this,
it must perform at least three generic functions: input, processing, and output. The
functional model begins with a single context level model (i.e., the name of the software
to be built). Over a series of iterations, more and more functional detail is provided, until
whole software with full system functionality is not represented.
b. Behavioral models: Most software responds to events from the outside world. This
stimulus/response characteristic forms the basis of the behavioral model. A computer
program always exists in some state—an externally observable mode of behavior (e.g.,
waiting, computing, printing) that is changed only when some event occurs. A behavioral
model creates a representation of the states of the software and the events that cause
software to change state.
7.3 Partitioning
Problems are often too large and complex to be understood as a whole. For this reason, we
tend to partition (divide) such problems into parts that can be easily understood and establish
interfaces between the parts so that overall function can be accomplished. Analysis principle
also suggests that the information, functional, and behavioral domains of software can be
partitioned.
Page 5 of 11
Software Engineering Chapter 04: Software Requirement Analysis
Page 6 of 11
Software Engineering Chapter 04: Software Requirement Analysis
Users of SRS
• System customers: Specify the requirements and read them back to check that they meet their
needs; specify changes to the requirements
• Development Managers: Use the requirements document to plan a bid for the system and to
plan the system development process
• Implementation Programmers: Use the requirements to understand what system is to be
developed
• Test programmers: Use the requirements to develop validation tests for the system
• Maintenance programmers: Use the requirements to help understand the system and the
relationships between its parts.
Page 7 of 11
Software Engineering Chapter 04: Software Requirement Analysis
7. Modifiable: An SRS is modifiable if, and only if, its structure and style are such that any
changes to the requirements can be made easily, completely, and consistently while retaining
the structure and style. Modifiability generally requires an SRS to
• Have a coherent and easy-to-use organization with a table of contents, an index, and
explicit cross referencing;
• Not be redundant (i.e., the same requirement should not appear in more than one
place in the SRS);
• Express each requirement separately, rather than intermixed with other requirements.
8. Traceable: An SRS is traceable if the origin of each of its requirements is clear and if it
facilitates the referencing of each requirement in future development or enhancement
documentation. The following two types of traceability are recommended:
• Backward traceability (i.e., to previous stages of development). This depends upon
each requirement explicitly referencing its source in earlier documents.
• Forward traceability (i.e., to all documents spawned by the SRS). This depends upon
each requirement in the SRS having a unique name or reference number.
9. Structured Analysis
Structured Analysis (SA) is a methodology for determining and documenting the requirements
for a system. It is a front-end methodology that allows users and/or systems analysts to convert a
real-world problem into a pictorial diagram.
There are three orthogonal views related to structured analysis:
• Functional View: This involves data flow diagrams, which define the work that has been
done and the flow of data between things done, thereby providing the primary structure of a
solution.
• Data View: This comprises the entity
relationship diagram and is concerned with what
exists outside the system that is being
monitored.
• Dynamic View: This includes state transition
diagrams and defines when things happen and
the conditions under which they may happen.
Page 8 of 11
Software Engineering Chapter 04: Software Requirement Analysis
At the core of the model lies the data dictionary—a repository that contains descriptions of all
data objects consumed or produced by the software.
The entity relation diagram (ERD) depicts relationships between data objects. The ERD is the
notation that is used to conduct the data modeling activity. The attributes of each data object
noted in the ERD can be described using a data object description.
Data flow diagram describes both the data and functions that are used to transform input data
into output. The data flow diagram (DFD) serves two purposes:
(1) To provide an indication of how data are transformed as they move through the system
and
(2) To depict the functions (and sub-functions) that transforms the data flow.
The DFD provides additional information that is used during the analysis of the information
domain and serves as a basis for the modeling of function. A description of each function
presented in the DFD is contained in a process specification (PSPEC).
The state transition diagram (STD) indicates how the system behaves as a consequence of
external events. To accomplish this, the STD represents the various modes of behavior (called
slates) of the system and the manner in which transitions are made from state to state. The STD
serves as the basis for behavioral modeling. Additional information about the control a specs of
the software is contained in the control specification (CSPEC).
A data flow diagram (DFD) is a design tool to represent the flow of data through an
information system. Following reasons to design data flow diagram:
1. DFDs are easier to understand by technical and nontechnical people
2. DFDs can provide a high level system overview, complete with boundaries and connections to
other systems
3. DFDs can provide a detailed representation of system components
DFDs help system designers and others during initial analysis stages visualize a current system
or one that may be necessary to meet new requirements. DFDs represent the following:
1. External devices sending and receiving data
2. Processes that change that data
3. Data flows themselves
4. Data storage locations
The hierarchical DFD typically consists of a top-level diagram (Level 0) underlain by cascading
lower level diagrams (Level 1, Level 2...) that represent different parts of the system. A "context
level" DFD can be used to show the interaction between a system and outside entities; it can also
show the internal data flows within a system. This version is also called a context diagram. It
often shows the information system as a single circular shape with no details of its inner
workings: what it shows is its relationships with the external entities.
Page 9 of 11
Software Engineering Chapter 04: Software Requirement Analysis
The different levels of a DFD indicate how detailed it is, e.g. a Level 0 DFD is a broad overview
of a system, showing hardly any detail within the system. A level 2 DFD explodes more
summarized processes and shows another level of complexity within them. A level 3 or 4 DFD
shows even more components opened up to show their inner details.
A data flow diagram graphically represents:
• Processes (Function) - jobs that are done with the data. A process transforms incoming
data flow into outgoing data flow.
• data stores - files, databases, archives. They can be manual, digital or temporary.
• external entities/terminators in a business or other system - other systems or people
beyond the control of the current system. These are the places which provide the
organisation with data, or have data sent to them by the organisation (e.g. customers,
partners, government bodies). External entities are sources and destinations of the
system's inputs and outputs.
• connecting data flows - arrows show how data flows from one place to another. Flows
that cross the system boundary are known as Input Output Descriptions. Label the arrows
with the name of the data that moves through it.
Page 10 of 11
Software Engineering Chapter 04: Software Requirement Analysis
Page 11 of 11