Riassunti

Appunti universitari in formato Markdown da Obsidian.

Processi software

download Scarica MD

È un insieme strutturato di attività necessarie per sviluppare un sistema software che riguardano specifiche, design, validazione ed evoluzione.

Un modello di processo software è una rappresentazione astratta di un processo. Presenta una descrizione di un processo da una prospettiva particolare.

Modelli di processo software generici

  • Modello a cascata: fasi separate e distinte di specifica e sviluppo;
  • Sviluppo evolutivo: le specifiche, lo sviluppo e la convalida sono intercalati;
  • Ingegneria del Software basata sui componenti: il sistema è assemblato da componenti esistenti.

Esistono molte varianti di questi modelli, ad es. sviluppo formale in cui viene utilizzato un processo a cascata ma la specifica è una specifica formale che viene raffinata attraverso diverse fasi fino a un design implementabile.

Modello a cascata

Le fasi del modello a cascata sono:

waterfall
waterfall

  • analisi e definizione dei requisiti;
  • progettazione di sistemi e software;
  • implementazione e test di unità;
  • integrazione e test del sistema;
  • funzionamento e manutenzione.

Il principale svantaggio è la difficoltà di accogliere il cambiamento dopo che il processo è in corso: una fase deve essere completata prima di passare alla fase successiva.

I problemi di questo modello:

  • la suddivisione inflessibile del progetto in fasi distinte rende difficile rispondere alle mutevoli esigenze dei clienti;
  • è appropriato solo quando i requisiti sono ben compresi e le modifiche saranno abbastanza limitate durante il processo di progettazione.
  • pochi sistemi aziendali hanno requisiti stabili;
  • il modello a cascata viene utilizzato principalmente per grandi progetti di ingegneria dei sistemi in cui un sistema viene sviluppato in diversi siti.

Sviluppo evolutivo

  • Sviluppo esplorativo: l'obiettivo è lavorare con i clienti e sviluppare un sistema finale partendo da una specifica iniziale. Inizia con requisiti ben compresi e aggiungi nuove funzionalità come proposto dal cliente;
  • Prototipazione usa e getta: l'obiettivo è comprendere i requisiti di sistema. Dovrebbe iniziare con requisiti poco compresi per chiarire cosa è veramente necessario.

evolutionary
evolutionary

I principali problemi di questo modello sono:

  • mancanza di visibilità del processo;
  • i sistemi sono spesso poco strutturati;
  • potrebbero essere richieste competenze speciali (ad esempio nelle lingue per la prototipazione rapida).

