7.1 Software Quality Concepts & McCall's Factors
Software Quality is defined as conformance to explicitly stated functional and performance requirements, explicitly documented development standards, and implicit characteristics expected of all professionally developed software.
McCall's Quality Factors
- Product Operation: Correctness, Reliability, Efficiency, Integrity, Usability.
- Product Revision: Maintainability, Flexibility, Testability.
- Product Transition: Portability, Reusability, Interoperability.
7.2 Software Quality Assurance (SQA) Activities
SQA is an overarching planned pattern of actions ensuring that software development processes adhere to documented standards and procedures throughout the lifecycle.
- Preparing and managing the formal SQA Plan.
- Conducting Formal Technical Reviews (FTRs): Walkthroughs, inspections, and architectural audits.
- Enforcing adherence to language coding standards and security policies.
- Tracking deviations and tracking bug metrics to release readiness.
7.3 Software Metrics: Size vs Function-Oriented
A Software Metric is a quantitative measurement of the degree to which a system, component, or process possesses a given attribute.
- Size-Oriented Metrics (LOC / KLOC): Derived by counting physical lines of code. Weakness: language-dependent and penalizes concise high-level expressions.
- Function-Oriented Metrics (Function Points - FP): Measures the business functionality delivered to the user independent of programming language, calculated from external inputs, external outputs, external inquiries, internal logical files, and external interface files.
- Product Metrics: Measure quality of deliverables (cyclomatic complexity, defect density).
- Process Metrics: Measure efficiency of the engineering organization (lead time, cycle time, bug fix turnaround).
7.4 Capability Maturity Model (CMM)
Developed by the Software Engineering Institute (SEI) at Carnegie Mellon University, the Capability Maturity Model (CMM) evaluates the process maturity and discipline of a software organization across five progressive levels.
Figure 7.1: The 5-level SEI Capability Maturity Model progresses from chaotic heroics to continuous optimization.