SRE Complete Notes
SRE Complete Notes
SRE Complete Notes
Course Outline
2
Introduction to requirement Engineering
What is a requirement?
According to IEEE standard 729, a requirement is defined as “A condition or capability
needed by a user to solve a problem or achieve an objective. “
A condition that met by a system or system component to satisfy a contract, standard,
specification or other formally imposed documents.
OR -- Requirements are descriptions of the services that a software system must
provide and the constraints under which it must operate
Requirements engineering:-
The requirement of a system is the description of the services that a system should provide
and the constraints on its operation. The process of finding out, analyzing, documenting and
checking these services or constraints is called requirement engineering (RE).
Requirements engineering (RE) is also refers to the process of defining, documenting,
and maintaining requirements in the engineering process.
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:
As the basis of a bid for a contract
As the basis for the contract itself
Software Requirements
“The software requirements are description of features and functionalities of the
target system”. It is a complete description of what the software system will do
without describing how it will do
Software requirements are complete specification of the desired external behavior of the
software system to be built
1) User Requirement:-
. User requirement is the high-level abstract requirement.
It is the statement written in natural language plus diagram. It is written for the
customer understanding. It describes what the systems do and also describe the
services that the system users want.
. OR
User requirements describe goals or tasks the users must be able to perform with the
product that will provide value to someone. In the domain of user requirements
includes descriptions of product attributes or characteristics that are important to
user satisfaction.
3
2) System Requirement:-
. System Requirement is the more detailed description
of the software systems function, services and operational constraints written for
developers of the system. It is the detail description of functional or non-functional
requirement. .
. OR
System requirements describe System requirements describe the requirements for a
product that is composed of multiple components.
3) Functional Requirement:-
. The functional requirements of a system describe
“what the system should do”. It is statement of services the system should provide. It is
the actual services which a system will provide, and user wants from the software.
These are the Requirements that the end user specifically demands as basic facilities that
the system should provide.
4) Non-Functional Requirement:-
. Non-functional Requirements as the name
suggested, are the requirements that are not directly concerned with the specific
services delivered by the system to its user. It is the Requirements that are specify how
the system should behave in a specific environment. It is the quality attributes of a
system.
Non-functional Requirements are often more critical than the individual functional
requirements. However failing to meet non-functional Requirements means the system
is unusable.
Most non-functional requirements relate to the system as a whole. They include
constraints on timing, performance, reliability, security, maintainability, accuracy, the
development process, standards, etc.
There are three major types of non-functional requirements
Product
Specify or constraints the runtime behavior of the software .
4
Organizational
These requirements are broad system requirement derived from
policies and procedure in the customer and development organization
External
Requirement derived from factors external to the system and its
development process
5) Domain Requirement:-
. The requirement which are characteristic of a particular
category or Domain of project. Domain Requirements are expectations related to a
particular type of a software, purpose or industry. Domain Requirements can be
Functional or Non-functional. The common factor is that they meet established standard
for that category of software project.
5
Classification of Requirements
Requirements are usually classified into the following broad categories namely as:
Functional Requirements
Non- Functional Requirements
Domain Requirements
Levels/layers/types of Requirement
Some types of requirements are as the following:
Functional Requirements
Non- Functional Requirements
User Requirements
System Requirements
Business Requirements etc.
Requirement Characteristics
A requirement needs to meet several criteria to be considered a “good requirement”. Good
requirements should have the following characteristics:
Testable:
Testers should be able to verify whether the requirement is implemented correctly. The
test should either pass or fail. To be testable, requirements should be clear, precise, and
unambiguous.
Complete:
Requirement should be specified for all the possible conditions that can occur. And
requirement is not missing the necessary or relevant information.
Clear:
Requirements should not contain unnecessary verbiage or information. They should be
stated clearly and simply.
Correct:
If a requirement contains facts, these facts should be true. Requirements meet the
actual business or system needs.
Understandable:
Requirements should be grammatically correct and written in a consistent style.
Standard conventions should be used. The word “shall” should be used instead of “will,”
“must,” or “may.”
Feasible:
The requirement should be doable within existing constraints such as time, money, and
available resources.
6
Consistent:
There should not be any conflicts between the requirements. Conflicts may be direct or
indirect. Direct conflicts occur when, in the same situation, different behavior is
expected.
Requirements process
Requirement Engineering is the process of defining, documenting and maintaining the
requirements. It is a process of gathering and defining service provided by the system.
The process of requirements engineering happens in five steps. The below figure illustrates
the five steps of requirements engineering
1. Feasibility Study:-
A feasibility study is an assessment of the practicality of a proposed plan or
project. The main purpose of the feasibility study is to check the given requirement are the
given software is possible or not on the technical, economical and Operational feasibilities.
7
The requirement elicitation and analysis processes
3. Requirements Specification:-
Requirement specification is the process of writing down the user and system
requirements in a requirement document. It describes what will be the feature, services and
behavior of the software. It provides the detail description of functional and non-functional
requirements. .
A document consisting of requirements that are collected from various sources like the
requirements from customers expressed in an ordinary language and created by the
software analyst are called a specification document for software requirements .
4. Requirements Validation:-
Requirement specification is the process of checking that
requirements define the system that the customer really wants. It overlaps with elicitation
and analysis, as it is concerned with finding problems with the requirements.
8
Another diagram of requirement engineering processes
9
Requirement elicitation, source and techniques
Elicitation is the process of identifying the needs and constraints of the various stakeholders
for a software system.
This process is also called requirements gathering. It is the process of the discovering or
gathering the requirement of a system. It is basically collecting requirement form
stockholders, user and customer by requirement elicitation techniques.
The aims of the requirements elicitation process are to understand the work that
stakeholders do and how they might use a new system to help support that work. During
requirements elicitation, software engineers work with stakeholders to find out about the
application domain, work activities, the services and system features that stakeholders
want, the required performance of the system, hardware constraints, and so on.
Elicitation is used to discover business, user, functional, and non-functional requirements,
along with other types of information. Requirements elicitation is perhaps the most
challenging, critical, error-prone, and communication-intensive aspect of software
development.
Requirements Elicitation Stages
1. Objective setting
2. Background knowledge acquisition
3. Knowledge organization
4. Stakeholder requirements collection
Brainstorming:-
This technique is used to generate new ideas and find a solution for a
specific issue. The members included for brainstorming can be domain experts, subject
matter experts. Multiple ideas and information give you a repository of knowledge and you
can choose from different ideas.
Interview:-
This is the most common technique used for requirement elicitation.
Interview techniques should be used for building strong relationships between business
analysts and stakeholders. In this technique, the interviewer directs the question to
stakeholders to obtain information. One to one interview is the most commonly used
technique.
10
If the interviewer has a predefined set of questions then it’s called a structured interview.
If the interviewer is not having any particular format or any specific questions then it’s
called an unstructured interview.
Workshops:-
For multi-stakeholder, complex projects, workshops are one of the most
resource-efficient methods to elicit requirements. Intense, focused, and highly productive
workshops have a key role to play in getting all parties onto the same page. Workshop
events help Subject Matter Experts and Stakeholders to collaborate, resolve conflicts, and
come to an agreement.
Focus Group:-
In a focus group, relevant stakeholders provide feedback to refine
processes, ideas, or solutions that emerged as an outcome of earlier elicitation activities,
such as brainstorming and document analysis. The feedback and comments are recorded for
use in later phases of requirements elicitation.
Questionnaires:-
Questionnaires are a way to survey large groups of users to understand
their needs. They are inexpensive, making them a logical choice for eliciting information
from large user populations, and they can be administered easily across geographical
boundaries. The analyzed results of questionnaires can be used as an input to other
elicitation techniques.
Prototyping:-
Prototyping is used to identify missing or unspecified requirements. In this
technique, frequent demos are given to the client by creating the prototypes so that client
can get an idea of how the product will look like. Prototypes can be used to create a mock-
up of sites, and describe the process using diagrams.
Document analysis:-
Document analysis entails examining any existing documentation
for potential software requirements. The most useful documentation includes requirements
specifications, business processes, lessons learned collections, and user manuals for existing
or similar applications.
Some Other Methods
Interface Analysis
Observation
Survey etc.
11
Requirement specification and documentation
“Requirement specification is the process of writing down the user and system
requirement in requirements documents. It describes the feature, services and behavior
or the software”
The requirement document is a formal document used to communicate the requirements to
customer, engineers and managers. It is also known as software Requirement Specification
(SRS). It describes the services and functions which the system should provide. It describes
the detail description of functional and non-functional requirements.
Typically, requirement document are written in natural languages (likes, English, Japanese,
French etc.). And also the structure languages can be used with the natural languages to
specify the requirements. For software system, the requirements documents may include a
description of the hardware on which the system is to run.
SRS document user to describe the behavior of system, functional or non-functional
requirements of the software.
3. Operators:
. They are the persons who work on the software to make the services of the
software available to its beneficiaries or the end users.
4. Domain Experts:
. They are professionals with experience and expertise of the domain
in which the software provides its services i.e. financials, data transfer networking etc.
Domain experts unwind the hidden or unseen probable requirements or risk involves in
product requirement
5. Developers
. The software engineering responsible for developing the software makes
it provide the expected serveries. They are responsible for software design, prototype
development, and technical feasibility. They work closely with end users, buyers, and
application experts
Consistency checks:- The requirements should be consistent with other requirements, which
mean no two requirements should conflict or oppose each other.
Completeness checks:- The requirements should be complete in every sense.
Validity checks:- The functions proposed by stakeholders should be aligned with what the
system needs to perform.
Realism checks:- Ensure the requirements can actually be implemented using the knowledge
of existing technology, the budget, schedule, etc.
Verifiability:- Requirements should be written so that they can be tested. This means you
should be able to write a set of tests that demonstrate that the system meets the specified
requirements.
Ambiguity checks:- Req
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
14
of requirement validation. The list of agreed action states the corrective action that should
be taken to fix the detected problem.
Requirements Reviews:-
In this approach, a group of people from both organization side and user side carefully
reviews the SRS. They review the document to check for any errors and ambiguity.
Automated consistency analysis:-
First, the requirement is structured in formal notation then a tool like CASE is used to check
for any in-consistency or errors. For the identified inconsistencies and errors corrective
actions are taken. In this approach, automated detection tool is used to search for type
errors, missing cases, error in requirement specification, etc.
Walk-through:-
This is not a formally defined procedure. The approach follows few steps, that are:
• Checking whether the idea is feasible or not
• Obtaining the ideas and opinions of other
• Checking the approval of others and reaching an agreement.
0 Requirement Testing:-
Testing is a powerful tool for both validating and verifying requirements. Each requirement
should be testable i.e. it should be possible to define tests to check whether or not that
requirements has been met.
0 User Manual Development
0 Model Validation
15
Validation VS verification
• Verification: It is a process to check whether the software meets the specified
requirements that are written during elicitation phase or not. This is a process of confirming
that the designed and built product fully meets the documented requirements.
• Validation: It is a process to check whether the specifications written during the
elicitation phase captures all the user’s needs. During validation phase developers use
different set of tasks that ensures that the software built is traceable to user’s
requirements.
16
Introduction to Management
The management of the requirements engineering process is similar to the management of
any other endeavor. We need the Requirement management to sorts the activities that
must be undertaken.
Basically, the management involves the followings activities:
Planning – deciding what is to be done Presentation
Organizing – making arrangements
Staffing – selecting the right people for job
Directing – giving instruction
Monitoring – checking on progress
Controlling - taking action to remedy hold-ups
Representing – liaising with users, etc.
Innovating - coming up with the new solution
Requirement Management
The process of managing changes to the requirements for a system
Requirement management is the process of documenting, analyzing, tracing, prioritizing,
and agreeing on requirement and then controlling change and communicating to relevant
stakeholders. It is a continuous process throughout a project life cycle.
It involves communication between the project team members and stakeholders, and
adjustment to requirements changes throughout the project life cycle.
Requirement Management is a systematic process of eliciting, organizing, and
documenting the requirements of the system, and also establishes and maintains
agreement between the customer and the project team on the changing requirements of
the system.
Main Concerns in Requirements Management:
Managing changes to agreed requirements
Managing the relationships between requirements
Managing the dependencies between the requirements document and other
documents produced in the systems engineering process
The Purpose of Requirements Management?
The main purpose of requirements management is to ensure product development goals
are successfully met.
It is a set of techniques for documenting, analyzing, prioritizing, and agreeing on
requirements so that engineering teams always have current and approved requirements
Requirement Attributes:
Requirement Attributes are properties of a requirement. Attributes can be used to filter or
sort the requirements. Lists of possible attributes are as below:
17
Requirement ID (unique)
Requirement name
Requirement description
Requirement version number
Requirement type
Requirement change history
Requirement status
Requirement priority
Requirement owner etc.
Sources of Change:
New business or market condition
New customer needs
Business growth/downsizing
The Five Stages of Requirements Management
Requirements management is often viewed as a five-step development process. The project
18
manager and key stakeholders will evaluate the requirements during each step of the
process. These steps are outlined below:
Step 1: Investigation:-
The first step will be that of fact-finding or investigation. Participants identify their goals and
examine the requirements necessary for meeting those goals. They evaluate the resources that
they have for meeting the requirements, identify any obstacles that may exist and propose
solutions.
Step 2: Feasibility:-
Feasibility study sometimes called feasibility analysis or feasibility report
The next stage of requirements management involves the feasibility of the project in terms of cost.
This helps to shape the project as it moves forward toward design and development. The project
manager and stakeholders must determine exactly what is required to ensure the project is viable
from an economic standpoint.
Step 3: Design:-
After the investigation and feasibility stages, the project then moves forward to the design phase.
This is where tangible goals start to come to fruition. There will inevitably be some changes to the
requirements that will need to be communicated and subsequently addressed by those responsible
for various aspects of the design. An important part of requirements management is determining if
these changes will affect the cost or scope of the project.
Step 4: Construction and Testing:-
Once the design has been approved, a prototype or working model is typically constructed and put
through a series of tests.
This helps the team ensure that the project will be able to progress according to schedule and stay
within budget. The project requirements are often adjusted and refined during the testing stage of
requirements management and must be documented accordingly
Step 5: Release:-
Once the product is finally approved, it is released. As the product enters into use, there is still the
need for ongoing requirements management related to proposed upgrades, add-ons,
improvements, marketing, sales, and the like. These will be documented and addressed during the
investigation phase of the next release.
19
Not having an agreed requirement sets you up for project failure. Requirements capture is
usually led by a requirements manager with support from systems engineering.
Requirement Error’s
A deficiency or error in the requirements can slow down software development process. If
these errors were not removed, then it will degrade the design, code, and even
implementation phase. Requirements errors are most expensive to eliminate.
Types of Requirements Errors:
20
Errors of omission: - It means skip the requirement. Error or omission is most . . .
. common among requirements errors
Errors of clarity and ambiguity:- It means are requirements are not clear
Errors of commission:- It means the human action that should not be performed, . .
but which in fact are performed.
Errors of speed and capacity:- Your software is working fine but not working in . . .
the required time this is called error of speed.. . . . . . When it comes
to capacity it can be relevant to . . . . memory.
Negative Impact of Requirements Errors:
The resulting software may not satisfy the real needs of users as well the concerned organization.
Addressing Requirements Errors :
Prevention
Removal
Prevention vs. Removal:
For requirements errors, prevention is usually more effective than removal.
Joint application development (JAD), quality function deployment (QFD), and prototyping are more
effective in error prevention.
Requirements inspections and prototyping play an important role in defect removal.
Jama Software
Modern Requirements
Visure Requirements
Orcanos
IBM Engineering Requirements Managements DOORS Nest
Accompa
Cliber
Pearls
Perforce Helix RM
Requirement Prioritization
When customer expectations are high, and timelines are short you need to make sure your
project team delivers the most valuable functionality as early as possible. Prioritization is
the only way to deal with competing demands for limited resources.
21
Helps in trade-offs of conflicting constraints such as schedule, budget, resources, time to
market, and quality
Balances the business benefit of each requirement against its cost
Balances the implications of requirements on the software architecture and future evolution of
the product and its associated cost
Selects only a subset of the requirements and still produce a system that will satisfy the
customers
Establish relative importance of each requirement to provide the greatest value at the lowest
cost
Requirements prioritized to minimize risk during development so that the most important or high
risk requirements are implemented first. Prioritization is an iterative process and might be
performed at different abstraction levels and with different information in different phases during
the software lifecycle.
Aspects of Prioritization
Requirements can be prioritized taking many different aspects into account
An aspect is a property or attribute of a project and its requirements that can be used to prioritize
requirements. It is important for stakeholders to
develop a list of aspects to help in decision-making process
Importance:- The stakeholders should prioritize which requirements are most important for
the system. Importance is multifaceted, and could be urgency of implementation, importance
for product architecture, strategic importance
Penalty:- It is possible to evaluate the penalty that is introduced if a requirement is not
fulfilled. Penalty is not just the opposite of importance
Cost:- The implementation cost is usually estimated by the developing organization. Measures
that influence cost include: complexity of the requirement, the ability to reuse existing code,
the amount of testing and documentation needed. Cost is often expressed in terms of staff
hours
Time:- Time is influenced by many other factors such as degree of parallelism in development,
training needs, need to develop support infrastructure, complete industry standards
Risk:- Every project carries some amount of risk
Other aspects:- Financial benefit, strategic benefit, competitors, competence/resources,
release theme, ability to sell
Prioritization Techniques
The prioritization can be done with various measurement scales and types. There are different
techniques of prioritization are as the following:
Ranking:- When you rank requirements on an ordinal scale, you give each one a different numerical
value based on its importance. For example, the number 1 can mean that the requirement is the most
important and the number n can be assigned to the least important requirement, n being the total number
of requirements.
MUST (Mandatory)
SHOULD (Of high priority)
COULD (Preferred but not necessary)
WOULD (Can be postponed and suggested for future execution)
Requirement evolution
Requirement evolution is the changes occur when mapping a theory to another theory through a
process of rational belief revision. The process begins from an incomplete requirement model, at
each step, a new set of requirement changes is brought to bear.
Evolution of requirements refers to changes that take place in a set of requirements after inital
requirements engineering phase. Thus changes in requirements that may happen in initial
elicitation, analysis, specification and validation phases are not evolutionary
Requirement traceability
Quality Requirement
Quality assurance in requirement engineering has a great impact on the product quality. It checks
whether the requirements meet the desired quality attributes i.e. adequacy, completeness,
consistency etc. Quality Assurance of the requirement is important because the cost of
requirements failure is very high.
23
Risk analysis
Risk analysis has been also shown important in the software design phase to evaluate criticality of
the system, where risk is analyzed and necessary countermeasures are introduced. However, it
may happen that the risk reduction results in the revision of the entire design and possibly of the
initial requirements, introducing thus extra costs for the project.
A Risk Management strategy can be defined as a software project plan or the risk management
steps. It can be organized into a separate Risk Mitigation, Monitoring and Management (RMMM)
Plan.
The RMMM plan documents all work performed as part of risk analysis and is used by the project
manager as part of the overall project plan. Teams do not develop a formal RMMM document.
Rather, each risk is documented individually using a risk information sheet (RIS). RMMM
documents all work performed as part of risk analysis and is used by the project manager as part of
overall project plan.
1. Risk monitoring is a project tracking activity with three primary objectives:
2. Assess whether predicted risks do, in fact, occur
3. Ensure that risk management steps defended for the risk are being properly applied
4. Collect information that can be used for future risk analysis
SYSTEM ENGINEERING
System engineering is a field of engineering and engineering management that focus on how to
design, integrate and manage complex system over their life cycle. It ensures that all aspects of
system are considered and integrated into a whole.
System is a group of interrelated entities form a unified whole. A system is surrounded by its
environment, described by its boundaries and structure and purpose by its functioning.
24