Salta al contenuto
Note per Studenti Ciclo di vita di un sistema informativo e analisi dei requisiti

Ciclo di vita di un sistema informativo e analisi dei requisiti

In questa pagina 4

Prima di disegnare uno schema bisogna sapere che cosa deve rappresentare. Questa nota mette la progettazione di basi di dati nel contesto del software, spiega come si ricavano i requisiti e descrive le tre fasi della progettazione (concettuale, logica, fisica) che le note successive sviluppano.

Ciclo di vita di un sistema informativo

Un sistema informativo (information system) ha un ciclo di vita in fasi:

  1. Studio di fattibilità: costi, benefici, rischi.
  2. Analisi dei requisiti: che cosa deve fare il sistema.
  3. Progettazione (design), di due tipi: dei dati (data design, questa è la progettazione della base di dati) e delle applicazioni (application design).
  4. Sviluppo (development): realizzazione del codice.
  5. Collaudo (testing).
  6. Esercizio e manutenzione (operation and maintenance).

Due modelli di processo:

  • Cascata (waterfall): le fasi si susseguono, ciascuna produce un risultato che alimenta la successiva e si torna indietro solo per correggere errori.
  • A spirale (spiral): il processo si ripete per versioni: a ogni giro si rifanno analisi, progettazione, sviluppo e collaudo di una versione sempre più completa, con collaudo e manutenzione che alimentano la versione seguente.

Gli errori hanno un costo che cresce quanto più tardi si scoprono: un requisito frainteso, scoperto solo al collaudo, obbliga a rifare progettazione e sviluppo. Per questo si distinguono gli errori per tipo (di requisiti, di progetto, di realizzazione) e si cerca di intercettarli presto: è uno dei motivi del lavoro sullo schema concettuale, che il committente può leggere (vedi sotto).

Requisiti

Definizione (requisiti). I requisiti sono l'insieme delle caratteristiche che un sistema deve avere per rispettare il suo scopo. Si distinguono in:

  • funzionali: che cosa il sistema deve fare (esempio: stampare la fattura);
  • non funzionali: il modo in cui deve farlo (esempio: stampare in meno di un minuto);
  • altri vincoli: requisiti generali posti dagli stakeholder, spesso decisi in anticipo (esempio: usare Linux).

Raccolta e analisi

La raccolta dei requisiti usa fonti diverse: frasi in linguaggio naturale (interviste, testi del committente), documentazione esistente, applicazioni esistenti. L'analisi le trasforma in:

  1. frasi filtrate: le frasi in linguaggio naturale, ripulite da ambiguità, sinonimi e omonimi, riorganizzate per concetto;
  2. individuazione dei concetti chiave del mini-mondo;
  3. glossario dei dati (data glossary): per ogni termine una descrizione, i sinonimi e i termini collegati.

Esempio. Testo del committente: "Una biblioteca universitaria presta libri ai propri iscritti. Di ogni libro si conoscono titolo e autori; ogni libro può essere posseduto in più copie. Gli iscritti possono tenere un libro al massimo 30 giorni. Il bibliotecario vuole sapere quali copie sono in prestito."

Frasi filtrate, per concetto:

Concetto Frasi
Iscritto Ogni iscritto ha un codice, un nome e un indirizzo e può prendere in prestito più copie.
Libro Ogni libro ha titolo e uno o più autori.
Copia Ogni libro ha una o più copie, ciascuna con un numero di inventario.
Prestito Ogni prestito riguarda una copia e un iscritto; ha data di inizio e scade dopo 30 giorni.

Glossario:

Termine Descrizione Sinonimi Collegato a
Iscritto persona abilitata al prestito utente, lettore Prestito
Libro opera, non la singola copia fisica titolo, volume Copia, Autore
Copia esemplare fisico di un libro esemplare Libro, Prestito
Prestito consegna di una copia a un iscritto per al massimo 30 giorni Iscritto, Copia

