Está en la página 1de 17

Pressman, R., Maxim, B. R. (2021). Aseguramiento de la calidad del software.

En Ingeniería de
software: un enfoque práctico ( pp. 339 - 355 ) ( 671p. )(9a ed). Ciudad de México : McGraw Hill
Interamericana. (C100522)
CAPÍTULO

ASEGURAMIENTO
DE LA CALIDAD DEL SOFTWARE 17
El enfoque de ingeniería de software descrito en este libro busca un solo objetivo: producir
software de alta calidad a tiempo. Aun así, muchos lectores se cuestionarán lo siguiente:
"¿Qué es la calidad del software?".

algoritmo genético ..................... 352 estándar ISO 9001:2015 ................. 354


aseguramiento estadístico de la calidad inferencia bayesiana .................... 351
del software .......................... 347 metas ................................ 346
confiabilidad del software ...............350 plan de ACS ........................... 354
elementos de aseguramiento de la seguridad del software .................. 352
calidad del software .................... 341 Seis Sigma ............................ 349
enfoques formales ..................... 347 tareas de ACS ......................... 343

ANÁLISIS BREVE

¿Qué es? No basta con decir que la calidad del soft- ware (ACS), es importante definir el significado en
ware es importante; es necesario (1) definir de manera diversos niveles de abstracción. Una vez que en-
explícita lo que queremos decir con "calidad del tienda lo que es la calidad, un equipo de software
software", (2) crear un conjunto de actividades que debe identificar un conjunto de actividades de ACS
ayuden a garantizar que todo producto de trabajo de que filtren los errores de los productos de trabajo an-
ingeniería de software exhiba una alta calidad, (3) rea- tes de aprobarlos.
lizar actividades de control y aseguramiento de cali- ¿Qué es el producto de trabajo? Se crea un plan de
dad en todos los proyectos de software, (4) usar aseguramiento de la calidad del software para definir
métricas para desarrollar estrategias que mejoren la estrategia de ACS del equipo de software. Durante
nuestro proceso del software y, como consecuencia, el modelado y la codificación, el producto de trabajo
la calidad del producto final. de ACS es el resultado de las revisiones técnicas (ca-
¿Quién lo hace? Todos los involucrados en el proceso pítulo 16). Durante las pruebas (capítulos 19 al 21), se
de ingeniería de software son responsables de la producen los planes y procedimientos de prueba.
calidad. También pueden generarse otros productos de tra-
¿Por qué es importante? Podemos hacerlo bien, o bajo asociados con la mejora del proceso.
hacerlo de nuevo. Si un equipo de software hace hin- ¿Cómo me aseguro de que lo hice bien? ¡Encuen-
capié en la calidad en todas las actividades de inge- tre los errores antes de que se conviertan en defec-
niería de software, reduce la cantidad de reelaboración tos! Esto es, trabaje para mejorar su eficiencia en la
que puede existir. Esto da como resultado menores eliminación de defectos (capítulo 23), reduciendo por
costos y, lo que es más importante, una mejora en el lo tanto la cantidad de reelaboración que su equipo
tiempo de comercialización. de software debe realizar.
¿Cuáles son los pasos? Antes de poder iniciar las ac-
tividades de aseguramiento de la calidad del soft-

339
340 PARTE TRES CALIDAD Y SEGURrDAD

En su libro de referencia sobre la calidad, Philip Crosby [Cro79] da una respuesta


irónica a esta pregunta:
El problema de la gestión de la calidad no es que las personas no estén enteradas de
ello. El problema es lo que creen saber...
En este aspecto, la calidad tiene mucho en común con el sexo. Todos quieren hacerlo
(bajo ciertas condiciones, desde luego). Todos creen que lo entienden (aun cuando no
quisieran explicarlo). Todos creen que la ejecución solo es cuestión de seguir las incli-
naciones naturales (después de todo, logramos avanzar de alguna forma). Y, desde luego,
la mayoría de las personas creen que los problemas en estas áreas los provocan otras
personas (si tan solo se tomaran el tiempo para hacer bien las cosas).

Sin duda, la calidad es un concepto desafiante, que analizamos con cierto detalle en el ca-
pítulo 15. 1
Algunos desarrolladores de software siguen creyendo que la calidad es algo por lo que
comenzamos a preocuparnos después de haber generado el código. ¡Nada podría estar más
lejos de la verdad! El aseguramiento de la calidad del software (que a menudo se conoce
como gestión de calidad) es una actividad sombrilla (capítulo 2) que se aplica en todo el
proceso del software.
El aseguramiento de la calidad del software (ACS) comprende (figura 17.1): (1) un
proceso de ACS, (2) tareas específicas de aseguramiento y control de la calidad (inclui-
das las revisiones técnicas y una estrategia de pruebas multinivel), (3) una práctica efectiva
de ingeniería de software (métodos y herramientas), ( 4) el control de todos los productos de
trabajo de software y los cambios realizados en ellos (capítulo 22), (5) un procedimiento
para asegurar el cumplimiento con los estándares de desarrollo de software (cuando se
aplique) y (6) mecanismos de medición y generación de informes.
En este capítulo nos enfocamos en los aspectos de gestión y las actividades específicas
del proceso que permiten a una organización de software asegurar que haga "las cosas co-
rrectas en el momento adecuado y de la forma apropiada".

•Uh'M·1D•
Aseguramiento
de la calidad del Revisiones Métodos y
software y pruebas herramientas

Control Auditorías y
del cambio cumplimiento

Definir Medición y
generación
proceso
de informes

Si aún no ha leído el capítulo 15, debería hacerlo ahora.


CAPÍTULO 17 ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE 341

17.1 ASPECTOS DE FONDO

El control y aseguramiento de la calidad son actividades esenciales para cualquier negocio


