Qual è la differenza tra sviluppo di sistema e sviluppo di software?

Qual è la differenza tra sviluppo di sistema e sviluppo di software?

Dipende da cosa sia il "sistema". Se il sistema consiste in un singolo componente software, allora la differenza tra sviluppo del sistema e sviluppo del software è estremamente piccola. Lo sviluppo di un sistema è compreso nello sviluppo del software.

Un sistema più complesso però potrebbe consistere in più componenti software (forse tutti operanti su una singola CPU/instanza di un ambiente operativo o potenzialmente potrebbero operare su CPU geograficamente separate). Allora lo sviluppo del sistema diventa più complicato ed entra in questioni di: Come è architettato il software (per esempio, il sistema è centralizzato o distribuito?). Quali funzionalità sono gestite da ogni componente? Come comunicano i componenti? Il sistema è scalabile aggiungendo altri componenti? Cosa succede se un componente fallisce? Come si avvia il sistema? E così via. Ora, lo sviluppo del software avviene ad un livello più basso e dettagliato dello sviluppo del sistema.

Quando lavoravo per Qualcomm, il sistema era il chip di un cellulare. La progettazione del sistema non coinvolgeva solo il software (e quindi le domande di cui sopra) ma anche l'hardware. Quante CPU e GPU avrebbe avuto il sistema? Quante periferiche hardware sarebbero state supportate? Alcune periferiche condividerebbero risorse (pin, bus, ecc.) che potrebbero precludere certe combinazioni di periferiche? Qual è il modello di memoria? Le CPU (e le GPU) hanno memoria dedicata o condivisa? Com'è la scalatura della tensione e del clock (bassi voltaggi e clock lenti significano lunga durata della batteria / clock veloci e tensioni più alte significano maggiore potenza di elaborazione). Come comunicano tutte le parti del chip? Come si avvia l'hardware (così come il software)? E così via.

In una prima parte della mia vita di ingegnere che lavorava con sistemi robotici, la progettazione del sistema includeva questioni meccaniche (quanto pesa? quanto velocemente si muove? Quale capacità della batteria è necessaria?) e questioni fisiche (rilevamento uditivo, visivo e tattile per esempio).

Per riassumere, lo sviluppo del sistema è guardare al sistema nel suo insieme e a come tutti i componenti al suo interno formano il sistema. Lo sviluppo del software è di solito focalizzato su un singolo componente del sistema - anche se, come indicato all'inizio di questa risposta, ci possono essere elementi di sviluppo del sistema all'interno dello sviluppo del software.