Indice
INTRODUCCION............................................................................................2
TOP
DOWN.......................................................................................................4
BOTTOM UP......................................................................................................17
METODO DE WARNIER
ORR........................................................................18
CONCLUSIONES.............................................................................................20
tecnicas de diseño de programas
El
proceso de diseño comprende al desarrollo de una visión conceptual del sistema,
el establecimiento de una estructura, la identificación de las cadenas de datos
y su almacenamiento, la descomposición de funciones de alto nivel en su
subfunciones, el establecimiento de las relaciones e interconexiones entre
componentes, el desarrollo de la representación de datos en forma concreta y la
especificación de los detalles de los algoritmos.
Las técnicas de diseño comúnmente están
basadas en las estrategias de las jerarquías de ‘’hacia abajo’’ y de
‘’hacia arriba’’ . Por medio del enfoque de arriba a abajo, se pone atención
inicialmente en los aspectos globales de todo el sistema ; conforme el
diseño progresa, el sistema se descompone en subsistema, poniéndosele el mayor
consideración a los detalles específicos. El encadenamiento hacia atrás resulta
fundamental en este tipo de diseño. Con el fin de reducir este encadenamiento
hacia atrás, muchos diseñadores proponen el uso de una estrategia mezclada, la
cual es predominantemente hacia abajo, pero que primero requiere de la
especificación de los módulos inferiores. La ventaja primordial de esta
estrategia es que se dedica a la atención
a las necesidades del cliente, a las interfaces con el usuario y a
la naturaleza global del problema a
resolver.
En el enfoque hacia arriba del diseño de
productos de programación, el diseñador primero intenta identificar al conjunto
primitivo de objetos acciones y relaciones que proporcionarán una base para la
solución del problema ; los conceptos de alto nivel son después formulados
en términos del conjunto de primitivos. La estrategia hacia arriba requiere que
el diseñador combine las características proporcionadas por el lenguaje de
instrumentación para dar entidades son a su vez combinadas hasta que se
construye un conjunto de funciones, estructuras de datos e interconexiones para
resolver el problema por medio del uso de las facilidades del ambiente de
programación existente ; este tipo de diseño puede también requerir del
rediseño y el encadenamiento hacia atrás del mismo. El éxito de este enfoque
depende de la identificación del conjunta adecuado de ideas primitivas que sean
suficientes para la instrumentación del sistema.
Top down
El diseño descendente es una técnica que
permite diseñar la solución de un problema con base en la modularización o
segmentación dándole un enfoque de arriba hacia abajo (Top Down Design). Esta solución se divide en módulos que se
estructuran e integran jerárquicamente, como si fuera el organigrama de una
empresa. Ejemplo :
ALGORITMO
ALGO


