3.3.3.3 Il formalismo SAN, il tool Mobius e alcuni esempi di modelli sviluppati Per definire e valutare i modelli proposti, è stato utilizzato il flessibile e potente ambiente di modellazione Möbius [DCCDDDSW02(5)] implementato dall'omonimo tool [CGK09(57)] (i cui componenti principali sono mostrati in Figura xx1), che supporta una molteplicità di formalismi di modellazione e di risolutori e le loro interazioni. Il modello complessivo dell'ambiente Möbius è ottenuto mediante uno o più sottomodelli composti gerarchicamente (come mostrato in Figure xx1) al livello di Abstract Functional Interface (AFI) [DCCDDDSW02(5),DKSC02(59)] utilizzando operatori, come Join e Rep [SM91(33)], basati sulla condivisione di variabili di stato (SV) o azioni. SV e azioni sono primitive che generalizzano a livello di AFI i posti e le transizioni delle reti di Petri. Ogni sottomodello può essere atomico o a sua volta composto. Sul modello risultante vengono definite prima le variabili di performance (che rappresentano le misure di interesse), basate su strutture di guadagno, ed infine gli studi da valutare in base alla variabilità dei parametri del modello. Tutti i formalismi e i risolutori supportati da Möbius sono basati sul linguaggio di programmazione orientato ad oggetti C++. Pertanto, lo strumento supporta l'utilizzo del codice C++ nelle primitive usate per i modelli, in particolare strutture dati C++ esterne staticamente definite al momento della compilazione ed il collegamento di librerie C++ esterne, come mostrato in Figura xxx per le librerie di risoluzione delle equazioni di flusso di potenza e del problema di ottimizzazione per trovare la migliore configurazione della Smart Grid a seguito di un cambiamento di stato. Tra i formalismi per la definizione dei modelli atomici, è stato scelto quello delle Stochastic Activity Network (SAN) [SM01(53)], una estensione stocastica delle reti di Petri basata sulle seguenti primitive grafiche: posti semplici o estesi (rappresentati da cerchi blu e arancioni, rispettivamente), attività temporizzate o istantanee (barre verticali vuote o sottili), porte di input e di output (triangoli con la punta a sinistra o a destra). In particolare, un posto semplice rappresenta il tipo "short" del linguaggio C++, mentre un posto esteso representa tipi di dati di base primitivi (come "short", "float", "double") e tipi "struct" o "array" di tipi primitivi o di posti estesi. Il tempo al completamento di una attività è una variabile casuale indipendente che può avere una qualunque delle numerose distribuzioni supportate da Möbius. Ad ogni attività può essere associato uno o più case (piccoli cerchietti alla destra dell'attività) che rappresentano l'incertezza probabilistica al completamento dell'attività. Infine i gate permettono di specificare condizioni di abilitazione e regole di completamento delle attività a cui sono connessi. Il modello composto è ottenuto seguendo l'approccio modulare e composizionale DARep [CDM17(13),CDM21] che estende Möbius con un nuovo operatore D (basato su script Perl che modificano i file xml generati da Möbius) per la replicazione indicizzata di uno o più modelli atomici "template". Un template rappresenta un componente generico del sistema modellato in cui possono essere definite variabili di stato (SV) "dependency-aware", cioè SV che sono condivise solo tra alcune istanze del template in base ad una specifica topologia associata a ciascuna di esse (a differenza di quelle "common" o "local" che sono condivise tra tutte le istanze o solo locali a ciascuna di esse, rispettivamente). Figura 3.13 è il template di SAN atomica MV_DS_SAN che rappresenta un generico generatore distribuito (DG) ed il suo ambiente esterno. In particolare esso modella la generazione di potenza attiva e reattiva (P e Q, tramite le porte WeatherChange e l'attività WPChange), la previsione di potenza generata e l'errore di previsione (tramite le porte isWPset e ForecastError, e le attività WP_NextSchedT and WPForecastChange), l'occorrenza dei fallimenti e le conseguenti azioni di ripristino (nella parte in basso ed in alto a destra di Figura 3.13). Il posto UpdateEState è di tipo "dependency-aware" essendo condiviso tra ogni singola istanza di MV_DS_SAN e il sottomodello ESTATE_SAN. Figura 6.3 è il template di SAN atomica (con una sola istanza) ESTATE_SAN che rappresenta i cambiamenti dello stato elettrico dell'infrastruttura EI (mediante la risoluzione delle equazioni di flusso di potenza) e la politica di controllo della tensione elettrica (tramite risoluzione di un problema di ottimizzazione) come descritta in Figura 2, condividendo posti (cioè SV) con tutte le altre istanze di template SAN. In dettaglio, la stima del nuovo stato è attivata dalla porta di input inUpdate, che abilita l'attività update non appena UpdateEState==1, ed è effettuata dalla porta di output NewES, che in base ai risultati delle equazioni di flusso aggiorna i valori dei posti P, Q, V, Delta, F (flusso di potenza sulle linee) e I (flusso di corrente sulle linee) che rappresentano le grandezze elettriche di EI e richiede un'azione di controllo aggiornando il valore del posto VOLT_CTRL. I parametri elettrici sono memorizzati in place di tipo "dependency-aware" e sono condivisi con istanze di altri template. Altri place di tipo "dependency-aware" sono condivisi con altre istanze di SAN template, come ad esempio DG_CTRL_P, che viene usato dal controllo per identificare un cambiamento di potenza generata o il fallimento (DG_CTRL_P==0) in una istanza di MV_DS_SAN. Le azioni di controllo, eseguite dalla porta di output VoltageCTRL, sono attivate quando il place VOLT_CTRL==1. Questo accade ad intervalli di tempo regolari, quando la porta di output PromoteVoltageCTRL aggiorna il valore di VOLT_CTRL, o quando avviene un cambiamento di stato in cui ci sono bus con il voltaggio fuori dai limiti. Infine, quando a seguito dell'aggiornamento di uno stato viene messo un token nel posto Blackout, la porta di output TurnOff si occupa delle situazioni di blackout aggiornando opportunamente i posti (ad esempio, ponendo a zero i valori elettrici di potenza e tensione di tutti i carichi). Riferimenti: [5] D. D. Deavours, G. Clark, T. Courtney, D. Daly, S. Derisavi, J. M. Doyle, W. H. Sanders, and P. G. Webster, “The Möbius framework and its implementation,” IEEE Trans. on Softw. Eng., vol. 28, no. 10, pp. 956–969, 2002. [13] S. Chiaradonna, F. Di Giandomenico, and G. Masetti, “A stochastic modeling approach for an efficient dependability evaluation of large systems with non-anonymous interconnected components,” in The 28th Int. Symp. on Softw. Reliab. Eng.-IEEE, Toulouse, France, Oct. 2017, pp. 46–55. [33] W. H. Sanders and J. F. Meyer, “A unified approach for specifying measures of performance, dependability and performability,” in Dependable Computing for Critical Applications, Vol. 4 of Dependable Computing and Fault-Tolerant Systems, A. Avizienis and J. Laprie, Eds. Springer Verlag, 1991, pp. 215–237. [53] W. H. Sanders and J. F. Meyer, “Stochastic activity networks: Formal definitions and concepts,” in Lectures on formal methods and performance analysis: first EEF/Euro summer school on trends in computer science, Berg en Dal, The Netherlands, July 3-7, 2000, Revised Lectures, ser. LNCS, E. Brinksma, H. Hermanns, and J. P. Katoen, Eds. Springer-Verlag, 2001, vol. 2090, pp. 315–343. [57] T. Courtney, S. Gaonkar, K. Keefe, E. W. D. Rozier, and W. H. Sanders, “Möbius 2.3: An extensible tool for dependability, security, and performance evaluation of large and complex system models,” in 39th Annu. IEEE/IFIP Int. Conf. on Dependable Syst. and Netw. (DSN 2009), Estoril, Portugal, June 2009, pp. 353–358. [59] S. Derisavi, P. Kemper, W. H. Sanders, and T. Courtney, “The m ̈obius state-level abstract functional interface,” in Computer Performance Evaluation: Modelling Techniques and Tools, T. Field, P. G. Harrison, J. Bradley, and U. Harder, Eds. Berlin, Heidelberg: Springer Berlin Heidelberg, 2002, pp. 31–50. [CDM21] S. Chiaradonna, F. Di Giandomenico, G. Masetti, “On identity-aware replication in stochastic modeling for simulation-based dependability analysis of large interconnected systems”. Perform. Evaluation 147: 102192 (2021).