Viene applicato per:

  • per sistemi interattivi di piccole o medie dimensioni;
  • per parti di sistemi di grandi dimensioni (es. l'interfaccia utente);
  • per sistemi di breve durata.

Ingegneria del Software basata sui componenti

Basato sul riutilizzo sistematico in cui i sistemi sono integrati da componenti esistenti o sistemi COTS (Commercial-off-the-shelf).

Le fasi del processo sono:

  • analisi dei componenti;
  • modifica dei requisiti;
  • progettazione del sistema con riutilizzo;
  • sviluppo e integrazione.

Questo approccio sta diventando sempre più utilizzato man mano che sono emersi gli standard dei componenti.

Iterazione del processo

I requisiti di sistema si evolvono SEMPRE nel corso di un progetto. L'iterazione può essere applicata a qualsiasi modello di processo generico. Due approcci (correlati): consegna incrementale e sviluppo a spirale.

Sviluppo a spirale

Il processo è rappresentato come una spirale piuttosto che come una sequenza di attività con backtracking.

Ciascun ciclo della spirale rappresenta una fase del processo.

Nessuna fase fissa come specifica o progettazione: i loop nella spirale vengono scelti in base a ciò che è richiesto.

I rischi sono esplicitamente valutati e risolti durante tutto il processo.

Sviluppo incrementale

Lo sviluppo e la consegna sono suddivisi in incrementi: ogni incremento fornisce parte della funzionalità richiesta.

I requisiti degli utenti hanno la priorità e i requisiti con priorità più alta sono inclusi nei primi incrementi.

Una volta avviato lo sviluppo di un incremento, i requisiti vengono congelati anche se i requisiti per gli incrementi successivi possono continuare a evolversi.

incrementale
incrementale

I vantaggi di questo modello sono:

  • il valore del cliente può essere fornito con ogni incremento in modo che la funzionalità del sistema sia disponibile prima;
  • i primi incrementi fungono da prototipo per aiutare a sollecitare i requisiti per gli incrementi successivi;
  • minor rischio di fallimento complessivo del progetto;
  • i servizi di sistema con la priorità più alta tendono a ricevere il maggior numero di test.

Attività di processo

Specifiche del software

È il processo per stabilire quali servizi sono richiesti dei vincoli al funzionamento e allo sviluppo del sistema. Il processo di ingegneria dei requisiti è composto da:

  • studio di fattibilità;
  • elicitazione e analisi dei requisiti;
  • specifica dei requisiti;
  • convalida dei requisiti.

specificheSoftware
specificheSoftware

Progettazione e implementazione del software

È il processo di conversione delle specifiche di sistema in un sistema eseguibile.

Con questo processo, si deve progettare una struttura software che realizzi la specifica e tradurre questa struttura in un programma eseguibile.

Le attività di progettazione e realizzazione sono strettamente correlate e possono essere interconnesse.

Le attività del processo di progettazione:

  • progettazione architettonica;
  • specifica astratta;
  • progettazione dell'interfaccia;
  • progettazione dei componenti;
  • progettazione della struttura dei dati;
  • progettazione di algoritmi;

progettazione
progettazione

Convalida del software

La verifica e la convalida hanno lo scopo di dimostrare che un sistema è conforme alle sue specifiche e soddisfa i requisiti del cliente del sistema.

Implica il controllo e la revisione dei processi e dei test di sistema.

Il test del sistema implica l'esecuzione del sistema con casi di test derivati dalla specifica dei dati reali che devono essere elaborati dal sistema.

Evoluzione del software

Il software è intrinsecamente flessibile e può cambiare.

I requisiti cambiano e il software deve evolversi e cambiare.

Sebbene vi sia stata una demarcazione tra sviluppo ed evoluzione (manutenzione), ciò è sempre più irrilevante poiché sempre meno sistemi sono completamente nuovi.

evoluzioneSoftware
evoluzioneSoftware

Metodi strutturati

Sono approcci sistematici allo sviluppo di un software design. Il progetto è solitamente documentato come un insieme di modelli grafici. I modelli possibili sono:

  • modello a oggetti;
  • modello di sequenza;
  • modello di transizione di stato;
  • modello strutturale;
  • modello a flusso di dati.

Fasi di test

  • Test di componenti o unità: i singoli componenti vengono testati in modo indipendente oppure possono essere funzioni o oggetti o raggruppamenti coerenti di queste entità;
  • Test del sistema: test del sistema nel suo complesso. La verifica delle proprietà emergenti è particolarmente importante;
  • Test di accettazione: test con i dati del cliente per verificare che il sistema soddisfi le esigenze del cliente.

Computer-aided software engineering (CASE)

CASE è un software per supportare i processi di sviluppo e di evoluzione del software. Si occupa dell'automazione delle attività come:

  • editor grafici per lo sviluppo di modelli di sistema;
  • dizionario dati per la gestione delle entità progettuali;
  • generatore di interfaccia utente grafica per la costruzione dell'interfaccia utente;
  • debugger per supportare la ricerca dei guasti del programma;
  • traduttori automatici per generare nuove versioni di un programma.

Integrazioni CASE

  • Tools: supporta le singole attività di processo come il controllo della coerenza del design, la modifica del testo, ecc;
  • Workbenches: supporta una fase di processo come la specifica o la progettazione, normalmente include una serie di strumenti integrati;
  • Ambienti: supporta tutto o una parte sostanziale di un intero processo software. Normalmente includono diversi banchi di lavoro integrati.

integrazioni
integrazioni