MODULO MODULO MODULO
UNO DOS TRES
En el diagrama anterior se muestra la
estructura del algoritmo ALGO, que se auxilia de tres módulos subordinados,
cada uno de los cuales ejecuta una tarea especifica. En su momento el modulo
principal ALGO invocara o llamara a los módulos subordinados, es decir,
dirigirá su funcionamiento.
¿ Que es un modulo ?
Un modulo es un segmento, rutina, subrutina,
subalgoritmo o procedimiento, que puede
definirse dentro de un algoritmo con el fin de ejecutar una tarea
especifica y puede ser llamado o invocado desde el algoritmo principal cuando
sea necesario.
¿ Cuando es útil la modularización ?
Este enfoque de segmentación o modularizacion
es útil en dos casos :
1.
Cuando existe un grupo de
instrucciones o una tarea especifica que deba ejecutarse en más de una ocasión.
2.
Cuando un problema es complejo
o extenso, la solución se “divide” o “segmenta” en módulos que ejecutan
“partes” o tareas especificas . Dicha solución se organiza de forma
similar a como lo hacen las empresas cuando se estructuran con base en las
funciones para realizar sus actividades ; en otras palabras, el trabajo se
divide en partes que sean fácilmente manejables y que , lógicamente, puedan ser
separadas ; así, cada una de estas partes se dedica a ejecutar una
determinada tarea, lo que redundara en una mayor concentración , entendimiento
y capacidad de solución a la hora de diseñar la lógica de cada una de estas.
Dichas partes son módulos o segmentos del algoritmo, algunos de ellos son los
módulos directivos o de control, que son los que se encargaran de distribuir el
trabajo de los demás módulos. De esta manera se puede diseñar un organigrama
que indique la estructura general de un algoritmo.
En el diagrama anterior se tiene un modulo
directivo llamado algoritmo ALGO, que dirige el funcionamiento de tres módulos
subordinados, que son : MODULO UNO, MODULO DOS y MODULO TRES .
PROCESO DE MODULARIZACION.
El proceso de segmentación consiste en hacer
una abstracción del problema, del cual se tiene inicialmente un panorama
general. Enseguida, se procede a “desmenuzar” o “dividir” el problema en partes
pequeñas y simples, como se muestra :
1.
Se forma un primer modulo
enunciando el problema en términos de la solución a éste.
EJEMPLO :
Se necesita diseñar un algoritmo que ayude a
un niño a revisar sus tareas referentes
a las operaciones aritméticas fundamentales : sumar, restar, multiplicar y
dividir. El proceso es el siguiente :
Se ofrecerá un menú de opciones para escoger
lo que desee hacer, de acuerdo con el siguiente formato :
TE
PUEDO AYUDAR A :
1.
SUMAR
2. RESTAR
3. MULTIPLICAR
4. DIVIR
5. FIN
OPCION
En el caso de la suma el procedimiento es el
siguiente : leer los dos números y el resultado obtenido por el niño,
hacer el calculo de la maquina, comparar ambos resultados y decirle si esta
correcto o incorrecto. Se le puede permitir realizar las revisiones de
operaciones de suma que sean necesarias. Para el caso de la resta,
multiplicación y división se seguirá un procedimiento similar, claro está, con
las diferencias existentes.
APLICACIÓN : Aplicar lo enunciado en este punto y si se
considera que se trata de un algoritmo que ayuda a un niño en la revisión de
sus tareas, se tiene el modulo principal siguiente :
ALGORITMO
AYUDA
2. Se toma este modulo y se busca
la forma de dividirlo en otros módulos más pequeños, que ejecuten tareas o
funciones especificas. Las mismas funciones que se desea que ejecute el
algoritmo, nos darán la pauta para definir los módulos, y así hacer una segmentación
de la solución del problema en partes manejables.
APLICACIÓN :
Si nos referimos al ejemplo anterior, tenemos que se deben mantener cuatro tareas o
funciones claramente definidas : sumar, restar, multiplicar y dividir, de
ahí que necesitamos un modulo para cada una de las tareas, las cuales deberán
estar subordinadas al modulo principal. La estructura que se tiene, entonces,
es la siguiente :
ALGORITMO
AYUDA 1



MODULO
MODULO MODULO MODULO
2 3 4 5
SUMAR RESTAR
MULTIPLICAR DIVIDIR
NOTA :Los
módulos se numeran de arriba hacia abajo y de izquierda a derecha.
3. Se repite el paso 2
para cada módulo nuevo definido, hasta llegar a un nivel de detalle adecuado,
es decir, hasta hacer que cada modulo ejecute una tarea especifica, que este
claramente definida y que el diseño de la lógica del mismo resulte fácil utilizando el pseudocódigo.
APLICACIÓN :
En el problema que estamos analizando, se
revisan los sumar, restar, multiplicar y dividir. Se considera que estos tienen
un nivel de detalle adecuado, porque cada modulo hace una tarea muy simple,
clara y especifica y, en consecuencia, se pueden diseñar fácilmente utilizando
el pseudocódigo.
En caso de no ser así, es decir, que el
módulo restar, por ejemplo, requiera otros módulos subordinados, la escritura
general del algoritmo sería la siguiente :
ALGORITMO
1
AYUDA



MODULO MODULO
MODULO MODULO
2 3 7 8