Medición del Software

56
1 MEDICIÓN DEL SOFTWARE

Transcript of Medición del Software

Page 1: Medición del Software

1

MEDICIÓN DEL SOFTWARE

Page 2: Medición del Software

2

MEDICIÓN DEL SOFTWARE

Las Frases:“ Software Engineers are not just good

programers”

“...Physicists are primarily expected, andtrained, to extend our knowledge, while EEs areexpected to develop products or techniques forproduct production. Each career path attracts adistinct type of student and requires a distincteducational program.Most students choose to study EE rather thanPhysics because they like building things....”

[Parnas99]

Page 3: Medición del Software

3

MEDICIÓN DEL SOFTWARE

1. Conceptos básicos2. Medidas y modelos3. Alcance de las métricas 4. Clasificación de las métricas

ProcesosProductosRecursos

5. Recogida de datos métricosBase HistóricaObtención de informaciónMétodo Objetivo/Pregunta/Métrica

6. Medición de atributos internos del productoLongitudFuncionalidadComplejidadMedidas estructurales

7. Medición de atributos externos del producto8. Medición de recursos9. Métricas para sistemas orientados a objetos

Page 4: Medición del Software

4

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]

Page 5: Medición del Software

5

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).

Page 6: Medición del Software

6

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ónEs 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).

Entidadmedida

Unidad

Valor(magnitud)

Atributo

posee

cuantifica

mide

se aplica a

se expresa en

*

1

*

1

1

1..*

1..*

1

1

1..*

Mundo real(empírico)

Mundo formal(matemático)

Modelo estructural (parcial) de Kitchenham et al.

Page 7: Medición del Software

7

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

Page 8: Medición del Software

8

1. Conceptos Básicos

MétricaMedida cuantitativa del grado en que un sistema, componente o proceso posee un atributo dado (IEEE, 1993).IndicadorMé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.ModeloUna 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.

Page 9: Medición del Software

9

MEDICIÓN DEL SOFTWARE

La Frase:“All models are wrong but

some are useful”

[George Box]

Page 10: Medición del Software

10

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.

Page 11: Medición del Software

11

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 productividadRecolecció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 complejidadPara 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étricasLa 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 herramientasLas 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 herramientasJustificación de formación adicional

Page 12: Medición del Software

12

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

Page 13: Medición del Software

13

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.

ATRIBUTOS ENTIDADES Internos Externos

Productos Especificaciones, diseño, código...

Tamaño, reusabilidad, modularidad, funcionalidad, acoplamiento, complejidad...

Comprensión, mantenibilidad, calidad, fiabilidad ...

Procesos Realización de la especificación, del diseño, del código...

Tiempo, esfuerzo, cambios en requisitos, fallos en la especificación

Calidad, coste, estabilidad

Recursos Personal, equipos, hardware, software...

Edad, precio, tamaño del equipo, velocidad, tamaño de memoria

Productividad, experiencia, calidad, usabilidad, fiabilidad

Page 14: Medición del Software

14

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:ControlabilidadObservabilidadEstabilidad...

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.

Page 15: Medición del Software

15

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/

Page 16: Medición del Software

16

4. Clasificación de las métricas del software: productos

Atributos externos, que dependen del comportamiento del producto en un entorno determinado:

UsabilidadIntegridadEficienciaReusabilidadPortabilidad...

Atributos internos del producto:Medidas de tamaño (longitud del código, funcionalidad...)Medidas de diseño

Acoplamiento: grado de interdependencia entre módulosCohesión: grado en el los componentes locales de un módulo colaboran para realizar una tarea concretaModularidad.................

Medidas de complejidad (estructuras de datos, estructura lógica...)...

El uso principal de los atributos internos es la predicción de los atributos externos.

Page 17: Medición del Software

17

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:

PersonalMaterialesHerramientasMétodos...

Los recursos externos pueden obtenerse a partir de los anteriores:

CosteProductividad

productividad = cantidad de salida / esfuerzo de entrada

Page 18: Medición del Software

18

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,productorecurso

Datos sin refinar

Datosrefinados

Valores deatributos

derivados

Elección

y recogida

de datos

ExtracciónAnálisis

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

Page 19: Medición del Software

19

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.

MEDIDAS INTERMEDIAS:

OBJETIVO: Evaluar la efectividad del estándar de codificación

PREGUNTAS: ¿Quien está usando el estándar?

¿Cual es la productividad del

codificador?

¿Cual es la calidad del código?

Técnicos usandoel estándar

Cantidad de código

ErroresEsfuerzo en codificación con y sin estándar

Total técnicos

MÉTRICAS

¿?...... ¿?...¿?.....Ejemplo de métricas derivadas con el método GQM

Page 20: Medición del Software

20

5. GQM (Goal Question Metric)

