Unidad 2: Gestión de calidad.

Calidad del Software

La calidad del software es un concepto complejo que no es directamente comparable con la calidad de la manufactura de productos. En la manufacturación, la noción de calidad viene dada por la similitud entre el producto desarrollado y su especificación. En un mundo ideal, esta definición debería aplicarse a todos los productos, pero, para sistemas de software, existen estos problemas:

1.- La especificación se orienta hacia las características del producto que el consumidor quiere. Sin embargo, la organización desarrolladora también tiene requerimientos (como los de mantenimiento) que no se incluyen en la especificación.
2.- No se sabe cómo especificar ciertas características de calidad (por ejemplo, mantenimiento) de una forma no ambigua.
3.- Es muy difícil redactar especificaciones concretas de software. Por lo tanto, aunque un producto se ajuste a su especificación, los usuarios no lo consideran un producto de alta calidad debido a que no responde a sus expectativas.

Se deben reconocer estos problemas con la especificación del software y se tienen que diseñar procedimientos de calidad que no se basen en una especificación perfecta. En concreto, atributos del software como mantenibilidad, seguridad o eficiencia no pueden ser especificados explícita mente. Sin embargo, tienen un efecto importante en cómo es percibida la calidad del sistema.

2.1 La gestión de proyectos usando un marco de calidad

La gestión de la calidad provee una comprobación independiente de los procesos de desarrollo software. Los procesos de gestión de la calidad comprueban las entregas del proyecto para asegurarse que concuerdan con los estándares y metas organizacionales. El equipo de garantía de calidad debe ser independiente del equipo de desarrollo para que puedan tener una visión objetiva del software. Ellos transmitirán los problemas y las dificultades al gestor principal de la organización.
Un equipo independiente de calidad garantiza que los objetivos organizacionales y la calidad no sean comprometidos por consideraciones de presupuesto o agenda. Una suposición subyacente de la gestión de calidad es que la calidad del proceso de desarrollo afecta directamente a la calidad de los productos derivados. La siguiente figura muestra una aproximación basada en proceso para conseguir la calidad del producto

Hay un vínculo claro entre la calidad del proceso y del producto en producción debido a que el proceso es relativamente fácil de estandarizar y monitorizar. El software no se manufactura, sino que se diseña. El desarrollo de software es un proceso más creativo que mecánico. La calidad del producto, también se ve afectada por factores externos, como la novedad de una aplicación o la presión comercial para sacar un producto rápidamente..

La gestión de la calidad del proceso implica:

1.- Definir estándares de proceso.
2.- Supervisar el proceso de desarrollo para asegurar que se sigan los estándares.
3.- Hacer informes del proceso para el gestor del proyecto y para el comprador del software.


2.2 Estándares y Métricas de calidad en la ingeniería de SW

Un problema de la garantía de la calidad basada en el proceso es que el equipo de garantía de la calidad (QA) insista en unos estándares de proceso independientemente del tipo de software a desarrollar. El gestor principal debe intervenir para asegurar que el proceso de calidad ayude al desarrollo del producto en lugar de impedirlo.

Podemos definir dos tipos de estándares como parte del proceso de garantía de calidad:

1.- Estándares de producto. Se aplican sobre el producto software que se comienza a desarrollar. Incluyen estándares de documentación, como cabecera de comentarios estándar para definición de clases, y estándares de codificación.
2.- Estándares de proceso. Definen los procesos que deben seguirse durante el desarrollo del software. Pueden incluir definiciones de procesos de especificación, diseño y validación, así como una descripción de los documentos que deben escribirse en el curso de estos procesos. Existe una relación muy cercana entre los estándares de producto y los estándares de proceso. Los estándares de producto se aplican a las salidas del proceso software y. en muchos casos, los estándares de proceso incluyen actividades de proceso específicas que garantizan que se sigan los estándares de producto


2.3.1 CMM

CMM es una aplicación del sentido común para el gerenciamiento de procesos y conceptos de mejora de la calidad del desarrollo y mantenimiento del software, es además una guía desarrollada por y para la comunidad profesional del software.Un modelo para la mejora organizacional.

Una estructura confiable y consistente para evaluar y mejorar las capacidades de una organización.

