Lo scopo dell’ingegneria del software
L’ingegneria del software definisce sia i modelli sia le metodologie per:
- Formalizzare il processo di progettazione;
 - Realizzare un sistema informatico;
 - Manutenere un sistema informatico.
 
In questo modo viene definito un vero e proprio ciclo di vita del software, con il tentativo di trasformare lo sviluppo software da un’attività artigianale ad un processo industriale.
Quali sono le differenze tra attività artigianale e attività industriale?
In un’attività artigianale si possono raggiungere elevati livelli qualitativi e di performance. Questo però è legato all’abilità dell’artigiano.
In un’attività industriale si cerca di raggiungere un livello di qualità o di performance adeguati al posizionamento di mercato del prodotto. Tutto questo si ottiene attraverso la definizione e la formalizzazione di processi e modalità di realizzazione.
Il ciclo di vita del software
Un prodotto software ha un suo ciclo di vita:
- ANALISI PRELIMINARE
 - PROGETTAZIONE DEL SOFTWARE
 - REALIZZAZIONE DEL SOFTWARE
 - TEST, COLLAUDO E RILASCIO IN PRODUZIONE
 - GESTIONE DEL SISTEMA SOFTWARE
 - TERMINE DEL CICLO DI VITA DEL SOFTWARE
 
Cosa non deve mancare nella documentazione di analisi?
- Lo scopo del progetto: Contesto di business in cui si opera e obiettivi del progetto.
 - Cliente, committente ed altri attori: Descrizione del cliente, descrizione del committente e altri soggetti coinvolti.
 - Utenti del progetto software: Utenti finali, proprietà degli utenti nella valutazione del nostro lavoro, partecipazione degli utenti al progetto e gli utenti addetti alla gestione del sistema.
 - Vincoli obbligatori: Vincoli alla soluzione, ambiente per l’implementazione, applicazioni da integrare, prodotti di mercato o open source da utilizzare, ambiente di lavoro in cui è impiegato il prodotto, vincoli temporali, vincoli di budget.
 - Convenzioni sui nomi: definizioni e acronimi utilizzati nell’ambito del progetto.
 - Fatti rilevanti e altre assunzioni: fattori che hanno impatto sul sistema ed ipotesi verosimili.
 - Ambito in cui viene eseguito il progetto: la situazione attuale, contesto in cui si inserisce il prodotto software e business event che devono essere implementati/supportati dal prodotto software.
 - Ambito del prodotto software: limiti di competenza del prodotto software e use case del prodotto software, ossia le azioni auto-consistenti da parte degli utenti o di altri sistemi che il prodotto deve implementare o supportare.
 
Cosa sono i requisiti del prodotto?
I requisiti del prodotto descrivono cosa il sistema deve offrire e non come il sistema deve essere sviluppato.
Quindi i requisiti sono l’elemento di riscontro per verificare se il prodotto software è un prodotto di qualità.
Che cos’è l’architettura?
L’architettura è un’aspetto essenziale nella progettazione del software, perché è un sistema formato da diverse componenti che interagiscono fra loro.
I requisiti che hanno un impatto diretto sull’architettura del sistema sono:
- Funzionalità: il sistema deve essere capace di fornire determinate funzioni;
 - Usabilità: il sistema deve essere facilmente fruibile dall’utente finale;
 - Affidabilità: il sistema deve gestire e resistere ad errori e crash;
 - Prestazioni: il sistema deve avere performance adeguate;
 - Supportabilità: il sistema deve consentire una corretta gestione e manutenzione.
 