Notare la distinzione libro/copia: nel glossario è la differenza tra "opera" e "esemplare fisico", e nello schema diventerà la distinzione tra due entità (Modello entità-relazione - entità, relazioni e attributiIl modello entità-relazione (ER, Chen 1976) descrive il mini-mondo con entità (classi di oggetti autonomi), relazioni (associazioni tra due o più entità, di grado 2 o più) e attributi (proprietà locali di entità o relazioni su un dominio; NULL per l'informazione mancante, con tre significati; attributi composti). Ogni costrutto ha una semantica estensionale: un'entità è un insieme di oggetti (senza ripetizioni né ordine), una relazione è un sottoinsieme del prodotto cartesiano delle entità coinvolte (quindi la stessa coppia non può comparire due volte: per gli eventi ripetuti si introduce una nuova entità, come Sessione o Fattura), un attributo è una funzione totale dalle istanze a un dominio. Si sceglie un'entità invece di un attributo quando il concetto ha istanze con proprietà proprie o collegamenti; mai trasformare un'entità in relazione. Lo schema ER è documentato dal dizionario dei dati (entità, relazioni, attributi, vincoli esterni).Modello entità-relazione - entità, relazioni e attributi →).

Le frasi che non descrivono dati ("il bibliotecario vuole sapere quali copie sono in prestito") diventano operazioni (interrogazioni), che servono più avanti per il carico della base di dati (Ristrutturazione dello schema ER e traduzione nel modello relazionaleLa progettazione logica ha due passi. 1) Ristrutturazione dello schema ER, per togliere i costrutti che il modello relazionale non esprime: analisi delle ridondanze (attributi derivati e cicli di relazioni, decisa con volume dei dati e carico, tabelle di frequenza e accessi), eliminazione degli attributi multivalore (nuova entità), composti (appiattiti o nuova entità), delle IS-A (relazione con partecipazione (1,1) dalla sottoclasse) e delle generalizzazioni (opzione 1 relazioni, 2 accorpamento nel padre con attributo discriminante, 3 accorpamento nei figli, solo se completa e disgiunta), scelta degli identificatori principali (niente cicli di identificazione esterna), riscrittura dei vincoli esterni, partizionamento e accorpamento di entità. 2) Traduzione quasi automatica nel modello relazionale: ogni entità diventa una relazione con la chiave primaria data dall'identificatore principale (anche esterno); una relazione molti-a-molti diventa una relazione con le chiavi delle entità; una uno-a-molti con partecipazione obbligatoria si fonde con l'entità dal lato max 1 con una chiave esterna; con partecipazione opzionale si fonde (NULL) o si crea una relazione a parte; le uno-a-uno si fondono sul lato con partecipazione obbligatoria; le ternarie seguono la stessa logica con le chiavi di tutte le entità.Ristrutturazione dello schema ER e traduzione nel modello relazionale →). I vincoli che non entrano nel diagramma ("al massimo 30 giorni") si scrivono tra i vincoli esterni.

Progettazione di una base di dati

Definizione (progettazione di una base di dati). Obiettivo: definire lo schema logico e lo schema fisico (si pensi all'architettura ANSI/SPARC, Basi di dati e DBMS - architettura ANSI-SPARC e indipendenza dei datiUna base di dati (database, DB) è una collezione integrata e persistente di dati correlati che rappresenta un frammento di mondo reale (mini-mondo); un DBMS è il software generico che permette di definirla (schema, nel catalogo come metadati), costruirla e manipolarla (interrogazioni e aggiornamenti). Rispetto a una raccolta di file il DBMS riduce ridondanza e incoerenza, condivide i dati tra applicazioni con controllo della concorrenza (isolamento, atomicità), garantisce durabilità, sicurezza (autenticazione e autorizzazione) ed efficienza. L'architettura ANSI/SPARC ha tre livelli: schema esterno (una vista per applicazione), logico (rappresentazione integrata, indipendente dalla memorizzazione), interno (strutture fisiche); da qui l'indipendenza fisica (cambia l'interno senza toccare logico ed esterno) e logica (cambia il logico senza toccare le applicazioni). Attori: sviluppatori del DBMS, DBA, progettisti di basi di dati e di applicazioni, utenti parametrici e occasionali.Basi di dati e DBMS - architettura ANSI-SPARC e indipendenza dei dati →) di un DB secondo i risultati dell'analisi dei requisiti.

Due scenari: la progettazione è parte di quella dell'intero sistema informativo, oppure è un processo a sé.

Il processo ha tre fasi (Lum e altri, workshop di New Orleans, 1978):

Requisiti
   |  progettazione CONCETTUALE            indipendente dal DBMS
   v
Schema concettuale  (modello ER)
   |  progettazione LOGICA   <- carico applicativo, classe di DBMS
   v
Schema logico  (modello relazionale)
   |  progettazione FISICA   <- carico applicativo, DBMS specifico
   v
Schema fisico  (SQL e sue estensioni, indici, tuning)

Modelli, schemi, istanze

Definizione (modello dei dati). Un modello (di dati) è un insieme di strutture simboliche con regole di rappresentazione per descrivere un mini-mondo. La rappresentazione prodotta è lo schema.

  • Il modello concettuale è il modello entità-relazione (ER); il modello logico è il modello relazionale; il modello logico più i parametri fisici produce lo schema fisico (SQL e le sue estensioni).
  • Lo schema descrive la struttura (livello intensionale); l'istanza è l'insieme dei dati effettivi (livello estensionale). Lo schema cambia di rado, l'istanza a ogni aggiornamento. Esempio: lo schema dice che Studente ha matricola e nome; l'istanza dice che esiste lo studente 6554, Mario Rossi.

Qualità di uno schema

Proprietà Significato
Completezza rappresenta tutti i concetti (e le proprietà) del mini-mondo emersi dai requisiti
Correttezza usa le strutture del modello nel modo previsto dalla loro semantica
Minimalità ogni concetto è rappresentato una sola volta; le duplicazioni ammesse devono essere motivate e documentate
Leggibilità lo schema si capisce facilmente e si spiega da solo