que genere productos que otros vayan a usar. Antes del siglo xx, el control de calidad era
responsabilidad exclusiva del artesano que creaba un producto. Al pasar el tiempo y cuando
las técnicas de producción en masa se volvieron comunes, el control de calidad se convirtió
en una actividad que desempeñaban otras personas distintas a las que creaban el producto.
La primera función formal de aseguramiento y control de calidad se introdujo en los
Laboratorios Bell en 1916 y se esparció con rapidez por el mundo de la manufactura. Durante
la década de 1940, se sugirieron enfoques más formales para el control de calidad. Estos
se basaban en la medición y la mejora continua del proceso [Dem86] como elementos clave
de gestión de la calidad.
La historia del aseguramiento de la calidad en el desarrollo de software es similar a la
historia de la calidad en la manufactura de hardware. Durante los primeros días de la compu-
tación (las décadas de 1950 y 1960), la calidad era responsabilidad exclusiva del programador.
Los estándares de aseguramiento de la calidad en el software se introdujeron en el desarrollo
de software de contratos militares durante la década de 1970 y se extendieron con rapidez
en el desarrollo de software en el mundo comercial [IEE 17]. Si extendemos la definición
que presentamos antes, el aseguramiento de la calidad del software es un "patrón planeado
y sistemático de acciones" [SchOl] que se requieren para asegurar una alta calidad en el
software. El alcance de la responsabilidad del aseguramiento de la calidad podría caracte-
rizarse mejor si parafraseamos un comercial de automóviles que alguna vez fuera popular:
"La calidad es el trabajo número 1". La consecuencia para el software es que muchas cir-
cunscripciones distintas son responsables del aseguramiento de la calidad: ingenieros de
software, gerentes de proyectos, clientes, vendedores y los individuos que sirven dentro de un
grupo de ACS.
El grupo de ACS sirve como representante interno del cliente. Esto es, las personas
que realizan el ACS deben analizar el software desde el punto de vista del cliente. ¿Cumple
el software de manera adecuada con los factores de calidad señalados en el capítulo 15?
¿Se realizaron las prácticas de ingeniería de software de acuerdo con los estándares prees-
tablecidos? ¿Desempeñaron las disciplinas técnicas correctamente sus roles como parte de
la actividad de ACS? El grupo de ACS intenta responder a estas y otras preguntas para
asegurar que se mantenga la calidad del software.

17.2 ELEMENTOS DE ASEGURAMIENTO DE


LA CALIDAD DEL SOFTWARE

El aseguramiento de la calidad del software incorpora un amplio rango de intereses y acti-


vidades que se enfocan en la gestión de la calidad; se pueden resumir de la siguiente forma
[Hor03]:

Estándares. El IEEE, la ISO y otras organizaciones de estándares han producido


una amplia gama de estándares para ingeniería de software y documentos relaciona-
dos. Estos pueden ser adoptados en forma voluntaria por una organización de inge-
niería de software o impuestos por el cliente u otras partes interesadas. El trabajo del
ACS es asegurar que se sigan los estándares que se adoptaron y que todos los produc-
tos de trabajo se conformen a ellos.

Revisiones y auditorias. Las revisiones técnicas son una actividad de control de


calidad realizada por los ingenieros de software para otros ingenieros de software
342 PARTE TRES CALIDAD Y SEGURIDAD

(capítulo 16). Su intención es descubrir errores. Las auditorías son un tipo de revisión
que el personal de ACS realiza con el propósito de asegurar que se sigan los linea-
mientos de calidad para el trabajo de ingeniería de software. Por ejemplo, podría reali-
zarse una auditoría del proceso de revisión para asegurar que las revisiones se realicen
de tal forma que exista la máxima probabilidad de descubrir errores.

Prueba. La prueba del software (capítulos 19 al 21) es una función de control de


calidad con una meta principal: encontrar errores. El trabajo del ACS es asegurar que
la prueba se planee de manera apropiada y se lleve a cabo en forma eficiente, de modo
que tenga la mayor probabilidad de lograr su meta principal.

Recolección y análisis de errores/defectos. La única forma de mejorar es medir nues-


tro progreso. El ACS recolecta y analiza los datos de errores y defectos para entender
mejor cómo se cometen los errores y qué actividades de ingeniería de software son
más adecuadas para eliminarlos.

Gestión del cambio. El cambio es uno de los aspectos más molestos de cualquier
proyecto de software. Si no se gestiona de manera adecuada, puede provocar confusión
y esto casi siempre conduce a una mala calidad. El ACS se asegura de que se hayan
instituido las prácticas de gestión del cambio adecuadas (capítulo 22).

Educación. Toda organización de software desea mejorar sus prácticas de ingeniería


de software. Un colaborador clave para la mejora es la educación de los ingenieros de
software, sus gerentes y otras partes interesadas. La organización de ACS toma la
iniciativa en la mejora del proceso de software (capítulo 28); además es un defensor
y patrocinador clave de programas educativos.

Gestión de distribuidores. Se adquieren tres categorías de software de los distribui-


dores externos: paquetes envueltos en una caja (por ejemplo, Microsoft Office ), una
caja a la medida [Hor03] que provee una estructura esquelética básica, adaptada a
las necesidades de un comprador, y software por contrato que se diseña y construye
a la medida, a partir de las especificaciones que proporciona la organización cliente.
El trabajo de la organización de ACS es asegurar que se produzca software de alta
calidad al sugerir prácticas de calidad específicas que el distribuidor debe seguir
(cuando sea posible), e incorporar cláusulas de calidad como parte de cualquier
contrato con un distribuidor externo.

Gestión de la seguridad. Con el incremento de la ciberdelincuencia y las nuevas


regulaciones gubernamentales con respecto a la privacidad, toda organización de
software debe instituir políticas que protejan datos en todos los niveles, establecer
protección mediante cortafuegos para aplicaciones móviles y asegurar que el software
no se haya alterado desde el interior. El ACS asegura que se utilicen el proceso y la
tecnología apropiados para lograr seguridad en el software (capítulo 18).

Seguridad. Puesto que el software es casi siempre un componente fundamental


de los sistemas clasificados para humanos (como las aplicaciones automotrices o de
aeronáutica), el impacto de los defectos ocultos puede ser catastrófico. El ACS puede
ser responsable de evaluar el impacto de la falla del software y de iniciar los pasos
requeridos para reducir el riesgo.

Gestión del riesgo. Aunque el análisis y la mitigación del riesgo (capítulo 26) son
del interés de los ingenieros de software, la organización de ACS se asegura de que
las actividades de gestión del riesgo se realicen de manera apropiada y que se hayan
establecido planes de contingencia relacionados con el riesgo.
CAPÍTULO 17 AS E G U RAMIENTO DE LA CALIDAD DEL SOFTWARE 343

Además de cada uno de estos intereses y actividades, el ACS trabaja para asegurar que las
actividades de soporte del software (como mantenimiento, líneas de ayuda, documentación
y manuales) se realicen o produzcan con calidad como preocupación dominante.

17.3 PROCESOS DE ACS Y CARACTERÍSTICAS


