Está en la página 1de 4

Técnicas de Programación

TECNICAS DE PROGRAMACION

TECNICA DIVIDE Y VENCERAS (divide and conquer)


El término Divide y Vencerás en su acepción más amplia es algo más que una técnica de
diseño de algoritmos. De hecho, suele ser considerada una filosofía general para resolver
problemas y de aquí que su nombre no sólo forme parte del vocabulario informático, sino
que también se utiliza en muchos otros ámbitos.
En nuestro contexto, Divide y Vencerás es una técnica de diseño de algoritmos que consiste
en resolver un problema a partir de la solución de subproblemas del mismo tipo, pero de
menor tamaño. Si los sub problemas son todavía relativamente grandes se aplicará de
nuevo esta técnica hasta alcanzar sub problemas lo suficientemente pequeños para ser
solucionados directamente. Ello naturalmente sugiere el uso de la recursión en las
implementaciones de estos algoritmos.

Ejemplo 1:

Pág. 1
Técnicas de Programación

Ejemplo 2:

TECNICA TOP-DOWN / BOTTOM-UP

Top-down (‘de arriba abajo’) y bottom-up (‘de abajo arriba’) son estrategias de
procesamiento de información características de las ciencias de la información,
especialmente en lo relativo al software. Por extensión se aplican también a otras ciencias
sociales y exactas.

En el modelo top-down se formula un resumen del sistema, sin especificar detalles. Cada
parte del sistema se refina diseñando con mayor detalle. Cada parte nueva es entonces
redefinida, cada vez con mayor detalle, hasta que la especificación completa es lo
suficientemente detallada para validar el modelo. El modelo top-down se diseña con
frecuencia con la ayuda de "cajas negras" que hacen más fácil cumplir requisitos aunque
estas cajas negras no expliquen en detalle los componentes individuales.

En contraste, en el diseño bottom-up las partes individuales se diseñan con detalle y luego
se enlazan para formar componentes más grandes, que a su vez se enlazan hasta que se
forma el sistema completo. Las estrategias basadas en el flujo de información "bottom-up"
se antojan potencialmente necesarias y suficientes porque se basan en el conocimiento de
todas las variables que pueden afectar los elementos del sistema

Pág. 2
Técnicas de Programación

Ejemplo 1: Técnica Top-Down para la resolución de un problema

En el proceso de desarrollo de software, los enfoques top-down y bottom-up juegan un


papel crucial.

El diseño top-down fue promovido en la década de 1970 por los investigadores de IBM
Harlan Mills y Niklaus Wirth. Mills desarrolló los conceptos de programación estructurada
para usos prácticos y los probó en un proyecto en 1969 para automatizar el índice de la
morgue del New York Times. El éxito administrativo e ingenieril del proyecto hicieron que el
enfoque top-down se esparciera por IBM y por el resto de la industria de los computadores.
Niklaus Wirth, que entre sus logros está el desarrollo del lenguaje de programación Pascal,
escribió el artículo Program Development by Stepwise Refinement, que tuvo mucha
influencia.

Los métodos top-down fueron favorecidos en la ingeniería de software hasta que llegó la
programación orientada a objetos a finales de los 1980s.

El enfoque top-down enfatiza la planificación y conocimiento completo del sistema. Se


entiende que la codificación no puede comenzar hasta que no se haya alcanzado un nivel
de detalle suficiente, al menos en alguna parte del sistema. Esto retrasa las pruebas de las
unidades funcionales del sistema hasta que gran parte del diseño se ha completado.

Bottom-up hace énfasis en la programación y pruebas tempranas, que pueden comenzar


tan pronto se ha especificado el primer módulo. Este enfoque tiene el riesgo de programar
Pág. 3
Técnicas de Programación

cosas sin saber como se van a conectar al resto del sistema, y esta conexión puede no ser
tan fácil como se creyó al comienzo. La reutilización del código es uno de los mayores
beneficios del enfoque bottom-up.

El desarrollo de software moderno usualmente combina tanto top-down como bottom-up.


Aunque un conocimiento completo del sistema se considera usualmente necesario para un
buen diseño, haciendo que teóricamente sea un enfoque top-down, la mayoría de proyectos
de desarrollo de software tratan de usar código existente en algún grado. El uso de módulos
existentes le dan al diseño un sabor bottom-up. Algunos enfoques usan un enfoque en el
que un sistema parcialmente funcional es diseñado y programado completamente, y este
sistema se va expandiendo para llenar los requisitos del proyecto

Pág. 4

También podría gustarte