Nivaar worked solution (AI-drafted; not reviewed by a licensed engineer)
Notes on this paper
04-Soft-A6, Software Quality Assurance — National Exams, May 2018 (3 hours, open book, 8 questions of equal value; the first FIVE as they appear in the answer book are marked — all eight are solved here as a study resource).
Part (a) — software reliability. Software reliability is the probability of failure-free operation of a computer program, in a specified environment, for a specified period of time (Musa's classic definition). It is a statistical property measured against actual usage — not a binary "works/doesn't work" judgment — because the same program with the same latent defects can appear perfectly reliable to one user population (whose inputs never trigger the defect) and unreliable to another (whose usage profile exercises exactly the code path containing it).
Part (b) — techniques to increase reliability.
Fault avoidance/prevention. Rigorous requirements and design reviews, formal methods where warranted, and enforced coding standards reduce the number of latent defects introduced in the first place.
Fault tolerance. Redundancy techniques (N-version programming, recovery blocks), defensive input validation, and structured exception handling let the system survive a fault that does trigger without failing outright.
Operational-profile-driven testing. Testing weighted toward how the system will actually be used in the field (its operational profile) finds the defects most likely to be hit in practice, giving the best reliability improvement per hour of testing.
Systematic fault removal. Root-cause defect tracking, ensuring every found fault is actually fixed (not just worked around) and regression-tested, so the defect count genuinely decreases over successive releases rather than merely being hidden.
Reliability-aware design. Modularity that limits how far a single fault's effects can propagate, and simplicity that reduces the surface area for defects to hide in.
Part (c) — safety-critical vs. safety-related systems. A safety-critical system is one whose failure could directly cause loss of life, serious injury, or major environmental/financial damage — e.g., flight-control software or a medical infusion-pump controller, where the software's own failure is the proximate cause of the hazard. A safety-related (safety-involved) system contributes to an overall safety function without itself being the sole or direct cause of catastrophic harm if it fails — e.g., a monitoring or alarm subsystem that alerts a human operator to intervene: its failure degrades the safety margin (the operator loses their warning) but does not, by itself, directly cause the hazard the way a safety-critical control loop's failure would. The distinction matters practically because safety-critical systems warrant the heaviest reliability/verification investment (independent verification, formal hazard analysis, redundant architectures), while safety-related systems still need above-average rigor but can be engineered to a correspondingly lower (though still elevated) assurance level.