viernes, 30 de noviembre de 2012

Saving Money with Software Quality Assurance (SQA)

This is the first part of an article written by Hernan Gil

In this article we will see what is Software Quality Assurance (SQA), what are the economic benefits of its implementation and how it takes part on the early stages of the development process.
The main objective of implementations of the SQA discipline is to increase the quality of deliverables throughout the development process. Many quality requirements, especially those having to do with the performance, usability, load, availability, etc.. - Can be treated as hazards. That is, the fact that one of them is not met implies a risk.
Then, ensuring quality of software during its process, reduce risks and increase the predictability of software development. This brings with it a wide range of benefits of visibility. Among those that stand out, we can name:

  • Reduced development time, mainly generated rework time in the testing phase.
  • Optimizing the use of resources, reducing the cost of the infrastructure required to support the application.
  • Maintenance cost reduction, as they generate more stable and secure applications.
  • Increased change permeability and ease to measure its impact.
  • Compliance requirements, both functional as quality.
  • Tracking the defined standards.
  • Provides information about the quality of the project to the stake holders who have less technical knowledge.
  • Developments become more predictable, which makes estimates easier.
SQA activities in the development process
SQA is a discipline which is composed of a number of activities accompanying development process. The objective of this work is to enhance, manage, and monitor the quality of the built deliverables.
UP phases and disciplines

To identify these activities and the right time to perform them , it is necessary to review the life cycle of a project. For this we rely on the analysis of phases / disciplines / effort in UP, it is a process widely used in the market, however, the same analysis can be applied to other development processes. Analyzing the Phases diagram, we realize that the effort of each discipline varies by project phase.
From this it follows that the time to control the quality of each discipline is when more effort is devoted.
In healthy SQA initiatives, the impact of this should be reflected in all the artifacts that are generated in the development process. It should not be limited to testing or functional verification, which is a fairly widespread sense of SQA function, but diametrically misguided.
In a broader perspective SQA synergistic role in a development project, we find, among others, the following activities:
  • Requirements verification:  Aims to demonstrate that the definition of the requirements actually define the system that the user needs or the customer wants.
  • Validation and verification of requirements: They aim to show that the specification of the requirements actually define the application that user needs or the customer wants and that the system meets these needs.
  • Evaluate the architecture: It 's a very important activity to assess the feasibility of meeting non-functional requirements and early detection of the major risks associated with the project.
  • Design Control: It focuses on validate the logical design of the components, their distribution and interaction, to identify components which may be reusable, and the scope of the defined quality requirements of each.
  • Source Control: It is divided into two activities:
    • Static Control Code: The validation of the code against a set of rules, best practices and predefined standards.
    • Dynamic control code: Control focuses on the use of resources and the application does the coverage of code making unit tests.
  • Functional Testing: This is done near the end of the development stage, and is responsible for monitoring compliance with the functional requirements of the system and to detect errors more visible to the user.
  • Stress Test: Focuses on assessing the performance of the application for the simulation of peak activity times.
Previous Tasks

It is necessary to note that, for some of these activities, you first have to perform other, such as:
- Definition of standards and best practices development.
- Choice of tools to document and develop.
- Other
Performing these tasks is justified by the mere fact that, in order to validate the quality of any process, it is necessary to have, previously, the definition, requirement or standard against which to validate.

In the second article we explore the following topics: Analysis of costs, where do we start?, Quality metrics and Conclusions

Fernando Hunth