0% found this document useful (0 votes)
15 views23 pages

Requirements Engineering in Software Systems

Requirements engineering is the process of defining the services and constraints of a system as required by the customer. It encompasses various types of requirements, including user and system requirements, functional and non-functional requirements, and the roles of stakeholders involved in the system. The document highlights the importance of clarity, completeness, and consistency in requirements to ensure effective system development.

Uploaded by

slahbardt
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views23 pages

Requirements Engineering in Software Systems

Requirements engineering is the process of defining the services and constraints of a system as required by the customer. It encompasses various types of requirements, including user and system requirements, functional and non-functional requirements, and the roles of stakeholders involved in the system. The document highlights the importance of clarity, completeness, and consistency in requirements to ensure effective system development.

Uploaded by

slahbardt
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Chapter 5 – Requirements Engineering

Software Engineering
Dr. Yahya Esmail Al-Ashmori
Ph.D. in Information Technology (IT)
Email: Gdyahya@[Link]
1
Requirements engineering

 The process of establishing the services that a customer


requires from a system and the constraints under which
it operates and is developed.

 The system requirements are the descriptions of the


system services and constraints that are generated
during the requirements engineering process.

2
What is a requirement?

 It may range from a high-level abstract statement of a


service or of a system constraint to a detailed
mathematical functional specification.
 This is inevitable as requirements may serve a dual
function
▪ May be the basis for a bid for a contract - therefore must be open
to interpretation;
▪ May be the basis for the contract itself - therefore must be
defined in detail;
▪ Both these statements may be called requirements.

3
Types of requirement

User requirements
▪ Statements in natural language plus diagrams of the
services the system provides and its operational
constraints. Written for customers.
System requirements
▪ A structured document setting out detailed descriptions of
the system’s functions, services and operational
constraints. Defines what should be implemented so may
be part of a contract between client and contractor.
User and system requirements

5
Readers of different types of requirements
specification

6
System stakeholders

 Any person or organization who is affected by the


system in some way and so who has a legitimate interest
 Stakeholder types
▪ End users
▪ System managers
▪ System owners
▪ External stakeholders

7
Stakeholders in the Mentcare system

 Patients whose information is recorded in the system.


 Doctors who are responsible for assessing and treating
patients.
 Nurses who coordinate the consultations with doctors
and administer some treatments.
 Medical receptionists who manage patients’
appointments.
 IT staff who are responsible for installing and maintaining
the system.

8
Stakeholders in the Mentcare system

 A medical ethics manager who must ensure that the


system meets current ethical guidelines for patient
care.
 Health care managers who obtain management
information from the system.
 Medical records staff who are responsible for
ensuring that system information can be maintained
and preserved, and that record keeping procedures
have been properly implemented.

9
Functional and non-functional requirements

10
Functional and non-functional requirements

Functional requirements
▪ Statements of services the system should provide, how
the system should react to particular inputs and how the
system should behave in particular situations.
▪ May state what the system should not do.
Non-functional requirements
▪ Constraints on the services or functions offered by the
system such as timing constraints, constraints on the
development process, standards, etc.
▪ Often apply to the system as a whole rather than
individual features or services.
Domain requirements
▪ Constraints on the system from the domain of operation
11
Functional requirements

Describe functionality or system services.


Depend on the type of software, expected users
and the type of system where the software is
used.
Functional user requirements may be high-level
statements of what the system should do.
Functional system requirements should describe
the system services in detail.

12
Mentcare system: functional requirements

A user shall be able to search the appointments


lists for all clinics.
The system shall generate each day, for each
clinic, a list of patients who are expected to
attend appointments that day.
Each staff member using the system shall be
uniquely identified by his or her 8-digit employee
number.

13
Requirements imprecision

Problems arise when functional requirements are


not precisely stated.
Ambiguous requirements may be interpreted in
different ways by developers and users.
Consider the term ‘search’ in requirement 1
▪ User intention – search for a patient name across all
appointments in all clinics;
▪ Developer interpretation – search for a patient name in
an individual clinic. User chooses clinic then search.

