L'ingegneria dello sviluppo software è? Se no, quali sono le cose che gli mancano per essere qualificati così?
Sì, l'ingegneria del software è una disciplina ingegneristica.
Wikipedia definisce l'ingegneria come "l'applicazione della matematica, nonché delle conoscenze scientifiche, economiche, sociali e pratiche al fine di inventare, innovare, progettare, costruire, mantenere, ricercare e migliorare strutture, macchine, strumenti, sistemi, componenti, materiali , processi, soluzioni e organizzazioni ". Il risultato dell'ingegneria del software è un sistema software che può migliorare la vita delle persone e può comportare una combinazione di conoscenze scientifiche, matematiche, economiche, sociali o pratiche.
In termini di visualizzazione, accademica e professionale, varia. I programmi di ingegneria del software possono essere accreditati da ABET come programmi di ingegneria. Gli ingegneri del software possono essere membri dell'IEEE. Alcune aziende considerano l'ingegneria del software come una disciplina ingegneristica, mentre altri no - è davvero un gioco da ragazzi.
Il miglior libro su questo argomento è lo sviluppo software professionale di Steve McConnell: programmi più brevi, prodotti di qualità superiore, progetti di maggior successo, carriera migliorata . Si guarda l'ingegneria del software come professione, evoluzione da un mestiere ad una professione, la scienza dello sviluppo del software, la differenza tra software di ingegneria e software di ingegneria (l'applicazione di pratiche di ingegneria del software rispetto a ingegneri che capita di software di compilazione, con un caso di studio che include my alma mater ), certificazione e licenze ed etica.
Glenn Vanderburg ha una serie di discorsi chiamati "Real Software Engineering" che ha tenuto tra il 2010 e il 2015 in una serie di conferenze, insieme a due discorsi correlati, "Craft, Engineering, and the Essence of Programming" (tenuto nel 2011 come keynote di RailsConf) e "Craft and Software Engineering" (dato nel 2011 a QCon London). Penso che questi colloqui siano un argomento piuttosto completo sul perché l'ingegneria del software sia una disciplina ingegneristica.
Un argomento, che Vanderburg solleva brevemente nei suoi discorsi, è quello sollevato da Jack W. Reeves nel 1992 (e rivisitato di nuovo nel 2005) su cosa sia la progettazione del software e su come il codice sia l'output delle attività di progettazione dell'ingegneria del software ( questo è anche discusso sul wiki C2). Una volta che ti allontani dalle vecchie scuole di pensiero in cui le specifiche e la modellizzazione sono la progettazione del software e il codice è la progettazione del software, alcune delle relazioni tra ingegneria del software e altre discipline ingegneristiche diventano più facilmente evidenti. Alcune differenze e le ragioni di tali differenze diventano ancora più evidenti dopo aver visto che l'economia dello sviluppo del software è molto diversa rispetto a molte altre discipline: la costruzione è economica (quasi gratuita, in molti casi), mentre il design è la parte costosa.
È [CMMI] qualcosa che trasformerà lo sviluppo in ingegneria?
No. CMMI è un framework di miglioramento dei processi che fornisce indicazioni alle organizzazioni su quali tipi di attività sono utili durante la creazione di software. Le discipline ingegneristiche in genere hanno un processo di ingegneria. Avere un tale processo è importante per il successo di progetti di alta qualità. Detto questo, il CMMI (o qualsiasi altro framework o metodologia di processo) è solo un singolo strumento: utilizzarlo non ti farà avanzare magicamente da uno sviluppatore a un ingegnere. Tuttavia, non seguire alcun tipo di processo è, a mio avviso, un segno di un progetto che non è un progetto di ingegneria.
Inoltre, qual è la tua opinione sui corsi / certificati di ingegneria del software?
Ha solo lo stesso valore di altre persone. Ci sono corsi utili e ci sono corsi inutili. Esistono certificati preziosi e certificati che non valgono la carta su cui sono stampati. Ci sono molti fattori, da chi approva o accredita il corso o da chi rilascia il certificato al proprio attuale settore di lavoro fino al proprio posto di lavoro e dove si desidera andare.