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 6 <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 <strong>de</strong>sarrol<strong>la</strong>r aplicaciones más reales, nos encontramos con problemas gran<strong>de</strong>sy complejos.Los enunciados <strong>de</strong> problemas complejos hacen referencia a objetos queno tienen una correspon<strong>de</strong>ncia directa con los tipos elementales <strong>de</strong> <strong>la</strong>notación algorítmica.El tratamiento <strong>de</strong> estos objetos pue<strong>de</strong> no ser elemental y, asimismo, tambiénpue<strong>de</strong> llevar a un número <strong>de</strong> sentencias y <strong>de</strong>c<strong>la</strong>raciones excesivamente elevado,si expresamos todo lo que hay que hacer como una composición secuencial<strong>de</strong> asignaciones, iteraciones y/o alternativas.El resultado es un algoritmo <strong>de</strong> muchas páginas, difícil <strong>de</strong> seguir y, por lo tanto,también <strong>de</strong> saber si funciona, y lleno <strong>de</strong> <strong>de</strong>talles (algunas veces repetidos)que lo hacen prácticamente ilegible. El número <strong>de</strong> <strong>de</strong>talles que hay que teneren cuenta es excesivo, y nuestra capacidad <strong>de</strong> ser conscientes <strong>de</strong> todos los <strong>de</strong>talleses limitada. Pensar estos enunciados en términos <strong>de</strong> los elementos básicos<strong>de</strong>l lenguaje, sin unas pautas que seguir, nos pue<strong>de</strong> comportar muchosquebra<strong>de</strong>ros <strong>de</strong> cabeza y bastante dispersión mental, <strong>de</strong> forma que disminuyenuestra capacidad <strong>de</strong> comprensión sobre lo que hacemos y, por lo tanto,nuestra seguridad sobre si estamos realizando un algoritmo correcto y legible(mantenible). Con estas circunstancias, llegamos a <strong>la</strong> conclusión <strong>de</strong> que <strong>la</strong> notaciónalgorítmica es tan elemental que hace incómodo y poco práctico el <strong>de</strong>sarrollo<strong>de</strong> aplicaciones reales, y <strong>de</strong> que haría falta un lenguaje más cómodoque comprendiese objetos más reales.¿Os imagináis...... lo que conseguiríamos si expusiésemosel funcionamiento<strong>de</strong> un programa en términos<strong>de</strong>l movimiento <strong>de</strong> electronesque hay por <strong>la</strong>s pistas <strong>de</strong> cobre<strong>de</strong> <strong>la</strong> p<strong>la</strong>ca <strong>de</strong> circuito impresoy en el silicio <strong>de</strong> vuestro or<strong>de</strong>nador?Acabaríamos confundidosy distraídos por el exceso<strong>de</strong> información en <strong>la</strong> exposición,y per<strong>de</strong>ríamos toda referenciaa aquello <strong>de</strong> lo queestamos hab<strong>la</strong>ndo.Si este apreciado lenguaje existiese, con <strong>la</strong> cantidad y <strong>la</strong> variedad <strong>de</strong> problemasque hay por resolver, tendría un número tan gran<strong>de</strong> <strong>de</strong> acciones y tipos quenunca acabaríamos <strong>de</strong> conocerlo a fondo. Se pue<strong>de</strong>n encontrar algunos lenguajesespecíficos para algunas aplicaciones concretas, pero cuando no los encontramos,¿qué hacemos?La notación algorítmica tiene los suficientes elementos para construircualquier algoritmo que <strong>de</strong>seemos a partir <strong>de</strong> los tipos elementales, <strong>la</strong>asignación y <strong>la</strong>s composiciones algorítmicas. El lenguaje algorítmicotambién permite ampliar el propio lenguaje <strong>de</strong>finiendo y construyendotipos más complejos y <strong>de</strong>finiendo <strong>la</strong>s acciones y/o funciones que másnos convengan.Con <strong>la</strong>s características <strong>de</strong>l lenguaje algorítmico, todo lo que nos hace falta essaber qué <strong>metodología</strong> <strong>de</strong>bemos seguir para llevar a buen fin el <strong>diseño</strong> <strong>de</strong> unproblema complejo. Esta <strong>metodología</strong> consistirá en <strong>de</strong>scomponer un proble-

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

Saved successfully!

Ooh no, something went wrong!