• Non ci sono risultati.

2.6 Test e valutazione

2.6.1 Unit testing e valutazione del codice

Durante lo sviluppo del codice si è prestata particolare attenzione alla qualità dello stesso: come detto Sezione 2.5.4, sono stati utilizzati strumenti di analisi statica del codice (quali Checkstyle, PMD e FindBugs) che potessero garantire una buona attinenza alle convenzioni e una riduzione delle possibilità di bug.

Per garantire il corretto funzionamento delle componenti più cruciali non strettamente collegate a elementi di interazione grafica, sono state create classi dedicate allo unit testing attraverso la libreria JUnit20, nella sua versione 4.12.

In particolare, è stato testato a fondo il comportamento delle classi relative agli effetti, alla loro serializzazione e alle proprietà osservabili e serializzabili implementate: i risultati forniti dallo strumento di analisi della coverage messo a disposizione da Intellij IDEA per i package it.unibo.alchemist.boundary.gui.effects e it.unibo.alchemist.bounda- ry.gui.view.properties, ad esclusione delle classi precedenti annotate come deprecate, sono visibili in Figura 2.10.

Figura 2.10: Coverage per le classi relative agli effetti, alla loro serializzazione e alle proprietà osservabili e serializzabili implementate

2.6.2

Valutazione dell’interfaccia

L’interfaccia grafica risulta essere, per le funzionalità implementate, conforme ai requi- siti concordati nella fase di analisi:

– L’ambiente di simulazione è stato rinnovato ed è in grado di renderizzare correttamen- te gli effetti applicati per una simulazione. Inoltre, l’utente è in grado di visualizzare

2.6 Test e valutazione 37

in tempo reale l’avanzamento della simulazione in termini di tempo e step tramite contatori dedicati.

– La gestione degli effetti, accuratamente testata come specificato nella Sezione prece- dente, risulta immediata all’utilizzo, con bottoni dedicati al salvataggio e al carica- mento dei file JSON (Figura 2.9(a), barra inferiore) che aprono l’interfaccia fornita dal file manager del sistema operativo per la scelta del file.

È possibile modificare l’ordine di effetti e gruppi di effetti nella pila con un semplice

drag’n’drop (Figura 2.11).

Figura 2.11: Gestione drag’n’drop degli effetti

– Sono stati realizzati effetti standard per la rappresentazione di nodi e collegamen- ti, che possono essere utilizzati da altri sviluppatori come punto di partenza per realizzare rappresentazioni più complesse e flessibili (Figura 2.12).

2.6 Test e valutazione 38

2.6 Test e valutazione 39

– Sono state analizzate le performance e possono essere considerate pienamente ac- cettabili; in particolare, utilizzando il medesimo ambiente hardware e software21, la medesima simulazione22 (codice in Appendice A.1) ed effetti equivalenti23 (codice in Appendici A.2 e A.3):

• abilitando la rappresentazione dei soli nodi, la nuova interfaccia è in grado me- diamente di computare 1 step in 0, 30ms circa (dei quali circa 0, 29ms sono necessari per i calcoli relativi al modello e a direttive grafiche dell’effetto), men- tre l’interfaccia classica richiede mediamente 0, 68ms circa (dei quali anche in questo caso i tempi di rendering sono trascurabili).

• rappresentando sia i nodi che i collegamenti tra loro, la GUI implementata mediamente è in grado di eseguire 1 step in 1, 32ms circa (1, 26ms al netto del rendering), mentre la soluzione grafica precedente necessita di 1, 11ms cir- ca, dei quali poco meno della metà (0, 45ms) sono utilizzati da Swing per la rappresentazione.

Le prestazioni leggermente peggiori nel secondo caso possono essere imputate all’ef- fetto dedicato al disegno dei nodi: l’architettura con cui è realizzato (concettualmente differente dall’implementazione legacy), lo mette sullo stesso piano degli altri effet- ti e una maggiore ottimizzazione della struttura dati utilizzata per il calcolo delle istruzioni grafiche potrebbe permettere anche in questo caso alla nuova interfaccia di gravare meno della precedente sul motore di simulazione.

