Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Las Métricas de Software implican medir: medir involucra números; el uso de números para hacer
cosas mejor. Las Métricas de Software pretenden mejorar los procesos de desarrollo de Software y
mejorar, por tanto, todos los aspectos de la gestión de aquellos procesos.
Estas medidas son aplicables a todo el ciclo de vida del desarrollo, desde la iniciación, cuando
debemos estimar los costos, al seguimiento y control de la fiabilidad de los productos finales, y a la
forma en que los productos cambian a través del tiempo debido a la aplicación de mejoras.
Las medidas del Software y los modelos de medida son entonces útiles para estimar y predecir
costos y para medir la productividad y la calidad del producto. Un ingeniero del Software recopila
medidas y desarrolla métricas para obtener indicadores.
Áreas de Aplicación
La predicción de los niveles de calidad del Software, a menudo en términos de fiabilidad, es otra
área en que las Métricas de Software tienen un importante papel que jugar.
El uso de las Métricas de Software es proporcionar una verificación cuantitativa del diseño de
software es otra área bien definida. Estas Métricas no se van a estudiar en esta Unidad si no en la
Unidad de Diseño.
Recientemente se ha estudiado el efecto de los factores del entorno en la eficacia de los procesos
de desarrollo. Esta opción no está abierta para todas las organizaciones, pero existe una gran
preocupación sobre como incrementar la productividad de los procesos de desarrollo
introduciendo cambios en el entorno en el cual aquellos tienen lugar. Las medidas pueden ser
utilizadas para identificar donde deberían concentrarse los cambios.
La utilización de las Métricas para comprar unas organizaciones con otras es un área de aplicación
muy importante. CSC- Index en Europa y el Software Engineering Institute en E.E.U.U. ofrecen este
tipo de servicios a la industria y muchas organizaciones los utilizan. Un resultado de esta aplicación
es que se puede identificar que se está haciendo mal y quién lo está haciendo bien y aprender de
esas empresas.
Finalmente, el uso más común de las medidas de Software es la provisión de información de
gestión, que incluye datos acerca de la productividad, calidad y eficacia de los procesos.
El valor de esta información está en analizar los datos de las tendencias, día a día. ¿Está mejorando
o empeorando la calidad de un equipo de desarrollo?. Si es así, ¿por qué ocurre? ¿Qué puede
hacer la dirección para mejorar la situación?
La calidad de las medidas debería facilitar el desarrollo de modelos que sean capaces de predecir
el comportamiento de determinados parámetros que afectan al desarrollo de productos o
procesos.
Objetiva
Valida, la métrica debería medir exactamente lo que se quiere medir y no otra cosa.
Además, para una mejor utilización de estas medidas, a la hora de realizar estudios analíticos o
análisis estadísticos deberían de tener unos valores que se ajusten a una cierta escala de medida.
Las Métricas de Software se pueden clasificar, de una manera general. En Métricas de producto y
Métricas de proceso.
Las Métricas de Producto son medidas de producto Software durante cualquier fase de su
desarrollo desde los requisitos hasta la instalación. Las Métricas de Producto pueden medir la
complejidad del diseño, el tamaño del producto final (fuente u objeto) o el número de páginas de
documentación producida.
Las Métricas de Proceso son medidas del proceso de desarrollo del Software tales como tiempo
de desarrollo total, esfuerzo en días/ hombre o mes / hombre de desarrollo del producto, tipo de
metodología utilizada o nivel medio de experiencia de los programadores.
Métricas de Productos
Muchos de los trabajos iniciales realizados sobre las métricas de producto están relacionados con
las características del código fuente. Conforme se ha ido ganando experiencias con las métricas y
los modelos se ha puesto de manifiesto que la información disponible durante los primeros
momentos del ciclo de desarrollo puede ser de gran valor para controlar el proceso y los
resultados.
Vamos a analizar, de todos los tipos de medidas utilizadas en la medición del producto Software,
únicamente aquellas que nos interesen para realizar el proceso de estimación del Software, que
serán las métricas del tamaño, y en cierto grado las de calidad.
Las Métricas del Software orientadas al tamaño provienen de la normalización de las medidas de
`calidad y/o productividad considerando -el tamaño - del Software que se haya producido.
Existen un cierto número de Métricas que intentan cuantificar el tamaño del Software. La Métrica
más utilizada, líneas de código, tiene el inconveniente obvio de que sus valores no pueden ser
medidos hasta que el proceso de codificación ha finalizado. Los puntos de función, y los Bang de
De Marco tienen las ventajas de ser medibles durante los primeros pasos de desarrollo.
Existe un cierto consenso en cuanto a las medidas de longitud, pero no en cuanto a las medidas de
las especificaciones o diseño.
Existen algunos trabajos de medición de las funcionalidades de las especificaciones (que se aplican
igualmente al diseño y a los programas)
Existen muy pocos trabajos en cuanto a la medida de la complejidad del problema a resolver.
Nótese que este concepto es distinto que el de complejidad computacional, por tanto el trabajo
hecho en esa área no sirve.
A continuación, vamos a analizar las medidas más utilizadas en la determinación del tamaño del
Software.
• Líneas de Código: La medida más utilizada de la longitud del código fuente de un programa es el
Número de Líneas de Código (Lines of Code en Inglés, abreviado LOC).
Sin embargo esta métrica puede calcularse de muchas maneras. Estas diferencias afectan ala
tratamiento de las líneas en blanco y las líneas de comentarios, las sentencias no ejecutables, las
instrucciones múltiples por línea y las múltiples líneas por instrucción. Además, deberían contarse
las líneas reusables del código
Cuando se intenta utilizar esta medida (líneas de código) en términos de productividad surgen dos
problemas.
◦ No se tiene en cuenta el concepto de costos fijos ni tareas que se desarrolla que no produce
instrucciones
• Predicción de la longitud: Existen una serie de modelos que veremos más adelante para la
predicción del costo que dependen de la habilidad para predecir la longitud ( NLOC) con exactitud
con la fase de definición de especificaciones del sistema a implantar.
Ha habido algunos intentos para establecer relaciones empíricas entre la longitud del código de
programas y la longitud de la documentación.
•Ha habido dos intentos serios para medir la funcionalidad de un producto de Software. Uno de
ellos se debe a Albrecht y corresponde a los Puntos de Función (FPA, del inglés Function Point
Análisis) y otro debido a de De Marco, los Bang, que no ha tenido una gran difusión.
El objetivo más importante es identificar una medida del tamaño de Software que pueda ser la
variable predominante en los sistemas de predicción de costos y esfuerzo, así como en la
evaluación de la productividad. Este es un objetivo encomiable, ya que una medida de la
funcionalidad sería claramente preferible a la medida del tamaño exclusivamente de la longitud.
En ambos casos, los productos cuya funcionalidad está siendo medida con documentos de
especificación, pero que podrían aplicarse posteriormente a otros productos del ciclo de vida. La
funcionalidad, a pesar de los problemas existentes, es un atributo muy importante del producto y
es la mejor aproximación existente hasta la fecha.
Métricas de Calidad
Aunque se han realizado una gran cantidad de trabajos en está área, presenta una gran variedad
en los caminos seguidos frente a otras áreas de investigación de las métricas, tales como el
tamaño del Software o la complejidad, cuyo estudio ha sido más uniforme.
Han tenido considerable atención tres áreas:
Corrección de los programas, medida como el número de efectos. Un programa debe operar
correctamente o proporcionará poco valor a sus usuarios. La corrección es el grado en el que el
Software lleva a cabo su función requerida.
Fiabilidad del Software, calculada partir del dato anterior. En está época de intrusos informáticos y
de virus, la integridad del software ha llegado ha tener mucha importancia. Este atributo mide la
habilidad de un sistema para resistir ataques ( tanto accidentales como intencionales ) contra su
seguridad. El ataque se puede realizar en cualquiera de los tres componentes del Software,
programas, datos, y documentos.
Mantenibilidad del Software, que se mide a partir de otro conjunto de métricas, incluidas las de
complejidad: La facilidad de mantenimiento es la facilidad con la que se puede corregir un
programa si se encuentra un error, se puede adaptar si su entorno cambia, o mejorar si su cliente
desea un cambio de requisitos.
La calidad del software es una característica que, teóricamente al menos, puede ser medida en
cada fase del ciclo de desarrollo del Software.
Métricas de Procesos
¿Por qué es tan importante medir el proceso de ingeniería de Software y el producto (Software)
que produce?. La respuesta es relativamente obvia. Si no se mide, no hay una forma real de
determinar sí se está mejorando. Y si no se está mejorando, se está perdido.
Mediante el uso de la medición para establecer una línea base del proyecto, cada uno de estos
asuntos se hace más fácil de manejar. Ya hemos apuntado que la línea base sirve como base de la
estimación. Además, la recopilación de métricas de calidad permite a una organización -sintonizar-
su proceso de ingeniería del Software para eliminar las causas - poco vitales- de los defectos que
tienen el mayor impacto en el desarrollo del Software.
El trabajo técnico en la ingeniería del software comienza con la creación del modelo de
requerimientos. En esta etapa se derivan los requerimientos y se establece un cimiento para el
diseño. Por tanto, son deseables métricas de producto que proporcionen comprensión acerca de
la calidad del modelo de análisis.
La métrica de punto de función (PF) puede usarse de manera efectiva como medio para medir la
funcionalidad que entra a un sistema. Al usar datos históricos, la métrica PF puede entonces
usarse para:
1) Estimar el costo o esfuerzo requerido para diseñar, codificar y probar el software; 2) predecir el
número de errores que se encontrarán durante las pruebas, y 3) prever el número de
componentes y/o de líneas fuente proyectadas en el sistema implementado.
Las métricas de diseño para software de computadora, al igual que todas las demás métricas de
software, no son perfectas. El debate continúa acerca de su eficacia y sobre la forma en la que
deben aplicarse. Muchos expertos argumentan que se requiere más experimentación antes de
poder usar las medidas de diseño, aunque el diseño sin medición es una alternativa inaceptable.
Card y Glass definen tres medidas de complejidad del diseño de software: complejidad estructural,
complejidad de datos y complejidad del sistema.
En un tratamiento detallado de las métricas de software para sistemas OO, describe nueve
características distintas y mensurables de un diseño OO:
Complejidad. Como el tamaño, existen muchas visiones diferentes de la complejidad del software.
Whitmire ve la complejidad en términos de características estructurales al examinar cómo se
relacionan mutuamente las clases de un diseño OO.
Suficiencia. “el grado en el que una abstracción posee las características requeridas de él o en el
que un componente de diseño posee características en su abstracción, desde el punto de vista de
la aplicación actual”.
Similitud. El grado en el que dos o más clases son similares en términos de su estructura, función,
comportamiento o propósito se indica mediante esta medida.
Volatilidad. Como se menciona muchas veces en este libro, los cambios en el diseño pueden
ocurrir cuando se modifican los requerimientos o cuando ocurren modificaciones en otras partes
de una aplicación, lo que da como resultado la adaptación obligatoria del componente de diseño
en cuestión.
Las métricas de diseño en el nivel de componente pueden aplicarse una vez desarrollado el diseño
procedural y son “cajas de cristal” en tanto requieren conocimiento del funcionamiento interior
del módulo en el que se está trabajando. Alternativamente, pueden demorarse hasta que el
código fuente esté disponible.