Lic. Ramiro Estigarribia Introduccin Un elemento clave de cualquier proceso de Ingeniera es la medicin.
Empleamos medidas para entender mejor los atributos de los modelos que creamos.
Pero, fundamentalmente, empleamos las medidas para valorar la calidad de los productos de ingeniera o de los sistemas que construimos. Lic. Ramiro Estigarribia Ingeniera del Software y otras disciplinas A diferencia de otras disciplinas, la ingeniera del software no est basada en las leyes cuantitativas de la Fsica. Las medidas absolutas, tales como el voltaje, la masa, la velocidad o la temperatura no son comunes en el mundo del software.
En su lugar, intentamos obtener un conjunto de medidas indirectas que dan lugar a mtricas que proporcionan una indicacin de la calidad del software.
Se trata de buscar una aproximacin o una idea.
Medidas en la Fsica Definicin de Medicin Es el proceso por el que se asignan nmeros o smbolos a los atributos de las entidades del mundo real.
En las ciencias fsicas, medicina y otras ciencias, somos ahora capaces de medir atributos que previamente pensbamos que no eran medibles.
Sentimos que la obligacin de intentar "medir lo no medible" para mejorar nuestra comprensin de entidades particulares como la ingeniera del software. El Software no es medible? Muchos profesionales del software piensan que el software no es medible.
Un argumento es que se deberan posponer los intentos de medicin hasta que comprendamos mejor el software.
Esto hoy se considera un error.
Calidad del Software Incluso los desarrolladores del software ms hastiados estarn de acuerdo en que un software de alta calidad es una de las metas ms importantes.
Pero... Cmo medimos la calidad?
Calidad del Software segn Pressman La calidad del software es, segn Pressman:
La concordancia con los requisitos funcionales y de rendimiento, con los estndares de desarrollo y con las caractersticas implcitas que se espera del software desarrollado e implementado. Medir el Software 1. Los requisitos del software son la base de las medidas de la calidad. La falta de concordancia con esos requisitos es una falta de calidad.
2. Existen criterios de desarrollo que guan la manera en que se hace la ingeniera del software. Si no se siguen los criterios, habr probablemente poca calidad. Medir el Software (cont...) 3. Existe un conjunto de requisitos implcitos que a menudo no se nombran (por ejemplo, facilidad de mantenimiento).
Si el software cumple con sus requisitos explcitos pero falla en los implcitos, la calidad tampoco ser fiable.
Dimensiones de la Calidad Clasificacin de factores de Calidad segn McCall Factores de la Calidad Correccin: Hasta dnde satisface un programa su especificacin y logra los objetivos propuestos por el cliente.
Fiabilidad: Hasta dnde se puede esperar que un programa lleve a cabo su funcin con la exactitud requerida.
Eficiencia: La cantidad de recursos informticos y de cdigo necesarios para que un programa realice su funcin.
Factores de la Calidad (cont..) Integridad: Hasta dnde se puede controlar el acceso al software o a los datos por personas no autorizadas.
Usabilidad: El esfuerzo necesario para aprender a operar el sistema. Facilidad de mantenimiento: El esfuerzo necesario para localizar y arreglar un error.
Flexibilidad: El esfuerzo necesario para modificar un programa que ya est en funcionamiento.
Factores de la Calidad (cont..) Facilidad de prueba: El esfuerzo necesario para probar un programa. Portabilidad: El esfuerzo necesario para transferir el programa de un entorno hardware/software a otro. Reusabilidad: Hasta dnde se puede volver a emplear un programa (o partes). Interoperatividad: El esfuerzo necesario para acoplar un sistema con otro.
La Frmula de Medicin de la Calidad Es difcil y en algunos casos improbable, desarrollar medidas directas de los factores de calidad anteriores.
Es por eso, que se definen y emplean un conjunto de mtricas para desarrollar expresiones para todos los factores de acuerdo con la siguiente relacin:
Fq = c1 * m1 + c2 * m2 + + cn * mn
Donde Fq es el factor de calidad del software. Cn son coeficientes y Mn son puntajes obtenidos.
Modelo De Furps (1987) Hewlett-Packard ha desarrollado un conjunto de factores de calidad del software al que se le ha dado el acrnimo de FURPS: FUNCIONALITY USABILITY RELIABILITY PERFORMANCE SUPPORTABILITY
Factores de Furps Funcionalidad: se evala el conjunto de caractersticas y capacidades del programa, la generalidad de las funciones entregadas y la seguridad del sistema global.
Facilidad de uso: se valora considerando factores humanos, la esttica, la consistencia y la documentacin.
Fiabilidad: se evala midiendo la frecuencia y gravedad de los fallos, la exactitud de las salidas (resultados), y la capacidad de recuperacin de un fallo.
Factores de Furps (cont..) Rendimiento: se mide por la velocidad de procesamiento, el tiempo de respuesta, consumo de recursos, rendimiento efectivo total y eficacia.
Capacidad de soporte: combina la capacidad de ampliar el programa (extensibilidad), as como capacidad de hacer pruebas, compatibilidad, capacidad de configuracin, la facilidad de instalacin de un sistema y la facilidad con que se pueden localizar los problemas.
Factores de calidad ISO 9126 El estndar ISO 9126 ha sido creado en un intento de identificar los atributos clave de calidad del software.
El estndar identifica seis atributos clave de calidad:
Funcionalidad. Confiabilidad. Usabilidad. Eficiencia. Facilidad de mantenimiento. Portabilidad. ISO 9126 El Reto de Medir el Software La medicin asigna nmeros o smbolos a atributos de entidades del mundo real.
Para conseguirlo se necesita un modelo de medicin que comprenda un conjunto consistente de reglas.
Durante dcadas, investigadores han intentado desarrollar una sola mtrica que proporcione una medida completa de la complejidad del software. Fenton le bautiz a esta investigacin como: La bsqueda de lo imposible.
Mtricas del modelo de anlisis El trabajo tcnico en la ingeniera del software empieza con la creacin del modelo de anlisis.
En esta fase se obtienen los requisitos y se establece el fundamento para el diseo.
Por tanto, son deseables las mtricas tcnicas que proporcionan una visin interna a la calidad del modelo de anlisis.
Mtricas basadas en la funcin La mtrica de punto de funcin (PF) se puede usar para predecir el tamao de un sistema.
Un ejemplo es el diagrama de flujo de datos, de una funcin de una aplicacin de software llamada Hogar Seguro.
La funcin administra la interaccin con el usuario, aceptando una contrasea de usuario para activar/ desactivar el sistema y permitiendo consultas sobre el estado de las zonas de seguridad y varios sensores.
Programa Hogar Seguro Hogar Seguro El diagrama de flujo de datos se evala para determinar las medidas clave necesarias para el clculo de la mtrica de PF.: Entradas de usuario o Contrasea o Interruptor de emergencias o Activar/Desactivar Consultas de usuario o Consulta de zona o Consulta de sensor
Hogar Seguro (cont...) Salidas de usuario o Mensajes o Estado del Sensor Archivos o Datos de configuracin del Sistema Interfaces externas o Sensor de Prueba o Configuracin de Zona o Activar/Desactivar o Alerta de Alarma
Hogar Seguro Hogar Seguro La cuenta total debe ajustarse usando la ecuacin: PF = cuenta-total * (0.65 + 0.01 * sumatoria [ Fi ] )
Fi son valores de complejidad. Para el propsito de este ejemplo, asumimos que es 46 (un producto moderadamente complejo)
Por lo tanto: PF = 50* [0.65+(0.01*46)]=56
Mtricas del Modelo de Diseo Es inconcebible que el diseo de un nuevo avin, un nuevo chip de computadora o un nuevo edificio se realizar sin definir las medidas del diseo, sin determinar las mtricas para varios aspectos de la calidad del diseo y usarlas para guiar la evolucin del diseo. Y sin embargo, el diseo de sistemas complejos basados en computadora a menudo consigue proseguir sin virtualmente ninguna medicin. Mtrica del modelo del diseo Las mtricas para software, no son perfectas.
Muchos expertos argumentan que se necesita ms experimentacin hasta que se puedan emplear bien las mtricas de diseo.
Sin embargo el diseo sin medicin es una alternativa inaceptable.
Mtricas de diseo de alto nivel stas se concentran en las caractersticas de la estructura del programa dndole nfasis a la estructura arquitectnica y en la eficiencia de los mdulos.
Estas mtricas son de caja negra, en el sentido de que no se requiere ningn conocimiento del trabajo interno de ningn modo en particular del sistema.
Mtricas de Fenton Fenton [91] sugiere varias mtricas que permiten comparar diferentes arquitecturas de programa mediante un conjunto de dimensiones directas.
Tamao = n + a
n: nmero de nodos (mdulos) a: nmero de arcos (lneas de control)
tamao = 17 + 18 = 35 Mtricas de Fenton Profundidad = el camino ms largo desde el nodo raz En el ejemplo: Profundidad =4
Anchura = mximo nmero de nodos de cualquier nivel de la arquitectura. En el ejemplo: Anchura = 6
Relacin arco/nodo, R = a/n Mide la conectividad y el acoplamiento. R = 18/17 = 1,06.
Mtricas de cohesin Un mdulo con alta cohesin ejecutar una nica tarea sencilla, interactuando muy poco o nada con el resto de mdulos del programa. Se busca que los mdulos tengan una alta cohesin. Mtricas de Acoplamiento El acoplamiento de mdulo proporciona una indicacin de la conectividad de un mdulo con otros mdulos, datos globales y entorno exterior.
El bajo acoplamiento entre las unidades de software es el estado ideal que siempre se intenta obtener. Cuanto menos dependiente sean las partes que constituyen un sistema informtico, mejor ser el resultado.
Mtricas de complejidad Se pueden calcular una variedad de mtricas del software para determinar la complejidad de un programa.
Muchas de stas se basan en una representacin denominada grafo de flujo, un grafo es una representacin compuesta de nodos y enlaces.
La mtrica de complejidad ms ampliamente usada (y debatida) para el software es la complejidad ciclomtica, originalmente desarrollada por Thomas McCabe.
Mtricas de diseo de interfaz Para entender su importancia, basta recordar que la interfaz del usuario ser la nica conexin que podrn tener con los usuarios del sistema.
Aunque existe amplia literatura sobre el diseo de interfaces, se ha publicado poco sobre mtricas de la calidad y facilidad de uso.
Una IGU (Interfaz Grfica de Usuario) tpica usa entidades de representacin, iconos, grficos, texto, mens, ventanas y otras para ayudar al usuario a completar tareas.
Mtricas de diseo de interfaz Se pueden asignar costos a cada secuencia de acciones de acuerdo con la siguiente relacin:
Costos = Sumatoria [frecuencia de transicin (ki) x costos de transicin (k) ]
Donde k es la transicin i especfica de una entidad de representacin a la siguiente cuando se realiza una tarea especfica.
Mtricas de diseo de interfaz El costo puede estar caracterizado en trminos de: tiempo, retraso del proceso o cualquier otro valor razonable, tal como la distancia que debe moverse el ratn entre entidades de la representacin.
Mtricas de cdigo fuente La ciencia del software asigna leyes cuantitativas al desarrollo del software, usando un conjunto de medidas primitivas que pueden obtenerse una vez que se ha generado o estimado el cdigo despus de completar el diseo. Estas medidas se listan a continuacin:
n1: nmero de operadores diferentes n2: nmero de operandos diferentes N1: el nmero total de veces que aparece el operador N2: el nmero total de veces que aparece el operando
Mtricas de cdigo fuente El investigador Halstead defini las siguiente frmulas:
Largo del Programa: N = N1 + N2 Tamao del Vocabulario del programa: n = n1 + n2 Volumen del Programa: V = N * log2(n) Nivel de Dificultad: D = (n1/2) * (N2/n2) Nivel de Programa: L = 1/D Esfuerzo de Implementacin: E = V*D Tiempo de Entendimiento: T = E/18
Mtricas de cdigo fuente * Se debera tener en cuenta que V variar con el lenguaje de programacin y representa el volumen de informacin (en bits) necesarios para especificar un programa.
* 18 es el nmero que Halstead encontr experimentalmente para expresar esta magnitud en segundos.
Mtricas de mantenimiento Se han propuesto mtricas diseadas explcitamente para actividades de mantenimiento.
El estndar IEEE 982.1-1988 sugiere un ndice de madurez del software (IMS) que proporciona una indicacin de la estabilidad de un producto de software.
Mtricas de mantenimiento Mr = nmero de mdulos en la versin actual Fc = nmero de mdulos en la versin actual que se han cambiado Fa = nmero de mdulos en la versin actual que se han aadido Fd = nmero de mdulos de la versin anterior que se han borrado en la versin actual
El ndice de madurez del software se calcula de la siguiente manera: IMS = [Mr (Fa + Fc + Fd)] / Mr
Mtricas de mantenimiento A medida que el IMS se aproxima a 1.0 el producto se empieza a estabilizar.
El IMS puede emplearse tambin como mtrica para la planificacin de las actividades de mantenimiento del software.
Conclusiones Las mtricas del software intentan obtener una manera cuantitativa de valorar la calidad de los atributos internos del producto.
Para que sea til en el contexto del mundo real, una mtrica debe ser simple, calculable, consistente y objetiva.
Debera ser independiente del lenguaje de programacin y proporcionar una realimentacin eficaz para el desarrollador de software.
Conclusiones (cont...) Podemos afirmar que estamos ante "la bsqueda de lo imposible":
Sin bien cada da podremos acercarnos ms a una mtrica exacta en el Software, en la medida en que los mtodos de programacin evolucionan, se necesitar replantear todo.
Y este ciclo repetitivo de cambios, no parece acabar, al menos mientras dure la era de la tecnologa.