Lecture 2: Introduction
System and User Requirements
- User Requirements: High-level description of services requested and constraints imposed. Built for the user.
- System Requirements: A more detailed and structured description of services and constraints. Usually part of the contract between developer and client.
Types of Requirements
Functional Requirements: Describe the requested functionality or behavior of the system
- e.g. services, reaction to input, exceptions, modes of operation
Non-functional Requirements: Represent constraints on the system and its functionality
- e.g. performance constraints, compliance with standards
Domain Requirements: can be either functional or non-functional and reflect the particularities of the application domain
Functional Requirements
Describe the functionality of the system or service
Can be expressed at different levels of detail (user/system requirements)
desirable to have a complete and consistent set of functional requirements
- Completeness: all required system facilities are defined
- Consistency: there are no contradictions or conflicts in the requirements
Problems arise when requirements are not precisely stated. Ambiguous requirements may be interpreted in different ways by developers and users.
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.
- Many apply to the system as a whole
- More critical than individual functional requirements. If they are not met, system may be useless
- More difficult to verify
They can be classified into three types
Product Requirements: specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc.
Organizational Requirements: a consequence of organizational policies and procedures e.g. process standards used, implementation requirements, etc.
External Requirements: arise from factors which are external to the system and its development process e.g. interoperability requirements, legislative requirements, etc
Two terms
Goal: general intention of the user such as ease of use
Verifiable non-functional requirement: statement using some measure that can be objectively tested

Domain Requirements
- Derived from the application domain and describe system characteristics and features that reflect the domain.
- Domain requirements may be new functional requirements, constraints on existing requirements or define specific computations.
- If domain requirements are not satisfied, the system may be unworkable.