Fundamentos de investigación - Unidad 2- Actividad 2
Investigación sobre la complejidad del software.
¿Qué es la complejidad
de software?
Según (Ortiz Herrera, 2010) la complejidad del
software se define así:
¨Un pequeño programa,
fácilmente puede ejecutar decenas de miles de líneas de código, otros más
importantes, como las últimas versiones de Microsoft Windows, decenas de
millones. Además, la complejidad de un programa no depende sólo del número de
instrucciones (sentencias) que se ejecutan, sino también de las interacciones
entre dichas instrucciones, haciéndolo aún más complejo, ya que cada iteración
puede ser diferente a las previas¨.
¿Cómo se mide la complejidad
del software?
Según (Sáez Vacas, 1992) las
métricas son la forma de conocer y controlar la complejidad de un programa:
Las métricas de complejidad
del software serán el primer eslabón de la cadena que puede llevarnos a
controlar esa complejidad. Nos dan una base objetiva para identificar estructuras
y técnicas que nos lleven a producir programas de menor (o mayor) complejidad.
También nos permiten identificar zonas de un programa especialmente complejas,
que sería conveniente rediseñar, y donde probablemente se centren los problemas
que aparecerán en la fase de mantenimiento. Normalmente, cuanto más complejo
sea un programa, más difícil será su mantenimiento posterior (más propenso a
fallos que habrá que arreglar, mayor dificultad de realizar cambios, etc.).
¿Qué nos permite saber
dichas métricas de complejidad de software?
Dichas métricas nos permiten saber que tan propenso es un software a tener bugs, pero no solo eso sino también que tan
difícil será elaborarlo. Con respecto a esto (Sáez Vacas, 1992) dice:
Además, al analizar mediante métricas las
especificaciones y los primeros documentos del diseño, podemos estimar de una
forma más exacta el tiempo de desarrollo (Booch, 1990) , o predecir con
bastante aproximación la complejidad que tendrá el código (Selig & Henry, 1990) . Parece, por lo
dicho hasta aquí, que las métricas son muy útiles. Pero ¿qué es lo que
realmente miden las métricas? Según Mills y Dyson (Mills & Dyson, 1990) , "las métricas
[de complejidad del software] son simplemente medidas cuantitativas de ciertas
características de un proyecto de desarrollo. Pueden medir alguno de los
siguientes objetos:
·
Productos (como el código o
la documentación).
·
El proceso de desarrollo
como tal (aspectos de las actividades del desarrollo).
·
El dominio del problema
(como las telecomunicaciones, los sistemas de tratamiento de información, y el
control de procesos).
·
Las características
ambientales (como las personas, las organizaciones y las herramientas)."
Objetivo
En esta
investigación nos centraremos en definir la complejidad de los productos de
software, es decir la complejidad del código o la documentación, en particular recabando definiciones probadas o aceptadas en la industria.
Se
favorecerán aquellas definiciones que posean métricas y herramientas de
software libre o accesible de forma gratuita para su extracción.
Justificación
·
De acuerdo con (Booch, 1990) entender la
complejidad nos permite estimar de una
forma más exacta el tiempo de desarrollo. Lo cual puede resultar en
ganancias de tiempo, dinero y esfuerzo si
se sabe utilizar las definiciones
adecuadas de complejidad para cada aspecto del desarrollo.
·
También entender la complejidad del código permite saber que partes de
un programa o software son más
susceptibles a bugs (Ortiz Herrera, 2010) , especialmente si se
usan herramientas que automaticen la medición de dicha complejidad. En el presente los bugs de software son todavía unos de los problemas más graves y comunes
del software (Sáez Vacas, 1992) , (Stepanek, 2005) .
Bibliografía
Booch, G. (1990).
Work-product analysis: the philosopher's stone of software? IEEE Software,
26-34.
Mills, H., &
Dyson, P. (1990, Marzo). Using Metrics to Quantify Development. IEEE
Software., 15-16. Retrieved from http://trace.tennessee.edu/cgi/viewcontent.cgi?article=1056&context=utk_harlan
Ortiz Herrera, M. (2010). e-REdiNG Trabajos y
proyectos fin de estudios E..T.S.I. Retrieved from Universidad de
Sevilla: http://bibing.us.es/proyectos/abreproy/70193
Sáez Vacas, F. (1992). Complejidad y Tecnologías
de la Información. Madrid: Instituto Tecnológico Bull. Retrieved from
http://dit.upm.es/~fsaez/intl/libro_complejidad/
Selig, C., &
Henry, S. (1990, Marzo). Predicting Source-Code Complexity at the Design
Stage. IEEE Software, 7, 36-44.
Stepanek, G.
(2005). Sofware Proyect Secrets: Why software proyects Fail. Berkeley
California: Apress Berkeley.
Comentarios
Publicar un comentario