DEL PRODUCTO
Ahora que comenzamos un análisis del aseguramiento de la calidad del software, es impor-
tante señalar que los procedimientos y enfoques de ACS que funcionan en un entorno de
software tal vez no funcionen tan bien en otro. Incluso dentro de una empresa que adopta
un enfoque consistente 2 en cuanto a la ingeniería de software, los distintos productos de
software pueden exhibir diferentes niveles de calidad [Par 11].
La solución a este dilema es entender los requerimientos de calidad específicos para
un producto de software, para luego seleccionar el proceso junto con las acciones y tareas
de ACS específicas que se usarán para cumplir esos requerimientos. Los estándares CMMI
e ISO 9000 del Instituto de Ingeniería de Software son los marcos de trabajo de procesos
que se usan con más frecuencia. Cada uno propone "una sintaxis y semántica" [Par 11] que
conduzca a la implementación de prácticas de ingeniería de software que mejoren la calidad
del producto. En vez de instanciar uno de los marcos de trabajo en su totalidad, una orga-
nización de software puede "unificar" los dos modelos al seleccionar elementos de ambos
marcos de trabajo y asociarlos a los requerimientos de calidad de un producto individual.

17.4 TAREAS METAS Y MÉTRICAS DE ACS


El aseguramiento de la calidad del software se compone de varias tareas asociadas en dos
apartados diferentes: los ingenieros de software que realizan el trabajo técnico y un grupo
de ACS que tiene la responsabilidad de la planeación, la supervisión, el mantenimiento de
registros, el análisis y la generación de informes con respecto al aseguramiento de calidad.
La mayoría del aseguramiento de la calidad del software moderno es por lo general
orientado a datos, como se muestra en la figura 17.2. Las partes interesadas en el producto
definen metas y medidas de calidad, se identifican las áreas de problema, se miden los in-
dicadores y se determina si se requieren o no cambios en el proceso. Los ingenieros de
software abordan la calidad (y realizan actividades de control de calidad) mediante la
aplicación de mediciones y métodos técnicos sólidos, la realización de revisiones técnicas
y la ejecución de pruebas de software bien planeadas.

17.4.1 Tareas de ACS


La instrucción del grupo de ACS es ayudar al equipo de software a lograr un producto final de
alta calidad. El Instituto de Ingeniería de Software recomienda un conjunto de actividades
de ACS que aborden la planeación, supervisión, mantenimiento de registros, análisis y
generación de informes de aseguramiento de calidad. Estas actividades las realiza (o facilita)
un grupo de ACS independiente que:

Prepara un plan de ACS para un proyecto. El plan se desarrolla como parte de la


planeación del proyecto y todas las partes interesadas lo revisan. Además, rige las

2 Por ejemplo, el proceso y las prácticas definidos por CMMI (capítulo 28 ).


344 PARTE TRES CALIDAD Y SEGURIDAD

•Ui'M·1t1 •
Aseguramiento de la Adoptar
medidas
calidad del software
para mejorar

un área de
problema

Analizar
la evaluación Proceso de
aseguramiento
de la calidad
del software Identificar
indicadores

Comparar
resultados

criterios

actividades de aseguramiento de la calidad realizadas por el equipo de ingeniería de


software y el grupo de ACS. El plan identifica las evaluaciones que se llevarán a cabo,
las auditorías y revisiones a realizar, los estándares aplicables al proyecto, los proce-
dimientos para generación de informes y seguimiento de errores, los productos de
trabajo generados por el grupo de ACS y la retroalimentación que se proporcionará
al equipo de software.

Participa en el desarrollo de la descripción del proceso de software del proyecto. El


equipo de software selecciona un proceso para el trabajo que se va a realizar. El grupo
de ACS revisa que la descripción del proceso cumpla con la política de la organización,
los estándares de software internos, los estándares impuestos de manera externa (por
ejemplo, IS0-9001) y otras partes del plan del proyecto de software.

Revisa las actividades de ingeniería de software para verificar el cumplimiento con el


proceso de software definido. El grupo de SQA identifica, documenta y rastrea las
desviaciones del proceso y comprueba que se hayan realizado las correcciones.

Audita los productos de trabajo de software designados para verificar el cumplimiento


con los que se definen como parte del proceso de software. El grupo de ACS revisa
los productos de trabajo seleccionados; identifica, documenta y rastrea las desviaciones;
verifica que se hayan realizado las correcciones y reporta de manera periódica los
resultados de su trabajo al gerente del proyecto.

Se asegura de que las desviaciones en el trabajo del software y los productos de trabajo
se documenten y manipulen de acuerdo con un procedimiento documentado. Pueden
encontrarse desviaciones en el plan del proyecto, la descripción del proceso, los están-
dares aplicables o los productos de trabajo de ingeniería de software.

Registra cualquier incumplimiento y lo reporta a la gerencia de nivel superior. Los ele-


mentos que no cumplan se rastrean hasta resolverse.

Además de estas actividades, el grupo de ACS coordina el control y la gestión del cambio
(capítulo 22); también ayuda a recolectar y analizar las métricas de software.
CAPÍTULO 17 ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE 345

CASASEGURA

Aseguramiento de la calidad del software


El escenario: Oficina de Doug Miller, Jamie: En realidad no quiero que me evalúen con ba-
al comenzar el proyecto de software se en sus resultados.
CasaSegura. Doug: No te preocupes. Las auditorías se enfocan en
Los participantes: Doug Miller, gerente del equipo el cumplimiento de nuestros productos de trabajo con
de ingeniería de software de CasaSegura y otros los requerimientos y las actividades del proceso que
miembros del equipo de ingeniería del producto de definimos. Solo usaremos los resultados de la audito-
software. ría para tratar de mejorar nuestros procesos, así como
La conversación: nuestros productos de software.
Doug: ¿Cómo van las cosas con las revisiones Vinod: Pues creo que se va a ocupar más de nuestro
informales? tiempo.
Jamie: Estamos realizando revisiones informales de Doug: A la larga nos ahorrará tiempo cuando encon-
los elementos críticos del proyecto en pares a medida tremos los defectos lo antes posible. Además, cuesta
que codificamos, pero antes de la prueba. Va más rá- menos corregir los defectos si se detectan de manera
pido de lo que pensaba. anticipada.
Doug: Eso es bueno, pero quiero que el grupo de Jamie: Suena bien entonces.
ACS de Bridget Thorton realice auditorías de nuestros Doug: También es importante identificar las activida-
productos de trabajo para asegurar que sigamos nues- des en donde se introdujeron los defectos y agregar
tros procesos y cumplamos con nuestras metas de tareas de revisión para detectarlos en el futuro.
calidad.
Vinod: Eso nos ayudará a determinar si estamos
Vinod: ¿No están haciendo ya la mayor parte de las
muestreando con el suficiente cuidado con nuestras
pruebas?
actividades de revisión.
Doug: Es cierto. Pero el aseguramiento de la calidad
Doug: Creo que las actividades de ACS nos converti-
(AC) es más que probar. Necesitamos estar seguros de
rán en un mejor equipo a la larga.
que nuestros documentos evolucionan junto con nues-
tro código y de no introducir errores al integrar nuevos
componentes.