Nello schema logico al posto di leggibilità conta l'efficienza (rispetto al carico previsto).

Le tre fasi in dettaglio

  • Progettazione concettuale. Ingresso: descrizione del mini-mondo dall'analisi dei requisiti. Uscita: schema concettuale più vincoli aggiuntivi. Qualità: completezza, correttezza, minimalità, leggibilità. Rappresenta il mini-mondo con un modello formale ad alto livello, indipendente dal DBMS. Perché farla: il progettista ragiona al giusto livello di astrazione, senza pensare a DBMS e applicazioni; lo schema è comprensibile agli stakeholder, che partecipano e riducono i rischi di fraintendimento; è la documentazione principale per modifiche ed estensioni successive.
  • Progettazione logica. Ingresso: schema concettuale, classe di DBMS (relazionale), carico stimato. Uscita: schema logico più vincoli. Qualità: completezza, correttezza, efficienza. Rappresenta il mini-mondo con strutture logiche, indipendenti dalle strutture fisiche e caratteristiche di una classe di DBMS.
  • Progettazione fisica. Ingresso: schema logico, DBMS specifico, carico. Uscita: schema fisico e ottimizzazione (tuning). Qualità: correttezza, efficienza. Strutture dati fisiche specifiche (indici, organizzazione dei file, partizionamento).

Domande d'esame

1. Distinguere requisiti funzionali, non funzionali e vincoli aggiuntivi con un esempio ciascuno. Traccia. Funzionale: "il sistema stampa la fattura"; non funzionale: "la stampa avviene in meno di un minuto"; vincolo: "il sistema gira su Linux", imposto in partenza dal committente.

2. Quali sono le fasi della progettazione di una base di dati e che cosa producono? Traccia. Concettuale, schema ER indipendente dal DBMS; logica, schema relazionale per una classe di DBMS tenendo conto del carico; fisica, strutture e tuning per un DBMS specifico. Schema ER: più leggibile e documentazione; relazionale: più vicino all'implementazione.

3. Che cosa significa che uno schema è minimale? Fare un esempio di violazione. Traccia. Ogni concetto compare una sola volta. Violazione: l'attributo età in Persona oltre a data_nascita (derivabile), oppure due relazioni che portano la stessa informazione (Ristrutturazione dello schema ER e traduzione nel modello relazionaleLa progettazione logica ha due passi. 1) Ristrutturazione dello schema ER, per togliere i costrutti che il modello relazionale non esprime: analisi delle ridondanze (attributi derivati e cicli di relazioni, decisa con volume dei dati e carico, tabelle di frequenza e accessi), eliminazione degli attributi multivalore (nuova entità), composti (appiattiti o nuova entità), delle IS-A (relazione con partecipazione (1,1) dalla sottoclasse) e delle generalizzazioni (opzione 1 relazioni, 2 accorpamento nel padre con attributo discriminante, 3 accorpamento nei figli, solo se completa e disgiunta), scelta degli identificatori principali (niente cicli di identificazione esterna), riscrittura dei vincoli esterni, partizionamento e accorpamento di entità. 2) Traduzione quasi automatica nel modello relazionale: ogni entità diventa una relazione con la chiave primaria data dall'identificatore principale (anche esterno); una relazione molti-a-molti diventa una relazione con le chiavi delle entità; una uno-a-molti con partecipazione obbligatoria si fonde con l'entità dal lato max 1 con una chiave esterna; con partecipazione opzionale si fonde (NULL) o si crea una relazione a parte; le uno-a-uno si fondono sul lato con partecipazione obbligatoria; le ternarie seguono la stessa logica con le chiavi di tutte le entità.Ristrutturazione dello schema ER e traduzione nel modello relazionale →); ammessa solo se motivata (carico) e documentata.

Versione ripasso

Termine del glossario Descrizione Sinonimi Collegato a
Iscritto persona abilitata al prestito utente, lettore Prestito
Libro l'opera, non l'esemplare titolo, volume Copia, Autore
Copia esemplare fisico esemplare Libro, Prestito
Prestito consegna di una copia per al massimo 30 giorni Iscritto, Copia
  • Distinzione libro/copia nel glossario = due entità nello schema; "quali copie sono in prestito" è una operazione (serve al carico); "al massimo 30 giorni" è un vincolo esterno.
  • Flusso delle fasi: requisiti → concettuale (ER) → logica (relazionale, con il carico e la classe di DBMS) → fisica (SQL, indici, tuning, DBMS specifico).
  • Ingressi e uscite: concettuale = descrizione del mini-mondo → schema ER più vincoli (completezza, correttezza, minimalità, leggibilità); logica = schema ER, classe di DBMS, carico → schema logico più vincoli (qualità: efficienza); fisica = schema logico, DBMS, carico → schema fisico (correttezza, efficienza).
  • Errori per tipo: di requisiti, di progetto, di realizzazione; il costo cresce con il ritardo con cui si scoprono.

Esercizi su questo argomento

Teoria collegata