Uno de los principales miedos que enfrentan los directores de empresas que requieren de un software para apoyar a sus operaciones, radica en la posibilidad de hacer un gasto, que generalmente es considerable, en algo intangible y que no cumpla con sus expectativas o resuelva sus necesidades, y sobre todo un software hecho a la medida es prácticamente imposible revender a otra compañía.
11.1 Conceptos de calidad
Aquí es donde entra la calidad en el software. Primero debes tener claro el concepto de calidad.
La calidad se define como las características de un producto o servicio que permiten satisfacer una necesidad declarada o implícita. La calidad la define el cliente, sin embargo dos clientes diferentes pueden tener percepciones distintas de la calidad de un mismo producto.
Pressman (2010) define a la calidad del software como “el proceso eficaz del software que se aplica de manera que crea un producto útil que proporciona un valor medible a quienes lo producen y a quienes lo utilizan”.
Si analizas con cuidado los elementos de esta definición encontrarás lo siguiente:
- Es un proceso eficaz en el sentido que es controlado para que no caiga en el caos.
- Crea un producto útil, es decir una aplicación o un sistema que ayuda al usuario, que se mantiene libre de errores, que funciona tal y como se esperaba.
- Proporciona valor para el productor y el usuario: el valor para el productor se relaciona al trabajo en equipo con una filosofía del esfuerzo por evitar defectos que generen retrabajo, lo que aumenta la productividad, minimiza los costos y finalmente existe una mayor ganancia. Al mismo tiempo, el usuario obtiene valor al facilitarle el trabajo operativo diario, hace más acciones en menos tiempo, se reducen los errores que pueden provocar retrabajo, y sus clientes reciben un mejor producto o servicio.