17.4.2 Metas, atributos y métricas


Las actividades de ACS descritas en la sección anterior se realizan para lograr un conjunto
de metas pragmáticas:

Calidad de los requerimientos. La exactitud, integridad y consistencia del modelo de


requerimientos tendrá una sólida influencia sobre la calidad de todos los productos
de trabajo posteriores. El ACS debe asegurarse de que el equipo de software haya
revisado de manera apropiada el modelo de requerimientos para lograr un alto nivel
de calidad.

Calidad del diseño. El equipo de software debe evaluar cada elemento del modelo
de diseño para asegurarse de que exhiba una alta calidad y que el diseño en sí se
conforme a los requerimientos. El ACS busca atributos del diseño que sean indica-
dores de calidad.
Calidad del código. El código fuente y los productos de trabajo relacionados (por
ejemplo, otra información descriptiva) deben conformarse a los estándares de codi-
ficación locales y exhibir características que faciliten la capacidad de mantenimiento.
El ACS debe aislar esos atributos que permitan un análisis razonable de la calidad
del código.
346 PARTE TRES CALl DA D Y SE GURIDAD

Efectividad del control de calidad. Un equipo de software debe aplicar los recursos
limitados de tal forma que tenga la mayor probabilidad de obtener un resultado de
alta calidad. El ACS analiza la asignación de recursos para las revisiones y pruebas,
de modo que se pueda evaluar si se están asignando de la manera más efectiva.

La tabla 17.1 (adaptada de [Hya96]) identifica los atributos que son indicadores de la exis-
tencia de la calidad para cada una de las metas antes descritas. También se muestran las
métricas que se pueden usar para indicar la fuerza relativa de un atributo.

•t.Hf.1 t&•
Metas, atributos y métricas Meta Atributo Métrica
de la calidad del software Calidad del Ambigüedad Número de modificadores ambiguos (como
Fuente: Adaptado de Hyatt, requerimiento varios, grande, amigable para el humano)
L. y Rosenberg, L., "A
Integridad Número de TBA, TBD
Software Quality Model and
Metrics for Identifying Facilidad de entendimiento Número de secciones/subsecciones
Project Risks and Assessing Volatilidad Número de cambios por requerimiento
Software Quality", NASA
SATC, 1996. Tiempo (por actividad) cuando se solicita
un cambio
Facilidad de rastreo Número de requerimientos que no se
pueden rastrear hasta el diseño/código
Claridad del modelo Número de modelos de UML
Número de páginas descriptivas por
modelo
Número de errores de UML
Calidad del diseño Integridad de arquitectura Existencia de un modelo arquitectónico
Integridad del componente Número de componentes que se rastrean
hasta el modelo de arquitectura
Complejidad del diseño procedimental
Complejidad de la interfaz Número promedio de selecciones para
llegar a una función o contenido típicos
Adecuación del esquema
Patrones Número de patrones utilizados
Calidad del código Complej idad Complejidad ciclomática
Facilidad de mantenimiento Factores de diseño
Facilidad de entendimiento Porcentaje de comentarios internos
Convenciones de nomenclatura variables
Porcentaje de componentes reutilizados
Reutilización Porcentaje reutilizado del componente
Documentación Índice de legibilidad
Efectividad del CC Asignación de recursos Porcentaje en horas de personal por
actividad
Tasa de terminación Tiempo de terminación actual vs.
presupuestado
Efectividad de la revisión Vea las métricas de revisión
Prueba de efectividad Número de errores encontrados y su
criticidad
Esfuerzo requerido para corregir un error
Origen del error
CAPÍTULO 17 ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE 347

17.5 ENFO UES FORMALES PARA EL ACS

En las secciones anteriores hemos planteado que la calidad del software es trabajo de todos
y que puede lograrse mediante una práctica de ingeniería de software competente, así como a
través de la aplicación de revisiones técnicas, una estrategia de pruebas multinivel, un mejor
control de los productos de trabajo de software y los cambios que se realizan en ellos, y la
aplicación de estándares y marcos de trabajo del proceso de ingeniería de software aceptados.
Además, la calidad puede definirse en términos de una amplia gama de atributos de calidad y
medirse (de manera indirecta) mediante el uso de una variedad de indices y métricas.
En las últimas tres décadas, un pequeño (pero expresivo) segmento de la comunidad
de ingeniería de software ha argumentado que se requiere un enfoque más formal para el
aseguramiento de la calidad del software. Es posible decir que un programa de computadora
es un objeto matemático. Pueden definirse una sintaxis y una semántica estricta para cada
lenguaje de programación; además está disponible un enfoque riguroso para la especificación
de los requerimientos del software. Si el modelo de requerimientos (especificación) y el
lenguaje de programación pueden representarse de una manera rigurosa, debería ser posible
aplicar una prueba de exactitud matemática para demostrar que un programa se conforma
exactamente a sus especificaciones.
Los intentos por demostrar que los programas son correctos no son nuevos. Dijkstra
[Dij76a] y Linger, Mills y Witt [Lin79], entre otros, defendieron las pruebas de exactitud
de los programas y las relacionaron con el uso de conceptos de programación estructurada.
Aunque los métodos formales son interesantes para algunos investigadores de ingeniería de
software, los desarrolladores comerciales raras veces usaron métodos formales en 2018.

17.6 ASEGURAMIENTO ESTADÍSTICO DE LA CALIDAD


DEL SOFTWARE

El aseguramiento estadístico de la calidad refleja una tendencia cada vez mayor en la indus-
tria para volverse más cuantitativo en cuanto a la calidad. Para el software, el aseguramiento
estadístico de la calidad implica los siguientes pasos:

l. Se recolecta y clasifica información sobre los errores y defectos de software.


2. Se hace un intento por rastrear cada error y defecto hasta su causa subyacente (por
ejemplo, que no se conforma a las especificaciones, error en el diseño, violación de
estándares, comunicación deficiente con el cliente).
3. Mediante el uso del principio de Pareto (el 80% de los defectos puede rastrearse hasta
el 20% de todas las posibles causas), aislar el 20% (las poco esenciales).
4. Una vez identificadas las causas esenciales, pasar a corregir los problemas que provo-
caron los errores y defectos.

