Complejidad del Diseo de Software


Anuncios


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
Medidas Complejidad ciclomtica

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.

Punto de Funcin

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