Cap16 Calidad de Software

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 8

CAPITULO 16

ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE

En realidad, la calidad es un concepto difícil. Algunos desarrolladores de software todavía


creen que la calidad del software es algo por lo que hay que empezar a preocuparse una vez
generado el código.
El aseguramiento de la calidad del software (ACS) incluye lo siguiente:
1. un proceso de ACS
2. tareas específicas de aseguramiento y control de la calidad
3. prácticas eficaces de ingeniería de software (métodos y herramientas)
4. control de todos los productos del trabajo de software y de los cambios que sufren
5. un procedimiento para garantizar el cumplimiento de los estándares del desarrollo
de software (cuando sea aplicable)
6. mecanismos de medición y reporte.
El control y aseguramiento de la calidad son actividades esenciales para cualquier negocio
que genere productos que utilicen otras personas. Antes del siglo XX, el control de calidad
era responsabilidad única del artesano que elaboraba el producto
El grupo de ACS funciona como representante del cliente en el interior de la empresa. Es
decir, la gente que realiza el ACS debe ver al software desde el punto de vista del cliente.
¿El software cumple adecuadamente los factores de calidad? (CAP 14) ¿El desarrollo del
software se condujo de acuerdo con estándares preestablecidos? ¿Las disciplinas técnicas
han cumplido con sus roles como parte de la actividad de ACS? El grupo de ACS trata de
responder éstas y otras preguntas para garantizar que se mantenga la calidad del software.

ELEMENTOS DE ASEGURAMIENTO DE LA CALIDAD DEL SOFTWARE


