Software quality assurance (SQA) is a set of activities performed to ensure that the developed software is of good quality. Although many developers believe that the software’s quality is something they should worry about after the code is generated. But the truth is that SQA activities are applied throughout the development of the software.
However, in the early days, the software’s quality was the developer’s sole responsibility. Over time, the communities responsible for the software’s quality were the project managers, customers, salespersons and all the team members who serve within the SQA group.
Whomsoever is responsible for performing SQA must look at the software from the customer’s point of view and must ensure –
- Does the software meet all quality factors, such as correctness, reliability, efficiency, integrity, usability, flexibility, maintainability, etc.?
- Whether the technical team has properly played their role in performing SQA?
- Is the software developed according to pre-established standards?
This section will briefly discuss software quality assurance and the elements of SQA. We will also study the goals and metrics of SQA.
Content: Software Quality Assurance (SQA)
- What is SQA?
- Why is Software Quality Assurance Important?
- Elements of SQA
- Goals, Attributes and Metrics of SQA
- SQA Plan
- Key Takeaways
What is Software Quality Assurance in Software Engineering?
Software quality assurance ensures that the developed software meets all the quality goals. However, these quality goals differ from one project to another. Now how can you identify whether you have developed good-quality software? Well, there are two ways to identify that –
- Quality Control – Measure the attributes of the developed software.
- Quality Assurance – Monitor and control the process of software development.
What are the Quality Factors or Attributes of Software?
The quality factor and the attributes associated with the software are as follow:
- Correctness – The extent upto which software meets the user-specified requirements.
- Reliability – It is a degree upto which software can work without failing.
- Performance – How effective the software is with respect to the processor time it takes and the amount of main memory it utilizes for execution
- Integrity – The level upto which the software can forcibly access the information.
- Usability – How easily the software can be used.
- Maintainability – The efforts required to identify and fix the fault.
- Flexibility – The efforts required to modify the software according to changing requirements.
- Testability – How much effort is required to test the software?
- Portability – What efforts are required to transfer software from one hardware to another?
- Reusability – The level upto which we can reuse the software with some other software.
- Interoperability – The level upto which the software can work with another software in conjunction.
- Security – The extent upto which the software can save itself from external hindrance.
So these are the quality goals that ensure good quality software. Now the activities that software quality assurance incorporates are:
- 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, and source code. Controlling changes made to software work product.
- Measuring and reporting the quality of the software.
Why is Software Quality Assurance Important?
Quality assurance is important for software as, nowadays, almost all businesses rely on software for their work. SQA is important not only for customers who use the software but also for the software product itself.
Do you want to know why?
- Cost and Time Effective – With SQA, developers can identify errors during the early stage of development. So, less cost and time is expended to fix the errors.
- Maintain Quality of Software – Testing software for its reliability, functionality, interoperability, portability, reusability, etc., makes software stable and competitive.
- Secures Company’s Prestige – SQA activities ensure the company that its released software is working as intended. It helps the company identify the errors and bugs in the software before the customer can.
- Ensures Security – SQA ensure the developers that the software is secure and that no external force can penetrate the software.
- User Satisfaction – As SQA ensures good quality software, it is very much possible that users will be satisfied with the delivered 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., have lined up a lot of 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 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. The 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 during 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 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 software organizations to incorporate policies to protect data at all levels. 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 organizations 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 of the attributes and metrics 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 and 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 required to complete the process will also be changed.
- Traceability: There can be a number of requirements that cannot be traced to the 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 to 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 of moves required to get the desired function.
- Patterns: The number of patterns used to design architectural models.
c. Code Quality
The code of the software and its related descriptive information must obey the local coding standards. So that it can be maintained for a 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 percentage of internal comments 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.
- Completion rate: Actual time for completion vs Committed time for completion.
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 can be performed by the software developer team or another set of staff can be appointed for this.