14
Requirements completeness and
consistency
In principle, requirements should be both complete
and consistent.
Complete
▪ They should include descriptions of all facilities required.
Consistent
▪ There should be no conflicts or contradictions in the
descriptions of the system facilities.
In practice, because of system and environmental
complexity, it is impossible to produce a complete
and consistent requirements document.
15
Non-functional requirements

These define system properties and constraints


e.g. reliability, response time and storage
requirements. Constraints are I/O device
capability, system representations, etc.
Process requirements may also be specified
mandating a particular IDE, programming
language or development method.
Non-functional requirements may be more critical
than functional requirements. If these are not met,
the system may be useless.
16
Types of nonfunctional requirement

17
Non-functional requirements implementation

 Non-functional requirements may affect the overall


architecture of a system rather than the individual
components.
▪ For example, to ensure that performance requirements are met,
you may have to organize the system to minimize communications
between components.
 A single non-functional requirement, such as a security
requirement, may generate a number of related functional
requirements that define system services that are
required.
▪ It may also generate requirements that restrict existing
requirements.

18
Non-functional classifications

Product requirements
▪ Requirements which specify that the delivered product
must behave in a particular way e.g. execution speed,
reliability, etc.
Organisational requirements
▪ Requirements which are a consequence of organisational
policies and procedures e.g. process standards used,
implementation requirements, etc.
External requirements
▪ Requirements which arise from factors which are external
to the system and its development process e.g.
interoperability requirements, legislative requirements, etc.
19
Examples of nonfunctional requirements in the
Mentcare system

Product requirement
The Mentcare system shall be available to all clinics during normal
working hours (Mon–Fri, 0830–17.30). Downtime within normal
working hours shall not exceed five seconds in any one day.

Organizational requirement
Users of the Mentcare system shall authenticate themselves using
their health authority identity card.

External requirement
The system shall implement patient privacy provisions as set out in
HStan-03-2006-priv.

20
Goals and requirements

Non-functional requirements may be very difficult to


state precisely and imprecise requirements may be
difficult to verify.
Goal
▪ A general intention of the user such as ease of use.
Verifiable non-functional requirement
▪ A statement using some measure that can be objectively
tested.
Goals are helpful to developers as they convey the
intentions of the system users.
21
Usability requirements

The system should be easy to use by medical


staff and should be organized in such a way that
user errors are minimized. (Goal)
Medical staff shall be able to use all the system
functions after four hours of training. After this
training, the average number of errors made by
experienced users shall not exceed two per hour
of system use. (Testable non-functional
requirement)

22
Metrics for specifying nonfunctional requirements
Property Measure
Speed Processed transactions/second
User/event response time
Screen refresh time
Size Mbytes
Number of ROM chips
Ease of use Training time
Number of help frames
Reliability Mean time to failure
Probability of unavailability
Rate of failure occurrence
Availability
Robustness Time to restart after failure
Percentage of events causing failure
Probability of data corruption on failure
Portability Percentage of target dependent statements
Number of target systems 23

Common questions

Powered by AI

Distinguishing between functional and non-functional requirements is crucial because they address different aspects of a system's expected behavior and capabilities. Functional requirements specify the services that the system should provide, reactions to inputs, and behaviors in specific situations . They also describe both what the system should do and sometimes what it should not do . Non-functional requirements, on the other hand, impose constraints on the system and its development processes, such as performance, usability, and reliability . These requirements often apply to the system as a whole rather than to individual features, and they may significantly influence the system's architecture and design . Failing to meet non-functional requirements can render a system useless, regardless of whether it satisfies all its functional requirements . This distinction helps ensure clarity and completeness in system specifications, guiding both development and evaluation processes.

Requirements engineering processes aid in mitigating stakeholder conflicts by facilitating clear communication and understanding among all parties involved. Engaging stakeholders in the iterative development of requirements ensures that their needs and constraints are considered and reconciled early in the process . Techniques such as stakeholder analysis, prioritization, and negotiation help identify and address conflicts . Requirements validation and verification activities, such as reviews and prototyping, provide further opportunities to resolve misunderstandings and align stakeholder expectations before significant development resources are committed . By establishing a shared vision through comprehensive requirements engineering, potential conflicts are addressed in a structured manner, reducing the risk of issues later in the development lifecycle.

