Home arrow Quality
Quality

Quality management cuts the cost of producing software. The sooner an error is detected, the lower the cost of the product due to impact avoidance.

Software quality assurance may be defined as the set of activities providing evidence that the software product fits expected user needs. Quality is achieved by establishing, monitoring and controlling guidelines designed to obtain an integrated, properly finished software product that will have a long life.

While quality assurance resides in a series of basic activities required to guarantee that software production processes are properly established and continually improved to ensure that products are in line with specifications. The procedure is accompanied by Quality Control measures, which benchmark the product to applicable standards, allowing action to be taken to handle any non-conformities that may be identified, and Quality Audits to verify that the procedures and policies established are properly followed.

In short then, quality assurance is a concerted effort to ensure that the software complies with the general and specific criteria for each project, such as portability, efficiency, flexibility, reusability and scalability. The specific activities conducted within each project are thus designed to monitor and control the software project to ensure that objectives are attained to the desired level. This requires the collaboration and consensus of all involved, from project managers and the quality assurance team to programmers and the end users of the software project.

The Benefits of Quality

Quality management cuts the cost of producing software. The sooner an error is detected in the software, the lower the cost of the product due to impact avoidance. We believe that an error committed in the early stages of the development cycle, such as misinterpretation of any of the specifications, but which is only detected at the end, will waste a significant amount of work in the later stages of the process, with the consequent resolutions costs and loss of time. This has a major impact, particularly on products that depend for their value on time-to-market.

Analysis of the effective cost of quality management reveals four key factors:

  • Prevention. Prevention costs are incurred when actions are taken to anticipate events before they occur, using advanced tools and techniques, highly skilled personnel and so on.
  • Inspection. Inspection costs are incurred to measure, assess and inspect products, including intermediate artifacts, in order to establish compliance with specifications and the observation of regulations, etc.
  • Internal costs. These arise from the correction of any weaknesses identified before the product is delivered.
  • External costs. These comprise costs incurred where defects are not identified until the final product has been delivered.

External costs can sometimes be very significantly higher than resolution itself, because they affect the reputation of the organization itself and can result in the loss of future sales.

Prevention unquestionably produces the highest benefits, because it minimizes the number of defects that get through to our clients, thereby improving the quality of the product delivered and lowering production and maintenance costs.

Software quality assurance frameworks and standards

The international community has established numerous public and private bodies to promote the standardization of work processes in companies. This facilitates third party understanding of compliance with processes, at the same time as aiding inter-business cooperation in the preparation of products. The most widespread standards are those drawn up by the ISO/IEC, although in some sectors (such as software engineering) private frameworks exist to ensure higher levels of quality assurance. One of the most important of these is the SEI (Software Engineering Institute) in terms of the standardization of software development processes. Its CMMi (Capacity Maturity Model Integrated) is widely recognized throughout the industry.

Kynetia holds ISO 9001:2000 certification, awarded in accordance with the ISO 90003:2004 standard, which sets the guidelines for the application of ISO 9001:2000 in the Software Engineering industry.

We are constantly concerned with quality. Kynetia works continually to improve and adapt processes in compliance with ever more exacting standards from the standpoint of the finished product. Chief among these are the CMMI standards, which serve as a framework for the perfection of our Firm’s development processes. We are currently in the process of obtaining CMMI certification.

Quality assurance elements

Quality assurance activities may be classified as follows:

  • Software testing. This includes both verification and validation testing, which represent a key risk management strategy. These tests are used to check that the software design documents, the software itself and the documentation comply with all requirements. The test plan reflects and classifies all software tests, ensuring traceability and cover for all requirements.
  • Quality control. Quality consists of the processes and procedures employed to monitor the work performed. It focuses on the review and correction of defects before delivery to the client. Typically, quality control consists of document reviews, code inspections and prior checks performed before delivery to the user. The control criteria are usually adapted to each project in the software project quality assurance plan, involving clients in framing criteria that provide the best fit with their needs.
  • Software set-up management. This activity concerns the labeling of software project elements and monitoring and control of changes in order to track the evolution of the elements concerned and their interrelationships over the course of the product development cycle.

Validation and Verification

Validation consists of the checks made at the end of the development cycle to ensure that the final product properly meets the specification of requirements and the expectations of users.

The need to forestall errors arose from the need for highly reliable software in the systems of the aerospace industry at the end of the 20th century, since a failure detected at the end of production process could cause the abortion of missions and the loss of huge amounts of time and money. It was from these origins that the concept of verification emerged.

Verification ensures that the product and all related sub-products constructed meet the requirements specified in the course of all activities undertaken in the course of the development cycle. The procedure is based on two key criteria:

  • The software must correctly perform all of the functions for which it was conceived.
  • The software must not perform any function, either on its own or in combination with other applications, that could degrade the performance of the system as a whole.

At the same time, verification requires traceability among software elements and requirements specifications in order to ensure that all requirements, including the level of finish, performance, etc., are duly covered by tests, and that test results are repeatable even after changes have been made.

Hence, verification means a process of continuous improvement that must be applied throughout the product development cycle, the configuration and management of which will allow monitoring at any time of the degree to which the procedures established to guarantee the quality of product development are followed.

The critical issue with verification is the considerable increase in development costs involved. Nevertheless, if the software life cycle as a whole is considered, from the moment of conception to the moment at which the product is abandoned due to obsolescence, then verification will be found to reduce the general cost of software. An effective verification plan reduces the number of defects in the system rolled-out in the production environment by a proportion of 4 to 1. Since the cost of repairing such defects is between 20 and 100 times greater in maintenance operations than would be incurred in the development phases, the initial investment in prevention through verification procedures is amply justified.

Software set-up management

The software set-up consists of a set of software items that form a function in the business model. The purpose of set-up management is to identify all of the software elements that comprise each configuration, from specification and design documentation to the code and testing, and to control their evolution of the different phases of the product life cycle. Monitoring and follow-up are essential in the construction process, in testing and in the maintenance of the versions released. This is particularly important for change management and the reusability of software, given the interrelationships defined between the different software components. It also ensures the integrity of components when they are manipulated by the different players involved in the software construction process. The components controlled include proposals, requirements specifications, planning, analysis and design documents, source code, utilities and libraries, executables, testing plans and test scripts, and certificates and reports.

Change management permits an accurate assessment of the impact of changes based on relationships between the components affected and the related documentation before any decision is taken.

In terms of the reuse of code, change management ensures the identification of the elements required, because each software component and its relations with third party components, such as libraries and versions of systems are duly defined and established.

The activities comprising set-up management processes may be classified in four main groups:

  • Identification of elements: These activities provide basic guidelines to identify and label software components, set-ups and software baselines. The date and allocation of a version number are unavoidable identification tags, which may be supplemented with other qualifications.
  • Change control. Change control provides the mechanisms by which proposals for the modification of any element are assessed, approved or rejected, and followed up. The procedure is based on four pillars:
    • Request for Change
    • Analysis of the impact of change. This is based on interdependencies with other set-up elements.
    • Modifications and creation of new components.
    • Creation of new baselines with modifications.
  • Version control. It is frequently the case that a various versions of the same application exist (Production, development, test versions, etc.). Version control provides the mechanisms to oversee the status of the software evolution through special labels that identify elements of the remaining configuration.
  • Set-up construction. This provides the necessary elements to extract all elements corresponding to a given set-up from a repository. It thus allows the construction of software from source archives more or less automatically.

Where quality assurance processes are followed, they indicate that quality is assured and that the project managers can place reliance on quality.