Este concepto relativamente simple representa un paso importante en cuanto a la creación


de un proceso de software adaptativo, en el que se realizan cambios para mejorar esos
elementos del proceso que introducen errores.

17.6.1 Un ejemplo genérico


Para ilustrar el uso de métodos estadísticos para el trabajo de ingeniería de software, suponga
que una organización de ingeniería de software recolecta información sobre errores y defectos
348 PARTE TRES CALIDAD Y SEGURIDAD

por un periodo de 1 año. Algunos de los errores se descubren a medida que se desarrolla el
software. Otros defectos se encuentran una vez que el software se libera a sus usuarios finales.
Aunque se descubren cientos de problemas distintos, todos pueden rastrearse de una
(o más) de las siguientes causas:
• Especificaciones incompletas o erróneas (EIE)
• Mala interpretación de la comunicación con el cliente (MCC)
• Desviación intencional de las especificaciones (DIE)
• Violación de los estándares de programación (VES)
• Error en la representación de los datos (ERD)
• Interfaz de componentes inconsistente (ICI)
• Error en la lógica de diseño (ELD)
• Prueba incompleta o errónea (PIE)
• Documentación imprecisa o incompleta (DII)
• Error en la traducción a lenguaje de programación del diseño (TLP)
• Interfaz humano/computadora (IHC) ambigua o inconsistente
• Misceláneos (MIS)
Para aplicar el ACS estadístico, se crea una tabla (vea la tabla 17.2) que indica que EIE,
MCC y ERD son las causas esenciales que representan el 53 % de todos los errores. Sin
embargo, es importante señalar que EIE, ERD, TLP y ELD se seleccionarían como las
causas esenciales si solo se consideraran los errores graves. Una vez determinadas las causas
esenciales, la organización de ingeniería de software puede comenzar la acción correctiva.
Por ejemplo, para corregir las causas tipo MCC podríamos implementar técnicas de reco-
pilación de requerimientos (capítulo 7) para mejorar la calidad de la comunicación con el
cliente y las especificaciones. Para mejorar las causas tipo ERD, podríamos adquirir herra-
mientas de modelado de datos y realizar revisiones de diseño de datos más estrictas.

•r.Hf.'ff•
Recolección de datos Total Graves Moderados Menores
para el ACS estadístico Error Núm. % Núm. % Núm. % Núm. %

EIE 205 22 34 27 68 18 103 24


MCC 156 17 12 9 68 18 76 17
DIE 48 5 24 6 23 5
VES 25 3 o o 15 4 10 2
ERO 130 14 26 20 68 18 36 8
ICI 58 6 9 7 18 5 31 7
ELD 45 5 14 11 12 3 19 4
PIE 95 10 12 9 35 9 48 11
Dll 36 4 2 2 20 5 14 3
TLP 60 6 15 12 19 5 26 6
IHC 28 3 3 2 17 4 8 2
MIS 56 6 o o 15 4 41 9
Totales 942 100 128 100 379 100 435 100
CAPÍTULO 17 ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE 349

Es importante señalar que la acción correctiva se enfoca principalmente en las causas


esenciales. A medida que se corrigen las causas esenciales, nuevos candidatos pasan a la
parte superior de la pila.
Las técnicas estadísticas de aseguramiento de la calidad para el software han demostrado
que aportan una mejora considerable en la calidad (por ejemplo, [Ryall], [Art97]). En
algunos casos, las organizaciones de software han logrado una reducción del 50% al año
en defectos después de aplicar estas técnicas.
La aplicación del ACS estadístico y el principio de Pareto pueden resumirse en un solo
enunciado: Invierte tu tiempo enfocándote en lo que realmente importa, pero ¡primero asegúrate
de entender lo que realmente importa!

17.6.2 Seis Sigma para la ingeniería de software


Seis Sigma (Six Sigma) es la estrategia que más se utiliza en el aseguramiento estadístico
de la calidad en la industria actualmente. Popularizada en un principio por Motorola en la
década de 1980, Seis Sigma "es una estrategia de gestión de negocios diseñada para mejorar
la calidad de los resultados de los procesos, al minimizar la variación y las causas de defectos
en dichos procesos. Es un subconjunto de la metodología Gestión de calidad total (TQM,
por sus siglas en inglés), con un fuerte enfoque en las aplicaciones de estadística que se
usan para reducir costos y mejorar la calidad" [Voel8]. El término Seis Sigma (Six Sigma)
se deriva de seis desviaciones estándar (3.4 instancias [defectos] por cada millón de ocu-
rrencias), lo que implica un estándar de una calidad extremadamente alto. La metodología
Seis Sigma define tres pasos básicos:

• De.finir los requerimientos del cliente, los entregables y las metas del proyecto mediante
métodos bien definidos de comunicación con el cliente.

• Medir el proceso existente y su resultado para determinar el desempeño actual de la


calidad (recolectar métricas de defectos).

• Analizar las métricas de defectos y determinar las causas esenciales.

Si está implementado un proceso de software existente, pero se requiere una mejora, Seis
Sigma sugiere dos pasos adicionales:

• Mejorar el proceso mediante la eliminación de las causas raíz de los defectos.

• Controlar el proceso para asegurar que el trabajo en el futuro no vuelva a introducir las
causas de los defectos.

Estos pasos básicos y adicionales se conocen algunas veces como el método DMAIC (definir,
medir, analizar, mejorar y controlar).
Si una organización va a desarrollar un proceso de software (en vez de mejorar un
proceso existente), los pasos básicos se aumentan de la siguiente manera:

• Diseñar el proceso para (1) evitar las causas raíz de los defectos y (2) cumplir los re-
querimientos del cliente.

• Verificar que el modelo del proceso realmente evite los defectos y cumpla con los re-
querimientos del cliente.

A esta variación se le conoce comúnmente como el método DMADV (definir, medir, ana-
lizar, diseñar y verificar).
Es mejor dejar un análisis detallado de Seis Sigma a los recursos dedicados a este tema.
Si le interesa obtener más información al respecto, consulte [Voel8], [Pyzl4] y [Snel8].
350 PARTE TRES CALIDAD Y SEGURIDAD

17.7 CONFIABILIDAD DEL SOFTWARE

No cabe duda de que la confiabilidad de un programa de computadora es un elemento


