![Page 1: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/1.jpg)
Integración de las herramientas de análisis MAST en un entorno de desarrollo dirigido por modelos y basado en
Eclipse
Trabajo fin de máster de computación. Melitón Pablo Mangué.
Universidad de Cantabria. Octubre 2013
![Page 2: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/2.jpg)
MDE y Sistemas de tiempo real
• Este trabajo se enmarca en dos campos diferentes
• Aplicación de MDE al desarrollo de sistema de tiempo real
MDESistemas de tiempo
real
![Page 3: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/3.jpg)
Versiones de los modelos
de datos
El entorno MAST
v2.0
Versiones de las
herramientasv1.4
![Page 4: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/4.jpg)
Entorno RT-MDE• Un proceso de desarrollo requiere de un entorno.
RT-MDE que integra modelos, herramientas y mecanismos interacción con el operador.
• La plataforma (Eclipse) y el dominio (STR) y metodología (MAST) son ortogonales.
• Esta implementación se denomina RT-MDE
Entorno RT-MDE
Metodología MAST Plataforma Eclipse
![Page 5: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/5.jpg)
El entorno RT-MDE
![Page 6: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/6.jpg)
Objetivos• Objetivo principal: Integrar MAST en el entorno
RT-MDEo Definir mecanismo de interacción entre el entorno RT-MDE y
herramientas externaso Validar el mecanismo definido para el caso de MASTo Procesar modelos Ecore desde Ada y aplicarlos a MAST 2.0
RT-MDE
MAST 1.4MAST 2.0(EMF-mdl)
MAST Result 2.0(EMF-mdl)
MAST 2.0 EMF mdl
MAST Model PARSER
MAST 2.0 ADA Object
Mast Result 2.0 Ada Object
MAST Resutl Serializer
Mast Resutl 2.0 EMF mdl
Ada Ecore Library
![Page 7: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/7.jpg)
Ecore Models for Ada Aplications (EM4Ada)
Características principales
• Es una librería Ada 2012,• Interfaz para lectura, manipulación y generación
programática de modelos Ecore.• Independiente del metamodelo• Los modelos son manejados en forma de un único fichero
de texto, formulado de acuerdo a la implementación que ofrece EMF del estándar XMI.
![Page 8: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/8.jpg)
Ecore Models for Ada Aplications (EM4Ada)
M_Object
Create_Object(in Class:String):M_Object
Get_Id():String
Get_Attribute(in Name:String):M_Data_Value
Get_Multiple_Attribute(in Name:String):Vector<Type->M_Data_Value>
Get_Referenced_Object(in Name:String, out Is_Containment:Boolean):M_Object
Get_Multiple_Referenced(in Name:String, out Is_Containment:Boolean):Vector<Type->M_Object>
Get_All_References():Vector<Type->M_Object>
Set_Attribute(in Name:String, in Value:M_Data_Value)
Set_Attribute(in Name:String, in Value:String)
Add_Attribute(in Name:String, in Value:M_Data_Value)
Add_Attribute(in Name:String, in Value:String)
Set_Multiple_Attribute(in Name:String, in Value:Vector<Type->M_Data_Value>)
Set_Reference(in Name:String, in Object:M_Object, in Is_Containment:Boolean)
Add_Reference(in Name:String, in Object:M_Object, in Is_Containment:Boolean)
Set_Multiple_Reference(in Name:String, in Object:Vector<Type->M_Data_Value>, in Is_Containment:Boolean)
Print()
...
Resource
Create_Resource():Resource
Load(in Path:String)Get_Root_Objects():Vector<Type->M_Object>
Add_Root_Object(in Object:M_Object, in Pref ix_NS:String, in Class:String)
Save(in Path:String)
Free()
Send(in Host:String, in Port:Natural)
M_Data_Value
Value:String
File_Not_Found_ExceptionParser_Error_Exception
Not_Valid_Data_Exception
pkg EE4Ada
M_ObjectDescribe un objeto del modelo, que representa una instancia de una de las clases definidas en el metamodelo
ResourceRepresenta el recurso físico – fichero XMI – en el que se almacena un modelo de formapersistente
M_Data_ValueDescribe cualquier valor escalar que puede ser asignado como valor a un atributo de cualquier objeto
![Page 9: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/9.jpg)
Detalles técnicos• Lectura eficiente
o Creación de objetos vacíos para luego rellenar los atributos
o Se evita el doble recorrido
• Modelos Ecore-XMIo Objetos: atributos y referencias
(asociación y composición)o Clase de un objetoo El problema de los identificadores
• SAX. Simple API for XMLo Basado en eventos en lugar de
árbol (Start_Document, End_Document, Start_Element, End_Element, Charactet, etc.).
o Rapidez y bajo consumo de memoria.
o Difícil manipulación de los objetos.
N0
N1 N5 N6
N2
N3
N4 N7
Composición: Referencia contenida
Asociación: Referencia no
contenida
![Page 10: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/10.jpg)
Proceso de invocación desde RT-MDE
<<Process>>Integrated
External Gadget
<<task>>... previous steps
<<task>>external gadget
execution
<<task>> proccess results
<task>>next steps ...
• Se entiende por artefacto externo, cualquier elemento software que se ejecuta fuera de la máquina virtual Java del entorno.
• Sólo la segunda etapa se ejecuta fuera del entorno RT-MDE
![Page 11: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/11.jpg)
TCP – Socket Communication
Service
RT-MDEJVM
External Gadget Adapter
XMI Models
RT-MDE Tool
TCP – Socket Communication
Service
Wrapper(deamon)
Gadget*
RT-MDE Node
External Gadget Node
Integración de un artefacto externo a RT-MDE
![Page 12: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/12.jpg)
External Gadget Adapter
Wrapper(deamon)
Gadget
Discovery_model [39100]
[Console Port] Text_Line_Model
[connection OK]
Discovery_MModelConnection_MModel
Config_MModel
Input_MModel
Text_Line_MModel
Problem_MModel
Result_MModel
Status_MModelMetamodelos
Genéricos
Específicos de herramienta
Invocación desde RT-MDE
Config_Model [config_port]
Input_Model [Model_port]
Text_Line_Model [EG_Iput_port]
[39000] Connection_Model
[Status_Port] Status_Model
[Result_Port] Result_Model
[Problem_Port] Problem_Model
![Page 13: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/13.jpg)
Estructura del Wrapper
• Config_Port, • Input_Port, • Result_Port, • Console_Port, • EG_Input_Port, • Problem_Port, • Status_Port,
Wrapper
Discovery_MModel
Identif ier:Identifier
Version:Natural
IP:String
Connection_Port:Port_Entry[*]
...
«enumeration»
Mode_Type
DISCOVERY
EXECUTION
Connetion_MModel
Status:Boolean
Discovery_AgentGadget#Gadgets1..* #Discovery_Agent1 #Connection_Model #Discovery_Model
#Mode
![Page 14: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/14.jpg)
Estructura del GadgetGadget
«enumeration»
Finalization_Status
ABORTED
EXIT_WITH_ERROR
SUCCESSFUL
EXIT_WITH_WARNING
EXIT_WITH_ADVOCACY
Problem_MModel
Description:String
Severity:Severity_Level
Location:String
Resource:String
Type:String
«enumeration»
Severity_Level
ERROR
WARNING
ADVOCACY
Keyboard
Get_Line():String
Config_Agent
Input_Model_Agent
Console_Logger
Keyboard_AgentStatus_MModel
...
Text_Line_MModel
Input_MModel
Result_MModel
Config_MModel #Conf ig_Model
#Error_Model
#Status_Model
#Keyboard_Agent
#Keyboard_Agent #Text_Line_MModel
#Input_Model_Agent
#Text_Line_MModel
#Input_Model
#Keyboard
#Config_Agent
#Exit_Status
#Result_Model
#Console_Logger
#Severity
![Page 15: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/15.jpg)
Adaptación a MAST
MastAnalyzerAda
Mast_Wrapper
Keyboard
Get_Line():String
Console_Logger
Log()
Text_Line_MModel
Discovery_MModel
Input_Model_Agent
Discovery_Agent
Keyboard_AgentReal_Time_Situation_Results
Config_Agent
Mast_Analysis_Config
Connetion_MModel
Status_MModel
Mast_Model
Problem_MModel
#MastAnalyzerAda
#Status_Model
#Discovery_Agent
#Text_Line_MModel
#Discovery_Model
#Keyboard
#Text_Line_MModel
#Connection_MModel
#Console_Logger
#Text_Line_MModel
#Input_Model
#Input_Model_Agent
#Config_Agent
#Result_Model
#Problem_MModel
#Keyboard_Agent
#Config_Model
![Page 16: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/16.jpg)
Modelos Específicos de MAST
Mast_Model
Name:Identif ier
Date:Date_Time
System_PiP_Behavior:Overhead_Type=Strict
Event_Queueing_Policy:Queueing_Policy_Type=FIFO
Element_List:Model_Element[1..*]
Results:Real_Time_Situation_Results
Mast_Analysis_Config
Calculate_Ceilings:Boolean
Is_Verbose:Boolean
Is_Local_EDF:Boolean
Stop_Factor:Float
Calculate_Slack:Boolean
Operations_To_Calculate_Slack:Identif ier
...
Real_Time_Situation_Results
Model_Name:Identif ier
Model_Date:Date_Time
Model_File:Pathname
Generator_Tool:Text
Generator_Profile:Text
Generation_Date:Date_Time
Slack:Extended_Percentage
Element_List:Result_Element
«enumeration»
Tool
OFFSET_BASED
OFFSET_BASED_OPTIMIZED
HOLISTIC
CLASSIC_RM
EDF_WITHIN_PRIORITIES
EDF_MONOPROCESSOR
VARYING_PRIORITIES
PARSE
«enumeration»
Technique_Assigment_Params
NONE
MONOPROCESSOR
HOSPA
PD
NPD
ANNEALING
MastAnalyzerAda
#Results
#Input_Model #Result_Model
#Config_Model
#Params_Assignment
#Analysis_Tool
![Page 17: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/17.jpg)
Secuencia de lanzamiento<task> MastAnalyzerAdaExecution
:MastAnalyzerAda
:Mast_Wrapper
:Input_Model_Agent
:Config_Agent
:Mast_Model
:Discovery_Agent
Discovery_MModel
Create
Create
Create
Configuration_Model
Input_Model
Result_MModel
Discovery_Model
Create Mast_Analysis_Config
Status_MModel
Input_Model
Configuration_Model
Mast_Analysis()
Connection_Model
get_Results
Initialize
Real_Time_Situation_Results
![Page 18: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/18.jpg)
Análisis de un modelo MAST 2.0
Convert to Mast 1.4 Model
Convert to Resutl 2.0
Load Mast 2.0 Model
Get Mast 1.4 resutls
System Analysis
Mast_Model
Create_Mast_Model():Mast_Model
Initialize()
Parse(in Filename:Pathname)
To_Mast_1_4():mast-1-4::mast_analysis::System
Mast_Analysis(inout Config:Mast_Analysis_Config)
Mast_Analysis(in Model_Path:Pathname, in Config_Path:Pathname)
Model
Inicialize()Parse(in Filename:Pathname)
Transmits(in Host:String, in Port:Port_Entry)
Save(in Filename:Pathname)
Print()
Real_Time_Situation_Results
Initialize()
Save(in Filename:Pathname)
#Results
El método Mast_Analysis(InOut Config: Mast_Analysis_Config) de la clase Mast_Model permite llevar a cabo el análisis de un MAST 2.0. Los resultados del análisis se guardan en el campo Results.
![Page 19: Trabajo fin de máster de computación. Melitón Pablo Mangué](https://reader036.vdocuments.pub/reader036/viewer/2022062310/56816490550346895dd66168/html5/thumbnails/19.jpg)
Conclusiones y trabajo futuroConclusiones:La principal aportación de este trabajo es la integración de las herramientas MAST en su versión 1.4 en el entorno RT-MDE, es decir, en un entorno integrado de desarrollo plenamente dirigido por modelos y basado en Eclipse.• Se ha diseñado un mecanismo para la interacción entre el entorno RT-MDE y
cualquier herramienta externa,• Se ha diseñado una librería Ada que permite procesar modelos XMI conformes
a metamodelos Ecore.
Trabajo futuro:• Desarrollo de un módulo Ada que permita procesar modelos XMI conformes a
metamodelos Ecore sin requerir del usuario un conocimiento previo del metamodelo asociado.
• Extender la funcionalidad de la librería EM4Ada, haciéndola configurable, de maneraque se pueda trabajar con identificadores explícitos
• Desarrollar una tecnología para la configuración e instanciación automática de aplicaciones Ada orientadas a objeto en base a modelos EMF/Ecore