CPSC 544: Software Quality Assurance

Software Quality Assurance (SQA)
  • SQA monitors methods/standards used by software experts and verifies proper application of expertise.

  • SQA expertise includes statistical methods, quality control principles, software process knowledge, and interpersonal skills in contentious situations.

  • SQA ensures the established process is actually being implemented.

Quality Management
  • Quality: Characteristic or attribute of something; measurable characteristics compared to known standards.

    • Quality of Design: Characteristics specified by designers.

    • Quality of Conformance: Degree to which design specifications are followed during manufacturing.

  • Software Quality: Encompasses requirements, specifications, and system design (design); primarily implementation (conformance); and user satisfaction (compliant product + good quality + delivery within budget/schedule).

  • Quality Control (QC): Inspections, reviews, and tests to ensure work products meet requirements.

  • Quality Assurance (QA): Auditing and reporting functions assessing effectiveness of QC activities.

  • Quality Management (SQA): Umbrella activity throughout the software process, providing management data on product quality.

  • Encompasses: SQA process, specific QA/QC tasks, effective SE practice, control of work products, compliance with standards, measurement and reporting.

The Role of SQA
  • Goal: Improve software quality by monitoring software and development process; ensure compliance with standards; bring inadequacies to management's attention.

  • SQA audits the quality actions of the line organization and alerts management to deviations.

  • Requires cooperation and support with development.

  • Responsibilities: Review plans, moderate inspections, review test plans/results, audit SCM, participate in reviews, ensure documentation, control changes, emphasize high-risk testing, verify task completion, expose deviations, ensure auditability, verify QC standards, ensure plan compatibility.

  • SQA reporting should be independent of the software development manager, reporting to a high enough management level.

Launching the SQA Program
  • First Step: Secure top management agreement on SQA goals.

  • Eight Steps: Initiate, identify issues, write plan, establish standards, establish function, conduct training/promote, implement, evaluate.

  • A statistically sound sampling approach is essential for reviewing development actions and products.

The SQA Plan
  • Each project needs a Software Quality Assurance Plan (SQAP) specifying goals, SQA tasks, standards, procedures, and organizational structure.

  • Sections include: Purpose, reference documents, management, documentation, standards (documentation, logic, coding, commentary), reviews and audits (technical, managerial), software configuration management, problem reporting, tools/techniques, code/media/supplier control, records collection.

SQA Considerations
  • Common reasons for SQA failure: Insufficiently experienced/knowledgeable staff, incapable SQA management, lack of senior management backing, lack of documented/approved development standards, unverifiable quality plans.

SQA People
  • Getting good SQA people is difficult; one solution is requiring new development managers to serve in SQA first.

  • Effectiveness requires good people and full management backing.

Independent Verification and Validation (IV&V)
  • Role: Independent monitor of development for the customer, ensuring customer needs are reflected in the work.

  • Distinction from SQA: SQA monitors internal organization; IV&V monitors for the customer.

  • IV&V can leverage SQA's work; if SQA is effective, IV&V need not duplicate; if not, IV&V highlights shortcomings for correction.

  • Ensures right skills/attitudes are in place and addresses key risks/feasibility issues, looking beyond standards.