25 Lecture 2: Introduction
25.1 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.
25.2 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
25.2.1 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.
25.2.2 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

25.2.3 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.