SOFTWARE QUALITY Basic Understanding
Quality is an ART. Software quality is the degree of conformance to explicit or implicit requirements and expectations. This conformance may conduct by stakeholders, Clients, End users etc.
- Explicit: clearly defined and documented.
- Implicit: not clearly defined and documented but indirectly suggested.
- Requirements: business/product/software requirements.
- Expectations: mainly end-user expectations.
Note: Some people tend to accept quality as compliance to only explicit requirements and not implicit requirements. I tend to think of such people as lazy.
Definition by IEEE
- The degree to which a system, component, or process meets specified requirements.
- The degree to which a system, component, or process meets customer or user needs or expectations.
Definition by ISTQB
- quality: The degree to which a component, system or process meets specified requirements and/or user/customer needs and expectations.
- software quality: The totality of functionality and features of a software product that bear on its ability to satisfy stated or implied needs.
As with any definition, the definition of ‘software quality’ is also varied and debatable. Some even say that ‘quality’ cannot be defined and some say that it can be defined but only in a particular context. Some even state confidently that ‘quality is lack of bugs’. Whatever the definition, it is true that quality is something I all aspire to.
Software quality has many dimensions.
In order to ensure software quality, I undertake Software Quality Assurance and Software Quality Control.
Software Quality Assurance (SQA) is a set of activities for ensuring quality in software engineering processes (that ultimately result in quality in software products).
It includes the following activities:
- Process definition and implementation.
Processes could be:
- Software Development Methodology.
- Project Management.
- Configuration Management.
- Requirements Development/Management.
- Software Design.
Once the processes have been defined and implemented, Quality Assurance has the following responsibilities:
- identify weaknesses in the processes.
- correct those weaknesses to continually improve the process.
The quality management system under which the software system is created is normally based on one or more of the following models/standards:
- Six Sigma.
- ISO 9000.
Note: There are many other models/standards for quality management but the ones mentioned above are the most popular.
Software Quality Assurance encompasses the entire software development life cycle and the goal is to ensure that the development and/or maintenance processes are continuously improved to produce products that meet specifications/requirements.
The best practice is, start test activities from beginning of project. As early bug detection can minimize the cost of project.
The process of Software Quality Control (SQC) is also governed by Software Quality Assurance (SQA).
SQA is generally shortened to just QA.
SOFTWARE QUALITY CONTROL Fundamentals
Software Quality Control (SQC) is a set of activities for ensuring quality in software products.
It includes the following activities:
- Requirement Review
- Design Review
- Code Review
- Deployment Plan Review
- Test Plan Review
- Test Cases Review
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
Software Quality Control is limited to the Review/Testing phases of the Software Development Life Cycle and the goal is to ensure that the products meet specifications/requirements.
The process of Software Quality Control (SQC) is governed by Software Quality Assurance(SQA).
Some people assume that QC means just Testing and fail to consider Reviews; this should be discouraged.