Software Engineering Unit 2
Software Engineering Unit 2
ENGINEERING
Functional Requirement
Essentially, they are what the system does or must not do, and can be thought of in terms
of how the system responds to inputs.
Functional requirements usually define if/then behaviours and include calculations, data
input, and business processes.
This behavior may be expressed as functions, services or tasks or which system is required to
perform.
Functional Requirement
They represent a set of standards used to judge the specific operation of a system.
While functional requirements define what the system does or must not do, non-functional requirements
specify how the system should do it
Non-functional requirements do not affect the basic functionality of the system (hence the name, non-
functional requirements)
Even if the non-functional requirements are not met, the system will still perform its basic purpose.
A non-functional requirement is essential to ensure the usability and effectiveness of the entire software
system. Failing to meet non-functional requirements can result in systems that fail to satisfy user needs.
Non-functional Requirements allows you to impose constraints or restrictions on the design of the system
across the various agile backlogs.
A website should be capable enough to handle 20 million users with affecting its
performance
The software should be portable. So moving from one OS to other OS does not
create any problem.
Helps you to check whether the application is providing all the functionalities that were mentioned in the
functional requirement of that application
A functional requirement document helps you to define the functionality of a system or one of its
subsystems.
Functional requirements along with requirement analysis help identify missing requirements. They help
clearly define the expected system service and behavior.
Errors caught in the Functional requirement gathering stage are the cheapest to fix.
Functional requirement can be expressed in Use Case form or user story as they exhibit externally visible
functional behavior.
Advantages of Non-functional Requirement:
The nonfunctional requirements ensure the software system follow legal and
compliance rules.
They ensure the reliability, availability, and performance of the software system
They ensure good user experience and ease of operating the software.
User requirements, often referred to as user needs, describe what the user does with the
system, such as what activities that users must be able to perform.
User requirements are generally documented in a User Requirements Document (URD) using
narrative text.
User requirements are generally signed off by the user and used as the primary input for
creating system requirements.
An important and difficult step of designing a software product is determining what the user
actually wants it to do.
This is because the user is often not able to communicate the entirety of their needs and wants,
and the information they provide may also be incomplete, inaccurate and self-conflicting.
The responsibility of completely understanding what the customer wants falls on the business
analyst.
This is why user requirements are generally considered separately from system requirements.
The business analyst carefully analyzes user requirements and carefully constructs and
documents a set of high quality system requirements ensuring that that the requirements meet
certain quality characteristics.
Content presentation
Easy Navigation
Simple interface
Responsive
Consistent UI elements
Feedback mechanism
Default settings
Purposeful layout
System requirements are the building blocks developers use to build the system.
These are the traditional “shall” statements that describe what the system “shall do.”
The plan for implementing functional requirements is detailed in the system design.
◦ Accessibility
◦ Accuracy
◦ Audit, control, and reporting
◦ Availability
◦ Backup and restore
◦ Capacity, current and forecast
◦ Certification etc….
Requirement Engineering:
The process to gather the software requirements from client, analyze and document them is known as
requirement engineering.
The goal of requirement engineering is to develop and maintain sophisticated and descriptive ‘System
Requirements Specification’ document.
Requirements engineering (RE) refers to the process of defining, documenting, and maintaining
requirements in the engineering design process.
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 working system.
Thus, requirement engineering is the disciplined application of proven principles, methods, tools, and
notation to describe a proposed system's intended behavior and its associated constraints.
Requirement Engineering Process
Referencing to this information, the analysts does a detailed study about whether the
desired system and its functionality are feasible to develop.
This study analyzes whether the software product can be practically materialized
in terms of implementation, contribution of project to organization, cost
constraints and as per values and objectives of the organization.
Requirement Gathering:
If the feasibility report is positive towards undertaking the project, next phase starts
with gathering requirements from the user.
Analysts and engineers communicate with the client and end-users to know their
ideas on what the software should provide and which features they want the
software to include.
Software Requirement Specification
SRS is a document created by system analyst after the requirements are collected
from various stakeholders.
SRS defines how the intended software will interact with hardware, external
interfaces, speed of operation, response time of system, portability of software
across various platforms, maintainability, speed of recovery after crashing,
Security, Quality, Limitations etc.
The requirements received from client are written in natural language. It is the
responsibility of system analyst to document the requirements in technical
language so that they can be comprehended and useful by the software
development team.
SRS should come up with following features:
User Requirements are expressed in natural language.
this document are validated. User might ask for illegal, impractical solution or
experts may interpret the requirements incorrectly. This results in huge increase
in cost if not nipped in the bud. Requirements can be checked against
following conditions:
Requirements gathering - The developers discuss with the client and end users and know
their expectations from the software.
Organizing Requirements - The developers prioritize and arrange the requirements in order
of importance, urgency and convenience.
Negotiation & discussion - If requirements are ambiguous or there are some conflicts in
requirements of various stakeholders, if they are, it is then negotiated and discussed with
stakeholders. Requirements may then be prioritized and reasonably compromised.
The requirements come from various stakeholders. To remove the ambiguity and conflicts,
they are discussed for clarity and correctness. Unrealistic requirements are compromised
reasonably.
Documentation - All formal & informal, functional and non-functional requirements are
documented and made available for next phase processing.
Requirement Elicitation Techniques
Requirements Elicitation is the process to find out the requirements for an intended software system
by communicating with client, end users, system users and others who have a stake in the software
system development.
Interviews
Interviews are strong medium to collect requirements. Organization may conduct several types of
interviews such as
Structured (closed) interviews, where every single information to gather is decided in advance, they
follow pattern and matter of discussion firmly.
Non-structured (open) interviews, where information to gather is not decided in advance, more
flexible and less biased.
Oral interviews
Written interviews
One-to-one interviews which are held between two persons across the table.
Group interviews which are held between groups of participants. They help to
uncover any missing requirement as numerous people are involved.
Surveys
Organization may conduct surveys among various stakeholders by querying about their
Questionnaires
A document with pre-defined set of objective questions and respective options is handed
Task analysis
Team of engineers and developers may analyze the operation for which the new
system is required. If the client already has some software to perform certain
operation, it is studied and requirements of proposed system are collected.
Domain Analysis
Every software falls into some domain category. The expert people in the domain
Brainstorming
An informal debate is held among various stakeholders and all their inputs are
Prototyping
Prototyping is building user interface without adding detail functionality for user to
The prototype is shown to the client and the feedback is noted. The client feedback
serves as an input for requirement gathering.
Observation
Team of experts visit the client’s organization or workplace. They observe the
They observe the workflow at client’s end and how execution problems are dealt.
The team itself draws some conclusions which aid to form requirements expected
from the software.
Software Requirements Characteristics
Gathering software requirements is the foundation of the entire software development
Requirements validation is the process of checking that requirements defined for development, define the
system that the customer really wants
We usually use requirements validation to check error at the initial phase of development as the error may
increase excessive rework when detected later in the development process.
In the requirements validation process, we perform a different type of test to check the requirements which
include
Completeness checks
Consistency checks
Validity checks
Realism checks
Ambiguity checks
Verifiability
The output of requirements validation is the list of problems and agreed on actions
of detected problems.
The lists of problems indicate the problem detected during the process of
requirement validation.
The list of agreed action states the corrective action that should be taken to fix the
detected problem.
There are several techniques which are used either individually or in conjunction
with other techniques to check to check entire or part of the system
Test case generation:
Requirement mentioned in SRS document should be testable, the conducted tests
It is generally believed that if the test is difficult or impossible to design than, this
usually means that requirement will be difficult to implement and it should be
reconsidered
Prototyping:
In this validation techniques the prototype of the system is presented before the
end-user or customer, they experiment with the presented model and check if it
meets their need.
This type of model is generally used to collect feedback about the requirement of
the user.
Requirements Reviews:
First, the requirement is structured in formal notation then CASE tool is used to
check in-consistency of the system, The report of all inconsistencies is identified
and corrective actions are taken.
Walk-through:
A walkthrough does not have a formally defined procedure and does not require a
differentiated role assignment.
◦ Checking early whether the idea is feasible or not.
◦ Obtaining the opinions and suggestion of other people.
◦ Checking the approval of others and reaching an agreement.
Fundamentals of Requirement Analysis
Requirements analysis involves all the tasks that are conducted to identify the
needs of different stakeholders.
Analyzing requirements
This step helps to determine the quality of the requirements. It involves
Requirements modeling
In Requirements modeling, the requirements are usually documented in different
own symbols and elements. Business process modeling and notation is used to
create graphs for the business process. These graphs simplify understanding the
business process. BPMN is widely popular as a process improvement methodology.
UML (Unified Modeling Language)
UML consists of an integrated set of diagrams that are created to specify, visualize,
Flow charts are easy to understand and can be used by both the technical
and non-technical team members.
Data flow diagrams represent the flow of information through a process or a system.
It also includes the data inputs and outputs, data stores, and the various sub process
through which the data moves.
DFD describes various entities and their relationships with the help of standardized
notations and symbols.
By visualizing all the elements of the system it is easier to identify any shortcomings.
The Gantt charts help to know what is scheduled to be completed by which date.
The start and end dates of all the tasks in the project can be seen in a single view.
Gap Analysis
Gap analysis is a technique which helps to analyze the gaps in performance of a software
application to determine whether the business requirements are met or not.
It also involves the steps that are to be taken to ensure that all the business requirements are met
successfully.
Gap denotes the difference between the present state and the target state.
Gap analysis is also known as need analysis, need assessment or need-gap analysis.
Structured System Analysis
Structured Analysis
It is a development method that allows the analyst to understand the system and its
It is a systematic approach, which uses graphical tools that analyze and refine the
objectives of an existing system and develop a new system specification which can be
easily understandable by user.
It is logical rather than physical i.e., the elements of system do not depend on vendor or
hardware.
It is an approach that works from high-level overviews to lower-level details.
Structured Analysis Tools
During Structured Analysis, various tools and techniques are used for system
development. They are
It shows the flow of data between various functions of system and specifies how the
current system is implemented.
Its graphical nature makes it a good communication tool between user and analyst or
analyst and system designer.
However, it requires a large number of iterations for obtaining the most accurate
and complete solution.
The following table shows the symbols used in designing a DFD and their
significance
Context Diagram
A context diagram helps in understanding the entire system by one DFD which
It stores the descriptions of all DFD data elements that is, details and
definitions of data flows, data stores, data stored in data stores, and the
processes.
A data dictionary improves the communication between the analyst and the
user. It plays an important role in building a database.
Most DBMSs have a data dictionary as a standard feature. For example, refer
the following table
Decision Trees
Decision trees are a method for defining complex relationships by describing
A decision tree is a diagram that shows alternative actions and conditions within
horizontal tree framework.
Decision trees depict the relationship of each condition and their permissible actions.
It forces analysts to consider the sequence of decisions and identifies the actual
decision that must be made.
The major limitation of a decision tree is that it lacks information in its format to
describe what other combinations of conditions you can take for testing. It is a
single representation of the relationships between conditions and actions.
It is useful in situations where the resulting actions depend on the occurrence of one or several
combinations of independent conditions.
It is a matrix containing row or columns for defining a problem and the actions.
Components of a Decision Table
Condition Stub − It is in the upper left quadrant which lists all the condition to be
checked.
Action Stub − It is in the lower left quadrant which outlines all the action to be carried out
resulting from the answers to the conditions in the condition entry quadrant.
The entries in decision table are given by Decision Rules which define the
relationships between combinations of conditions and courses of action. In rules
section,
Y shows the existence of a condition.
N represents the condition, which is not satisfied.
A blank - against action states it is to be ignored.
X (or a check mark will do) against action states it is to be carried out.
For example, refer the following table
Software Prototyping
It is an iterative, trial, and error method which take place between the developer
and the client
Phases
Evolutionary prototype
Incremental prototype
Extreme prototype
how the requirement will look visually. The customer's feedback helps drives changes to
the requirement, and the prototype is again created until the requirement is baselined.
In this method, a developed prototype will be discarded and will not be a part of the
ultimately accepted prototype. This technique is useful for exploring ideas and getting
instant feedback for customer requirements.
Evolutionary Prototyping
Here, the prototype developed is incrementally refined based on customer's feedback until it
is finally accepted.
That's because developing a prototype from scratch for every interaction of the process can
sometimes be very frustrating.
This model is helpful for a project which uses a new technology that is not well understood.
It is also used for a complex project where every functionality must be checked once.
It is helpful when the requirement is not stable or not understood clearly at the initial stage.
Incremental Prototyping
In incremental Prototyping, the final product is decimated into different small prototypes and developed
individually.
This method is helpful to reduce the feedback time between the user and the application development team.
Extreme Prototyping:
Extreme prototyping method is mostly used for web development. It is consists of three sequential phases.
Basic prototype with all the existing page is present in the HTML format.
The services are implemented and integrated into the final prototype.
Best practices of Prototyping
Here, are a few things which you should watch for during the prototyping process:
Customer satisfaction exists because the customer can feel the product
development solutions.
cons/drawbacks of prototyping model:
to be stored in a Database.
Data modeling helps in the visual representation of data and enforces business
rules, regulatory compliances, and government policies on the data.
Data Model is like architect's building plan which helps to build a conceptual model
and set the relationship between data items.
Ensures that all data objects required by the database are accurately represented.
Omission of data will lead to creation of faulty reports and produce incorrect results.
A data model helps design the database at the conceptual, physical and logical
levels.
Data Model structure helps to define the relational tables, primary and foreign
keys and stored procedures.
It provides a clear picture of the base data and can be used by database
developers to create a physical database.
Though the initial creation of data model is labor and time consuming, in the
long run, it makes your IT infrastructure upgrade and maintenance cheaper and
faster.
Types of Data Models
Conceptual: This Data Model defines WHAT the system contains. This model is
typically created by Business stakeholders and Data Architects. The purpose is to
organize, scope and define business concepts and rules.
Physical: This Data Model describes HOW the system will be implemented using a
specific DBMS system. This model is typically created by DBA and developers.
The purpose is actual implementation of the database.
Conceptual Model
The main aim of this model is to establish the entities, their attributes, and
their relationships.
In this Data modeling level, there is hardly any detail available of the actual
Database structure.
The 3 basic tenants of Data Model are
For example:
Customer and Product are two entities. Customer number and name are
model.
be things like:
◦ Sequence of operations
◦ Object states
◦ and Object interactions
Furthermore, this modelling layer can also be called Dynamic Modelling. The activity
functional modelling.
Representation:
we represent them with dynamic diagrams. For example:
these are known as interaction diagrams, this is because they both represent how
objects interact with one another using messages.
Description:
A behavioural model describes when the system is changing.
The data dictionary hold records about other objects in the database, such as data
ownership, data relationships to other objects, and other data.
Description/purpose
◦ Description/purpose is a textual description of what the data item is used
for or why it exists.
◦ Range of values records all possible values, e.g. total marks must be positive
and between 0 to 100.
◦ If the data item is primitive, then data structure form captures the physical
structures of the data item.
◦ If the data is itself a data aggregate, then data structure form capture the
composition of the data items in terms of other data items.
The mathematical operators used within the data dictionary are defined in the table
Uses of Data Dictionary: