jueves, 22 de octubre de 2009

Unidad 2 cont

2.7 Software de Alta Calidad

La calidad del software es un objetivo al que se dedican muchos esfuerzos. Es muy difícil poder crear software perfecto. Pero todo proyecto tiene como objetivo producir software de la mejor calidad posible.

Antes de adentrarnos de lleno a este tema, seria bueno definir el concepto de calidad.

Calidad: La calidad es la aptitud de un producto para satisfacer las necesidades del usuario. Algunos de los aspectos que se pueden tomar en cuenta para evaluar la calidad del software son:

Funcionalidad
Confiabilidad
Usabilidad
Eficiencia
Mantenibilidad
Portabilidad

Para poder asegurar la calidad del software, debemos tener un conjunto de actividades planificadas y sistematizadas, que son necesarias para aportar la confianza en que el producto satisface los requisitos de calidad.

No podemos certificar la calidad del software, pero lo que se certifica son los procedimientos para construir un software de calidad, los procedimientos deben ser correctos y estar en función de la normalización (ISO 9000, CMMI, etc.).


ISO 9000: Las normas ISO 9000, son normas de calidad y gestión continua de calidad, establecidas por la Organización Internacional para la Estandarización (ISO). Se pueden aplicar en cualquier tipo de organización o actividad sistemática orientada a la producción de bienes o servicios. Se componen de estándares y guías relacionados con sistemas de gestión y de herramientas específicas, como los métodos de auditoria.

En cuanto al software, pone a disposición de un auditor o certificador los procesos internos, de forma que este indique si cumple o no la normativa al 100%. Audita al sistema. Si los resultados son positivos emite la certificación, y cada cierto tiempo se tiene que renovar. La certificación es un proceso costoso.


El nacimiento de CMM-CMMI

El departamento de defensa de los estados unidos tenía muchos problemas con el software que encargaba desarrollar a otras empresas.

Convocó un comité de expertos para que solucionase estos problemas, en el año 1983 dicho comité concluyó "Tienen que crear un instituto de la ingeniería del software, dedicado exclusivamente a los problemas del software, y a ayudar al Departamento de Defensa".

Convocaron un concurso público en el que dijeron: "Cualquiera que quiera enviar una solicitud tiene que explicar como van a resolver estos problemas", se presentaron diversas solicitudes y la Universidad Carnegie Mellon ganó el concurso en 1985, creando el SEI. El SEI (Software Engineering Institute) es el instituto que creó y mantiene el modelo de calidad CMM – CMMI.


CMM-CMMI: El CMM (Capability Maturity Model) – CMMI (Capability Maturity Model Integration) es un modelo de calidad del software que clasifica las empresas en niveles de madurez. Estos niveles sirven para conocer la madurez de los procesos que se realizan para producir software.

Las siglas CMM significan Modelo de capacidad y madurez, y CMMI seria en español algo como integración del modelo de madurez de capacidad.

El modelo CMM establece un conjunto de prácticas o procesos clave agrupados en Áreas Clave de Proceso (KPA - Key Process Area). Para cada área de proceso define un conjunto de buenas prácticas que habrán de ser:

Definidas en un proceso documentado
Provistas de los medios y formación necesarios
Ejecutadas de un modo sistemático, universal y uniforme (institucionalizadas)
Medidas
Verificadas

A su vez estas Áreas de Proceso se agrupan en cinco "niveles de madurez", de modo que una organización que tenga institucionalizadas todas las prácticas incluidas en un nivel y sus inferiores, se considera que ha alcanzado ese nivel de madurez.

La implantación de un modelo de estas características es un proceso largo y costoso que puede costar varios años de esfuerzo. Aun así el beneficio obtenido para la empresa es mucho mayor que lo invertido.


Nivel Inicial o Nivel Uno: Este es el nivel en donde están todas las empresas que no tienen procesos. Los presupuestos se disparan, no es posible entregar el proyecto en fechas, te tienes que quedar durante noches y fines de semana para terminar un proyecto. No hay control sobre el estado del proyecto, el desarrollo del proyecto es completamente opaco, no sabes lo que pasa en él.

