Requirements engineering is a set of activities related to the development and agreement of the final
set of requirement specifications
Requirements are the statements that describe what the software system should be but not how it is
to be constructed.
One of the top reasons for software project failures is incomplete requirement specifications,
At the same time, one of the important reasons for project success may be attributed to clear
requirements statements. 4
1. Prior to actually performing the requirements engineering activities, it is important to plan for the resources,
methodology and time needed to perform this crucial step in software engineering.
2. Some organizations even perform requirements engineering as a separate stand-alone activity and price it
separately, with the option of folding the cost Into the whole project if they get the call to complete the
software project.
▪ Process (for requirements engineering) to be used
▪ Resources needed
▪ Schedule for completing the requirements activities
Plan
Review
Management must also be involved
Analyst
The plan itself may take several hours to several days or weeks to develop depending on the size and
complexity of the project.
Once the plan is drawn, it must be reviewed and agreed on by all parties involved. This agreement and
commitment to the plan is extremely important because requirements are not just an imagination of the software
designer or developer. The users and customers must be involved because requirements represent their needs
and desires.
because resources are required to perform the activities. There have been
situations where prototype development, reviews, and changes to the user-interface requirement alone have
taken such a significant portion of the software development resources and schedule that the project was
doomed for a later schedule crunch and cost overrun
Finding qualified requirements analysts may be a time-consuming effort, for a good requirements
analyst must possess multiple talents such as communication skills, special industry skills, and technical skills.
✓ Clear requirements are needed for design and implementation activities.
✓ Requirements documentation is needed to create test cases and test scenarios - - - especially for
large systems where the test team is a separate group of people from the developers.
✓ Requirements document is needed to control potential scope-creep.
✓ Requirements document is needed to create user training material, marketing material, and
documents for support and maintenance.
✓ Requirements document provides a way to segment a large project, prioritize releases , and easier
project management
Scope creep (sometimes known as “requirement creep” or even “feature creep”) refers to how a project’s
requirements tend to increase over a project lifecycle, e.g., what once started as a single deliverable becomes
five; or a product that began with three essential features, now must have ten; or midway through a project, the
customer's needs change, prompting a reassessment of the project requirements.
1. Requirements Elicitation
2. Requirements Analysis
3. Requirements Definition
4. Requirements Prototyping
5. Requirements Review and validation
6. Requirements Specification
7. Requirements Agreement and acceptance
in software development, regardless of
the software development process model.
1. Requirements Elicitation
2. Requirements Analysis
3. Requirements Definition
4. Requirements Prototyping
5. Requirements Review and validation
6. Requirements Specification
7. Requirements Agreement and acceptance
The Requirements analysts perform the elicitation and gathering of requirements from the users and customers.
Sources of gathering include stakeholders, existing systems, existing documents, competitors and similar
systems, company policies, laws and standards.
This is the process of gathering information about the needs and expectations of stakeholders for the software
system.
This step involves interviews, surveys, focus groups, and other techniques to gather information from
stakeholders.
Many software engineers start their careers in coding, designing, or testing a software system.
Only a few of them become requirements analysts. It is also essential that the analyst possesses both
communication skills and industry domain knowledge because each industry often has its own unique terminology.13
1. Verbal
2. Written (preformatted form)
3. Online form
High level and Low level(Detailed
At the high level, the requirements analyst must probe and understand the business rationale and justification for
the software or the software project. These high-level business-related requirements are essential to the overall
success of the software project. Even when a few detailed requirements may be misplaced, the project is often
deemed a success if the high-level business goals are met.
state what high-level problems the software suppliers have been brought in to address.
This is usually a business-oriented problem rather than a purely technical problem.
in order to justify the solution and the cost, there must be some type of business payback.
The areas for major requirements.
like budget, schedule etc
the major functionality the new software will be delivering
goes back to the opportunity and needs that were stated earlier. The software project, upon
completion, must resolve the problems stated in the opportunity and needs.
Oftentimes, the executives and paying customers are not necessarily the day-today
users of the system. The success of the system depends heavily on how well these users are trained.
must be elicited
the users may enter into imaginative and technical conversations
It is the natural starting point of requirements elicitation. The requirements analyst is
asking the users and customers what their problems are in terms of what functions need to be performed.
How the users perform their tasks to achieve the individual functionality.
At the minimum, there must be some discussion of the
application’s input and output data. What is the information that needs to be entered into the system and for
what purpose? If the entered data follow some business process flow, then that flow should also be described. If
there are data that serve as input for some processing, those must also be described.
Though most prefer graphical, different users have their unique preferences with what kind of
choices to use within the same as radio button or a drop-down window. The user-interface requirements,
both the look and the flow, are often captured by prototyping the interface.
Besides interfaces with users, there are other interfaces such as those with an
existing application or to a network system. These interfaces must be clearly identified. In many situations, the existing
system interface already has many clients tied to it. In such cases, the requirement statements should not only describe
the interface but also indicate the likelihood of future changes. The most often forgotten portion of the interface is the
description of errors and error messages along with the respective recovery and retry methodologies
n large transaction-oriented applications, it is
imperative that a performance requirement on transaction rate be specified. In life-threatening applications, the reliability
and the availability parameters must be defined in the requirement statements. Availability addresses the system being
up, and reliability addresses the issue of it functioning properly without defect and according to specification. In large
financial applications or communications applications, the protection of the data and the protection of the transmission of
the data are of paramount significance. For these applications, the requirement statements must address the issue of
security.
During the analysis step, the various requirements statements are checked for accuracy and conflict,
categorized, and prioritized. Even though there is an arrow from requirements analysis back to requirements
elicitation, there is usually very little opportunity to continue going back because of the scarce availability of the
users who provide the requirements information. The requirements that are elicited and collected are still just
an unorganized set of data. They must still be analyzed. The analysis of the requirements consists of two main
tasks:
❖ Categorizing or clustering the requirements (Based in some criteria)
❖ Prioritizing the requirements
20
Categories mentioned in the detailed requirement are not always mutually exclusive. At times there may be some
overlap. For example, under the category of constraints, there may be a requirement addressing reliability in the
form of backup recovery speed. In the individual functionality group, there may be a requirement describing the
need for backup recovery function. During the analysis time, an overlap must be clarified so that there is no
duplication. Each requirement must be labeled so that it is uniquely identifiable and traceable.
Approaches for clustering are
1. Business Flow
2. Object-Oriented Use Cases
3. Viewpoint-Oriented Requirements Definition (VORD)
1. Business Flow
2. Object-Oriented Use Cases
3. Viewpoint-Oriented Requirements Definition (VORD)
iew Oriented Requirements Definition (VORD) is based on the concept that requirements are viewed differently by different
people. The customers who pay for the system often have a different perspective on requirements than those who interface
with the system on a daily basis. For a large, complex system that has many subcomponents, the different users will articulate
the requirements with varied emphasis and diverse specifics. Sometimes the same requirement is stated in such different
forms and context that they seem to be different requirements. Other times, the different requirements overlap so much that
they should be reorganized and combined in a totally different way.
VORD methodology is divided into four steps:
1. Identify the stakeholders and the viewpoints.
2. Structure and categorize the viewpoints, eliminating duplication, and placing common ones together.
3. Refine the identified viewpoints.
4. Map the viewpoints to the system and the services that the system is to provide.
• When analyzing the requirements, it is best to start with
the business flow category.
• Pick a business flow first.
• Assign it the first number, such as BF-1
• Associate all the functionality requirements and number
them IF-1.x. The additional x may be used if there is more
than one functionality related to the workflow.
• This is followed bt the data requirements, user interfaces
& the other system interface.
• The numbering scheme of all categories is tied to
business flow.
bject-oriented (OO) use cases are used to describe the requirements of a system.
They are also used for the analysis of requirements and contribute to the design and testing of the system.
A use case is fundamentally a depiction of the following requirement information:
✓ Basic functionality
✓ Any precondition for the functionality (A precondition is the state of the system and its surroundings that is
required before the use case can be started).
✓ Flow of events, called a scenario, for the functionality
✓ Any postcondition for the functionality (A post-condition of a use case lists possible states that the system can
be in after the use case runs.)
✓ Any error condition and alternative flow. 23
. Identify the stakeholders and the viewpoints.
2. Structure and categorize the viewpoints, eliminating duplication, and placing common ones together.
3. Refine the identified viewpoints.
4. Map the viewpoints to the system and the services that the system is to provide.
