Ins and Outs of Software Quality Management
According to ISO 8204, Quality is defined as:
Totality of characteristics of an entity that bears on its ability to satisfy stated and implied needs.
Introduction to sound Quality Management System:
Software Quality Management involves set of pre-defined processes which are aimed to ensure that the Software Project would reach its goals. Or it can be said that the Software Project would meet the clients expectations.
The Software Quality Management comprises of following three key elements
1) Quality Planning:
Quality Planning is the most important step in Software Quality Management. In the Planning Process the standards which are relevant to the Software Product the Organization are identified along with the means to achieve them. Proper planning ensures that the remaining Quality processes make sense and achieve the
desired results. The starting point for the Planning process is the standards followed by the Organization. This is expressed in the Quality Policy and Documentation defining the Organization-wide standards. Sometimes additional industry standards relevant to the Software Project may be referred to as per the need. Using these as inputs the Standards for the specific project are decided. The Scope of the development effort is clearly defined.
Following are the key Inputs for the Quality Planning:
- Quality Policy of the Company
- Organizational Standards
- Relevant Industry Standards
- Statutory rules & Regulations
- Scope of the Work
- Project Requirements
Based upon the above Inputs, the Quality Planning process creates a plan to ensure that standards agreed upon are met.
Thus following outputs shall emerge out of the Quality Planning process:
- Standards defined for the Project
- Quality Plan
Various tools and techniques are employed to generate the above outputs mainly the Quality Plan. These tools and techniques are vast topics and Quality Experts in the trade dedicate years of research on such topics. Here these tools and techniques are being touched upon briefly. All these tools are extremely helpful in creating a Quality Management Plan for the project.
a. Benchmarking: The proposed product standards can be decided using the existing performance benchmarks of similar products, which already exist in the trade.
b. Design of Experiments: Using statistics we determine what factors influence the Quality or features of the end product.
c. Cost of Quality: This includes all the costs needed to achieve the required Quality levels. It includes prevention costs, appraisal costs and failure costs.
d. Other Tools: There are various other tools used in the Planning process such as Cause and Effect Diagrams, System Flow Charts, Cost Benefit Analysis etc.
2) Quality Assurance:
Once the standards are defined and we product building is started. It is very important to have processes, which evaluate the project performance, and aim to assure that the Quality standards are being followed and the final product will comply with the requirements.
The Input to the Quality Assurance Processes is the Quality Plan created during the Planning. Quality Audits and various other techniques are used to evaluate the performance of the project. This helps us to ensure that the Project is following the Quality Management Plan.
The tools and techniques used in the Planning Process are Design of Experiments, Cause and Effect Diagrams etc.
3) Quality Control:
After the software components are built, their results are monitored to determine their compliance with the standards. The data collected helps in measuring the performance trends and in identification of defects in the developed code.
Following are the key Inputs for the Quality Control Processes:
- Quality Management Plan.
- Quality Standards defined for the Project
- Actual Observations and Measurements of the Work done or in Progress
The Quality Control Processes use various tools to study the Work done. If the Work done is observed to be unsatisfactory it may be sent back to the development team for fixing the defects. Changes to the Development process may be done if necessary.
If the work done meets the requirements of pre defined standards then the work is accepted and released to the clients.
Key Emphasis laid on the Documentation:
Quality Management Processes lay special emphasis on the documentation. Many software development companies make good product, but fail to document the project at various levels.
Consider a case where the Requirements of the Software Project are not sufficiently documented. In such case it is quite possible that the client has a set of expectations while the tester may not be aware of them. Hence the testing team would not be able to test the software developed in accordance with such expectations or requirements. This may lead to poor Software Quality as the product would not meet the expectations of the client.
Likewise in another case where the development team does not document the installation instructions. If a different person or a team is responsible for future installations they may end up making mistakes during installation, thereby failing to deliver as promised.
There can be another case where a tester fails to document the test results after executing the test cases. This may further lead to confusion later on. If there remains an error, we would not be sure at what stage the error was introduced in the software like, at the component level or when integrating it with another component or it was introduced due to environment on a particular server etc. Hence documentation is the key for future analysis and all Quality Management efforts.
Important Steps for the Quality Management In a typical Software Development Life Cycle are:
- Creation of proper documentation of the Requirements.
- Define and Document the Quality Standards.
- Define and Document the detailed Scope of Work.
- Document the Software Created and its Dependencies.
- Define and Document the Quality Management Plan.
- Define and Document the Test Strategies.
- Creation & Documentation of Test Cases.
- Execution of Test Cases and detailed logging of the Results
- Fixing of the identified Defects and creation of document for the fixes.
- Auditing the Quality Assurance Documents and the Test Logs.
Various Software Tools are available for the Quality Management. These Tools can help us track the requirements and map the Test Cases to the Requirements. They can be helpful in Defect Tracking as well.
Defect Tracking is extremely important to ensure the Quality of the end Product. As the software is tested at various levels, test cases are executed & defects are found. These Defects are logged and data is collected. The Software Development teams fix these defects and document them with explanation as to how they were fixed. The testing teams verify as to whether the defect was really fixed or not. If yes then the defect is closed. Proper defect tracking mechanism ensures that all Defects were got fixed. Such information helps in future projects as well.