sábado, 9 de mayo de 2009

Métricas para la calidad de software

El objetivo primordial de la ingeniería del software es producirun sistema, aplicación o producto de alta calidad.Para lograr este objetivo, los ingenieros del software debenaplicar métodos efectivos junto con herramientas modernasdentro del contexto de un proceso maduro de desarrollode software. Además, un buen ingeniero del software(y buenos gestores de la ingeniería del software) debenmedir si la alta calidad se va a llevar a cabo.La calidad de un sistema, aplicación o producto estan bueno como los requisitos que describen el problema,el diseño quc modcla la solución, el código que conducea un programa ejecutable, y las pruebas queejercitan el software para detectar errores. Un buen ingenierodel software utiliza mediciones que evalúan lacalidad del análisis y los modelos de diseño, el códigofuente, y los casos de prueba que se han creado al aplicarla ingeniería del software. Para lograr esta evaluaciónde la calidad en tiempo real, el ingeniero debe utilizar medidas técnicas que evalúa nla calidad con objetividad, no con subjetividad.Se puede encontrar una excelente fuente de informociónsobre la calidad del software y ternos relacionados(incluyendo métricas) en: www.quol¡tyworld.comEl gestor de proyectos también debe evaluar la calidad objetivamente, y no subjetivamente. A medida que el proyecto progresa el gestor del proyecto también debeevaluar la calidad. Las métricas privadas recopiladas poringenieros del software particulares se asimilan para proporcionarresultados en los proyectos. Aunque se puedenrecopilar muchas medidas de calidad, el primer objetivoen el proyecto es medir errores y defectos. Las métricasque provienen de estas medidas proporcionan una indicaciónde la efectividad de las actividades de control y de la garantía de calidad en grupos o en particulares.


Medida de la calidad
Aunque hay muchas medidas de la calidad de software,la corrección, facilidad de mantenimiento, integridad,y facilidad de uso proporcionan indicadores Útilespara el equipo del proyecto. Gilb [GIL881 ha sugeridodefiniciones y medidas para cada uno de ellos.Corrección. Un programa debe operar correctamenteo proporcionará poco valor a sus usuarios. Lacorrección es el grado en el que el software lleva acabo su función requerida. La medida más común decorrección es defectos por KLDC, en donde undefecto se define como una falta verificada de conformidadcon los requisitos.Facilidad de mantenimiento. El mantenimientodel software cuenta con más esfuerzo que cualquierotra actividad de ingeniería del software. La facilidadde mantenimiento es la facilidad con la que sepuede corregir un programa si se encuentra un error,se puede adaptar si su entorno cambia, o mejorar siel cliente desea un cambio de requisitos. No hayforma de medir directamente la facilidad de mantenimiento;por consiguiente, se deben utilizar medidasindirectas. Una simple métrica orientada altiempo es el tiempo medio de cambio (TMC), es decirel tiempo que se tarda en analizar la petición de cambio,en diseñar una modificación adecuada, en implementarel cambio, en probarlo y en distribuir elcambio a todos los usuarios. Como media, los programasque se pueden mantener tendrán un TMCmás bajo (para tipos equivalentes de cambios) quelos programas que no son más fáciles de mantener.Hitachi [TAJS 11] ha utilizado una métrica orientadaal coste para la capacidad de mantenimiento llamada«desperdicios» -e1 coste en corregir defectosencontrados después de haber distribuido el softwarede un sistema para resistir ataques (tanto accidentalescomo intencionados) contra su seguridad. El ataquese puede realizar en cualquiera de los tres componentesdel software: programas, datos y documentos.Para medir la integridad, se tienen que definirdos atributos adicionales: amenaza y seguridad.Amenaza es la probabilidad (que se puede estimaro deducir de la evidencia empírica) de que un ataquede un tipo determinado ocurra en un tiempodeterminado. La seguridad es la probabilidad (quese puede estimar o deducir de la evidencia empírica)de que se pueda repeler el ataque de un tipodeterminado. La integridad del sistema se puededefinir como:integridad = C [( 1 - amenaza) x (1 - seguridad)]donde se suman la amenaza y la seguridad para cadatipo de ataque.Facilidad de uso. El calificativo «amigable con elusuario» se ha convertido en omnipresente en las discusionessobre productos de software. Si un programano es «amigable con el usuario», frecuentemente estáabocado al fracaso, incluso aunque las funciones querealice sean valiosas. La facilidad de uso es un intentode cuantificar «lo amigable que puede ser con el usuario» y se puede medir en función de cuatro características:(1) habilidad intelectual y/o física requeridapara aprender el sistema; (2) el tiempo requerido parallegar a ser moderadamente eficiente en el uso del sistema;(3) aumento neto en productividad (sobre elenfoque que el sistema reemplaza) medida cuandoalguien utiliza el sistema moderadamente y eficientemente;y (4) valoración subjetiva (a veces obtenidamediante un cuestionario) de la disposición de losusuarios hacia el sistema.Los cuatro factores anteriores son sólo un ejemplode todos los que se han propuesto como medidas de lacalidad del software. 

De Interés.!