Trabajo fin de máster de computación. Melitón Pablo Mangué.
description
Transcript of Trabajo fin de máster de computación. Melitón Pablo Mangué.
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
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
Versiones de los modelos
de datos
El entorno MAST
v2.0
Versiones de las
herramientasv1.4
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
El entorno RT-MDE
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
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.
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
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
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
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
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
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
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
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
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
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
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.
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