Existen dos principales tecnicas de diseño de algoritmos de programación, el Top Down y el Bottom Up.
Top Down
También conocida como de arriba-abajo y consiste en establecer
una serie de niveles de mayor a menor complejidad (arriba-abajo) que den
solución al problema. Consiste en efectuar una relación entre las etapas
de la estructuración de forma que una etapa jerárquica y su inmediato
inferior se relacionen mediante entradas y salidas de información.
Este diseño consiste en una serie de descomposiciones sucesivas
del problema inicial, que recibe el refinamiento progresivo del repertorio de
instrucciones que van a formar parte del programa.
La utilización de la técnica de diseño Top-Down tiene los
siguientes objetivos básicos:
- Simplificación del problema y de los subprogramas de cada
descomposición.
- Las diferentes partes del problema pueden ser programadas de
modo independiente e incluso por diferentes personas.
- El programa final queda estructurado en forma de bloque o
módulos lo que hace mas sencilla su lectura y mantenimiento.
Bottom Up
El diseño ascendente se refiere a la identificación de aquellos
procesos que necesitan computarizarse con forme vayan apareciendo, su
análisis como sistema y su codificación, o bien, la adquisición de paquetes
de software para satisfacer el problema inmediato.
Cuando la programación se realiza internamente y haciendo un
enfoque ascendente, es difícil llegar a integrar los subsistemas al grado tal
de que el desempeño global, sea fluido. Los problemas de integración
entre los subsistemas son sumamente costosos y muchos de ellos no se
solucionan hasta que la programación alcanza la fecha limite para la
integración total del sistema. En esta fecha, ya se cuenta con muy poco
tiempo, presupuesto o paciencia de los usuarios, como para corregir
aquellas delicadas interfaces, que en un principio, se ignoran.
Aunque cada subsistema parece ofrecer lo que se requiere,
cuando se contempla al sistema como una entidad global, adolece de
ciertas limitaciones por haber tomado un enfoque ascendente.
Uno de ellos
es la duplicación de esfuerzos para acceder el software y mas aún al
introducir los datos.
Otro es, que se introducen al sistema muchos datos
carentes de valor.
Un tercero y tal vez el mas serio inconveniente delenfoque ascendente, es que los objetivos globales de la organización no
fueron considerados y en consecuencia no se satisfacen.
Entonces…
La diferencia entre estas dos técnicas de programación se fundamenta en
el resultado que presentan frente a un problema dado.
Imagine una empresa, la cual se compone de varios departamentos
(contabilidad, mercadeo, …), en cada uno de ellos se fueron presentando
problemas a los cuales se le dieron una solución basados en un enfoque
ascendente (Bottom Up): creando programas que satisfacían sólo el
problema que se presentaba.
Cuando la empresa decidió integrar un
sistema global para suplir todas las necesidades de todos los
departamentos se dio cuenta que cada una de las soluciones presentadas
no era compatible la una con la otra, no representaba una globalidad,
característica principal de los sistemas.
Como no hubo un previo análisis,
diseño de una solución a nivel global en todos sus departamentos,
centralización de información, que son características propias de un diseño
Descendente (Top Down) y características fundamentales de los sistemas;
la empresa no pudo satisfacer su necesidad a nivel global.
La creación de algoritmos es basado sobre la técnica descendente, la cual
brinda el diseño ideal para la solución de un problema.