Niklaus Wirth desarrollo una metodología muy eficiente para la aplicación de esta técnica, la cual se puede resumir en 3 reglas:
�
En cada paso de la descomposición, 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.