Software Engineering & Object-Oriented Analysis & Design β Software Process and Requirements, NEC licence examination syllabus (Nepal Engineering Council).
Functional and Non-functional Requirements
What the system does versus how well it does it β and why the second kind decides the architecture.
π Where this lives: functional requirements get you a working system; non-functional ones decide whether it survives contact with real users. You can add a feature to a running system, but you cannot retrofit "responds in 100 ms" onto something that takes 10 seconds, or "handles 10,000 concurrent users" onto a design built for 100 β those need different architectures, chosen at the start. That is why the phrase architecturally significant requirement exists, and why every serious design review asks about the non-functional list first. Search "non-functional requirements drive architecture".
The distinction
FUNCTIONAL REQUIREMENTS β WHAT the system must do.
services, behaviour, inputs, outputs, reactions to
particular inputs.
"The system shall allow a registered user to transfer funds
between their own accounts."
"The system shall email a receipt after each transaction."
"The system shall reject a withdrawal exceeding the
available balance."
NON-FUNCTIONAL REQUIREMENTS (NFRs) β HOW WELL, and under what
constraints.
properties and constraints on the system as a whole, rather
than on individual functions.
"A funds transfer shall complete within 2 seconds for 95% of
requests."
"The system shall be available 99.9% of each calendar
month."
"All stored account numbers shall be encrypted at rest."
THE CRITICAL ASYMMETRY: a failed functional requirement makes
one feature unusable. A failed non-functional requirement can
make the WHOLE SYSTEM unusable β a correct system that takes
30 seconds per page is not a working system.
WHY NFRs ARE HARDER:
Β· they are EMERGENT β they arise from the whole system, so no
single module can be held responsible
Β· they often CONFLICT with each other (from the quality
attributes topic: security vs usability, efficiency vs
maintainability)
Β· they are frequently stated non-measurably ("the system shall
be user friendly"), which makes them untestable
Β· they constrain the ARCHITECTURE, so discovering one late is
expensive in exactly the way the cost-of-change curve
predicts
DOMAIN REQUIREMENTS β the third category, easily forgotten:
requirements that come from the APPLICATION DOMAIN rather than
from users. They may be functional or non-functional, and
their distinguishing feature is that domain experts consider
them so obvious they do not mention them.
"Deceleration shall be computed as D_train = D_control +
D_gradient." (railway signalling)
"Interest shall be computed on the daily closing balance."
(banking convention)
DANGER: because they are unstated, they are the commonest
source of "the system is technically correct and professionally
useless". The requirements engineer must actively extract
them.
Classifying non-functional requirements
The standard three-way split (Sommerville):
PRODUCT REQUIREMENTS β constraints on the delivered software
performance response time, throughput
usability training time, error rates
reliability MTBF, availability
portability target platforms
space memory / storage footprint
security confidentiality, integrity
ORGANISATIONAL REQUIREMENTS β from the developing or using
organisation's policies
process "development shall follow the company's
XYZ-2019 standard"
delivery "the system shall be delivered in three
increments"
implementation "the system shall be written in Java 21"
environmental "the system shall run on the existing
Kubernetes cluster"
EXTERNAL REQUIREMENTS β from outside both organisations
regulatory "the system shall comply with the Nepal Data
Protection guidelines"
legislative audit-trail retention periods
ethical "user location shall not be recorded"
interoperability "the system shall exchange data with the
national ID service using its published API"
safety/security certification requirements
MAKING AN NFR TESTABLE β the single most valuable skill here.
Every vague NFR has a measurable form:
VAGUE MEASURABLE
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
"shall be easy to use" "a trained clerk shall complete
a booking in under 90 s with
fewer than 2 errors"
"shall be fast" "p95 response under 500 ms at
200 concurrent users"
"shall be reliable" "MTBF β₯ 2000 hours; availability
β₯ 99.9% monthly"
"shall be maintainable" "a defect in any module shall be
localisable within 4 person-hours"
"shall be secure" "shall pass OWASP ASVS Level 2;
no plaintext credentials at rest"
"shall be portable" "shall run unmodified on Linux and
Windows; β€ 5% of code
platform-specific"
THE TEST FOR A GOOD REQUIREMENT: could two engineers
independently decide whether it has been met, and agree? If
not, it is a wish, not a requirement.
METRICS FOR NFRs, by property:
speed transactions/second, response time, ms
size MB, number of chips
ease of use training time, number of help frames
reliability MTBF, probability of unavailability, rate of
failure occurrence
robustness time to restart after failure, % of events
causing failure
portability % of target-dependent statements, number of
target systems
Worked example β turning wishes into requirements
A STAKEHOLDER SAYS:
"We need a fast, secure, easy-to-use system for issuing
licences that can handle our busy season."
NONE of that is a requirement. Each clause needs
interrogation:
"FAST"
β fast at what? Which operation matters?
β FR: "The system shall display an applicant's status
given a licence number."
β NFR: "The status lookup shall return within 1 second for
99% of requests, measured at the server."
(note: "measured at the server" β otherwise the network
is in scope and the requirement is untestable)
"SECURE"
β secure against whom, protecting what?
β NFR: "Applicant personal data shall be encrypted at rest
using AES-256 and in transit using TLS 1.3 or later."
β NFR: "All read access to applicant records shall be logged
with the accessing user, timestamp and record id;
logs shall be retained 7 years and shall not be
editable by application users."
"EASY TO USE"
β for whom, doing what, measured how?
β NFR: "A counter clerk with 2 hours' training shall
complete a new-licence entry in under 3 minutes with
no more than one validation error."
"BUSY SEASON"
β what is the actual load, and when?
β NFR: "The system shall sustain 500 concurrent users and
50 licence issuances per minute during the Julyβ
August renewal period, with response times per the
requirement above."
β this is the one that DECIDES THE ARCHITECTURE. 500
concurrent users needs connection pooling, caching and
probably horizontal scaling. Discovering it after the
design is fixed is the expensive case.
WHAT THE INTERROGATION PRODUCED:
1 functional requirement
4 non-functional requirements, all testable
1 architectural constraint
And note what happened to "fast": the vague word became TWO
decisions β which operation, and what percentile. A p50
("average") target is nearly useless because it says nothing
about the users having a bad experience; p95 or p99 is what
users actually feel.
The measurement point matters as much as the number. "Response within 1 second" is untestable until you say where it is measured β at the server, at the browser, or end-to-end including the user's mobile network. Requirements that omit the measurement point generate arguments at acceptance testing, which is the worst possible time to be having them.
π Go further: the industry's answer to "make NFRs measurable" is the SLI / SLO / SLA hierarchy. An SLI is the indicator you actually measure (p99 latency); an SLO is the internal target (p99 < 300 ms); an SLA is the contractual promise with penalties (p99 < 1 s or you get a refund) β deliberately looser than the SLO so you have margin. That three-level structure is exactly what a well-written non-functional requirement needs, and it makes explicit that the number you promise and the number you aim for should differ. Search "SLI SLO SLA difference".
π‘ Exam angle: define functional, non-functional and domain requirements with examples, and state the asymmetry β a failed NFR can render the whole system unusable. Reproduce Sommerville's three NFR categories (product, organisational, external) with examples of each. The most-asked practical skill is rewriting a vague requirement measurably: expect to be given "the system shall be user-friendly" and asked to make it testable. Note that domain requirements are often unstated because experts assume them.
Syllabus points
Functional vs non-functional requirements
Create a free account to tick topics off, take notes as you read, watch the video lessons and get a day-by-day study plan built around your exam date.
Related topics in Software Process and Requirements