Complejidad del Diseo de Software
El trmino de complejidad se refiere al estado de eventos o cosas, que tienen mltiple interconexiones y una estructura altamente complicada. En programacin de software, a medida que el diseo de software es obtenido, el nmero de elementos y sus interconexiones gradualmente aparecen para ser mayores, lo que hace dificil que se pueda entener en un solo intento.
La complejidad del diseo de Software es difcil de evaluar sin usar complejos mtodos de medida. Veamos pues 3 mtodos de medida importantes para compejidades de software.
Medidas de complejidad de Halstead
En 1977, el Seor Maurice Howard Halstead introdujo sistemas de medida para medir la complejidad del software. Las medidas de Halstead dependen de la implementacin real del programa y de sus medidas, las cuales son computadas directamente desde los operadores y operandos del cdigo de origen, de forma esttica. Permite evaluar el 'testing time', el vocabulario, la medida, dificultad, errores, y esfuerzos para cdigos de origen C/C++/Java.
Segn Halstead, Un programa de ordenador es una implementacin de un algoritmo considerado una coleccin de smbolos que se pueden clasificar como operadores o como operandos. Las medidas de Halstead toman al programa como una secuencia de operadores y sus operandos relacionados.
Define varios indicadores para evaluar la cmplejidad del mdulo.
Parmetro | Significado |
---|---|
n1 | Nmero de un solo operador |
n2 | Nmero de un solo operando |
N1 | Nmero total de casos de operadores |
N2 | Nmero total de casos de operandos |
Cuando seleccinamos origen del archivo para ver sus detalles de complejidad en un Visor Mtrico, se ven los siguentes resultados en el Informa Mtrico:
Metrico | Significado | Representacin matemtica |
---|---|---|
n | Vocabulario | n1 + n2 |
N | medida | N1 + N2 |
V | Volumen | Longitud * Log2 Vocabulario |
D | Dificultad | (n1/2) * (N1/n2) |
E | Esfuerzos | Dificutad * Volumen |
B | Errores | Volumen / 3000 |
T | 'Testing time' | Tiempo = esfuerzos / S, donde S=18 segundos. |
Medidas de Complejidad ciclomtica
Cada programa incluye enunciados para ejecutar con tal de llevar a cabo una tarea y otros enunciados de toa de decisiones que deciden, qu rdenes son necesarias. Los enunciados de toma de decisiones cambian el flujo del programa.
Si comparamos dos programas del mismo tamao, el que tiene ms enunciados de toma de decisiones ser ms complejo ya que el control de programa salta con frecuencia.
McCabe, en 1976, propuso la edida de complejidad ciclomtica para cuantificar la complejidad de un software. Es un modelo grfico determinado que se basa en las rdenes de toma de decisiones del programa como el if-else, do-while, repeat-until, switch-case y goto statements.
Proceso para realizar un grfico de flujo de control:
- Rompa el programa en pequeos bloques, delimitados por las tomas de decisiones.
- Cree ndulos representando cada uno de estos ndulos.
- Conecte los ndulos de la sigueinte forma:
-
Si el control se puede ramificar del bloque i al bloque j
Dibuje un arco
-
Desde el ndulo de salida hasta el ndulo de entrada
Dibuje un arco.
Para calcular la complejidad ciclomtica del ndulo de un programa, usaremos la frmula -
V(G) = e n + 2 Where e is total number of edges n is total number of nodes

La complijidad ciclomtica del mdulo de encima es
e = 10 n = 8 Cyclomatic Complexity = 10 - 8 + 2 = 4
Segn P. Jorgensen, la complejidad ciclomtica de un mdulo no debe ser mayor a 10.
Mtrica de punto funcin
Es ampliamente usada para medir el tamao del software. La Mtrica de punto funcin, se centra en la funcionalidad que aporta el sistema. Las caractersticas y funcionalidades del sistema se usan para medir la complejidad del software.
La Mtrica de punto funcin, cuenta con cinco parmetros, llamados Entrada externo, Salida externa, Archivos de lgica interna, Archivos de interfaz externa, y Consulta externa. Para considerar la complejidad del software cada parmetro se categorizar como simple, medio o complejo.

