Un algoritmo complicado se divide en partes pequeñas llamadas módulos, y el proceso de división se conoce como modularización . La modularización reduce significativamente las complicaciones de diseñar un algoritmo y hace que su proceso sea más fácil de diseñar e implementar. La programación modular es la técnica de diseñar y escribir un programa en la forma de las funciones donde cada función es distinta de la otra y funciona de forma independiente. El contenido de las funciones es coherente, y existe un bajo acoplamiento entre los módulos.
Gráfica comparativa
Bases para la comparación | Enfoque de arriba hacia abajo | Enfoque de abajo hacia arriba |
---|---|---|
BASIC | Divide el problema masivo en subproblemas más pequeños. | Resuelve el problema fundamental de bajo nivel y los integra en uno más grande. |
Proceso | Los submódulos son analizados solitariamente. | Examine qué datos se deben encapsular, e implica el concepto de ocultación de la información. |
Comunicación | No se requiere en el enfoque de arriba hacia abajo. | Necesita una cantidad específica de comunicación. |
Redundancia | Contiene información redundante. | La redundancia puede ser eliminada. |
Lenguajes de programación | Los lenguajes de programación orientados a la estructura / procedimiento (es decir, C) siguen el enfoque de arriba hacia abajo. | Los lenguajes de programación orientados a objetos (como C ++, Java, etc.) siguen el enfoque de abajo hacia arriba. |
Utilizado principalmente en | Documentación del módulo, creación de casos de prueba, implementación de código y depuración. | Pruebas |
Definición de enfoque de arriba hacia abajo
El enfoque de arriba hacia abajo básicamente divide un problema complejo o algoritmo en múltiples partes más pequeñas (módulos). Estos módulos se descomponen aún más hasta que el módulo resultante es el programa fundamental que debe entenderse y no puede descomponerse más. Después de alcanzar un cierto nivel de modularidad, se detiene la descomposición de los módulos. El enfoque de arriba hacia abajo es el proceso gradual de dividir el módulo de programa grande en módulos más simples y más pequeños para organizar y codificar el programa de manera eficiente. El flujo de control en este enfoque es siempre en la dirección hacia abajo. El enfoque de arriba hacia abajo se implementa en el lenguaje de programación "C" mediante el uso de funciones.
Por lo tanto, el método de arriba hacia abajo comienza con un diseño abstracto y luego, de forma secuencial, este diseño se refina para crear niveles más concretos hasta que no exista un requisito de refinamiento adicional.
Definición de enfoque de abajo hacia arriba
El enfoque de abajo hacia arriba funciona de manera opuesta al enfoque de arriba hacia abajo. Inicialmente, incluye el diseño de las partes más fundamentales que luego se combinan para hacer el módulo de nivel superior. Esta integración de submódulos y módulos en el módulo de nivel superior se realiza repetidamente hasta que se obtiene el algoritmo completo requerido.
El enfoque de abajo hacia arriba funciona con capas de abstracción. La aplicación principal del enfoque de abajo hacia arriba es la prueba, ya que cada módulo fundamental se prueba primero antes de fusionarlo con el más grande. La prueba se realiza utilizando ciertas funciones de bajo nivel.
Diferencias clave entre el enfoque de arriba hacia abajo y de abajo hacia arriba
- El enfoque descendente descompone la tarea grande en subtareas más pequeñas, mientras que el enfoque ascendente primero elige resolver las diferentes partes fundamentales de la tarea directamente y luego combina esas partes en un programa completo.
- Cada submódulo se procesa por separado en un enfoque de arriba hacia abajo. A diferencia del enfoque de abajo hacia arriba, se implementa el concepto de ocultación de la información al examinar los datos que se van a encapsular.
- Los diferentes módulos en el enfoque de arriba hacia abajo no requieren mucha comunicación. Por el contrario, el enfoque de abajo hacia arriba necesita interacción entre los módulos fundamentales separados para combinarlos más adelante.
- El enfoque descendente puede producir redundancia, mientras que el enfoque ascendente no incluye información redundante.
- Los lenguajes de programación de procedimientos como Fortran, COBOL y C siguen un enfoque de arriba hacia abajo. En contraste, los lenguajes de programación orientados a objetos como C ++, Java, C #, Perl, Python siguen el enfoque de abajo hacia arriba.
- El enfoque de abajo hacia arriba se usa previamente en las pruebas. Por el contrario, el enfoque de arriba hacia abajo se utiliza en la documentación del módulo, la creación de casos de prueba, la depuración, etc.
Conclusión
El enfoque de arriba hacia abajo y el de abajo hacia arriba son los métodos de diseño de algoritmos en los que el de arriba hacia abajo es un enfoque convencional que descompone el sistema de la especificación de alto nivel a la especificación de bajo nivel. Por otro lado, el enfoque de abajo hacia arriba es más eficiente y funciona de manera inversa, donde los componentes primitivos se diseñan al principio y luego pasan al nivel superior.
El enfoque de arriba hacia abajo enfatiza el aislamiento de los submódulos (significa el bajo acoplamiento entre los módulos), mientras que ignora la identificación del concepto de comunicación y reutilización. Mientras que en el enfoque de abajo hacia arriba, la ocultación de la información y la reutilización son los factores prominentes.