L’ingegneria del software si occupa di tutto il processo software. Ma cos’è?

Il processo software è un’insieme di attività il cui scopo è lo sviluppo o la modifica del software. Le attività comuni a tutti i tipi di processo sono:

  1. Specifica: i clienti e gli ingegneri definiscono cosa deve fare il software ed i vincoli di progettazione;
  2. Sviluppo: progettazione e programmazione;
  3. Convalida: si verifica che il software sia esattamente quello richiesto dal cliente;
  4. Evoluzione: si modifica il prodotto per adeguarlo ai requisiti dell’utente e del mercato che cambiano.

Il processo software è molto complesso e si preferisce avere una descrizione semplificata. Per questo si usano i modelli di processo software per osservare il processo da un determinato punto di vista. Esistono diversi modelli di processo e sono:

  • Modello a flusso di lavoro (workflow model): mostra la sequenza di attività del processo con rispettivi ingressi, uscite e dipendenze. Ogni attività è un’azione umana.
  • Flusso di dati o modello di attività (data flow o activity model): il processo è visto come insieme di attività le quali modificano qualche dato dell’informazione. Ogni attività rappresenta una trasformazione dell’input in output operata da persone o computer.
  • Il modello ruolo/azione (role/action model): mostra i ruoli delle persone coinvolte nel processo e le attività  di cui sono responsabili.

La maggior parte dei modelli di processo si basano sui seguenti modelli generici o paradigmi:

  • approccio a cascata: le attività sono fasi di lavorazione separate – un’attività inizia quando le precedenti sono concluse e “firmate per accettazione firmate per accettazione”;
  • sviluppo ciclico: il processo è organizzato in iterazioni, in cui vengono eseguite varie attività;
  • ingegneria del software basata su componenti (CBSE): tecnica che presuppone l’esistenza di alcune parti del sistema, e che concentra lo sviluppo sull’integrazione di queste parti, anziché sullo sviluppo dal nulla.

Software di qualità. Ma quanto costa l’ingegneria del software?

I costi dell’ingegneria del software sono circa il 60% legati allo sviluppo ed il restante alle prove. Per il software personalizzato spesso i costi di evoluzione superano quelli di sviluppo.

Costi dell'ingegneria del software per i differenti modelli generici di processo software

Le caratteristiche di un software di qualità

Un buon software deve fornire le funzionalità e le prestazioni richieste dall’utente; la qualità si vede dal comportamento durante l’esecuzione del software, l’organizzazione e la struttura del programma sorgente e della documentazione. Le caratteristiche essenziali del software di qualità sono:

  • Manutenibilità: il software deve essere scritto in modo da evolversi in rapporto alle richieste del cliente.
  • Fidatezza: comprende l’affidabilità, la protezione e la sicurezza. L’applicazione non deve provocare danni fisici ed economici in caso di malfunzionamento.
  • Efficienza: non deve far uso dispendioso delle risorse del sistema.
  • Usabilità: deve essere facile da usare per gli utenti.

Quindi cosa fa l’ingegneria del software?

La sfida dell’ingegneria del software è affrontare la crescente diversità dei sistemi e sviluppare software affidabile in tempi sempre più ridotti.

Riferimenti

Libro: “Ingegneria del Software”, di Ian Sommerville, Casa editrice Pearson Italia S.p.a.