vuoi
o PayPal
tutte le volte che vuoi
Corso di INGEGNERIA DEL SOFTWARE
Prof.ssa Fasolino
Corso di Laurea in INGEGNERIA INFORMATICA
A.A. 2006-2007 ESAME DEL 26 GIUGNO 2007
TEMPO: 2 ORE
1. Si consideri il seguente documento di descrizione informale dei Requisiti:
Occorre progettare un'applicazione per la gestione dei Servizi di trasporto via autobus offerti da una Azienda. L'Azienda effettua corse fra varie località a cui possono accedere sia viaggiatori occasionali (previo acquisto di un biglietto) sia viaggiatori con abbonamento. In particolare, i viaggiatori abituali possono acquistare abbonamenti di durata mensile per effettuare specifiche corse (ogni abbonamento ha un codice identificativo, è intestato ad uno specifico viaggiatore, e dà diritto ad accedere ad una sola tipologia di corse per l'intero periodo di validità dell'abbonamento). Ogni corsa si caratterizza per la località di partenza, di arrivo, l'ora di partenza o l'ora (prevista) di arrivo, la periodicità (feriale, festivo, settimanale), ed il costo della corsa. Per ogni corsa che viene effettuata, il conducente dell'autobus è tenuto a registrare la data in cui è stata realizzata, l'ora di partenza e di arrivo effettive, il nome e cognome del conducente, il numero di viaggiatori paganti e quello di viaggiatori con abbonamento, nonché i dati di ciascun viaggiatore con abbonamento che abbia effettuato la corsa. Ogni autobus aziendale, con un suo codice identificativo ed un registro degli autobus posseduti dall'azienda, dove ogni autobus è caratterizzato da modello, data di immatricolazione, numero di posti, chilometri percorsi. Gli autobus devono essere sottoposti in officina ad interventi di manutenzione ordinaria (ogni 50.000 chilometri percorsi) e straordinaria (descrizione guasto, pezzi di ricambio utilizzati, chilometri percorsi alla data dell'intervento). Il responsabile dell'officina registra tutti gli interventi di manutenzione effettuati su ciascun autobus. La principale funzione dell'Azienda consiste nell'effettuare nuove corse in base ai diversi contratti che di volta in volta sottoscrive per i propri servizi di trasporto (pubblico e/o privato). Per la stipula dei nuovi contratti l'Azienda effettua delle analisi di costi di esercizio delle corse: una corsa si considera economicamente sostenibile se il relativo ricavo complessivo è pari o superiore all'80% delle spese che l'azienda sostiene per realizzarla in termini di costi di esercizio (si considerino anche i costi del personale di bordo). E' proprio sulla base di queste analisi che l'Azienda decide se stipulare o meno nuovi contratti di trasporto. L'applicazione che si deve realizzare deve consentire di aggiornare ed estendere ad esempio il proprio parco di autobus (aggiungendo, eliminando, e sospendendo gli autobus in manutenzione), programmare nuove corse, ottenere un riepilogo mensile del numero complessivo di viaggiatori paganti e di viaggiatori con abbonamento di una data corsa, nonché deve consentire al responsabile dell'officina di registrare gli interventi di manutenzione. Si tracci il diagramma dei casi d'uso per questa applicazione e il diagramma delle classi concettuali (System Domain Model), attribuendo correttamente le responsabilità di tali casi d'uso alle classi del modello.
2. Si consideri un modulo software che implementa una funzione di inserimento di un Farmaco in un Prontuario Farmaceutico. Il modulo riceve in input i seguenti dati sul Farmaco: Nome (di tipo stringa di al più 30 caratteri), Casa Produttrice (di tipo stringa di al più 30 caratteri), Classe (di tipo carattere che può assumere solo valori A, B e C), Formato (di tipo stringa che può assumere solo i valori Compresse, Gocce, Sciroppo), e lo inserisce nel prontuario purché siano soddisfatte le seguenti condizioni:
- COND A) Non possono esistere nel prontuario due farmaci con lo stesso nome ma aventi diversa casa produttrice,
- COND B) Nel prontuario possono essere presenti più farmaci con lo stesso nome, casa produttrice e classe, ma con diverso Formato.
- Individuare le classi di equivalenza valide e non valide per i singoli input del programma.
- Individuare le principali combinazioni delle classi di equivalenza per tutti gli input del programma.
- progettare un insieme di casi di test in grado di coprire le classi di equivalenza del punto b) (specificandone anche le relative pre-condizioni e post-condizioni)