– L’interfaccia non utilizza valori di misura assoluti e scala senza problemi su diversi tipi di risoluzione e densità di pixel.

– Le possibilità di interazione con l’ambiente di simulazione tramite mouse e tastiera sono presenti, ma limitate: è possibile controllarne il flusso di esecuzione sia tramite la pressione del tasto “play/pausa” che attraverso una scorciatoia da tastiera ed è possibile effettuare uno zoom nell’ambiente rappresentato eseguendo uno scroll.

21CPU: AMD FX-8320E; GPU: AMD Radeon R9 280; RAM: 8GB DDR3; OS: Linux Mint KDE 18.2;

JRE: 1.8.0_151

22simulazione nell’incarnazione protelis con 500 nodi disposti in cerchio, connessi tra loro se

sufficientemente vicini e che si muovono di moto browniano

23l’effetto DrawShape è stato utilizzato come corrispettivo dell’effetto DrawDot della nuova interfaccia,

mentre è stata utilizzata la rappresentazione dei collegamenti interna all’OutputMonitor grafico per la rap- presentazione dei nodi (effetto DrawLinks), non essendo possibile un effetto corrispettivo nell’architettura

2.6 Test e valutazione 40

Non è possibile, al momento, effettuare il pan per spostarsi nell’ambiente.

A causa della mole di lavoro necessaria, non è stato possibile implementare la rappre- sentazione di ambienti con mappe di sfondo.

Capitolo 3

Conclusioni

3.1

Risultati

L’obiettivo di questa tesi era quello di realizzare un’interfaccia grafica per l’ambiente di simulazione di Alchemist che sostituisse la precedente e si andasse ad integrare con i recenti contributi dati ad altre sezioni della GUI del software, andando a fornire una esperienza utente più semplice e gradevole anche per i meno esperti.

L’interfaccia, realizzata con la libreria JavaFX, ha comportato un restyling completo a livello estetico e una reimplementazione di numerose parti del codice. Al termine del lavoro illustrato in questa tesi, essa risulta essere in grado di caricare una simulazione, rappresentarla a schermo attraverso effetti importabili ed esportabili per mezzo di file JSON e controllarne il flusso d’esecuzione; l’impatto sulle performance di simulazione rispetto a un’esecuzione headless è accettabile e comparabile con l’interfaccia precedente.

Nonostante il lavoro svolto abbia portato a un software correttamente funzionante, la nuova interfaccia grafica non può ancora sostituire completamente quella classica sul canale stabile a causa del mancato supporto ad ambienti con mappe di sfondo, del quale non è stato intrapreso lo sviluppo in quanto la mole di lavoro necessaria non avrebbe permesso di mantenere i livelli attuali di ottimizzazione e stabilità.

Nel paragrafo successivo sono illustrati i lavori futuri che possono essere apportati per rendere la GUI utilizzabile nel ramo stabile.

3.2 Lavori futuri 42

3.2

Lavori futuri

Al termine del lavoro svolto, è rilevante valutare i possibili contributi futuri che pos- sono essere forniti ad Alchemist a partire da ciò che è stato sviluppato per questa tesi. In particolare, per portare sul canale stabile l’interfaccia grafica realizzata è importante implementare un monitor che sia in grado di rappresentare ambienti di simulazione con mappe di sfondo: ciò dovrebbe essere possibile estendendo dalla medesima classe astratta che costituisce la base del monitor utilizzato attualmente per il rendering dell’ambiente, AbstractFXDisplay, con una classe capace di interfacciarsi con distributori di mappe come Google Maps oppure OpenStreetMaps.

Ulteriori lavori potrebbero coinvolgere lo sviluppo di effetti più complessi, l’ottimizza- zione di quelli esistenti e il miglioramento delle possibilità di interazione con gli elementi dell’ambiente.

