MEDICIÓN DEL SOFTWARE

Documentos relacionados
MEDICIÓN DEL SOFTWARE

E77 - Gestión de Recursos de la Información. Tema 1 - Métricas del Proyecto de Software

SERVICIO NACIONAL DE APRENDIZAJE SENA CENTRO DE FORMACIÓN A DISTANCIA. MATERIAL DE APOYO MODELO DE CALIDAD ISO (SQuaRE)

Cápsula 9. Medición de Software

Ejemplo Estimación con el método de Cocomo

Módulo II. Diseño y evaluación en la experimentación formal.

PROGRAMA ANALÍTICO DE ASIGNATURA

ISO Ingeniería del Software

2.12 Control estadístico vs métricas.

CAPÍTULO 2. Empezaremos por definir los posibles términos que se encuentran. encerrados en la palabra métrica, porque es muy común asociarla con las

Grado en que el producto software satisface las necesidades expresadas o implícitas, cuando se usa bajo condiciones determinadas. ISO

Grado en que el producto software satisface las necesidades expresadas o implícitas, cuando se usa bajo condiciones determinadas. ISO

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

METODOLOGÍAS PARA EL DESARROLLO DE SISTEMAS

TEMA 2.1 TIPOS DE PRUEBAS DEL SOFTWARE

Clase Práctica No. 1: Métricas de Calidad de Software: Listas de comprobación.

Ingeniería del Software Ingeniería del Software de Gestión. Tema 3 Metodologías de Desarrollo de Software

Tema 1. Introducción a UML C H R I STO PHER E X P Ó S I TO I Z Q U I ERDO A I R A M E X P Ó S I TO M Á R Q UEZ I S R A E L LÓ P EZ P L ATA M A R Í A

Clasificación de las Herramientas CASE

TEMA 6: INTRODUCCIÓN A UML

Calidad del Software

Capítulo III: MARCO METODOLÓGICO

Ingeniería del Software de Gestión Titulación: ITIG / ITIG - LADE 1º Cuatrimestre - octubre de 2012

Intuitivamente es el proceso que se trata de formular y evaluar una solución para un problema dado

HERRAMIENTAS CASE. Contenidos

Introducción. Diplomado en Calidad y Estimación de Sistemas Informáticos

Introducción a la Gestión de Software

ANÁLISIS DE SISTEMAS. Prof. Eliz Mora

Tema 2 Introducción a la Programación en C.

Plan de estudios ISTQB: Nivel Fundamentos

Modelos, normas y estándares de calidad internacionales para los productos de software

Tipos Abstractos de Datos (TAD) Lección 1

Introducción a la programación: Contenido. Introducción

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Programación Orientada a Objetos 2

Requerimientos de Software

Programación Orientada a Objetos

Lenguajes de Cuarta Generación

Diseño Estructurado. Diseños eran los antes. Lic. Ariel Trellini 28/07/2015

INGENIERÍA DEL SOFTWARE III MÉTODOS DE ESTIMACIÓN. Curso 2013/2014

Proyectos de calidad comienzan con requisitos de calidad

Metodologías de Desarrollo de Software

Rational Unified Process

CUADRO COMPARATIVO DE LOS MODELOS DE CALIDAD ELABORADO POR: EDUARD ANTONIO LOZANO CÓRDOBA. (Documento: ) PRESENTADO A:

octubre de 2007 Arquitectura de Software

Técnicas de Pruebas de

IFCD0111 Programación en Lenguajes Estructurados de Aplicaciones de Gestión

PATRONES DE DISEÑO FRAMEWORKS

Especificación de Requerimientos <Nombre del Proyecto> Nombre del Grupo de Desarrollo o Asignatura Nombre del Autor

Control del Documento

La ingeniería del software es una disciplina de ingeniería que comprende todos los aspectos de la producción de software.

Programación en Lenguajes Estructurados de Aplicaciones de Gestión. Certificados de profesionalidad

Aseguramiento de la calidad y pruebas de software. 2- Estándares y Modelos para la mejora del proceso de software

Instrumentos y Técnicas de recolección de información y análisis de datos cuantitativos. Roque Virgilio Castillo D Cuire

Tema 04: Lenguajes de programación y el lenguaje C

METRICA VERSION MÉTRICA versión 3. Metodología de Planificación, Desarrollo y Mantenimiento de Sistemas de Información

Ingeniería del software I 9 - Diseño detallado

Introducción a la Programación en C

Auditoría Informática Desarrollo, Adquisición, Implementación y Mantenimiento de Aplicaciones de Negocio

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

CIDE, SA. RIF: J NIT: MODELO FUNCIONAL

Fase de Pruebas Introducción.

UML Unifield Modeling Languaje

CONSEJO DE NORMALIZACIÓN Y CERTIFICACIÓN DE COMPETENCIA LABORAL NORMAS TÉCNICAS DE COMPETENCIA LABORAL

ISO ISO Calidad de Software. Virginia Cuomo Mariela Castares

Mantenimiento de Software

GLOSARIO DE TÉRMINOS

Unidad IV: Modelo de Diseño 4.1. Estrategias de diseño

PROGRAMA INSTRUCCIONAL

BASES DE DATOS TEMA 1 PERSPECTIVA DEL ÁREA DE BASES DE DATOS

emis: Entorno para la Medición de la Calidad del Producto Software

Computadora y Sistema Operativo

LA FIABILIDAD EN LOS SISTEMAS DE TELECOMUNICACIONES

TEMA 1: SISTEMAS MODELADOS POR ECUACIONES DIFERENCIALES EN INGENIERÍA QUÍMICA. CLASIFICACIÓN. GENERALIDADES.

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

El ciclo de vida de un sistema de información

Comunicación Hombre Máquina

Patrones. Patrones GRASP GRASP GRASP. Curso de Arquitecturas de Software. Programación Orientada a Objetos Patrones GRASP

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

