Cos'è l'ingegneria del software? Caratteristiche e definizione.
⚡ Riepilogo intelligente
L'ingegneria del software è il processo rigoroso di analisi dei requisiti e successiva progettazione, realizzazione e collaudo di software che li soddisfi. Questa risorsa ne illustra le definizioni, la crisi del software che l'ha generata, la sua popolarità, le discipline correlate, le sfide e le caratteristiche di un buon software.

Cos'è l'ingegneria del software?
L'ingegneria del software è definita come il processo di analisi dei requisiti dell'utente e la successiva progettazione, realizzazione e collaudo di un'applicazione software in grado di soddisfare tali requisiti.
Esaminiamo le diverse definizioni di ingegneria del software:
- L'IEEE, nel suo standard 610.12-1990, definisce l'ingegneria del software come l'applicazione di un approccio sistematico, disciplinato e computabile allo sviluppo, al funzionamento e alla manutenzione del software.
- Fritz Bauer la definì come "l'istituzione e l'utilizzo di principi ingegneristici standard. Aiuta a ottenere, in modo economico, software affidabile e funzionante in modo efficiente su macchine reali".
- Boehm definisce l'ingegneria del software come "l'applicazione pratica della conoscenza scientifica alla progettazione creativa e alla realizzazione di programmi per computer. Include anche la documentazione associata necessaria per lo sviluppoping, gestendoli e mantenendoli in funzione.”
Perché ingegneria del software? Crisi del software e sua soluzione
Cos'è stata la crisi del software?
- Era la fine degli anni ’1960 quando molti progetti software fallirono.
- Molti progetti software hanno superato il budget previsto. Il risultato è stato un software inaffidabile e costoso da manutenere.
- Il software più grande era difficile e piuttosto costoso da mantenere.
- Molti software non sono stati in grado di soddisfare le crescenti esigenze dei clienti.
- La complessità dei progetti software aumentava di pari passo con l'aumento delle capacità hardware.
- La domanda di nuovo software è aumentata più rapidamente rispetto alla capacità di generare nuovo software.
Tutti i problemi sopra menzionati hanno portato alla "crisi del software".
La Soluzione
La soluzione al problema consisteva nel trasformare l'attività di programmazione disorganizzata in una disciplina di ingegneria del software. Questi modelli ingegneristici hanno aiutato le aziende a snellire le operazioni e a fornire software che soddisfacesse i requisiti dei clienti.
- Alla fine degli anni '1970 si assistette alla diffusione dei principi dell'ingegneria del software.
- Gli anni '1980 hanno visto l'automazione del processo di ingegneria del software e la crescita dell'ingegneria del software assistita da computer (CASE).
- Negli anni '1990 si è assistito a una crescente enfasi sugli aspetti "gestionali" dei progetti e sugli standard di qualità e di processo, come nel caso della norma ISO 9001.
Perché l'ingegneria del software è popolare?
Ecco le ragioni importanti dietro la popolarità dell’ingegneria del software:
- Software di grandi dimensioni Nella vita reale, è molto più facile costruire un muro che una casa o un edificio. Allo stesso modo, man mano che le dimensioni del software aumentano, l'ingegneria del software ti aiuta a realizzarlo.
- Scalabilità – Se il processo di sviluppo del software si basa su concetti scientifici e ingegneristici, è più facile ricreare un nuovo software per scalare quello esistente.
- Adattabilità – Quando il processo di sviluppo del software si basa su principi scientifici e ingegneristici, è facile ricreare nuovo software con l'aiuto dell'ingegneria del software.
- Costo – L'industria hardware ha dimostrato la sua competenza e la produzione su larga scala ha ridotto il costo dei computer e dei componenti elettronici.
- Natura Dinamica – La natura in continua evoluzione e adattamento del software. Dipende dall'ambiente in cui opera l'utente.
- Gestione della qualità – Offre un metodo migliore di sviluppo software per fornire prodotti software di qualità.
Rapporto dell'ingegneria del software con altre discipline
Ecco come l'ingegneria del software si relaziona con altre discipline:
- Scienza del computer: Fornisce le basi scientifiche per il software, proprio come la fisica è il fondamento dell'ingegneria elettrica.
- Scienze gestionali: L'ingegneria del software è un lavoro ad alta intensità di manodopera che richiede controllo sia tecnico che gestionale. Pertanto, è ampiamente utilizzata nelle scienze gestionali.
- Economia: In questo settore, l'ingegneria del software è di supporto nella stima delle risorse e nel controllo dei costi. È necessario sviluppare un sistema informatico e aggiornare regolarmente i dati entro un budget prestabilito.
- Ingegneria dei sistemi: La maggior parte dei software è un componente di un sistema molto più ampio, ad esempio il software di un sistema di monitoraggio industriale o il software di volo di un aereo. I metodi dell'ingegneria del software dovrebbero essere applicati allo studio di questo tipo di sistemi.
Sfide dell'ingegneria del software
Ecco alcune sfide critiche affrontate dagli ingegneri del software:
- In settori critici per la sicurezza come quello spaziale, aeronautico e delle centrali nucleari, il costo di un malfunzionamento del software può essere enorme, poiché sono in gioco vite umane.
- L’aumento delle richieste del mercato per tempi di consegna rapidi.
- Gestire la crescente complessità del software necessario per le nuove applicazioni.
- La diversità dei sistemi software che devono comunicare tra loro.
Attributi per prodotti software
Le caratteristiche di qualsiasi prodotto software includono funzionalità che vengono visualizzate dal prodotto una volta installato e messo in uso.
Non si tratta dei servizi offerti dal prodotto, bensì di elementi legati al comportamento dinamico del prodotto e all'utilizzo che se ne fa.
Esempi di questi attributi sono:
Efficiency, reliability, robustness, maintainability, etc.
Tuttavia, l'importanza relativa di queste caratteristiche varia da un sistema software all'altro.
| Caratteristiche del Prodotto | Descrizione |
|---|---|
| manutenibilità | Il software dovrebbe evolversi per soddisfare le mutevoli esigenze dei clienti. |
| AFFIDABILITÀ | L'affidabilità comprende varie caratteristiche. Un software affidabile non dovrebbe mai causare danni fisici o economici al momento del guasto del sistema. |
| EFFICIENZA | L'applicazione software non deve utilizzare in modo eccessivo le risorse di sistema come la memoria e i cicli del processore. |
| usabilità | L'applicazione software deve disporre di un'interfaccia utente e di una documentazione adeguate. |
Ottimizzare gli attributi sopra menzionati è molto impegnativo. Ad esempio, offrire un'interfaccia utente migliore può ridurre l'efficienza del sistema.
Caratteristiche del buon software
Qualsiasi software dovrebbe essere valutato in base a ciò che offre e ai metodi che ne facilitano l'utilizzo.
Ogni software deve soddisfare i seguenti attributi:
- Operazionale
- Transitional
- Manutenzione
Ecco alcune caratteristiche importanti di un buon software sviluppato da professionisti del settore.
Operazionale
Questa caratteristica ci permette di capire quanto bene un software funziona in fase operativa, e può essere misurata in base a:
- bilancio
- EFFICIENZA
- usabilità
- AFFIDABILITÀ
- Correttezza
- Funzionalità
- Sicurezza
- Sicurezza
Transitional
Questo è un aspetto essenziale quando il software viene spostato da una piattaforma all’altra:
- Interoperabilità
- riutilizzabilità
- Portabilità
- Adattabilità
Manutenzione
Questo aspetto riguarda la capacità del software di adattarsi a un ambiente in rapida evoluzione:
- Flessibilità
- manutenibilità
- modularità
- Scalabilità

