1
requirements specification. The term requirements analysis can also be applied specifically to the
analysis proper, as opposed to elicitation or documentation of the requirements, for instance.
Requirements describe
“WHAT” of a system not “HOW”
Requirement engineering is a sub discipline of software engineering that is concerned with
determining the goals, functions, and constrains of software systems. Ideally the requirement
engineering process begins with a feasibility study activity, which leads to a feasibility report. If
the feasibility study suggested that the product should be developed, then requirement analysis
can begin. If requirement analysis precedes feasibility studies, which may foster outside the box
thinking, then feasibility should be determined before requirements are finalized.
2
Present State of Practice
Most software development organizations agree to fact that there should be a set of activities
called requirement engineering and their success is vital to the success of the entire project.
There are some problems:-
1. Requirements are difficult to uncover
2. Requirements change
3. Over reliance on CASE Tools
4. Tight project Schedule
5. Communication barriers
6. Market driven software development
7. Lack of resources
3
Requirements Engineering
R e q u i r e m e n t s E n g i n
R e q u ir e m e R n e t sq u E i r l ie c m i t a e t ni o t ns
R e q u i r e m eR n e t qs u S i r p e e m c e i f ni c t a s t
R e q u i r e m e n t s M a n a g e m
Type of Requirements
Stakeholder: Anyone who should have some direct or indirect influence on the system
requirements. ”Stakeholders” includes end-users who will interact with the system and
everyone else in an organization who will be affected by it.
4
Functional and Non-Functional Requirements
Software requirements are broadly classified as functional and non-functional requirements.
Functional Requirement: - Statements of services the system should provide how
the system should react to particular inputs and how the system should behave in
particular situations. They describe what the software has to do. They are also called
product features. These are directly related to customer’s expectations and essential for
the acceptance of product.
It mainly describe:-
• 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 but functional system requirements should describe the system services in detail.
Non-functional classifications
Product requirements
– Requirements which specify that the delivered product must behave in a particular way e.g.
execution speed, reliability, etc.
Organizational requirements
– Requirements which are a consequence of organizational policies and procedures e.g. process
standards used, implementation requirements, etc.
5
External requirements
– Requirements which arise from factors which are external to the system and its development
process e.g. interoperability requirements, legislative requirements, etc.
Interface Specification
Interfaces issues are very important for the customers. A good software may not be appreciated if
interfaces are not as per expectations of the customers. The types of interfaces are:
1. Procedural interfaces: -These are called Application Programming Interfaces
(APIs).
2. Data Structures: -Used to transfer information from one module to another module.
3. Representation of data: -The issues related to ordering of bits are established here.
Feasibility Studies
A feasibility study looks at the viability of an idea with an emphasis on identifying potential
problems and attempts to answer one main question: Will the idea work and should you proceed
with it?
Before you begin writing your business plan you need to identify how, where, and to whom you
intend to sell a service or product. You also need to assess your competition and figure out how
much money you need to start your business and keep it running until it is established.
Feasibility studies address things like where and how the business will operate. They provide in-
depth details about the business to determine if and how it can succeed, and serve as a valuable
tool for developing a winning business plan.
6
Why Are Feasibility Studies so Important?
The information you gather and present in your feasibility study will help you:
• List in detail all the things you need to make the business work;
• Identify logistical and other business-related problems and solutions;
• Develop marketing strategies to convince a bank or investor that your business is worth
considering as an investment; and
• Serve as a solid foundation for developing your business plan.
Even if you have a great business idea you still have to find a cost-effective way to market and
sell your products and services. This is especially important for store-front retail businesses
where location could make or break your business.
For example, most commercial space leases place restrictions on businesses that can have a
dramatic impact on income. A lease may limit business hours/days, parking spaces, restrict the
product or service you can offer, and in some cases, even limit the number of customers a
business can receive each day.
7
that clarity. During the Feasibility Study, a variety of 'assessment' methods are undertaken.
The outcome of the Feasibility Study is a confirmed solution for implementation.
Steve McConnell has given the following points on which a feasibility study should focus and
give proper emphasis to get good results:
The work done during the first 10-20 percent of the project should sufficiently answer these
questions and give the top management enough information to decide whether to fund the rest of
the project.
8
Chapter 2
Requirements Elicitation
Requirement elicitation is perhaps most difficult, most critical, most error-prone, and most
communication intensive aspect of software development. Elicitation can succeed only through
an effective customer-developer partnership. Requirements elicitation comprises activities that
enable the understanding of the goals, objectives, and motives for building a proposed software
system. Elicitation also involves identifying the requirements that the resulting system must
satisfy in order to achieve these goals.
• Context-free questions can help achieve bias-free interviews – See course web site for
examples.
• Convergence on some common needs will initiate a “requirements repository” for use
during the project.
Selection of stakeholder
9
1. Entry level personnel
2. Middle level stakeholder
3. Managers
4. Users of the software (Most important)
• Examples:
• Context-free questions also parallel the questions salespeople are taught to ask as part of
a technique called “solutions selling.”
Brainstorming
• Brainstorming involves both idea generation and idea reduction.
• The most creative, innovative ideas often result from combining, seemingly unrelated
ideas.
• Various voting techniques may be used to prioritize the ideas created.
• Although live brainstorming is preferred, web-based brainstorming may be a viable
alternative in some situations
10
Rules for Brainstorming
• Do not allow criticism or debate.
• Let your imagination soar
• Generate as many ideas as possible
• Mutate and combine ideas
• Idea Reduction
– Pruning ideas that are not worthy of further discussion
– Grouping of similar ideas into one super topic
• Prioritize the remaining ideas
Guidelines
1. Arrange a meeting at a neutral site.
2. Establish rules for participation.
3. Informal agenda to encourage free flow of ideas.
4. Appoint a facilitator.
5. Prepare definition mechanism board, worksheets, wall
6. stickier.
7. Participants should not criticize or debate.
11
A use case is a technique for documenting the potential requirements of a new system or
software change. Each use case provides one or more scenarios that convey how the system
should interact with the end user or another system to achieve a specific business goal. Use cases
are often co-authored by requirements engineers and stakeholders.
Use cases are deceptively simple tools for describing the behavior of software or systems. A use
case contains a textual description of all of the ways which the intended users could work with
the software or system. Use cases do not describe any internal workings of the system, nor do
they explain how that system will be implemented. They simply show the steps that a user
follows to perform a task. All the ways that users interact with a system can be described in this
manner.
Jacobson & others proposed a template for writing Use cases as shown below:
Flow of Events
12
Chapter 3
Requirements Analysis
Requirements analysis in systems engineering and software engineering, encompasses
those tasks that go into determining the needs or conditions to meet for a new or altered product,
taking account of the possibly conflicting requirements of the various stakeholders, such as
beneficiaries or users.
Requirements analysis, also called requirements engineering, is the process of determining user
expectations for a new or modified product. These features, called requirements, must be
quantifiable, relevant and detailed. In software engineering, such requirements are often called
13
functional specifications. Requirements analysis is an important aspect of project
management.
Requirements analysis is the first stage in the systems engineering process and software
development process.
Requirement analysis is concerned with the process of analyzing requirements to
The traditional view of requirements analysis has been that it be reduced to conceptual modeling
using one of a number of analysis methods such as the Structured Analysis and Design
Technique (SADT). While conceptual modeling is important, we include the classification of
requirements to help inform trade-offs between requirements (requirements classification) and
the process of establishing these trade-offs (requirements negotiation).
Care must be taken to describe requirements precisely enough to enable the requirements to be
validated, their implementation to be verified, and their costs to be estimated.
Difficulties
• Complex problems, unknown domains, nontechnical customers, communication-
intensive
Essential tools
• Classification of requirements
14
• Use cases
Analysis Principals
1. Information domain of a problem must be represented and understood
2. Required functions must be defined
3. Behavior of software must be represented
4. Models that depict information, function, and behavior must be partitioned in a layered or
hierarchical fashion
5. Analysis process should move from essential info to implementation detail.
15
Analysis model elements
1 Data Dictionary
Contains descriptions of all data objects used
2 Entity-Relationship Diagram (ERD)
Describes relationships between data objects
3 Data Flow Diagram (DFD)
Describes data flow & transformation
4 State Transition Diagram (STD)
Describes system behavior
On a DFD, data items flow from an external data source or an internal data store to an internal
data store or an external data sink, via an internal process.
16
A DFD provides no information about the timing or ordering of processes, or about whether
processes will operate in sequence or in parallel. It is therefore quite different from a flowchart,
which shows the flow of control through an algorithm, allowing a reader to determine what
operations will be performed, in what order, and under what circumstances, but not what kinds
of data will be input to and output from the system, nor where the data will come from and go to,
nor where the data will be stored (all of which are shown on a DFD).
There are only five symbols that are used in the drawing of business process diagrams
(dataflow diagrams). These are now explained, together with the rules that apply to them.
This diagram represents a banking process, which maintains customer accounts. In this
example, customers can withdraw or deposit cash, request information about their account or
update their account details. The five different symbols used in this example represent the
full set of symbols required to draw any business process diagram.
External Entity:-
An external entity is a source or destination of a data flow which is outside the area of
study. Only those entities which originate or receive data are represented on a business
process diagram. The symbol used is an oval containing a meaningful and unique
identifier.
17
Process
A process shows a transformation or manipulation of data flows within the system. The
symbol used is a rectangular box which contains 3 descriptive elements:
Firstly an identification number appears in the upper left hand corner. This is allocated
arbitrarily at the top level and serves as a unique reference.
Secondly, a location appears to the right of the identifier and describes where in the
system the process takes place. This may, for example, be a department or a piece of
hardware. Finally, a descriptive title is placed in the centre of the box. This should be a
simple imperative sentence with a specific verb, for example 'maintain customer records'
or 'find driver'.
Data Flow
A data flow shows the flow of information from its source to its destination. A data flow
is represented by a line, with arrowheads showing the direction of flow. Information
always flows to or from a process and may be written, verbal or electronic. Each data
flow may be referenced by the processes or data stores at its head and tail, or by a
description of its contents.
Data Store
18
A data store is a holding place for information within the system:
It is represented by an open ended narrow rectangle.
Data stores may be long-term files such as sales ledgers, or may be short-term accumulations:
for example batches of documents that are waiting to be processed. Each data store should be
given a reference followed by an arbitrary number.
Resource Flow
A resource flow shows the flow of any physical material from its source to its destination. For
this reason they are sometimes referred to as physical flows.
The physical material in question should be given a meaningful name. Resource flows are
usually restricted to early, high-level diagrams and are used when a description of the physical
flow of materials is considered to be important to help the analysis.
Data dictionaries
Data dictionaries are simply repositories to store information about all data items defined in
DFDs. As the requirements stage, the data dictionary should at least define customer data items,
to ensure that the customer and developer use the same definitions and terminologies. Typical
information stored includes:
The name of the data item is self explanatory. Aliases include other names by which this data
item is called e.g., DEO for data entry operator and DR for Deputy Registrar.
Description/purpose is a textual description of what the data item is used for or why it exists.
Related data item capture relationship between data items capture relationships between data
items.
The data dictionary can be used to:
• Create on ordered listing of all data items.
19
• Find a data item name from a description.
Entities
An entity is a real-world item or concept that exists on its own. In our example, a particular
student (such as, "Emanuel Vagas"), team, lab section, or experiment is an entity.
The set of all possible values for an entity, such as all possible students, is the entity
type. In an ER model, we diagram an entity type as a rectangle containing the type
name, such as student
Definition An entity is a real-world item or concept that exists on its own. The set
of all possible values for an entity is the entity type.
20
Attributes
Each entity has attributes, or particular properties that describe the entity. For example,
student Emanuel Vagas has properties of his own Student Identification number,
name, and grade. A particular value of an attribute, such as 93 for the grade, is a
value of the attribute. Most of the data in a database consists of values of attributes.
The set of all possible values of an attribute, such as integers from 0 to 100 for a
grade, is the attribute domain. In an ER model, an attribute name appears in an
oval that has a line to the corresponding entity box, such as in Figure 3.
Relationship
A relationship type is a set of associations among entity types. For example, the student entity
type is related to the team entity type because each student is a member of a team. In this case, a
relationship or relationship instance is an ordered pair of a specific student and the student's
particular physics team, such as (Emanuel Vagas, Phys201F2005A04), where
Phys201F2005A04 is Emanuel's team number. Figure 8 illustrates three relationships.
Unfortunately, Itnatios Trekas had to drop the course and retake it another semester.
Consequently, his name is associated with two team numbers.
21
We use a diamond to illustrate the relationship type in an ER diagram, such as in Figure 9.
We arrange the diagram so that the relationship reads from left to right, "a student is a
member of a team." Alternatively, we can arrange the components from top to bottom.
22
Developing an ERD
Developing an ERD requires an understanding of the system and its components.
Consider a hospital:
Patients are treated in a single ward by the doctors assigned to them. Usually each patient
will be assigned a single doctor, but in rare cases they will have two.
Healthcare assistants also attend to the patients; a number of these are associated with each
ward.
Initially the system will be concerned solely with drug treatment. Each patient is required
to take a variety of drugs a certain number of times per day and for varying lengths
of time.
The system must record details concerning patient treatment and staff payment. Some staff
is paid part time and doctors and care assistants work varying amounts of overtime
at varying rates (subject to grade).
The system will also need to track what treatments are required for which patients and
when and it should be capable of calculating the cost of treatment per week for each
patient (though it is currently unclear to what use this information will be put).
2. Define Relationships: these are usually verbs used in descriptions of the system or in
discussion of the business rules (entity ______ entity); identified in the narrative.
3. Add attributes to the relations: these are determined by the queries, and may also
suggest new entities, e.g. grade; or they may suggest the need for keys or identifiers.
23
4. Add cardinality to the relations
Sometimes involves introduction of a link entity (which will be all foreign key) Examples:
Patient-Drug
Reading an ERD
It takes some practice reading an ERD, but they can be used with clients to discuss business
rules.
These allow us to represent the information from above such as the E-R Diagram below:
24
There are three types of relationships between entities:
One-to-One: one instance of an entity (A) is associated with one other instance of another
entity (B). For example, in a database of employees, each employee name (A) is
associated with only one social security number (B). One-to-one relationships
One-to-Many: one instance of an entity (A) is associated with zero, one or many
instances of another entity (B), but for one instance of entity B there is only one instance
of entity A. For example, for a company with all employees working in one building,
the building name (A) is associated with many different employees (B), but those
employees all share the same singular association with entity A.
Many-to-many: one instance of an entity (A) is associated with one, zero or many
instances of another entity (B), and one instance of entity B is associated with one, zero
or many instances of entity A. For example, for a company in which all of its employees
work on multiple projects, each instance of an employee (A) is associated with many
instances of a project (B), and at the same time, each instance of a project (B) has
multiple employees (A) associated with it.
Software Prototyping
A prototype is a working model of one or more aspects of the project system. It is constructed
and tested quickly and inexpensively in order to test out assumptions.
Two most popular prototyping approaches: -
Throw-away prototypes: -Here the prototype is used only to test out some ideas and is then
discarded when the true development of the operational system is commenced. The prototype
could be developed using a different software environment or even on a different kind of
hardware platform.
25
Evolutionary prototypes: -The prototype is developed and modified until it is finally in a
state where it can become the operational system. In this case the standards that are used to
develop the software have to be carefully considered.
Requirements Documentation
• Requirements documentation is very important activity after the requirements elicitation
and analysis. This is the way to represent requirements in a consistent format.
Requirements documentation is called Software Requirements Specification (SRS).
• The requirements document is the official statement of what is required of the system
developers.
• Should include both a definition and a specification of requirements.
• It is NOT a design document. As far as possible, it should set of WHAT the system
should do rather than HOW it should do it.
• The SRS is a specification for a particular software product, program or set of programs
that performs certain functions in a specific environment. It serves a number of purposes
depending on who is writing it.
• First, the SRS could be written by the customer of a system. It is used to define
the needs and expectations of the customers.
• Second, the SRS could be written by a developer of the system. In this SRS is
written for different purpose and serve as a contract document between customer
and developer.
26
Since the SRS has a specific role to play in the software development process, SRS writer(s)
should be careful not to go beyond the bounds of that role. This means the SRS
1. Should correctly define all the software requirements. A software requirement may exist
because of the nature of the task to be solved or because of a special characteristic of the
project.
2. Should not describe any design or implementation details. These should be described in
the design stage of the project.
3. Should not impose additional constraints on the software. These are properly specified in
other documents such as a software quality assurance plan.
27
4. Conceptual integrity: -The SRS document should exhibit conceptual integrity so
that the reader can easily understand the contents.
5. Response to undesired events: -The document should characterize acceptable
responses to undesired events. These are called system responses to exceptional
conditions.
6. Verifiable: -All requirements of the system as documented in the SRS document
should be verifiable. This means that it should be possible to determine whether or not
requirements have been met in an implementation. Requirements such as ‘the system
should be user friendly’ are not verifiable.
7. Traceable: - It means that it would be possible to tell which design components
corresponds to which requirement, which code corresponds to which design component,
and which test case corresponds to which requirements, etc. Two types of traceability are
recommended.
a. Backward Traceability: -This depends upon each requirement explicitly
referencing its source in earlier documents. It is especially important when the
software product enters the operation and maintenance phase.
b. Forward Traceability: -This depends upon each requirement in the SRS
having a unique name or reference number.
28
b. Identify each document by title, report number (if applicable), date and publishing
organization.
c. Specify the sources from which the references can be obtained.
5) Overview: -
a. Describe what the rest of the SRS contains.
b. Explain how the SRS is organized.
2. The Overall Description: -Describe the general factors that affect the product and its
requirements. It provides a background for those requirements, which are defined and make them
easier to understand.
1) Product Perspective: -Put the product into perspective with other related products. If the
product is independent and totally self-contained, it should be so stated here. If the SRS
defines a product that is a component of a larger system, as frequently occurs, then this
relates to the requirements of the larger system to functionality of the software and
identifies interfaces between that system and software.
2) Product Functions: -Provide a summary of the major functions that the software will
perform. Sometimes the function summary that is necessary for this part can be taken
from the section of higher-level specification (if one exists) that allocates particular
functions to the software product.
3) User Characteristics: -Describe those general characteristics of the intended users of the
product including educational level, experience, and technical expertise. Do not state
specific requirements.
4) Constraints: -Provide a general characteristic of any other items that will limit the
developer’s options. These can include regulatory policies, interface to other applications,
parallel operation, audit functions, control functions, reliability requirements, etc.
5) Assumptions and Dependencies: -List of factors that affect the requirements stated in
the SRS. These factors are not design constraints on the software but are, rather any
changes to them that can affect the requirements in the SRS.
6) Apportioning of Requirements: -Identify requirements that may be delayed until future
versions of the system.
3. Specific Requirements
1) External Interfaces: -This contains a detailed description of all inputs into and outputs
from the software system. It complements the interface description.
2) Functions: -Functional requirement define the fundamental actions that must take place
in the software in accepting and processing the inputs and in processing and generating
the output.
29
3) Performance Requirements: -This specifies both static and dynamic numerical
requirements placed on the software or on human interaction with the software, as a
whole.
4) Logical Database Requirements: -This specifies the logical requirements for any
information that is to be placed into a database.
5) Design Constraints: -Specify design constraints that can be imposed by other standards,
hardware limitations, etc.
6) Software System Attributes: -There are number of quality attributes of software that can
serve as requirements. Some of them are reliability, security, availability, maintainability
and portability.
7) Organizing the Specific Requirements: -For anything but trivial systems the detailed
requirements tend to be extensive. Some of these organizations are described as user
class, objects, features, stimulus, response and functional hierarchy.
5. Document Approval: -Identify the approvers of the SRS document. Approver’s name,
signature, and date should be used.
Requirements Validation
Check that our requirements definitions accurately reflect all of the stakeholders’ needs
(i.e., we build the system right).
The objective of requirements validation is to certify that the SRS document is an acceptable
document of the system to be implemented. This helps us to find errors in the document and
improves the quality of the software development process. Sometimes we confuse between
analysis and validation. However, analysis works with raw requirements as elicited from the
various stakeholders whereas validation works with a final draft of the SRS document with
negotiated and agreed requirements.
There are many requirement validation techniques
30
SRS document: -It should be a final draft, not an unfinished draft and should be
formatted/organized as per IEEE standards.
Organizational standards: -Every organization should have some quality standards for
SRS document and other activities. These standards will be used for reviewing during validation.
Organizational knowledge: -Knowledge, often implicit, of the organization which may be
used to judge the realism of the requirements.
Problem list: -List of discovered problems in the requirements document.
Approved actions: -List of approved actions in response to the requirements problems.
Requirements reviews
This is a popular requirements validation technique where a group of people will read the
SRS document and look for possible problems. These identified problems may be discussed
in the group and some actions may also be approved in order to get rid of these problems.
The requirements review processes are:-
1. Plan review: -The review team is selected and time and place for review meeting is
fixed.
2. Distribute SRS document: -The SRS document is distributed to all the members.
3. Read SRS document: -Each member should read the document carefully to find
conflicts, omissions, inconsistencies, deviations from standards and other problems.
4. Organize review meeting: -Each member presents his/her views and identified
problems. The problems are discussed and set of actions to address the problem is
approved.
5. Follow-up actions: - The chairperson of the team checks the approved actions have
been carried out.
6. Revise SRS document:-The SRS document is revised to reflect the approved
actions. At this stage, it may be accepted or may be reviewed.
31
Are the requirements unambiguous?
• Multiple readers (reviewers) of the document should not walk away with different but
valid interpretations of the document
Are the requirements complete?
• The requirements is considered to be specifies required behavior and output for all
possible inputs in all possible states.
Are the requirements feasible?
• Does a solution to the customer needs exist?
Is every requirement relevant?
• Check if the requirements include functions that are unrelated to the customers’ needs.
Are the requirements testable?
Are the requirements traceable?
• Requirements are organized and uniquely labeled (enumerated) for reference. Every entry
in the requirements definition has a corresponding entry in the requirements specification,
and vice versa.
Requirement Management
Requirement management is a new term which has been rapidly adopted by industry. It is a
process of understanding and controlling changes to system requirements. Most of the times,
requirements are not independent; but are dependent on each other. Hence, one change may have
implications on other requirements and thus make the task much more difficult and challenging.
Enduring and Volatile Requirements
i. Enduring Requirements: -These are core requirements and are related to main
activity of the organization. For a library management system, issue/return a book,
cataloging etc. are core activities and are stable for any system. Hence, enduring
requirements are stable and are not changed easily.
ii. Volatile requirements: -These requirements are likely to change during software
development life cycle or even after delivery of the product. There are many reasons for
such changes some of the reasons are:
• Changes in technology
• Changes in policies
32
• Changes in customer’s expectations
• Creating requirements traces throughout the project life cycle from inception to
the final work products (Requirements traceability).
III. Documentation: - It is required to keep track of every activity of the project. Success
of any software project lies in the documentation. It is very pertinent to note that without
documentation, project future is in dark and with every passing day, it leads towards
disaster.
34
Chapter 4
Tools of requirement engineering
35
Active Focus from Falafel Software (formerly Xapware)
It is said to support the software application life-cycle.
36
of visual requirements engineering (VRE). In VRE requirements are linked to visual
high-level models of the system under design. Requirements specified in ARCWAY
Cockpit can be imported from and exported to MS Excel. A fully customizable MS Word,
HTML and Docbook report interfaces allows for ad-hoc reports of specific requirements
or complete specification documents."
37
planning is completed early in the development project and all tests are 100% traceable
to high-quality validated requirements.
38
Conclusion
Fritz Bauer defined software engineering as “The establishment and use of sound engineering
principles in order to obtain economically developed software that is reliable and works
efficiently on real machines.”
Stephen Schach defined the same as “A discipline whose aim is the production of
quality software, software that is delivered on time, within budget, and that satisfies its
requirements.”
Requirements analysis in systems engineering and software engineering, encompasses those
tasks that go into determining the needs or conditions to meet for a new or altered product, taking
account of the possibly conflicting requirements of the various stakeholders, such as
beneficiaries or users. Requirements analysis is critical to the success of a development project.
Requirements must be actionable, measurable, testable, related to identified business needs or
opportunities, and defined to a level of detail sufficient for system design.
Thus we can conclude that, “Requirements engineering is the branch of
software engineering concerned with the real world goals for, functions of,
and constraints on software systems. It is also concerned with the relationship
of these factors to precise specifications of software behavior, and to their
evolution over time and across software families.”
39