Spesso si pensa che il software sia solo codice, ma nell'ingegneria del software esso comprende i programmi, tutta la documentazione associata e i dati di configurazione necessari per farlo funzionare.
Lo sviluppo professionale del software produce due tipi principali di prodotti:
Un software ben progettato non deve solo funzionare, ma deve possedere quattro caratteristiche essenziali:
Manutenibilità: Deve poter evolvere per soddisfare le esigenze dei clienti che cambiano nel tempo.
Affidabilità e sicurezza: Non deve causare danni economici o fisici in caso di guasto e deve essere protetto da utenti malintenzionati.
Efficienza: Non deve sprecare risorse del sistema (come memoria o potenza del processore).
Accettabilità: Deve essere facile da usare, comprensibile e compatibile con i sistemi degli utenti a cui è destinato.
Definizione di Ingegneria del Software
L'ingegneria del software è definita come una disciplina ingegneristica che si occupa di tutti gli aspetti della produzione di software. Essere una disciplina ingegneristica significa applicare teorie, metodi e strumenti in modo mirato, risolvendo problemi pratici tenendo conto di vincoli finanziari e organizzativi.
È una materia fondamentale perché l'economia e la società dipendono ormai da sistemi software avanzati. Inoltre, realizzare software applicando questi metodi è molto più economico a lungo termine, specialmente perché i costi di manutenzione ed evoluzione del software superano di gran lunga i costi di sviluppo iniziale.
Tutti i processi software prevedono quattro attività fondamentali:
Il capitolo individua anche le sfide generali che questa disciplina deve affrontare: l'eterogeneità dei sistemi distribuiti su reti diverse, i rapidi cambiamenti aziendali e sociali, la garanzia di sicurezza e fiducia, e la necessità di gestire scale di grandezza diverse (dai micro-dispositivi ai sistemi globali basati su cloud).