tl; dr summary : l'ingegneria del software è una disciplina giovane che sta ancora cercando di costruire progetti complessi e 8 MLOC è un progetto ampio e complesso molto .
L'ingegneria del software è giovane. Molto giovane. Come, due ordini di grandezza più giovani di altre discipline ingegneristiche. L'ingegneria del software è iniziata con la prima conferenza di ingegneria del software NATO nel 1968, mentre ad es. L'ingegneria civile, l'ingegneria strutturale e l'ingegneria meccanica sono iniziate più o meno con la costruzione della Grande Piramide ... cioè 60 anni contro 4600 anni di esperienza.
O, per dirla in parole povere: non l'abbiamo ancora capito.
Ci sono un paio di cose che rendono l'ingegneria del software diversa dalle altre discipline ingegneristiche, soprattutto il fatto che il software può essere copiato e riutilizzato a costo zero e che il software può essere astratto, parametrizzato e generalizzato. Ciò significa che di solito costruiamo solo cose che nessuno ha mai costruito prima, perché se qualcuno l'aveva prima di crearlo, potremmo duplicare questa soluzione senza alcun costo. Questo è diverso da ad es. Ingegneria strutturale. Non puoi semplicemente schioccare le dita e clonare un bridge, ma puoi farlo con il software.
Quindi, altre discipline ingegneristiche hanno decenni, secoli, persino millenni di esperienza che perfezionano l'edificio (più o meno) la stessa cosa più e più volte, mentre SE ha solo 6 decenni di esperienza nella creazione di cose completamente nuove ogni volta.
Oh, e non fare errori: se pensi che confrontare il sistema software dell'F-35 con una delle grandi meraviglie del mondo antico sia ingiusto con gli erculean sforzi degli antichi egizi, direi che la complessità della costruzione di un sistema software sofisticato e avanzato come gli F-35 con la sua avionica, fusione dei sensori e ambiente di realtà virtuale (solo per citarne alcuni) è paragonabile alla complessità di costruire qualcosa come la Grande Piramide.
L'F-35 non è in realtà un piano ma tre. L'F-35C ha ali più grandi, quindi la sua aerodinamica è diversa. L'F-35B è in realtà un aeromobile completamente diverso in uno, uno che genera l'ascensore con le sue ali e uno che genera il sollevamento con il suo ventilatore e l'ugello del motore. Mentre questo progetto risparmia costi e riduce la complessità (almeno questa è l'idea, ci sono persone che affermano diversamente) rispetto allo sviluppo e al mantenimento di tre diversi aerei, ovviamente aggiunge complessità rispetto ad ogni singolo aereo che sarebbe ipoteticamente stato sviluppato, se non lo avessero scelto il concetto "Joint".
Aggiungete a ciò il fatto che questo è un progetto governativo, in cui vi sono molti interessi potenzialmente in conflitto che influenzano il progetto che in realtà non hanno nulla a che fare con i requisiti intrinseci funzionali o addirittura non funzionali del progetto.
8 MLOC è un grande progetto. Pensa al kernel di Linux, la sua dimensione totale è pressappoco la stessa (~ 10 + MLOC al momento, penso). Ma circa il 90% di quel codebase sono driver di dispositivo (ad esempio per dozzine di schede grafiche, dozzine di controller SCSI, oscuri dispositivi di input e output industriali di cui non si è mai sentito parlare, ...), quindi actual Il kernel di Linux è solo di circa 1 MLOC. Di che , il 90% è codice di supporto specifico dell'architettura (per circa 20 architetture di sistema da non meno di 3 architetture PC (x86 (32 bit), amd64 (64 bit) e x32 (amd64 in lungo modalità, ma con puntatori a 32 bit per risparmiare spazio)) a più architetture ARM, PowerPC, MIPS diverse per CPU che non hai mai nemmeno sentito nominare). Quindi, il sistema operativo reale è solo di circa 100 KLOC. Ora, un sistema operativo è generalmente considerato un sistema complesso e Linux è considerato un sistema operativo di grandi dimensioni. Bene, il sistema software dell'F-35 è circa 100 volte più grande!
What methods are there to limit development time in large software projects?
Questo è essenzialmente ciò che è l'ingegneria del software.