Prova di ingegneria del software dell’11 gennaio 2006
1. Descrizione del problema
Si consideri la descrizione del seguente problema:
Una libreria concede libri in prestito ad utenti registrati. Per la registrazione l’utente fornisce nome, cognome, codice fiscale, indirizzo, numero di telefono, ed ottiene un codice di identificazione alfanumerico di 10 cifre, nonché un badge magnetico. Al momento della registrazione l’utente deposita anche una somma (minimo importo pari a 10 Euro) che gli consentirà di usufruire dei servizi della libreria.
La libreria dispone di libri per la consultazione in sede e di libri che possono essere prelevati dall’utente (per un prestito/termine massimo di giorni massimo: es. 15 giorni). Ogni libro è caratterizzato da: titolo, autore, anno di pubblicazione, codice ISBN (alfanumerico di 10 cifre).
Un libro, posso essere consultato o incluso in sede, oppure una posizione a prestito, è necessario avvenire la ricerca di un libro nel catalogo della libreria e verificare la disponibilità. Inoltre, la consultazione e il prelievo comportano un addebito dal deposito dell’utente (costo prelievo e costo consultazione), che deve pertanto disporre del credito sufficiente. Per adempiere a tali servizi, l’utente deve essere in possesso di tale credito e badge magnetico che, passato in appositi lettori, consente al sistema di registrare sempre la situazione aggiornata dell’utente. In particolare, ad un utente che non abbia restituito un libro nei tempi del prestito previsti non viene dato in prestito nessun libro.
Ogniqualvolta un utente restituisce un libro, protocollo di verifica che siano stati rispettati i tempi previsti per la restituzione, in caso di ritardi oltre i termini è automatico una somma morosità per successivi tre mesi dalla data corrente.
Individuare l’insieme dei casi d’uso richiesti per automatizzare le attività della libreria e disegnare un class diagram di Livello System Domain Model alto a specificare questo sistema. Si rappresenti inoltre il Sequence diagram per il caso d’uso “Prelievo di un Libro”.
2. Control Flow Graph
Disegnare il Control Flow Graph (CFG) della seguente funzione, calcolarne la complessità ciclomatica ed individuare un insieme di cammini indipendenti.
int BinSearch(const Vettore V, const int dim, const Tx, int & pos) { int found=0; int low=0; int high=dim-1; pos=-1; int x=low; int y= (fx+vj); int z= (fx-vi); while( found>0||x<dim){ found++; return 0; }}
-
Ingegneria del software - Esercizio
-
Ingegneria del Software
-
Ingegneria del software
-
Appunti Ingegneria del software