Se - Unit - Ii
Se - Unit - Ii
Se - Unit - Ii
Understanding Requirements
REQUIREMENTS ENGINEERING
Requirements analysis, also called requirements engineering, is the process of
determining user expectations for a new or modified product. Requirements engineering is a
major software engineering action that begins during the communication activity and
continues into the modeling activity. It must be adapted to the needs of the process, the project,
the product, and the people doing the work. Requirements engineering builds a bridge to design
and construction.
Requirements engineering provides the appropriate mechanism for understanding what
the customer wants, analyzing need, assessing feasibility, negotiating a reasonable solution,
specifying the solution unambiguously, validating the specification, and managing the
requirements as they are transformed into an operational system. It encompasses seven distinct
tasks: inception, elicitation, elaboration, negotiation, specification, validation, and
management.
Inception : It establish a basic understanding of the problem, the people who want a solution,
the nature of the solution that is desired, and the effectiveness of preliminary communication and
collaboration between the other stakeholders and the software team.
Elicitation: In this stage, proper information is extracted to prepare to document the
requirements. It certainly seems simple enough—ask the customer, the users, and others what the
objectives for the system or product are, what is to be accomplished, how the system or product
fits into the needs of the business, and finally, how the system or product is to be used on a day-
to-day basis.
• Problems of scope. The boundary of the system is ill-defined or the customers/users
specify unnecessary technical detail that may confuse, rather than clarify, overall system
objectives.
• Problems of understanding. The customers/users are not completely sure of what is
needed, have a poor understanding of the capabilities and limitations of their computing
environment, don’t have a full understanding of the problem domain, have trouble
communicating needs to the system engineer, omit information that is believed to be
“obvious,” specify requirements that conflict with the needs of other customers/users, or
specify requirements that are ambiguous or un testable.
• Problems of volatility. The requirements change over time.
Elaboration: The information obtained from the customer during inception and elicitation is
expanded and refined during elaboration. This task focuses on developing a refined requirements
model that identifies various aspects of software function, behavior, and information. Elaboration
is driven by the creation and refinement of user scenarios that describe how the end user (and
other actors) will interact with the system.
Its objective is to bridge the expectation gap – the difference between what the developers think
they are supposed to build and what customers think they are going to get. A team-oriented
approach is developed for requirements gathering. Each attendee is asked to make a list of
objects that are-
Part of the environment that surrounds the system
Produced by the system
Used by the system
Each participant prepares his/her list, different lists are then combined, redundant entries are
eliminated, team is divided into smaller sub-teams to develop mini-specifications and finally a
draft of specifications is written down using all the inputs from the meeting.
4. Quality Function Deployment:
In this technique customer satisfaction is of prime concern, hence it emphasizes on the
requirements which are valuable to the customer.
3 types of requirements are identified –
Normal requirements –
In this the objective and goals of the proposed software are discussed with the customer.
Example – normal requirements for a result management system may be entry of marks,
calculation of results, etc
Expected requirements –
These requirements are so obvious that the customer need not explicitly state them. Example –
protection from unauthorized access.
Exciting requirements –
It includes features that are beyond customer’s expectations and prove to be very satisfying when
present. Example – when unauthorized access is detected, it should backup and shutdown all
processes.
The major steps involved in this procedure are –
Identify all the stakeholders, eg. Users, developers, customers etc
List out all requirements from customer.
A value indicating degree of importance is assigned to each requirement.
In the end the final list of requirements is categorized as –
It is possible to achieve
It should be deferred and the reason for it
It is impossible to achieve and should be dropped off
5. Use Case Approach:
This technique combines text and pictures to provide a better understanding of the requirements.
The use cases describe the ‘what’, of a system and not ‘how’. Hence, they only give a functional
view of the system.
The components of the use case design includes three major things – Actor, Use cases, use case
diagram.
Actor –
It is the external agent that lies outside the system but interacts with it in some way. An actor
maybe a person, machine etc. It is represented as a stick figure. Actors can be primary actors or
secondary actors.
Primary actors – It requires assistance from the system to achieve a goal.
Secondary actor – It is an actor from which the system needs assistance.
Use cases –
They describe the sequence of interactions between actors and the system. They capture
who(actors) do what(interaction) with the system. A complete set of use cases specifies all
possible ways to use the system.
Use case diagram –
A use case diagram graphically represents what happens when an actor interacts with a system. It
captures the functional aspect of the system.
A stick figure is used to represent an actor.
An oval is used to represent a use case.
A line is used to represent a relationship between an actor and a use case.
Designing Use Cases for a Project
How to plan use case?
Following example will illustrate on how to plan use cases:
Use Case: What is the main objective of this use case. For eg. Adding a software component, adding
certain functionality etc.
Primary Actor: Who will have the access to this use case. In the above examples, administrators will have
the access.
Scope: Scope of the use case
Level: At what level the implementation of the use case be.
Flow: What will be the flow of the functionality that needs to be there. More precisely, the work flow of
the use case.
Some other things that can be included in the use cases are:
Preconditions
Postconditions
Brief course of action
Time Period
Use Case Diagram
Below is a sample use case diagram which I have prepared for reference purpose for a sample project
(much like Facebook). It would help us to understand the role of various actors in our project. Various
actors in the below use case diagram are: User and System.
The main use cases are in the system and the diagram illustrates on how the actors interact with the use
cases.For eg. During Sign Up, only users need to interact with the use case and not the system whereas
when it comes to categorizing posts, only system would be required.
Elements of the Requirements Model
Requirements for a computer-based system can be seen in many different ways. Some software people argue
that it’s worth using a number of different modes of representation while others believe that it’s best to select
one mode of representation.
The specific elements of the requirements model are dedicated to the analysis modeling method that is to be
used.
Scenario-based elements :
Using a scenario-based approach, system is described from user’s point of view. For example, basic use cases
and their corresponding use-case diagrams evolve into more elaborate template-based use cases. Figure 1(a)
depicts a UML activity diagram for eliciting requirements and representing them using use cases. There are
three levels of elaboration.
Class-based elements :
A collection of things that have similar attributes and common behaviors i.e., objects are categorized into
classes. For example, a UML case diagram can be used to depict a Sensor class for the SafeHome security
function. Note that diagram lists attributes of sensors and operations that can be applied to modify these
attributes. In addition to class diagrams, other analysis modeling elements depict manner in which classes
collaborate with one another and relationships and interactions between classes.
Behavioral elements :
Effect of behavior of computer-based system can be seen on design that is chosen and implementation
approach that is applied. Modeling elements that depict behavior must be provided by requirements model.
Method for representing behavior of a system by depicting its states and events that cause system to change
state is state diagram. A state is an externally observable mode of behavior. In addition, state diagram
indicates actions taken as a consequence of a particular event.
To illustrate use of a state diagram, consider software embedded within safeHome control panel that is
responsible for reading user input. A simplified UML state diagram is shown in figure 2.
Flow-oriented elements :
As it flows through a computer-based system information is transformed. System accepts input, applies
functions to transform it, and produces output in a various forms. Input may be a control signal transmitted
by a transducer, a series of numbers typed by human operator, a packet of information transmitted on a
network link, or a voluminous data file retrieved from secondary storage. Transform may compromise a
single logical comparison, a complex numerical algorithm, or a rule-inference approach of an expert system.
Output produce a 200-page report or may light a single LED. In effect, we can create a flow model for any
computer-based system, regardless of size and complexity.
Analysis Model is a technical representation of the system. It acts as a link between system
description and design model. In Analysis Modelling, information, behavior, and functions of the
system are defined and translated into the architecture, component, and interface level design in
the design modeling.
Objectives of Analysis Modelling:
It must establish a way of creating software design.
It must describe the requirements of the customer.
It must define a set of requirements that can be validated, once the software is built.
Process Specification:
It stores the description of each function present in the data flow diagram. It describes the input
to a function, the algorithm that is applied for the transformation of input, and the output that is
produced. It also shows regulations and barriers imposed on the performance characteristics that
are applicable to the process and layout constraints that could influence the way in which the
process will be implemented.
Control Specification:
It stores additional information about the control aspects of the software. It is used to indicate
how the software behaves when an event occurs and which processes are invoked due to the
occurrence of the event. It also provides the details of the processes which are executed to
manage events.
Software is treated as a good software by the means of different factors. A software product is concluded as a
good software by what it offers and how well it can be used. The factors that decide the software properties
are divided into three categories: Operational, Transitional, and Maintenance. These are explained as
following below.
Software engineering is the process of designing, developing, and maintaining software systems. A good
software is one that meets the needs of its users, performs its intended functions reliably, and is easy to
maintain. There are several characteristics of good software that are commonly recognized by software
engineers, which are important to consider when developing a software system. These characteristics include
functionality, usability, reliability, performance, security, maintainability, reusability, scalability, and
testability.
1. Operational: In operational categories, the factors that decide the software performance in operations. It
can be measured on:
Budget
Usability
Efficiency
Correctness
Functionality
Dependability
Security
Safety
2. Transitional: When the software is moved from one platform to another, the factors deciding the software
quality:
Portability
Interoperability
Reusability
Adaptability
3. Maintenance: In this categories all factors are included that describes about how well a software has the
capabilities to maintain itself in the ever changing environment:
Modularity
Maintainability
Flexibility
Scalability
Good software is characterized by several key attributes, including:
Functionality: The software meets the requirements and specifications that it was designed for, and it
behaves as expected when it is used in its intended environment.
Usability: The software is easy to use and understand, and it provides a positive user experience.
Reliability: The software is free of defects and it performs consistently and accurately under different
conditions and scenarios.
Performance: The software runs efficiently and quickly, and it can handle large amounts of data or traffic.
Security: The software is protected against unauthorized access and it keeps the data and functions safe from
malicious attacks.
Maintainability: The software is easy to change and update, and it is well-documented, so that it can be
understood and modified by other developers.
Reusability: The software can be reused in other projects or applications, and it is designed in a way that
promotes code reuse.
Scalability: The software can handle an increasing workload and it can be easily extended to meet the
changing requirements.
Testability: The software is designed in a way that makes it easy to test and validate, and it has a
comprehensive test coverage.
By adhering to these characteristics, software engineers can develop software that is functional, reliable, and
maintainable, thus providing the best experience to the end-users.
In order to form a good SRS, here you will see some points which can be used and should be considered to
form a structure of good SRS. These are as follows :
1. Introduction
(i) Purpose of this document
(ii) Scope of this document
(iii) Overview
2. General description
3. Functional Requirements
4. Interface Requirements
5. Performance Requirements
6. Design Constraints
7. Non-Functional Attributes
8. Preliminary Schedule and Budget
9. Appendices
Software Requirement Specification (SRS) Format as name suggests, is complete specification and
description of requirements of software that needs to be fulfilled for successful development of software
system. These requirements can be functional as well as non-functional depending upon type of requirement.
The interaction between different customers and contractor is done because its necessary to fully understand
needs of customers. Depending upon information gathered after
interaction, SRS is developed which describes requirements of software that may include changes and
modifications that is needed to be done to increase quality of product and to satisfy customer’s demand.
Introduction :
(i) Purpose of this Document – At first, main aim of why this document is necessary and what’s purpose of
document is explained and described.
(ii) Scope of this document – In this, overall working and main objective of document and what value it will
provide to customer is described and explained. It also includes a description of development cost and time
required.
(iii) Overview – In this, description of product is explained. It’s simply summary or overall review of product.
General description : In this, general functions of product which includes objective of user, a user
characteristic, features, benefits, about why its importance is mentioned. It also describes features of user
community.
Functional Requirements : In this, possible outcome of software system which includes effects due to
operation of program is fully explained. All functional requirements which may include calculations, data
processing, etc. are placed in a ranked order.
Interface Requirements : In this, software interfaces which mean how software program communicates with
each other or users either in form of any language, code, or message are fully described and explained.
Examples can be shared memory, data streams, etc.
Performance Requirements : In this, how a software system performs desired functions under specific
condition is explained. It also explains required time, required memory, maximum error rate, etc.
Design Constraints : In this, constraints which simply means limitation or restriction are specified and
explained for design team. Examples may include use of a particular algorithm, hardware and software
limitations, etc.
Non-Functional Attributes : In this, non-functional attributes are explained that are required by software
system for better performance. An example may include Security, Portability, Reliability, Reusability,
Application compatibility, Data integrity, Scalability capacity, etc.
Preliminary Schedule and Budget : In this, initial version and budget of project plan are explained which
include overall time duration required and overall cost required for development of project.
Appendices : In this, additional information like references from where information is gathered, definitions
of some specific terms, acronyms, abbreviations, etc. are given and explained.
Uses of SRS document:
Development team require it for developing product according to the need.
Test plans are generated by testing group based on the describe external behavior.
Maintenance and support staff need it to understand what the software product is
supposed to do.
Project manager base their plans and estimates of schedule, effort and resources on it.
customer rely on it to know that product they can expect.
As a contract between developer and customer.
in documentation purpose.