OBJETIVOSMejorar la planificación del proyecto.Incrementar la contención de defectos.Incrementar la Fiabilidad.

AREAS DE MEDICIÓNDefectos entregados y defectos entregados por tamaño....

DEFINICIÓN DE TÉRMINOSPROBLEMA 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

Page 21: Medición del Software

21

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.

Page 22: Medición del Software

22

6. Medición de atributos internos del producto:

Longitud

CódigoEl 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 + CLOCTambién puede se útil calcular la densidad de comentarios:

CLOC/LOCPara 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.

Page 23: Medición del Software

23

6. Medición de atributos internos del producto: Referentes al código

CódigoNú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.

Page 24: Medición del Software

24

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 operadoresLas métricas básicas para los tokens son:

n1: número de operadores únicosn2: número de operandos únicosN1: número total de ocurrencias de operadoresN2: número total de ocurrencias de operandos

Métricas compuestas para un programa:El tamaño (N) o longitud de un programa:

N = N1 + N2Vocabulario (n) de un programa:

n = n1 + n2Longitud estimada:

L = N1 log2 n1 + N2 log2 n2Volumen:

V = N log2 n donde N = N1 + N2 y n = n1 + n2

Esfuerzo de implementación:E = (n1 N2 N log2 n ) / (2 n2)

Tiempo de desarrollo de un programa:T = E / B

B : nº de discriminaciones mentales por segundo. Lo fija en 18.

Page 25: Medición del Software

25

6. Medición de atributos internos del producto:

longitud

Especificaciones y diseñoLos 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

Page 26: Medición del Software

26

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íricabasada 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.

Page 27: Medición del Software

27

6. Medición de atributos internos del producto:

funcionalidad

Factor de pesoItem Simple Medio Complejo

Entradas externas 3 4 6Salidas externas 4 5 7Consultas externas 3 4 6Ficheros externos 7 10 15Ficheros internos 5 7 10

15PFS = ∑ ((número de items de la clase i) ∗ pesoi)

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.

Items y factores de peso para calcular los PFS

Componentes del factor de complejidad técnica F1 Copias de seguridad y

recuperación fiables F6 Entrada interactiva de

datos F11 Reusabilidad

F2 Comunicación de datos F7 Facilidad operativa F12 Facilidad de instalación F3 Funciones distribuidas F8 Actualización interactiva F13 Múltiples sitios F4 Rendimiento F9 Interfaces complejas F14 Facilidad de cambios F5 Configuración muy

cargada F10 Procesamiento complejo

Page 28: Medición del Software

28

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 0Incidental 1Moderado 2Medio 3Significativo 4Esencial 5

La siguiente fórmula combina los 14 factores:

14FCT = 0.65 + 0.01 ∑ Fi

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.

Page 29: Medición del Software

29

6. Medición de atributos internos del producto:

funcionalidad

Lenguaje de Programación LDC/PF

Ensamblador 320C 128COBOL 106FORTRAN 106Pascal 90C++ 64Ada95 53Visual Basic 32SmallTalk 22SQL 12Java 58

http://irb.cs.uni-magdeburg.de/sw-eng/us/java/fp/

Fuente: Pressman, 5ª edición, pag. 62

Page 30: Medición del Software

30

6. Medición de atributos internos del producto:

funcionalidad

Puntos objetoUtiliza 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ícilPantalla 1 2 3Informe 2 5 8Componente 3GL - - 10

Tipos de objeto y factores de peso

Puntos de característicaSistemas en tiempo real , control de procesos, sistemas empotrados,...

Page 31: Medición del Software

31

6. Medición de atributos internos del producto: medidas estructurales

Flujo de controlGrafos 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 controlUn 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.

Page 32: Medición del Software

32

6. Medición de atributos internos del producto: medidas estructurales

Los nodos principio y fin del grafo se representan rodeados por una circunferencia.

x1 x2 xn Pnx1, x2 ... xn

A

x D0if A then x

CnCase A of

a1 : x1a2 : x2

an : xn

x1 x2

a1 a2 xn...an

A

x

x

A

D2while A do X

D3repeat X until A

Grafos de flujo para diferentes estructuras de programa

Page 33: Medición del Software

33

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 + 2siendo 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.

Page 34: Medición del Software

34

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.

CyclomaticComplexity

Risk Evaluation

1-10 a simple program, without much risk

11-20 more complex, moderate risk

21-50 complex, high risk program

greater than 50 untestable program (very high risk)

http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html

Page 35: Medición del Software

35

“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 yoursoftware development.

Page 36: Medición del Software

36

Practica, referencias

http://www.eclipse.org

http://jalopy.sourceforge.net/

http://metrics.sourceforge.net/

Page 37: Medición del Software

37

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.

Mantenibilidad

Facilidad de corrección