El éxito de los proyectos se basa la mayoría de las veces en el esfuerzo personal, aunque a menudo se producen fracasos y casi siempre retrasos.

Si no sabes el tamaño del proyecto y no sabes cuanto llevas hecho, nunca sabrás cuando vas a terminar.


Nivel Repetible o Nivel Dos: En este nivel las organizaciones disponen de unas prácticas institucionalizadas de gestión de proyectos, existen unas métricas básicas y un razonable seguimiento de la calidad. La relación con subcontratistas y clientes está gestionada sistemáticamente.

Quiere decir que el éxito de los resultados obtenidos se pueden repetir. La principal diferencia entre este nivel y el anterior es que el proyecto es gestionado y controlado durante el desarrollo del mismo. El desarrollo no es opaco y se puede saber el estado del proyecto en todo momento.

Los procesos que hay que implantar para alcanzar este nivel son:
Gestión de requisitos
Planificación de proyectos
Seguimiento y control de proyectos
Gestión de proveedores
Aseguramiento de la calidad
Gestión de la configuración


Nivel Definido o Nivel Tres: Además de una buena gestión de proyectos, a este nivel las organizaciones disponen de correctos procedimientos de coordinación entre grupos, formación del personal, técnicas de ingeniería más detallada y un nivel más avanzado de métricas en los procesos. Se implementan técnicas de revisión por pares (peer reviews).

Resumiéndolo mucho, alcanzar este nivel significa que la forma de desarrollar proyectos esta establecida, documentada y que existen métricas (obtención de datos objetivos) para la consecución de objetivos concretos.

Los procesos que hay que implantar para alcanzar este nivel son:
Desarrollo de requisitos
Solución Técnica
Integración del producto
Verificación
Validación
Desarrollo y mejora de los procesos de la organización
Definición de los procesos de la organización
Planificación de la formación
Gestión de riesgos
Análisis y resolución de toma de decisiones

La mayoría de las empresas que llegan al nivel 3 paran aquí, ya que es un nivel que proporciona muchos beneficios y no ven la necesidad de ir más allá porque tienen cubiertas la mayoría de sus necesidades.


Nivel Gestionado o Nivel Cuatro: Los proyectos usan objetivos medibles para alcanzar las necesidades de los clientes y la organización. Se usan métricas para gestionar la organización.

Los procesos que hay que implantar para alcanzar este nivel son:
Gestión cuantitativa de proyectos
Mejora de los procesos de la organización
Se caracteriza porque las organizaciones disponen de un conjunto de métricas significativas de calidad y productividad, que se usan de modo sistemático para la toma de decisiones y la gestión de riesgos. El software resultante es de alta calidad.

Nivel Optimizado o Nivel Cinco: La organización completa está volcada en la mejora continua de los procesos. Se hace uso intensivo de las métricas y se gestiona el proceso de innovación.

Los procesos de los proyectos y de la organización están orientados a la mejora de las actividades. Mejoras incrementales e innovadoras de los procesos que mediante métricas son identificadas, evaluadas y puestas en práctica.

Los procesos que hay que implantar para alcanzar este nivel son:

Innovación organizacional
Análisis y resolución de las causas

Normalmente las empresas que intentan alcanzar los niveles 4 y 5 lo realizan simultáneamente ya que están muy relacionados.

2.8 Factores de calidad y productividad

En los modelos de calidad, la calidad se define de forma jerárquica. Es un concepto que se deriva de un conjunto de sub-conceptos, cada uno los cuales se van a evaluar a través de un conjunto de indicadores o métricas.

Tienen una estructura, por lo general, en tres niveles:

Factores de Calidad
Criterios de calidad del Producto
Métricas del Producto

En el nivel más alto de la jerarquía se encuentran los factores de calidad, que representan la calidad desde el punto de vista del usuario.

