Software Quality – Lecture 1 Comprehensive Notes
Definition of Software
- IEEE (Institute of Electrical and Electronics Engineers)
- “Computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system.”
- ISO (International Organization for Standardization)
- Includes four inseparable elements:
- Computer program (the actual “code”)
- Procedures
- Documentation
- Data necessary for operating the software system
- Key take-away: Standards bodies emphasize not only code but everything required to make that code usable and maintainable.
Definition of Software Quality (SQ)
- Crosby (1979): “Conformance to requirements.”
- Juran (1988): “Product features meet the needs of customers’ and product’s satisfaction.”
- General technical view: Accuracy & completeness of software specifications — the product must be free from deficiencies.
- IEEE: “The degree to which a system, component, or process meets specified requirements and customer or user needs and expectations.”
- Practical implication: Quality exists at the intersection of written requirements and real-world user expectations; if either is missed, quality suffers.
Software Quality Assurance (SQA)
- IEEE definition
- “A planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements.”
- “A set of activities designed to evaluate the process by which the products are developed or manufactured.”
- Core idea: SQA is process-oriented (not only product-oriented) and must be planned; it is woven through every stage of the development lifecycle.
- Process integration: All SQA actions are embedded into each development stage — from requirements through maintenance.
Objectives of SQA Activities
- Functional / Technical Conformance
- Provide acceptable confidence that the delivered software meets all functional requirements.
- Managerial Conformance
- Provide acceptable confidence that schedules and budgets are honored.
- Continuous Improvement
- Initiate & manage activities that improve both software development efficiency and the SQA process itself.
Quality Assurance (QA) vs. Quality Control (QC)
- Definition & Focus
- QA: Set of activities focused on the processes used to build a product — proactive & preventive.
- QC: Set of activities focused on the product itself — reactive & detective/corrective.
- Goal
- QA: Ensure that defects never arise.
- QC: Find & eliminate defects that slipped through.
- Method (“How”)
- QA: Establish, document, and audit the quality management system (e.g., process standards, templates, SPC).
- QC: Execute inspections, testing, and validations on finished work products (e.g., SQC, system testing).
- Responsibility
- QA: Everyone involved in developing the product (holistic responsibility).
- QC: A designated testing/inspection team.
- Typical Examples
- QA → Verification, process audits, Statistical Process Control (SPC).
- QC → Validation / software testing, Statistical Quality Control (SQC).
- Managerial vs. Corrective Tools
- QA is managerial (design the shield); QC is corrective (detect punctures in the shield).
Errors, Faults, and Failures
- Error
- A human action that produces an incorrect result (e.g., coding a multiplication instead of an addition).
- Can be syntactic, logical, computational, or definitional.
- Fault
- A manifestation of an error in the software; may remain dormant if the faulty code path is never executed.
- Failure
- The external behavior of the software deviates from requirements because a fault is activated.
- Error→Fault→Failure (activation chain)
- Key distinction: Not every error leads to a fault, and not every fault leads to a user-visible failure.
Classification of Causes of Software Errors ("Nine Causes")
- Faulty Requirements Definition
- Wrong, incomplete, unclear, missing, or unnecessary requirements inflate cost & complexity.
- Client-Developer Communication Failures
- Misinterpretations of written, graphical, or oral requirements; “different planets” mind-set.
- Deliberate Deviations from Requirements
- Re-used code with extraneous pieces, omitted features due to pressure, or unapproved “enhancements.”
- Logical Design Errors
- Erroneous algorithms, wrong formulas, mis-specified boundary conditions, or missing system states.
- Coding Errors
- Syntax, logic, or run-time errors; classic “bugs.”
- Non-Compliance with Documentation & Coding Instructions
- Ignoring templates, naming conventions, or mandated manuals; impacts maintainability & integration.
- Shortcomings of the Testing Process
- Incomplete test plans, poor coverage (path, branch, boundary), slow defect correction, inadequate reporting.
- User Interface & Procedure Errors
- Poor learnability/usability, missing feedback, misleading error messages; to users, the UI is the system.
- Documentation Errors
- Out-of-sync design docs, incorrect user manuals, obsolete feature lists, or faulty on-line help.
Visual Chain of Defect Propagation
- Software Development Process
- Error→Fault→Failure
- Each transition often occurs in a different lifecycle phase (e.g., requirement error → coding fault → production failure).
Practical / Ethical Implications Mentioned
- Skipping SQA steps (especially testing) leads to elevated risk and stakeholder distrust.
- Omitting features or adding unapproved “enhancements” can be ethically dubious and invariably surfaces during system tests, causing schedule slippage and reputational harm.
- Usability flaws propagate a negative perception “up the management chain,” even if the underlying logic is sound.
- Standards (documentation, coding) are not bureaucratic overhead; they ensure maintainability, reuse, and correct integration in larger ecosystems.
Connections & Context
- SQA is an integral subset of Software Engineering (SE); without rigorous SQA, SE cannot claim systematic, disciplined, and quantifiable practice.
- Early life-cycle quality activities (requirements QA, design QA) are significantly cheaper than late defect removal, echoing Boehm’s cost-of-change curve.
- Statistical methods (SPC for processes, SQC for products) come from manufacturing but map well onto software when metrics (defect density, escape rate) are defined.
Quick Self-Check / Study Prompts
- Define each of the nine error causes and sketch a real project example.
- Distinguish QA vs. QC in one sentence each; provide a real-world tool used for both.
- Explain the error-fault-failure chain and why a dormant fault may never fail in production.
- List the three formal objectives of SQA and link each to a corresponding lifecycle artifact (e.g., schedules → Gantt, functional conformance → requirement traceability matrix).