Migliore risposta
Lingegneria del software è un vasto parco giochi con molti tipi e sottotipi diversi, ma i principali tipi di ingegneria del software sono due: software di sistema e software applicativo.
Software di sistema: gli esempi includono ma non sono limitati ai programmi dedicati alla gestione del computer o qualche dispositivo dedicato a unattività specifica come: sistema operativo Windows (Microsoft Windows 10), sistema operativo IOS (OS X 10.10 Yosemite., 4.13 OS X 10.11 El Capitan, 4.16 macOS 10.14 Mojave ……), sistema operativo Android (Android OS), Linux (Ubuntu…)
Software applicativo: Programmi per lutente finale che consentono allutente di eseguire attività come la creazione di documenti (Microsoft Word, Pages …), linvio di e-mail (applicazione Gmail), la progettazione di grafici (Photoshop) ecc.
E tutto quanto sopra può essere interrotto in sottocomponenti più piccoli / categorie che costituiscono sottostrutture del software applicativo e sottostrutture del software di sistema.
Un esempio di una sottocategoria di software applicativo: Photoshop è unapplicazione che appartiene a una suite di applicazioni software in Adobe Creative Software Suite composta da Photoshop, InDesign e altri.
In Ingegneria del software, quando un ingegnere del software sviluppa un sito web, unapp mobile o un gioco: tutte queste applicazioni rientrano nella categoria del software applicativo. Lingegnere sviluppa software che gira forse su un dispositivo black box fisico progettato specificamente per un aeroplano specifico: questo sviluppo specifico può rientrare nel software applicativo e nel software di sistema perché è progettato per far funzionare specificamente un dispositivo e questo dispositivo dipende specificamente da quello specifico software da avviare ed eseguire altri componenti che comprendono o fanno funzionare la scatola nera: supponiamo ora che lo stesso sviluppatore di software abbia sviluppato un componente aggiuntivo per quella scatola nera per consentire agli utenti di accedere alla scatola nera e visualizzare la posizione corrente dellaereo: quel componente, che sia in esecuzione nella scatola nera o su un dispositivo mobile, rientra nel software applicativo.
Risposta
Ci sono pessimi ingegneri del software. Ci sono semplicemente dei cattivi ingegneri del software. Ci sono ingegneri software mediocri. Ci sono ingegneri software abbastanza bravi. Ci sono buoni ingegneri del software. Ci sono grandi ingegneri del software.
E ci sono ingegneri del software che forniscono software in tempo e con budget limitato. Dio ti aiuti se devi mantenere quel software, ma era puntuale e al di sotto del budget.
Ma seriamente …
Questo elenco non è comprensivo. Inoltre, lo stesso SWE potrebbe svolgere diversi ruoli, forse in momenti diversi, e forse in momenti diversi. A proposito, non si tratta di best practice.
Ci sono SWE che scrivono documenti sui requisiti. Potrebbero anche non sapere come programmare, ma comprendono i requisiti aziendali e traducono i requisiti aziendali in requisiti del programma.
Ci sono designer che prendono i requisiti e escogitano un progetto software. Di solito, il loro output è qualcosa come un diagramma UML o un diagramma di flusso (orrori!) O un diagramma di flusso di dati o una sorta di pseudo-codice. Inoltre fanno spesso unanalisi di vari progetti competitivi per vedere quale è “ottimale”. Costituiscono anche un piano di test.
Quindi sono gli ingegneri di sviluppo software (SDE) che convertono effettivamente i requisiti in codice. Prima chiamavamo queste persone “programmatori” perché scrivevano programmi, ma quella parola è caduta in disuso (oggigiorno tutti sono ingegneri o scienziati. I bibliotecari sono ora bibliotecari. I genitori casalinghi sono ingegneri domestici. ora ingegneri edili. I conducenti di camion ora sono ingegneri operativi dei trasporti e così via).
Il codice viene testato agli ingegneri di sviluppo software. Testano il software secondo il piano di test. Di solito, ci sono due fasi di test: test di unità e test di sistema.
Infine, il software va agli ingegneri del rilascio. Non sono esattamente quello che fanno loro, perché lo sono stato per un po .
Ci sono anche scrittori tecnici che scrivono documentazione per i clienti e tecnici di supporto che aiutano i clienti quando qualcosa va storto.
Ci sono ingegneri del supporto alle vendite e il loro compito è stupirli con brillantezza o sconcertarli con cazzate. Mi è stato detto che sarei stato bravo in questo. Questo mi preoccupa.