04. Disseny descendent
Objectius
Els objectius d'aquest mòdul són:
- Entendre el concepte de disseny descendent.
- Ser capaços d’analitzar problemes de certa complexitat i descompondre'ls en subproblemes més senzills amb l’aplicació de la tècnica de disseny descendent per refinaments successius.
- Adonar-se del fet que a l’hora de descompondre els problemes per al disseny, hi ha maneres de fer-ho més convenients i efectives que d’altres. L’elecció d’abstraccions convenients al problema i el seguiment de les pautes indicades en aquest mòdul us han de portar a descomposicions efectives.
- Saber aplicar els conceptes estudiats en els altres mòduls per a resoldre cadascun dels subproblemes senzills mitjançant l’abstracció de codi i dades.
Introducció
A Fonaments de Programació vàrem veure que podem modularitzar el nostre codi mitjançant accions, funcions i fins i tot llibreries. La modularització del codi es planteja com a una tècnica per fer que el nostre codi sigui més llegible, mantenible i reutilitzable. El disseny descendent és una tècnica que ens permet reduir problemes complexes a problemes més simples de forma sistemàtica. Aquesta reducció a subproblemes és equivalent al concepte de modularitat, per tant, estem sistematitzant el que ja havíem vist des d'un punt de vista més pràctic.
Disseny descendent
Llegiu amb atenció el següent document. Veureu que en alguns exemples també s'utilitza la formalització d'algoritmes, per tant és important que hagueu revisat el mòdul de precondicions i postcondicions abans de llegir el document.
Exemple
En el document anterior hem vist exemples des d'un punt de vista formal. En el document següent, que forma part de les transparències de síntesi de la introducció, veureu un exemple de disseny descendent des d'un punt de vista més pràctic. En aquest cas, s'utilitzen comentaris per tal de definir els subproblemes que caldrà afrontar.