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
© FUOC • P05/75062/00112 20 Introducción a la metodología de diseño descendentePara el análisis del texto, a partir del objeto de tipo tAnalisisDatos, debemoscentrarnos en la postcondición del problema. Recordad que debemos obtenerel porcentaje de frases que hay que corregir, y la media de palabras y el máximode palabras a corregir por frase. Los dos primeros datos se obtienen a partirde los elementos siguientes:• El número de frases del texto (nfrases).• El número de frases que hay que corregir (nfrasesC) del texto.• El número de palabras que hay que corregir del texto (npalabrasC).Hemos puesto entre paréntesis unos nombres que nos servirán para abreviarla especificación. Abreviaremos también el máximo de palabras por frase medianteel nombre mx. Si seguimos estos nombres, la especificación nos quedade la siguiente forma:accion InicioResultadosAnalisis(sal a: tDatosAnalisis){ Pre: }{ Post: en a tenemos nfrases, nfrasesC, npalabrasC y mx de un texto vacío }accion actualizaResultadosAnalisis(ent f: tFrase; entsal a: tDatosAnalisis){ Pre: a = A y f = F }{ Post: en a tenemos nfrases, nfrasesC, npalabrasC y mx del texto que resulta de añadir elanálisis de la frase F al texto ya analizado en A }accion escribirResultadosAnalisis(ent A: tDatosAnalisis){ Pre: a = A }{ Post: si los datos de A son de un texto a corregir, se escribe por el canal de salida unasecuencia R formada por tres elementos:R1 representa la media de palabras a corregir por frase presente en el texto analizado en A.R2 representa el porcentaje de frases a corregir en el texto analizado en A.R3 representa el máximo de palabras a corregir por frase existente en el texto analizadoen A }En el caso de que A tenga los datos de un texto vacío, no se escribe nada }Notad que mediante la especificación establecemos la separación entre niveles:1) Con la especificación en la mano podemos comprobar si el primer nivel escorrecto, sin tener que saber los detalles internos de cada acción o función.2) Cada tripleta (encabezamiento acción o función)-(precondición)-(postcondición)es el enunciado formalizado de un subproblema que hay que resolveren el segundo nivel, y marca los objetivos que se tienen que trabajar.De este modo, las acciones y funciones de la notación algorítmica nos permitenencapsular los subproblemas que necesitamos, sin que tengamos que reescribirel algoritmo, ya que una vez que se hayan diseñado las acciones y funciones queprecisamos, el diseño estará completo. Como herramientas de abstracción deNotad que...... la especificación tambiénnos permite dividir entre ungrupo de personas el trabajode la aplicación que hay quedesarrollar, de forma que cadapersona no dependa de la otraen el momento de llevara cabo el desarrollo.
© FUOC • P05/75062/00112 21 Introducción a la metodología de diseño descendentecódigo, permiten separar el qué del cómo en el planteamiento de un nivel. Esdecir, permiten escribir en el lugar propicio del texto del algoritmo qué queremosmediante el nombre de una acción o función con los parámetros adecuados,sin pensar en cómo la acción o función llegará a cumplir su propósito. Deesta forma podemos mantener las abstracciones que consideremos convenientesen el nivel del que nos ocupamos.Notad también que la parametrización de acciones y funciones es la responsablede que los entornos de cada problema o subproblema estén convenientementeseparados. De hecho, los parámetros nos ayudan a formalizar las entradas y salidasdel subproblema en cuestión. Con los parámetros establecemos el contactocon el exterior de la acción o función. Mediante los parámetros actuales usamosla acción en el entorno que hemos decidido que se debe modificar y/o consultar.Con los parámetros formales diseñamos la acción o función sin pensarquién la utilizará, y simplemente decidimos qué parámetros nos son necesariospara llegar al objetivo propuesto por el subproblema.Con los parámetros...... las acciones o funciones sepueden ver como cajas negrasque interactúan con el exteriora partir de una entrada de datos,y que producen datos en lasalida. Lo que hay dentro de lacaja no importa cuando la usamos.Además,la podemos movera cualquier lugar, porqueaparte de sus propios parámetrosno depende de ningúnotro elemento externo para sufuncionamiento interno.1.7. Trabajando con profundidad el ejemploPasemos a resolver el siguiente nivel de descomposición del problema, en elque nos enfrentaremos a dos abstracciones: las frases y los resultados del análisisdel texto que hemos conceptualizado como objetos del problema resueltoen el primer nivel.Empezamos por los resultados del análisis del texto. Si queremos saber el porcentajede frases a corregir, nos es necesario saber también cuántas frases hayen el texto, y cuántas deben ser corregidas. Nos hará falta, por lo tanto, dos contadores(nfrases, nFrasesCor respectivamente) para calcular el porcentaje cuandohayamos acabado de procesar el texto.Si queremos saber la media de palabras por frase corregida, necesitaremos uncontador de las palabras a corregir, que, junto con el número de frases a corregir,nos proporcionará la media. También necesitaremos registrar el máximo de palabrasque hay que corregir por frase. Encapsulemos los datos:tDatosAnalisis = tuplanFrases: entero;nFrasesCor: entero;nPalabrasPorCorregir: entero;maximoPalabrasPorCorregir: entero;ftuplaEl diseño de las acciones, de acuerdo con las especificaciones que perseguimos,es el siguiente:
- Page 1: Introduccióna la metodologíade di
- Page 5 and 6: © FUOC • P05/75062/00112 5 Intro
- Page 7 and 8: © FUOC • P05/75062/00112 7 Intro
- Page 9 and 10: © FUOC • P05/75062/00112 9 Intro
- Page 11 and 12: © FUOC • P05/75062/00112 11 Intr
- Page 13 and 14: © FUOC • P05/75062/00112 13 Intr
- Page 15 and 16: © FUOC • P05/75062/00112 15 Intr
- Page 17 and 18: © FUOC • P05/75062/00112 17 Intr
- Page 19: © FUOC • P05/75062/00112 19 Intr
- Page 23 and 24: © FUOC • P05/75062/00112 23 Intr
- Page 25 and 26: © FUOC • P05/75062/00112 25 Intr
- Page 27 and 28: © FUOC • P05/75062/00112 27 Intr
- Page 29 and 30: © FUOC • P05/75062/00112 29 Intr
- Page 31 and 32: © FUOC • P05/75062/00112 31 Intr
- Page 33 and 34: © FUOC • P05/75062/00112 33 Intr
- Page 35: © FUOC • P05/75062/00112 35 Intr
- Page 38 and 39: © FUOC • P05/75062/00112 38 Intr
- Page 40 and 41: © FUOC • P05/75062/00112 40 Intr
- Page 42 and 43: © FUOC • P05/75062/00112 42 Intr
- Page 44 and 45: © FUOC • P05/75062/00112 44 Intr
- Page 46 and 47: © FUOC • P05/75062/00112 46 Intr
- Page 48 and 49: © FUOC • P05/75062/00112 48 Intr
- Page 50 and 51: © FUOC • P05/75062/00112 50 Intr
- Page 52 and 53: © FUOC • P05/75062/00112 52 Intr
- Page 54 and 55: © FUOC • P05/75062/00112 54 Intr
- Page 56 and 57: © FUOC • P05/75062/00112 56 Intr
© FUOC • P05/75062/00112 21 <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>ntecódigo, permiten separar el qué <strong>de</strong>l cómo en el p<strong>la</strong>nteamiento <strong>de</strong> un nivel. Es<strong>de</strong>cir, permiten escribir en el lugar propicio <strong>de</strong>l texto <strong>de</strong>l algoritmo qué queremosmediante el nombre <strong>de</strong> una acción o función con los parámetros a<strong>de</strong>cuados,sin pensar en cómo <strong>la</strong> acción o función llegará a cumplir su propósito. Deesta forma po<strong>de</strong>mos mantener <strong>la</strong>s abstracciones que consi<strong>de</strong>remos convenientesen el nivel <strong>de</strong>l que nos ocupamos.Notad también que <strong>la</strong> parametrización <strong>de</strong> acciones y funciones es <strong>la</strong> responsable<strong>de</strong> que los entornos <strong>de</strong> cada problema o subproblema estén convenientementeseparados. De hecho, los parámetros nos ayudan a formalizar <strong>la</strong>s entradas y salidas<strong>de</strong>l subproblema en cuestión. Con los parámetros establecemos el contactocon el exterior <strong>de</strong> <strong>la</strong> acción o función. Mediante los parámetros actuales usamos<strong>la</strong> acción en el entorno que hemos <strong>de</strong>cidido que se <strong>de</strong>be modificar y/o consultar.Con los parámetros formales diseñamos <strong>la</strong> acción o función sin pensarquién <strong>la</strong> utilizará, y simplemente <strong>de</strong>cidimos qué parámetros nos son necesariospara llegar al objetivo propuesto por el subproblema.Con los parámetros...... <strong>la</strong>s acciones o funciones sepue<strong>de</strong>n ver como cajas negrasque interactúan con el exteriora partir <strong>de</strong> una entrada <strong>de</strong> datos,y que producen datos en <strong>la</strong>salida. Lo que hay <strong>de</strong>ntro <strong>de</strong> <strong>la</strong>caja no importa cuando <strong>la</strong> usamos.A<strong>de</strong>más,<strong>la</strong> po<strong>de</strong>mos movera cualquier lugar, porqueaparte <strong>de</strong> sus propios parámetrosno <strong>de</strong>pen<strong>de</strong> <strong>de</strong> ningúnotro elemento externo para sufuncionamiento interno.1.7. Trabajando con profundidad el ejemploPasemos a resolver el siguiente nivel <strong>de</strong> <strong>de</strong>scomposición <strong>de</strong>l problema, en elque nos enfrentaremos a dos abstracciones: <strong>la</strong>s frases y los resultados <strong>de</strong>l análisis<strong>de</strong>l texto que hemos conceptualizado como objetos <strong>de</strong>l problema resueltoen el primer nivel.Empezamos por los resultados <strong>de</strong>l análisis <strong>de</strong>l texto. Si queremos saber el porcentaje<strong>de</strong> frases a corregir, nos es necesario saber también cuántas frases hayen el texto, y cuántas <strong>de</strong>ben ser corregidas. Nos hará falta, por lo tanto, dos contadores(nfrases, nFrasesCor respectivamente) para calcu<strong>la</strong>r el porcentaje cuandohayamos acabado <strong>de</strong> procesar el texto.Si queremos saber <strong>la</strong> media <strong>de</strong> pa<strong>la</strong>bras por frase corregida, necesitaremos uncontador <strong>de</strong> <strong>la</strong>s pa<strong>la</strong>bras a corregir, que, junto con el número <strong>de</strong> frases a corregir,nos proporcionará <strong>la</strong> media. También necesitaremos registrar el máximo <strong>de</strong> pa<strong>la</strong>brasque hay que corregir por frase. Encapsulemos los datos:tDatosAnalisis = tup<strong>la</strong>nFrases: entero;nFrasesCor: entero;nPa<strong>la</strong>brasPorCorregir: entero;maximoPa<strong>la</strong>brasPorCorregir: entero;ftup<strong>la</strong>El <strong>diseño</strong> <strong>de</strong> <strong>la</strong>s acciones, <strong>de</strong> acuerdo con <strong>la</strong>s especificaciones que perseguimos,es el siguiente: