Software Engineering
Software Engineering
Requirement Engineering
Requirements Engineering
Requirement: A function, constraint or other property that the system must provide to fill the
needs of the systems intended user(s)
Requirement Engineering means that requirements for a product are defined, managed and
tested systematically
It is essential that the software engineering team understand the requirements of a problem
before the team tries to solve the problem.
Standard structure
Correct
Understandable
Verifiable
Complete
Consistent
Traceable
The requirements change during the RE process. New stakeholders may emerge and the
business environment change.
Inception: Establish a basic understanding of the problem and the nature of the solution.
Negotiation: Agree on a deliverable system that is realistic for developers and customers.
Identify
Control
Track Requirements
Changes to Requirements
Inception
Elicitation
Find out from customers, users and others what the product objectives are
what is to be done
Elaboration
Focuses on developing a refined technical model of software functions, features, and
constraints using the information obtained during inception and elicitation
Create an analysis model that identifies data, function and behavioral requirements.
It is driven by the creation and refinement of user scenarios that describe how the end-user
will interact with the system.
End result defines informational, functional and behavioral domain of the problem
Negotiation
Negotiation - agree on a deliverable system that is realistic for developers and customers
Specification
It can be
Written Document
A prototype
Combination of above.
The Formality and format of a specification varies with the size and the complexity of the
software to be built.
For large systems, written document, language descriptions, and graphical models may be the
best approach.
Validation
Requirement Management
Set of activities that help project team to identify, control, and track requirements and
changes as project proceeds
Requirements begin with identification. Each requirement is assigned a unique
identifier. Once requirement have been identified, traceability table are developed.
Traceability Table:
Features traceability table - shows how requirements relate to customer observable
features
It will help to track, if change in one requirement will affect different aspects of the system.
Identify stakeholders
Stakeholder can be anyone who benefits in a direct or indirect way from the system
which is being developed
Ex. Business manager, project manager, marketing people, software engineer, support engineer, end-
users, internal-external customers, consultants, maintenance engineer.
Role of RE is to categorize all stakeholder information in a way that there could be no inconsistent or
conflict requirement with one another
Eliciting Requirement
User Scenarios
Basic Guidelines
During meeting
Combined list eliminates redundant entries, add new ideas, but does not delete anything.
Objective is to develop a consensus list in each topic area (objects, services, constraints and
performance).
Based on lists, team is divided into smaller sub-teams: each works to develop mini-
specification for one or more entries on each of the lists.
Each sub-team then presents its mini-specification to all attendees for discussion. Addition,
deletion and further elaboration are made.
Now each team makes a list of validation criteria for the product and present to team.
Finally, one or more participants is assigned the task of writing a complete draft specification
1. Normal Requirements reflect objectives and goals stated for product. If requirement are
present in final products, customer is satisfied.
2. Expected Requirements customer does not explicitly state them. Customer assumes it is
implicitly available with the system.
1. Function deployment determines the value of each function required of the system.
2. Information deployment identifies data objects and events and also tied with
functions.
User Scenario
It is difficult to move into more software engineering activities until s/w team understands
how these functions and features will be used by different end-users.
Developers and users create a set of usage threads for the system to be constructed
A use-case scenario is a story about how someone or something external to the software
(known as an actor) interacts with the system.
Statement of scope.
A Use Case depicts the software or system from the end users point of view.
Step One Define the set of actors that will be involved in the story
Actors are people, devices, or other systems that use the system or product within the
context of the function and behavior that is to be described
Actors are anything that communicate with the system or product and that are
external to the system itself
Step Two Develop use cases, where each one answers a set of questions
Will the actor have to inform the system about changes in the external environment?
The association relationship is the interface between an actor and a use case.
Generalization
<<include>>
They include relationship allows one use case to include the functionality of another.
The arrow points from the use case that includes the additional functionality to the
use case being included.
<<extend>>
The extend relationship combines the functionality of one use case with the
functionality of another, if certain conditions exist.
Extending use case typically defines optional behavior that is not necessarily
meaningful by itself.
Provides a description of the required informational, functional and behavioral domains for a
computer based system.
The model changes dynamically as S/W engineers learn more about the system and the
stakeholders understand more about what they really require.
As the model evolves, certain elements will become relatively stable, providing a solid
foundation for the design task.
Information domain encompasses that the data flow into the system, out of the system and
data stored.
Functions provide direct benefit to end-users and also provide internal support for those
features that are user visible.
Structured analysis
Considers data and the processes that transform the data as separate entities
Scenario-based elements
Describe the system from the user's point of view using scenarios that are depicted in
use cases and activity diagrams
Class-based elements
Identify the domain classes for the objects manipulated by the actors, the attributes of
these classes, and how they interact with one another; they utilize class diagrams to
do this
Behavioral elements
Use state diagrams to represent the state of the system, the events that cause the
system to change state, and the actions that are taken as a result of a particular event;
can also be applied to each class in the system
Flow-oriented elements
Use data flow diagrams to show the input data that comes into a system, what
functions are applied to that data to do transformations, and what resulting output
data are produced
Object-oriented Analysis
Structured Analysis
Scenario-based Flow-oriented
Use case text Data structure diagrams
Use case diagrams Data flow diagrams
Class-based Behavioral
Class diagrams State diagrams
Analysis packages Sequence diagrams
Analysis Patterns
Suggest solutions within the application domain that can be reused when modeling many
applications.
Uses:
Negotiating Requirements
Intention is to develop a project plan that meets stakeholder needs while at the same time
reflecting the real world constraints that have been placed on the software team.
Activities
Listen actively
Be creative
Be ready to commit
Specification Task
Specification Task
Validating Requirements
During validation, the work products produced as a result of requirements engineering are
assessed for quality
the work products conform to the standards established for the process, the project,
and the product
The formal technical review serves as the primary requirements validation mechanism
Is each requirement consistent with the overall objective for the system/product?
Have all requirements been specified at the proper level of abstraction? That is, do some
requirements provide a level of technical detail that is inappropriate at this stage?
Is the requirement really necessary or does it represent an add-on feature that may not be
essential to the objective of the system?
Does the requirements model properly reflect the information, function, and behavior of the
system to be built?
Has the requirements model been partitioned in a way that exposes progressively more
detailed information about the system?