Penso che come concetto "l'ingegneria del software dovrebbe essere come costruire una casa" è in gran parte frainteso. Come metafora letterale, accetto un po 'la risposta di S. Lott che la metafora sembra essere infranta. Come concetto, comunque, penso che l'idea che il software debba essere "ingegnerizzato" proprio come i costrutti fisici sono "ingegnerizzati" è solido, ma richiede una piccola prospettiva. La creazione di software è come costruire una casa? No, e non lo sarà mai, ma dal momento che i processi creativi sono migliorati e sviluppati nel tempo, penso che l'ingegneria del suono sia cresciuta per essere così integrata con ciò che facciamo, che a malapena lo riconosciamo per quello che è veramente.
Dimenticatevi di come i 3 Amigos hanno promosso UML e di come costruire case basandosi su una metodologia cascata e su tutto quel materiale. Invece di guardare le differenze, guarda le somiglianze concettuali. Un architetto specifica un'approssimazione di cosa sarà una casa. Egli specifica un framework, ma afferma solo quanto basta per garantire che, indipendentemente da come vengono implementati i progetti, che il progetto sarà strutturalmente valido. Questo vale anche per un buon architetto di software.
Anche se sono d'accordo sul fatto che i processi di sviluppo del software debbano essere altamente iterativi, sono in disaccordo con le persone che credono di poter creare un progetto software sonoro semplicemente desiderandolo nell'esistenza dopo aver iniziato la codifica. Anche gli Agile Warriors più abili là fuori avranno almeno l'esperienza di avere in mente un progetto generale approssimativo prima di mettere qualcosa in prova o in codice. Il vantaggio per l'ingegnere del software, tuttavia, è che i difetti di progettazione possono diventare rapidamente evidenti e che con i test in corso, il refactoring è più semplice e un'architettura scarsamente fattorizzata può diventare "migliore" organicamente, con il passare del tempo.
Quindi, nel cuore della domanda dell'OP, sono stati compiuti progressi nello sviluppo di software utilizzando le pratiche di ingegneria del suono? La mia risposta è un sonoro sì, ma dipende in gran parte dal tuo punto di vista. Dalle mie esperienze / prospettive, ho visto l'ascesa e la "caduta" di UML come un'indicazione che il concetto di ingegneria del software ha superato la necessità di processi di progettazione pesantemente irreggimentati in termini di documentazione, ma che UML mantiene un posto nel processo come mezzo per aiutare gli sviluppatori a elaborare diagrammi concettuali in modo schematico. Ciò aiuta gli sviluppatori a spiegare cosa stanno facendo agli altri, in particolare ai laici. Le linee guida e le metodologie procedurali sono nate in molte forme diverse, ed è proprio queste le vere indicazioni su come il software è progettato oggi. Prendi qualsiasi processo agile, e ci si concentra sul testing, e nella maggior parte dei casi un approccio test-first. Dal punto di vista del design, i test sono parte integrante del processo di progettazione, poiché i test convalidano il design. Le specifiche sotto forma di brevi dichiarazioni "story" / "feature" fanno anche parte dei processi di ingegneria e, con l'avvento dell'integrazione continua e dei processi di compilazione automatizzati che sono così comuni oggi, il ruolo dello sviluppatore di software medio si è appoggiato più verso la fine della progettazione dello spettro, e ha lasciato i compiti più banali e spesso ripetitivi da affrontare con un sistema dedicato "robot".
Per quanto riguarda gli architetti del software in circolazione? Che cosa fanno veramente? Ancora una volta ritengo che questo sia un ruolo poco compreso perché la gente pensa che gli architetti debbano progettare tutto in anticipo. Questo può essere vero per la progettazione hardware, ma per quanto riguarda il software, gli architetti dovrebbero essere comunicatori e facilitatori e dovrebbero essere le persone che determinano in che modo i vincoli aziendali influenzeranno la progettazione generale di un prodotto. Se questo significa specificare un progetto scheletrico in anticipo, allora questo è un aspetto positivo, ma l'architetto deve quindi garantire che il resto del prodotto possa crescere e crescere all'interno di tale framework e che vengano utilizzati processi di ingegneria del software appropriati per implementare effettivamente il prodotto all'interno delle linee guida specificate.