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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

© FUOC • P05/75062/00112 14 <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>nte<strong>de</strong> este modo hasta completar un algoritmo completamente formal y concreto.Podéis notar que esta forma <strong>de</strong> expresar <strong>la</strong> resolución tiene el inconveniente<strong>de</strong> que en cada nivel <strong>de</strong>bemos reescribir el algoritmo y al final <strong>de</strong>l <strong>de</strong>sarrollo,si tenemos muchos niveles, po<strong>de</strong>mos encontrarnos con un algoritmo muy <strong>la</strong>rgoy muy difícil <strong>de</strong> compren<strong>de</strong>r a causa <strong>de</strong> los numerosos <strong>de</strong>talles que abarca.Esta técnica<strong>de</strong> refinamiento...... es <strong>la</strong> que hemos utilizadopara aplicar los esquemas.Una forma más a<strong>de</strong>cuada <strong>de</strong> expresar nuestro <strong>diseño</strong> se basa en <strong>la</strong>s herramientasque nos proporciona <strong>la</strong> notación algorítmica. Po<strong>de</strong>mos encapsu<strong>la</strong>r medianteacciones y/o funciones parametrizadas cada subproblema a resolver. Por otro<strong>la</strong>do, po<strong>de</strong>mos encapsu<strong>la</strong>r cada objeto complejo mediante los constructores <strong>de</strong>tipos, o <strong>de</strong>c<strong>la</strong>rando nuevos tipos (enumerativos, etc.). De este modo, en cadanivel escribimos ya un algoritmo y una acción y/o función con total precisióny formalidad, y no reescribimos <strong>la</strong>s partes ya resueltas <strong>de</strong>l <strong>diseño</strong>. El uso <strong>de</strong> parámetrosnos permitirá alcanzar <strong>la</strong> máxima in<strong>de</strong>pen<strong>de</strong>ncia entre niveles y entrelos subproblemas p<strong>la</strong>nteados, pues nos concentraremos en una parce<strong>la</strong> limitada<strong>de</strong>l problema global.La especificación <strong>de</strong> acciones y/o funciones tendrá una doble utilidad: por un<strong>la</strong>do, servirá <strong>de</strong> puente entre niveles para verificar <strong>la</strong> corrección <strong>de</strong> <strong>la</strong>s solucionesp<strong>la</strong>nteadas, asumiendo que <strong>la</strong>s acciones y/o funciones utilizadas en el nivel <strong>de</strong>estudio cumplen <strong>la</strong> especificación dada, y por otro <strong>la</strong>do, <strong>la</strong> especificación <strong>de</strong> unaacción y/o función es en sí el enunciado formalizado <strong>de</strong>l subproblema que hayque resolver en el nivel que corresponda. Si en el <strong>diseño</strong> <strong>de</strong> <strong>la</strong> acción y/o funciónse respeta <strong>la</strong> especificación, el <strong>diseño</strong> global funcionará como se espera.Reflejaremos el análisis <strong>de</strong>scen<strong>de</strong>nte <strong>de</strong>l problema mediante los mecanismos<strong>de</strong> encapsu<strong>la</strong>do que nos ofrece <strong>la</strong> notación algorítmica (<strong>de</strong>finición<strong>de</strong> tipos, constructores <strong>de</strong> tipos y acciones y/o funciones).Siguiendo nuestro ejemplo <strong>de</strong> trabajo, el resultado <strong>de</strong>l primer nivel queda <strong>de</strong><strong>la</strong> siguiente forma:algoritmo AnalisisCorreccionesvarResultadosAnalisisTexto: tDatosAnalisis;Frase: tFrase;fvar{ Pre: en <strong>la</strong> entrada tenemos una secuencia <strong>de</strong> frases, T, que pue<strong>de</strong> estar vacía. Cadafrase <strong>de</strong> T contiene información para saber si es necesario corregir<strong>la</strong> o no }InicioResultadosAnalisis(ResultadosAnalisisTexto);ObtenerFrase(frase);mientras no UltimaFrase(Frase) hacerActualizaResultadosAnalisis(frase, ResultadosAnalisisTexto);ObtenerFrase(frase)fmientrasEn esta solución...... sólo aparecen los comentarios<strong>de</strong> <strong>la</strong> precondición y <strong>la</strong>postcondición. La elección<strong>de</strong> unos nombres apropiadosa <strong>la</strong>s acciones, funciones yvariables hace que no seannecesarios más comentarios,si <strong>de</strong>spués especificamos cadauna <strong>de</strong> <strong>la</strong>s acciones y/o funciones.Esto lo veremos más a<strong>de</strong><strong>la</strong>nte,y completará el nive<strong>la</strong>ctual <strong>de</strong> trabajo.

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

Saved successfully!

Ooh no, something went wrong!