Swappa : Uni / Modellazione ed Analisi di Sistemi - AsmetaL
Creative Commons License

Torna alla pagina di Modellazione ed Analisi di Sistemi

 :: Modellazione ed Analisi di Sistemi - AsmetaL ::

Ove non meglio specificato, tutti i testi tra virgolette vanno intesi come citazioni letterali dalle slide della prof Riccobene Elvinia Maria, 2010.

AsmetaL

AsmetaL è un linguaggio formale che permette di descrivere un sistema che si vuole modellare, a tal fine AsmetaL include:

Abbiamo già visto di quali parti si compone una ASM, rivediamo tali componenti con alcune specifiche relative ad una macchina ASM. Una ASM è una tupla che si compone di: (name, header, body, main rule, initialization).

Esempio: “Si prenda come esempio il sistema orologio, il quale dovrà essere modellato con una ASM”.
Specifiche: quello che devo modellare in questo sistema è il funzionamento di un orologio, dunque ci deve essere un dominio dei secondi, minuti ed ore (che saranno sotto-domini del dominio Integer). Quello che dovrà accadere è che ogni volta che il dominio dei secondi avrà un valore pari a 59 si dovranno incrementare i minuti. Lo stesso per i minuti.

                                      asm Clock
                                domain Minuto subsetof Integer
                                domain Ors subsetof Integer
                                import ./StandardLibrary

terminata la fase di specifica dei domini ci servirà anche dichiarare delle funzioni. Nel caso la StandardLibrary fosse nella cartella in cui vengono salvati i file .asm la notazione sopra adottata va bene. In caso contrario andrà definito il percorso assoluto dove la StandardLibrary verrà memorizzata. Osservando l'albero delle funzioni ASM possiamo osservare che si sono diversi tipi di funzioni, quelle dichiarate in seguito saranno di tipo controlled, in quanto non dovranno essere passate dall'ambiente esterno, ma saranno gestite totalmente dalla macchina ASM:

                                  controlled secondi: Secondo
                                  controlled minuti: Minuto
                                  controlled ore: Ora
                                    domain Secondo = {0..59}
                                    domain Minuto = {0..59}
                                    domain Ora = {0..23}

Quanto definito non ha bisogno di troppe spiegazioni in quanto si è specificato la struttura delle ore, minuti e secondi.
Passiamo a definire le funzioni necessarie, in questo scenario ne definiremo una, la quale avrà il compito di incrementare le ore qualora la condizione imposta fosse soddisfatta:

                            macro rule r_IncMinOre =
	                          par
		                        if minuti = 59 then
			                      ore := (ore + 1) mod 24
		                        end if
		                       minuti := (minuti + 1) mod 60
	                          endpar

Brevemente, nel caso i minuti avessero un valore pari a 59 allora incremento le ore, in caso contrario incremento i minuti.

                            main rule r_Main=
                            par
		                  if secondi = 59 then
			                  r_IncMinOre[]
		                  endif
		                  minuti = (minuti + 1) mod 60
	                    endpar
                            default init s0:
		                 function secondi = 0
		                 function minuti = 0
		                 function ore = 0

Torna su


Torna alla pagina di Modellazione ed Analisi di Sistemi

(Printable View of http://www.swappa.it/wiki/Uni/Asmetal)