Acción que el procesador puede ejecutar sin necesidad de información suplementaria

Proceso de Pruebas. Consta de las siguientes actividades: Planificación y Control

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Desarrollo de Productos Editoriales Multimedia

Guía práctica de estudio 09: UML

Transcripción:

MEDICIÓN DEL SOFTWARE 1

MEDICIÓN DEL SOFTWARE Las Frases: Software Engineers are not just good programers...physicists are primarily expected, and trained, to extend our knowledge, while EEs are expected to develop products or techniques for product production. Each career path attracts a distinct type of student and requires a distinct educational program. Most students choose to study EE rather than Physics because they like building things... [Parnas99] 2

MEDICIÓN DEL SOFTWARE 1. Conceptos básicos 2. Medidas y modelos 3. Alcance de las métricas 4. Clasificación de las métricas Procesos Productos Recursos 5. Recogida de datos métricos Base Histórica Obtención de información Método Objetivo/Pregunta/Métrica 6. Medición de atributos internos del producto Longitud Funcionalidad Complejidad Medidas estructurales 7. Medición de atributos externos del producto 8. Medición de recursos 9. Métricas para sistemas orientados a objetos 3

MEDICIÓN DEL SOFTWARE La Frase: Debemos recordar que otras disciplinas científicas ya han aplicado los conceptos básicos de la medición. En Ingeniería del Software no hay que reinventar demasiado, simplemente aplicar y adaptar la teoría ya existente a las métricas del software [Dolado00, pag 39] 4

MEDICIÓN DEL SOFTWARE La posibilidad de medir es el fundamento de las disciplinas científicas y de ingeniería. Sin poder medir es muy difícil evaluar y experimentar las técnicas y los métodos de ingeniería del software. La medición contribuye a superar algunos problemas habituales en el desarrollo del software: Proporciona requerimientos verificables expresados en términos medibles. Proporciona evidencia cuantificable para apoyar las decisiones. Hace más visible el desarrollo y permite identificar problemas anticipadamente. Permite hacer predicciones de coste y tiempo. Recomienda estrategias de prueba e identifica los módulos problemáticos. Permite valorar los efectos en la productividad y en la calidad. No se puede controlar lo que no se puede medir (DeMarco, 1982) y no se puede predecir lo que no se puede medir (Fenton y Pfleeger, 1997). 5

1. Conceptos Básicos Medida Una medida proporciona una indicación cuantitativa de extensión, cantidad, dimensiones, capacidad y tamaño de algunos atributos de un proceso o producto. OJO!, problemas con la cualitativas y semi-cualitativas que se dan con bastante frecuencia. Medición Es el proceso por el que se asignan números o símbolos a atributos de entidades del mundo real de tal forma que los describe de acuerdo con reglas claramente definidas. Medida cuantitativa del grado en que un sistema, componente o proceso posee un atributo dado (IEEE, 1993). Entidad medida 1..* 1..* posee Atributo 1 1 se aplica a 1 mide Valor (magnitud) 1..* 1 1 se expresa en * cuantifica * Unidad Mundo real (empírico) Mundo formal (matemático) Modelo estructural (parcial) de Kitchenham et al. 6

1. Conceptos Básicos FORMULACIÓN Definición de medidas y métricas COLECCIÓN Obtención de datos ANÁLISIS Cálculo de métricas INTERPRETACIÓN Evaluación de los resultados REALIMENTACIÓN Recomendaciones obtenidas Proceso de medición de Roche 7

1. Conceptos Básicos Métrica Medida cuantitativa del grado en que un sistema, componente o proceso posee un atributo dado (IEEE, 1993). Indicador Métrica o combinación de métricas que proporcionan una visión profunda, del proceso de software, del proyecto de software o del producto en sí. Los indicadores de proceso permiten tener una visión profunda de la eficacia de un proceso ya existente. Se recopilan de todos los proyectos de la organización durante un largo período de tiempo con objeto de obtener mejoras de los procesos de software a largo plazo. Los indicadores de proyecto permiten: Evaluar el estado del proyecto en curso. Seguir la pista de los riesgos potenciales. Detectar áreas de problemas antes de que sean críticas. Ajustar el flujo y las tareas del trabajo. Evaluar la habilidad del equipo del proyecto en controlar la calidad de los productos. Los indicadores de producto permiten evaluar su calidad. Modelo Una abstracción de la realidad que permite observar los detalles de una entidad o concepto desde una perspectiva particular. El modelo muestra qué hacer no cómo hacerlo ni quién lo hace. 8

MEDICIÓN DEL SOFTWARE La Frase: All models are wrong but some are useful [George Box] 9

2. Medidas Medidas directas e indirectas: Una medida directa de una entidad o atributo no involucra a ninguna otra entidad o atributo (longitud del código fuente, duración del proceso de prueba, número de defectos...). Una medida indirecta se obtiene a partir de medidas directas (productividad, estabilidad de requisitos, densidad de defectos en un módulo...). Objetivos de las medidas: Evaluación: comprobación del cumplimiento de ciertas características por una entidad que ya existe(calidad del diseño, fiabilidad del software...). Predicción: estimación de los atributos que tendrá una entidad que no existe aún (coste de un proyecto, esfuerzo necesario). El proceso se mide para mejorarlo, rentabilizarlo y optimizarlo. El proyecto se mide para gestionarlo, controlarlo, adaptar el flujo del trabajo y las actividades, y para realizar estimaciones para futuros proyectos. El producto se mide para aumentar su calidad o comprobar que se ajusta a las especificaciones contractuales. 10

