Quality assurance is a planned and systematic pattern of all actions necessary to provide adequate confidence that the item or project conforms to established technical requirements. Software Quality Assurance (SQA) is an umbrella activity that is applied through the software process. SQA is important as it reduces the amount of rework that it must do, which results in lower costs and more importantly, improved time to market. Software quality assurance, accordingly, lays considerable stress on getting the design right, prior to coding, although the increasing use of prototyping in systems development is reducing the differences between the production stages of hardware and software.
Software quality assurance must also:
i. Provide for exhaustive testing
i i. Obtain a mathematical proof of correctness
iii. Convince oneself that the output from each phase of the development process, which will be a different representation of the software, is functionally equivalent to its predecessor.
Management Role in Software Quality Assurance
The failure of the management to properly plan and control the software development process is now felt to have been responsible for much of the poor quality software developed/produced in the past. In fact, one of the major roadblocks in software quality was the belief/attitude that problems can be sorted out at the end of the development process. It is now generally recognized that management has a key role to play in the production/development of quality software, as the software quality assurance, like any other form of quality assurance, is highly dependent upon management attitudes. While the organisational structures could be created and put in place any time, the real change required is the change in managerial attitudes. The management must manifest and transmit a greater desire to produce high quality product. The management must also commit “commensurate resources” to ensure this. In turn, the software developers must plan and implement software development projects with the objective of “building in” quality.
Towards this end, they must:
1. Establish and maintain the requirement specifications.
2. Establish and implement a process for developing the software.
3. Establish and maintain an evaluation process.
Further, the “Discipline Triangle” must be applied to produce quality software successfully. The “Discipline Triangle” would contain Management, Software Development and Product Assurance Discipline.
The “Management Discipline” would include both project management and general management. The “Software Development Discipline” would involve such activities like analysis, design, testing, etc. The “Product Assurance Discipline” would include quality assurance, test and evaluation and configuration management.
Software Quality Assurance Activities
Software quality assurance is composed of a variety of tasks associated with two different constituencies the software engineers who do technical work and an SQA group that has responsibility for quality assurance planning, oversight, record keeping, analysis and reporting. The charter of the SQA group is to assist the software team in achieving a high quality product.
The SQA group prepares an SQA plan. The plan identifies:
• Evaluations to be performed
• Audits and reviews to be performed
• Standards that are applicable to the project
• Procedures for error reporting and tracking
• Documents to be produced by the SQA group
• Amount of feedback provided to the software project team
Responsibilities of SQA Group
A few of the responsibilities of the SQA group are listed as under:
1. The SQA group identifies, documents and tracks deviations from the process and verifies that corrections have been made. 2. They audit designated software work products to verify compliance with those defined as part of the process.
3. They ensure that deviations in software work and work products are documented and handled according to a documented procedure.
4. They record non-compliance and reports to senior management.
Quality Assurance Standards or Models
The formal Quality Assurance model would need to be woven around the ISO 9000 Standard. The International Organisation for Standardization (ISO) developed the family of standards for software. The ISO 9000 framework describes quality assurance elements, which includes organisational structure,
procedures, processes and resources needed to implement quality planning, quality assurance and quality control. The family of ISO 9000 includes standards such as ISO 9001, 9002 and 9003. These standards are continuously being evolved and applicable to various disciplines. ISO 9001 is acknowledged as requiring additional features for software development. ISO 9001 Standard with the IEEE 1298 Standards and the ISO 9000-3 states the guidelines that would be required to be considered for Software Quality Assurance. Some of the elements covered in ISO 9000-3 are management responsibility, quality system, design control, document and data control, process control, inspection and testing, corrective and preventive action, control of quality records, internal quality audits, training and statistical techniques. In addition to the ISO standards, the other models highly used in the IT industry
1. Capability Maturity Model (CMM): The CMM is a framework developed by Software Engineering Institute (SEI) at Carnegie Mellon University. The framework is based on the best practices in software and other organisations. Thus, CMM reflects the collective process experience of many companies. The CMM is used to evaluate the software processes and identify deficiencies. CMM framework provides five levels of the process as per the level of maturity. The CMM is used to evaluate the software processes and identify deficiencies. CMM framework provides five levels of the process as per the level of maturity. These five levels are: i. Initial ii. Repeatable iii. Defined iv. Managed v. Optimising In the initial stage, processes are immature or ad hoc, which means these process are not clearly defined and the outcome of these processes largely depends on the capability of the team and project leader. From level two to five, the key process areas are defined and these are more refined and as we go up one scale, processes become more matured. In mature processes, each process is well defined and the outcome of the process does not depend on the team but on the process. More mature the process, more quality we can expect.
2. Six Sigma: The Six Sigma process was developed by Motorala. It is a quality management methodology, which focuses on achieving high levels of quality by controlling the process and reducing defects. Six Sigma derived its name from the statistical term “standard deviation” and is denoted by letter 6 sigma (a Greek notation) that defines the degree of variance. Six Sigma puts a primary focus on quantifying, measuring and controlling quality of the product. Thus, it focuses on collecting data and analysing the results in order to minimise the defects in the product. Six Sigma is an approach towards enhancing products as well as process quality. To achieve Six Sigma certification, the process must not produce more that 3.4 defects per million opportunities. The philosophy behind Six Sigma is that, if you can measure the defects, you can systematically define the procedure to eliminate them and arrive at zero defects.