Veamos los parmetros de la mtrica de punto de funcin:
Entrada externa
Cada entrada del sistema, desde fuera, se considera entrada externa. La singularidad de la entrada se mide, ya que dos entradas no deben tener el mismo formato. Estas entradas pueden ser o datos o parmetros de control.
Simple - Si una entrada es baja y afecta menos a los archivos internos
Complejo - Si una entrada es elevada y afecta ms a los archivos internos
Medio - Estaria entre el simple y el complejo
Salida externa
Todos los tipos de salida que da el sistema forman parte de esta categora. La salida se considera nica si su formato de salida y/o su procesamiento son nicos.
Simple - Si la salida es baja
Compleja - Si la salida es alta
Media - Entre la simple y la compleja.
Archivos de lgica interna
Cada sistema de sofware mantiene archivos internos con tal de mantener su informacin funcional y para funcionar mejor. Estos archivos contienen datos lgicos del sistema. Estos datos lgicos pueden contener tanto datos funcionales como datos de control.
Simple - Si el nmero de tipos registrado es bajo
Complejo - Si el nmero de tipos registrado es alto
Medio - Entre el simple y el complejo.
Archivos de interfaz externa
El sistema de Software puede necesitar compartir sus archivos con otro software externo o quiz necesite pasar archivos para el procesamiento o como parmetro de alguna funcin. Todos estos archivos son considerados archivos de interfaz externa.
Simple - Si el nmero de tipos registrado en un archivo compartido es bajo
Complejo - Si el nmero de tipos registrado es alto
Medio - Entre el simple y el complejo.
Consulta externa
Una consulta es la combinacin de una entrada y una salida, cuando el usuario enva algn dato para consultar como entrada y el sistema responde al usuario con una salida de consulta procesada. La complejidad de la consulta es ms alta que la entrada externa y la salida externa. La consulta es nica si sus entradas y salidas son tambin nicas en lo que se refiere al formato y a los datos.
Simple - Si la consulta necesita un procesamiento menor y produce un menor nmero de datos.
Complejo - Si la consulta neesita un procesamiento alto y produce una gran cantidad de salida de datos
Medio - Entre el simple y el complejo.
A Cada uno de estos parmetros del sistema se les da un peso determinado dependiendo de su tipo y complejidad. La tabla de abajo menciona el peso dado a cada parmetro:
Parmetro | Simple | Medio | Complejo |
---|---|---|---|
Entradass | 3 | 4 | 6 |
Salidas | 4 | 5 | 7 |
Consulta | 3 | 4 | 6 |
Archivos | 7 | 10 | 15 |
Interfaces | 5 | 7 | 10 |
La tabla de encima produce Mtrica de punto funcin pura. Esta se ajusta de acuerdo con la complejidad del entorno. El sistema se describe usando 14 caractersticas distintas:
- Comunicacin de datos
- Computacin distribuida
- Objetivos de actuacin
- Funcionamiento de carga de Configuracin
- Tasa de la transaccin
- Entrada de datos Online
- Eficiencia del consumidor final
- Actualizacin online
- Procesamiento complejo y lgico
- Reutilizacin
- Facilidad de Instalacin
- Facilidad operativa
- Webs Mltiples
- Intencionalidad para facilitar cambios
Estos factores caractersticos se puntan de 0 al 5, como se menciona a continuacin:
- Sin influencia
- Adicional
- Moderado
- Medio
- Significante
- Essencial
Todas ls puntuaciones se resumen como N. El valor de N va del 0 al 70 (14 tipos de caractersticas x 5 tipos de puntuaciones). Se usa para calcular los factores de ajuste de complejidad (CAF, en sus siglas en ingls para 'Complexity adjustment factor'), usando la siguiente frmula:
CAF = 0.65 + 0.01N
Luego,
Delivered Function Points (FP)= CAF x Raw FP
Este FP puede usarse en varias medidas como por ejemplo:
Coste = $ / FP
Calidad = Errores / FP
Productividad = FP / persona-mes