Software quality assurance is a set of activities followed by software engineers to ensures that the software meets the specified requirements of the user, and it does not have any error. Along with this the software is able to manage risk and secures the data of user at each level.
Though maintaining the quality of the software is looked after by the software developing organization. But, software quality assurance (SQA) organization ensure that activities involved in maintaining the quality of the software are conducted efficiently by the software organization.
In this section, we will discuss software quality assurance in brief along with the elements of SQA. We will also study the goals and metrics of SQA.
Content: Software Quality Assurance (SQA)
What is Software Quality Assurance in Software Engineering?
Before getting into details of software quality assurance you must know about software quality. Software quality is an extent to which the developed software meets the requirements specified by the customers. More the requirements are satisfied better is the quality of the software.
Software quality assurance is the set of actions performed by the SQA group to ensure the quality of a software. Software quality assurance incorporates:
- SQA process on the software.
- Assuring and controlling the quality of software which include technical evaluation and testing.
- Applying software engineering practices effectively.
- Managing software work products like an architectural model, document with a description of the software, source code. Controlling changes made to software work product.
- Measuring and reporting the quality of the software.
Elements of Software Quality Assurance
SQA encompasses a wide range of activities that can be performed to ensure the quality of the software.
We all know that organizations like IEEE, ISO etc. has lined-up a lot up software engineering standards which should be imposed by the customer and even embraced by software engineers while developing software.
SQA team must ensure that standards established by the authorized organization are followed by the software engineers.
2. Review & Audit
The software is evaluated technically by the SQA team in order to discover an error in the software. While auditing a software the SQA team confirms that good quality guidelines are followed by the software engineers while developing the software.
The elemental goal of software testing is to identify the bug in the software. SQA team has the responsibility of planning the testing systematically and conducting it efficiently. This would raise the possibility of finding the bug in the software if any.
4. Analyzing Error
Software testing reveals bugs and errors in the software which are analysed by the SQA team in order to discover how the bugs or errors are introduced in the software and also discover the possible methods required to eliminate those errors or bugs.
5. Change Management
The customer can ask for modifications between the development of the software. The changes are the most distracting aspect of any software project.
If the implementation of the changes is not properly managed it will cause confusion which will affect the quality of the software. The SQA team takes care that change management is practised while developing the software.
It is the responsibility of the SQA organization to enlighten the software organizations by improving their software engineering practices.
7. Vendor Management
It is the responsibility of SQA to suggest software vendors, to accept the quality practices while developing the software. SQA must also incorporate these quality instructions in a contract with software vendors.
8. Security Management
With the increase in cybercrime, the government has regulated the software organization to incorporate policies to protect data at all level. It is the responsibility of SQA to verify whether the software organization are using appropriate technology to acquire software security.
The hidden defects of any human-rated software (aircraft applications) can lead to catastrophic events. So, it is the responsibility of SQA to evaluate the effect of software failure and introduce steps to eliminate the risk.
10. Risk Management
Though it is the job of software organization to analyze and reduce the risk in the software. But, it is the responsibility of SQA to make sure that risk management actions are properly conducted and the backup plan has been confirmed.
Goals, Attributes and Metrics of SQA
In this section, we will discuss the goals of SQA. We will also make a note on the attributes and metric of each goal.
a. Requirements Quality
SQA must ensure that the requirements specified by the user are properly reviewed by the software developers. Software developers have properly analyzed the correctness, completeness of specified requirements as it has a strong influence on the quality of software.
Ambiguity: There can be a number of ambiguous modifiers in the specified requirement.
Completeness: There can be a number of requirements that are neither announced nor determined yet.
Understandability: There can be a number of sections or subsections in the specified requirements that are not understood by developers.
Volatility: Requirements can be volatile as the user can request a number of changes in the requirements.
As the requirements are volatile and the user can request changes in it, the time requires to complete the process will also be changed.
Traceability: There can be a number of requirements that cannot be traced to design code.
Model Clarity: Developers can design a number of UML models for the specified requirements. Each model would have a number of descriptive pages.
b. Design Quality
After analyzing the requirements specified by the user UML models are designed to visualize the way the system will be designed. The job of SQA is to evaluate whether the design model conforms the specified requirements to achieve quality.
Architectural Integrity: Developers must be able to assess the architectural elements to confirm the quality of the architectural model.
Component Completeness: The components of the architectural model are completely defined or not.
Interface Complexity: The number moves required to get the desired function.
Patterns: The number of patterns used to design architectural model.
c. Code Quality
The code of the software and it’s related descriptive information must obey the local coding standards. So, that it can be maintained for long in future. It is the job of SQA to observe the quality of code.
Complexity: The number of cyclomatic complexity in the code.
Understandability: The understandability of code relies on the percent of internal comment in the code and the naming convention used while naming the variables.
Reusability: The number of components in the code that can be reused.
d. Quality Control Effectiveness
Software developers should use minimal resources and try to achieve high quality. The job of SQA is to analyze whether the resources are allocated in an effective manner.
Resource Allocation: Time spent by staff per activity.
The SQA plan is the guideline which provides the direction for software quality assurance. SQA plan act as a template which can be implemented for each software project. Some standards have been established by IEEE. According to the standards, the structure of the plan should be able to identify:
- The motive and scope of the plan.
- Explain all the software engineering work product that is within the scope of SQA.
- All the standards and practices applied during software development.
- SQA activities and tasks.
- Tools and methods assisting SQA activities and tasks.
- Software configuration management.
- The technique of organizing and maintaining SQA related information.
- Software quality assurance is the set of actions that are applied to all the software engineering process while developing the software to ensure the quality of the software.
Software quality assurance can be performed by the software developer team or another set of staff can be appointed for this.