Sei sulla pagina 1di 42

Pandini Luca 730019

Pinzan Andrea 732345

Racchetti Luca 703311

Xhani Maik 725768

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

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

Contributi Interdisciplinari Linguaggi - Prolog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Diagramma dei casi duso

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.

Casi duso in formato dettagliato


Gestisci Cibo

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: -.

Gestisci Specie Formica

Gestisci Specie Formica


Nome del Caso dUso: Gestisci Specie Formica. Portata: AntSim. Livello: Obiettivo utente. Attore primario: Utente. Parti Interessate e Interessi: Lutente vuole denire una nuova specie di formica con le rispettive caratteristiche. Essere in grado di salvare la specie di formica ed eventualmente modicarla. Pre-condizioni: Deve esistere almeno un cibo. Garanzia di successo (o Post-condizioni): La specie di formica viene salvata ed ` e disponibile per la creazione di un ambiente. Scenario principale di successo: 1. Lutente crea una nuova specie di formica; 2. Lutente inserisce un nome per la nuova specie di formica; 3. Lutente stabilisce i valori di aggressivit`, velocit` di movimento, intensit` della scia a a a chimica, capacit` di trasporto del cibo, fertilit` (numero di volte che una formica deve a a tornare al formicaio per potersi riprodurre) 4. Lutente sceglie il cibo di cui si nutre la specie di formica; 5. Il sistema mostra la specie di formica e le sue caratteristiche; 6. Lutente salva la specie di formica e le sue caratteristiche; 7. Il sistema visualizza la conferma del salvataggio; Estensioni: 1a. Lutente chiede di riprendere una specie di formica preesistente per modicarla. 1. Lutente sceglie loperazione di ripresa. 2. Lutente inserisce il nome della specie di formica da riprendere. 3. Il sistema visualizza la specie di formica e le sue caratteristiche. 3a. Specie di formica non trovata. 1. Il sistema segnala lerrore allutente. 2. Lutente reinserisce il nome della specie di formica o ne crea una nuova. 1b. Lutente decide di cancellare una specie di formica preesistente. 1. Lutente sceglie loperazione di cancellazione. 2. Lutente inserisce il nome della specie di formica da cancellare. 3. Il sistema visualizza la specie di formica e le sue caratteristiche e ne conferma la cancellazione. 2a. Nome della specie di formica non valido (gi` presente). a 1. Il sistema segnala lerrore allutente e riuta linserimento. 2. Lutente reinserisce il nome della specie di formica. 5a. Il salvataggio della specie di formica fallisce. 1. Il sistema segnala lerrore allutente. 2. Lutente corregge lerrore o decide di non salvare. 7

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

SSD Gestisci Ambiente


Gestisci Ambiente

utente:Utente creaAmbiente ( String nomeAmbiente ) : Ambiente

:Sistema

loop [0,*]

creaPosto ( Ambiente ambiente, String nomePosto ) : Posto

loop [0,*] recuperaCibo ( String nomeCibo ) : Cibo

loop [0,numeroPosti] collocaCibo ( Ambiente ambiente, Posto posto, Cibo cibo, double qtaCiboFonte, double velocitaRigenerazioneCibo ) : FonteCibo

loop [0,numeroPosti - numeroFontiCibo]

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

Diagramma attivit` Gestisci Ambiente a


Gestisci Ambiente

Utente Inizio

Sistema

ricevi richiesta creazione nuovo ambiente

chiedi il nome dell'ambiente da creare

esiste un Ambiente con lo stesso nome il nome unico

ricevi richiesta creazione nuovo posto

crea nuovo ambiente

mostra conferma della creazione dell'ambiente

ricevi il nome del posto

il nome unico

crea posto e aggiungilo all'ambiente

esiste un posto con lo stesso nome chiedi creare un nuovo posto

ricevi nome posto dove collocare il cibo nessun nuovo posto nuova creazione di un posto

ricevi nome del cibo da collocare nel posto

ricevi quantit di cibo da collocare nel posto

ricevi velocit di rigenerazione del cibo da collocare nel posto

colloca cibo nel posto scelto con propriet ricevute

mostra/conferma posto modificato e propriet di esso

ricevi nome posto dove collocare il formicaio nessun nuovo posto con cibo nuova collocazione di cibo in un posto

ricevi il nome della specie di formica del formicaio

ricevi il numero di formiche iniziale

colloca formicaio nel posto scelto con propriet ricevute

mostra/conferma posto modificato e propriet di esso

Chiedi di creare nuovo formicaio

ricevi richiesta creazione nuova strada nessun nuovo posto dove collocare un formicaio nuovo posto dove collocare formicaio

ricevi nome del posto di partenza

ricevi nome del posto di arrivo

ricevi lunghezza della strada

ricevi senso della strada

aggiungi strada all'ambiente

mostra/conferma creazione della strada e propriet

Chiedi di creare una nuova strada

nuova strada da creare Fine

12

Diagramma Stato danalisi Ambiente


Ambiente

Inizio Fine Ambiente con una nuova strada creaStrada [non esiste gi la strada] creaAmbiente

Ambiente con nessun posto eliminaPosto creaPosto

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

Ambiente con 1 fonteCibo

Ambiente con 1 fonteCibo e 0 formicai

collocaFormicaio [non esiste gi un formicaio con quel nome]

eliminaFormicaio

eliminaFormicaio collocaCibo[non esiste gi una fonteCibo con quel...

Ambiente con [2..*] formicai e 0 fonteCibo elimina fonteCibo

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

Ambiente con 1 formicaio e 1 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

SSD Gestisci Simulazione


Gestisci Simulazione

utente:Utente recuperaAmbiente ( String nomeAmbiente ) : Ambiente

:Sistema

creaSimulatore ( Ambiente ambiente ) : Simulatore

loop [1,*]

avviaSimulazione ( Simulatore simulatore, int durataSimulazione )

visualizzaStatistiche ( Simulatore simulatore )

16

Diagramma attivit` Gestisci Simulazione a


Gestisci Simulazione

Utente

Sistema

Inizio

ricevi richiesta ambiente

[ambiente non esiste]

recupera ambiente

[ambiente esiste]

ricevi richiesta creazione simulazione

crea simulazione

associa ambiente a simulazione

ricevi durata simulazione

imposta durata simulazione

ricevi richiesta avvio simulazione

avvia simulazione

salva stato corrente simulazione dopo uno scatto di tempo

mostra stato simulazione

[tempo non terminato]

[tempo terminato]

temina simulazione

ricevi richiesta visualizzazione statistiche

mostra statistiche simulazione

[riavvia]

Fine

17

Diagramma Stato danalisi Simulatore


Simulatore

creaSimulazione [non esiste simulazione con stesso nome]

nessun ambiente da simulare

associaAmbiente

associato un ambiente da simulare

avviaSimulazione

stopSimulazione simulazione in corso aggiornamento stato della simulazione

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

Contratti e Test Funzionali


Contratti Gestisci Cibo
Nome: creaCibo(String nomeCibo, Caso Duso: Gestisci Cibo Pre-condizioni:

String odoreCibo, double intensitaOdore)

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.

Nome: recuperaCibo(String Caso Duso: Gestisci Cibo Pre-condizioni:

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.

Nome: recuperaSpecieFormica(String Caso Duso: Gestisci Specie Formica Pre-condizioni:

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.

Nome: recuperaAmbiente(String Caso Duso: Gestisci Ambiente Pre-condizioni:

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

Post-condizioni: Viene restituita listanza di ambiente di nome nomeAmbiente.

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.

Nome: creaPosto(Ambiente ambiente, Caso Duso: Gestisci Ambiente Pre-condizioni:

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.

Nome: recuperaPosto(Ambiente Caso Duso: Gestisci Ambiente Pre-condizioni:

ambiente, String 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

Post-condizioni: Viene restituita listanza di posto di nome nomePosto.

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

Post-condizioni: Viene creata una nuova istanza di formicaio nellambiente.

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

Test Funzionali Gestisci Ambiente

creaAmbiente normali speciali errati

Test Test1 Test2 Test3

Parametro nomeAmbiente nomeAmbiente nomeAmbiente

Valore Giungla $var1 Campagna

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

recuperaAmbiente normali speciali errati Test Test1 Test2 Test3

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

Parametro nomeAmbiente nomeAmbiente nomeAmbiente

Valore Giungla $var1 Campagna

creaPosto normali speciali errati Test Test1 Test2 Parametro Ambiente nomePosto Ambiente nomePosto

Ambiente Valore Collina Collina

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

senso True, False non boolean

Esito Valido

Test2

Non Valido

Test3

Non Valido

Test4

Non esiste gi una strada che collega collina a fiume Valido

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.

Nome: recuperaSimulatore(String Caso Duso: Gestisci Simulazione Pre-condizioni:

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

Post-condizioni: Viene restituita listanza di simulatore di nome nomeSimulatore.

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

Test Funzionali Gestisci Simulazione

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

Ambiente Ambiente esiste Ambiente non esiste

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

Diagramma delle classi


gestori

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

Posto collocaCibo collocaFormicaio

eliminaFormicaio eliminaCibo Formicaio eliminaPosto FonteCibo

Fine

33

Diagrammi di Sequenza
creaAmbiente
creaAmbiente(String nomeAmbiente) utente:Utente gestoreAmbiente:GestoreAmbiente

creaAmbiente ( String nomeAmbiente ) : Ambiente

recuperaAmbiente ( String nomeAmbiente ) : Ambiente

fac [ambiente non esiste gi] new Ambiente ( String nomeAmbiente ) ambiente:Ambiente

34

creaPosto
creaPosto(Ambiente ambiente, String nomePosto) utente:Utente gestoreAmbiente:GestoreAmbiente ambiente:Ambiente

creaPosto ( Ambiente ambiente, String nomePosto ) : Posto

recuperaPosto ( String nomePosto ) : Posto

fac [posto non esiste gi]

creaPosto ( String nomePosto ) : Posto new Posto ( String nomePosto ) posto:Posto

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

esisteStrada ( int idPostoDestinazione ) : boolean

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

eliminaPosto ( Posto posto ) : Posto

fac [ un formicaio] eliminaFormicaio ( Posto posto ) : Formicaio

fac [ un fonteCibo] eliminaCibo ( Posto posto ) : FonteCibo

eliminaStradePosto

cancellaADJPosto ( Posto posto ) : int

37

creaSimulatore
creaSimulatore(Ambiente ambiente)

gestoreSimulazione:GestoreSimulazione

new Simulatore ( Ambiente ambiente ) simulatore:Simulatore

38

avviaSimulazione
avviaSimulazione(Simulatore simulatore)

gestoreSimulazione:GestoreSimulazione avviaSimulazione ( durataSimulazione : int )

simulatore:Simulatore

ambiente:Ambiente

motore ( )

loop [1,*] recuperaPosto ( String nomePosto ) : Posto

loop [1,*] recuperaStrada ( Posto origine, Posto destinazione ) : Strada

calcolaOdoreCibo ( ) : double

recuperaFormiche ( ) : list<Formica>

calcolaOdoreFormiche ( ) : double

loop [1,nPosti+nStrade] controllaScontroFormiche ( )

loop [1,nFormiche]

spostaFormica ( Formica formica )

loop [0,nPosti]

generaCibo ( Posto posto ) : double

39

generaCibo
generaCibo(Posto posto)

simulatore:Simulatore

posto:Posto

fonteCibo:FonteCibo

generaCibo ( ) : double

fac [isFonteCibo] generaCibo ( ) : double

40

racogliCibo
raccogliCibo(Formica formica) simulatore:Simulatore formica:Formica posto:Posto fonteCibo:FonteCibo

raccogliCibo ( Formica formica ) : double recuperaPosizione ( ) : String [*]

fac [formica in un posto] recuperaFonteCibo ( ) : FonteCibo

fac [formica in posto con del cibo] rimuoviQtaCibo ( double qtaCibo ) : double

raccogliCibo ( double caricoCibo ) : 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