ScholarGate
Assistant

Software Construction and Quality

Software construction and quality concern the disciplined creation of working code and the techniques — testing, verification, review, and measurement — that establish and assure that software meets its requirements and quality goals.

Definition

Software construction is the detailed creation of working software through coding, verification, unit testing, and debugging, and software quality is the degree to which software satisfies its stated and implied requirements, assured by verification, validation, and quality-management activities.

Scope

This area covers software construction practices including coding standards, defensive programming, and unit testing; software testing levels and techniques; verification and validation; static and dynamic analysis; code review and refactoring; software quality attributes and metrics; and formal methods for proving correctness. It unifies the activities that produce and assure dependable software.

Sub-topics

Core questions

  • What practices produce code that is correct, readable, and maintainable?
  • How are defects detected through testing, review, and analysis?
  • How is software quality defined, measured, and assured?
  • When can correctness be established by formal proof rather than testing alone?

Key theories

Testing reveals presence, not absence, of defects
Testing can demonstrate that defects exist but cannot prove their absence; effective testing therefore aims to maximize the probability of finding faults through systematic case selection rather than exhaustive execution.
Verification and validation
Verification checks that the software is built correctly with respect to its specification, while validation checks that the right software was built to meet user needs; together they span reviews, analysis, and testing across the life cycle.
Quality is built in, not tested in
Quality results from construction practices, design, and process discipline rather than from inspection at the end; defect-prevention and early detection are far cheaper than late correction.

Clinical relevance

Construction and quality activities determine a system's reliability, security, and maintainability and dominate the cost of defects; early and systematic verification reduces field failures and rework, which is central to delivering dependable software.

Evidence & guidelines

ISO/IEC 25010 defines a software product quality model, and the SWEBOK knowledge areas on Software Construction, Testing, and Quality provide consensus reference guidance.

History

Systematic testing was articulated by Myers in the 1970s, structured programming and verification by Dijkstra and Hoare in the same era, and construction craftsmanship by McConnell in the 1990s; quality models and standards such as ISO/IEC 25010 consolidated quality attributes and measurement.

Debates

Testing versus formal verification
Whether confidence in correctness should rest on extensive testing or on formal proof is debated; testing scales to large systems but cannot guarantee correctness, while formal methods give strong guarantees at higher cost and are reserved for critical components.

Key figures

  • Glenford Myers
  • Steve McConnell
  • C. A. R. Hoare
  • Edsger Dijkstra

Related topics

Seminal works

  • myers2011
  • mcconnell2004
  • swebok2014

Frequently asked questions

Can testing prove a program is correct?
No. Testing exercises a finite set of inputs and can reveal defects but cannot demonstrate their absence; proving correctness for all inputs requires formal verification, which is feasible only for restricted or critical parts of a system.
Is quality the same as the absence of bugs?
No. Software quality is multidimensional, encompassing functional correctness plus attributes such as reliability, performance, security, usability, and maintainability; a program with few bugs may still be of poor quality if it is unmaintainable or insecure.

Methods for this concept

Related concepts