Software Engineering & Object-Oriented Analysis & Design β Software Process and Requirements, NEC licence examination syllabus (Nepal Engineering Council).
Software Quality Attributes
The non-functional properties that decide whether software is usable β and why they conflict with each other.
π Where this lives: quality attributes are where architecture is actually decided. "Make it fast" and "make it maintainable" pull in opposite directions, and every real design is a chosen point in that trade space, not a maximum on every axis. This is why architecture documents list attributes in priority order: when two conflict at 2 a.m., someone needs to know which wins. Netflix explicitly prioritises availability over consistency; a bank does the reverse. Neither is wrong β they made different trades. Search "architecturally significant requirements quality attributes".
McCall's quality factors
A = MTBF / (MTBF + MTTR) With MTBF = 1000 h, MTTR = 4 h, A = 99.6 %, down = 34.9 h.
Push availability from 99% to 99.9% and the annual downtime falls from about 88 hours to about 9. Each extra nine costs ten times more engineering and removes ten times less downtime than the one before β which is the whole argument about where to stop.
The classic classification splits quality into three groups by
WHAT you are asking about.
PRODUCT OPERATION β how well does it run?
CORRECTNESS does it satisfy the specification?
RELIABILITY does it perform without failure? Measured as
MTBF, or availability.
EFFICIENCY how much CPU, memory, bandwidth does it need?
INTEGRITY can unauthorised access be prevented?
USABILITY effort needed to learn and operate it
PRODUCT REVISION β how easily can it be changed?
MAINTAINABILITY effort to locate and fix a defect
FLEXIBILITY effort to modify an operational program
TESTABILITY effort to test that it works
PRODUCT TRANSITION β how easily does it move?
PORTABILITY effort to move to another environment
REUSABILITY can parts be used in other programs?
INTEROPERABILITY effort to couple it to other systems
FUNCTIONAL vs NON-FUNCTIONAL, since this is the distinction the
attributes belong to:
FUNCTIONAL WHAT the system does β "the user can
transfer money"
NON-FUNCTIONAL HOW WELL it does it β "the transfer completes
within 2 seconds, 99.9% of the time"
Non-functional requirements are usually the ones that
determine ARCHITECTURE, and the ones that are hardest to
retrofit. You can add a feature to a working system; you
cannot easily add "responds in 100 ms" to one that responds in
10 seconds.
ISO/IEC 25010 β the modern replacement for McCall, with eight
characteristics:
functional suitability Β· performance efficiency Β·
compatibility Β· usability Β· reliability Β· security Β·
maintainability Β· portability
Measuring the attributes
A quality attribute is worthless as a requirement unless it is
MEASURABLE. "The system shall be user-friendly" cannot be
tested; "a trained user shall complete a booking in under 90
seconds with fewer than 2 errors" can.
attribute how to make it measurable
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
reliability MTBF, failure rate, availability %
performance response time percentile, throughput
usability task completion time, error rate, training
hours
portability % of code needing change per platform
maintainability mean time to repair; cyclomatic complexity
security time to compromise; vulnerabilities found in
audit
testability % statement/branch coverage achievable
AVAILABILITY ARITHMETIC β the "nines", worth memorising because
the numbers are counter-intuitive:
availability downtime per year per month
ββββββββββββββββββββββββββββββββββββββββββββββ
90% (1 nine) 36.5 days 73 hours
99% (2 nines) 3.65 days 7.3 hours
99.9% (3 nines) 8.77 hours 43.8 minutes
99.99% (4 nines) 52.6 minutes 4.4 minutes
99.999% (5 nines) 5.26 minutes 26 seconds
Each extra nine divides downtime by 10 and typically MULTIPLIES
cost β redundant hardware, multi-region deployment, on-call
staffing. Going from 99.9% to 99.99% means your entire yearly
allowance is under an hour, which rules out any manual
recovery procedure.
MTBF / MTTR RELATIONSHIP:
availability = MTBF / (MTBF + MTTR)
WORKED: MTBF = 1000 hours, MTTR = 1 hour
availability = 1000/1001 = 0.999 = 99.9%
Improve MTTR to 0.1 hour (6 minutes) with the same MTBF:
= 1000/1000.1 = 0.9999 = 99.99%
READ THAT AGAIN: reducing RECOVERY time from 60 to 6 minutes
bought a whole extra nine, without making the system fail any
less often. Often it is far cheaper to recover faster than to
fail less β which is the entire argument for automated
rollback and for chaos engineering.
The trade-offs β why you cannot maximise everything
Quality attributes CONFLICT. An architect's job is choosing,
not maximising.
EFFICIENCY vs MAINTAINABILITY
hand-optimised code is faster and harder to read. Every
abstraction that aids maintenance costs some performance.
EFFICIENCY vs PORTABILITY
using platform-specific features is faster and less
portable.
SECURITY vs USABILITY
every additional authentication step improves security and
annoys users. Password complexity rules push users to write
passwords down β a security measure producing a security
hole.
RELIABILITY vs EFFICIENCY
redundancy, checksums, retries and validation all cost time
and memory.
FLEXIBILITY vs SIMPLICITY
a configurable system handles more cases and is harder to
understand, test and support. "Make it configurable" often
means "we could not decide, so the user must".
TIME-TO-MARKET vs everything
the trade nobody writes down but everyone makes.
HOW ARCHITECTS RESOLVE THIS: state the attributes in PRIORITY
ORDER, with measurable targets, and record the trade
explicitly.
Instead of: "the system must be secure, fast and easy to use"
write: "1. security (no unauthenticated data access)
2. reliability (99.9% availability)
3. performance (p95 under 500 ms)
4. usability
where 3 and 4 may be sacrificed for 1 and 2"
That ordering is what lets an engineer make the right call
without escalating β which is the practical purpose of an
architecture document.
THE COST OF QUALITY has three components:
PREVENTION planning, reviews, training, tooling
APPRAISAL inspection, testing, audits
FAILURE internal (rework before release) and
EXTERNAL (support, warranty, reputation,
liability)
The relationship is the cost-of-change curve again: money
spent on prevention and appraisal reduces failure cost by far
more than it costs, because external failure is the most
expensive category by an order of magnitude.
The MTBF/MTTR result is the most useful thing on this page: cutting recovery time from 60 minutes to 6 gained an entire nine of availability without improving reliability at all. Making failure cheap is usually easier than making it rare β which is why modern practice invests in monitoring, rollback and blameless postmortems rather than trying to eliminate failure.
π Go further: Google's SRE practice turned availability from an aspiration into a budget. Instead of "aim for 100% uptime", you set an SLO (say 99.9%) which grants an error budget of 43.8 minutes per month β and if the budget is unspent, you are being too cautious and should ship faster; if it is exhausted, feature work stops until reliability improves. That reframing makes the reliability-versus-velocity trade explicit and quantitative rather than a permanent argument. Search "Google SRE error budget SLO".
π‘ Exam angle: reproduce McCall's three groups (product operation, revision, transition) with the factors in each. Distinguish functional from non-functional requirements and state that non-functional ones drive architecture. Know availability = MTBF / (MTBF + MTTR) and the nines table β being able to convert 99.9% to 8.77 hours per year is a common numerical. The strongest answers discuss conflicts between attributes (efficiency vs maintainability, security vs usability) and note that a quality requirement must be measurable to be testable.
Syllabus points
Reliability, maintainability, usability, etc.
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