What does "downstream/upstream design" in software development mean?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
migrated from english.stackexchange.com Apr 25 '11 at 14:03
This question came from our site for linguists, etymologists, and serious English language enthusiasts.
Upstream components are other parts of the system that your component depends on to do its job. If the design of an upstream component changes, the ability of your component to function may be affected. If an upstream component has a bug, this bug may be manifested in your component.
Downstream components are parts of the system that your component can affect. Changes in your component can ripple to components that are downstream from your component.
Consider an application that consists of a database tier and an application tier. The database tier would be considereded to be upstream of the application tier.
Upstream = up the well (the origin of the software) Downstream = downwards to the ocean (of use cases)
Open Source developers who are "downstream" build applications and tools on the finished products. Those who are upstream actually work on the products to be released.
If you develop software: you depend on the stability of the upstream development. And those who work on your software are downstream developers.
I think this is more software engineering jargon than English, but the way I understand it "downstream design" is where the application developers take the tools that have already been developed and use them to complete their application. Using already produced software libraries where decisions about what the library capabilities would do have already been made is downstream.
With "upstream design" the application developer is consulted and involved in the development of the libraries before the application work has even really begun. If you're going to be a software company focusing on audio software, for example, you might need to develop libraries to cover the range of software you plan to develop. It would be nice to be able to have library developers sit down with the application developers so that the app devs can provide input into what they want.
Upstream is more customized, which makes it much more expensive but potentially produces a better end product.
protected by gnat Jun 25 at 7:34
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?