importante de su calidad en general. Si un programa fracasa de manera repetida y frecuente,
importa muy poco si otros factores de la calidad del software son aceptables.
A diferencia de muchos otros factores de calidad, la confiabilidad del software puede
medirse y estimarse de manera directa mediante el uso de datos históricos y de desarrollo.
La confiabilidad del software se define en términos estadísticos como "la probabilidad de
que un programa de computadora opere libre de fallas en un entorno específico por un
tiempo especificado" [Mus87]. Para ilustrarlo, se estima que el programa X tiene una con-
fiabilidad de 0.999 durante ocho horas de procesamiento transcurridas. En otras palabras,
si el programa X se ejecutara 1000 veces y requiriera un total de 8 horas de tiempo de
procesamiento transcurrido (tiempo de ejecución), es probable que opere correctamente
(sin falla) 999 veces.
Cada vez que se discute sobre la confiabilidad del software, surge una pregunta funda-
mental: ¿qué significa el término falla? En el contexto de cualquier discusión sobre la calidad
y confiabilidad del software, la falla es la falta de conformidad con los requerimientos del
software. Y aun así, incluso con esta definición, hay gradaciones. Las fallas solo pueden ser
molestas o catastróficas. Una falla puede corregirse en cuestión de segundos, mientras que
otra tal vez requiera semanas, o incluso meses para corregirla. Para complicar aún más el
asunto, la corrección de una falla puede de hecho provocar que se introduzcan otros errores
que, en última instancia, produzcan otras fallas.

17. 7.1 Medidas de confiabilidad y disponibilidad


Los primeros trabajos sobre la confiabilidad del software intentaban extrapolar las mate-
máticas de la teoría de confiabilidad del hardware a la predicción de confiabilidad del
software.
La mayoría de los modelos de confiabilidad relacionados con el hardware se basan
en las fallas debido al desgaste, en vez de las fallas debido a defectos de diseño. En el hard-
ware, las fallas debidas al desgaste físico (por ejemplo, los efectos de la temperatura, la
corrosión, los golpes) son más probables que una falla relacionada con el diseño. Por des-
gracia, lo opuesto se aplica para el software. De hecho, todas las fallas de software pueden
deberse a problemas de diseño o implementación; el desgaste (vea el capítulo 1) no es un
factor.
Se ha generado un debate continuo en cuanto a la relación entre los conceptos clave
en la confiabilidad del hardware y su aplicación en el software. Aunque aún no se ha esta-
blecido un vínculo irrefutable, vale la pena considerar unos cuantos conceptos simples que
se aplican a ambos elementos del sistema.
Si consideramos un sistema basado en computadora, una simple medida de confiabilidad
es el tiempo medio entre fallas (MTBF, por sus siglas en inglés ): 3

MTBF = MITF + MTTR

en donde los acrónimos MITF y MTTR son tiempo medio para la falla y tiempo medio para
repararse, 4 respectivamente.

3 Es importante señalar que el MTBF y las medidas relacionadas se basan en el tiempo de CPU, no en
el de un reloj de pared.
4 Aunque tal vez se requiera depuración (y correcciones relacionadas) después de una falla, en muchos
casos el software funcionará de manera apropiada después de un reinicio sin ningún otro cambio.
CAPÍTULO 17 ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE 351

Muchos investigadores argumentan que el MTBF es una medida mucho más útil que
otras métricas de software relacionadas con la calidad que se analizan en el capítulo 23.
Dicho de manera simple, un usuario final se preocupa por las fallas, no por la cuenta total
de defectos. Puesto que cada defecto contenido en un programa no tiene la misma tasa de
fallas, la cuenta total de defectos indica muy poco acerca de la confiabilidad de un sistema.
Por ejemplo, considere un programa que ha estado funcionando por 3000 horas de proce-
sador sin fallas. Muchos defectos en este programa pueden permanecer sin ser detectados
durante decenas de miles de horas antes de que los descubran. El MTBF de dichos errores
misteriosos podría ser de 30,000 o incluso de 60,000 horas de procesador. Otros defectos,
que no se hayan descubierto aún, podrían tener una tasa de fallas de 4000 o 5000 horas.
Incluso si se eliminan cada uno de los errores de la primera categoría (los que tienen un
MTBF largo), el impacto sobre la confiabilidad del software es insignificante.
Sin embargo, el MTBF puede ser problemático por dos razones: ( 1) proyecta un periodo
entre fallas, pero no nos proporciona una tasa de fallas proyectada, y (2) el MTBF puede
mal interpretarse como la vida útil promedio, aun cuando esto no es lo que implica.
Una medida alternativa de confiabilidad es la de fallas en el tiempo (FIT, por sus siglas
en inglés): una medición estadística de cuántas fallas tendrá un componente durante un
mil millones de horas de operación. Por lo tanto, 1 FIT equivale a una falla por cada mil millones
de horas de operación.
Además de una medida de confiabilidad, también debemos desarrollar una medida de
disponibilidad. La disponibilidad del software es la probabilidad de que un programa funcione
de acuerdo con los requerimientos en un punto determinado en el tiempo y se define
como:

MTTF
Disponibilidad = - - - - - - - x 100%
MTTF+MTTR

La medida de confiabilidad de MTBF es igual de sensible a MTTF y MTTR. La medida de


disponibilidad es un poco más sensible a MTTR, una medida indirecta de la facilidad
de mantenimiento del software. Desde luego que ciertos aspectos de la disponibilidad no
tienen nada que ver con la falla. Por ejemplo, la programación de tiempo de inactividad
(para funciones de soporte) provoca que el software no esté disponible. Para un análisis
detallado de las medidas de confiabilidad del software, vea [Laz 11].

17. 7.2 Uso de IA para modelar la confiabilidad


Algunos ingenieros de software ven la ciencia de datos como la aplicación de técnicas de
inteligencia artificial para resolver problemas de ingeniería de software. Una de las cosas
que intentan realizar los métodos de inteligencia artificial es proveer soluciones razonables
a problemas en donde los datos necesarios pueden estar incompletos.
La confiabilidad del software se define como la probabilidad de que este funcione sin
fallas durante un periodo especificado en un ambiente determinado. Esto significa que no
podemos saber el momento exacto en el que fallará un producto de software, ya que nunca
tendremos los datos completos necesarios para calcular la probabilidad.
Los ingenieros de software han usado técnicas estadísticas basadas en el teorema de
Bayes 5 en situaciones de toma de decisiones cuantitativas durante varios años. La inferencia

s El teorema de Bayes para probabilidades condicionales es P(A 1B) = (P(B 1A) * P(A)) / P(B). Si desea
más detalles, consulte http://www.statisticshowto.com/bayes-theorem-problems/.
352 PARTE TRES CALIDAD Y SEGURIDAD