En la opinión de Humphrey (2005), la calidad del producto de software empieza por su buen funcionamiento. Si la aplicación no alcanza un mínimo razonable de consistencia en la funcionalidad que el usuario espera, poco importarán otros atributos como la seguridad, usabilidad, compatibilidad, mantenibilidad, etc. Las organizaciones deben considerar enfocar sus esfuerzos, trabajar con calidad desde el inicio del proyecto y no esperar a que el equipo de pruebas verifique que el software está libre de errores, porque puede llegar a ser bastante tarde, sobre todo porque existen plazos específicos que se deben cubrir para evitar retrasar el lanzamiento del producto.
Principios de la calidad:
Humphrey (2006) ofrece los siguientes principios de la calidad que todo equipo de trabajo debe tener presente:
Enfocarse a la satisfacción del cliente:
La principal razón por la que un equipo de desarrollo debe buscar la calidad del producto del software es asegurar que el cliente reciba el mejor producto por lo que paga. Incluso cuando el mismo cliente desconoce sus necesidades o los atributos de la calidad, por lo que se debe involucrar al cliente en el proceso de desarrollo y tener claridad de lo que realmente está esperando obtener.
La gerencia debe hacer de la calidad la máxima prioridad:
La gerencia que se encuentra frente a equipos de desarrollo de software debe considerar a la calidad como la máxima prioridad. Cuando el equipo trabaja con calidad, es posible controlar el resto de los indicadores operativos como el costo, productividad, retrabajo, bugs en el código, etc., sin mucho esfuerzo.
“La gerencia debe entender y apoyar el principio que hacer un trabajo de calidad es redituable, incluso si no puede comprobar su valor en algún momento” (Humphrey, 2005).
Las personas que hacen el trabajo deben poseer el programa de calidad:
Es importante que el equipo de desarrollo de software comprenda que la calidad no es la responsabilidad de una sola área o grupo de personas, sino que es parte de un programa integral en el que todos participan y se esfuerzan por generar un producto libre de defectos.
Para mejorar la calidad, el equipo debe ajustar su proceso constantemente:
Generar un producto de software de calidad no es cuestión de la casualidad, sino el resultado del proceso que se utilizó para generarlo. Cualquier mejora que introduzca el equipo en su proceso de desarrollo, invariablemente afectará de manera positiva a la calidad del producto.
Los equipos deben de medir la calidad:
Establecer las métricas que miden el proceso de desarrollo es esencial para reconocer las áreas de oportunidad que tiene.
Realizar bien el trabajo siempre cuesta menos a largo plazo:
Si existe un incremento en los costos cuando la calidad mejora es porque hay algo que se está haciendo de manera incorrecta. Cuesta mucho menos hacer bien el trabajo desde el principio que tratar de corregirlo después.
Estándares de calidad
Según el IEEE (Instituto de Ingeniería Eléctrica y Electrónica) un estándar del software es un objeto o medida de comparación que define o representa la magnitud de una unidad. Otra forma de definirlo es el nivel o grado en el que la excelencia requerida es alcanzada. Establecer un estándar de calidad en el desarrollo del software permite generar un criterio en el que es posible que el ingeniero de software pueda basarse para realizar su trabajo. Si este criterio no es seguido, la calidad puede verse afectada de forma negativa. A nivel mundial existen organismos conformados por expertos que han propuesto algunos estándares aplicables al software. En la siguiente tabla puedes revisar los estándares más reconocidos. Con las primeras siglas de cada estándar, puedes identificar la organización que lo propone.
Quality Standard |
Name and Use
|
AIAA R-013 |
Recommended Practice for Software Reliability |
ANSI/IEEE Std 730-1984 and 983-1986 |
Software Quality Assurance Plans |
ANSI/AAMI/ISO 13485:2003 |
Medical Devices—Quality Management Systems—Requirements for Regulatory Purposes |
ASME NQA-1 |
Quality Assurance Requirements for Nuclear Facility Applications |
EIA/IS 632 |
Systems Engineering |
IEC 60601-1-4 |
Medical Electrical Equipment—Part 1: General Requirements for Safety—4. Collateral Standard: Programmable Electrical Medical Systems |
IEC 60880 |
Software for Computers in the Safety Systems of Nuclear Power Stations |
IEC 61508 |
Functional Safety Systems |
IEC 62304 |
Medical Device Software—Software Life Cycle Processes |
IEEE 1058.1–1987 |
Software Project Management Plans |
IEEE Std 730 |
Software Quality Assurance Plans |
IEEE Std 730.1 |
Guide for Software Assurance Planning |
IEEE Std 982.1 |
Standard Dictionary of Measures to Produce Reliable Software |
IEEE Std 1059–1993 |
Software Verification and Validation Plans |
IEEE Std 1061 |
Standard for a Software Quality Metrics Methodology |
IEEE Std 1228-1994 |
Standard for Software Safety Plans |
IEEE Std 1233–1996 |
Guide for Developing System Requirements Specifications |
IEEE Std 16085 |
Software Life Cycle Processes—Risk Management |
IEEE Std 610.12:1990 |
Standard Glossary of Software Engineering Terminology |
ISO/IEC 2382-7:1989 |
Vocabulary—part 7: Computer Programming |
ISO 9001:2008 |
Quality Management Systems—Requirements |
ISO/IEC 8631:1989 |
Program Constructs and Conventions for their Representation |
ISO/IEC 9126-1 |
Software Engineering—Product Quality—Part 1: Quality Model |
ISO/IEC 12119 |
Information Technology—Software Packages—Quality Requirements and Testing |
ISO/IEC 12207:2008 |
Systems and Software Engineering—Software Life Cycle Processes |
ISO/IEC 14102 |
Guideline For the Evaluation and Selection of CASE Tools |
ISO/IEC 14598-1 |
Information Technology—Evaluation of Software Products—General Guide |
ISO/IEC WD 15288 |
System Life Cycle Processes |
ISO/IEC 20000-1 |
Information Technology—Service Management—Part 1: Specification |
ISO/IEC 25030 |
Software Engineering—Software Product Quality Requirements and Evaluation (SQuaRE)—Quality Requirements |
ISO/IEC 90003 |
Software Engineering. Guidelines for the Application of ISO 9001:2000 to Computer Software |
Recuperado de El-Haik, B. y Shaout, A. (2010). Software Design for Six Sigma: A Roadmap for Excellence. EEUU: John Wiley & Sons.
Costo de la calidad
De acuerdo con El-Haik & Shaout (2010), el costo de la calidad (COQ: Cost f quality) es aquel que se encuentra asociado a las acciones de prevenir, encontrar, y corregir trabajo considerado como defectuoso. El costo de una pobre calidad (COPQ: Cost of poor quality) que es un término utilizado en Six Sigma, es aquél que se genera como resultado de producir un software defectuoso. En el siguiente diagrama puedes darte una idea de cómo se incrementa el costo de la calidad al descubrir defectos en diferentes momentos del proceso de software.