El aseguramiento de la calidad del software incluye un rango amplio de preocupaciones y
actividades que se centran en la administración de la calidad del software. Éstas se resumen
como sigue
Estándares. El IEEE, ISO y otras organizaciones que establecen estándares han producido
una amplia variedad de ellos para ingeniería de software y documentos relacionados. El
trabajo del ACS es asegurar que los estándares que se hayan adoptado se sigan, y que todos
los productos del trabajo se apeguen a ellos.
Revisiones y auditorías. Las revisiones técnicas son una actividad del control de calidad
que realizan ingenieros de software para otros ingenieros de software. Su objetivo es
detectar errores.
Pruebas. Las pruebas del software son una función del control de calidad que tiene un
objetivo principal: detectar errores. El trabajo del ACS es garantizar que las pruebas se
planeen en forma apropiada y que se realicen con eficiencia, de modo que la probabilidad
de que logren su objetivo principal sea máxima.
Colección y análisis de los errores. La única manera de mejorar es medir cómo se está
haciendo algo. El ACS reúne y analiza errores y datos acerca de los defectos para entender
mejor cómo se cometen los errores y qué actividades de la ingeniería de software son más
apropiadas para eliminarlos.
Administración del cambio. El cambio es uno de los aspectos que más irrumpe en
cualquier proyecto de software. Si no se administra en forma adecuada, lleva a la confusión
y ésta casi siempre genera mala calidad. El ACS asegura que se hayan instituido prácticas
adecuadas de administración del cambio
Educación. Toda organización de software quiere mejorar sus prácticas de ingeniería de
software. Un contribuyente clave de la mejora es la educación de los ingenieros de
software, de sus gerentes y de otros participantes. La organización de ACS lleva el
liderazgo en la mejora del proceso de software y es clave para proponer y patrocinar
programas educativos.
Administración de los proveedores. El trabajo de la organización de ACS es garantizar
que se obtenga software de alta calidad a partir de las sugerencias de prácticas específicas
de calidad que el proveedor debe seguir (cuando sea posible) y de la incorporación de
cláusulas de calidad como parte de cualquier contrato con un proveedor externo.
Administración de la seguridad. Con el aumento de los delitos cibernéticos y de las
nuevas regulaciones gubernamentales respecto de la privacidad, toda organización de
software debe instituir políticas para proteger los datos en todos los niveles, establecer
cortafuegos de protección para las webapps y asegurar que el software no va a ser
vulnerado. El ACS garantiza que para lograr la seguridad del software, se utilicen el
proceso y la tecnología apropiados.
Seguridad. Debido a que el software casi siempre es un componente crucial de los sistemas
humanos (como aplicaciones automotrices o aeronáuticas), la consecuencia de defectos
ocultos puede ser catastrófica. El ACS es responsable de evaluar el efecto de las fallas del
software y de dar los pasos que se requieren para disminuir el riesgo.
Administración de riesgos. Aunque el análisis y la mitigación de riesgos es asunto de los
ingenieros de software, la organización del ACS garantiza que las actividades de
administración de riesgos se efectúen en forma apropiada y que se establezcan planes de
contingencia relacionados con los riesgos.
TAREAS , METAS Y MÉTRICAS DEL ACS
El aseguramiento de la calidad del software se compone de varias tareas asociadas con dos
entidades diferentes: los ingenieros de software que hacen el trabajo técnico y un grupo de
ACS que tiene la responsabilidad de planear, supervisar, registrar, analizar y hacer reportes
acerca de la calidad.
Tareas del ACS
El objetivo del grupo de ACS es auxiliar al equipo del software para lograr un producto
final de alta calidad. El Instituto de Ingeniería de Software recomienda un conjunto de
acciones de ACS que se dirigen a la planeación, supervisión, registro, análisis y elaboración
de reportes para el aseguramiento de la calidad, estas son:
Prepara el plan de ACS para un proyecto. Éste identifica las evaluaciones que se van a
realizar, las auditorías y revisiones por efectuar, los estándares aplicables al proyecto, los
procedimientos para reportar y dar seguimiento a los errores.
Participa en el desarrollo de la descripción del software del proyecto. El equipo de
software selecciona un proceso para el trabajo que se va a realizar. El grupo de ACS revisa
la descripción del proceso a fin de cumplir con la política organizacional, los estándares
internos para el software y otras partes del plan del proyecto de software.
Revisa las actividades de la ingeniería de software a fin de verificar el cumplimiento
mediante el proceso definido para el software. El grupo de ACS identifica, documenta y
da seguimiento a las desviaciones del proceso y verifica que se hayan hecho las
correcciones pertinentes.
Audita los productos del trabajo de software designados para verificar que se cumpla
con aquellos definidos como parte del proceso de software. El grupo de ACS revisa
productos del trabajo seleccionados; identifica, documenta y da seguimiento a las
desviaciones; verifica que se hayan hecho las correcciones necesarias y reporta
periódicamente los resultados de su trabajo al gerente del proyecto.
Asegura que las desviaciones en el trabajo de software y sus productos se documenten
y manejen de acuerdo con un procedimiento documentado. Las desviaciones pueden
encontrarse en el plan del proyecto, la descripción del proceso, los estándares aplicables o
los productos del trabajo de la ingeniería de software.
Registra toda falta de cumplimiento y la reporta a la alta dirección. Se da seguimiento
a los incumplimientos hasta que son resueltos.
Metas, Atributos y Métricas
Las acciones de ACS descritas en la sección anterior se realizan con objeto de alcanzar un
conjunto de metas pragmáticas:
Calidad de los requerimientos. El ACS debe garantizar que el equipo de software ha
revisado en forma apropiada el modelo de requerimientos a fin de alcanzar un alto nivel de
calidad.
Calidad del diseño. Todo elemento del modelo del diseño debe ser evaluado por el equipo
del software para asegurar que tenga alta calidad y que el diseño en sí se apegue a los
requerimientos. El ACS busca atributos del diseño que sean indicadores de la calidad.
Calidad del código. El código fuente y los productos del trabajo relacionados deben
apegarse a los estándares locales de codificación y tener características que faciliten darle
mantenimiento. El ACS debe identificar aquellos atributos que permitan hacer un análisis
razonable de la calidad del código.
Eficacia del control de calidad. Un equipo de software debe aplicar recursos limitados, en
forma tal que tenga la máxima probabilidad de lograr un resultado de alta calidad. El ACS
analiza la asignación de recursos para las revisiones y pruebas a fin de evaluar si se asignan
en la forma más eficaz

ASEGURAMIENTO ESTADÍSTICO DE LA CALIDAD DEL SOFTWARE