3. Alcance de las métricas Las métricas del software abarcan muchas actividades y son múltiples las razones que justifican su uso : Estimación de coste y esfuerzo (o al menos reducción de estos) Modelos y medidas de productividad Recolección de datos ( Por amor al arte?...) Modelos y evaluación de la calidad (AENOR, ISO, etc.) Modelos de fiabilidad Están incluidos en la mayoría de los modelos de calidad. La especialización de los modelos de fiabilidad permite aumentar el entendimiento y control de los productos. Evaluación del rendimiento (Pude ser cualitativo) Aunque es otro aspecto de la calidad, la valoración del rendimiento incluye características observables como tiempos de respuesta y características internas como eficiencia de los algoritmos. Métricas estructurales y de complejidad Para realizar predicciones sobre atributos de calidad (fiabilidad, facilidad de mantenimiento...) se pueden medir atributos estructurales sobre representaciones del software que están disponibles antes que el código. Valoración de capacidad de madurez (CMMI). Se pueden medir diferentes atributos del desarrollo para evaluar la capacidad de una organización de desarrollar software de calidad. Gestión mediante métricas La realización de gráficos basados en diferentes medidas a lo largo del proyecto permite conocer el estado del mismo. Evaluación y comparación de métodos y herramientas Las investigaciones cuidadosas, con análisis y mediciones controladas sobre una herramienta o método permiten hacerlos más productivos para situaciones particulares. Justificación del uso de nuevos métodos y /o herramientas Justificación de formación adicional 11

3. Alcance de las métricas 1. En cuánto podría ser mejorada la productividad si no tuviese que gastar tiempo en mantenimiento? 2. Cuánto tiempo le costó el último año adaptar su presupuesto en trabajar con nuevas versiones de compiladores, bases de datos o sistemas operativos? 3. Cuáles de las aplicaciones que desarrolla su empresa demanda el mayor tiempo de soporte al usuario? 4. Cuánto tiempo se gasta realmente en testing? 5. Crée que sus desarrolladores dedican suficiente tiempo a actividades de diseño? 6. Su proceso de desarrollo ha madurado en los últimos años? 7. El esfuerzo dedicado a mejorar la calidad del software está reduciendo el tiempo que se dedica a corregir errores? 8. Con qué precisión es usted capaz de estimar proyectos futuros? 9. En cuántos proyectos han trabajado cada uno de sus desarrolladores en el último año? 10. Cuál es el número medio de horas por semana que sus desarrolladores dedican a un proyecto? Fuente: Karl E. Wiegers, Process Impact, www.processimpact.com 12

4. Clasificación de las métricas El primer paso de la medición es identificar los atributos o entidades a medir. Estos pueden ser de tres tipos: Procesos: atributos de actividades relacionadas con el software. Productos: componentes, entregas o documentos resultantes de una actividad de proceso. Recursos: entidades requeridas por una actividad de proceso Dentro de cada clase anterior se puede distinguir: Atributos internos: Son aquellos que pueden ser medidos examinando el proceso, producto o recurso mismo. Atributos externos: se miden con respecto a como el proceso, producto o recurso se relaciona con su entorno. ENTIDADES Productos Especificaciones, diseño, código... Procesos Realización de la especificación, del diseño, del código... Recursos Personal, equipos, hardware, software... Internos Tamaño, reusabilidad, modularidad, funcionalidad, acoplamiento, complejidad... Tiempo, esfuerzo, cambios en requisitos, fallos en la especificación Edad, precio, tamaño del equipo, velocidad, tamaño de memoria ATRIBUTOS Externos Comprensión, mantenibilidad, calidad, fiabilidad... Calidad, coste, estabilidad Productividad, experiencia, calidad, usabilidad, fiabilidad 13

4. Clasificación de las métricas del software: procesos Los aspectos relacionados con el proceso de desarrollo de software que pueden medirse son: Atributos internos que pueden medirse directamente: Duración de un proceso o de una de sus actividades. Esfuerzo asociado con el proceso o con una de sus actividades. Número de incidentes de un tipo determinado que ocurren durante el proceso o una de sus actividades.... Esas medidas pueden combinarse con otras para tener un mayor conocimiento del proceso de desarrollo. Ejemplo: coste/número de errores Atributos externos del Proceso: Controlabilidad Observabilidad Estabilidad... A menudo se proponen medidas de atributos externos en función de atributos internos. Ejemplo: la efectividad del mantenimiento del código puede medirse en función de la proporción entre el número de errores descubiertos y el número de errores corregidos. 14

4. Clasificación de las métricas del software: procesos Según CMMI, pueden existir 6 niveles de madurez en el proceso de desarrollo de Software: - CMMI level 0: Incomplete. - CMMI level 1: Performed. - CMMI level 2: Managed. - CMMI level 3: Defined. - CMMI level 4: Quantitatively managed. - CMMI level 5: Optimizing. http://www.sei.cmu.edu/cmmi/ PSL logra el nivel 5 en CMMI y se ubica en un grupo de solo 8 compañías en el mundo que lo han alcanzado. (Medellín, Colombia, Julio 25, 2003). Software de primer mundo a precios de país en vías de desarrollo... http://www.psl.com.co/ 15

4. Clasificación de las métricas del software: productos Atributos externos, que dependen del comportamiento del producto en un entorno determinado: Usabilidad Integridad Eficiencia Reusabilidad Portabilidad... Atributos internos del producto: Medidas de tamaño (longitud del código, funcionalidad...) Medidas de diseño Acoplamiento: grado de interdependencia entre módulos Cohesión: grado en el los componentes locales de un módulo colaboran para realizar una tarea concreta Modularidad... Medidas de complejidad (estructuras de datos, estructura lógica...)... El uso principal de los atributos internos es la predicción de los atributos externos. 16

4. Clasificación de las métricas del software: recursos Los recursos incluyen cualquier entrada en la producción de software. Las medidas de recursos ayudan a controlar el proceso indicando cómo el proceso está usando y transformando las entradas en salidas. Los recursos internos que se pueden medir directamente son: Personal Materiales Herramientas Métodos... Los recursos externos pueden obtenerse a partir de los anteriores: Coste Productividad productividad = cantidad de salida / esfuerzo de entrada 17