Cada uno de los factores se descompone en un conjunto de criterios de calidad. Son atributos que, cuando están presentes, contribuyen al aspecto de la calidad que el factor asociado representa. Se trata de una visión de la calidad desde el punto de vista del producto software.

Para cada uno de los criterios de calidad se definen entonces un conjunto de métricas, que son medidas cuantitativas de ciertas características del producto que dan una indicación del grado en que dicho producto posee un determinado atributo de calidad.

Factores de calidad del software de McCall

Este modelo es considerado por primera vez en 1977 por McCall. Destinado a ser utilizado durante el proceso de desarrollo de sistemas, sirvió desde muy temprano como puente entre los usuarios y los desarrolladores, concilia los puntos de la vista de los usuarios con las prioridades de los desarrolladores. Con una perspectiva de visión basada en los criterios de la evaluación de la calidad.

El modelo de calidad de McCall organiza los factores en tres ejes o puntos de vista desde los cuales el usuario puede contemplar la calidad de un producto.

Operación del producto
Revisión del producto
Transición del producto

Este modelo se basa en 11 factores de calidad, que se organizan en torno a los tres ejes de la siguiente manera:

v Operación de producto ó Características operacionales

§ Facilidad de uso (¿Puedo ejecutarlo?)
§ Integridad (¿Es seguro?)
§ Corrección (¿Hace el software lo que yo quiero?)
§ Fiabilidad (¿Lo hace de forma exacta todo el T?)
§ Eficiencia (¿Se ejecutará sobre mi HW lo mejor posible?)

v Revisión del producto ó Capacidad de soportar cambios

§ Facilidad de mantenimiento (¿Puedo arreglarlo?)
§ Facilidad de prueba (¿Puedo probarlo?)
§ Flexibilidad (¿Puedo modificarlo?)

v Transición del producto ó Adaptabilidad de nuevos entornos

§ Facilidad de reutilización (¿Podré reutilizar parte del software?)
§ Interoperabilidad (¿Podré comunicarlo con otros sistemas?)
§ Portabilidad (¿Podré utilizarlo en otra máquina?)


Los criterios pueden ser evaluados mediante un conjunto de métricas. Para cada criterio deben fijarse unos valores máximo y mínimo aceptables para cada criterio. Generalmente estas métricas definidas por MacCall solo pueden ser medidas en forma subjetiva.

Ahora se enlistan algunas de estas métricas:

Facilidad de Auditoria: La facilidad con que se puede comprobar la conformidad con los estándares
Exactitud: La precisión de los cálculos y el control
Normalización de las Comunicaciones: El grado en que se usan el ancho de banda, los protocolos y las interfaces estándar
Completitud: El grado en que se ha conseguido la total implementación de las funciones requeridas
Concisión: Lo compacto que es el programa en términos de líneas de código
Consistencia: El uso de un diseño uniforme de técnicas de documentación a los largo del proyecto de desarrollo de software
Estandarización en los datos: El uso de estructuras de datos de tipos estándar a lo largo de todo el programa
Tolerancia de Errores: El daño que se produce cuando el programa encuentra un error
Eficiencia en la Ejecución: El rendimiento en tiempo de ejecución de un programa
Facilidad de expansión: El grado en que se puede ampliar el diseño arquitectónico de datos o procedural
Generalidad: La amplitud de aplicación potencial de los componentes del programa
Independencia del Hardware: El grado en que el software es independiente del hardware en que opera
Instrumentación: El grado en que el programa muestra su propio funcionamiento e identifica errores que aparecen
Modularidad: La independencia funcional de los componentes del programa
Facilidad de Operación: La facilidad de operación de un programa
Seguridad: La disponibilidad de mecanismos que controlen o protejan los programas o datos
Auto-Documentación: El grado en que el código fuente proporciona documentación significativa.


La siguiente imagen muestra la relación que existe entre los factores, criterios y métricas en el modelo de McCall:

No hay comentarios:

Publicar un comentario en la entrada