El aseguramiento estadístico de la calidad del software refleja una tendencia creciente en la
industria para que se vuelva más cuantitativo respecto de la calidad. Para el software, el
aseguramiento estadístico de la calidad implica los pasos siguientes:
1. Se recaba y clasifica la información acerca de errores y defectos del software.
2. Se hace un intento por rastrear cada error y defecto hasta sus primeras causas (por
ejemplo, no conformidad con las especificaciones, error de diseño, violación de los
estándares, mala comunicación con el cliente, etc.).
3. Con el uso del Principio de Pareto (80 por ciento de los defectos se debe a 20 por
ciento de todas las causas posibles), se identifica 20 por ciento de las causas de
errores y defectos (las pocas vitales).
4. Una vez identificadas las pocas causas vitales, se corrigen los problemas que han
dado origen a los errores y defectos.
Ejemplo general
A fin de ilustrar el uso de los métodos estadísticos para el trabajo de ingeniería de software,
suponga que una organización de ingeniería de software recaba información sobre los
errores y defectos cometidos en un periodo de un año. Algunos de dichos errores se
descubren a medida que se desarrolla el software. Otros (defectos) se encuentran después
de haber liberado el software a sus usuarios finales. Aunque se descubren cientos de
problemas diferentes, todos pueden rastrearse hasta una (o más) de las causas siguientes:
• Especificaciones erróneas o incompletas (EEI)
• 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 (VEP)
• Error en la representación de los datos (ERD)
• Interfaz componente inconsistente (ICI)
• Error en el diseño lógico (EDL)
• Pruebas incompletas o erróneas (PIE)
• Documentación inexacta o incompleta (DII)
• Error en la traducción del lenguaje de programación del diseño (LPD)
• Interfaz humano/computadora ambigua o inconsistente (IHC)
• Varios (V)

CONFIABILIDAD DEL SOFTWARE


No hay duda de que la confiabilidad de un programa de cómputo es un elemento importante
de su calidad general. Si un programa falla repetida y frecuentemente en su desempeño,
importa poco si otros factores de la calidad del software son aceptables. La confiabilidad
del software, a diferencia de muchos otros factores de la calidad, se mide y estima
directamente mediante el uso de datos históricos del desarrollo. La confiabilidad del
software se define en términos estadísticos como “la probabilidad que tiene un programa de
cómputo de operar sin fallas en un ambiente específico por un tiempo específico”
Siempre que se trate de la confiabilidad del software, surge una pregunta crucial: ¿qué
significa el término falla? En el contexto de cualquier análisis de la calidad y confiabilidad
del software, la falla significa la falta de conformidad con los requerimientos del software.
Pero, incluso con esta definición, hay gradaciones. Las fallas pueden ser leves o
catastróficas. Una falla podría corregirse en segundos, mientras que otra tal vez requiera de
varias semanas o meses de trabajo para ser corregida. Para complicar más el asunto, la
corrección de una falla quizá dé como resultado la introducción de otros errores que a su
vez originen otras fallas

Mediciones de la confiabilidad y disponibilidad


Muchos investigadores afirman que el TMEF es una medición más útil que otras
relacionadas con la calidad del software. En pocas palabras, a un usuario final le preocupan
las fallas, no la cuenta total de defectos. Como 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 del sistema.
Sin embargo, el TMEF puede ser problemático por dos razones: 1) proyecta un tiempo
entre fallas, pero no da una tasa de fallas proyectada y 2) puede interpretarse mal, como la
vida promedio, cuando no es esto lo que implica.
Una medición alternativa de confiabilidad es la de las fallas en el tiempo (FET): medición
estadística de cuántas fallas tendrá un componente en mil millones de horas de operación.
Por tanto, 1 FET es equivalente a una falla en cada mil millones de horas de operación.

Seguridad del software


