Software Quality and Software Quality Assurances
Software quality is defined as a field of study and practice that describes the desirable attributes of software products. There are two main approaches to software quality: defect management and quality attributes.
SOFTWARE QUALITY DEFECT MANAGEMENT APPROACH
A software defect can be regarded as any failure to address end-user requirements. Common defects include missed or misunderstood requirements and errors in design, functional logic, data relationships, process timing, validity checking, and coding errors.
The software defect management approach is based on counting and managing defects. Defects are commonly categorized by severity, and the numbers in each category are used for planning. More mature software development organizations use tools, such as defect leakage matrices (for counting the numbers of defects that pass through development phases prior to detection) and control charts, to measure and improve development process capability.
McCall’s Quality Factors
McCall’s software quality factors focus on following aspect of a software product.
1. Operational characteristic of software product
- Correctness –A program satisfies specification and fulfills the customer requirements.
- Reliability –A program is expected to perform the intended function with needed precision.
- Efficiency –Amount of computing resources and the code required by a program to perform its functions.
- Integrity –The efforts are taken to handle access authorization.
- Usability –The efforts are needed to learn, operate, prepare input and interpret the output of a program.
- Ability to undergo change or the product transition
- Portability –Transfer the program from one system (hardware or software) environment to another.
- Reusability –Extent to that a program or a part of a program is reused in other applications.
- Interoperability –The efforts are needed to couple one system to another.
- Adaptability to new environment or product revision
- Maintainability –The efforts are needed to locate and fix an error in the program.
- Flexibility –The efforts are needed to modify an operational program.
- Testability –The effort needed to test a program to check that it performs its intended function.
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 Assurance||Quality 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.
- 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:
- 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.
- 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.
- 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.
- 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.
- 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.