Costo de la calidad al descubrir errores de manera interna en comparación a una vez entregado al cliente.
Recuperado de El-Haik, B. y Shaout, A. (2010). Software Design for Six Sigma: A Roadmap for Excellence. EEUU: John Wiley & Sons.
11.2 Planeación de la calidad
Los usuarios de esta década son particularmente más exigentes que antes. La exposición que tienen frente a productos de software es cada vez más frecuente y habitual, sobre todo por la inmensa cantidad de productos que se ponen a su disposición a través de las tiendas de software como Apple store, Google store, y Windows store. Los usuarios pueden descargar aplicaciones para su celular y computadoras personales con un simple clic. Esta frecuente interacción que tienen los usuarios con el software provoca que sus expectativas sean cada vez más altas, incluso para desarrollos de software empresarial hechos a la medida.
Un mercado cada vez más exigente de productos de software de calidad hace que las compañías fabricantes de aplicaciones vean la forma de producir mejores productos, y la mejor forma de hacerlo es planear la calidad.
Objetivos de la calidad
El primer paso hacia la planeación de la calidad es establecer objetivos claros sobre la calidad. Eso significa analizar cuáles son los atributos o características que hacen del software un producto deseable por el usuario. Los usuarios valoran de forma diferente las características de calidad del software dependiendo del uso que le darán. Por ejemplo, los usuarios del software de control de tráfico aéreo valorarán más los atributos relacionados con la seguridad de los aviones, aunque su interfaz gráfica sea deficiente. Tomando en consideración lo que para el cliente es más importante, es posible enfocar los esfuerzos del proyecto desde la planeación.
Humphrey (2005), considera que los siguientes atributos constituyen la preocupación principal del usuario:
- Funcionalidad
- Compatibilidad
- Documentación
- Habilidad para ser instalado
- Mantenibilidad
- Desempeño
- Confiabilidad
- Seguridad
- Protección
- Usabilidad
Plan de la calidad
El plan de calidad debe ser realizado con el apoyo del equipo de trabajo involucrado. TSP sugiere realizar los siguientes pasos en la elaboración del plan:
Haz clic en cada paso para conocer más detalle
Según Humphrey (2006), el aspecto más importante de este tipo de plan de calidad consiste en mostrar a los desarrolladores la cantidad de defectos que se pueden introducir y eliminar en un proyecto de software. Cuando los equipos de trabajo revisan este plan, por lo general se sorprenden de la cantidad de posibles errores que afectan la calidad del producto, y sobre todo de la cantidad de tiempo que le dedicarán a corregirlos. Esto hará conciencia en que realizar un buen trabajo durante las revisiones e inspecciones es mucho menos esfuerzo que corregirlos después.
11.3 Métodos de la gestión de la calidad
Dentro de la metodología TSP, existen los siguientes métodos para gestionar la calidad, que tienen por objetivo realizar acciones que permitan entregar el producto esperado por el cliente.
“Si no han planeado hacer un trabajo de calidad, probablemente no lo harán” (Humphrey, 2006).
Revisiones del plan de calidad
Los miembros del equipo de trabajo deben establecer un plan de calidad, por lo que es necesario que el coach del equipo se asegure de su existencia, que los miembros lo conocen y sobre todo que lo apliquen. Si es necesario, el coach debe solicitar explicaciones sobre cómo llegaron a generar el plan y cerciorarse que sus objetivos van encaminados hacia la calidad del software.
Los principales aspectos de revisión del plan de calidad deben ser los siguientes:
- La relación que existe entre el tiempo destinado a realizar el diseño contra el tiempo de codificación del software.
- Relación entre el tiempo destinado a realizar las revisiones y el tiempo de codificación.
- Tiempo que le dedicarán a realizar inspecciones.
Por lo general, los equipos de trabajo no planifican suficiente tiempo para el diseño, para las revisiones de código y las inspecciones, por lo que el coach debe intervenir para realizar ajustes en beneficio de la calidad del software.
Revisiones del método de diseño
A diferencia del concepto de cero defectos en la industria de la manufactura, pocas veces los desarrolladores de software generan productos libres de errores, incluso los desarrolladores con amplia experiencia. Según Humphrey (2006), esto se debe principalmente a diseños inadecuados, ya que en muy pocas ocasiones se les dedica el tiempo y el esfuerzo para generar diseños detallados y exhaustivos, lo que provoca que inevitablemente se cometan errores sutiles y difíciles de encontrar. Una forma de guiar y controlar la calidad del diseño es definir métodos y estándares para el equipo de desarrollo. Estas normas del diseño deben ser aprendidas a través de un programa de entrenamiento para asegurarse que se entienden, se apliquen y se mantienen. Esto debe aplicar tanto para desarrollos grandes como pequeños.

