?
En cada paso (del refinamiento), una o varias instrucciones del programa dado, se
descomponen en instrucciones más detalladas. Esta descomposición sucesiva o
refinamiento de especificaciones termina cuanto todas las instrucciones están
expresadas en términos de la computadora usada o del lenguaje de programación...
?
Conforme se refinan las tareas, también los datos pueden ser refinados,
descompuestos o estructurados, siendo lo natural refinar las especificaciones del
programa y de los datos en paralelo.
?
Cada paso de refinamiento implica algunas decisiones de diseño. Es importante que
el programador sea consciente de los criterios subyacentes (en las decisiones de
diseño adoptadas) y de la existencia de soluciones alternativas...
Problema del refinamiento sucesivo
¿Cuándo parar el refinamiento?. Un refinamiento excesivo podría dar lugar a un número tan
grande de módulos que haría poco práctica la descomposición. Se tendrán en cuenta estos
criterios para dejar de descomponer:
?
Cuando no haya tareas bien definidas.
?
Cuando la interfaz de un módulo sea tan complicada como el propio módulo
Jerarquía de módulos
Ésta es una consecuencia directa de la descomposición del problema mediante
refinamientos sucesivos, el resultado será un conjunto de módulos estratificados en capas
a modo de pirámide donde en la cima habrá un único módulo que representará al programa
global y en los niveles inferiores aparecerán los módulos resultantes de las sucesivas
divisiones.
Al final, debe obtenerse una estructura piramidal donde los módulos de los niveles
superiores se encargan de las tareas de coordinación, lógica de la aplicación y manipulación