bayesiana es un método de inferencia estadística en el que se usa el teorema de Bayes para


actualizar la probabilidad de una hipótesis (como la confiabilidad de un sistema) a medida
que haya más evidencia o información disponible. La inferencia bayesiana puede usarse
para estimar cantidades probabilísticas mediante el uso de datos históricos, incluso aunque
falte cierta información. El uso de las técnicas bayesianas ha permitido soluciones en
tiempo real a problemas de estimación de probabilidad que están más allá del razonamiento
humano [Tosl7].
En la sección 15.4.3 hablamos un poco sobre la predicción de fallas proactiva mediante
el uso de aprendizaje de máquina. Sería bueno poder predecir fallas del sistema en sprints
posteriores antes de entregar el prototipo que se desarrolla en el sprint actual. Los análisis
de datos predictivos, como un modelo de regresión en el que se involucre MTBF, se han
utilizado para estimar dónde y qué tipos de defectos podrían ocurrir en futuros prototipos
[Batl8].
Un algoritmo genético es un método de búsqueda heurístico que se usa en la inteligencia
artificial y la computación, con el fin de encontrar soluciones casi óptimas a los problemas
de búsqueda con base en la teoría de la selección natural y la biología evolutiva. Los algo-
ritmos genéticos pueden usarse para expandir los modelos de confiabilidad mediante el
descubrimiento de relaciones en los datos históricos del sistema. Estos modelos se han
utilizado para identificar componentes de software que pueden fallar en el futuro. Algunas
veces estos modelos se han creado con base en métricas estimadas de modelos de UML,
antes de escribir cualquier código [Padl7]. Este tipo de trabajo es muy importante para los
desarrolladores interesados en refactorizar productos de software o reutilizar componentes
de software en otros productos.

17. 7. 3 Seguridad del software


La seguridad del software es una actividad de aseguramiento de la calidad que se enfoca
en la identificación y evaluación de riesgos potenciales que pueden afectar al software de manera
negativa y provocar la falla de todo un sistema. Si los riesgos pueden identificarse en las
primeras etapas del proceso, pueden especificarse características de diseño de software que
eliminen o controlen los riesgos potenciales.
Se realiza un proceso de modelado y análisis como parte de la seguridad del software.
En un principio, los peligros se identifican y clasifican según su criticidad y riesgo. Por
ejemplo, algunos de los peligros asociados con un control de velocidad crucero basado
en computadora para un automóvil podrían ser: ( 1) provoca una aceleración descontrolada
que no puede detenerse, (2) no responde a la presión del pedal del freno (apagándose),
( 3) no se acciona cuando se activa el interruptor y ( 4) pierde o gana velocidad lentamente.
Una vez identificados estos peligros a nivel del sistema, se usan técnicas de análisis para
asignar la gravedad y probabilidad de ocurrencia. 6
Para ser efectivo, el software debe analizarse en el contexto del sistema completo.
Por ejemplo, un error sutil en la entrada del usuario (las personas son componentes del
sistema) puede amplificarse por una falla de software para producir datos de control que
posicionen de manera incorrecta un dispositivo mecánico. Si, y solo si, se cumple un
conjunto de condiciones ambientales externas, la posición inapropiada del dispositivo
mecánico provocará una falla desastrosa. Las técnicas [Eri 15] como el análisis de árbol
de fallas, la lógica en tiempo real y los modelos de red de Petri pueden usarse para predecir

6 Este enfoque es similar a los métodos de análisis de riesgos descritos en el capítulo 26. La principal
diferencia es el énfasis en las cuestiones de tecnología en vez de temas relacionados con el proyecto.
CAPÍTULO 17 ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE 353

la cadena de eventos que pueden provocar peligros y la probabilidad de que ocurra cada
uno de los eventos para crear la cadena.
Una vez identificados y analizados los riesgos, pueden especificarse requerimientos
relacionados con la seguridad para el software. Esto es, la especificación puede contener
una lista de eventos indeseables y el sistema deseado responde a dichos eventos. Entonces
se indica el rol del software en la gestión de eventos indeseables.
Aunque la confiabilidad y la seguridad del software están relacionadas entre sí, es im-
portante entender la sutil diferencia entre ellas. La confiabilidad del software usa el análisis
estadístico para determinar la probabilidad de que ocurra una falla de software. Sin embargo,
la ocurrencia de una falla no necesariamente produce un riesgo o accidente. La seguridad
del software estudia las formas en que las fallas provocan condiciones que puedan conducir a
un accidente. Esto es, las fallas no se consideran en un vacío, sino que se evalúan en el
contexto de un sistema completo basado en computadora y su entorno.
Un análisis detallado de la seguridad del software queda más allá del alcance de este
libro. Si le interesa obtener más información sobre la seguridad del software y aspectos
relacionadas con el sistema, consulte [Fir13], [Har12a] y [Levl2].

17.8 Los ESTÁNDARES DE CALIDAD ISO 9000 7


Un sistema de aseguramiento de la calidad puede definirse como la estructura organizacional,
las responsabilidades, los procedimientos, procesos y recursos para implementar la gestión
de la calidad [ANS87]. Los sistemas de aseguramiento de la calidad se crean para ayudar
a las organizaciones a asegurar sus productos y servicios a satisfacer las expectativas del
cliente cumpliendo con sus especificaciones. Estos sistemas cubren una amplia variedad de
actividades que abarcan toda la vida útil de un producto, incluida la planeación, el control,
la medición, la prueba y la generación de informes, además de mejorar los niveles de calidad
durante el proceso de desarrollo y manufactura. ISO 9000 describe los elementos de ase-
guramiento de la calidad en términos genéricos que pueden aplicarse a cualquier negocio,
sin importar los productos o servicios ofrecidos.
Para registrarse en uno de los modelos del sistema de aseguramiento de la calidad
contenidos en ISO 9000, auditores independientes examinan el sistema de calidad y las
operaciones de una empresa para verificar que cumplan con el estándar y tengan una ope-
ración efectiva. Si el registro tiene éxito, la empresa recibe un certificado de un organismo
de registro representado por los auditores. Las auditorías de vigilancia semestrales aseguran
el cumplimiento continuo con el estándar.
Los requerimientos delineados por ISO 9001:2015 abordan temas tales como respon-
sabilidad de gestión, sistema de calidad, revisión de contratos, control del diseño, control
de documentos y datos, identificación y rastreabilidad del producto, control del proceso,
inspección y prueba, acción correctiva y preventiva, control de los registros de calidad,
auditorías de calidad internas, capacitación, servicio y técnicas estadísticas. Para que una
organización de software se registre con ISO 9001:2015, debe establecer políticas y proce-
dimientos para lidiar con cada uno de los requerimientos antes mencionados (y de otros)
y luego debe ser capaz de demostrar que está cumpliendo con estas políticas y procedimien-
tos. Si desea más información sobre ISO 9001:2015, consulte [IS014].

