Introducción a la metodología de diseño descendente

Introducción a la metodología de diseño descendente Introducción a la metodología de diseño descendente

12.07.2015 Views

© FUOC • P05/75062/00112 34 Introducción a la metodología de diseño descendentediferentes etapas que alcanzan subobjetivos parciales que, al componerse, proporcionanel objetivo final. Cada una de estas etapas se encapsula mediante accionesy funciones. De este modo obtenemos legibilidad e inteligibilidad en lassoluciones formuladas. La orientación de la descomposición es funcional. Notadque esto que acabamos de comentar es aplicable a subproblemas provenientesde una descomposición orientada a objetos (por ejemplo, el tratamiento deun elemento abstracto de una secuencia).3. Formular la soluciónUna vez que ya sabemos cómo queremos resolver el problema, sólo nos haráfalta formular la solución en la notación algorítmica que hemos definido. Deeste modo, podremos expresar con precisión y rigor el algoritmo que resuelveel problema.Recordad que…... cuando formuléis vuestrosalgoritmos, debéis seguirestrictamente la notaciónalgorítmica que hemos definidopara evitar ambigüedades.Ya conocemos la sintaxis y la semántica de cada uno de los elementos y, en elsiguiente cuadro, se sintetizan las construcciones del lenguaje algorítmico.

© FUOC • P05/75062/00112 35 Introducción a la metodología de diseño descendente4. Evaluar la soluciónDe momento no hemos introducido ningún método formal para verificar la correcciónde un algoritmo. Es decir, debemos hacerlo informalmente, medianteel razonamiento sobre la semántica de los elementos y las construcciones dellenguaje algorítmico que hayamos utilizado, y mediante la comprobación, pasoa paso, de que los hemos ido componiendo de modo adecuado para conseguirfinalmente la postcondición deseada.Los comentarios que hayamosinsertado en el momento de hacerel diseño, como ya sabéis, nosayudarán a llevar a cabo estareflexión.De todas formas, el uso de la metodología de diseño y aplicación adecuada delos esquemas de recorrido y búsqueda nos asegura la corrección de los tratamientossecuenciales que hayamos hecho. Recordad que un esquema es una especiede plantilla cuyo funcionamiento conocemos muy bien, y que utilizamospara solucionar un tipo concreto de problemas; por lo tanto, si lo aplicamos correctamente,nos conducirá a resultados también correctos.El uso combinado del diseño descendente y de los mecanismos de abstracciónno sólo beneficia al diseño, sino que también favorece otras etapas del desarrollode programas:Como vimos en el módulo“Introducción a la programación”las etapas de desarrollo de un programason el análisis de requerimientos,el diseño, la implementación, las pruebasy el mantenimiento.• El proceso de desarrollo: gracias al hecho de parcelar la complejidad de losproblemas y de descomponerlos sucesivamente en fragmentos menores,nos ocupamos en cada momento de la resolución de un único problema dedimensiones más manejables.• La puesta a punto: los fragmentos que componen los programas se puedenprobar por separado (individualmente cada acción y función), y poco a poco.• El mantenimiento: las modificaciones posteriores que será necesario realizardurante la vida útil de un programa, normalmente, tienen un impactolocalizado sólo en unas pocas acciones; el resto del programa no se ve afectadoy, por lo tanto, el hecho de tenerlo descompuesto facilita su modificación.Por otro lado, si los programas tienen una estructura más clara, resultamás fácil y seguro modificarlos.• La reutilización del código: si se desarrollan programas que tratan con objetossimilares, seguramente podremos aprovechar estos diseños de tiposya hechos por otros programas, así como las funciones y las acciones quetraten.• La legibilidad: los programas que nos resultan después de aplicar las técnicasde diseño descendente y los esquemas están estructurados, por lo queson más fáciles de leer y analizar.

