¿Qué significa "diseño aguas abajo / aguas arriba"?

20

¿Qué significa "diseño descendente / ascendente" en el desarrollo de software?

RegDwight
fuente
1
No sé si el uso que está preguntando está bien establecido. ¿Cuál es el contexto de tu pregunta? ¿Que problema estas tratando de resolver?
Jeremy
¿Estás seguro de que se adjunta la palabra "diseño"? He oído hablar de aguas arriba y aguas abajo, generalmente junto con "actividades", no diseño. En ese sentido, los requisitos y el diseño son actividades posteriores, mientras que la implementación, las pruebas y el mantenimiento son actividades posteriores.
Thomas Owens
Relacionado: ¿Qué significa 'aguas arriba'? en OS
kenorb

Respuestas:

30

Los componentes ascendentes son otras partes del sistema de las que depende su componente para hacer su trabajo. Si el diseño de un componente ascendente cambia, la capacidad de su componente para funcionar puede verse afectada. Si un componente ascendente tiene un error, este error puede manifestarse en su componente.

Los componentes descendentes son partes del sistema que su componente puede afectar. Los cambios en su componente pueden convertirse en componentes que están aguas abajo de su componente.

Considere una aplicación que consta de un nivel de base de datos y un nivel de aplicación. El nivel de la base de datos se consideraría aguas arriba del nivel de la aplicación.

Jay Elston
fuente
1
Respuesta fácil de recordar aquí stackoverflow.com/a/38917565/579689
Talespin_Kit
10

Aguas arriba = aguas arriba del pozo (el origen del software) Aguas abajo = aguas abajo del océano (de casos de uso)

Los desarrolladores de código abierto que están "aguas abajo" crean aplicaciones y herramientas en los productos terminados. Aquellos que están corriente arriba realmente trabajan en los productos que se lanzarán.

Si desarrolla software: depende de la estabilidad del desarrollo ascendente. Y aquellos que trabajan en su software son desarrolladores posteriores.

AxelS
fuente
2
¡Esta respuesta es la más clara de todas!
Alexander Leon VI
Excepto que parece ser lo contrario cuando se habla de un CMDB en lenguaje ITIL. : /
Dwev
2

Creo que esto es más jerga de ingeniería de software que el inglés, pero la forma en que lo entiendo "diseño posterior" es donde los desarrolladores de aplicaciones toman las herramientas que ya se han desarrollado y las usan para completar su aplicación. El uso de bibliotecas de software ya producidas en las que las decisiones sobre lo que las capacidades de la biblioteca ya habrían sido tomadas son posteriores.

Con el "diseño ascendente" el desarrollador de la aplicación es consultado e involucrado en el desarrollo de las bibliotecas antes de que el trabajo de la aplicación haya comenzado realmente. Si va a ser una compañía de software centrada en software de audio, por ejemplo, es posible que necesite desarrollar bibliotecas para cubrir la gama de software que planea desarrollar. Sería bueno poder hacer que los desarrolladores de la biblioteca se sientan con los desarrolladores de la aplicación para que los desarrolladores de la aplicación puedan proporcionar información sobre lo que quieren.

Upstream está más personalizado, lo que lo hace mucho más costoso pero potencialmente produce un mejor producto final.

Pedacitos de tocino
fuente