Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
3 luglio 2011
Versione 0.3.0
Indice
Diagramma dei casi duso Casi duso Formato Breve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Formato Informale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Casi duso in formato dettagliato Gestisci Cibo . . . . . . . . . . . . . . . . . . . Gestisci Specie Formica . . . . . . . . . . . . . Gestisci Ambiente . . . . . . . . . . . . . . . . SSD Gestisci Ambiente . . . . . . . . . . . Diagramma attivit` Gestisci Ambiente . . a Diagramma Stato danalisi Ambiente . . . Gestisci Simulazione . . . . . . . . . . . . . . . SSD Gestisci Simulazione . . . . . . . . . Diagramma attivit` Gestisci Simulazione . a Diagramma Stato danalisi Simulatore . . Modello di dominio Contratti e Test Funzionali Contratti Gestisci Cibo . . . . . . . . . . Gestisci Specie Formica . . . . . . . . . . Gestisci Ambiente . . . . . . . . . . . . . Test Funzionali Gestisci Ambiente . Gestisci Simulazione . . . . . . . . . . . . Test Funzionali Gestisci Simulazione Architettura Logica Diagramma delle classi Diagrammi di Stato Posto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Diagrammi di Sequenza creaAmbiente . . . . . . creaPosto . . . . . . . . creaStrada . . . . . . . . eliminaPosto . . . . . . creaSimulatore . . . . . avviaSimulazione . . . . generaCibo . . . . . . . racogliCibo . . . . . . . 3 4 4 5 6 6 7 9 11 12 13 14 16 17 18 19 20 20 21 22 26 28 30 31 32 33 33 34 34 35 36 37 38 39 40 41 42 42
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Utente
Gestisci Cibo
Gestisci SpecieFormica
Gestisci Ambiente
Gestisci Simulazione
Casi duso
Formato Breve
Formato Breve
Gestisci Cibo: Lutente crea un nuovo cibo con le caratteristiche: nome, odore, intensit` a odore. Lutente salva il nuovo cibo con le caratteristiche introdotte. Gestisci Specie Formica: Lutente crea una nuova specie di formica con le caratteristiche: nome della specie, aggressivit`, velocit` movimento, intensit` della traccia chimica dei feroa a a moni della specie, tipo di cibo di cui si alimentano, capacit` di trasporto del cibo, fertilit` a a (il numero di volte che una formica deve tornare al formicaio per potersi riprodurre). Lutente salva la nuova specie di formica con le caratteristiche introdotte. Gestisci Ambiente: Lutente crea un nuovo ambiente con identicatore. Denisce dei posti identicati da nomi. Denisce in quali posti collocare i formicai indicando il numero di formiche presenti inizialmente nei formicai. Denisce in quali posti collocare il cibo indicando il tipo di cibo, la velocit` di rigenerazione e la quantit`. Denisce come collegare i posti a a tramite strade a senso unico o a doppio senso con relativa lunghezza. Lutente salva il nuovo ambiente con le caratteristiche introdotte. Gestisci Simulazione: Lutente crea una nuova simulazione. Importa unambiente gi` a esistente. Denisce il tempo di durata della simulazione. Indica la possibilit` di ripetere la a simulazione e visionare le statistiche durante la simulazione. Avvia la simulazione. Ferma la simulazione. Lutente salva lo stato nale della simulazione.
Formato Informale
Formato Informale
Gestisci Cibo: Scenario di Successo principale: Lutente crea un nuovo cibo con le caratteristiche: nome, odore, intensit` odore. a Lutente salva il nuovo cibo con le caratteristiche introdotte. Scenari Alternativi: Lutente importa un preesistente cibo e ne modica le caratteristiche. Lutente cancella un preesistente cibo. Gestisci Specie Formica: Scenario di Successo principale: Lutente crea una nuova specie di formica con le caratteristiche: nome della specie, aggressivit`, velocit` movimento, intensit` della traccia chimica a a a dei feromoni della specie, tipo di cibo di cui si alimentano, capacit` di trasporto del cibo, a fertilit` (il numero di volte che una formica deve tornare al formicaio per potersi riprodurre). a Lutente salva la nuova specie di formica con le caratteristiche introdotte. Scenari Alternativi: Lutente importa una preesistente specie di formica e ne modica le caratteristiche. Lutente cancella una preesistente specie di formica. Gestisci Ambiente: Scenario di Successo principale: Lutente crea un nuovo ambiente con identicatore. Denisce dei posti identicati da nomi. Denisce in quali posti collocare i formicai indicando il numero di formiche presenti inizialmente nei formicai. Denisce in quali posti collocare il cibo indicando il tipo di cibo, la velocit` di rigenerazione e la quantit`. Denisce come a a collegare i posti tramite strade a senso unico o a doppio senso con relativa lunghezza. Lutente salva il nuovo ambiente con le caratteristiche introdotte. Scenari Alternativi: Lutente importa un preesistente ambiente e ne modica le caratteristiche. Lutente cancella un preesistente ambiente. Gestisci Simulazione: Scenario di Successo principale: Lutente importa una congurazione dellambiente gi` a esistente. Denisce il tempo di durata della simulazione. Indica la possibilit` di ripetere la a simulazione e visionare le statistiche durante la simulazione. Avvia la simulazione. Ferma la simulazione. Lutente salva lo stato nale della simulazione. Scenari Alternativi: Lutente avvia una nuova simulazione partendo da un preesistente stato nale di una simulazione. Lutente cancella un preesistente stato nale di una simulazione.
Gestisci Cibo
Nome del Caso dUso: Gestisci Cibo. Portata: AntSim. Livello: Obiettivo utente. Attore primario: Utente. Parti Interessate e Interessi: Lutente vuole creare un cibo; specicarne lodore e lintensit` dellodore; essere in grado di salvare il cibo ed eventualmente modicarlo. a Pre-condizioni: -. Garanzia di successo (o Post-condizioni): Il cibo viene salvato ed ` disponibile per la e creazione di un ambiente. Scenario principale di successo: 1. Lutente crea un nuovo cibo; 2. Lutente inserisce un nome per il nuovo cibo; 3. Lutente sceglie il tipo di odore del cibo; 4. Lutente sceglie lintensit` dellodore emesso dal cibo; a 5. Il sistema mostra il cibo e le sue caratteristiche; 6. Lutente salva il cibo e le sue caratteristiche; 7. Il sistema visualizza la conferma del salvataggio; Estensioni: 1a. Lutente chiede di riprendere un cibo preesistente per modicarlo. 1. Lutente sceglie loperazione di ripresa. 2. Lutente inserisce il nome del cibo da riprendere. 3. Il sistema visualizza il cibo e le sue caratteristiche. 3a. Cibo non trovato. 1. Il sistema segnala lerrore allutente. 2. Lutente reinserisce il nome del cibo o ne crea uno nuovo. 2a. Nome del cibo non valido (gi` presente). a 1. Il sistema segnala lerrore allutente e riuta linserimento. 2. Lutente reinserisce il nome del cibo. Requisiti speciali: Usabilit` nella preparazione del cibo. a Elenco delle variabili tecnologiche e dei dati: -. Frequenza di ripetizione: Arbitraria. Problemi aperti: -.
Requisiti speciali: -. Elenco delle variabili tecnologiche e dei dati: -. Frequenza di ripetizione: Arbitraria. Problemi aperti: -.
Gestisci Ambiente
Gestisci Ambiente
Nome del Caso dUso: GestisciAmbiente. Portata: AntSim. Livello: Obiettivo utente. Attore primario: Utente. Parti Interessate e Interessi: Lutente vuole creare un ambiente; stabilire dei posti; collocare il cibo sui posti; collocare i formicai sui posti; collegare i posti con strade; specicare le caratteristiche relative ai posti, ai formicai, alle specie di formiche e ai tipi di cibo; essere in grado di salvare lambiente ed eventualmente modicarlo. Pre-condizioni: -. Garanzia di successo (o Post-condizioni): Lambiente ` pronto per la simulazione. e Scenario principale di successo: 1. Lutente crea un nuovo ambiente; 2. Lutente inserisce un nome per il nuovo ambiente; 3. Il sistema mostra la conferma della creazione del nuovo ambiente; 4. Lutente crea un nuovo posto; 5. Lutente inserisce un nome per il nuovo posto; 6. Il sistema visualizza la conferma della creazione del nuovo posto; // Lutente ripete i passi 4-6 no a che non indica che ha terminato. 7. Lutente indica il nome di un posto esistente e vi colloca un tipo di cibo, stabilendone la quantit` e indicandone la velocit` di generazione, propria del posto; a a 8. Il sistema visualizza la conferma del posizionamento del cibo e le caratteristiche introdotte; //Lutente ripete i passi 7-8 no a che non indica che ha terminato. 9. Lutente indica il nome di un posto esistente e vi colloca un formicaio, scegliendo la specie di formica a cui appartiene il formicaio e il numero di formiche presenti inizialmente nel formicaio; 10. Il sistema visualizza la conferma del posizionamento del formicaio e le caratteristiche introdotte; // Lutente ripete i passi 9-10 no a che non indica che ha terminato. 11. Lutente crea una nuova strada con un nome identicatore; 12. Lutente indica il nome di un posto esistente come origine della strada; 13. Lutente indica il nome di un posto esistente come destinazione della strada; 14. Lutente indica la lunghezza della strada; 15. Lutente indica se la strada ` a senso unico o a doppio senso di percorrenza; e 16. Il sistema visualizza la conferma della creazione della strada e le caratteristiche introdotte; // Lutente ripete i passi 11-16 no a che non indica che ha terminato. 17. Lutente salva le caratteristiche dellambiente inserite; 18. Il sistema visualizza la conferma del salvataggio e le caratteristiche introdotte; Estensioni: *a. In qualsiasi momento lutente pu` salvare le caratteristiche dellambiente inserite. o 9
1. Lutente chiede di salvare lambiente e le caratteristiche introdotte. 2. Il sistema visualizza la conferma del salvataggio. 1a. Lutente chiede di riprendere unambiente preesistente. 1. Lutente sceglie loperazione di ripresa e inserisce il nome dellambiente da riprendere. 2. Il sistema visualizza le caratteristiche dellambiente. 2a. Ambiente non trovato. 1. Il sistema segnala lerrore allutente. 2. Lutente reinserisce il nome dellambiente o ne crea uno nuovo. 2a. Nome dellambiente non valido (gi` presente). a 1. Il sistema segnala lerrore allutente e riuta linserimento. 2. Lutente reinserisce il nome dellambiente. Requisiti speciali: Velocit` ed usabilit` nella preparazione dellambiente. a a Elenco delle variabili tecnologiche e dei dati: -. Frequenza di ripetizione: Arbitraria. Problemi aperti: -.
10
:Sistema
loop [0,*]
loop [0,numeroPosti] collocaCibo ( Ambiente ambiente, Posto posto, Cibo cibo, double qtaCiboFonte, double velocitaRigenerazioneCibo ) : FonteCibo
creaSpecieFormica ( String nomeSpecieFormica, double aggressivita, double velocitaMovimento, double intensitaScia, int fertilita, Cibo dieta, double capacitaTrasporto ) : SpecieFormica
collocaFormicaio ( Ambiente ambiente, Posto posto, SpecieFormica specieFormica, int nFormiche ) : Formicaio
loop [0,*] creaStrada ( Ambiente ambiente, Posto origine, Posto destinazione, int lunghezza, boolean senso ) : Strada
11
Utente Inizio
Sistema
il nome unico
ricevi nome posto dove collocare il cibo nessun nuovo posto nuova creazione di un posto
ricevi nome posto dove collocare il formicaio nessun nuovo posto con cibo nuova collocazione di cibo in un posto
ricevi richiesta creazione nuova strada nessun nuovo posto dove collocare un formicaio nuovo posto dove collocare formicaio
12
Inizio Fine Ambiente con una nuova strada creaStrada [non esiste gi la strada] creaAmbiente
creaPosto [non esiste gi un posto con qu... eliminaStrada eliminaPosto Ambiente con [2..*] posti
Ambiente con 1 posto collocaFormicaio eliminaFormicaio Ambiente con 1 formicaio collocaCibo eliminaPosto eliminaCibo
creaPosto [non esiste gi un posto con qu... collocaCibo collocaFormicaio eliminaFormicaio eliminaCibo Ambiente con 1 formicaio e 0 fonteCibo eliminaCibo
eliminaFormicaio
Ambiente con [2..*] fonteCibo e 0 formicai eliminaFormicaio collocaFormicaio [non esiste gi un formicaio con quel nome] collocaFormicaio collocaCibo collocaFormicaio collocaCibo [non esiste gi una fonteCibo con quel nome] eliminaCibo collocaFormicaio [non esiste gi un formicaio con quel nome] eliminaFormicaio eliminaFormicaio Ambiente con [2..*] formicai e 1 fonteCibo collocaCibo eliminaCibo eliminaFormicaio eliminaCibo collocaFormicaio [non esiste gi un formicaio con quel... collocaCibo [non esiste gi una fonteCibo con quel nome] Ambiente con [2..*] formicai e [2..*] fonteCibo eliminaFormicaio Ambiente con 1 formicaio e [2..*] fonteCibo
eliminaFormicaio
eliminaCibo
13
Gestisci Simulazione
Gestisci Simulazione
Nome del Caso dUso: Gestisci Simulazione. Portata: AntSim. Livello: Obiettivo utente. Attore primario: Utente. Parti Interessate e Interessi: Lutente vuole iniziare una nuova simulazione. Deciderne la durata. Vedere levolversi della simulazione nei suoi vari aspetti e trarne dei dati statistici. Poter fermare e riprendere la simulazione in qualsiasi momento. Poter rivedere la simulazione. Essere in grado di salvare la simulazione per poi riprenderne lesecuzione in un momento successivo. Pre-condizioni: Deve esistere almeno un ambiente o avere una simulazione preesistente. Garanzia di successo (o Post-condizioni): Avviene una simulazione dellambiente di formiche. Scenario principale di successo: 1. Lutente crea una nuova simulazione; 2. Lutente sceglie lambiente da simulare; 3. Lutente stabilisce il tempo di durata della simulazione; 4. Il sistema mostra le caratteristiche dellambiente e la durata della simulazione; 5. Lutente avvia la simulazione; 6. Il sistema mostra levolversi della simulazione visualizzando il tempo trascorso e le caratteristiche dellambiente in evoluzione; 7. La simulazione termina allo scadere del tempo pressato; 8. Lutente chiede di visualizzare le statistiche; 9. Il sistema mostra le statistiche (numero di formiche presenti, numero di formiche morte durante la simulazione, numero di riproduzioni, numero di combattimenti, quantit` di a cibo recuperato); Estensioni: 1a. Lutente chiede di riprendere una simulazione preesistente. 1. Lutente sceglie loperazione di ripresa. 2. Lutente inserisce il nome della simulazione da riprendere. 3. Il sistema visualizza la simulazione e le sue caratteristiche. 2a. Simulazione non trovata. 1. Il sistema segnala lerrore allutente. 2. Lutente reinserisce il nome della simulazione o ne crea una nuova. 1b. Lutente decide di cancellare una simulazione preesistente. 1. Lutente sceglie loperazione di cancellazione. 2. Lutente inserisce il nome della simulazione da cancellare. 3. Il sistema visualizza la simulazione e le sue caratteristiche e ne conferma la cancellazione. 6a. Lutente decide di rivedere la simulazione ad un tempo stabilito. 1. Lutente ferma la simulazione. 14
2. Lutente sceglie loperazione per tornare indietro con la simulazione. 3. Lutente inserisce il tempo della simulazione a cui vuole tornare. 4. Il sistema visualizza la simulazione e le sue caratteristiche. 6b. Lutente sceglie di visualizzare le statistiche. 1. Lutente ferma la simulazione. 2. Lutente chiede di visualizzare le statistiche. 3. Il sistema mostra le statistiche. 6c. Lutente sceglie di visualizzare le statistiche avanzate. 1. Lutente ferma la simulazione. 2. Lutente sceglie quali dati visualizzare tra: Numero di formiche, divise per specie, passate in un posto. Quantit` di cibo prelevato da un posto. a Massima quantit` di cibo contenuta in un formicaio. a Massimo e minimo numero di formiche, divise per specie. Numero di formiche riprodotte, divise per specie. Requisiti speciali: Il tempo di simulazione deve essere un valore superiore a zero. Il numero di formiche deve essere superiore a zero. Chiarezza nella visione della simulazione. Elenco delle variabili tecnologiche e dei dati: -. Frequenza di ripetizione: Molto alta. Problemi aperti: Cosa succede se dai formicai non ci fossero strade uscenti? Cosa succede se nei posti con cibo non ci fossero archi entranti? Cosa succede se una formica percorresse una strada a senso unico e fosse attratta da un odore che la portasse a tornare indietro? Cosa succede se una formica nisse in una strada circolare senza possibilit` di uscita?. a
15
:Sistema
loop [1,*]
16
Utente
Sistema
Inizio
recupera ambiente
[ambiente esiste]
crea simulazione
avvia simulazione
[tempo terminato]
temina simulazione
[riavvia]
Fine
17
associaAmbiente
avviaSimulazione
avviaSimulazione
terminaSimulazione
18
Modello di dominio
Cibo nomeCibo : String odoreCibo : String intensitaOdore : double 1 * FonteCibo qtaCiboFonte : double velocitaRigenerazioneCibo : double SpecieFormica nomeSpecie : String aggressivita : double velocitaMovimento : double 0..1 intensitaScia : double fertilita : int capacitaTrasporto : double 1 Simulatore durataSimulazione : int 1 0..1 Posto 0..1 * 1 Ambiente nomeAmbiente : String 1 origine 1 destinazione * * * Formica Strada * senso : boolean lunghezza : double UNICO : false DOPPIO : true 0..1 percorre * idFormica : int vitalita : double caricoCibo : double nRitorni : int intensitaOdorRicordato : double idPosto : int nomePosto : String 1 1 1 1 0..1 Formicaio qtaCiboFormicaio : double
19
Il cibo di nome nomeCibo non deve gi` esistere. a NomeCibo ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeCibo pu` contenere lettere: [a-z], [A-Z]. o NomeCibo pu` contenere numeri: [0-9]. o NomeCibo pu` contenere caratteri speciali: [-, ]. o NomeCibo non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, o #, >, <, [, ]]. NomeCibo non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeCibo non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` OdoreCibo ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u OdoreCibo pu` contenere lettere: [a-z], [A-Z]. o OdoreCibo pu` contenere numeri: [0-9]. o OdoreCibo pu` contenere caratteri speciali: [-, ]. o OdoreCibo non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, o #, >, <, [, ]]. OdoreCibo non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o OdoreCibo non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` ItensitaOdore deve essere un numero maggiore o uguale a zero. Post-condizioni: Viene creata una nuova istanza di cibo e nominata nomeCibo.
nomeCibo)
Il cibo di nome nomeCibo deve esistere. NomeCibo ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeCibo pu` contenere lettere: [a-z], [A-Z]. o NomeCibo pu` contenere numeri: [0-9]. o NomeCibo pu` contenere caratteri speciali: [-, ]. o NomeCibo non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, o #, >, <, [, ]]. NomeCibo non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeCibo non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` Post-condizioni: Viene recuperata listanza di cibo di nome nomeCibo.
20
Gestisci Specie Formica creaSpecieFormica(String nomeSpecie, double aggressivita, double velocitaMovimento, double intensitaScia, int fertilita)
Nome: Caso Duso: Gestisci Specie Formica Pre-condizioni: La specie di formica di nome nomeSpecie non deve gi` esistere. a NomeSpecie ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeSpecie pu` contenere lettere: [a-z], [A-Z]. o NomeSpecie pu` contenere lettere: [0-9]. o NomeSpecie pu` contenere lettere: [-, ]. o NomeSpecie non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, o #, >, <, [, ]]. NomeSpecie non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeSpecie non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` Aggressivita deve essere un numero maggiore o uguale a zero. VelocitaMovimento deve essere un numero maggiore di zero. IntensitaScia deve essere un numero maggiore o uguale a zero. Fertilita deve essere un intero maggiore o uguale a zero. Post-condizioni: Viene creata una nuova istanza di specie di formica e nominata nomeSpecie.
nomeSpecie)
La specie di formica di nome nomeSpecie deve esistere. NomeSpecie ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeSpecie pu` contenere lettere: [a-z], [A-Z]. o NomeSpecie pu` contenere lettere: [0-9]. o NomeSpecie pu` contenere lettere: [-, ]. o NomeSpecie non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, o #, >, <, [, ]]. NomeSpecie non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeSpecie non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` Post-condizioni: Viene recuperata listanza di specie di formica di nome nomeSpecie.
21
Gestisci Ambiente
Nome: creaAmbiente(String Caso Duso: Gestisci Ambiente Pre-condizioni:
nomeAmbiente)
Lambiente di nome nomeAmbiente non deve gi` esistere. a NomeAmbiente ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeAmbiente pu` contenere lettere: [a-z], [A-Z]. o NomeAmbiente pu` contenere lettere: [0-9]. o NomeAmbiente pu` contenere lettere: [-, ]. o NomeAmbiente non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , o @, #, >, <, [, ]]. NomeAmbiente non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeAmbiente non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` Post-condizioni: Viene creata una nuova istanza di ambiente e nominata nomeAmbiente.
nomeAmbiente)
Lambiente di nome nomeAmbiente deve esistere. NomeAmbiente ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeAmbiente pu` contenere lettere: [a-z], [A-Z]. o NomeAmbiente pu` contenere lettere: [0-9]. o NomeAmbiente pu` contenere lettere: [-, ]. o NomeAmbiente non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , o @, #, >, <, [, ]]. NomeAmbiente non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeAmbiente non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o `
22
Nome: eliminaAmbiente(Ambiente ambiente) Caso Duso: Gestisci Ambiente Pre-condizioni: -. Post-condizioni: Vengono cancellati tutti i posti, le strade, i formicai, le fonti di cibo, le formiche. Viene cancellata listanza di ambiente.
Nome: salvaAmbiente(Ambiente ambiente) Caso Duso: Gestisci Ambiente Pre-condizioni: -. Post-condizioni: Vengono salvati i posti, le strade, i formicai, le fonti di cibo, le formiche. Viene salvata listanza ambiente in memoria.
String nomePosto)
Il posto di nome nomePosto non deve gi` esistere. a NomePosto ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomePosto pu` contenere lettere: [a-z], [A-Z]. o NomePosto pu` contenere lettere: [0-9]. o NomePosto pu` contenere lettere: [-, ]. o NomePosto non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, o #, >, <, [, ]]. NomePosto non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomePosto non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` Post-condizioni: Viene creata una nuova istanza di posto nellambiente e nominata nomePosto.
Il posto di nome nomePosto deve esistere. NomePosto ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomePosto pu` contenere lettere: [a-z], [A-Z]. o NomePosto pu` contenere lettere: [0-9]. o NomePosto pu` contenere lettere: [-, ]. o NomePosto non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, o #, >, <, [, ]]. NomePosto non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomePosto non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` 23
Nome: eliminaPosto(Ambiente ambiente, Posto posto) Caso Duso: Gestisci Ambiente Pre-condizioni:-. Post-condizioni: Viene cancellata listanza di posto dallambiente. Vengono cancellate le istanze di strada collegate al posto. Viene cancellata la fonte di cibo o il formicaio, se associati al posto, e le formiche presenti nel formicaio.
Nome: creaStrada(Ambiente ambiente, Posto origine, Posto destinazione, double lunghezza, boolean senso) Caso Duso: Gestisci Ambiente Pre-condizioni: Posto origine e posto destinazione devono essere distinti. Non deve gi` esistere una strada tra origine e destinazione. a Lunghezza deve essere un numero maggiore di zero. Senso deve essere un valore booleano. Post-condizioni: Viene creata una nuova istanza di strada nellambiente.
Nome: eliminaStrada(Ambiente ambiente, Posto origine, Posto Caso Duso: Gestisci Ambiente Pre-condizioni: -. Post-condizioni: Viene cancellata listanza di strada dallambiente.
destinazione)
Nome: collocaCibo(Ambiente ambiente, Posto posto, Cibo cibo, double qtaCiboFonte, double velocitaRigenerazioneCibo) Caso Duso: Gestisci Ambiente Pre-condizioni: QtaCiboFonte deve essere un numero maggiore o uguale a zero. VelocitaRigenerazioneCibo deve essere un numero maggiore o uguale a zero. Post-condizioni: Viene creata una nuova istanza di FonteCibo nellambiente.
Nome: eliminaCibo(Ambiente ambiente, Posto posto) Caso Duso: Gestisci Ambiente Pre-condizioni: -. Post-condizioni: Viene cancellata listanza di FonteCibo dallambiente.
Nome: collocaFormicaio(Ambiente ambiente, Posto posto, SpecieFormica specie, int nFormiche) Caso Duso: Gestisci Ambiente Pre-condizioni: NFormiche deve essere un numero intero maggiore di zero. 24
Nome: eliminaFormicaio(Ambiente ambiente, Posto posto) Caso Duso: Gestisci Ambiente Pre-condizioni: -. Post-condizioni: Viene cancellata listanza di formicaio dallambiente. Vengono cancellate le formiche presenti nel formicaio.
25
nomeAmbiente [a-z], [A-Z], [0-9], [-, ], lenght 1-16 [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, #, >, <, [, ]], [,(virgola), ;, :], [, , , , ], nomeAmbiente gi esistente Condizioni Esito Ambiente nominato Giunglainesistente Valido Non Valido Ambiente nominato Campagnaesistente Non Valido
nomeAmbiente [a-z], [A-Z], [0-9], [-, ], lenght 1-16 [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, #, >, <, [, ]], [,(virgola), ;, :], [, , , , ], nomeAmbiente non esistente Condizioni Esito Ambiente nominato Giunglaesistente Valido Non Valido Ambiente nominato Campagnainesistente Non Valido
creaPosto normali speciali errati Test Test1 Test2 Parametro Ambiente nomePosto Ambiente nomePosto
nomePosto [a-z], [A-Z], [0-9], [-, ], lenght 1-16 [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, #, >, <, [, ]], [,(virgola), ;, :], [, , , , ], nomePosto gi esistente Condizioni Posto nominato Collinainesistente Posto nominato Collinaesistente Esito Valido Non Valido
26
recuperaPosto normali speciali errati Test Test1 Test2 Test3 creaStrada normali speciali errati Test Test1 Parametro Valore origine destinazione lunghezza 12 senso True origine destinazione lunghezza 0 senso False origine destinazione lunghezza -5 senso True origine destinazione lunghezza 4 senso True origine destinazione Parametro nomePosto nomePosto nomePosto Valore Collina Pic&Nic Fiume
nomePosto [a-z], [A-Z], [0-9], [-, ], lenght 1-16 [|, \, !, , , $, %, &, /, (, ), =, ?, , , @, #, >, <, [, ]], [,(virgola), ;, :], [, , , , ] Condizioni Posto nominato Collina esistente Posto nominato Fiume inesistente Esito Valido Non Valido Non Valido
lunghezza [0-9], valore > 0 [0-9], valore = 0 dato non numerico, valore < 0 Condizioni
Esito Valido
Test2
Non Valido
Test3
Non Valido
Test4
27
Gestisci Simulazione
Nome: creaSimulatore(String nomeSimulatore, Caso Duso: Gestisci Simulazione Pre-condizioni:
Ambiente ambiente)
Il simulatore di nome nomeSimulatore deve esistere. NomeSimulatore ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeSimulatore pu` contenere lettere: [a-z], [A-Z]. o NomeSimulatore pu` contenere lettere: [0-9]. o NomeSimulatore pu` contenere lettere: [-, ]. o NomeSimulatore non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , o , @, #, >, <, [, ]]. NomeSimulatore non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeSimulatore non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o ` Post-condizioni: Viene creata una nuova istanza di Simulatore.
nomeSimulatore)
Lambiente di nome nomeSimulatore deve esistere. NomeSimulatore ` una stringa costituita da almeno uno e non pi` di 16 caratteri. e u NomeSimulatore pu` contenere lettere: [a-z], [A-Z]. o NomeSimulatore pu` contenere lettere: [0-9]. o NomeSimulatore pu` contenere lettere: [-, ]. o NomeSimulatore non pu` contenere caratteri speciali: [|, \, !, , , $, %, &, /, (, ), =, ?, , o , @, #, >, <, [, ]]. NomeSimulatore non pu` contenere caratteri di punteggiatura: [,(virgola), ;, :]. o NomeSimulatore non pu` contenere caratteri accentati: [`, `, , ` `, u]. o a e e , o `
28
Nome: avviaSimulazione(Simulatore simulatore) Caso Duso: Gestisci Simulazione Pre-condizioni: -. Post-condizioni: Viene restituita unistanza di Ambiente.
Nome: arrestaSimulazione(Simulatore simulatore) Caso Duso: Gestisci Simulazione Pre-condizioni: La simulazione deve essere in esecuzione. Post-condizioni: Viene restituita unistanza di Ambiente.
Nome: arretraSimulazione(Simulatore simulatore, int tempoSimulazione) Caso Duso: Gestisci Simulazione Pre-condizioni: La simulazione deve essere arrestata. Post-condizioni: LAmbiente simulato E sostituito dallistanza di Ambiente al tempo tempoSimulazione. Viene restituita unistanza di Ambiente.
Nome: avanzaSimulazione(Simulatore simulatore, int tempoSimulazione) Caso Duso: Gestisci Simulazione Pre-condizioni: La simulazione deve essere arretrata di un tempo superiore al tempoSimulazione. Post-condizioni: LAmbiente simulato E sostituito dallistanza di Ambiente al tempo tempoSimulazione. Viene restituita unistanza di Ambiente.
29
creaSimulatore normali speciali errati Test Test1 Test2 Parametro Ambiente Ambiente Valore Giungla Campagna
Ambiente Ambiente esiste Ambiente non esiste Condizioni Ambiente nominato Giungla esistente Ambiente nominato Campagna inesistente Esito Valido Non Valido
avviaSimulazione normali speciali errati Test Test1 Test2 Test3 Test4 Parametro Ambiente Tempo Ambiente Tempo Ambiente Tempo Ambiente Tempo Valore Giungla >0 Campagna >0 Giungla =0 Giungla <0
Tempo >0 =0 <0 Esito Valido Non Valido Valido Non Valido
Condizioni Ambiente nominato Giungla esistente Ambiente nominato Campagna inesistente Ambiente nominato Giungla esistente Ambiente nominato Giungla esistente
30
Architettura Logica
ui
AntSim
utilizzo
utilizzo gestori
utilizzo
utilizzo
GestoreSimulazione
GestoreCibo
GestoreAmbiente
GestoreSpecieFormica
utilizzo
utilizzo utilizzo
utilizzo
utilizzo
utilizzo
utilizzo utilizzo
dominio
Ambiente
Strada
FonteCibo
Posto
Formicaio
SpecieFormica Cibo
Simulatore Formica
serviziTecnici
Database
31
GestoreCibo
GestoreAmbiente
GestoreSpecieFormica
GestoreSimulazione
creaCibo ( ) recuperaCibo ( )
creaAmbiente ( ) recuperaAmbiente ( ) salvaAmbiente ( ) eliminaAmbiente ( ) creaPosto ( ) recuperaPosto ( ) eliminaPosto ( ) creaStrada ( ) eliminaStrada ( ) collocaCibo ( ) eliminaCibo ( ) collocaFormicaio ( ) eliminaFormicaio ( )
creaSpecieFormica ( ) recuperaSpecieFormica ( )
creaSimulatore ( ) avviaSimulazione ( )
dominio * * Simulatore Ambiente durataSimulazione : int nomeAmbiente : String creaPosto ( ) eliminaPosto ( ) recuperaPosto ( ) creaStrada ( ) eliminaStrada ( ) * Cibo nomeCibo : String odoreCibo : String intensitaOdore : double 1 collocaCibo ( ) eliminaCibo ( ) collocaFormicaio ( ) eliminaFormicaio ( ) new Ambiente ( ) eliminaStradePosto ( ) cancellaADJPosto ( ) recuperaStrada ( ) recuperaFormiche ( ) 1 1 * * FonteCibo qtaCiboFonte : double velocitaRigenerazioneCibo : double generaCibo ( ) rimuoviQtaCibo ( ) 0..1 1 collocaCibo ( ) eliminaCibo ( ) collocaFormicaio ( ) eliminaFormicaio ( ) new Posto ( ) esisteStrada ( ) aggiungiStrada ( ) eliminaStrada ( ) generaCibo ( ) recuperaFonteCibo ( ) recuperaFormicaio ( ) 1 * origine Strada senso : boolean lunghezza : double UNICO : false DOPPIO : true new Strada ( ) 0..1 percorre spostaFormica ( ) recuperaPosizione ( ) raccogliCibo ( ) mangia ( ) * 1 * destinazione idFormica : int vitalita : double caricoCibo : double nRitorni : int intensitaOdorRicordato : double sta * 1 0..1 aggiungiCibo ( ) rimuoviCibo ( ) 1 0..1 qtaCiboFormicaio : double 0..1 Formicaio idPosto : int nomePosto : String Posto * * SpecieFormica nomeSpecie : String aggressivita : double velocitaMovimento : double intensitaScia : double fertilita : int capacitaTrasporto : double 1 1 0..1 annusaOdore ( ) calcolaOdoreCibo ( ) calcolaOdoreFormiche ( ) controllaScontroFormiche ( ) new Simulatore ( ) spostaFormica ( ) motore ( ) generaCibo ( ) raccogliCibo ( ) avviaSimulazione ( ) depositaCibo ( )
* Formica
32
Diagrammi di Stato
Posto
Posto
Inizio
creaPosto
Fine
33
Diagrammi di Sequenza
creaAmbiente
creaAmbiente(String nomeAmbiente) utente:Utente gestoreAmbiente:GestoreAmbiente
fac [ambiente non esiste gi] new Ambiente ( String nomeAmbiente ) ambiente:Ambiente
34
creaPosto
creaPosto(Ambiente ambiente, String nomePosto) utente:Utente gestoreAmbiente:GestoreAmbiente ambiente:Ambiente
35
creaStrada
creaStrada (Posto origine, Posto destinazione, int lunghezza, boolean percorribilita)
gestoreAmbiente:GestoreAmbiente creaStrada ( Posto origine, Posto destinazione, int lunghezza, boolean senso ) : Strada
ambiente:Ambiente
posto:Posto
fac [strada non esiste gi] new Strada ( Posto origine, Posto destinazione, double lunghezza, boolean senso ) strada:Strada aggiungiStrada ( Strada strada, int idPostoDestinazione )
36
eliminaPosto
eliminaPosto(Ambiente ambiente, Posto posto) gestoreAmbiente:GestoreAmbiente ambiente:Ambiente
eliminaStradePosto
37
creaSimulatore
creaSimulatore(Ambiente ambiente)
gestoreSimulazione:GestoreSimulazione
38
avviaSimulazione
avviaSimulazione(Simulatore simulatore)
simulatore:Simulatore
ambiente:Ambiente
motore ( )
calcolaOdoreCibo ( ) : double
recuperaFormiche ( ) : list<Formica>
calcolaOdoreFormiche ( ) : double
loop [1,nFormiche]
loop [0,nPosti]
39
generaCibo
generaCibo(Posto posto)
simulatore:Simulatore
posto:Posto
fonteCibo:FonteCibo
generaCibo ( ) : double
40
racogliCibo
raccogliCibo(Formica formica) simulatore:Simulatore formica:Formica posto:Posto fonteCibo:FonteCibo
fac [formica in posto con del cibo] rimuoviQtaCibo ( double qtaCibo ) : double
41
Contributi Interdisciplinari
Linguaggi - Prolog
Obiettivo: Non tutte le formiche sono destinate allesplorazione dellambiente e alla ricerca del cibo. Alcune sono destinate alla cura dei piccoli, alla manutenzione del formicaio, alla difesa del formicaio e del territorio circostante da formiche di altri formicai e da altri aggressori. Dare una rappresentazione in termini di fatti Prolog delle caratteristiche del formicaio e della situazione nella quale si trova e denire un predicato che allochi ai vari compiti un numero adeguato di formiche. Stabilito il ruolo delle formiche. Stabiliti una serie di eventi. Stabiliti gli eetti dellevento sulla popolazione. Chiamando antsim(id, numero di formiche, numero di iterazioni), ad ogni iterazione verr` estratto casualmente un evento che produrr` variazioni sul numero di formiche per ruolo. a a Chiamando antsim(id, numero di formiche, numero di iterazioni, numero evento) verr` a prodotta 1 iterazione con levento indicato. list as o list as(id) mostreranno antsim(id, numero iterazione, numero evento, popolazione prima dellevento, popolazione dopo levento). clear as o clear as(id) cancelleranno antsim asseriti. elenco dei ruoli role/3: numero del ruolo, nome, percentuale della popolazione che adempie a quel compito. elenco degli eventi event/3: numero dellevento, nome, probabilit` che quellevento capiti. a elenco degli eetti eect/3: numero evento, ruolo della formica, percentuale (o eventualmente variazione percentuale) antsim/3: id, numero di formiche, lunghezza della simulazione (numero di iterazoni) controlla che id sia ground, pulisce dagli assert, controlla che il numero di formiche sia atomico e naturale, controlla che il numero di iterazioni sia atomico e naturale, conta i ruoli, imposta la popolazione, conta gli eventi, avvia la simulazione (simulator). simulator/5: id, numero di formiche, numero di eventi, numero di iterazioni, lista di (ruolo, numero di formiche) sorteggia casualmente un numero, assegna, attraverso il numero, levento, ricorsiavamente diminuisce di ununit` il numero di iterazioni. a richiama simulator. select event/4 ogni evento ha assegnato un range di percentuale. estratto un numero casualmente controllo a quale range il numero appartiene.
42