Quality Assurance | delivering software quality as a way of life
Software quality assurance

Software quality assurance (SQA) applied throughout a project lifecycle aims to prevent the introduction of defects and provides a pervasive assessment of software quality that is confirmed during testing. The benefits include software with fewer latent defects, resulting in reduced effort and time during testing and maintenance; a higher reliability resulting in greater customer satisfaction; reduced maintenance costs, and a reduction in the overall lifecycle cost of software.

Software quality is a complex mix of factors that can vary across different applications, organizations, and customers. However, the fundamental activities required to achieve software quality encompass procedures for the effective application of methods and tools, formal technical reviews, testing strategies and techniques, procedures for change control, procedures for assuring compliance to standards, and measurement and reporting mechanisms.

*Methods and tools are employed according to the processes defined by a software methodology and enhance software quality by providing uniform techniques and predictable results.

*Formal technical reviews serve as a filter for the software development process, purifying the analysis, design and coding activities, and removing defects while they are relatively inexpensive to find and correct. Applied periodically, they aim to discover defects in function, logic and implementation, and validate that the software satisfies requirements ensuring code has been developed in a uniform manner to predefined standards.

*Tiered testing strategy maps the various levels of testing to specific phases of the software development process. This approach enables the testing activities to properly support and enhance the development efforts. Test planning should start at the beginning of the project and continue in parallel with development. A master test plan should be created based on general project information, and where appropriate, specific test plans should be created for certain levels of test, e.g. an acceptance test plan should be created early because it is built on the requirements. Acceptance tests help validate the requirements as well as model the system.

*Change control combines procedures and tools to provide a mechanism that manages and tracks alterations to software. Change requests are evaluated to assess their business and technical values, their impact, and their projected cost; they are then prioritized for implementation. Software should be stored in a repository that is maintained by a version control tool. This tool provides an environment in which changes to software can be managed using access control, which governs who can obtain access to change a piece of software, and synchronization control, which ensures that changes made in parallel to the same software do not overwrite one another and are merged safely.

*Measurement of software quality requires metrics to be collected throughout the software development process for key quality factors.

  1. Functionality is assessed by evaluating the feature set in terms of the capabilities and the generality of the delivered software, and the security of the overall system.
  2. Usability is assessed by considering human factors, e.g. aesthetics, consistency and documentation.
  3. Reliability is evaluated by measuring the frequency and severity of failure, the accuracy of output results, the mean time between failures (MTBF), the ability to recover from failure, and the overall predictability of the software.
  4. Performance is measured by evaluating system characteristics given certain environmental scenarios.
  5. Supportability combines extensibility, serviceability, testability, and configurability, in addition to the ease with which a system can be installed, and the ease with which problems can be localized.

*Standards adopted within the framework of a software methodology can facilitate the development process and the internal processes of quality assurance, helping to achieve consistency and common practices.

Practical software quality assurance

Instituting a quality assurance program can bring about a cultural change, and it can require additional financial and resource commitment. Before a quality assurance program is established, it is important to adopt a software methodology that suits the project, environment and organization.

We work closely with our customer to understand their organization's managerial structure, responsibilities, activities, capabilities, and resources. Using our expertise in software methodologies and engineering practices, we will help devise a balanced quality assurance program that enables projects to assimilate the quality factors desired by the customer, without introducing unnecessary process overheads.

To discuss our quality assurance services further, please email or contact us.

Back to top ^^

This page is valid XHTML 1.0 This page uses valid CSS

Methodologies | Project Management | Analysis & Modeling | Development | Testing | Quality Assurance

Home | Services | Contact Us