MODULE - 2
UNDERSTANDING REQUIREMENTS
Understanding the requirements of a problem is among the most difficult tasks that is
faced by a software engineer.
1.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.
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
Management.
Inception
You establish a basic understanding of the problem
the people who want a solution
the nature of the solution that is desired
the effectiveness of preliminary communication and collaboration between the other
stakeholders and the software team.
Elicitation
Ask the customer, the users, and others what the objectives for the system or product
what is to be accomplished
how the system or product fits into the needs of the business
how the system or product is to be used on a day-to-day basis.
Christel and Kang identified 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
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.
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.
Negotiation
It’s also relatively common for different customers or users to propose conflicting
requirements, arguing that their version 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.
Specification
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.
Validation
The work products produced as a consequence of requirements engineering are
assessed for quality during a validation step.
Requirements validation examines the specification to ensure that all software
requirements have been stated unambiguously; that inconsistencies, omissions, and
errors have been detected and corrected.
Requirements management
Requirements for computer-based systems change, and the desire to change
requirements persists throughout the life of the system.
Requirements management is a set of activities that help the project team identify,
control, and track requirements and changes to requirements at any time as the
project proceeds.