© FUOC • P05/75062/00112 35 <strong>Introducción</strong> a <strong>la</strong> <strong>metodología</strong> <strong>de</strong> <strong>diseño</strong> <strong>de</strong>scen<strong>de</strong>nte4. Evaluar <strong>la</strong> soluciónDe momento no hemos introducido ningún método formal para verificar <strong>la</strong> corrección<strong>de</strong> un algoritmo. Es <strong>de</strong>cir, <strong>de</strong>bemos hacerlo informalmente, medianteel razonamiento sobre <strong>la</strong> semántica <strong>de</strong> los elementos y <strong>la</strong>s construcciones <strong>de</strong>llenguaje algorítmico que hayamos utilizado, y mediante <strong>la</strong> comprobación, pasoa paso, <strong>de</strong> que los hemos ido componiendo <strong>de</strong> modo a<strong>de</strong>cuado para conseguirfinalmente <strong>la</strong> postcondición <strong>de</strong>seada.Los comentarios que hayamosinsertado en el momento <strong>de</strong> hacerel <strong>diseño</strong>, como ya sabéis, nosayudarán a llevar a cabo estareflexión.De todas formas, el uso <strong>de</strong> <strong>la</strong> <strong>metodología</strong> <strong>de</strong> <strong>diseño</strong> y aplicación a<strong>de</strong>cuada <strong>de</strong>los esquemas <strong>de</strong> recorrido y búsqueda nos asegura <strong>la</strong> corrección <strong>de</strong> los tratamientossecuenciales que hayamos hecho. Recordad que un esquema es una especie<strong>de</strong> p<strong>la</strong>ntil<strong>la</strong> cuyo funcionamiento conocemos muy bien, y que utilizamospara solucionar un tipo concreto <strong>de</strong> problemas; por lo tanto, si lo aplicamos correctamente,nos conducirá a resultados también correctos.El uso combinado <strong>de</strong>l <strong>diseño</strong> <strong>de</strong>scen<strong>de</strong>nte y <strong>de</strong> los mecanismos <strong>de</strong> abstracciónno sólo beneficia al <strong>diseño</strong>, sino que también favorece otras etapas <strong>de</strong>l <strong>de</strong>sarrollo<strong>de</strong> programas:Como vimos en el módulo“<strong>Introducción</strong> a <strong>la</strong> programación”<strong>la</strong>s etapas <strong>de</strong> <strong>de</strong>sarrollo <strong>de</strong> un programason el análisis <strong>de</strong> requerimientos,el <strong>diseño</strong>, <strong>la</strong> implementación, <strong>la</strong>s pruebasy el mantenimiento.• El proceso <strong>de</strong> <strong>de</strong>sarrollo: gracias al hecho <strong>de</strong> parce<strong>la</strong>r <strong>la</strong> complejidad <strong>de</strong> losproblemas y <strong>de</strong> <strong>de</strong>scomponerlos sucesivamente en fragmentos menores,nos ocupamos en cada momento <strong>de</strong> <strong>la</strong> resolución <strong>de</strong> un único problema <strong>de</strong>dimensiones más manejables.• La puesta a punto: los fragmentos que componen los programas se pue<strong>de</strong>nprobar por separado (individualmente cada acción y función), y poco a poco.• El mantenimiento: <strong>la</strong>s modificaciones posteriores que será necesario realizardurante <strong>la</strong> vida útil <strong>de</strong> un programa, normalmente, tienen un impactolocalizado sólo en unas pocas acciones; el resto <strong>de</strong>l programa no se ve afectadoy, por lo tanto, el hecho <strong>de</strong> tenerlo <strong>de</strong>scompuesto facilita su modificación.Por otro <strong>la</strong>do, si los programas tienen una estructura más c<strong>la</strong>ra, resultamás fácil y seguro modificarlos.• La reutilización <strong>de</strong>l código: si se <strong>de</strong>sarrol<strong>la</strong>n programas que tratan con objetossimi<strong>la</strong>res, seguramente podremos aprovechar estos <strong>diseño</strong>s <strong>de</strong> tiposya hechos por otros programas, así como <strong>la</strong>s funciones y <strong>la</strong>s acciones quetraten.• La legibilidad: los programas que nos resultan <strong>de</strong>spués <strong>de</strong> aplicar <strong>la</strong>s técnicas<strong>de</strong> <strong>diseño</strong> <strong>de</strong>scen<strong>de</strong>nte y los esquemas están estructurados, por lo queson más fáciles <strong>de</strong> leer y analizar.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!