5. Recogida de datos métricos Propiedades de los datos: Correctos: la recogida debe hacerse de acuerdo a las reglas exactas de la definición o de la métrica. Exactos: la diferencia entre el valor resultante de la medida y el valor real del dato debe ser lo mínima posible. Precisos: el número de cifras utilizadas para expresarlos debe ser la apropiada. Consistentes: evaluaciones diferentes sobre los mismos datos deben dar los mismos resultados. Replicables: deben servir para comparar datos obtenidos en circunstancias diferentes. Asociados con una actividad o periodo de tiempo particular. Proceso, producto recurso Elección y recogida Datos sin de datos refinar Extracción Datos refinados Análisis Valores de atributos derivados Medición directa Medición indirecta Modelo de recogida de datos El objetivo es mejorar mediante la medición, el análisis y la realimentación 18

5. Recogida de datos métricos El primer paso en la aplicación de las métricas es decidir qué medir. Los objetivos para el proyecto y producto deben estar bien definidos. Base Histórica. Ejemplo 1. Obtención de información. Ejemplo 2. El enfoque GQM (Goal-Question-Metric) puede utilizarse para seleccionar e implementar métricas de una manera efectiva (http:www.gqm.nl). Se aplican varios pasos: Lista de los objetivos y agentes. Áreas de medición. Definición de términos. Para cada objetivo obtener las preguntas que deben contestarse para saber si se están cumpliendo los objetivos. Decidir qué medir para poder contestar las preguntas de forma adecuada. OBJETIVO: Evaluar la efectividad del estándar de codificación PREGUNTAS: Quien está usando el estándar? MEDIDAS INTERMEDIAS: MÉTRICAS Técnicos usando el estándar Total técnicos Cual es la productividad del codificador? Esfuerzo en codificación con y sin estándar Cual es la calidad del código? Cantidad de código Errores?...?...?... Ejemplo de métricas derivadas con el método GQM 19

5. GQM (Goal Question Metric) OBJETIVOS Mejorar la planificación del proyecto. Incrementar la contención de defectos. Incrementar la Fiabilidad. AREAS DE MEDICIÓN Defectos entregados y defectos entregados por tamaño.... DEFINICIÓN DE TÉRMINOS PROBLEMA SOFTWARE. ERROR, DEFECTO, FALLO AVERÍA.. MÉTODOS GQM: Objetivo: mejorar la planificación del proyecto. Pregunta: Cuál es la precisión en la estimación del valor real del plazo del proyecto? Métrica: Precisión en la estimación del plazo (SEA) SEA=Duración real /duración estimada 20

6. Medición de atributos internos del producto Los atributos internos describen los productos de software de forma que dependen únicamente del producto mismo. El producto puede ser descrito en función de su tamaño. Se pueden definir un conjunto de atributos para medir el tamaño del software: Longitud: tamaño físico del producto. Funcionalidad: funciones que proporciona el producto al usuario. Complejidad (de tiempo o espacio): recursos necesarios (de tiempo o memoria de ordenador) para implementar una solución particular. Las propiedades estructurales del software son atributos internos relacionados con la calidad del producto. Los tipos de medidas estructurales son: Flujo de control: secuencia en que se ejecutan las instrucciones. Flujo de datos: seguimiento de cómo los datos se crean y se manejan por un programa. Estructura de los datos: organización de los datos independiente del programa. Los principales productos que resulta útil medir son la especificación, el diseño y el código. 21

6. Medición de atributos internos del producto: Longitud Código El numero de líneas de código (LOC) es la medida más usada para medir la longitud del código fuente. Se han realizado muchas propuestas para contarlas. La más extendida es la de HP que no contabiliza las líneas comentadas ni en blanco. La abreviatura que se usa para estas líneas es NCLOC o ELOC (effective lines of code). Es útil medir por separado las líneas comentadas (CLOC) para calcular esfuerzo, productividad, etc. La longitud total será: LOC = NCLOC + CLOC También puede se útil calcular la densidad de comentarios: CLOC/LOC Para propósitos tales como la prueba es importante conocer cuanto código ejecutable se produce, para ello se mide el número de sentencias ejecutables (ES), ignorando los comentarios, declaraciones de datos y cabeceras. Otra propuesta consiste en contabilizar únicamente el código entregado al cliente. Se cuenta el número de DSI (delivered source instruction) que incluye las declaraciones de datos, las cabeceras y las instrucciones fuente. 22

6. Medición de atributos internos del producto: Referentes al código Código Número de métodos estáticos. Afferent Coupling: Número de clases fuera del paquete que dependen de clases dentro del paquete. Efferent Coupling: Númeor de clases dentro del paquete que dependen de clases fuera del paquete. Nested Block Depth: profundidad en bloques anidados. Lack of Cohesion in Methods (LCOM), Falta de cohesión en métodos: Si es cerca de 1 quiere decir que se nos aconseja que dividamos la clase en varias subclases. 23

6. Medición de atributos internos del producto: longitud Métricas de Halstead (1977): Considera un programa P como un conjunto de tokens (unidad sintáctica más elemental distinguible por un compilador) que se pueden clasificar como operandos y operadores Las métricas básicas para los tokens son: n 1 : número de operadores únicos n 2 : número de operandos únicos N 1 : número total de ocurrencias de operadores N2: número total de ocurrencias de operandos Métricas compuestas para un programa: El tamaño (N) o longitud de un programa: N = N1 + N2 Vocabulario (n) de un programa: n = n1 + n2 Longitud estimada: L = N 1 log 2 n 1 + N 2 log 2 n 2 Volumen: V = N log 2 n donde N = N 1 + N 2 y n = n 1 + n 2 Esfuerzo de implementación: E = (n 1 N 2 N log 2 n ) / (2 n 2 ) Tiempo de desarrollo de un programa: T = E / B B : nº de discriminaciones mentales por segundo. Lo fija en 18. 24

