Part III.Nome Disponibilità Tipo Di Versione
INTERARRIVAL TIME
10.2 Design di descrizioni XML
In questo paragrafo riportiamo, a titolo di esempio, una trasformazione da diagramma UML a file XML, questa è la premessa per la nostra interfaccia.
Figura 115: Diagramma UML da trasformare in file XML
162 Figura 116: Codice in XML che descrive le classi di Fig.115
163 Figura.: 117 Schema per validare l’istanza creata
164 L’interfaccia:
Figura 118: Schema logico dell'applicazione 10.2.1 Spiegazione dello schema:
User (analista) modella il processo da simulare con il tool basato su linguaggio BPMN; una volta che il modello è stato realizzato, è tradotto in Xml, poi tramite l'interfaccia sono passati i parametri di simulazione. La fase successiva consiste nell'estrarre le features del modello e inviarli al decisore il quale, prendendo in ingresso la matrice definita nel capitolo precedente e le features estratte al passo precedente, decide il miglior tool di simulazione da mandare in esecuzione e rimanderà all'User i reports di simulazione. La scelta dell'estrazione delle features, la decisione del tool e l'esecuzione della simulazione saranno trasparenti all'User.
165
10.3 Descrizione del Simulation Parameters
Figura . : 119 Oggetti che l’interfaccia utilizza per la simulazione
In figura sono rappresentati gli oggetti che l'interfaccia necessita per la simulazione, sono una rappresentazione concettuale dei parametri da passare al simulatore dato uno scenario di simulazione. Questi oggetti sono definiti XML come riportato di seguito:
:element name="parametri_di_task">
-<xs:complexType> -<xs:sequence>
<xs:element ref="risorsa_necessaria" /> <xs:element ref="durata" />
<xs:element ref="costo" /> <xs:element ref="priorita" /> <xs:element ref="stabilita" /> <xs:element ref="complessita" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="tempo_di_interarrivo">
166
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> -<xs:element name="parametri_di_simulazione">
-<xs:complexType> -<xs:sequence>
<xs:element ref="parametri_di_pool" /> <xs:element ref="parametri_di_task" /> <xs:element ref="nuovi_KPI" />
<xs:element ref="parametro_di_gateway" /> <xs:element ref="validazione_diagramma" /> <xs:element ref="debug_diagramma" /> <xs:element ref="script_di_simulazione" /> <xs:element ref="statistiche_esportabili" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="parametri_di_pool">
-<xs:complexType> -<xs:sequence>
<xs:element ref="tempo_di_interarrivo" /> <xs:element ref="numero_di_istanze" /> <xs:element ref="risorse_disponibili" /> <xs:element ref="calendario" />
<xs:element ref="inizio_simulazione" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs s:complexType> -<xs:sequence>
<xs:element name="unita_di_misura" type="xs:string" />
<xs:element ref="informazioni_statistiche" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="numero_di_istanze"> -<xs:complexType>
-<xs:sequence>
<xs:element name="numero" type="xs:integer" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="risorse_disponibili"> -<xs:complexType>
-<xs:sequence>
<xs:element name="numero" type="xs:integer" /> <xs:element name="tipo" type="xs:string" />
<xs:element name="costo_orario" type="xs:decimal" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="calendario">
-<xs:complexType> -<xs:sequence>
167 <xs:element name="durata_anno" type="xs:integer" />
<xs:element name="durata_mese" type="xs:integer" />
<xs:element name="ore_lavorative_giornaliere" type="xs:integer" /> <xs:element name="durata_settimana" type="xs:integer" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="inizio_simulazione"> -<xs:complexType>
-<xs:sequence>
<xs:element name="inizio_data_ora" type="xs:string" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="risorsa_necessaria"> -<xs:complexType>
-<xs:sequence>
<xs:element name="nome" type="xs:string" /> <xs:element name="tipo" type="xs:string" /> <xs:element name="quantita" type="xs:integer" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="durata"> -<xs:complexType>
-<xs:sequence>
<xs:element ref="informazioni_statistiche" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="costo">
-<xs:complexType> -<xs:sequence>
<xs:element name="importo" type="xs:decimal" /> <xs:element name="valuta" type="xs:string" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="priorita"> -<xs:complexType>
-<xs:sequence>
<xs:element name="livello_priorita" type="xs:integer" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="stabilita"> -<xs:complexType>
-<xs:sequence>
<xs:element name="livello_stabilita" type="xs:integer" /> </xs:sequence>
</xs:complexType> </xs:element>
168
-<xs:element name="complessita"> -<xs:complexType>
-<xs:sequence>
<xs:element name="livello_complessita" type="xs:integer" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="informazioni_statistiche"> -<xs:complexType>
-<xs:sequence>
<xs:element ref="fissa" /> <xs:element ref="empirica" /> <xs:element ref="binomiale" /> <xs:element ref="gaussiana" /> <xs:element ref="uniforme" /> <xs:element ref="esponenziale" /> <xs:element ref="normale" /> <xs:element ref="lognormale" /> <xs:element ref="gamma" /> <xs:element ref="beta" /> <xs:element ref="erlang" /> <xs:element ref="weibull" /> <xs:element ref="poisson" /> <xs:element ref="triangolare" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="fissa">
-<xs:complexType> -<xs:sequence>
<xs:element name="fisso" type="xs:integer" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="empirica">
-<xs:complexType> -<xs:sequence>
<xs:element name="valore" type="xs:decimal" /> <xs:element name="probabilita" type="xs:decimal" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="binomiale">
-<xs:complexType> -<xs:sequence>
<xs:element name="variabile" type="xs:decimal" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="gaussiana">
-<xs:complexType> -<xs:sequence>
169 <xs:element name="media" type="xs:decimal" />
<xs:element name="deviazione" type="xs:decimal" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="uniforme">
-<xs:complexType>
-<xs:sequence>
<xs:element name="min" type="xs:decimal" /> <xs:element name="max" type="xs:decimal" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="esponenziale"> -<xs:complexType>
-<xs:sequence>
<xs:element name="media" type="xs:decimal" /> <xs:element name="negativa" type="xs:boolean" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="normale"> -<xs:complexType>
-<xs:sequence>
<xs:element name="troncata" type="xs:boolean" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="lognormale"> -<xs:complexType>
-<xs:sequence>
<xs:element name="variabile" type="xs:decimal" /> <xs:element name="base" type="xs:decimal" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="gamma"> -<xs:complexType>
-<xs:sequence>
<xs:element name="parametro1" type="xs:decimal" /> <xs:element name="parametro2" type="xs:decimal" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="beta">
-<xs:complexType> -<xs:sequence>
<xs:element name="variabile" type="xs:decimal" /> </xs:sequence>
</xs:complexType> </xs:element>
170
-<xs:complexType> -<xs:sequence>
<xs:element name="ordine" type="xs:decimal" /> <xs:element name="media" type="xs:decimal" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="weibull"> -<xs:complexType>
-<xs:sequence>
<xs:element name="scala" type="xs:decimal" /> <xs:element name="forma" type="xs:decimal" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="poisson">
-<xs:complexType> -<xs:sequence>
<xs:element name="numero_eventi" type="xs:integer" /> <xs:element name="media" type="xs:decimal" />
</xs:sequence> </xs:complexType> </xs:element>
-<xs:element name="triangolare"> -<xs:complexType>
-<xs:sequence>
<xs:element name="variabile" type="xs:decimal" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="nuovi_KPI">
-<xs:complexType> -<xs:sequence>
<xs:element name="tipo" type="xs:string" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="parametro_di_gateway">
-<xs:complexType> -<xs:sequence>
<xs:element name="percentuale" type="xs:integer" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="validazione_diagramma">
-<xs:complexType> -<xs:sequence>
<xs:element name="bpmn" type="xs:boolean" /> <xs:element name="tool" type="xs:boolean" />
</xs:sequence> </xs:complexType> </xs:element>
171
-<xs:element name="debug_diagramma"> -<xs:complexType>
-<xs:sequence>
<xs:element name="debug" type="xs:boolean" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="script_di_simulazione"> -<xs:complexType>
-<xs:sequence>
<xs:element name="linguaggio" type="xs:string" /> </xs:sequence>
</xs:complexType> </xs:element>
-<xs:element name="statistiche_esportabili"> -<xs:complexType>
-<xs:sequence>
<xs:element name="estensione" type="xs:string" /> <xs:element name="grafica" type="xs:boolean" />
</xs:sequence> </xs:complexType> </xs:element>
</xs:schema>
Fig. :120 File XmlSchema dell’interfaccia
Di seguito il file di un’istanza:
<?xml version="1.0" encoding="UTF-8" ?>
-<parametri_di_simulazione xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:noNamespaceSchemaLocation="simulation.xsd">
-<parametri_di_pool>
-<tempo_di_interarrivo>
<unita_di_misura>ora</unita_di_misura>
-<informazioni_statistiche> -<fissa> <fisso>5</fisso> </fissa> -<empirica> <valore>3</valore> <probabilita>3</probabilita> </empirica> -<binomiale> <variabile>1.5</variabile> </binomiale> -<gaussiana> <media>1.5</media> <deviazione>1.5</deviazione> </gaussiana> -<uniforme>
172 <min>1</min> <max>3</max> </uniforme> -<esponenziale> <media>1.5</media> <negativa>1</negativa> </esponenziale> -<normale> <troncata>1</troncata> </normale> -<lognormale> <variabile>1.5</variabile> <base>3</base> </lognormale> -<gamma> <parametro1>1.4</parametro1> <parametro2>1.6</parametro2> </gamma> -<beta> <variabile>1.5</variabile> </beta> -<erlang> <ordine>3</ordine> <media>1.5</media> </erlang> -<weibull> <scala>1.5</scala> <forma>1.4</forma> </weibull> -<poisson> <numero_eventi>5</numero_eventi> <media>1.5</media> </poisson> -<triangolare> <variabile>1.6</variabile> </triangolare> - <!-- PROVA DI INFOSTATISTICHE --> </informazioni_statistiche> </tempo_di_interarrivo> -<numero_di_istanze> <numero>100</numero> </numero_di_istanze> -<risorse_disponibili> <numero>10</numero> <tipo>user</tipo>
<costo_orario>25</costo_orario> </risorse_disponibili>
-<calendario>
<durata_anno>1</durata_anno> <durata_mese>4</durata_mese>
173 <ore_lavorative_giornaliere>8</ore_lavorative_giornaliere> <durata_settimana>5</durata_settimana> </calendario> -<inizio_simulazione> <inizio_data_ora>24/09/2014</inizio_data_ora> </inizio_simulazione> </parametri_di_pool> -<parametri_di_task> -<risorsa_necessaria>
<nome>Utente</nome> <tipo>user</tipo>
<quantita>10</quantita> </risorsa_necessaria> -<durata> -<informazioni_statistiche> -<fissa> <fisso>5</fisso> </fissa> -<empirica> <valore>1.5</valore> <probabilita>1.5</probabilita> </empirica> -<binomiale> <variabile>1.5</variabile> </binomiale> -<gaussiana> <media>1.5</media> <deviazione>1.5</deviazione> </gaussiana> -<uniforme> <min>1.5</min> <max>1.5</max> </uniforme> -<esponenziale> <media>1.5</media> <negativa>1</negativa> </esponenziale> -<normale> <troncata>1</troncata> </normale> -<lognormale> <variabile>1.5</variabile> <base>5</base> </lognormale> -<gamma> <parametro1>1.5</parametro1> <parametro2>1.5</parametro2> </gamma> -<beta> <variabile>1.5</variabile> </beta> -<erlang>
174 <ordine>1.5</ordine> <media>1.5</media> </erlang> -<weibull> <scala>1.5</scala> <forma>1.5</forma> </weibull> -<poisson> <numero_eventi>5</numero_eventi> <media>1.5</media> </poisson> -<triangolare> <variabile>1.5</variabile> </triangolare> </informazioni_statistiche> </durata> -<costo> <importo>10</importo> <valuta>euro</valuta>
</costo> -<priorita> <livello_priorita>1</livello_priorita> </priorita> -<stabilita> <livello_stabilita>3</livello_stabilita> </stabilita> -<complessita> <livello_complessita>3</livello_complessita> </complessita> </parametri_di_task> -<nuovi_KPI>
<tipo>personale</tipo> </nuovi_KPI> -<parametro_di_gateway> <percentuale>50</percentuale> </parametro_di_gateway> -<validazione_diagramma> <bpmn>1</bpmn> <tool>0</tool> </validazione_diagramma> -<debug_diagramma> <debug>1</debug> </debug_diagramma> -<script_di_simulazione> <linguaggio>c++</linguaggio> </script_di_simulazione> -<statistiche_esportabili> <estensione>xls</estensione> <grafica>1</grafica> </statistiche_esportabili> </parametri_di_simulazione>
175