Sono un strong sostenitore per l'ingegneria del software, ma anche io devo ammettere che non abbiamo molti degli stessi strumenti, principi e leggi di altre discipline ingegneristiche. Perchè è questo? E cosa dovremmo fare per arrivarci?
Due motivi principali:
Le persone non vogliono che la maggior parte del loro software sia ben progettata e progettata. Mentre le persone non vogliono bug nel software che controlla un 747, sono chiaramente felici di consentire nel loro elaboratore di testi se ciò significa che costa $ 20 invece di $ 20.000.
Il software esiste principalmente in un universo immaginario che di solito attraversa questo universo in aree definite esplicitamente. Gran parte del funzionamento del software è essenzialmente privo di limitazioni fisiche, e puoi fare praticamente tutto purché tu abbia abbastanza CPU e spazio di memoria, il che molto spesso lo fai.
Confronta questo con altre discipline, in cui sei dominato da vincoli fisici. Le cose hanno massa, hanno resistenze a trazione, hanno dimensioni, hanno tolleranza. I materiali corrodono, cambiano e hanno altre interazioni. Il software è essenzialmente informazioni. Non ha dimensioni reali e un 1 in software è un ideale 1. Non ci sono tolleranze su tutto come nel mondo fisico.
Di conseguenza, ci sono pochissimi primi principi universali nello sviluppo del software. Quasi tutte le "regole" o le "migliori pratiche" possono essere violate, e spesso ci sono situazioni in cui la loro violazione è giusta linea di condotta per il compito dato. La mancanza di principi primi è ciò che impedisce alla maggior parte dello sviluppo del software di essere lo stesso tipo di disciplina delle altre discipline ingegneristiche.
Ecco perché il computer di bordo, in cui le sue esigenze sono dettate dalle leggi dell'universo, può essere progettato attraverso un processo tradizionale e un'app line-of-business, dove puoi fare praticamente tutto quello che vuoi, non sarà, né dovrebbe.
Leggi altre domande sui tag engineering