¿Porque surge CMM?

Crisis del software de principios de los 80, debido a una falta de eficiencia en los procesos de desarrollo de programas. 

¿Qué puedo hacer con CMM?

Ayudar a la comunicación, al establecer un lenguaje común en el ámbito organizacional
Facilitar poner el foco de atención en cuestiones críticas
Proveer recomendaciones generales
Ayudar a priorizar acciones de mejora
El CMM ha demostrado su impacto en la calidad del software producido bajo sus directrices. Las limitaciones más determinantes en CMM es que sólo es un modelo de referencia, es decir, sólo describe los procesos clave que una organización debe tener, y no explica cómo se deben implementar estos.

2.3.2 MOPROSOFT

Modelo de Procesos para la Industria del Software

Modelo para la mejora y evaluación de los procesos de desarrollo y mantenimiento de sistemas y productos de software. Desarrollado por la Asociación Mexicana para la Calidad en Ingeniería de Software a través de la Facultad de Ciencias de la Universidad Nacional Autónoma de México (UNAM) y a solicitud de la Secretaría de Economía para obtener una norma mexicana que resulte apropiada a las características de tamaño de la gran mayoría de empresas mexicanas de desarrollo y mantenimiento de software. Moprosoft es el nombre del modelo en la comunidad universitaria y profesional, y la norma técnica a la que da contenido es la NMX-059/01-NYCE-2005 que fue declarada Norma Mexicana el 15 de agosto de 2005 con la publicación de su declaratoria en el Diario oficial de la Federación. Moprosoft considera que los modelos de evaluación y mejora CMMI eI SO/IEC 15504 no resultan apropiados para empresas pequeñas y medianas de desarrollo y mantenimiento de software. Sobre las áreas de procesos de los niveles 2 y 3 del modelo SW-CMM e inspirándose en el marco de ISO/IE 15504 se ha desarrollado este modelo

2.4 Impacto de la calidad en tiempo, costo y alcance del proyecto

El alcance de un proyecto llamado también alcance del trabajo es el trabajo que debe hacerse para que el cliente se convenza de que las entregas (las cosas por hacer), es decir el producto u objetos tangibles que han de suministrarse) cumplan con los requisitos o criterios de aceptación acordados al comenzar el proyecto. Por ejemplo, el alcance podría ser el trabajo de limpiar el suelo, de construir una casa y de poner la jardinería ornamental según las especificaciones hechas por el cliente y aceptadas por el contratista.

Por estructuración se entiende la facilidad con que las funciones pueden ser compartimentalizadas y la naturaleza jerárquica de la información a tratar. A medida que el grado de estructuración aumenta, la posibilidad de estimar con precisión mejora y, por consiguiente, el riesgo disminuye. Bajo el concepto de la administración de proyectos, se asignan representantes de cada uno de los departamentos funcionales de las divisiones al equipo asignado al proyecto.

Análisis de riesgo y tipos de riesgos de un proyecto

La existencia de riesgos es inherente a cualquier actividad humana en tanto que absolutamente todo lo que realizamos en la vida está sometido a un determinado grado de incertidumbre. A la hora de ejecutar un proyecto, por muy buena que sea la planificación realizada, el conocimiento del ámbito y contexto en el que se desarrolla el proyecto y las previsiones sobre el futuro, también siempre existe un cierto margen para el error, que tiene su representación en los riesgos.
Se entiende por riesgo cualquier modificación en el entorno de mercado o en el producto que puede tener influencia sobre el proyecto que se está desarrollando.
Este cambio de circunstancias y de necesidades de los clientes no necesariamente tiene por qué ser un inconveniente para nuestro proyecto. Si estamos preparados para hacer frente a estos cambios, las consecuencias sobre el resultado de nuestro proyecto serán mínimas.
Incluso, si somos capaces de reaccionar adecuadamente ante este riesgo, podemos sacar beneficio de ello y mejorar nuestro producto, nuestras ventas, o la satisfacción de nuestros clientes.

