LABORATORIO DI INFORMATICA Ingegneria Informatica a.a. 2002-2003 -2° Ciclo Modelli UML per il Simulatore di Gate Allocation 1 Simulatore di Gate Allocation - Modello dei Casi d’Uso <<uses>> New Stand Definition <<uses>> Airport Manager Stand I&C Save Stand Data Open Stand File <<uses>> New Flight Definition <<uses>> Apron Manager Flight I&C Save Flight Data Open Flight File Daily Gate Allocation Real Time Gate Allocation 2 Simulatore di Gate Allocation - Descrizione dei Casi d’Uso Caso d’Uso: New Stand Definition L’Airport Manager seleziona la nuova definizione degli Stand. Ciò comporta l’annullamento del Descrittore di Stand eventualmente presente in memoria centrale e la possibilità di utilizzare il Caso d’Uso Inspect & Change per gli Stand. Caso d’Uso: Stand Inspect & Change Il Caso d’Uso Stand Inspect & Change può essere direttamente selezionato dall’Airport Manager, oppure a seguito dell’attivazione dei Casi d’Uso New Stand Definition e Open Stand File. Esso permette all’Airport Manager di selezionare un elemento Stand in memoria centrale, di esaminarne il contenuto, di configurarlo completamente, sia se è stato già configurato o se non è mai stato configurato, o, infine, di correggerne la configurazione se è già stato configurato. Caso d’Uso: Save Stand Data L’Airport Manager seleziona di salvare su un file sequenziale della memoria di massa il descrittore degli Stand presente in memoria centrale. 3 Simulatore di Gate Allocation Caso d’Uso: Open Stand File L’Airport Manager o l’Apron Manager seleziona di trasferire in memoria centrale il descrittore di Stand in precedenza salvato sul file sequenziale in memoria di massa. Ciò comporta la ricopertura del descrittore eventualmente presente in memoria centrale e la possibilità di utilizzare il Caso d’Uso Stand Inspect & Change. Caso d’Uso: New Flight Definition L’Apron Manager seleziona la nuova definizione dei Voli. Ciò comporta l’annullamento del Descrittore dei Voli eventualmente presente in memoria centrale e la possibilità di utilizzare il Caso d’Uso Inspect & Change per i Voli. Caso d’Uso: Flight Inspect & Change Il Caso d’Uso Flight Inspect & Change può essere direttamente selezionato dall’Apron Manager, oppure a seguito dell’attivazione dei Casi d’Uso New Flight Definition e Open Flight File. Esso permette all’Apron Manager di selezionare un elemento Flight in memoria centrale, di esaminarne il contenuto, di configurarlo completamente, sia se è stato già configurato o se non è mai stato configurato, o, infine, di correggerne la configurazione se è già stato configurato. 4 Simulatore di Gate Allocation Caso d’Uso: Save Flight Data L’Apron Manager seleziona di salvare su un file sequenziale della memoria di massa il descrittore dei Voli presente in memoria centrale. Caso d’Uso: Open Flight File L’Apron Manager seleziona di trasferire in memoria centrale il descrittore dei Voli in precedenza salvato sul file sequenziale in memoria di massa. Ciò comporta la ricopertura del descrittore eventualmente presente in memoria centrale e la possibilità di utilizzare il Caso d’Uso Flight Inspect & Change. Caso d’Uso: Daily Gate Allocation L’Apron Manager selezione di far operare l’algoritmo di Gate Allocation per i descrittori di Stand e di Voli attualmente presenti in memoria centrale. L’algoritmo viene fatto operare automaticamente per un istante di tempo simulato sufficientemente antecedente all’istante di arrivo del primo Volo del descrittore, in modo da poter considerare tutti i voli ancora non atterrati. La situazione di allocazione degli aerei agli Stand viene presentata sul terminale in chiaro subito dopo la fine dell’esecuzione dell’algoritmo. 5 Simulatore di Gate Allocation Caso d’uso: Real Time Gate Allocation L’Apron Manager seleziona di far evolvere per un tempo reale prestabilito lo scenario costituito dai descrittori degli Stand e dei Voli presente in memoria di massa. Nel corso dell’elaborazione viene simulata la ricezione di messaggi che, a scadenze prestabilite, comunicano il ritardo dell’arrivo di aerei attesi o il prolungamento delle operazioni di terra. La sequenza dei messaggi e i loro tempi di arrivo vengono definiti al momento dell’attivazione di questo caso d’uso e prima che venga avviata l’evoluzione del tempo reale. L’algoritmo di Gate Allocation, richiamato con la periodicità di un minuto, permette la riallocazione dinamica dei voli. La situazione di allocazione degli aerei agli Stand viene presentata sul terminale in chiaro, assieme al valore del tempo attuale, subito dopo ogni richiamo dell’algoritmo di Gate Allocation. L’elaborazione ha termine quando si esaurisce il tempo reale prestabilito. 6 Simulatore di Gate Allocation -Requisiti di dettaglio Caso d’uso: Stand (o Flight) Inspect & Change Il Caso d’Uso Stand (o Flight) Inspect & Change, quando viene selezionato un tipo di elemento (Stand o Volo), deve presentare il contenuto dell’elemento attualmente puntato. Se esso non è configurato, deve presentare il messaggio di elemento non configurato. Dopo la presentazione di un elemento deve essere possibile selezionare l’elemento precedente o il successivo (a meno che l’elemento puntato sia non configurato, nel qual caso si può solo andare al precedente). Una volta selezionato un elemento deve essere possibile inserire tutti i suoi dati a partire dal primo, oppure, se l’elemento è già stato configurato, deve potersi presentare un dato alla volta con la possibilità, se richiesto, di cambiarlo. 7 Simulatore di Gate Allocation -Diagramma delle Classi FlightList FlightDataFile Flight 1 1 DateTimeXcg 1 1 Simulator 0..* 1 1 1 1 Dialog 1 1 1 1 1 1 1 1 1 1 0..* 1 StandDataFile 1 1 1 Proceding Stand StandList 8 Simulatore di Gate Allocation -Diagramma delle Classi Dialog statoDialog :int indiceStand :int indiceFlight :int activityDef ( ) flightDef ( ) newFlight ( ) openFlight ( ) inChaFlight ( ) saveFlight ( ) standDef ( ) newStand ( ) openStand ( ) inChaStand ( ) saveStand ( ) allocator ( ) simulator ( ) 9 Simulatore di Gate Allocation -Diagramma delle Classi Flight nextPtr :Flight * sameStandFlight :Flight * siglaArr :char[6] oraArr :int minArr :int giornoArr :int meseArr :int annoArr :int timeArr :long siglaPar :char[6] oraPar :int minPar :int giornoPar :int mesePar :int annoPar :int timePar :long tipoAereo :int tipoStand :int tipoRampa :int assignStand :int setFlight ( ) printFlight ( ) modifyFlight ( ) Stand nextPtr :Stand * linkedFlight :Flight * identityStand :char[6] dimStand :int dotazStand :int tipoServizio :int setStand ( ) printStand ( ) modifyStand ( ) 10 Simulatore di Gate Allocation -Diagramma delle Classi FlightList firstPtr :*Flight lastPtr :*Flight insertList (newPtr :Flight *) searchFlight (nuFlight :int) :Flight * deleteFlight (nuFlight :int, del :bool) deleteFlightList ( ) StandList firstPtr :*Stand lastPtr :*Stand insertList (newPtr :Stand *) searchStand (nuStand :int) :Stand * deleteStand (nuStand :int, del :bool) deleteStandList ( ) 11 Simulatore di Gate Allocation -Diagramma delle Classi FlightDataFile FlightStore (objList :FlightList &) FlightLoad (objList :FlightList &) StandDataFile StandStore (listObj :StandList &) StandLoad (listAl :StandList &) 12 Simulatore di Gate Allocation -Diagramma delle Classi Simulator gateAllocation (tempoAtt :long, fList :FlightList &, sList :StandList &) resetStand (tempoAtt :long, fList :FlightList &, sList :StandList &) :int deleteFlight (delePtr :Flight *, fList :FlightList &) check (actVolo :Flight *, prevVolo :Flight *) :bool gateAllocPrint (fList :FlightList &, sList :StandList &) Proceding startTime :long durationTime :long progresTime :long stopTime :long startSim (fList :FlightList &, sList :StandList &) 13 Simulatore di Gate Allocation -Diagramma delle Classi DateTimeXcg year :int month :int day :int hour :int minute :int second :int absTime: int dateToTime (y :int, me :int, d :int, h :int, mi :int, s :int) :long timeToDate (t :long) 14 Simulatore di Gate Allocation -Dialog: Diagramma degli Stati do/ Level 1 Command Selection Flight do/ flightDef Stand do/ standDef Exit Allocator do/ allocator Simulator do/ simulator 15 Simulatore di Gate Allocation -Dialog: Diagramma degli Stati standDef do/ Level 3 Command Selection New do/ newStand Open do/ openStand Exit I&C do/ inChaStand Save do/ saveStand 16 Simulatore di Gate Allocation -Dialog: Diagramma degli Stati flightDef do/ Level 2 Command Selection New do/ newFlight Open do/ openFlight Exit I&C do/ inChaFlight Save do/ saveFlight 17 Simulatore di Gate Allocation -Dialog: Diagramma degli Stati inChaStand do/ Stand Display & Level 5 Command Selection Nuovo do/ nuovo Stand Correggi do/ correggi Stand Avanti/ Indietro Exit Deleta do/ cancella Stand 18 Simulatore di Gate Allocation -Dialog: Diagramma degli Stati inChaFlight do/ Flight Display & Level 4 Command Selection Nuovo do/ nuovo Volo Correggi do/ correggi Volo Avanti/ Indietro Exit Deleta do/ cancella Volo 19 Simulatore di Gate Allocation -Simulator: Diagramma delle attività di “Gate Allocation” Disalloca i voli non atterrati e cancella i voli decollati (*) (*) Funzione “Reset Stand” Acquisisci il puntatore al primo volo in catena Verifica se il volo è atterrato [Volo atterrato] [Volo non atterrato] Stabilisci l’allocazione del volo (ad uno Stand) Acquisisci il puntatore al volo successivo in catena [Voli non finiti] [Volo finiti] 20 Simulatore di Gate Allocation -Simulator: Diagramma delle attività di “Reset Stand” Acquisisci il puntatore al primo Stand in catena Verifica se lo Stand è linkato ad un volo [Stand non linkato] [Stand linkato] Verifica se il volo linkato allo Stand è atterrato [Volo non atterrato] [Volo atterrato] Annulla il link dello Stand al volo Verifica se il volo linkato allo Stand è decollato [Volo decollato] [Volo non decollato] Annulla il link dello Stand al volo e cancella il volo Acquisisci il puntatore allo Stand successivo [Stand non finiti] [Stand finiti] In tutti i voli annulla il link ai voli allocati sullo stesso Stand 21 Simulatore di Gate Allocation -Simulator: Diagramma delle attività di “Stabilisci l’allocazione del volo” Acquisisci il puntatore al primo Stand in catena Confronta le esigenze dello aereo e la struttura dello Stand [Stand non compatibile] [Stand compatibile] Confronta la sovrapposizione del volo con gli altri sullo stand [Volo in sovrapposizione] [Volo non sovrapposto] Linka il volo allo Stand e assegna lo Stand al volo Memorizza il minore degli OBT dell’ultimo volo sullo Stand Acquisisci il puntatore allo Stand successivo [Stand non finiti] [Stand finiti] Poni l’IBT del volo maggiore dell’ultimo OBT memorizzato 22