6. Medición de atributos internos del producto: longitud Especificaciones y diseño Los documentos de especificación de requisitos y de diseño tienen representaciones de muchos tipos (texto, gráficos, símbolos...) La medición del atributo longitud exige la identificación de elementos atómicos que puedan contarse. Ejemplo: Diagramas de flujo de datos: procesos, entidades externas, almacenes de datos y flujo de datos. Especificaciones algebraicas: salidas, funciones, operaciones y axiomas. Se pueden definir páginas de documentación como objetos atómicos. Vista Diagrama Objetos atómicos Funcional Diagrama de flujo de datos Diccionario de datos Burbujas Elementos de datos Datos Diagrama entidad relación Objetos, relaciones Estado Diagrama de transición de estados Estados, transiciones Ejemplo de componentes atómicos del análisis estructurado 25

6. Medición de atributos internos del producto: funcionalidad Puntos de función (PF) Medida de la funcionalidad propuesta por Albrecht. Es una medida del producto y del proceso que se sigue para desarrollarlo. Está centrado en la funcionalidad o utilidad del producto. Los PF se obtienen utilizando una relación empírica basada en items del producto y valoraciones subjetivas de la complejidad del mismo. El paso previo al cálculo de los PF, es el cálculo de PFS (unadjusted function point count), puntos de función sin ajustar: Se determinan los siguientes elementos de alguna representación del software: Entradas externas: entradas de usuario que proporcionan datos a la aplicación. Salidas externas: Salidas que proporcionan información al usuario. Consultas externas: peticiones interactivas que requieren una respuesta. Ficheros externos: interfaces con otros sistemas legibles por la máquina. Ficheros internos: ficheros maestros lógicos del sistema. A cada elemento se le asigna un índice de complejidad entre tres: simple, media o complejo. A cada índice le corresponde un factor de ponderación. 26

6. Medición de atributos internos del producto: funcionalidad Factor de peso Item Simple Medio Complejo Entradas externas 3 4 6 Salidas externas 4 5 7 Consultas externas 3 4 6 Ficheros externos 7 10 15 Ficheros internos 5 7 10 Items y factores de peso para calcular los PFS 15 PFS = ((número de items de la clase i) peso i ) i=1 Para completar el cálculo de los PF es necesario conocer el factor de complejidad técnica (FCT) que engloba los 14 factores. F 1 Copias de seguridad y recuperación fiables Componentes del factor de complejidad técnica F 6 Entrada interactiva de datos F 11 Reusabilidad F 2 Comunicación de datos F 7 Facilidad operativa F 12 Facilidad de instalación F 3 Funciones distribuidas F 8 Actualización interactiva F 13 Múltiples sitios F 4 Rendimiento F 9 Interfaces complejas F 14 Facilidad de cambios F 5 Configuración muy cargada F 10 Procesamiento complejo 27

6. Medición de atributos internos del producto: funcionalidad Cada componente de la tabla anterior se sitúa en una escala entre 0 y 5 según su influencia: Ninguna influencia 0 Incidental 1 Moderado 2 Medio 3 Significativo 4 Esencial 5 La siguiente fórmula combina los 14 factores: 14 FCT = 0.65 + 0.01 F i i=1 Los valores constantes de la ecuación y los factores de ponderación se obtienen empíricamente. Cálculo final de los puntos de función: FP = UFC * FCT La técnica de puntos de función presenta problemas debido a la subjetividad de la aplicación de los factores y a la inexactitud de las medidas. Puntos de función o líneas de código? Existen factores de conversión (Albrecht/Jones) que permiten relacionar el número medio de LDC requerido para construir un PF en diferentes lenguajes. 28

6. Medición de atributos internos del producto: funcionalidad Fuente: Pressman, 5ª edición, pag. 62 Lenguaje de Programación Ensamblador C COBOL FORTRAN Pascal C++ Ada95 Visual Basic SmallTalk SQL Java LDC/PF 320 128 106 106 90 64 53 32 22 12 58 http://irb.cs.uni-magdeburg.de/sw-eng/us/java/fp/ 29

6. Medición de atributos internos del producto: funcionalidad Puntos objeto Utiliza una medida del tamaño que puede ser aplicada al comienzo del desarrollo. Para realizar el cálculo de los puntos objeto se realiza una medida inicial contando el número de pantallas, informes y componentes de 3GL de la aplicación. A cada objeto se le asigna un factor de peso según su grado de dificultad. Los pesos reflejan el esfuerzo relativo requerido para implementar un objeto de un determinado nivel. Tipo de objeto Simple Medio Difícil Pantalla 1 2 3 Informe 2 5 8 Componente 3GL - - 10 Tipos de objeto y factores de peso Puntos de característica Sistemas en tiempo real, control de procesos, empotrados,... sistemas 30

6. Medición de atributos internos del producto: medidas estructurales Flujo de control Grafos de flujo de control Las medidas de flujo de control generalmente se modelan mediante grafos dirigidos denominados grafos de flujo o grafos de flujo de control Un grafo dirigido está formado por un conjunto de puntos (nodos) y líneas (arcos). Cada arco tiene asignada una dirección representada por una flecha. Un arco se puede describir como un conjunto ordenado de pares, <x,y>, donde x e y son los nodos conectados por el arco. En un grafo de flujo se pueden definir los siguientes conceptos: Grado de entrada a un nodo: número de arcos que llegan al nodo. Grado de salida: número de arcos que salen del nodo. Camino: secuencia consecutiva de arcos dirigidos, algunos de los cuales pueden atravesarse más de una vez. Camino simple: camino que no tiene arcos repetidos. Nodos procedimiento: nodos cuyo grado de salida es igual a uno. Nodos predicado: nodos cuyo grado de salida esa mayor que uno. 31