Por tanto, la mejor manera de reducir la exposición a riesgos es realizar una adecuada planificación. En ella, los riesgos se deben abordar desde una perspectiva realista que permita su conocimiento y el trazado de planes de actuación en caso de que se presenten. En ningún caso se debe ignorar la existencia de los riesgos, sino que se deben controlar.
Ademá de una buena planificación, es necesario que el director de proyectos y la dirección de la empresa en su conjunto sepan cómo actuar ante la aparición de riesgos. La gestión adecuada de una situación de riesgo permitirá convertir las debilidades en fortalezas

Tipos de riesgos

Los objetivos de la gestión de riesgos son identificar, dirigir y eliminar las fuentes de riesgo antes de que empiecen a afectar a la finalización satisfactoria de un proyecto software.

El riesgo siempre implica dos características:

Incertidumbre: el acontecimiento que caracteriza al riesgo puede o no puede ocurrir.
Pérdida: si el riesgo se convierte en una realidad, ocurrirán consecuencias no deseadas o pérdidas.

Para cuantificar el nivel de incertidumbre y el grado de pérdidas asociado con cada riesgo se consideran diferentes categorías de riesgos:

Riesgos del proyecto: o Afectan a la planificación temporal y al coste del proyecto. o Identifican problemas potenciales de presupuesto, calendario, personal, recursos.
Riesgos técnicos: o Amenazan la calidad y la planificación temporal del software que hay que producir. o Identifican posibles problemas de diseño, implementación, interfaz, verificación y mantenimiento.
Riesgos del negocio: o Amenazan la viabilidad del software. o Los principales riesgos de negocio son:
Riesgo de mercado
Riesgo estratégico
Riesgo de ventas
Riesgo de dirección
Riesgo de presupuesto

Se puede hacer otra categorización de los riesgos en función de su facilidad de detección:

Riesgos conocidos: son aquellos que se pueden predecir después de una evaluación del plan del proyecto, del entorno técnico y otras fuentes de información fiables.
Riesgos predecibles: se extrapolan de la experiencia de proyectos anteriores.
Riesgos impredecibles: pueden ocurrir, pero es extremadamente difícil identificarlos por adelantado.

La gestión continuada de los riesgos permite aumentar su eficiencia:

Evaluar continuamente lo que pueda ir mal
Determinar qué riesgos son importantes o Implementar estrategias para resolverlos
Asegurar la eficacia de las estrategias
Elementos de la gestión de riesgos
Estimación de riesgos:

Lista de riesgos capaces de romper la planificación del proyecto.

Análisis de riesgo: Medición de la probabilidad y el impacto de cada riesgo, y los niveles de riesgo de los métodos alternativos.
Priorización de riesgos: Lista de riesgos ordenados por su impacto.
Control de riesgos: Planificación de la gestión de riesgos: plan para tratar cada riesgo significativo.
Resolución de riesgos: Ejecución del plan.
Motorización de riesgos: Comprobación del progreso del control de un riesgo e identificación de la aparición de nuevos riesgos.

Identificación de riesgos
Constituye un intento sistemático para especificar las amenazas al plan del proyecto.
Las incertidumbres sobre diferentes características del proyecto se transforman en riesgos que pueden ser descritos y medidos.
Un método para identificar los riesgos es crear una lista de comprobación de elementos de riesgo que debe contener dos categorías de riesgos:

Riesgos específicos del producto: para identificarlos se examina el plan del proyecto y la declaración del ámbito del software.

Riesgos genéricos: Son comunes a todos los proyectos de software. Para identificarlos se crean las siguientes subcategorías:
amaño del producto
Impacto en el negocio
Características del cliente
Definición del proceso
Entorno de desarrollo
Tecnología a construir
Tamaño y experiencia de la plantilla.

Análisis de riesgos:

Es el proceso de examinar los riesgos en detalle para determinar su extensión, sus interrelaciones y su importancia.

Las actividades básicas son:

Evaluación: mejor comprensión del riesgo. Se cuantifican los siguientes conceptos:
Impacto: pérdida que ocasiona el riesgo.
Probabilidad: probabilidad de que ocurra el riesgo.
Marco de tiempo: periodo de tiempo en el que es posible mitigar el riesgo

Comentarios

Entradas populares de este blog

Unidad 3: Planificación de proyecto

Unidad 1: Introducción a la gestión de proyectos