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

Entradas más populares de este blog

Fundamentos de investigación -Unidad 3- Actividad 1

Fundamentos de investigación - Unidad 2 - Actividad 1

Fundamentos de investigación-Unidad 4 -actividad 2 – Diseño de investigación.