SEPM Module 2 Notes
SEPM Module 2 Notes
SEPM Module 2 Notes
UNDERSTANDING REQUIREMENTS
2.1 REQUIREMENTS ENGINEERING
The broad spectrum of tasks and techniques that lead to an understanding of requirements is called
requirements engineering. From a software process perspective, 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 engineeringprovides 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:
In general, most projects begin when a business need is identified or a potential new market or service is
discovered. Stakeholders from the business community define a business case for the idea, try to identify the
breadth and depth of the market, do a rough feasibility analysis, and identify a working description of the
project’s scope.
At project inception, you establish a basic understanding of the problem, the people who want asolution, 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:
Ask the customer, 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 thesystem or product is to be used on a
day-to-day basis. A number of problems that are encountered as elicitation occurs.
• Problems of scope. The boundary of the system is ill-defined or the customers/users specifyunnecessary
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 thesystem 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. To help overcome these problems, you must
approach requirements gathering in an organized manner.
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. Each user scenario is parsed to extract analysis classes—business domain
entities that are visible to the end user. The attributes of eachanalysis class are defined, and the services that are
required by each class are identified. The relationships and collaboration between classes are identified, and a
variety of supplementary diagrams are produced.
Negotiation:
It usual for customers, to given limited business resources. It’s also relatively common for different
customers or users to propose conflicting requirements, arguing that theirversion is “essential for our special
needs.”
You have to reconcile these conflicts through a process of negotiation. Customers, users, and other
stakeholders are asked to rank requirements and then discuss conflicts in priority. Using aniterative approach
that prioritizes requirements, assesses their cost and risk, and addresses internal conflicts, requirements are
eliminated, combined, and/or modified so that each party achieves some measure of satisfaction.
Specification:
Specification means different things to different people. A specification can be a written document, a set of
graphical models, a formal mathematical model, a collection of usage scenarios, a prototype, or any
combination of these. Some suggest that a “standard template” should be developed and used for a
specification, arguing that this leads to requirements that are presented in a consistent and therefore more
understandable manner. However, it is sometimes necessary to remain flexible when a specification is to be
developed. For large systems, a writtendocument, combining natural language descriptions and graphical
models may be the best approach.
Validation:
The work products produced during requirement engineering are assessed for quality during a validation step.
A key concern during requirement validation is consistency. Requirement validation examines the
specification to ensure that all software requirements have been stated unambiguously; that inconsistencies,
omissions, and errors have been detected and corrected, and that the work products conform to the standards
established for the process, the project, and the product.
Requirement Management:
Requirement for computer based system change and the desire to change requirements persists throughout the
life of system. Requirement management is a set of activities that help the project team identify, control and
track requirement and change to requirements at any time as the project proceeds.
Identifying Stakeholders:
Stakeholder is “anyone who benefits in a direct or indirect way from the system which is being developed.”
The usual stakeholders are: business operations managers, product managers, marketing people, internal and
external customers, end users, consultants, product engineers, software engineers, support and maintenance
engineers. Each stakeholder has a different view of the system, achieves different benefits when the system is
successfully developed, and is open to different risks if the development effort should fail.
Recognizing Multiple Viewpoints:
Because many different stakeholders exist, the requirements of the system will be explored frommany
different points of view. Each of these constituencies will contribute information to the requirements
engineering process. As information from multiple viewpoints is collected, emerging requirements may be
inconsistent or may conflict with one another. You should categorize all stakeholder information in a way
that will allow decision makers to choose an internally consistent set of requirements for the system.
Questions asked at the inception of the project should be “context free. The first set of context-free
questions focuses on the customer and other stakeholders, the overall project goals and benefits. You might
ask:
• Who is behind the request for this work?
• Who will use the solution?
• What will be the economic benefit of a successful solution?
• Is there another source for the solution that you need?
These questions help to identify all stakeholders who will have interest in the software to be built. In
addition, the questions identify the measurable benefit of a successful implementationand possible
alternatives to custom software development.
The next set of questions enables you to gain a better understanding of the problem and allowsthe customer
to voice his or her perceptions about a solution:
• How would you characterize “good” output that would be generated by a successful solution?
• What problem(s) will this solution address?
• Can you show me (or describe) the business environment in which the solution will be used?
• Will special performance issues or constraints affect the way the solution is approached? The
final set of questions focuses on the effectiveness of the communication activity itself.
• Are you the right person to answer these questions? Are your answers “official”?
• Are my questions relevant to the problem that you have?
• Am I asking too many questions?
• Can anyone else provide additional information?
• Should I be asking you anything else? These questions will help to “break the ice” and initiatethe
communication that is essential to successful elicitation.
Non-Functional Requirement:
A non-functional requirement can be described as a quality attribute, a performance attribute, a security
attribute, or a general constrained on a system.
It is possible to define a two phase of approaches:
In first phase, a set of software engineering guidelines is established for the system to be built. These include
guidelines for best practice, architectural style and use of design patterns.
In second phase, the team prioritizes each non-functional requirement by creating a homogeneous set of non
functional requirement using a set of decision rules that establish which guidelines to implement or reject.
Traceability:
Traceability is a software engineering team that refers to document links between software engineer work
products. A traceability matrix allows a requirement engineer to represent the relationship between
requirement and other software engineering work products.
Row of the traceability matrix are labelled using requirement name and columns can be labelled with the
name of software engineering work products.
The traceability matrix can support a verity of engineering development activities. They can provide the
continuity for developers as a project moves one project phase to another.
Behavioural elements: The behaviour of a computer-based system can have a profound effect on the
design that is chosenand the implementation approach that is applied. Therefore, the requirements
model must provide modelling elements that depict behaviour.
The state diagram is one method for representing the behaviour of a system by depicting its states and
the events that cause the system to change state. A state is any externally observable mode of
behaviour. In addition, the state diagram indicates actions taken as a consequence of a particular
event.
Flow-oriented elements: Information is transformed as it flows through a computer-based system.
The system accepts input in a variety of forms, applies functions to transform it, and produces output
in a variety of forms. Input may be a control signal transmitted by a transducer, a series of numbers
typed by a human operator, a packet of information transmitted on a network link, or a voluminous
data fileretrieved from secondary storage. The transform(s) may comprise a single logical
comparison, acomplex numerical algorithm, or a rule-inference approach of an expert system.
Analysis Patterns:
Anyone who has done requirements engineering on more than a few software projects begins tonotice that
certain problems reoccur across all projects within a specific application domain.
These analysis patterns suggest solutions (e.g., a class, a function, 53 a behavior) within the application
domain that can be reused when modeling many applications. Analysis patterns are integrated into the
analysis model by reference to the pattern name. They are also stored in a repository so that requirements
engineers can use search facilities to find and apply them.
Information about an analysis pattern (and other types of patterns) is presented in a standardtemplate.
Fig: The requirements model as a bridge between the system description and the design model
One view of requirements modeling, called structured analysis, considers data and the processesthat transform
the data as separate entities. Data objects are modeled in a way that defines their attributes and relationships.
Processes that manipulate data objects are modeled in a manner that shows how they transform data as data
objects flow through the system.
A second approach to analysis modeling, called object-oriented analysis, focuses on the definition of classes
and the manner in which they collaborate with one another. UML and theUnified Process are predominantly
object oriented.
Each element of the requirements model (Figure below) presents the problem from a different point of view.
Scenario-based elements depict how the user interacts with the system and the specific sequence of activities
that occur as the software is used.
Class-based elements model the objects that the system will manipulate, the operations that willbe applied to the
objects to effect the manipulation, relationships between the objects, and the collaborations that occur between the
classes that are defined.
Behavioral elements depict how external events change the state of the system or the classes that reside
within it. Finally,
Flow- oriented elements represent the system as an information transform, depicting how data objects are
transformed as they flow through various system functions. Analysis modeling leads to the derivation of each
of these modeling elements. However, the specific content of each element may differ from project to project.
Fig: Elements of the analysis model
.
The above figure shows depicts a use case diagram for the safe home product
The home owner logs onto the SafeHome product website, with User ID and passwords
The system displays the all major function buttons.
The home owner selects the “surveillance” button from major function buttons.
The system home owner selects the “pick a camera”.
The system displays the floor plan of the house.
The home owner selects the camera icon from the floor plan. and select “view” button.
The system display a viewing window that is identified by the camera ID.
The system displays video output within the viewing window at one frame per second.
Fig(a): Activity diagram for access camera surveillance via the internet-display camera views function.
.
The UML activity diagram supplements the use case by providing a graphical representation of the flow of
interaction within a specific scenario. Similar to the flowchart, an activity diagram uses rounded rectangles to
imply a specific system function, arrows to represent flow through the system, decision diamonds to depict a
branching decision and solid horizontal lines to indicate that parallel activities are occurring. An activity
diagram for the ACS-DCV use case is shown in Figure (a)
Fig(b): Swimlane diagram for Access camera surveillance via the Internet—display camera views function
The UML swimlane diagram is a useful variation of the activity diagram and allows you to represent the
flow of activities described by the use case and at the same time indicate whichactor or analysis class has
responsibility for the action described by an activity rectangle.
Responsibilities are represented as parallel segments that divide the diagram vertically, like the lanes in a
swimming pool. Refer Figure (b).
2.11 DATA MODELING CONCEPTS:
If software requirements include the need to create, extend, or interface with a database or if complex data
structures must be constructed and manipulated, the software team may choose to create a data model as part of
overall requirements modeling. A software engineer or analyst defines all data objects that are processed within
the system, the relationships between the data objects, and other information that is pertinent to the
relationships. The entity-relationship diagram (ERD) addresses these issues and represents all data objects that
are entered, stored, transformed, and produced within an application.
Data Objects:
A data object is a representation of composite information that must be understood by software. Therefore, width (a
single value) would not be a valid data object, but dimensions (incorporatingheight, width, and depth) could be defined
as an object.
A data object can be an external entity (e.g., anything that produces or consumes information), athing (e.g., a
report or a display), an occurrence (e.g., a telephone call) or event (e.g., an alarm), arole (e.g., salesperson), an
organizational unit (e.g., accounting department), a place (e.g., a warehouse), or a structure (e.g., a file). The
description of the data object incorporates the data object and all of its attributes.
A data object encapsulates data only—there is no reference within a data object to operationsthat act on the
data.
Data Attributes:
Data attributes define the properties of a data object and take on one of three different characteristics. They
can be used to (1) name an instance of the data object, (2) describe the instance, or (3) make reference to
another instance in another table. In addition, one or more of the attributes must be defined as an identifier—
that is, the identifier attribute becomes a “key” when we want to find an instance of the data object. In some
cases, values for the identifier(s) areunique, although this is not a requirement.
Relationships:
Data objects are connected to one another in different ways. Consider the two data objects, person and car.
These objects can be represented using the simple notation illustrated in Figure(a). A connection is
established between person and car because the two objects are related. But what are the relationships? To
determine the answer, you should understand the roleof people (owners, in this case) and cars within the
context of the software to be built. You can establish a set of object/relationship pairs that define the relevant
relationships. For example,
• A person owns a car.
• A person is insured to drive a car.
The relationships own and insured to drive define the relevant connections between person and car. Figure (b)
illustrates these object-relationship pairs graphically. The arrows noted in Figure(b) provide important
information about the directionality of the relationship and often reduceambiguity or misinterpretations.