Stakeholders might have different interpretations of a requirement due to variations in their roles, needs, and perspectives. For instance, end-users might focus on usability and service functionality, while developers might interpret requirements with an eye towards technical feasibility and efficiency . This can lead to misaligned expectations and project delays. To address this issue, requirements should be stated precisely with clear, unambiguous language, supported by diagrams where appropriate, and validated through stakeholder reviews . Engaging stakeholders in discussions and reviews ensures that their interpretations are aligned and any ambiguities are resolved early in the requirements engineering process .

Ambiguous functional requirements lead to differing interpretations between stakeholders, which can cause significant issues during development. For example, the requirement 'search' could be intended by users to mean searching for a patient name across all appointments in all clinics, whereas developers might interpret it to mean searching within an individual clinic after the user selects a clinic . Such misalignment can result in the development of a system that does not meet users' actual needs, thus necessitating costly and time-consuming rework . Clear, precise requirements reduce these risks by ensuring all parties have a shared understanding of system expectations and deliverables.

User and system requirements differ mainly in their level of detail and intended audience. User requirements are high-level statements, typically expressed in natural language and diagrams, that describe the services the system offers from the user's perspective . They are intended to be understood by customers and generally include operational constraints. System requirements, however, are more detailed structured documents that describe the system's functionalities and services with precision, often forming the basis for a contract between client and contractor . The relationship between user and system requirements is such that system requirements elaborate and refine user requirements to provide clear guidance for system implementation . This relationship ensures that user needs are translated accurately into technical specifications that can be effectively developed.

Non-functional requirements can be more critical than functional requirements in situations where the system's overall performance, security, or compliance with external regulations is paramount. For example, in safety-critical domains, reliability and robustness are essential to prevent harmful failures, making these non-functional requirements vital . Similarly, systems handling sensitive data, such as healthcare records, must meet stringent privacy and security requirements to comply with legal standards and protect user information . In such cases, failing to meet non-functional requirements can result in a system that is operationally non-viable, regardless of its functional capabilities.

Goals play a crucial role in shaping non-functional requirements by providing a high-level expression of user intentions, which can guide developers in understanding the essential qualities desired by stakeholders . Though often imprecise, these goals provide the context necessary for deriving specific, verifiable non-functional requirements. Verification of non-functional requirements involves formulating them in measurable terms, which can be objectively tested, such as specifying response times or error rates . For example, a goal like 'ease of use' can translate into a requirement where medical staff should be able to use all system functions after four hours of training, with an established error rate . These measurable aspects then serve as benchmarks for verifying compliance with non-functional standards during development and testing.

Achieving completeness and consistency in a requirements document is challenging due to the inherent complexity of systems and their operating environments. Completeness requires that all necessary facilities and features are described, which is difficult due to evolving user needs and potential oversight . Consistency demands that there are no contradictions between requirements, which can be hard to ensure when different stakeholders with diverse perspectives and needs are involved . As a result, perfect completeness and consistency are practically impossible, and requirements documents often reflect compromises and iterations as stakeholders negotiate their differing priorities and understandings .

Inadequate specification of non-functional requirements can lead to a system failing to meet critical user and business needs, rendering it ineffective or even unusable despite functioning correctly at a technical level. For instance, if performance-related requirements such as response time or transaction processing are not precisely defined and achieved, users may find the system too slow, impairing productivity . Security oversights due to vague non-functional requirements might result in vulnerabilities and data breaches, compromising user trust and exposing the organization to legal liabilities . Thus, non-functional requirements are essential not only for the technical integrity of the system but also for its viability and acceptance by stakeholders.

Non-functional requirements can significantly influence system architecture by dictating the need for architectural decisions that support certain properties and constraints across the system. For example, to meet performance requirements, an architecture might need to be designed to minimize inter-component communication to reduce latency . Similarly, a security requirement could result in the need for specific authentication and data protection mechanisms which will affect how system components interact with each other . As such, non-functional requirements often result in overarching strategies that shape the entire system design, beyond the direct implementation of any single feature or function.

You might also like