Appendice A

Simulazione di prova

A.1

YAML della simulazione

1 i n c a r n a t i o n: p r o t e l i s 2 n e t w o r k −m o d e l: 3 t y p e: E u c l i d e a n D i s t a n c e 4 p a r a m e t e r s: [ 1 0 ] 5 d i s p l a c e m e n t s: 6 − i n: 7 t y p e: C i r c l e 8 p a r a m e t e r s: [ 5 0 0 , 0 , 0 , 5 0 ] 9 p r o g r a m s: 10 − 11 − t i m e − d i s t r i b u t i o n: 1 12 p r o g r a m: 0 13 − p r o g r a m: s e n d 14 − t i m e − d i s t r i b u t i o n: 1 15 t y p e: E v e n t 16 a c t i o n s: 17 − t y p e: BrownianMove 18 p a r a m e t e r s: [ 1 ] 43

A.2 JSON degli effetti 44

A.2

JSON degli effetti

1 { 2 " name ": " D e f a u l t E f f e c t s " , 3 " v i s i b i l i t y ": t r u e , 4 " t r a n s p a r e n c y ": 1 0 0 , 5 " e f f e c t s ": [ 6 { 7 " t y p e ": " DrawDot " , 8 " s i z e ": { 9 " name ": " S i z e " , 10 " v a l u e ": 5 . 0 , 11 " l o w e r bound ": 0 . 0 , 12 " u p p e r bound ": 1 0 0 . 0 13 } , 14 " c o l o r ": { 15 " Red ": 0 . 0 , 16 " G r e e n ": 0 . 0 , 17 " B l u e ": 0 . 0 , 18 " A l p h a ": 1 . 0 19 } , 20 " name ": " Draw t h e d o t s " , 21 " v i s i b i l i t y ": t r u e 22 } , 23 { 24 " t y p e ": " D r a w L i n k s " , 25 " s i z e ": { 26 " name ": " S i z e " , 27 " v a l u e ": 0 . 1 5 , 28 " l o w e r bound ": 0 . 0 , 29 " u p p e r bound ": 1 0 0 . 0 30 } , 31 " c o l o r ": { 32 " Red ": 0 . 0 , 33 " G r e e n ": 0 . 0 , 34 " B l u e ": 0 . 0 , 35 " A l p h a ": 1 . 0 36 } , 37 " name ": " Draw t h e l i n k s " , 38 " v i s i b i l i t y ": t r u e 39 } 40 ] 41 }

A.3 AES degli effetti 45

A.3

AES degli effetti

1 [ 2 { 3 " t y p e ": " c l a s s i t . u n i b o . a l c h e m i s t . b o u n d a r y . g u i . e f f e c t s . DrawShape " , 4 " c u r I n c a r n a t i o n ": " p r o t e l i s " , 5 " mode ": " F i l l E l l i p s e " , 6 " r e d ": { 7 " max ": 2 5 5 , 8 " min ": 0 , 9 " v a l ": 0 10 } , 11 " b l u e ": { 12 " max ": 2 5 5 , 13 " min ": 0 , 14 " v a l ": 0 15 } , 16 " g r e e n ": { 17 " max ": 2 5 5 , 18 " min ": 0 , 19 " v a l ": 0 20 } , 21 " a l p h a ": { 22 " max ": 2 5 5 , 23 " min ": 0 , 24 " v a l ": 255 25 } , 26 " s c a l e F a c t o r ": { 27 " max ": 1 0 0 , 28 " min ": 0 , 29 " v a l ": 50 30 } , 31 " s i z e ": { 32 " max ": 1 0 0 , 33 " min ": 0 , 34 " v a l ": 5 35 } , 36 " m o l F i l t e r ": f a l s e , 37 " m o l S t r i n g ": " " , 38 " m o l P r o p e r t y F i l t e r ": f a l s e , 39 " p r o p e r t y ": " " , 40 " w r i t i n g P r o p e r t y V a l u e ": f a l s e , 41 " c ": " A l p h a " , 42 " r e v e r s e ": f a l s e , 43 " propoom ": { 44 " max ": 1 0 , 45 " min ": −10 , 46 " v a l ": 0 47 } , 48 " m i n p r o p ": { 49 " max ": 1 0 , 50 " min ": −10 ,

A.3 AES degli effetti 46 51 " v a l ": 0 52 } , 53 " maxprop ": { 54 " max ": 1 0 , 55 " min ": −10 , 56 " v a l ": 10 57 } , 58 " c o l o r C a c h e ": { 59 " v a l u e ": −16777216 , 60 " f a l p h a ": 0 . 0 61 } 62 } 63 ]

