Cosa significa "progettazione a valle / a monte" nello sviluppo del software?
Cosa significa "progettazione a valle / a monte" nello sviluppo del software?
Risposte:
I componenti a monte sono altre parti del sistema da cui il componente dipende per fare il suo lavoro. Se la progettazione di un componente a monte cambia, la capacità del componente di funzionare potrebbe essere compromessa. Se un componente a monte presenta un bug, questo errore può manifestarsi nel componente.
I componenti a valle sono parti del sistema che possono influire sul componente. Le modifiche al componente possono essere convertite in componenti a valle del componente.
Si consideri un'applicazione che consiste in un livello di database e un livello di applicazione. Il livello del database verrebbe considerato a monte del livello dell'applicazione.
A monte = sopra il pozzo (l'origine del software) A valle = verso il basso verso l'oceano (dei casi d'uso)
Gli sviluppatori Open Source "downstream" sviluppano 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 a valle.
Penso che questo sia un gergo di ingegneria del software più dell'inglese, ma il modo in cui lo capisco "progettazione a valle" è 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 sono già state prese le decisioni su ciò che le funzionalità della libreria sarebbero state prese è a valle.
Con la "progettazione a monte" lo sviluppatore dell'applicazione viene consultato e coinvolto nello sviluppo delle librerie prima ancora che il lavoro dell'applicazione sia realmente iniziato. Se stai per essere una società di software focalizzata sul software audio, ad esempio, potresti dover sviluppare librerie per coprire la gamma di software che intendi sviluppare. Sarebbe bello poter far sedere gli sviluppatori di librerie con gli sviluppatori di applicazioni in modo che gli sviluppatori di app possano fornire input in ciò che vogliono.
L'upstream è più personalizzato, il che lo rende molto più costoso ma potenzialmente produce un prodotto finale migliore.