Software Quality Assurance (SQA) is a set of activities for ensuring quality in software engineering processes. It ensures that developed software meets and complies with the defined or standardized quality specifications. SQA is an ongoing process within the Software Development Life Cycle (SDLC) that routinely checks the developed software to ensure it meets the desired quality measures.
SQA practices are implemented in most types of software development, regardless of the underlying software development model being used. SQA incorporates and implements software testing methodologies to test the software. Rather than checking for quality after completion, SQA processes test for quality in each phase of development, until the software is complete. With SQA, the software development process moves into the next phase only once the current/previous phase complies with the required quality standards. SQA generally works on one or more industry standards that help in building software quality guidelines and implementation strategies.
It includes the following activities −
- Process definition and implementation
Processes could be −
- Software Development Methodology
- Project Management
- Configuration Management
- Requirements Development/Management
- Software Design
- Testing, etc.
Once the processes have been defined and implemented, Quality Assurance has the following responsibilities −
- Identify the weaknesses in the processes
- Correct those weaknesses to continually improve the process
Components of SQA System
An SQA system always combines a wide range of SQA components. These components can be classified into the following six classes −
This assures that the project commitments have been clearly defined considering the resources required, the schedule and budget; and the development and quality plans have been correctly determined.
Components of project life cycle activities assessment
The project life cycle is composed of two stages: the development life cycle stage and the operation–maintenance stage.
The development life cycle stage components detect design and programming errors. Its components are divided into the following sub-classes: Reviews, Expert opinions, and Software testing.
The SQA components used during the operation–maintenance phase include specialized maintenance components as well as development life cycle components, which are applied mainly for functionality to improve the maintenance tasks.
Components of infrastructure error prevention and improvement
The main objective of these components, which is applied throughout the entire organization, is to eliminate or at least reduce the rate of errors, based on the organization’s accumulated SQA experience.
Components of software quality management
This class of components deal with several goals, such as the control of development and maintenance activities, and the introduction of early managerial support actions that mainly prevent or minimize schedule and budget failures and their outcomes.
Components of standardization, certification, and SQA system assessment
These components implement international professional and managerial standards within the organization. The main objectives of this class are utilization of international professional knowledge, improvement of coordination of the organizational quality systems with other organizations, and assessment of the achievements of quality systems according to a common scale. The various standards may be classified into two main groups: quality management standards and project process standards.
Organizing for SQA – the human components
The SQA organizational base includes managers, testing personnel, the SQA unit and the persons interested in software quality such as SQA trustees, SQA committee members, and SQA forum members. Their main objectives are to initiate and support the implementation of SQA components, detect deviations from SQA procedures and methodology, and suggest improvements.
Pre-project Software Quality Components
These components help to improve the preliminary steps taken before starting a project. It includes −
- Contract Review
- Development and Quality Plans
Normally, a software is developed for a contract negotiated with a customer or for an internal order to develop a firmware to be embedded within a hardware product. In all these cases, the development unit is committed to an agreed-upon functional specification, budget and schedule. Hence, contract review activities must include a detailed examination of the project proposal draft and the contract drafts.
Specifically, contract review activities include −
Clarification of the customer’s requirements
Review of the project’s schedule and resource requirement estimates
Evaluation of the professional staff’s capacity to carry out the proposed project
Evaluation of the customer’s capacity to fulfil his obligations
Evaluation of development risks
Development and Quality Plans
After signing the software development contract with an organization or an internal department of the same organization, a development plan of the project and its integrated quality assurance activities are prepared. These plans include additional details and needed revisions based on prior plans that provided the basis for the current proposal and contract.
Most of the time, it takes several months between the tender submission and the signing of the contract. During these period, resources such as staff availability, professional capabilities may get changed. The plans are then revised to reflect the changes that occurred in the interim.
The main issues treated in the project development plan are −
- Required manpower and hardware resources
- Risk evaluations
- Organizational issues: team members, subcontractors and partnerships
- Project methodology, development tools, etc.
- Software reuse plans
The main issues treated in the project’s quality plan are −
Quality goals, expressed in the appropriate measurable terms
Criteria for starting and ending each project stage
Lists of reviews, tests, and other scheduled verification and validation activities