5.4 CONJUNTO DE MARCAS
5.5.1 Mapeamento Estrutural
O principal objetivo do mapeamento estrutural da AST ´e extrair
aspectos arquiteturais do modelo funcional Simulink para gerar um mo- delo de arquitetura de software preliminar em AADL. O mapeamento
estrutural da AST possui as seguintes regras de transforma¸c˜ao:
• Simple-to-Process/Thread. Um bloco Subsystem do tipo
Simple que recebeu a marca process/thread ´e mapeado como um componente AADL do tipo Process que encapsula uma Thread
que chama um subprogram - trˆes componentes AADL s˜ao gerados
neste caso.
• Simple-to-Thread. Um bloco Subsystem do tipo Simple que
recebeu a marca thread ´e mapeado como uma Thread que chama
um subprogram - dois componentes AADL s˜ao gerados neste caso.
• Simple-to-Device. Um bloco Subsystem do tipo Simple com a
marca Device ´e mapeado como um componente AADL do tipo
Device.
• Composite-to-System. Um bloco Subsystem do tipo Compo- site que recebeu a marca system ´e mapeado como um componente AADL do tipo System.
• Composite-to-Process. Um bloco Subsystem do tipo Compo- site que recebeu a marca process ´e mapeado como um componente AADL do tipo Process.
• Composite-to-Device. Um bloco Subsystem do tipo Composite
com a marca Device ´e mapeado como um componente AADL do
tipo Device.
• MATLABFunction-to-Process/Thread. Um bloco Subsys- tem do tipo MatlabFunction que recebeu a marca process/thread ´e mapeado como um componente AADL do tipo Process que encap-
sula uma Thread que chama um subprogram - trˆes componentes
AADL s˜ao gerados neste caso.
• MATLABFunction-to-Thread. Um bloco Subsystem do tipo MatlabFunction que recebeu a marca thread ´e mapeado como uma Thread que chama um subprogram - dois componentes AADL s˜ao gerados neste caso.
As portas dos tipos signal name, port number e port number and signal name de um bloco Subsystem do modelo funcional Simulink
s˜ao mapeadas respectivamente como portas do tipo event port, data
port e event data port dos respectivos componentes no modelo AADL.
Os tipos de dados suportados pelas portas do bloco Subsystem s˜ao
mapeados como sendo o tipo de dado suportado pelas respectivas portas do tipo data port e event data port do componente no modelo AADL. O mapeamento estrutural gera no modelo AADL um pacote chamado dados com os tipos de dados que trafegam pelas portas dos
blocos Subsystem no modelo funcional Simulink, e tamb´em um pacote
chamado subprograms com especifica¸c˜oes b´asicas dos subprogramas
chamados pelas threads no modelo AADL. As linhas que conectam
as portas dos blocos Subsystem no modelo funcional Simulink s˜ao
mapeadas como conex˜oes entre seus respectivos componentes no modelo
AADL.
Visando um melhor entendimento do papel das marcas e da
execu¸c˜ao do mapeamento estrutural da AST, observe o exemplo gr´afico
apresentado na Figura 30, a qual apresenta o primeiro n´ıvel hier´arquico
do modelo funcional Simulink de um sistema embarcado que realiza
manobras de estacionamento de forma autˆonoma (SIAMES). Ele ´e
respons´avel por controlar a velocidade do ve´ıculo, por encontrar uma
vaga de estacionamento compat´ıvel com o ve´ıculo e por controlar a manobra de estacionamento propriamente dita.
O primeiro n´ıvel hier´arquico do modelo funcional Simulink ´e o
ponto de partida do processo de transforma¸c˜ao de modelos da AST.
Neste n´ıvel o modelo ´e composto por quatro blocos subsystem, um que
representa o sistema propriamente dito (SystemParking), que ´e do tipo
Composite, outro que representa a intera¸c˜ao do sistema com o mundo
exterior (UserInterface), que ´e do tipo Simple. Os blocos SensorSlot
e SensorSpeed s˜ao blocos subsystem do tipo Simple e representam
dois sensores que enviam sinais para o sistema. Os blocos Subsystem
foram marcados manualmente utilizando o recurso de anota¸c˜ao de
blocos da pr´opria ferramenta Simulink, e principalmente, levando em
considera¸c˜ao a posi¸c˜ao hier´arquica de cada bloco Subsystem dentro do modelo funcional Simulink. As marcas aparecem na parte inferior do blocos.
Figura 30 – Modelo Funcional Simulink de N´ıvel 1- SIAMES
O modelo AADL correspondente de n´ıvel 1 gerado pelo ma-
peamento estrutural da AST ´e mostrado na Figura 31. Note que
na linha 1 este modelo cont´em um componente system ra´ız chamado
s siames.impl, que possui como subcomponentes um componente sys- tem chamado s systemparking e outros trˆes componentes devices iden- tificados como d userinterface, d sensorspeed e d sensorslot (linhas 3
a 6). Todos os componentes foram mapeados levando em considera¸c˜ao
1 SYSTEM IMPLEMENTATION s_siames.impl 2 subcomponents
3 d_userinterface: device d_userinterface.impl; 4 s_systemparking: system s_systemparking.impl; 5 d_sensorspeed: device d_sensorspeed.impl; 6 d_ssensorslot: device d_sensorslot.impl; 7 connections
8 port userinterface.on -> systemparking.on; 9 port userinterface.off -> systemparking.off;
10 port userinterface.searchslot -> systemparking.searchslot; 11 port userinterface.park -> systemparking.park; 12 port userinterface.nextslot -> systemparking.nextslot; 13 port systemparking.highspeed -> userinterface.highspeed; 14 port systemparking.slotfound -> userinterface.slotfound; 15 port systemparking.running -> userinterface.running; 16 port systemparking.finished -> userinterface.finished; 17 port sensorspeed.sensorspeed ->systemparking.sensorspeed; 18 port sensorslot.sensorslot -> systemparking.sensorslot; 19 END siames.impl;
Figura 31 – Modelo AADL de N´ıvel 1 - SIAMES)
funcional Simulink foram mapeadas automaticamente como portas e
conex˜oes no modelo AADL (linhas 7 a 18).
Outra perspectiva do mapeamento estrutural entre os modelos
Simulink e AADL ´e apresentado na Figura 32. No lado esquerdo
aparece um trecho do arquivo .mdl do modelo funcional Simulink do sistema SIAMES e do lado direito aparece o trecho correspondente
do arquivo .aadl gerado ap´os a execu¸c˜ao do mapeamento estrutural.
Os trechos destacados em vermelho mostram que o bloco Subsystem chamado SearchingSlot que recebeu a marca Process gerou no modelo AADL um componente de software do tipo Process chamado Sear- chingSlot. Os trechos em azul mostram que os blocos do tipo Inport e Outport que pertencem ao bloco Subsystem SearchingSlot no arquivo .mdl foram mapeado no modelo AADL como portas de entrada e sa´ıda do componente Process SearchingSlot no modelo AADL. Os trechos em verde mostram que as linhas do bloco Subsystem SerachingSlot
foram mapeadas como conex˜oes do componente Process SearchingSlot
no modelo AADL.