Este documento discute la complejidad inherente al software. Señala que la complejidad del software es una propiedad esencial y no accidental, y que es importante controlarla pero no eliminarla. Identifica varios factores que contribuyen a la complejidad, como la complejidad del dominio del problema, la dificultad de gestionar el proceso de desarrollo, y los retos de modelar el comportamiento de sistemas discretos. Explica cómo la complejidad puede conducir a proyectos de software que se retrasan, exceden el presupuesto o
2. Complejidad
• “La complejidad del software es una
propiedad esencial, no accidental”
[Brooks].
• Controlarla, más no Eliminarla.
3. Complejidad
• Factores importantes :
– La complejidad del dominio del problema.
– La dificultad de gestionar el proceso de
desarrollo.
– La flexibilidad que se puede alcanzar a través
del software.
– Los problemas que plantea la caracterización
del comportamiento de sistemas discretos.
4. Complejidad del dominio del
problema
Confiabilidad Facilidad de uso
Costo Rendimiento
Problema
Requerimientos
5. Complejidad del dominio...
+ usuarios para
Dificultad de los
Puntos de vista
diferentes sobre la
expresar con precisión sus necesidades naturaleza del
en forma que los desarrolladores las problema, y cada uno
puedan entender tiene una solución.
La forma habitual de expresar requisitos Difíciles de
actualmente es mediante grandes comprender,
cantidades de texto, acompañadas de generando varias
algunos gráficos. interpretaciones
+sistema de software
Los requisitos de un
cambian frecuentemente durante su desarrollo
6. Complejidad del dominio...
Luego de la puesta en marcha
Mantenimiento Evolución Conservación
del Software
Se usan medios
Corregir errores Requerimientos
extraordinarios para
que cambian mantener en operación
un software anticuado
o decadente
7. Dificultad de gestionar el
proceso de desarrollo
¿Cómo es posible escribir menos código?
REUTILIZACION (marcos estructurales y
código)
8. Dificultad de gestionar el
proceso de desarrollo
Cientos y/o miles
Tamaño de los Proyectos
de modulos separados
Equipo de desarrolladores
Comunicación más compleja Equipos dispersos
y Coordinación más difícil geográficamente
Mantener una unidad e
integridad en el diseño
9. Flexibilidad alcanzable a través
del software
• Construcción y Reconstrucción en
diferentes organizaciones
• No existe normatividad para los módulos
• No existe reutilización, se quiere construir
todo!!!
10. Comportamiento de sistemas
discretos
• Sistemas análogos
• No-lineales Comportamiento
no-determinístico
y y
x x
Sistema Continuo Sistema Discreto
11. Consecuencias
<< Cuanto más complejo sea el sistema,
más abierto esta el derrumbamiento total
>>
No dominar la complejidad del software:
• Proyectos retrasados,
• Exceden el presupuesto Crisis del
• Que son deficientes respecto
software
a los requerimientos fijados