Chequeabilidad

Expansibilidad

Cuenta de fallos

Grado de prueba

Esfuerzo

Cuenta de cambios

FACTORCRITERIO MÉTRICA

Descomposición del factor “mantenibilidad”

Page 38: Medición del Software

38

7. Medición de atributos externos del producto

El modelo de calidad estándar ISO 9126En 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:

FuncionalidadFiabilidadEficienciaUsabilidadMantenibilidadPortabilidad

El estándar define un proceso para evaluar la calidad del software según la figura adjunta.

Modelo del proceso de evaluación ISO 9126

Definición de requisitos de

calidad

ISO 9126 y otras informaciones técnicas

Selección de métricas

Definición de niveles de

clasificación

Definición de criterios de valoración

Desarrollo de software

Medición

Clasificación

Valoración

Especificación de requisitos de calidad

Productos

Resultados

Requisitos de gestión

Page 39: Medición del Software

39

El modelo de calidad

estándar ISO 9126

Usabilidad: Un conjunto de atributos que tienen que ver con el esfuerzo necesario para uso...

Page 40: Medición del Software

40

El modelo de calidad

estándar ISO 9126

Objetivo: Evaluación de Calidad de productosTiene 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

Page 41: Medición del Software

41

7. Medición de atributos externos del producto

Medición de la portabilidadSe 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 defectosPara cualquier producto software se pueden considerar dos tipos de defectos:

Defectos conocidosDefectos latentes

La densidad de defectos se puede definir en función de los primeros:

número de defectos conocidosDensidad de defectos =

tamaño del producto

Page 42: Medición del Software

42

7. Medición de atributos externos del producto

Medida de la calidad basada en defectosSe 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 estructuradosBuen uso de menús y gráficosMensajes de error informativosFunciones de ayudaInterfaces consistentes

La usabilidad se puede descomponer en atributos medibles de los siguientes tipos:

Nivel de entradaNivel de aprendizaje Facilidad de manejo

Page 43: Medición del Software

43

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 productivoperiodo productivo = x 100

tiempo de tarea

Eficiencia relativa del usuario:

eficiencia del usuarioeficiencia relativa = x 100

eficiencia del experto

Page 44: Medición del Software

44

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 problemaTiempo de demora administrativa...Tiempo de recolección de herramientas..Tiempo de análisis del problemaTiempo de especificación del cambioTiempo de cambio

Otras medidas dependientes del entorno son:Número de problemas no resueltosTiempo utilizado en problemas no resueltosPorcentaje de cambios que introducen nuevos fallosNúmero de módulos modificados en la implementación de un cambio

Page 45: Medición del Software

45

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 mantenimientoal de mantenimientoductivopíricamplejidad

Page 46: Medición del Software

46

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/ esfuerzoUnidades más utilizadas:

Tamaño: líneas de código, PF,.... Esfuerzo: personas-mes, persona-día,....

Page 47: Medición del Software

47

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 contarDependencia del lenguaje de programaciónPenalizació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 salidaPueden usarse en cualquier momento del ciclo de vidaSe 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.

Page 48: Medición del Software

48

8. Medición de recursos

EquiposLa 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.

Page 49: Medición del Software

49

8. Medición de recursos

Métodos y herramientasExisten 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.. . .

Page 50: Medición del Software

50

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 programaEncapsulamiento: 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 clasesMétricas orientadas a operacionesMétricas para pruebas orientadas a objetosMétricas para proyectos orientados a objetos.

Page 51: Medición del Software

51

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 M1, M2, ...,Mn métodos con un peso de complejidad c1, c2, ..., cnrespectivamente,

MPC = ∑ ci

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.

Page 52: Medición del Software

52

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 operacionesNú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)/ Mtotal

nivel: nivel de la clase en la jerarquía de clasesMtotal: Número total de métodos de la clase

Page 53: Medición del Software

53

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 (TOmed): 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(NPmed).

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.

Page 54: Medición del Software

54

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.

Page 55: Medición del Software

55

ReferenciasBasili, 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-orientedsoftware 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 EngineeringInstitute, Carnie Mellon University, Pittsburgh, P.A., 1993.

Pressman, R.S., Ingeniería del Software. Un enfoque práctico, Mc Graw Hill, 2001.

Page 56: Medición del Software

56

Medición de atributos internos del producto.Funcionalidad

Entrada:1. Nombre del documento a revisar

Correctorortográfico

Usuario

Entradas externas: PFS:Salidas externas: FCT:Consultas externas: PF:Ficheros externos:Ficheros internos:

Fichero interno:1. Diccionario

Fichero externo:1. Documento a revisar

Consulta:1. ¿Palabras procesadas?

Salidas:1. Número total palabras

revisadas2. Número total de

errores detectados3. Lista de palabras con

errores ortográficos