Software Quality Assurance

Introduction

Software quality assurance is to be achieved for every software project. SQA is used to reduce cost and improve the product time to the market. In this chapter we will discuss about various aspects of SQA.

Software Quality Assurance(SQA)

Software Quality Assurance is the set of activities which ensure that the standards, processes and procedures are suitable for the project and implemented correctly.

Quality - Quality of the software is checked to see if it meets the requirements, expectations and demands of the customer and free from defects.

Assurance - It means ensuring the correctness of the results and security of the product, as it works without any bug and according to the expectations.

Difference between Quality Assurance and Quality Control


Quality AssuranceQuality Control
Quality assurance provides assurance that the quality request has been met.The quality of request required In QA is achieved in QC
The goal of quality assurance is to prevent the defects.The goal of quality control is to recognize and fix defects.
Quality assurance manages the quality Verification.Quality control checks the quality-Validation.
It does not include the execution of program.It requires execution of program.
Quality assurance is a proactive technique.Quality control is a reactive technique.
It is a proactive measure.It is a reactive measure.
It is a procedure to produce the deliverables i.e a product of development process.It is a procedure to check those deliverables.
Quality assurance is included in complete software development life cycle.Quality testing is included in complete software testing life cycle.
It defines the standards and methodologies to meet customer requirements.It ensures that the standards are followed while working on the product.
It is executed before quality control.It is executed only after quality assurance activity is completed.
Quality assurance is a less time consuming activity.Quality control is a more time consuming activity.
Statistical technique applied on QA is known as Statistical Process Control (SPC).Statistical technique applied on QC is known as Statistical Quality Control (SQC).

Software Quality Attributes

The common definition of Software Quality Attribute (SQA) is FURPS model which was developed by Robert Grady. Under this model following characteristics are recognized.

Functionality - It evaluates the feature set and capabilities of the program.

Usability - It is accessed by considering the factors such as human factor, consistency and documentation.

Reliability - It is evaluated by measuring parameters like frequency and security of failure, output result accuracy, the mean-time-to-failure(MTTF), recovery from failure and the the program predictability.

Performance - It is measured by considering processing speed, response time, resource consumption, throughput and efficiency.

Supportability
  • It combines the ability to extend the program, adaptability, serviceability. These three term define maintainability.
  • Testability, compatibility and configurability are the terms using which a system can be easily installed and the problems can be  found easily.
  • Supportability also consists of more attributes such as compatibility, extensibility, fault tolerance, modularity, reusability, robustness, security, portability, scalability.

Capability Maturity Model (CMM)

  • Capability Maturity Model (CMM) is an industry standard model. This model is used to develop and refine processes of an organization.
  • This model is organized into the five levels of maturity.
  • Each level ranks the organization as per standardization of process assessed in the subject area.
  • The subject area can be software engineering, system engineering, project management, risk management, system acquisition, information technology services etc.
  • A maturity model is a structured collection of element and  explains the characteristics of effective processes.
  • It is used as benchmark for accessing various organizations for equivalent comparison.
Following are the five levels of maturity:

i) Initial
ii) Repeatable
iii) Defined
iv) Managed
v) Optimizing

cmm maturity levels

i) Initial

  • The software processes at this level are ad hoc and do not give a stable environment.
  • The success of project depends on the capability and braveness of the people in the organization.
  • There are no actual applications required to adopt planning, monitoring or controlling the process.
  • It is not possible to estimate the time and cost to develop the software.
ii) Repeatable

  • The software development processes are repeatable. They are not repeated for all the projects in the organization.
  • An organization may use basic and constant project management processes to track cost, schedule and functionality.
  • The minimum process discipline is used to repeat earlier success of project with same applications.
iii) Defined

  • In defined level of maturity model, common engineering and management activities are standardized and documented.
  • These standards are adapted and accepted for use on various projects.
  • Test documents and plans are reviewed and accepted before testing starts.
  • The groups of testers are independent from the developers.
  • The test outputs are used to determine when the software is ready.
iv) Managed

  • In managed level of maturity, detailed measure of the software process and product quality is gathered.
  • The software process and product are quantitatively understood and controlled.
v) Optimizing

  • This level show continuous improvement from previous levels and hence it is called as Optimizing.
  • The processes and new technologies are attempted, the outputs are measured and the evolutionary and incremental changes are achieved for better quality levels.

ISO 9000 standard

  • ISO 9000 is a family of standard for quality management and quality assurance.
  • This standard is maintained by ISO i.e International Standards Organization.
  • A family of standard defines the basic set of practices which helps a company consistently deliver the product, meeting customer's quality requirements.
  • ISO 9000 deals with the ISO 9001 and ISO 9000-3.
Requirements of ISO 9001:

  • ISO 9001 covers all the key processes in business i.e design, develop, create, install, service and product.
  • Processes are observed to verify that they are effective.
  • The records which are satisfactory are kept for further use.
  • The results are checked for defects. Proper and corrective action is taken, as necessary.
  • Separate process are reviewed regularly and quality process for the effectiveness. It makes continual improvement easier.
ISO 9000-3

ISO 9000-3 covers key points in business i.e develop, supply, install and maintain computer software.

The requirements of ISO 9000-3 include:

  • Develop detailed quality plans and procedures to control verification and validation, configuration management, bugs and fixes.
  • Construct and receive approval for software development plan.  Iit consists of definition of project, a list of project objectives, schedule, specification and organization of a project and discussion about risks, assumptions and strategies.
  • The software design review procedures are planned, developed, documented and performed.
  • Software test plans are developed and documented.
  • A method is developed to ensure tha it meets customer requirement.
  • The output records of test are maintained.
  • The procedures are developed to control the software's release process.
  • Define and recognize what type of quality information is necessary to collect.
  • The statistical techniques are used to analyze the software development process. These techniques are also used to analyze the product quality.