Software Design and Software Quality
Software Quality Factors: McCall and ISO 9126
| Framework | Structure |
|---|---|
| McCall's quality factors | Groups factors under three perspectives — PRODUCT OPERATION (correctness, reliability, efficiency, integrity, usability), PRODUCT REVISION (maintainability, flexibility, testability) and PRODUCT TRANSITION (portability, reusability, interoperability) — an older but historically foundational classification. |
| ISO 9126 | An international standard naming six top-level characteristics — functionality, reliability, usability, efficiency, maintainability, portability — each broken into sub-characteristics, providing a standardised (rather than one vendor's own) vocabulary for software quality. |
Software Reliability
Software reliability is the probability of failure-free operation for a specified period under specified conditions — measured by metrics such as MTBF (mean time between failures) and failure rate/intensity, and modelled by growth models that predict how reliability improves as testing continues to find and remove defects.
Software Sizing, Estimation and COCOMO
Software sizing estimates the amount of work up front: LOC-based estimation counts (or predicts) lines of code, simple but sensitive to language and coding style; FUNCTION-POINT (FP) based estimation instead counts user-visible functional elements (inputs, outputs, inquiries, internal/external files) weighted by complexity, giving a size measure that is language-independent and available earlier in the process (function points can be counted from requirements, before a line of code is written).
Key takeaways
- High cohesion within modules and low coupling between them are the joint goal — one without the other is still a bad design.
- McCall's factors group under operation/revision/transition; ISO 9126 names six international-standard characteristics.
- Quality assurance is process-focused and preventive; quality control is product-focused and detective — different activities, not synonyms.
- Function points are language-independent and countable from requirements alone, unlike LOC-based sizing.
- COCOMO's organic/semi-detached/embedded modes scale effort with project size and constraint tightness, with embedded projects' effort growing fastest with size.
Practice questions (8)
Attempt each one before opening the answer. Every explanation names the tempting wrong option as well as the right one, because that is where marks are lost.
A well-designed module is one that has:
Show answer
Answer: A — High cohesion within it and low coupling to other modules
High internal cohesion (a module doing one well-defined thing) and low external coupling (minimal dependence on other modules) are pursued together as the joint goal of good modular design.In McCall's quality factors, maintainability, flexibility and testability are grouped under:
Show answer
Answer: A — Product revision
Product revision groups the factors relevant to changing the software after delivery — maintainability, flexibility and testability — as distinct from product operation (using it as-is) and product transition (moving it to a new environment).Quality assurance, as distinct from quality control, is best described as:
Show answer
Answer: A — Process-focused and largely preventive
Quality assurance targets the PROCESS to prevent defects before they occur; the product-focused, detective checking of a specific deliverable (reviews, testing) is quality control's job instead.Function-point (FP) based sizing, compared to LOC-based sizing, has the advantage that it:
Show answer
Answer: A — Is language-independent and can be counted from requirements before any code is written
Function points count user-visible functional elements weighted by complexity, which can be identified from the requirements/specification alone — unlike LOC, which cannot be known until code exists and which varies with language/style for the same functionality.In COCOMO, an EMBEDDED-mode project (large, complex, tightly constrained) has an effort exponent that, compared to an ORGANIC-mode project:
Show answer
Answer: A — Is higher, so effort grows faster than linearly with size
The embedded mode's higher exponent in effort = a·(KLOC)^b reflects that the hardest, most tightly-constrained projects see effort grow disproportionately faster as size increases, compared to a simple organic project.Which of the following are among the four design activities named for this sub-item? (More than one option may be correct.)
Show answer
Answer: A — Architectural design; B — User-interface design; C — Data design
Object-oriented, data, architectural and user-interface design are the four named activities; marketing is not a software design activity at all.Name the reliability metric defined as the average time elapsed between one failure and the next.
Numerical answer — type the value.
Show answer
Answer: MTBF
MTBF (Mean Time Between Failures) is a standard reliability metric alongside failure rate/intensity, and reliability-growth models predict how it improves as testing removes defects.Information hiding, as a design principle, chiefly means:
Show answer
Answer: A — A module's internal design decisions are not visible to or depended on by other modules
Information hiding exposes only a well-defined interface while keeping internal decisions private, which is exactly what allows a module's internals to change later without breaking modules that depend only on its interface.