Sunday, December 23, 2007

Software Quality Assurance

Concepts and Definitions


  • Software Quality Assurance (SQA) is defined as a planned and systematic approach to the evaluation of the quality of and adherence to software product standards, processes, and procedures.
  • SQA includes the process of assuring that standards and procedures are established and are followed throughout the software acquisition life cycle.
  • Compliance with agreed-upon standards and procedures is evaluation through process monitoring, product evaluation, and audits.
  • Software development and control processes should include quality assurance approval points, where an SQA evaluation of the product may be done in relation to the applicable standards.


  • Components of SQA


  • Pre-project components
  • Software project life cycle components
  • Infrastructure components for error prevention and improvements
  • Management SQA components
  • SQA standards, system certification and assessment components
  • Organizing for SQA


  • Pre-project Components

    • Pre-project
      • Contract reviews
      • Development and quality plans


    Common Contract Situations

  • Participation in a tender
  • Proposal submission according to customer's request for proposal
  • Receipt of an order from a company's customer
  • Internet request from another department in the organization


  • Contract Review Stages

    • The contract review consist of
      • Proposal draft review
        • Reviews the proposal prior to submission to the potential customer
        • This includes customer's requirement documents, cost and resource estimates, existing contracts or contract drafts.
      • Contract draft review
        • Reviews the contract draft prior to signing
        • Review on the basis of the proposal and the understanding (including changes) reached during the contract negotiation sessions.


    Implementing Contract Reviews

    • Who perfoms the review?
      • The leader or another member of the proposal team
      • The members of the proposal team
      • An outside professional or company staff member who is not member of the proposal team
      • A team of outside experts


    Development and Quality Plan

  • Planning is meant to prepare adequate foundations for successful and timely completion of the project.
  • The planning process includes:
    • 1. Scheduling development activities and estimating the required manpower resources and budget.
      2. Recruiting team members and allocating development resources
      3. Resolving development risks
      4. Implementing required SQA activities
      5. Providing management with data needed for project control


    Development Plan: Elements
    1. Project products, specifying "deliverables"
    2. Project interfaces
    3. Project's methodology and development tools
    4. Software development standards and procedures
    5. Map of the development process
    6. Project milestones
    7. Project staff organization and coordination with external participants
    8. Required development facilities
    9. Development risks and risk management actions
    10. Control methods
    11. Project cost estimates

    Quality Assurance Plan: Elements
    [Sommerville2004]

  • A quality assurance plan sets out the desired product qualities and how these are assessed and defines the most significant quality attributes.
  • The quality assurance plan should define the quality assessment process.
  • It should set out which organizational standards should be applied and, where necessary, define new standards to be used

  • [Galin2004]
    Elements:
    1. List of quality goals
    2. Review activities
    3. Software tests
    4. Acceptance tests for software externally developed
    5. Configuration management plans: tools, procedures, and dates for version release

    Project Life Cycle Components
    Development
    -Reviews
    -Expert Opinions
    -Software Testing
    -Assurance of the quality of external participants’ work
    Maintenance
    -Software maintenance components

    The Objectives of SQA activities in Software Development

  • Assuring an acceptable level of confidence that the software will conform to functional technical requirements.
  • Assuring an acceptable level of confidence that the software will conform to managerial scheduling and budgetary requirements.
  • Initiation and management of activities for the improvement and greater efficiency of software development and SQA activities.



  • Several Quality Assurance Activities
    Requirement specification review
    -Approval of the requirement specification to proceed with the next phase
    Design inspection
    -Detecting errors and derivations from standards
    Design review
    -Approval of the design to proceed with the next phase
    Code inspection
    -Detecting errors and derivations from standards
    Unit test
    -Approval of the unit quality to proceed with the next phase
    Integration tests
    -Approval of the integrated units to proceed with the system test
    Documentation review
    -Approval of the documentation for operation
    System test
    -Approval of the system for operation
    Operation phase detection
    -Defects will be found during operation by the customer.

    Infrastructure Components
    - Procedures and work instruction
    - Templates and checklists
    - Staff training, retraining and certification
    - Preventive and corrective actions
    - Configuration management
    - Documentation control

    Management SQA Components

  • Project progress control
  • Software quality metrics
  • Software quality costs


  • Standards, Certification, Assessment

  • Project process standards
  • Quality management standards


  • Organizing for SQA

  • Management’s role in SQA
  • The SQA Unit
  • SQA trusties
  • SQA committees
  • SQA forums