Bibliografia

[1] C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King e S. An- gel. A Pattern Language: Towns, Buildings, Construction (Center for Environmental

Structure). Later printing. Oxford University Press, ago. 1977. isbn: 9780195019193.

[2] E. Babulak e M. Wang. «Discrete event simulation: State of the art». In: International

Journal of Online Engineering (iJOE) 4.2 (2007), pp. 60–63. doi: 10.5772/9894.

url: https://doi.org/10.5772/9894.

[3] J. Banks e J. S. Carson II. «Introduction to Discrete-event Simulation». In: Procee-

dings of the 18th Conference on Winter Simulation. WSC ’86. Washington, D.C.,

USA: ACM, 1986, pp. 17–23. isbn: 9780911801118. doi: 10.1145/318242.318253. url: http://doi.acm.org/10.1145/318242.318253.

[4] J. Bloch. Effective Java (2Nd Edition) (The Java Series). 2a ed. Upper Saddle River,

NJ, USA: Prentice Hall PTR, 2008. isbn: 9780321356680.

[5] E. Casadio. «Revisione e refactoring dell’interfaccia utente del simulatore Alchemist». Tesi di laurea. url: http://amslaurea.unibo.it/12310.

[6] B. Clark e V. Feliberti. Multi-pane navigation model for graphical user interfaces. US Patent App. 11/333,164. Mag. 2006. url: https://www.google.com/patents/ US20060101353.

[7] D. Crockford. The application/json Media Type for JavaScript Object Notation (JSON). RFC 4627. Lug. 2006. url: https://www.ietf.org/rfc/rfc4627.txt.

[8] G. S. Fishman. Principles of Discrete Event Simulation. New York, NY, USA: John Wiley & Sons, Inc., 1978. isbn: 9780471043959.

[9] T. Friedman. «Making sense of software: Computer games and interactive textua- lity». In: Cybersociety; Computer-Mediated Communication and Community. Thou-

sand Oaks, Calif.: Sage Publications (1994).

BIBLIOGRAFIA 48

[10] E. Gamma, R. Helm, R. Johnson e J. Vlissides. Design Patterns: Elements of Reu-

sable Object-oriented Software. Boston, MA, USA: Addison-Wesley Longman Publi-

shing Co., Inc., 1995. isbn: 9780201633610.

[11] M. A. Gibson e J. Bruck. «Efficient Exact Stochastic Simulation of Chemical Systems with Many Species and Many Channels». In: The Journal of Physical Chemistry A 104.9 (2000), pp. 1876–1889. doi: 10.1021/jp993732q. eprint: http://dx.doi. org/10.1021/jp993732q. url: http://dx.doi.org/10.1021/jp993732q.

[12] D. T. Gillespie. «A general method for numerically simulating the stochastic time evolution of coupled chemical reactions». In: Journal of Computational Physics 22.4 (1976), pp. 403–434. issn: 0021-9991. doi: https : / / doi . org / 10 . 1016 / 0021 - 9991(76)90041-3. url: http://www.sciencedirect.com/science/article/pii/ 0021999176900413.

[13] D. T. Gillespie. «Exact stochastic simulation of coupled chemical reactions». In:

The Journal of Physical Chemistry 81.25 (1977), pp. 2340–2361. doi: 10 . 1021 /

