12.07.2015 Views

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

© FUOC • P05/75062/00112 11 <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>nteal último, que es el que presenta un mayor nivel <strong>de</strong> concreción. En el caso <strong>de</strong>lejemplo, el más concreto es <strong>la</strong> secuencia elemental <strong>de</strong> caracteres.A <strong>la</strong> hora <strong>de</strong> p<strong>la</strong>ntear un problema complejo, tenemos dos posibles direccionespara su análisis:• Resolver los problemas más concretos, para resolver <strong>de</strong>spués los más abstractos.Es <strong>de</strong>cir, vamos <strong>de</strong>l más concreto al más abstracto. Esta forma <strong>de</strong> p<strong>la</strong>ntearlorecibirá el nombre <strong>de</strong> análisis ascen<strong>de</strong>nte.• Resolver el primer nivel más abstracto, para proseguir <strong>de</strong>spués con los nivelesque lo son menos, hasta llegar al nivel más concreto. Esta segunda direcciónrecibirá el nombre <strong>de</strong> análisis <strong>de</strong>scen<strong>de</strong>nte. Esta dirección es <strong>la</strong> sugerida en elejemplo.El análisis ascen<strong>de</strong>nte está repleto <strong>de</strong> dificulta<strong>de</strong>s y no resulta a<strong>de</strong>cuado parallevar a buen término un <strong>diseño</strong> en un tiempo razonable <strong>de</strong> <strong>de</strong>sarrollo. La dificultadprincipal consiste en que, si no se resuelven en primer lugar los nivelesmás abstractos, no sabemos realmente qué problemas concretos tenemosque solucionar. De este modo, po<strong>de</strong>mos estar resolviendo problemas concretosque <strong>de</strong>spués no se utilizarán o que no están convenientemente <strong>de</strong>finidospara ser usados en los niveles más abstractos. Esto llevaría a rediseñar el nivelmás concreto y, en consecuencia, a retroce<strong>de</strong>r en el <strong>diseño</strong>, para <strong>de</strong>spués volveral otro nivel. Imaginad, en el ejemplo <strong>de</strong>l que nos estamos ocupando, queno tenéis <strong>de</strong>masiado c<strong>la</strong>ro el tratamiento que <strong>de</strong>béis aplicar; por este motivo,os <strong>de</strong>dicáis a <strong>de</strong>sarrol<strong>la</strong>r una acción que lea una pa<strong>la</strong>bra y <strong>la</strong> guar<strong>de</strong> en una estructura<strong>de</strong> datos, para <strong>de</strong>spués <strong>de</strong>scubrir en el nivel más abstracto que <strong>la</strong> utilizaque no es necesario el contenido exacto <strong>de</strong> <strong>la</strong> pa<strong>la</strong>bra, ya que sólo hay quesaber si es preciso corregir<strong>la</strong>, y contar<strong>la</strong> en el caso <strong>de</strong> que así sea. La estructura<strong>de</strong> datos pue<strong>de</strong> sobrar y servir <strong>de</strong> muy poco al problema, sobre todo si ponelimitaciones al enunciado, como veremos más a<strong>de</strong><strong>la</strong>nte.En el análisis <strong>de</strong>scen<strong>de</strong>nte, <strong>la</strong>s cosas van mejor. Al empezar en el nivel másabstracto, i<strong>de</strong>ntificamos y <strong>de</strong>finimos los subproblemas que hay que resolveren el siguiente nivel menos abstracto (fijamos los objetivos para el siguientenivel <strong>de</strong> menor abstracción); en consecuencia, no haremos más trabajo <strong>de</strong>lque realmente hace falta para resolver el problema global, por lo que acortaremosel tiempo <strong>de</strong> <strong>de</strong>sarrollo y evitaremos retrocesos. El ejemplo en el quenos centraremos seguirá esta línea. El inconveniente <strong>de</strong> esta estrategia, cuandose tiene poca experiencia práctica en el método y en el <strong>diseño</strong> <strong>de</strong> algoritmos,es que no se tiene <strong>la</strong> seguridad <strong>de</strong> que se pueda resolver más a<strong>de</strong><strong>la</strong>nte alguno <strong>de</strong>los subproblemas propuestos en el nivel abstracto; entonces se prefiere p<strong>la</strong>ntearel problema <strong>de</strong> forma ascen<strong>de</strong>nte, para tener <strong>la</strong> seguridad <strong>de</strong> que se dispone <strong>de</strong>una base <strong>de</strong> problemas concretos resueltos que ayudarán a resolver, a su vez, losniveles más abstractos. Sin embargo, si lo hacemos así, iremos saltando <strong>de</strong> nivelesy llegando a confusiones innecesarias. La única forma <strong>de</strong> asimi<strong>la</strong>r el métodoEl <strong>diseño</strong> <strong>de</strong>scen<strong>de</strong>nte es unmétodo más eficaz y rápido para<strong>de</strong>sarrol<strong>la</strong>r problemas complejosque el ascen<strong>de</strong>nte u otro métodoque combine ambos.

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

Saved successfully!

Ooh no, something went wrong!