6. Medición de atributos internos del producto: medidas estructurales Los nodos principio y fin del grafo se representan rodeados por una circunferencia. x 1 x 2 x n P n x 1, x 2... x n A x D 0 if A then x x 1 x 2 a 1 a 2 x n... a n C n Case A of a 1 : x 1 a 2 : x 2 a n : x n A x D 2 while A do X D 3 repeat X until A x A Grafos de flujo para diferentes estructuras de programa 32

6. Medición de atributos internos del producto: medidas estructurales Complejidad ciclomática de McCabe: La complejidad de un programa se mide mediante el número ciclomático (v) de su grafo de flujo (F): v(f) = e n + 2 siendo e el número de arcos y n el número de nodos de F. El número ciclomático: Mide el número de caminos linealmente independientes. Es un indicador útil de la dificultad de prueba y mantenimiento de un programa o módulo. Para valores superiores a 10 en un determinado módulo, éste puede ser problemático. 33

6. Medición de atributos internos del producto: medidas estructurales Complejidad ciclomática de McCabe: Determina en número de caminos a través de un programa. Sirve para predecir los módulos que son más propensos a errores. Determina el número de casos de prueba para asegurarse que todas las sentencia de un componente han sido ejecutadas al menos una vez. Cyclomatic Complexity 1-10 11-20 21-50 greater than 50 Risk Evaluation a simple program, without much risk more complex, moderate risk complex, high risk program untestable program (very high risk) http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html 34

DEMO http://www.hypercisioninc.com/jmetra/jmetradoc.html jmetra is a simple Code Metrics Collection and Analysis Package for Java http://www.it.swin.edu.au/projects/jmetric/products/jmetric/ JMetric aims to bring current OO-metrics, and metrics tools research to the practitioner. http://www.qido.at/ QiDO is a provider of quality management at the source of your projects. What you get is a permanent overview about the status of your software development. 35

Practica, referencias http://www.eclipse.org http://jalopy.sourceforge.net/ http://metrics.sourceforge.net/ 36

7. Medición de atributos externos del producto Los atributos externos de un producto son aquellos que pueden medirse únicamente con respecto a cómo el producto se relaciona con su entorno. Los atributos externos sólo son medibles cuando el producto está completo. La mayoría están relacionados con algún aspecto de la calidad. Los modelos de calidad recogen atributos denominados factores de calidad (atributos de alto nivel). Los factores de calidad puede descomponerse en atributos de bajo nivel denominados criterios de calidad. Los criterios de calidad pueden asociarse con un conjunto de atributos de bajo nivel medibles directamente obteniendo las métricas de calidad. FACTOR Mantenibilidad CRITERIO Facilidad de corrección Chequeabilidad Expansibilidad MÉTRICA Cuenta de fallos Grado de prueba Esfuerzo Cuenta de cambios Descomposición del factor mantenibilidad 37

7. Medición de atributos externos del producto El modelo de calidad estándar ISO 9126 En el estándar denominado Evaluación de Productos Software: Características de calidad y guías para su uso, la calidad se descompone en seis factores: Funcionalidad Fiabilidad Eficiencia Usabilidad Mantenibilidad Portabilidad El estándar define un proceso para evaluar la calidad del software según la figura adjunta. ISO 9126 y otras informaciones técnicas Especificación de requisitos de calidad Definición de requisitos de calidad Selección de métricas Definición de niveles de clasificación Requisitos de gestión Definición de criterios de valoración Desarrollo de software Productos Medición Clasificación Resultados Valoración Modelo del proceso de evaluación ISO 9126 38

El modelo de calidad estándar ISO 9126 Usabilidad: Un conjunto de atributos que tienen que ver con el esfuerzo necesario para uso... 39

El modelo de calidad estándar ISO 9126 Objetivo: Evaluación de Calidad de productos Tiene 3 fases: DEFINICIÓN DE REQUISITOS: Necesidades técnicas iniciales -> [ Definición de QR] Especificación de QR (QRS). FASE DE PREPARACIÓN: QRS --> [ Selección de métricas ] --> Métricas QRS --> [ Definir niveles de evaluación] --> Niveles evaluación QRS --> [ Definición de criterios de valoración] -> Criterios FASE DE EVALUACIÓN: Productos, Métricas --> [ Medición ] -> Valores medidos Valores medidos, niveles evaluación --> [ Evaluación ] --> niveles evaluados. Niveles evaluados, Criterios --> [ valoración ] --> Resultado 40

7. Medición de atributos externos del producto Medición de la portabilidad Se entiende por portabilidad la facilidad de mover una aplicación de un entorno a otro. La portabilidad se puede expresar como: portabilidad = 1 - (ET/ER) ET: medida de los recursos necesarios para mover el sistema a otro entorno (Target Environment). ER: medida de los recursos necesarios para crear el sistema en el entorno residente (Resident Environment) Medición de la densidad de defectos Para cualquier producto software se pueden considerar dos tipos de defectos: Defectos conocidos Defectos latentes La densidad de defectos se puede definir en función de los primeros: Densidad de defectos = número de defectos conocidos tamaño del producto 41

7. Medición de atributos externos del producto Medida de la calidad basada en defectos Se puede medir la calidad en función de la relación: Tiempo empleado en la corrección de defectos post-release Tiempo total de desarrollo del sistema Medidas de usabilidad (I) Boehm define usabilidad como el grado en que un producto se puede usar de forma apropiada y práctica. La buena usabilidad incluye: Manuales bien estructurados Buen uso de menús y gráficos Mensajes de error informativos Funciones de ayuda Interfaces consistentes La usabilidad se puede descomponer en atributos medibles de los siguientes tipos: Nivel de entrada Nivel de aprendizaje Facilidad de manejo 42

7. Medición de atributos externos del producto Medidas de usabilidad (II) Las medidas de usabilidad se suelen expresar en función del rendimiento del usuario. Se han propuesto varias medidas de ese tipo: Efectividad de las tareas: % de efectividad = (cantidad * calidad)/100 Eficiencia temporal: eficiencia = efectividad/tiempo de tarea Periodo de tiempo productivo: tiempo de tarea - tiempo no productivo periodo productivo = x 100 tiempo de tarea Eficiencia relativa del usuario: eficiencia del usuario eficiencia relativa = x 100 eficiencia del experto 43