j100540a008. eprint: http://dx.doi.org/10.1021/j100540a008.

[14] M. Hassenzahl. «User Experience (UX): Towards an Experiential Perspective on Product Quality». In: Proceedings of the 20th Conference on L’Interaction Homme-

Machine. IHM ’08. Metz, France: ACM, 2008, pp. 11–15. isbn: 9781605582856. doi:

10 . 1145 / 1512714 . 1512717. url: http : / / doi . acm . org / 10 . 1145 / 1512714 . 1512717.

[15] Ergonomics of human system interaction-Part 210: Human-centred design for inte- ractive systems. Standard. ISO 9241-210:2010. Geneva, CH, mar. 2009. url: https:

//www.iso.org/standard/52075.html.

[16] R. M. Karp e M. O. Rabin. «Efficient randomized pattern-matching algorithms». In: IBM Journal of Research and Development 31.2 (mar. 1987), pp. 249–260. issn: 0018-8646. doi: 10.1147/rd.312.0249. url: https://doi.org/10.1147/rd.312. 0249.

[17] G. E. Krasner, S. T. Pope et al. «A description of the model-view-controller user interface paradigm in the smalltalk-80 system». In: Journal of object oriented pro-

gramming 1.3 (1988), pp. 26–49.

[18] J. Long e A. Whitefield, cur. Cognitive Ergonomics and Human Computer Interac-

BIBLIOGRAFIA 49

[19] J. E. McDonough. «Iterator Design Pattern». In: Object-Oriented Design with ABAP:

A Practical Approach. Berkeley, CA: Apress, 2017, pp. 239–246. isbn: 9781484228388.

doi: 10.1007/978-1-4842-2838-8_18. url: https://doi.org/10.1007/978-1- 4842-2838-8_18.

[20] J. E. McDonough. «Observer Design Pattern». In: Object-Oriented Design with ABAP:

A Practical Approach. Berkeley, CA: Apress, 2017, pp. 155–171. isbn: 9781484228388.

doi: 10.1007/978-1-4842-2838-8_13. url: https://doi.org/10.1007/978-1- 4842-2838-8_13.

[21] J. E. McDonough. «Template Method Design Pattern». In: Object-Oriented Design

with ABAP: A Practical Approach. Berkeley, CA: Apress, 2017, pp. 247–254. isbn:

9781484228388. doi: 10.1007/978-1-4842-2838-8_19. url: https://doi.org/ 10.1007/978-1-4842-2838-8_19.

[22] F. Moritz. «Rich Internet Applications (RIA): A Convergence of User Interface Para- digms of Web and Desktop-Exemplified by JavaFX». In: University of AppliedScience

Kaiserslautern, Deutschland (2008).

[23] D. A. Norman. The Design of Everyday Things. New York, NY, USA: Basic Books, Inc., gen. 1988. isbn: 9780465067107.

[24] T. C. O’rourke, B. T. O’neill, R. C. Cook, K. O. Taner, S. P. Synder, A. R. Joyner et al. Graphical user interface. US Patent 5,349,658. Set. 1994.

[25] D. Pianini, S. Montagna e M. Viroli. «Chemical-oriented simulation of computational systems with ALCHEMIST». In: Journal of Simulation 7.3 (ago. 2013), pp. 202–215. issn: 1747-7786. doi: 10.1057/jos.2012.27. url: https://doi.org/10.1057/ jos.2012.27.

Ringraziamenti

Un sincero ringraziamento va a tutti coloro che mi hanno aiutato in vario modo a raggiungere questo traguardo. Ringrazio il professor Mirko Viroli e il professor Danilo Pianini per l’aiuto datomi nella realizzazione di questo progetto, sia durante l’attività sperimentale che per la stesura dell’elaborato finale. Ringrazio anche gli amici che ho avuto vicino in questi mesi, ma soprattutto un particolare grazie ai miei familiari che mi sostengono da sempre.

Documenti correlati