PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA NOMBRE: JAVIER TRUJILLO NIVEL: SEXTO SISTEMAS ASIGNATURA: INGENIERIA DE SOFTWARE II Halstead Las métricas de Complejidad de Halstead fueron desarrolladas por Maurice Halstead como un medio de determinar la complejidad cuantitativa directamente de los operadores y operandos usados en el código fuente de un módulo. Para esto, Halstead definió los siguientes sig uientes números:
El número de operadores (únicos) distintos (n1) en el programa fuente. El número de operandos (únicos) distintos (n2) en el código fuente. El número total de operadores en un archivo de código fuente (N1). El número total de operandos en un archivo de código fuente (N2).
Para calcular estos números tomamos todos los tokens distintos de un programa fuente, calculando la frecuencia de cada uno. Para esto clasificaremos los tokens de un programa en: Operandos: Operandos: Pueden ser los identificadores que no sean palabras reservadas, las constantes numéricas, los identificadores de tipos (bool, string, char, int, long, etc), los caracteres y strings constantes. Operadores: Operadores: Que pueden ser todas las palabras reservadas (if, do, while, class, etc), los calificadores (como const, static) las palabras reservadas, y los operadores en expresiones (+, -, <>, ==, !=, <=, >>, etc). Dados los operadores, y los operandos, se definen las siguientes métricas:
Largo del Programa: N = N1 + N2 Tamaño del Vocabulario del programa: n = n1 + n2 Volumen del Programa: V = N * log2(n) Nivel de Dificultad: D = (n1/2) * (N2/n2) Nivel de Programa: L = 1/D Esfuerzo de Implementación: E = V*D Tiempo de Entendimiento: T = E/18 (18 es el número que Halstead encontró experimentalmente para expresar esta magnitud en segundos)
(Diaz, 2013) Su teoría está basada en una simple cuenta (muy fácil de automatizar) de operadores y operandos en un programa:
Los operadores son las palabras reservadas del lenguaje, tales como IF-THEN, READ, FOR,...;
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Los operadores aritméticos +, -, *,..... los de asignación y los operadores lógicos AND, EQUAL TO,.... Los operandos son las variables, literales y las constantes del programa.
Halstead distingue entre el número de operadores y operandos únicos y el número total de ocurrencias de operadores y operandos. (Ramirez, 2013) N es una simple medida del tamaño de un programa. Cuanto más grande sea el tamaño de N, mayor será la dificultad para comprender el programa y mayor el esfuerzo para mantenerlo. N es una medida alternativa al simple conteo de líneas de código. Aunque es casi igual de fácil de calcular, N es más sensible a la complejidad que el contar el número de líneas porque N no asume que todas las instrucciones son igual de fácil o de difícil de entender. La medida de longitud, N, es usada en otra estimación de tamaño de Halstead llamada volumen. Mientras que la longitud es una simple cuenta (o estimación) del total de operadores y operandos, el volumen da un peso extra al número de operadores y operandos únicos. Por ejemplo, si dos programas tienen la misma longitud N pero uno tiene mayor número de operadores y operandos únicos, que naturalmente lo hacen más difícil de entender y mantener, este tendrá un mayor volumen. La fórmula es la siguiente: Volumen V = V = N x log2(n) Donde n = n = n1 + n2. El esfuerzo es otra medida estudiada por Halstead que ofrece una medida del trabajo requerido para desarrollar un programa. Desde el punto de vista del mantenimiento, el esfuerzo se puede interpretar como una medida del trabajo requerido para comprender un software ya desarrollado. La fórmula es la siguiente: Esfuerzo E = V / L Donde el volumen V es dividido por el nivel del lenguaje L. Éste indica si se está utilizando un lenguaje de alto o bajo nivel. Por ejemplo, una simple llamada a un procedimiento podría tener un valor L de 1; el COBOL podría tener 0,1 y el ensamblador podría tener un L de 0,01. Así pues el esfuerzo aumenta proporcionalmente con el volumen, pero decrece con la utilización de lenguajes de alto nivel. Atendiendo a varios estudios empíricos, el esfuerzo, E, es incluso una medida mejor de la entendibilidad (comprensión) (comprensión) que N. (Sicilia, 2008)
Bibliografía Diaz, E. (10 de Enero de 2013). La Sombra de Dijkstra . Obtenido de La Sombra de Dijkstra: http://www.programando.org/blog/2013/01/desafio-enero-las-metricas-de-halstead/ Ramirez, D. R. (15 de Marzo de 2013). Scribd . Obtenido de Scribd: https://es.scribd.com/doc/130488198/Calidad-del-Software-Ejemplo-Sencillo-de-
The world’s largest digital library
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.