7. Medición de atributos externos del producto Medidas de mantenibilidad (I) La mantenibilidad de un producto refleja su facilidad de comprensión, mejora y corrección. Se puede aplicar tanto al código como a los documentos de diseño y especificación de requisitos. Una medida de mantenibilidad es la denominada MTTR (mean time to repair). Para calcularla se requiere conocer: Tiempo de reconocimiento del problema Tiempo de demora administrativa... Tiempo de recolección de herramientas.. Tiempo de análisis del problema Tiempo de especificación del cambio Tiempo de cambio Otras medidas dependientes del entorno son: Número de problemas no resueltos Tiempo utilizado en problemas no resueltos Porcentaje de cambios que introducen nuevos fallos Número de módulos modificados en la implementación de un cambio 44

7. Medición de atributos externos del producto Medidas de mantenibilidad (II) La mantenibilidad puede predecirse también a partir de atributos internos como la complejidad o la calidad de la documentación. Se han realizado estudios sobre la relación entre el número ciclomático y el esfuerzo de mantenimiento. En [Porter y Selby, 1990] se utilizan árboles de decisión para lby, 1990] se utilizan árboles de decisión para eterminar los atributos más influyentes en la aparición de errores de interfaz entre módulos durante el enimiento del sistema. [Belady y Lehman, 1976] sugieren un modelo para predecir el esfuerzo de mantenimiento en función de tributos externos e internos c-d) -d) tal de mantenimiento al de mantenimiento ductivo pírica mplejidad 45

8. Medición de recursos Los recursos son las entidades que se requieren en las actividades de proceso. Los recursos incluyen cualquier entrada en la producción de software: personal, materiales, herramientas, métodos, coste, productividad,... El coste generalmente se mide, a partir del resto de los recursos, pudiéndose ver como el coste de las entradas afecta al coste de las salidas. La productividad es otro atributo externo importante que depende del proceso de desarrollo. Normalmente se mide de la forma: cantidad de salida/ cantidad de entrada La productividad de un recurso de software se mide en función de la proporción entre lo que entra y sale de un proceso de producción de software. Ecuación de productividad: tamaño de software/ esfuerzo Unidades más utilizadas: Tamaño: líneas de código, PF,... Esfuerzo: personas-mes, persona-día,... 46

8. Medición de recursos Productividad La medición de la productividad en función del número de líneas de código puede presentar problemas: Dependencia de la técnica de contar Dependencia del lenguaje de programación Penalización del buen estilo de programación... Para solventar esos problemas algunos autores han propuesto medir la productividad a partir de la funcionalidad. Ventajas de los puntos de función: Reflejan mejor el valor de la salida Pueden usarse en cualquier momento del ciclo de vida Se pueden utilizar para medir el progreso comparando los puntos de función completados frente a los incompletos. Problemas que presentan los puntos de función: son más difíciles de medir que las líneas de código y tienen un componente subjetivo. 47

8. Medición de recursos Equipos La estructura del equipo del proyecto es un factor clave en la productividad. El factor particular que afecta a la productividad es la complejidad de las comunicaciones: complejidad causada por el número de individuos implicados y el método de comunicación requerido entre los miembros de un proyecto (Grady/Caswell). Equipos según su estructura: jerárquico, democrático,... Si se representa la estructura mediante un grafo (nodo= miembro, arco= camino de comunicación entre miembros): Tamaño: nº de nodos del grafo. Densidad de comunicación: relación entre arcos y nodos.... Fenton establece la siguiente escala ordinal para medir la experiencia de cada miembro del equipo: 0 (ninguna), 1 (familiaridad pero sin experiencia, práctica), 2 (experiencia práctica de más de 20 h en un proyecto), 3 (experiencia de entre 21 y 100h en varios proyectos), 4 (amplia experiencia). La experiencia del equipo se calcula hallando la media de las medidas de experiencia individual. Algunos métodos como COCOMO utilizan escalas de medida ordinales (muy baja, baja, nominal, alta y muy alta) para cada uno de los atributos de personal: experiencia en la aplicación, en el lenguaje, en el uso de herramientas,... La productividad del equipo no sólo depende de las productividades individuales de sus miembros, sino también de la comunicación entre ellos. 48

8. Medición de recursos Métodos y herramientas Existen pocos estudios sobre el grado en que las herramientas aumentan la productividad. Los modelos de estimación del esfuerzo requieren una medida del nivel de uso de métodos y herramientas. El modelo COCOMO incluye dos guías de coste: uso de herramientas y uso de técnicas modernas de programación con escalas de medida (muy baja, baja, nominal, alta, muy alta) Fenton propone la siguiente escala para evaluar el uso de herramientas por cada diseñador: 0 No se usan herramientas. 1 Las herramientas sirven de ayuda en el 20% de la documentación. 2 Las herramientas se usan para documentar al menos el 50% del diseño de alto nivel. 3 Las herramientas se usan para documentar al menos el 50% del diseño de alto nivel y diseño detallado. 4 Las herramientas se usan para el diseño y la generación automática de código de al menos el 50% del sistema. 5 Las herramientas se usan para el diseño y la generación automática de código de al menos el 90% del sistema. Escalas similares se utilizan para cuantificar otros recursos: Homogeneidad y compatibilidad del equipo del proyecto. Uso de correo electrónico y otras facilidades de comunicación. Nivel de soporte administrativo. Nivel de recursos de información.... 49