Marco de referencia del diseño.
Recuperado de Humphrey, W. (2005). PSP(SM): A Self-Improvement Process for Software Engineers. EEUU: Pearson Education.
El proceso de diseño que todo profesional del software debe seguir, empieza por revisar el propósito del producto, recopilar información relevante, generar un diseño de alto nivel y finalmente, completar los detalles. Según Humphrey (2005), estos pasos no son tareas secuenciales independientes, sino que frecuentemente son actividades iterativas que se realizan en paralelo. Estos pasos deben seguirse independientemente del tamaño del software, en todo caso cualquier producto está conformado de pequeños programas, que si todos pasaron por este método de diseño, mejorarán sin lugar a duda el producto final.
Inspecciones
Las inspecciones del producto del software inician una vez que el desarrollador ha realizado algunas pruebas y removido errores obvios. Esta aclaración es importante, dado de que algunos desarrolladores desean omitir estas primeras pruebas confiando que todos los errores serán detectados por el área de pruebas, provocando alargar el periodo de pruebas, además que el área de testing puede pasar por alto errores que pueden llegar al cliente.
Las inspecciones deben realizarse por una persona independiente organizacionalmente del desarrollador (normalmente es el gerente de calidad) y debe cerciorarse que el desarrollador haya llevado a cabo el estándar de diseño de la organización, comprobar que haya realizado una revisión del diseño, registrado los defectos detectados en la fase de codificación, se haya apegado al estándar de codificación y documentación.
Perfiles de calidad y criterios de calidad
El perfil de calidad permite visualizar de una manera gráfica el cumplimiento de cinco criterios de calidad que son los siguientes:
- Tiempo: Diseño / Código: el tiempo destinado a realizar un diseño detallado es igual o mayor que el tiempo de codificación.
Tiempo: Diseño / Código = Tiempo del diseño / Tiempo del código
- Tiempo de revisión del código: el tiempo que se utilizó en la revisión del código es igual o mayor que el 50% del tiempo destinado a codificar el programa.
Tiempo de revisión del código = 2*(tiempo de revisión del código / tiempo de codificación)
- Defectos / KLOC (Compilado): La cantidad de defectos detectados al compilar son menores que una tasa de 10 defectos/KLOC.
Defectos / KLOC (Compilado) = 20*(10 + defectos por cada mil líneas de código al compilarse)
- Defectos / KLOC (Pruebas unitarias): los defectos detectados en las pruebas unitarias son menores que 5 defectos/KLOC.
Defectos / KLOC (Pruebas unitarias) = 10*(5 + defectos por cada mil líneas de código al realizarse las pruebas unitarias)
- Tiempo de revisión del diseño: el tiempo destinado a realizar una revisión del diseño detallado es igual o mayor al 50% del tiempo que se utilizó en realizar el diseño detallado.
Tiempo de revisión del código = 2*(tiempo de revisión del diseño / tiempo del diseño)
Considera que en cada cálculo el resultado debe estar en un rango de 0.0 a 1.0 para poderse graficar de la siguiente forma:

Ejemplo del perfil de calidad de un programa.
Recuperado de Humphrey, W. (2006). TSP(SM) Coaching Development Teams. EEUU: Pearson Education.
Al graficar estos cinco criterios se obtiene un perfil de calidad del producto. Lo ideal es presentar una gráfica que toque la mayor cantidad de vértices del pentágono externo. Tener un buen perfil de calidad indica que es poco probable que el programa presente más defectos.
Humphrey (2005), calcula el índice de proceso de calidad (PQI: Process Quality Index) multiplicando cada uno de los valores obtenidos en la gráfica.
PQI = (calidad del diseño)*(calidad de la revisión del diseño)*(calidad de la revisión del código)*(calidad del código)*(calidad del programa)
El objetivo será acercar el valor PQI a 1.0.
En los ejemplos 5 y 6 se presentaron mayor cantidad de defectos después de realizar las pruebas unitarias.

Recuperado de Humphrey, W. (2005). PSP(SM): A Self-Improvement Process for Software Engineers. EEUU: Pearson Education.