A comprehensive definition of Software Quality Assurance SQA is presented here, in the form of a short history of the Software Quality Movement, an example of a theoretical CMMI SQA\SQC implementation and an example of what a typical Software Application QA engineer does day to day.
|
SQA, SQC and CMMI Definitionsthis paper outlines an example implementation of SQA and SQC, within a CMMI context that matches the formal definitions of these terms. The formal definitions that are used within this paper are:- Software Quality Assurance The function of software quality that assures that the standards, processes, and procedures are appropriate for the project and are correctly implemented. Software Quality Control The function of software quality that checks that the project follows its standards, processes, and procedures, and that the project produces the required internal and external (deliverable) products. A further definition of SQA and SQC, by way of example can be found here. CMMI A process improvement approach to software development. CMMi identifies a core set of Software Engineering process areas as:- CMMI also covers other process areas, such as Process Management, Project Management and Support but only the core Software Engineering development processes are used here by way of example. It is also interesting to note that SQA and SQC are processes defined within CMMI, they are under the Support process area. In CMMI SQA\SQC is defined as Process and Product Quality Assurance. CMMI is an approach to process improvement, in which SQA\SQC play a major but not exclusive role. Everyone in a software development organization takes part in both the CMMI processes and any improvement initiatives for those processes. Each of the main Engineering process areas is now described together with the role that SQA\SQC plays within those areas. |
|
SQA and SQC roles in CMMI Requirements Developmentcustomer requirements, product requirements, and product-component requirements. SQA role To observe (audit) that documented standards, processes, and procedures are followed. SQA would also establish software metrics in order to measure the effectiveness of this process. A common metric for measuring the Requirements process would be the number of errors (found during system testing) that could be traced to inaccurate or ambiguous requirements (note: SQC would perform the actual system testing but SQA would collect the metrics for monitoring and continuous improvement). SQC role SQC takes an active role with Verification (this is a process itself that is described later). Verification of the requirements would involve inspection (reading) and looking for clarity and completeness. SQC would also verify that any documentated requirement standards are followed. Note there is a subtle difference between SQA and SQC with regard to standards, SQC’s role is in verifying the output of this process (that is the Requirement document itself) while SQA’s role is to make sure the process is followed correctly. SQA is more of an audit role here, and may sample actual Requirements whereas SQC is involved in the Verification of all Requirements. The type of requirement need not be just the functional aspect (or customer\user facing requirements) they could also include product and\or component requirements. The product requirements e.g. Supportability, Adaptability and Reliability etc. are characteristics discussed here (as part of the FURPS+ model). The respective roles of SQC and SQA is the same for all types of requirement (customer and product) with SQC focusing on the ‘internal deliverable’ and SQA focusing on the process of how the internal deliverable is produced, as per the formal definition. |
|
SQA and SQC roles in CMMI Requirements ManagementThe purpose of (CMMI) Requirements Management is to manage the requirements of the project's products and product components and to identify inconsistencies between those requirements and the project's plans and work products. This process involves version control of the Requirements and the relationship between the Requirements and other work products. One tool used in Requirements Management is a Traceability Matrix. The Traceability Matrix maps where in the Software a given requirement is implemented, it is a kind of cross reference table. The traceability matrix also maps which test case verify a given requirement. There are other processes within Requirements Management and CMMI should be referenced for further information. SQA role To observe (audit) that documented standards, processes, and procedures are followed. SQA would also establish metrics in order to measure the effectiveness of this process. A common metric for measuring the Requirements Management would be the how many times the wrong Version was referenced. Another measure (for the Traceability Matrix) would be lack of test coverage, that is defects detected in the shipped product that were not tested due to the fact that they were not referenced in the Traceability matrix that referenced the requirements. SQC role As with the actual Requirements Development, SQC would be involved in inspecting the actual deliverable’s (e.g. Traceability Matrix) from this process. SQC may also get involved at this stage as they will be the people doing the actual Testing (Verification and Validation) so for their test coverage a complete Traceability Matrix is essential. |
|
SQA and SQC roles in CMMI Technical solutionSolutions, designs, and implementations encompass products, product components, and product-related life-cycle processes either singly or in combinations as appropriate. This is the main Design and Coding processes. CMMI puts the design and build together. Other important processes, e.g. Configuration Management are listed in other process areas within CMMI. SQA role To observe (audit) that documented standards, processes, and procedures are followed. SQA would also establish metrics in order to measure the effectiveness of this process. Clearly testing the end product against the requirements (which is itself a SQC activity) will reveal any defects introduced during this (the Technical solution) process. The number of defects is a common measure for the Design\Build phase. This metric is usually further quantified by some form of scope, for example defects per 100 lines of code, or per function. It is important that the defect may not always be a functional (or Customer facing defect) it could be that a required adaptability scenario is absent from the Design and\or coded solution. The FURPS+ model references typical Software Metrics that are used for specifying the total (both functional and non-functional) software requirements. SQC role The major SQC role during this process will be testing (see Validation and Verification). The finished product does not have to be present before testing can begin. Unit and Component can both take place before the product is complete. Design and Code reviews are also something that SQC could get involved with. The purpose of the review has to be clearly stated, i.e. to verify standards are followed or to look for potential Supportability (part of the Product Requirements) issues. The Supportability metric is the time it takes for a defect in a system to be fixed. This metric is influenced by the complexity of the code, which impacts the developer’s ability to find the defect. |
|
SQA and SQC roles in CMMI Product Integration |
|
SQA and SQC roles in CMMI Verification |
|
SQA and SQC roles in CMMI Validation |
|
Conclusion |
No guarantee (or claim) is made regarding the accuracy of this information. Any questions or comments should be sent to:-