Che cosa significa "progettazione downstream / upstream" nello sviluppo del software?
I componenti a monte sono altre parti del sistema da cui dipende il tuo componente per svolgere il proprio lavoro. Se la progettazione di un componente a monte cambia, la capacità del componente di funzionare potrebbe essere compromessa. Se un componente upstream ha un bug, questo bug può essere manifestato nel tuo componente.
I componenti a valle sono parti del sistema che il tuo componente può influenzare. Le modifiche nel componente possono propagarsi ai componenti che sono a valle del componente.
Considera un'applicazione che consiste in un livello di database e un livello di applicazione. Il livello del database dovrebbe essere considerato a monte del livello applicazione.
Upstream = up the well (l'origine del software) Verso il basso = verso il basso verso l'oceano (di casi d'uso)
Gli sviluppatori Open Source che sono "downstream" costruiscono applicazioni e strumenti sui prodotti finiti. Coloro che sono a monte lavorano effettivamente sui prodotti da rilasciare.
Se sviluppi software: dipendi dalla stabilità dello sviluppo a monte. E quelli che lavorano sul tuo software sono sviluppatori downstream.
Penso che questo sia più il gergo dell'ingegneria del software che l'inglese, ma il modo in cui lo capisco "downstream design" è dove gli sviluppatori di applicazioni prendono gli strumenti che sono già stati sviluppati e li usano per completare la loro applicazione. L'utilizzo di librerie software già prodotte in cui le decisioni su ciò che le funzionalità della libreria sarebbero già state fatte è a valle.
Con "upstream design" lo sviluppatore dell'applicazione viene consultato e coinvolto nello sviluppo delle librerie prima che il lavoro dell'applicazione sia davvero iniziato. Ad esempio, se si sta per diventare un'azienda di software che si occupa di software audio, potrebbe essere necessario sviluppare librerie per coprire la gamma di software che si intende sviluppare. Sarebbe bello poter avere gli sviluppatori di librerie sedersi con gli sviluppatori di applicazioni in modo che gli sviluppatori di app possano fornire input in quello che vogliono.
L'upstream è più personalizzato, il che lo rende molto più costoso ma potenzialmente produce un prodotto finale migliore.
Leggi altre domande sui tag terminology