Suppongo che per domini lei intenda diversi campi all'interno dell'industria del software. Questa risposta NON coprirà ogni singolo campo. Ma cercherò di includere il più possibile in base alla mia conoscenza del settore.
L'industria del software è composta da due tipi di società - società di servizi e società di prodotti.
Capiamo cos'è una società di servizi. Forniscono servizi di sviluppo software per altre grandi società di software o per istituzioni governative/finanziarie/ospedali ecc. In generale, non hanno un proprio prodotto, ma ci sono alcune eccezioni.
Diversi ruoli/team in un'azienda basata sui servizi
Business Analyst: Diciamo che c'è una società XYX software Pvt LTD e hanno un governo come cliente. Il Business Analyst è il punto di contatto tra le due parti. Discuterà con il governo riguardo ai loro requisiti. I requisiti non sono altro che le caratteristiche che il cliente vuole nel suo software. Dato che un analista di business interagisce direttamente con il cliente, lui/lei dovrebbe avere grandi capacità di comunicazione.
Project Manager/Lead: Supponiamo che il contratto sia finalizzato tra il governo e l'azienda. L'azienda svilupperà il software per il governo. L'azienda ha ottenuto il progetto! Il project manager è il capo del progetto. Il manager delega i compiti ai rispettivi membri del team, tiene traccia dei compiti e gestisce l'intero team.
Squadra di sviluppo: Ci sono diverse fasi del ciclo di sviluppo del software. Finora abbiamo ottenuto i requisiti dal cliente. Prima di passare direttamente alla fase di sviluppo, il Solutions Architect/Technical Lead che fa parte del team di sviluppo o piuttosto il capo del team di sviluppo progetterà l'architettura del progetto. (A volte darà gli input e lascerà che le persone la progettino) Per implementare o sviluppare effettivamente il software. L'architettura o infrastruttura è la base di qualsiasi progetto. L'architetto deciderà gli stack tecnologici più adatti al progetto. Deciderà quale linguaggio di programmazione usare, quale database usare, quali design pattern usare, quale cloud provider usare, ecc. Una volta che l'architettura e il design sono pronti, arriva la fase di implementazione. A seconda della natura del software, il team è composto da sviluppatori web che hanno esperienza nello sviluppo front-end (se vedi un bel sito web, ringrazia uno sviluppatore web). JavaScript è il popolare linguaggio di sviluppo front-end e ci sono framework come ANGULAR e ReactJS. Per farla semplice, si può dire che i framework rendono il lavoro dello sviluppatore facile. Ci sono ragazzi che gestiscono lo sviluppo del backend. Compiti che avvengono in background. Per esempio, se andate sul sito di Amazon e cercate qualcosa. È responsabilità dello sviluppatore di backend scrivere il codice che capirà la vostra richiesta, si connetterà al database e restituirà ciò che avete chiesto. Sto semplificando. È molto più di questo! Java è il linguaggio di backend che conosco e su cui sto lavorando. Ce ne sono anche altri. Sia gli sviluppatori web che gli sviluppatori back-end lavorano insieme per costruire il software. C'è un altro profilo chiamato sviluppatore full-stack che si suppone abbia esperienza in entrambi.
Quality Assurance Team: Ora diciamo che viene costruita una piccola caratteristica. Deve funzionare secondo le aspettative del cliente. Il team di qualità assicura che tutto ciò che viene sviluppato sia in buone condizioni e funzioni come previsto. Ci sono due tipi di test, cioè manuale e automatico. Nel test automatizzato, il tester scrive il codice. Ci sono diversi framework. Selenium-Java è il più popolare per automatizzare il processo di test.
Per una società basata sui servizi, queste sono le funzioni principali. Potrei averne tralasciate alcune, ma avete capito l'idea.
Per un'azienda basata sul prodotto che sviluppa il proprio prodotto software (Uber, Ola, Amazon, Flipkart, Adobe queste sono aziende di prodotto) per gli utenti, oltre ai team sopra menzionati, ce ne sono altri.
UX Team: Questo team gioca un ruolo importante nella fase di progettazione del prodotto. Fanno brainstorming e cercano di analizzare la prospettiva dell'utente. Cosa piacerà agli utenti? Come rendere un sito web user friendly? Se vedi un sito web bello e facile da usare. Grazie a un UX designer! Creeranno dei mock-up. Hanno esperienza in Adobe Illustrator e Photoshop.
Amministrazione del database: Il database è parte integrante di qualsiasi progetto ed è bene avere un team dedicato per esso. Il compito principale è quello di progettare, implementare e mantenere il database. SQL è il requisito di base per diventare un amministratore di database.
Squadra di distribuzione: Una volta che il software è sviluppato e testato a fondo dovrebbe essere consegnato al cliente o ospitato sui server a cui il cliente può accedere. Questo è gestito dal team di distribuzione.
Altri domini includono il team di test delle prestazioni, il team di supporto delle applicazioni.