9. Métricas para sistemas orientados a objetos La mayoría de las métricas orientadas a objetos se basan en las características distintivas del software orientado a objetos respecto al software convencional: Localización: forma en que se concentra la información dentro de un programa Encapsulamiento: empaquetamiento de una colección de elementos. Ocultamiento de la información: supresión de los detalles operativos de un componente. Herencia: mecanismo que permite la propagación de responsabilidades de un objeto a otro. Abstracción: mecanismo que permite concentrarse en los detalles esenciales de un componente sin considerar los de nivel inferior. Clasificación de las métricas: Métricas orientadas a clases Métricas orientadas a operaciones Métricas para pruebas orientadas a objetos Métricas para proyectos orientados a objetos. 50

9. Métricas para sistemas orientados a objetos Métricas orientadas a clases Conjunto de métricas CK (Chidamber/Kemerer) Métodos ponderados por clase (MPC): recoge la noción de complejidad. Para una clase C con M 1, M 2,...,M n métodos con un peso de complejidad c 1, c 2,..., c n respectivamente, MPC = c i Profundidad del árbol de herencia (PAH): longitud del camino máximo entre un nodo y la raíz del árbol. Número de hijos (NH): es el número de descendientes inmediatos de una clase (nodo). Acoplamiento entre clases (AC): número de clases que se acoplan con una clase dada. Respuesta para una clase (RPC): es el número de métodos locales a una clase más el número de métodos llamados por los métodos locales. Métrica de falta de cohesión (MFC): número de métodos locales que no acceden a atributos comunes. 51

9. Métricas para sistemas orientados a objetos Métricas orientadas a clases Métricas de Lorenz y Kidd (Lorenz/Kidd) Tamaño de clase (TC). El tamaño general de una clase se determina utilizando las siguientes medidas: Número total de operaciones Número de atributos Número de operaciones invalidadas por una subclase (NOI). La invalidación consiste en la sustitución en la subclase de una operación heredada por una versión especializada. Número de operaciones añadidas por una subclase (NOA): operaciones propias de la subclase que no aparecen en las superclases. Índice de especialización (IE): IE = (NOI nivel)/ M total nivel: nivel de la clase en la jerarquía de clases M total : Número total de métodos de la clase 52

9. Métricas para sistemas orientados a objetos Métricas orientadas a operaciones Métricas de Churcher y Shepperd Tamaño medio de operación (TO med ): Número de mensajes enviados por la operación. Complejidad de operación (CO): se puede aplicar cualquier métrica de complejidad del software convencional. Número medio de parámetros por operación (NP med ). Métricas para pruebas orientadas a objetos (Binder) Encapsulamiento Carencia de cohesión en métodos (CCM): se aplica la métrica CK. Porcentaje público y protegido (PPP): porcentaje de atributos públicos de la clase. Acceso público a datos miembro(apd): número de clases que pueden acceder a atributos de otras clases. 53

9. Métricas para sistemas orientados a objetos Métricas para pruebas orientadas a objetos Herencia Número de clases raíz (NCR): número de jerarquías de clases distintas. Admisión (ADM): indicación de la herencia múltiple. Número de descendientes (NDD) y profundidad del árbol de la herencia (APM): se aplican las correspondientes métricas CK. Métricas para proyectos orientados a objetos Métricas de Lorenz y Kidd (Lorenz/Kidd). Número de guiones de escenario (NGE): un guión de escenario es una secuencia detallada de pasos que describen la interacción entre el usuario y la aplicación. Número de clases clave (NCC): clases que se centran en el dominio de negocio del problema en cuestión. Número de subsistemas (NSUB): proporcionan una idea de la asignación de recursos, de la planificación y del esfuerzo global de integración. 54

Referencias Basili, V.R. y Weiss, D., A Methodology for collecting valid software engineering data, IEEE Transaction on Software Engineering,10(6), 728-38 1984. Basili, V.R. y Rombach, H.D., The TAME project: Towards improvement-oriented software environments, IEEE Transaction on Software Engineering,14(6), 758-73, 1988. Belady, L.A., and Lehman, M.M., A Model of Large Program Development, IBM Systems Journal, 15 (3), pp. 225-252, 1976. Binder, R., Testing Object-Oriented Systems, American Programmer, 7(4), 22-29, 1994. Chidamber, S.R. y Kemerer, C.F., A metrics suite for object-oriented design,ieee Trans. Software Engineering, 20(6), 476-493, 1994. Churcher, N.I. and Shepperd, M.J., Towards Conceptual Framework for Object- Oriented Metrics, ACM Software Engineering Notes, 20 (2), 67-76, 1995. DeMarco, T., Structured Analysis and Sistem Specification, Yourdon Press, 1978. DeMarco, T., Controlling Software Projects, Yourdon Press, 1982. Dolado, J.J. y Fernández, L. (coordinadores). Medición para la Gestión en la Ingeniería del Software. Ra-ma, 2000. Fenton, N.E. y Pfleeger, S.L., Software metrics. A rigorous & practical approach, 1997. Halstead, M.H., Elements of Software Science, Elsevier North-Holland, 1977. IEEE Software Engineering Standards,. Standard 610.12-1990, 1993. Lorenz, M. and Kidd, J., Object_oriented Software Metrics, Prentice Hall 1994. McConnell, S., Desarrollo y gestión de proyectos informáticos, Mc Graw Hill 1997. Paulk, M. et al., Capability Maturity Model for Software, Software Engineering Institute, Carnie Mellon University, Pittsburgh, P.A., 1993. Pressman, R.S., Ingeniería del Software. Un enfoque práctico, Mc Graw Hill, 55 2001.

Medición de atributos internos del producto. Funcionalidad Entrada: 1. Nombre del documento a revisar Fichero externo: 1. Documento a revisar Usuario Consulta: 1. Palabras procesadas? Salidas: 1. Número total palabras revisadas 2. Número total de errores detectados 3. Lista de palabras con errores ortográficos Corrector ortográfico Fichero interno: 1. Diccionario Entradas externas: Salidas externas: Consultas externas: Ficheros externos: Ficheros internos: PFS: FCT: PF: 56