1 Esta sección, escrita por Michael Stovsky, se adaptó de Fundamentals of ISO 9000, un libro de trabajo
desarrollado para Essential Software Engineering, un plan de estudios en video desarrollado por R. S.
Pressman & Associates, Inc. Se reimprimió con permiso.
354 PARTE TRES CA LIDAD Y SEGURIDAD

El estándar ISO 9001:2015 Definir mecanismos de comunicación entre las


partes interesadas.
A continuación se definen los elementos
básicos del estándar ISO 9001:2015. Puede Establecer mecanismos de revisión para el sistema
obtener información detallada sobre el estándar de la de gestión de calidad.
Organización Internacional de Normalización (www.iso.
ch) y de otras fuentes de internet (como www.praxiom. Identificar métodos de revisión y mecanismos de
com). retroalimentación .

Establecer los elementos de un sistema de gestión de Definir procedimientos de seguimiento.


calidad. Identificar los recursos de calidad, incluido el perso-
Desarrollar, implementar y mejorar el sistema. nal, la capacitación y elementos de la infraestructura.

Definir una política que haga énfasis en la impor- Establecer mecan ismos de control.
tancia del sistema. Para planeación .
Documentar el sistema de calidad. Para los requerimientos del cliente.
Describir el proceso. Para actividades técnicas (como análisis, diseño,
Producir un manual operacional. pruebas).

Desarrollar métodos para controlar (actualizar) Para monitoreo y gestión de proyectos.


los documentos. Definir métodos para reparación.
Establecer métodos para mantenimiento de Evaluar datos y métricas de calidad.
registros.
Definir el enfoque para un proceso continuo y me-
Dar soporte al control y aseguramiento de calidad.
jora de la calidad.
Promover la importancia de la calidad entre todas
las partes interesadas.

Enfocarse en la satisfacción del cliente.

Definir un plan de calidad que aborde objetivos,


responsabilidades y autoridad.

17.9 EL PLAN DE ACS


El plan de ACS provee una hoja de ruta para instituir el aseguramiento de la calidad del
software. Desarrollado por el grupo de ACS (o por el equipo de software, en caso de que
no exista un grupo de ACS), el plan sirve como plantilla para las actividades de ACS
que se instituyen para cada proyecto de software.
El IEEE [IEE 17] publicó un estándar para los planes de ACS. El estándar recomienda
una estructura que identifique: (1) el propósito y alcance del plan, (2) una descripción de
todos los productos de trabajo de ingeniería de software (como modelos, documentos,
código fuente) que estén dentro del ámbito del ACS, (3) todos los estándares y prácticas
que se apliquen durante el proceso del software, ( 4) acciones y tareas del ACS (incluidas
las revisiones y auditorías) y su colocación en todo el proceso del software, (5) las herra-
mientas y métodos que apoyen las acciones y tareas de ACS, ( 6) procedimientos de gestión
de la configuración del software (capítulo 22), (7) métodos para ensamblar, salvaguardar
y mantener todos los registros relacionados con el ACS, y (8) los roles y responsabilidades
organizacionales relativos a la calidad del producto.
CAPÍTULO 17 ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE 355

17.10 RESUMEN
El aseguramiento de la calidad del software es una actividad sombrilla de ingeniería de
software que se aplica en cada paso del proceso del software. El ACS incorpora procedi-
mientos para la aplicación efectiva de métodos y herramientas, la supervisión de actividades
de control de calidad tales como revisiones técnicas y pruebas de software, procedimientos
para la gestión del cambio, procedimientos para asegurar el cumplimiento de los estándares,
y mecanismos de medición y generación de informes.
Para realizar el aseguramiento de la calidad del software de manera correcta, es nece-
sario recolectar, evaluar y diseminar datos acerca del proceso de ingeniería de software.
El ACS estadístico ayuda a mejorar la calidad del producto y el proceso de software en sí.
Los modelos de confiabilidad del software extienden las mediciones, lo que permite extra-
polar los datos recolectados de los defectos en tasas de falla proyectadas y predicciones de
confiabilidad.
En resumen, es importante tener en cuenta las palabras de Dunn y Ullman [Dun82]:
"El aseguramiento de la calidad del software es el mapeo de los preceptos gerenciales y las
disciplinas de diseño del aseguramiento de la calidad en el espacio gerencial y tecnológico
aplicable de la ingeniería de software". La habilidad de asegurar la calidad es la medida de
una disciplina de ingeniería madura. Cuando el mapeo se completa con éxito, el resultado
es la ingeniería de software madura.

PROBLEMAS Y PUNTOS A PONDERAR


17.1. Algunas personas dicen que "el control de la variación es el corazón del control de calidad".
Puesto que cada programa creado es distinto de cualquier otro, ¿cuáles son las variaciones que bus-
camos y cómo las controlamos?
17.2. ¿Es posible evaluar la calidad del software si el cliente sigue cambiando Jo que se supone que
debe hacer?

17.3. Calidad y confiabilidad son conceptos relacionados, pero son fundamentalmente distintos en
varias formas. Comente sobre esas diferencias.
17.4. ¿Puede un programa ser correcto y de todas formas no ser confiable? Explique.
17.5. ¿Puede un programa ser correcto y de todas formas no exhibir una buena calidad? Explique.
17.6. ¿Por qué hay tensión con frecuencia entre un grupo de ingeniería de software y un grupo inde-
pendiente de aseguramiento de la calidad del software? ¿Es esto saludable?
17. 7. Le asignaron la responsabilidad de mejorar la calidad del software en su organización. ¿Qué es
lo primero que debería hacer? ¿Qué sigue después?
17.8. Además de contar errores y defectos, ¿hay otras características cuantificables del software
que impliquen calidad? ¿Cuáles son y cómo pueden medirse directamente?
17.9. El concepto de confiabilidad (tiempo medio entre fallas) MTBF está abierto a críticas. Explique
por qué.
17.10. Considere dos sistemas críticos para la seguridad que estén controlados por computadora.
Enumere al menos tres peligros para cada uno que puedan vincularse directamente con fallas de
software.

Elemento de diseño: lupa del icono Vista rápida: © Roger Pressman

También podría gustarte