Top-down y Bottom-up

Introducción

Top-down y Bottom-up son estrategias de procesamiento de información características de las ciencias de la información, en lo relativo al software. Por extensión se aplican también a otras ciencias sociales y exactas.

El modelo Top-down 

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 requerimientos aunque estas cajas negras no expliquen en detalle los componentes individuales.

El modelo Bottom-up

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.

Uso de los Top-down y Bottom-up en el desarrollo de software

El diseño Top-down fue promovido en los setenta 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 usara de forma más activa en 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 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.