Software Quality Assurance (SQA)

What is Software Quality Assurance?

According to D.Galin, software quality assurance is a systematic, planned set of actions necessary to provide adequate confidence that the software development process or the maintenance process of a software system product conforms to established functional technical requirements as well as with the managerial requirements of keeping the schedule and operating within the budgetary confines.

SQA

Is a comprehensive lifecycle approach concerned with every aspect of the software product development process.

Objectives of SQA

  1. Assuring an acceptable level of confidence that the software will conform to functional technical requirements.
  2. Assuring an acceptable level of confidence that the software will conform to managerial scheduling and budgetary requirements.
  3. Initiation and management of activities for the improvement and greater efficiency of software development, software maintenance, and software quality assurance activities.

The game is to:

(1) raise confidence that the functional requirements have been satisfied, while (2) staying on schedule and within budget. In addition, (3) continuous reevaluation of development, maintenance, and QA in order to improve them.

3 General Principles of SQA

Three General Principles of SQA

  • Know what you are doing
  • Know what you should be doing
  • Know how to measure the difference
  • Know what you are doing
    • Understand what is being built, how it is being built and what it currently does
    • Implies a software development process with
      • Management structure (milestones, scheduling)
      • Reporting policies
      • Tracking
  • Know what you should be doing
    • Having explicit requirements and specifications
    • Implies a software development process with
      • Requirements analysis
      • Acceptance tests
      • Frequent user feedback
  • Know how to measure the difference
    • Having explicit measures comparing what is being done with what should be done
    • Four complementary methods:
      1. Formal methods - verify mathematically specified properties
      2. Testing - explicit input to exercise software and check for expected output
      3. Inspection - human examination of requirements, design, code, … based on checklists
      4. Metrics - measure a known set of properties related to quality

SQA includes

  • V&V

  • Verification

    • Performed at the end of a phase to ensure that requirements established during the previous phase have been met.
  • Validation

    • Performed at the end of the development process to ensure compliance with user expectations
  • Defect prevention

    • Prevents defects from occurring in the first place
    • Activities: training, planning, and simulation
  • Defects detection

    • Finds defects in software artifact
    • Activities: inspections, testing, or measuring
  • Defects removal

    • Isolation, correction, verification of fixes
    • Activities: fault isolation, fault analysis, regression testing

Key SQA Capabilities

  • Uncover faults in the documents where they are introduced, in a systematic way, in order to avoid ripple effects – systematic, structured reviews of software documents are referred to as inspections
  • Monitor and control quality, e.g., reliability, maintainability, safety, across all project phases and activities
  • Derive, in a systematic way, effective test cases to uncover faults
  • Automate testing and inspection activities, to the maximum extent possible
  • All this implies the measurement of software products and processes and the empirical evaluation of testing and inspection technologies

Continuous … and Testing

  • Continuous Integration (CI)
    • A software development process where a continuous integration server rebuilds a branch of source code every time code is committed to the source control system
    • The process is often extended to include deployment, installation, and testing of applications in production environments
  • Continuous Deployment
    • A software production process where changes are automatically deployed to production without any manual intervention
  • Continuous Delivery
    • A software production process where the software can be released to production at any time with as much automation as possible for each step