O que significa "design downstream / upstream" no desenvolvimento de software?
O que significa "design downstream / upstream" no desenvolvimento de software?
Respostas:
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.
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.
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.