La seguridad del software es una actividad del aseguramiento del software que se centra en
la identificación y evaluación de los peligros potenciales que podrían afectarlo
negativamente y que podrían ocasionar que falle todo el sistema.
Como parte de la seguridad del software, se lleva a cabo un proceso de modelado y análisis.
Inicialmente se identifican los peligros y se clasifican según su riesgo. Por ejemplo, algunos
de los peligros asociados con un control de crucero basado en computadora para un
automóvil podrían ser los siguientes:
1) ocasionar una aceleración incontrolada que no pudiera detenerse
2) no responder a la presión en el pedal de frenado (porque se apague)
3) no encender cuando se active el interruptor
4) perder o ganar velocidad poco a poco.
Una vez identificados estos peligros en el nivel del sistema, se utilizan técnicas de análisis
para asignar severidad y probabilidad de ocurrencia a cada uno. Para ser eficaz, el software
debe analizarse en el contexto de todo el sistema.

LAS NORMAS DE CALIDAD ISO 90004


Un sistema de aseguramiento de la calidad se define como la estructura organizacional,
responsabilidades, procedimientos, procesos y recursos necesarios para implementar la
administración de la calidad. Estos sistemas cubren una amplia variedad de actividades, que
contemplan todo el ciclo de vida del producto, incluidos planeación, control, medición,
pruebas e informes, así como la mejora de los niveles de calidad en todo el proceso de
desarrollo y manufactura. La norma ISO 9000 describe en términos generales los elementos
de aseguramiento de la calidad que se aplican a cualquier negocio, sin importar los
productos o servicios ofrecidos.
Los requerimientos esbozados por la norma ISO 9001:2000 se dirigen a temas tales como
responsabilidad de la administración, sistema de calidad, revisión del contrato, control del
diseño, documentación y control de datos, identificación del producto y su seguimiento,
control del proceso, inspección y pruebas, acciones correctivas y preventivas, registros del
control de calidad, auditorías internas de calidad, capacitación, servicio y técnicas
estadísticas

EL PLAN DE ACS
El Plan de ACS proporciona un mapa de ruta para instituir el aseguramiento de la calidad
del software. Desarrollado por el grupo de ACS (o por el equipo del software si no existe
un grupo de ACS), el plan funciona como plantilla para las actividades de ACS que se
instituyen para cada proyecto de software.
La IEEE ha publicado una norma para el ACS. Ésta recomienda una estructura que
identifica lo siguiente:
1) propósito y alcance del plan
2) descripción de todos los productos del trabajo de ingeniería de software (tales como
modelos, documentos, código fuente, etc.) que se ubiquen dentro del ámbito del
ACS
3) todas las normas y prácticas aplicables que se utilicen durante el proceso del
software
4) acciones y tareas del ACS (incluidas revisiones y auditorías) y su ubicación en el
proceso del software
5) herramientas y métodos que den apoyo a las acciones y tareas de ACS
6) procedimientos para la administración de la configuración del software
7) métodos para unificar las salvaguardas y para mantener todos los registros
relacionados con el ACS
8) roles y responsabilidades relacionados con la calidad del producto.

RESUMEN
El aseguramiento de la calidad del software es una actividad sombrilla de la ingeniería de
software que se aplica en cada etapa del proceso del software. El ACS incluye
procedimientos para la aplicación eficaz de métodos y herramientas, supervisa las
actividades de control de calidad, tales como las revisiones técnicas y las pruebas del
software, procedimientos para la administración del cambio, y procedimientos para
asegurar el cumplimiento de las normas y mecanismos de medición y elaboración de
reportes.
Para llevar a cabo el aseguramiento de la calidad del software de manera adecuada, deben
recabarse, evaluarse y divulgarse datos sobre el proceso de la ingeniería de software. Los
métodos estadísticos aplicados al ACS ayudan a mejorar la calidad del producto y del
proceso de software mismo. Los modelos de confiabilidad del software amplían las
mediciones, lo que permite que los datos obtenidos acerca de los defectos se extrapolen
hacia tasas de falla proyectadas y hacia la elaboración de pronósticos de confiabilidad.
En resumen, deben tomarse en cuenta las palabras de Dunn y Ullman :“El aseguramiento
de la calidad del software es el mapeo de los preceptos administrativos y de las disciplinas
de diseño del aseguramiento de la calidad, en el ámbito administrativo y tecnológico
aplicable a la ingeniería de software.” La capacidad de asegurar la calidad es la medida de
una disciplina madura de la ingeniería. Cuando el mapeo se lleva a cabo con éxito, el
resultado es una ingeniería de software madura.

También podría gustarte