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.