Complejidad de software
La complejidad del desarrollo de software
Contenidos
1.1 La complejidad inherente al software
1.2 La estructura de los sistemas complejos
1.3 Imponiendo orden al caos
1.4 Diseño de sistemas complejos
1.5 Resumen
1.6 Test de autoevaluación
1.7 Lecturas recomendadas
1.8 Referencias
[Booch 94]
Juan Manuel Cueva Lovelle
1-1
1.1 La complejidad inherente al software
Laconstrucción de software puede involucrar elementos de gran
complejidad, que en muchos casos no son tan evidentes como los
que se pueden ver en otras ingenierías. Un puente, un edificio, una
mina, una red de ferrocarriles son ejemplos de sistemas complejos
de otras ingenierías, pero el ingeniero del software construye
sistemas cuya complejidad puede parecer que permanece oculta. El
usuariosiempre supone que Informática todo es muy fácil (“apretar
un botón y ya está”)
La complejidad se estudiará en los siguientes apartados:
[Booch 94]
•
•
•
Las propiedades de los sistemas de software simples
y complejos
¿Por qué el software es complejo de forma innata?
Las consecuencias de la complejidad ilimitada
Juan Manuel Cueva Lovelle
1-2
Propiedades de los sistemas desoftware simples o artesanales
• No son complejos
• Suelen estar construidos y mantenidos por una
sola persona (software artesanal)
– No suelen pasar de 1.000.000 de líneas de
código, aunque el número de líneas de código no
sea la mejor medida de la complejidad del
software.
• Ciclo de vida corto
– El ciclo de vida del software es todo el tiempo
que un proyecto software está activo,comienza
con las primeras tareas de análisis y no concluye
hasta que ese software deja de utilizarse por los
usuarios
• Pueden construirse aplicaciones alternativas en
un periodo razonable de tiempo
• No necesitan grandes esfuerzos en análisis y
diseño
• No son nuestro objetivo de estudio
Juan Manuel Cueva Lovelle
1-3
Las propiedades de los
sistemas software complejos
• Tambiénse denominará software de
dimensión industrial
• Es muy difícil o imposible que un
desarrollador individual pueda comprender
todas las sutilidades de su diseño
• La complejidad es una propiedad esencial
de estos sistemas, que puede dominarse,
pero no eliminarse
• Son el objetivo de nuestro estudio
• Ejemplos: Un sistema de reservas,
anulaciones y ventas de billetes aéreos para
unconjunto de compañías aéreas que se
pueda utilizar en cualquier lugar del
mundo.
Juan Manuel Cueva Lovelle
1-4
¿Por qué el software es
complejo de forma innata?
La complejidad inherente al software se
deriva de los siguientes cuatro
elementos [Booch 94]
• La complejidad del dominio del
problema
• La dificultad de gestionar el proceso
de desarrollo
• El detalle que se puede alcanzara
través del software
• El problema de caracterizar el
comportamiento de sistemas
discretos
Juan Manuel Cueva Lovelle
1-5
La complejidad del dominio
del problema
• Gran cantidad de requisitos que compiten entre
sí, incluso contradiciéndose
– La forma habitual de especificar los requisitos son
grandes cantidades de texto con unos pocos dibujos
• Desacoplamientos deimpedancias entre usuarios
del sistema y desarrolladores
– Los usuarios suelen tener ideas vagas de lo que
desean
– Dificultades de comunicación
– Distintas perspectivas de la naturaleza del problema
• Modificación de los requisitos con el paso del
tiempo, pues los usuarios y desarrolladores
comienzan a compenetrarse mejor
“No sobrevivirán las especies más fuertes, tampoco las más inteligentes,lo harán aquellas que más se adapten al cambio” Charles Darwin, El
origen de las especies.
– Mantenimiento de software
• Cuando se corrigen errores
– Evolución del software
• Cuando se responde a requisitos que cambian
– Conservación del software
• Se emplean medios extraordinarios para mantener en
operación un elemento software anticuado y decadente
Juan Manuel Cueva Lovelle...
Regístrate para leer el documento completo.