Reqeng
Reqeng
So, end-users will not be concerned with the detail, they need a generic, abstracted written requirement.
While the people who are involved in the development need to know what exactly the system should do.
You will probably end up with a lot of problems and misunderstandings if you didn’t have a clear separation
between the different level detail.
User Requirements
It describes the services that the system should provide and the constraints under which it must operate. We
don’t expect to see any level of detail, or what exactly the system will do, It’s more of generic requirements.
It’s usually written in a natural language and supplied by diagrams.
System Requirements
The system requirements mean a more detailed description of the system services and the operational
constraints such as how the system will be used and development constraints such as the programming
languages.
This level of detail is needed by those who are involved in the system development, like engineers, system
architects, testers, etc.
Functional & Non-Functional Requirements
The software requirements are classified into functional requirements and non-functional requirements.
Functional Requirements
It covers the main functions that should be provided by the system. When expressed as user requirements,
they are usually described in an abstract way.
However, more specific functional system requirements describe the system functions, its inputs, processing;
how it’s going to react to a particular input, and what’s the expected output.
Non-Functional Requirements
These are the constraints on the functions provided by the system.
The constraints, like how many processes the system can handle (performance), what are the (security)
issues the system needs to take care of such as SQL injections …
The rate of failure (reliability), what are the languages and tools that will be used (development), what are
rules you need to follow to ensure the system operates within the law of the organization (legislative).
Non-functional requirements are often critical than individual functional requirements. Users can usually
find ways to work around a system function that doesn’t really meet their needs. However, failing to meet a
non-functional requirement can mean that the whole system is unusable.
For example, if an aircraft doesn’t mean meet its reliability requirements, it won’t be safe for operation, or if
an embedded control system fails to meet its performance requirements, the control functions won’t operate
correctly.
Non-functional requirements should be measurable
Whenever possible, we should write non-functional requirements quantitatively, so that they can be tested.
You can measure them when the system is being tested to check whether the system meets its non-functional
requirements.
Metrics for non-functional requirements 1
In practice, customers for a system often find it difficult to translate their goals into measurable
requirements. They don’t understand what some numbers define as the required speed or reliability. For
some goals, such as maintainability, there’re no metrics that can be used.
The cost of verifying measurable non-functional requirements can be very high and the customers may not
think that these costs are justified.
Non-functional and functional requirements are dependent
Non-functional requirements often conflict, interact or even generate other functional or non-functional
requirements.
A user requirement concerned with security, such as limiting access to authorized users, may generate other
requirements that are functional, such as the need to include user authentication facilities in the system.
The distinction between functional and non-functional requirements
In practice, it’s difficult to separate functional and non-functional requirements. The distinction is not clear
as their definitions suggest.
Separate between functional and non-functional requirements
If the non-functional requirements are stated separately from the functional requirements, the relationship
between them may be hard to understand.
However, we should explicitly highlight requirements that are clearly related to emergent system properties
such as performance or reliability.
Feasibility Report
Before getting started with the software, you need to make a study to identify whether the system is worth
implementing and if it can be implemented under the current budget, technical skills, schedule, and if it does
contribute to the whole organization objectives or not, etc.
The input to the feasibility study is a set of preliminary business requirements, an outline description of the
system, and how the system is intended to support business processes.
The business requirements are the need of the customer or the developing organization; why the software is
being developed, that must be fulfilled to achieve a high-level objective.
The source for information may be the managers of departments where the system will be used, software
engineers who are familiar with the type of proposed system, technology experts, end-users of the system,
etc. Normally, we should try and complete a feasibility study in two or three weeks.
The results of the feasibility study should be a report that recommends whether to go forward to the next
process, or you won’t be able to implement the software at all.
Definition 1-2: Stakeholder: A stakeholder of a system is a person or an organization that has an (direct or
indirect) influence on the requirements of the system.
Definition 1-3: Requirements Engineering
(1) Requirements engineering is a systematic and disciplined approach to the specification and management
of requirements with the following goals:
(1.1) Knowing the relevant requirements, achieving a consensus among the stakeholders about these
requirements, documenting them according to given standards, and managing them systematically
(1.2) Understanding and documenting the stakeholders’ desires and needs, they specifying and managing
requirements to minimize the risk of delivering a system that does not meet the stakeholders’ desires and
needs.
Four core activities of requirements engineering:
The four core activities to meet these ends are as follows:
Elicitation: During requirements elicitation, different techniques are used to obtain requirements from
stakeholders and other sources and to refine the requirements in greater detail.
Documentation: During documentation, the elicited requirements are described adequately. Different
techniques are used to document the requirements by using natural language or conceptual models
Validation and negotiation: In order to guarantee that the predefined quality criteria are met, documented
requirements must be validated and negotiated early on (see chapter 7).
Management: Requirements management is orthogonal to all other activities and comprises any measures
that are necessary to structure requirements, to prepare them so that they can be used by different roles, to
maintain consistency after changes, and to ensure their implementation.
These core activities can be applied for different levels of requirements abstraction, like stakeholder
requirements, system requirements, and software requirements.
What is Requirements Engineering?
A systematic and strict approach to the definition, creation and verification of requirements for a software
system is known as requirements engineering. In order to guarantee the effective creation of a software
product, the requirements engineering process entails a number of tasks that help in understanding,
recording and managing the demands of stakeholders.
Steps in Requirements Engineering Process
The requirements engineering process is an iterative process that involves several steps, including:
Requirements Elicitation
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.
Requirements Analysis
This step involves analyzing the information gathered in the requirements elicitation step to identify the
high-level goals and objectives of the software system. It also involves identifying any constraints or
limitations that may affect the development of the software system.
Requirements Specification
This step involves documenting the requirements identified in the analysis step in a clear, consistent, and
unambiguous manner. This step also involves prioritizing and grouping the requirements into manageable
chunks.
Requirements Validation
This step involves checking that the requirements are complete, consistent, and accurate. It also involves
checking that the requirements are testable and that they meet the needs and expectations of stakeholders.
Requirements Management
This step involves managing the requirements throughout the software development life cycle, including
tracking and controlling changes, and ensuring that the requirements are still valid and relevant.
Requirement Engineering
The Requirements Engineering process is a critical step in the software development life cycle as it helps to
ensure that the software system being developed meets the needs and expectations of stakeholders, and that
it is developed on time, within budget, and to the required quality.
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. it is the disciplined application of proven
principle , methods ,tools and notations to describe a proposed system’s intended behaviour and its
associated constraints.
Tools Involved in Requirement Engineering
observation report
Questionnaire ( survey , poll )
Use cases
User stories
Requirement workshop
Mind mapping
Role playing
Prototyping
Requirements Engineering Process Consists of the Following Main Activities
Requirements elicitation
Requirements specification
Requirements verification and validation
Requirements management
1. Requirements Elicitation
It is related to the various ways used to gain knowledge about the project domain and requirements. The
various sources of domain knowledge include customers, business manuals, the existing software of same
type, standards and other stakeholders of the project. The techniques used for requirements elicitation
include interviews, brainstorming, task analysis, Delphi technique, prototyping, etc. Some of these are
discussed here. Elicitation does not produce formal models of the requirements understood. Instead, it
widens the domain knowledge of the analyst and thus helps in providing input to the next stage.
Requirements elicitation is the process of gathering information about the needs and expectations of
stakeholders for a software system. This is the first step in the requirements engineering process and it is
critical to the success of the software development project. The goal of this step is to understand the problem
that the software system is intended to solve, and the needs and expectations of the stakeholders who will
use the system.
There are several techniques that can be used to elicit requirements, including:
Interviews: These are one-on-one conversations with stakeholders to gather information about their
needs and expectations.
Surveys: These are questionnaires that are distributed to stakeholders to gather information about
their needs and expectations.
Focus Groups: These are small groups of stakeholders who are brought together to discuss their
needs and expectations for the software system.
Observation: This technique involves observing the stakeholders in their work environment to
gather information about their needs and expectations.
Prototyping: This technique involves creating a working model of the software system, which can
be used to gather feedback from stakeholders and to validate requirements.
It’s important to document, organize and prioritize the requirements obtained from all these techniques to
ensure that they are complete, consistent and accurate.
2. Requirements Specification
This activity is used to produce formal software requirement models. All the requirements including the
functional as well as the non-functional requirements and the constraints are specified by these models in
totality. During specification, more knowledge about the problem may be required which can again trigger
the elicitation process. The models used at this stage include ER diagrams, data flow diagrams(DFDs),
function decomposition diagrams(FDDs), data dictionaries, etc.
Requirements specification is the process of documenting the requirements identified in the analysis step in
a clear, consistent, and unambiguous manner. This step also involves prioritizing and grouping the
requirements into manageable chunks.
The goal of this step is to create a clear and comprehensive document that describes the requirements for the
software system. This document should be understandable by both the development team and the
stakeholders.
There are several types of requirements that are commonly specified in this step, including
1. Functional Requirements: These describe what the software system should do. They specify the
functionality that the system must provide, such as input validation, data storage, and user interface.
2. Non-Functional Requirements: These describe how well the software system should do it. They
specify the quality attributes of the system, such as performance, reliability, usability, and security.
3. Constraints: These describe any limitations or restrictions that must be considered when developing
the software system.
4. Acceptance Criteria: These describe the conditions that must be met for the software system to be
considered complete and ready for release.
In order to make the requirements specification clear, the requirements should be written in a natural
language and use simple terms, avoiding technical jargon, and using a consistent format throughout the
document. It is also important to use diagrams, models, and other visual aids to help communicate the
requirements effectively.
Once the requirements are specified, they must be reviewed and validated by the stakeholders and
development team to ensure that they are complete, consistent, and accurate.
3. Requirements Verification and Validation
Verification: It refers to the set of tasks that ensures that the software correctly implements a specific
function.
Validation: It refers to a different set of tasks that ensures that the software that has been built is traceable to
customer requirements. If requirements are not validated, errors in the requirement definitions would
propagate to the successive stages resulting in a lot of modification and rework. The main steps for this
process include:
1. The requirements should be consistent with all the other requirements i.e no two requirements should
conflict with each other.
2. The requirements should be complete in every sense.
3. The requirements should be practically achievable.
Reviews, buddy checks, making test cases, etc. are some of the methods used for this.
Requirements verification and validation (V&V) is the process of checking that the requirements for a
software system are complete, consistent, and accurate, and that they meet the needs and expectations of the
stakeholders. The goal of V&V is to ensure that the software system being developed meets the
requirements and that it is developed on time, within budget, and to the required quality.
1. Verification is the process of checking that the requirements are complete, consistent, and accurate. It
involves reviewing the requirements to ensure that they are clear, testable, and free of errors and
inconsistencies. This can include reviewing the requirements document, models, and diagrams, and
holding meetings and walkthroughs with stakeholders.
2. Validation is the process of checking that the requirements meet the needs and expectations of the
stakeholders. It involves testing the requirements to ensure that they are valid and that the software
system being developed will meet the needs of the stakeholders. This can include testing the software
system through simulation, testing with prototypes, and testing with the final version of the software.
3. V&V is an iterative process that occurs throughout the software development life cycle. It is
important to involve stakeholders and the development team in the V&V process to ensure that the
requirements are thoroughly reviewed and tested.
It’s important to note that V&V is not a one-time process, but it should be integrated and continue
throughout the software development process and even in the maintenance stage.
4. Requirements Management
Requirement management is the process of analyzing, documenting, tracking, prioritizing and agreeing on
the requirement and controlling the communication to relevant stakeholders. This stage takes care of the
changing nature of requirements. It should be ensured that the SRS is as modifiable as possible so as to
incorporate changes in requirements specified by the end users at later stages too. Being able to modify the
software as per requirements in a systematic and controlled manner is an extremely important part of the
requirements engineering process.
Requirements management is the process of managing the requirements throughout the software
development life cycle, including tracking and controlling changes, and ensuring that the requirements are
still valid and relevant. The goal of requirements management is to ensure that the software system being
developed meets the needs and expectations of the stakeholders and that it is developed on time, within
budget, and to the required quality.
There are several key activities that are involved in requirements management, including:
1. Tracking and controlling changes: This involves monitoring and controlling changes to the
requirements throughout the development process, including identifying the source of the change,
assessing the impact of the change, and approving or rejecting the change.
2. Version control: This involves keeping track of different versions of the requirements document and
other related artifacts.
3. Traceability: This involves linking the requirements to other elements of the development process,
such as design, testing, and validation.
4. Communication: This involves ensuring that the requirements are communicated effectively to all
stakeholders and that any changes or issues are addressed in a timely manner.
5. Monitoring and reporting: This involves monitoring the progress of the development process and
reporting on the status of the requirements.
Requirements management is a critical step in the software development life cycle as it helps to ensure that
the software system being developed meets the needs and expectations of stakeholders, and that it is
developed on time, within budget, and to the required quality. It also helps to prevent scope creep and to
ensure that the requirements are aligned with the project goals.
Systems engineering is the interdisciplinary field that focuses on designing, integrating, and managing the
systems that work together to form a more complex system. Systems engineering is based around systems
thinking principles, and the goal of a systems engineer is to help a product team produce an engineered
system that performs a useful function as defined by the requirements written at the beginning of the project.
The final product should be one where the individual systems work together in a cohesive whole that meet
the requirements of the product.
What is a system?
The system context is the part of the system environment that is relevant for the definition as well as the
understanding of the requirements of a system to be developed.
Among others, the following possible aspects of reality influence the context of a system:
A system is a collection of different elements that produce results that individual elements cannot produce.
Elements or parts can be wide-ranging and include people, hardware, software, facilities, policies, and
documents. These elements interact with each other according to a set of rules that produce a unified whole
with a purpose expressed by its functioning. An example of a system is the human auditory system; the
system includes individual parts in the form of bones and tissue that interact in a way to produce sound
waves, which are transferred to nerves that lead to the brain, which interprets the sounds and formulates a
response. If any single part in the auditory system fails or experiences disruption, the entire system can fail
to perform its function.
A systems engineer is tasked with looking at the entire integrated system and evaluating it against its desired
outcomes. In that role, the systems engineer must know a little bit about everything and have an ability to
see the “big picture.” While specialists can focus on their specific disciplines, the systems engineer must
evaluate the complex system as a whole against the initial requirements and desired outcomes.
Systems engineers have multi-faceted roles to play but primarily assist with:
Design compatibility
Definition of requirements
Management of projects
Cost analysis
Scheduling
Possible maintenance needs
Ease of operations
Future systems upgrades
Communication among engineers, managers, suppliers, and customers in regards to the
system’s operations
For many systems engineers, balancing the needs of the individual systems and their engineers against the
system as a whole results in addressing problems after the fact, holding unwanted meetings, and trying to
persuade others to change behavior. Many organizations may not adequately focus on requirements and
traceability, resulting in a lack of data that would allow a systems engineer to better evaluate the product.
To avoid constantly chasing problems and start streamlining processes, systems engineers can use three best
practices:
Baseline the current traceability performance: Traceability spans the product development
process, and product team members understand the value of data management, especially as
concerns meeting industry requirements. By establishing a baseline of traceability performance,
the entire team will be able to see existing risks and potential savings and improvements. In
addition, a baseline can give a foundation for a plan of action to move toward Live Traceability.
Build the business case for Live Traceability: With a baseline in hand, systems engineers
can offer a case for moving to Live Traceability based on data. The data can establish the ROI,
productivity improvements, and risk reduction of moving from static traceability to Live
Traceability.
Create quick wins: Once the advantages of Live Traceability are established, the systems
engineer can set up continuous syncing between requirements and task management programs,
thus automating traceability from requirements to user stories. This simple shift can help
demonstrate the value of shifting from after-the-fact traceability to Live Traceability.
The systems engineering process can take a top-down approach, bottoms up, or middle out depending on the
system being developed. The process encompasses all creative, manual, and technical activities necessary to
define the ultimate outcomes and see that the development process results in a product that meets objectives.
Developed in the 1980s, the “V” Diagram of Systems Engineering is a way of specifying the specific series
of steps that make up a systems engineering approach. While it was originally employed in a pre-Agile
environment, it still has relevance to product development today and can enable faster, less risky product
development.
The “V” diagram allows system engineers multiple viewpoints and opportunities to evaluate systems as they
integrate with each other. This approach starts with the desired outcomes and objectives and then
deconstructs them into individual systems and system components for the purpose of design. Once the
requirements and design details are established, individual systems can be tested and evaluated, then
integrated into the overall piece for testing and verification. As the systems are integrated and become closer
to the final complex system, teams have multiple opportunities to validate and verify concepts,
requirements, and design.
For the systems engineer, the “V” Model can give a clear roadmap that allows the breakdown of the
complex system into smaller parts and then the reintegration and reassembly of the pieces into a cohesive
whole. With systems broken down to individual components, traceability, requirements management, and
testing and validation become more manageable. In addition, as the pieces are reintegrated into the whole
system, the “V” Model allows for an iterative process that gives a clearer view into potential risks and helps
troubleshoot problems.
Requirements and Quality:
REF:
The consequences of having no requirements are many and varied. There is ample evidence around us of
systems that failed because requirements were not properly organized. However well the system may appear
to work at first, if it is not the system that users want or need then it will be useless. It is interesting to
consider the relationship between requirements and quality. The term “quality” may be understood in a
variety of ways. When asked about quality cars, one might mention Rolls Royce, Mercedes or Jaguar. This
inherent confusion between “quality” and “luxury” is exposed if consideration is given to choosing the best
car for the annual RAC rally. Neither Rolls Royce, Mercedes nor Jaguar are chosen, since they do not
exhibit the right weight/power ratio, ground clearance and robustness properties. Recent history shows that
the best quality car in its class is a Skoda – not a luxury car, but the right quality of car for the job. Quality,
then, is “fitness for purpose” or conformance to requirements – it is providing something that satisfies the
customer and in doing so ensures that the needs of all the stakeholders are taken into account.
requirements engineering acts as a complement to other management considerations, such as cost and
schedule, by providing a vital focus on the delivery of quality. Every management decision is a compromise
between cost, schedule and quality, three inter-related axes. Since requirements engineering is a discipline
that applies from the start of the development lifecycle, the leverage on quality that can be exercised by
proper requirements management is proportionately greater. Relatively little effort expended in early stages
of development can reap dividends in the later stages. The adage “Quality is Free” (the title of a book by
Phil Crosby) holds true, in that getting it right at the outset can save huge amounts of effort that would have
been necessary to put things right later. Improving requirements means improving the quality of the product.
TXT
Quality requirements define desired qualities of the system to be developed and often influence the system
architecture more than functional requirements do. Typically, quality requirements are about the
performance, availability, dependability, scalability, or portability of a system. Requirements of this type are
frequently classified as non-functional requirements.
In daily practice, quality requirements of a system are often not documented, inadequately documented, or
improperly negotiated. Such circumstances can threaten the project’s success or the subsequent acceptance
of the system under development. Therefore, the requirements engineer should place special emphasis on the
elicitation, documentation, and negotiation of quality requirements during the development process.
Typically, many different kinds of desired qualities of the system are assigned to the requirement type
quality requirement. In order to be able to deal with quality requirements in a structured manner, many
different classification schemes for quality requirements have been proposed. The ISO/IEC 25010:2011
standard [ISO/IEC 25010:2011], for example, suggests a classification scheme for quality requirements that
can also be used as a standard structure for requirements documentation and as a checklist for requirements
elicitation and validation. Among others, the following categories are typical for quality requirements (see
[ISO/IEC 25010:2011]):
Requirements that define the performance of the system, in particular response time behavior and
resource utilization
Requirements that define the security of the system, in particular with regard to accountability,
authenticity, confidentiality, and integrity
Requirements that define the reliability of functionalities, in particular with regard to availability,
fault tolerance, and recoverability
Requirements that define the usability of a system, in particular with regard to accessibility,
learnability, and ease of use
Requirements that define the maintainability of a system, in particular with regard to reusability,
analyzability, changeability, and testability
Requirements that define the portability of a system, in particular with regard to adaptability,
installability, and replaceability
Currently, quality requirements are often specified using natural language. However, numerous
approaches to document quality requirements by means of models have been suggested over the past
couple of years. The requirements engineer is responsible for making sure the quality requirements are
as objective and verifiable as possible. Typically, this necessitates that the quality requirements are
quantified. For example, a quality requirement with regard to system performance could specify that a
system shall process 95 percent of all queries within 1.5 seconds and that it must not take longer than 4
seconds to process queries at any given time. This can cause quality requirements to be refined by means
of additional functional requirements. This could be the case for a quality requirement that is concerned
with system security if a functional requirement specifies the exact encryption algorithm to satisfy the
need for encryption as demanded by some quality requirement. Quality requirements are often related to
different functional requirements. As a result, quality requirements should always be kept separated from
functional requirements. In other words, quality requirements should not be mixed with functional
requirements and should be documented separately, with explicit documentation of their relation to
functional requirements.
What is Requirement Lifecycle?
Requirement life cycle is the process of creating, maintaining, evolving, implementing & delivering the
requirements artifacts throughout the life cycle of a system or project. The nature of the process depends
on the methodology we choose like Agile, Waterfall, Incremental, etc.
Requirement’s life cycle can be a critical aspect of any software development project. It is an essential
step that helps assure that the final product is what the customer or user wants. In other words,
requirement’s life cycle is about being able to see the big picture for a project and keeping it on track.
The phases of the requirement life cycle can be seen as follows:
Build and Deliver: Essentially, this entails coding, testing, and releasing.
1.Pre-Planning (New)
Stakeholders: Product Owner & UI designer
1) Once the IT team has received a requirement from the business, create an entry in spec document(s) for
grooming. (closed → The activity should be closed in this phase)
2) Start UI wireframe. It is about creating a sample of the application to test the features, look and usability
of the application before it is developed. It is the easiest way to check functionality and evaluate if the
application serves the purpose. It keeps the user in mind and creates the basic skeleton of any application
feature.
2. Planning (Grooming)
1) Based on our understanding of the requirement and keeping high-level UI design in mind, we’ll create
relevant features and/or stories in DevOps to proceed with requirements grooming. (closed)
2) UI design & requirements grooming will supplement each other with ideas/inputs to conclude DevOps
features & stories for implementation (closed)
3. Ready
3) Ready to handover the business story to the DEV team for implementation & QA for test plan
preparation. (In-progress)
4. Implementation
We can track implementation items such as engineering stories & builds on respective Azure DevOps Team
projects and link engineering stories with the business story that’s part of the Azure DevOps Project
Management dashboard.
2) Dev team to understand the business story, proceed with creating corresponding engineering stories for
grooming and come up with a clear implementation strategy. (closed)
3) Upon complementation of engineering stories grooming, start working on coding in the sprint cycle.
(closed)
4) QA to finish test plan and test cases required to verify business story implementation as per its acceptance
criteria. (closed)
5. Testing
1) QA to verify business story implementation as per its acceptance criteria in the staging environment.
(closed)
6. Release
2) Technical Architect(s) to be ready with forward & reverse migration plans (closed)
3) Manager to supervise the release process and help the team with necessary approvals (closed)
1) Product Owner & Tester to perform smoke testing in the production environment. (closed)
8. Close
Maintaining a requirement life cycle in the form of Epics, Features, Business/Engineering stories, Test
Cases, Bugs, Code Repositories, Builds and Releases in a platform such as Azure DevOps will allow us to
trace work from its origin through its delivery, which is vital to traceability.
Requirement Traceability:
it refers to the ability to track and trace requirements to artifacts, test runs, and anything else in the product
lifecycle. Traceability is important because it creates transparency at every step of development, including
who completed what tasks and when.
In the requirements engineering context, traceability is about understanding how high-level requirements –
objectives, goals, aims, aspirations, expectations, needs – are transformed into low-level requirements. It is
therefore primarily concerned with the relationships between layers of information.
In a business context, one may be interested in how
• business vision is interpreted as
• business objectives are implemented as
• business organization and processes.
In an engineering context, the interest may focus on how
• stakeholder requirements are met by
• system requirements are partitioned into
• subsystems are implemented as
• components.
Using traceability can contribute to the following benefits:
• Greater confidence in meeting objectives. Establishing and formalizing traceability engenders greater
reflection on how objectives are satisfied.
• Ability to assess the impact of change.Various forms of impact analysis become possible in the presence
of traceability information.
• Improved accountability of subordinate organizations. Greater clarity of how suppliers contribute to the
whole.
• Ability to track progress. It is notoriously difficult to measure progress when all that you are doing is
creating and revising documents. Processes surrounding traceability allow precise measures of progress in
the early stages.
• Ability to balance cost against benefit. Relating product components to the requirements allows benefit to
be assessed against cost.
Traceability relationships are usually many-to-many – that is, one lower level requirement may be linked to
several higher level requirements and vice versa. The simplest way to implement a form of traceability is to
link requirements statements in one layer with statements in another. Requirements management tools
typically allow such linking by drag-and-drop between paragraphs of documents. The links are rather like
hyperlinks in web pages, but should ideally be traversable in either direction. Figure 1.6 shows traceability
downwards through the layers of requirements and across to the test information. The direction of the arrows
follows a particular convention: information traces back to the information it responds to. There are a
number of reasons for this convention:
• It usually corresponds to the chronological order in which information is created: always link back to the
older information.
• It usually corresponds to access rights due to ownership: one owns the outgoing links from a document,
someone else owns the incoming links.
TXT:
Traceability Of Requirements:
An important aspect of requirements management is ensuring the traceability of requirements. The traceability of a
requirement is the ability to trace the requirements over the course of the entire life cycle of the system Advantages of
requirements traceability
The use of traceability information supports system development in many aspects and is often the precondition for
establishing and using certain techniques during the developmental process [Pohl 1996; Ramesh 1998]:
Verifiability: Traceability of requirements allows verifying whether a requirement has been implemented in
the system, i.e., if the requirement has been implemented through a system property.
Identification of gold-plated solutions in the system: Traceability of requirements allows for the identification
of so-called gold-plated solutions of the developed system and thereby allows identifying unneeded
properties. In order to do that, for each system property (functional or qualitative), a check is performed to
determine whether it contributes to the implementation of a requirement of the system.
Identification of gold-plated solutions in the requirements: Tracing requirements back to their origin allows
identifying requirements that do not contribute to any system goal and are not associated with any source.
Usually, there is no reason for these requirements to exist and hence these requirements do not have to be
implemented.
Impact analysis: Traceability of requirements allows for the analysis of effects during change management.
For example, traceability of requirements allows identifying the requirements artifacts that must be changed
when their underlying requirements undergo a change.
Reuse: Traceability of requirements allows for the reuse of requirements artifacts in other projects. By
comparing the requirements of a previous project to the requirements of a new project by means of trace links,
development artifacts (e.g., components, test cases) can be identified that may be adapted and/or reused in the
new development project.
Accountability: Traceability of requirements allows for retroactive assignment of development efforts to a
requirement. After the requirement is implemented, for example, all partial efforts for the associated
development artifact can be summed up and associated with the requirement.
Maintenance: Traceability of requirements allows for simplified system maintenance. For example, the cause
and effect of failures can be identified, the system components that are affected by the failure can be
determined, and the effort for removing the underlying error can be estimated.
Purpose-Driven Definition of Traceability
As resources are usually severely restricted during development projects, capturing all conceivable information that
supports the traceability of requirements over the course of the system life cycle is almost never possible.
Purpose of traceability information
In order to establish requirements traceability effectively and efficiently, the information to be recorded should be
chosen with respect to the purpose that it will serve. In other words, only the information which has a clear purpose
for system development or system evolution [Dömges and Pohl 1998; Ramesh and Jarke 2001] ought to be recorded.
Recording of traceability information that is not purpose driven often results in the fact that the recorded information
cannot be profitably used in the development project. Traceability information that is recorded in this fashion is often
sketchy and incomplete, unstructured, and erroneous with regard to its further use
Classification Of Traceability Relations:
Pre-RS traceability: Pre-RS traceability are traceability links between requirements and those artifacts that are
the basis for the requirements, e.g., artifacts like the source or origin of a requirement (previous artifacts).
Post-RS traceability: Post-RS traceability comprises traceability information between requirements and
artifacts of subsequent development activities. For example, such artifacts could be components,
implementation, or test cases that belong to a requirement (posterior artifacts).
Traceability between requirements: The traceability between requirements is about mapping dependencies
between requirements. An example of this kind of traceability is the information that a requirement refines
another requirement, generalizes it, or replaces it.
Text-Based References and Hyperlinks: This simple way to represent traceability information of a requirement
consists of annotating the target artifact as a textual reference in the requirement (initial artifact) or to establish
a hyperlink between the initial artifact and the target artifact. When linking artifacts, different types of
hyperlinks with specific link semantics can be used.
Trace Matrices : Another common technique for representing and documenting traceability information
between requirements as well as between requirements and previous and posterior artifacts in the development
process are trace matrices. The rows in a trace matrix contain the initial artifacts (requirements). In the
columns, the target artifacts (e.g., sources of requirements, development artifacts, requirements) are
represented. If a trace link exists between an initial artifact in row n and a target artifact in column m, cell (n,
m) is marked in the trace matrix. Interpretation of a trace matrix Figure 8-7 shows a simple trace matrix for
the trace relation “derived” that exists between two requirements. An entry in the matrix specifies that a trace
link of type “derived” exists from a requirement “Req-n” to another requirement “Req-m” such that “Req-n”
was derived from “Req-m”
Trace Graphs :
A trace graph is a graph in which all nodes represent artifacts and all edges represent relationships between
artifacts. The distinction between different artifacts and types of traceability can be realized by means of
assigning different attributes to the nodes and edges of the graph.Figure 8-8 shows the representation of
traceability information in a simple example. In the trace graph, a node type is defined for each type of artifact
(context information “C”, requirements “Req-n”, components “Comp-n”). In addition, three types of edges are
defined to represent three types of traceability relations (“realized through”, “is origin”, “refines”).
1. Analysis: Once the Requirements have been collected, they need to be analyzed to see if they are
complete, consistent, and clear. Any inconsistencies or ambiguities should be resolved at this stage.
2. Documentation: The Requirements should be documented in a clear and concise way. This will
ensure that everyone understands the Requirements and can refer back to them if needed.
3. Management: Once the Requirements have been collected and documented, they need to be
managed throughout the project. This includes keeping track of changes to Requirements, making
sure everyone is aware of these changes, and ensuring that the requirements are still being met.
Requirements modeling will improve the clarity of your requirements. This may have a profound influence
on the success of your software projects. The following are some of the most significant advantages of
adopting modern requirements modeling and management systems:
Requirements Modeling is important because it helps to ensure that the Requirements for a project are well
understood by everyone involved. It also helps to identify any potential risks or problems early on in the
project, which can save time and money later on.
If you want to achieve quick, consistent, and continuous software delivery, then requirements modeling is
key. Even though this process might not give you clear-cut solutions, it will provide you with a reliable
guide for the end product. This way, your development team will have a stronger comprehension of the
product and how to develop it. Consequently, both developers and clients can voice any concerns they may
have about the product early on. By using this process from the beginning stages of planning, you can
present both your project stakeholders and customers with a comprehensive blueprint that is easy to follow.
Any modifications that are required to match their exact demands and specifications may be addressed in
this strategy. You will decrease the chance of obstacles later on by providing enhanced and rapid feedback at
the start of the project and throughout its duration. When fresh team members are added, it’s even more
crucial. These methods can quickly provide new workers an overview of the project from beginning to end –
from conception to completion. This allows new employees to grasp how iterations in this system are
prioritized.
If Requirements are not well understood, there is a risk that they will not be met. This can lead to the project
being delayed, over budget, or even canceled. In some cases, it can also lead to legal issues if the final
product does not meet the customer’s expectations.
Requirements Modeling Techniques
There are many different tools that can be used for Requirements Modeling, depending on the needs of the
project. Some of the most popular requirements modeling tools include
Requirements Traceability Matrix: A requirements traceability matrix is a table that shows the
relationships between requirements. It can be used to ensure that all requirements are being met.
Use Cases: A use case is a description of how a user will interact with the system to achieve a
specific goal. Use cases can be used to capture functional requirements. Use cases depict the high-
level functionalities that the system should be able to perform.
User Stories: A user story is a short, simple description of a feature from the perspective of the user.
User stories can be used to capture both functional and non-functional requirements.
Process Flow Diagrams: A process flow diagram shows how tasks are performed in a process.
Process flow diagrams can be used to capture both functional and non-functional requirements.
Activity Diagram – This approach is used to address the whole business process or system process –
which may be appropriate for all sorts of users depending on the requirement’s being functional and
the type being fundamental. This approach can only define the scope of a system or procedure, but it
can’t help with detailed impact analysis.
State Diagram – A state diagram is a more detailed approach than a flow chart. Only the various
states of an object that passes through a process flow are depicted in a state diagram when it comes
to the system’s or procedure’s elements, or the process itself. This element, according to this
viewpoint, cannot be used directly in impact analysis calculations.
Sequence Diagram – This is more relevant for a technical user, especially when many processes are
underway. It visualizes how processes or objects interact during a scenario and depicts this in a
graphical way. This approach adds additional value to technical users since it can help them get
down to specific technological specifications. During the development phase, this technique is the
most popular method for requirement reference, owing to its usefulness.
1. Flow Oriented Modeling – The data objects are transformed by the function as it is processed.
2. Class-based Modeling – Class-based modeling represents the object. The system manipulates the
operations.
Classes – To figure out which classes to take, underline each noun or noun clause in the text and
enter it into the table.
Attributes – Attributes are the data objects that define a class within the context of the problem. For
example, ’employee’ is a class consisting of the name, Id, department, designation, and salary of the
employee.
Operations – The operations describe the actions of a thing.
The invention of the unified modeling language (UML) proved to be a game-changer. For those who are
unfamiliar with it: UML is a graphical general-purpose modeling language that covers both structural and
behavioral elements of a system. In a nutshell, it formalizes the use of “boxes and arrows” to provide
defined syntax and meaning.
While UML has been incredibly successful, it has one negative consequence: Over time, it becomes very
large and complex. This can be intimidating for people trying to learn the standard. Therefore, it’s essential
to only use the relevant subset of UML for any given task. Also, like spoken languages, there are different
ways to use UML correctly or incorrectly. A method outlines how the language should ideally be applied in
order to limit which UML elements are used and to what purpose.
Two popular methods for starting a UML requirements model are use cases and class diagrams. To create a
more detailed picture, the initial model is elaborated with additional information. What this looks like in
practice is described below:
ICONIX – ICONIX is a lightweight method from the ’90s. It promised to get from requirements to
code with only four UML diagrams. For whatever reason, it is not very widely known. I consider it
very useful for small and medium-sized software projects that are not safety-critical.
SYSMOD – SYSMOD is more of a toolbox than a method, but it contains a number of useful tactics
for requirements modeling.
At first glance, UML may seem to be all about the diagrams. But if done correctly, it is a byproduct of the
modeling process – albeit a useful one. The diagram helps readers understand the “big picture.” It serves as a
map, guiding them through the model. But each symbol in the diagram provides extensive amounts of extra
information that often has no representation in the picture. To demonstrate this, let’s look at use cases. The
accompanying table below shows some of the information that may be included in part of the model:
Name Log-out
I want to be able to log out of the system so that my account cannot be accessed by
Description
anyone else during this browser session.
The user initiates the log-out command. The system then logs the user out of the system
Activity
and further, displays a corresponding message.
Postcondition
The user is logged out of the system
s
What are Agile Methodologies?
Agile Methodologies such as Scrum and Kanban, provide an iterative approach to validate requirements
by delivering small chunks of functionality and getting feedback from the customer.
It is important to note that no single technique is sufficient on its own and a combination of different
techniques is usually used to validate software requirements effectively.
0 seconds of 16 secondsVolume 0%
Goals describe intentions of stakeholders or groups of stakeholders. Goals can potentially conflict with one
another.
Use cases and scenarios document exemplary sequences of system usage. Scenarios are grouped together in
use cases.
System requirements (generally referred to as requirements) describe detailed functions and qualities that the
system to be developed shall implement or possess. In addition, system requirements provide complete and
precise information to serve as input for subsequent development steps
Model
A model is an abstract representation of an existing reality or a reality to be created.
Requirements Model:
Conceptual models that document the requirements of a system are called requirements models. The Unified
Modeling Language (UML) is frequently used to construct requirements models [OMG 2007]. UML has
developed into the quasi-standard for model-based construction of software systems. It consists of a set of
partially complementary modeling languages that are particularly used in requirements engineering to model
the requirements of a system from different perspectives. Extensive examples of modeling using UML can be
found in [Rupp et al. 2007], for instance.
Requirements models vs. design models
A considerable difference between the conventional use of conceptual models in system development and
model usage for requirements documentation is that conventional models document solutions chosen during
system development. Requirements models, on the other hand, depict specific aspects of the underlying
problem.
2. Entity–Relationship Diagrams
Modelling the retained information in a system, for example flight plans, system knowledge and database records, is
often important. Entity–relationship diagrams (ERDs) provide a means of modelling the entities of interest and the
relationships that exist between them. Chen (1976) initially developed ERDs. There is now a very wide set of
alternative ERD notations.
An entity is an object that can be distinctly identified, such as customer, supplier, part, or product. A property (or
attribute) is information that describes the entity. A relationship has cardinality, which expresses the nature of the
association (one-to-one, one-to-many, many-to-many) between entities. A subtypeis a subset of another entity, i.e. a
type X is a subtype of Y if every member of X belongs to Y. ERDs define a partial model of the system by identifying
the entities within the system and the relationships between them. It is a model that is independent of the processing
which is required to generate or use the information. It is therefore an ideal tool to use for the abstract modelling work
required within the system requirements phase. Consider the example Ambulance C&C system in Figure
3. Statecharts
Functionality and data flows are not enough for requirements definition. It is also necessary to be able to represent the
behaviour of the system and in some circumstances consider the system as having a finite number of possible “states”,
with external events acting as triggers that lead to transitions between the states. To represent these aspects, it is
necessary to examine what states the system can be in and how it responds to events in these states. One of the most
common ways of doing this is to use Harel’s statecharts (Harel, 1987). Statecharts are concerned with providing a
behavioural description of a system. They capture hierarchy within a single diagram form and also enable concurrency
to be depicted and therefore they can be effective in practical situations where parallelism is prevalent. A labelled box
with rounded corners denotes a state.
Hierarchy is represented by encapsulation and directed arcs, labelled with a description of the event, are used to
denote a transition between states. The descriptions of state, event and transition make statecharts suitable for
modelling complete systems
4. Object-oriented Approaches
Object orientation provides a different approach from that of the structured analysis approach. Objects describe stable
(and hopefully) re-usable components.
Object orientation tries to maximize this re-usability by asking the systems engineer to pick persistent objects, i.e.
those that can be used in system requirements and design.
Object orientation focuses on the behaviour of objects and their interrelationships.
a. Class Diagrams
The class diagram is the basic diagramming notation from object-oriented analysis and design. Object
orientation arose out of computer-based simulation. The basic principle is that the contents of a software
system should model the real world. The natural way to handle this is to have objects in the software that
represent entities in the real world, in terms of both information and actions.
Class diagrams express information about classes of objects and their relationships.
For example, in a banking system, instead of having an accounts file and separate accounts programs, there
are accounts objects that have information such as balance and overdraft limit and relationships to other
objects such as account owner. These objects have operations (also called methods) to handle the actions that
are performed in accounts, such as check balance, deposit, withdraw.
b. Use Cases
Use cases define the interaction that takes place between a user of a system (an actor) and the system itself.
They are represented as process bubbles in a DFD type of context diagram. The use case diagram contains the
actors and the use cases and shows the relationship between them. Each use case defines functional
requirements for the system. Actors do not need to be human, even though they are represented as stick
figures, but in fact represent roles. Each of the actors will have an association with at least one use case.
Methods
A method is a degree more prescriptive than a modelling approach – it tells us what to do to and in what order to do it.
Methods use various representations ranging from natural language, through diagrammatic forms to formal
mathematics. Methods indicate when and where to use such representations. Those methods that use diagrammatic
representations are usually referred to as “structural methods”; those that use object orientation are referred to as
“object-oriented methods” and those that use mathematics are referred to as “formal methods”.
The purpose of the representations used in a method is to capture information. The information capture is aided by
defining the set of concepts that a diagram represents, and the syntactic rules that govern the drawing of diagrams.
A. Viewpoint Methods
A viewpoint-based approach to requirements engineering recognizes that requirements should not be considered from
a single perspective. It is built on the premise that requirements should be collected and indeed organized from a
number of different viewpoints. Basically two different kinds of viewpoint have been proposed: • viewpoints
associated with stakeholders; • viewpoints associated with organizational and domain knowledge. The role of the
stakeholder is well understood in requirements engineering; however viewpoints associated with organization and
domain knowledge may be those associated with some aspect of security, marketing, database system, regulation,
standards, etc. Such viewpoints are not associated with a particular stakeholder, but will include information from a
range of sources.
i. Controlled Requirements Expression (CORE)
CORE was originally developed following work on requirements analysis carried out for the UK Ministry
of Defence. A key finding of this work was that methods often started by defining the context of a solution
to a problem, rather than attempting to define the problem itself, before beginning to assess possible
solutions. CORE was specifically designed to address the latter approach. Figure 3.14 indicates the
concepts and representations used in CORE. The central concept of CORE is the viewpoint and the
associated representation known as the viewpoint hierarchy. A viewpoint can be a person, role or
organization that has a view about an intended system.
When used for system requirements, the viewpoints can also represent the intended system, its subsystems
and systems that exist within the environment of the system that may influence what the system must do.
The viewpoints are organized in a hierarchy to provide a scope and also to guide the analysis process.
Lines are drawn between adjacent columns to indicate the flows that take place. Once each viewpoint has
been analyzed in this way, the TCFs at each level in the viewpoint hierarchy are checked as a group to
ensure that the inputs which each viewpoint expects are generated by the source viewpoint and that the
outputs which each action generates are expected by the viewpoint(s) indicated as the destination(s) for
them.
Formal methods are slowly becoming more important. If their scope can be broadened to address wider system issues,
they will become more useful.
i. Z – A Model-based Formal Method
Z is a formal specification notation based on first-order predicate logic and set theory. The notation allows data to be
represented as sets, mappings, tuples, relations, sequences and Cartesian products. There are also functions and
operation symbols for manipulating data of these types. Z specifications are presented in a small, easy to read boxed
notation called a “schema”. Schemas take the form of a signature part and a predicate part. The signature part is a list
of variable declarations and the predicate part consists of a single predicate. Naming a schema introduces a syntactic
equivalence between the name and the schema. The Z schema is illustrated in Figure 3.31. Specifications in Z are
presented as a collection of schemas where a schema introduces some specification entities and sets out the
relationships between them. They provide a framework within which a specification can be developed and presented
incrementally. Figure 3.32 shows a Z specification for the “issue” operation for a library, where the general behaviour
of the overall library system would be specified in a schema named “library”. The notation Library is called a delta
schema and indicates that the “issue” operation causes a state change to occur in the library.