El diseño estructurado de sistemas se ocupa de la identificación, selección y organización
de los módulos y sus relaciones. Se comienza con la especificación resultante del proceso
de análisis, se realiza una descomposición del sistema en módulos estructurados en
jerarquías, con características tales que permitan la implementación de un sistema que no
requiera elevados costos de mantenimiento.
La idea original del diseño estructurado fue presentada en la década de los '70, por Larry
Constantine, y continuada posteriormente por otros autores: Myers, Yourdon y Stevens.
Etapas del Diseño estructurado
Descomposición
¿Por qué descomponer un problema en partes? Experimentalmente está comprobado que:
?
Un problema complejo cuesta más de resolver que otro más sencillo (de
Perogrullo).
?
La complejidad de un problema global es mayor que el valor de las complejidades
de cada una de sus partes por separado.
Según esto, merece la pena el esfuerzo de dividir un problema grande en subproblemas más
pequeños. Si el objetivo es elaborar un programa para resolver dicho problema grande,
cada subproblema (menos complejo) podrá ser resuelto por un módulo relativamente fácil
de implementar. Ahora nos preguntamos ¿cómo realizar la descomposición?; realizando un
estudio descendente Top-Down que nos lleve desde la concepción del problema (programa
o algoritmo) global hasta identificar sus partes (módulos). Esta técnica se repite aplicando
una estrategia llamada de refinamiento sucesivo propuesta por el experto en Ciencias de la
Computación Niklaus Wirth, que consiste precisamente en volver a aplicar el estudio
descendente Top-Down a cada subproblema una y otra vez hasta obtener subproblemas
suficientemente pequeños, que puedan ser resueltos por módulos que cumplan, en la
medida de lo posible, las características deseables en un módulo en el ámbito de la
programación. En palabras del propio Niklaus Wirth: