O que significa "design a jusante / a montante"?

20

O que significa "design downstream / upstream" no desenvolvimento de software?

RegDwight
fonte
1
Não sei se o uso que você está perguntando está bem estabelecido. Qual é o contexto da sua pergunta? Que problema você está tentando resolver?
Jeremy
Tem certeza de que a palavra "design" está anexada? Já ouvi falar de upstream e downstream, geralmente associados a "atividades", não ao design. Nesse sentido, requisitos e design são atividades upstream, enquanto implementação, teste e manutenção são atividades downstream.
Thomas Owens
Relacionado: O que significa 'upstream'? em OS
kenorb

Respostas:

30

Os componentes upstream são outras partes do sistema das quais seu componente depende para realizar seu trabalho. Se o design de um componente upstream mudar, a capacidade do seu componente para funcionar pode ser afetada. Se um componente upstream tiver um bug, esse bug poderá se manifestar no seu componente.

Componentes a jusante são partes do sistema que seu componente pode afetar. As alterações no seu componente podem se transformar em componentes que estão a jusante do seu componente.

Considere um aplicativo que consiste em uma camada de banco de dados e uma camada de aplicativo. A camada do banco de dados seria considerada como upstream da camada do aplicativo.

Jay Elston
fonte
1
Resposta fácil de lembrar aqui stackoverflow.com/a/38917565/579689
Talespin_Kit
10

Rio acima = rio acima (a origem do software) Rio abaixo = rio abaixo (dos casos de uso)

Os desenvolvedores de código aberto "downstream" criam aplicativos e ferramentas nos produtos finais. Aqueles que estão no upstream realmente trabalham nos produtos a serem liberados.

Se você desenvolve software: depende da estabilidade do desenvolvimento upstream. E aqueles que trabalham no seu software são desenvolvedores posteriores.

AxelS
fonte
2
Esta resposta é a mais inteligente de todas!
Alexander Leon VI
Exceto que parece ser o inverso quando se fala de um CMDB na linguagem ITIL. : /
Dwev 6/12/2016
2

Eu acho que isso é mais um jargão de engenharia de software do que o inglês, mas a maneira como eu o entendo "design downstream" é onde os desenvolvedores de aplicativos pegam as ferramentas que já foram desenvolvidas e as usam para concluir sua aplicação. Usando bibliotecas de software já produzidas, nas quais as decisões sobre o que os recursos da biblioteca já teriam sido tomadas já estão no downstream.

Com o "design upstream", o desenvolvedor do aplicativo é consultado e envolvido no desenvolvimento das bibliotecas antes que o trabalho do aplicativo realmente comece. Se você for uma empresa de software focada em software de áudio, por exemplo, pode ser necessário desenvolver bibliotecas para cobrir a variedade de softwares que planeja desenvolver. Seria bom ter os desenvolvedores de bibliotecas sentados com os desenvolvedores de aplicativos, para que os desenvolvedores de aplicativos possam fornecer informações sobre o que desejam.

O upstream é mais personalizado, o que o torna muito mais caro, mas potencialmente produz um produto final melhor.

Pedaços de bacon
fonte