• Nenhum resultado encontrado

RelatóriodeExecução-Labs1a7

N/A
N/A
Protected

Academic year: 2021

Share "RelatóriodeExecução-Labs1a7"

Copied!
56
0
0

Texto

(1)

Instituto Tecnológico de Aeronáutica

Divisão de Engenharia da Computação

CE-235

Sistemas Embarcados de Tempo Real

Professor Doutor Adilson Marques da Cunha

Listex 3

Relatório de execução de atividades: Labs 1 a 7

Roberto Pepato Mellado

(2)

1. Introdução

1.1. Objetivo

O conjunto de exercícios de lab proposto para execução dos alunos da disciplina CE-235 Sistemas Embarcados de Tempo Real do ITA (Instituto Tecnológico de Aeronáutica) tem como principal objetivo propiciar aos alunos:

 Amadurecimento no entendimento dos conceitos básicos nas ferramentas Rational Rose Real Time RRRT e Rational Quality Architect RQA, apresentados inicialmente nos exercícios de aquecimento (warmups);

 Solidificar o conhecimento sobre o ferramental que será aplicado na construção do protótipo de projeto ITA-ECO-SAT 2.

1.2. Finalidade

Os exercícios propostos para realização têm como objetivo propiciar aos alunos da disciplina CE-235 Sistemas Embarcados de Tempo Real a solidificação dos conceitos apresentados inicialmente nos exercícios de aquecimento (warmups) além de apresentar novos conceitos das ferramentas da Rational utilizadas para desenvolvimento de software embarcado em abordagem MDA/MDD. A proposta do exercício é fundamentada na execução de 7 labs cumulativos, para que o aluno possa entender, aprender e analisar as diferentes possibilidades oferecidas pelo ferramental, bem como analisar quais das soluções apresentadas melhor se encaixam na construção de sua USC e posterior integração em CSC, ICSC e SdS. A seção 2 deste documento apresenta uma síntese dos principais pontos considerados na realização de cada um dos labs, bem como screenchots das principais etapas de seu desenvolvimento.

2. Desenvolvimento dos Exercícios

2.1. Introdução

O contexto dos exercícios apresentados nos labs de 1 a 7 está relacionado com a emulação de uma aplicação de um sistema de tingimento. Os passos envolvidos na execução de cada um dos exercícios para alcance dos objetivos do sistema de tingimento estão descritos nas seções abaixo.

2.2. Lab 1: Controller / Tester

Na realização deste exercício, o aluno irá criar uma versão simplificada do sistema de tingimento através da utilização de um modelo previamente fornecido pelos professores da disciplina. Neste modelo, existem algumas cápsulas (Controller e Tester) que serão utilizadas para desenvolvimento do exercício. Esse exercício envolve a criação de cápsulas com estrutura simples e sem comportamento.

(3)

Os principais objetivos relacionados à execução deste Lab são:  Uso de funções básicas da ferramenta

 Construção de um modelo simples a partir de elementos pré-existentes  Compilação, execução, depuração e testes do modelo

 Geração de diagrama de sequência a partir de execução do modelo  Criação de um diagrama de classes para o modelo

Alguns conceitos foram revisitados nesse exercício como, por exemplo, cápsulas, que são objetos autônomos que encapsulam suas propriedades, diagramas de estrutura, diagramas de estado, portas e protocolos. A execução deste exercício partiu de um modelo pré-existente, fornecido previamente pelos professores da disciplina CE-235 Sistemas Embarcados de Tempo Real, ministrado no segundo semestre de 2010 no ITA. A estrutura lógica dos elementos existentes nesse modelo pré-existente pode ser visualizada abaixo:

Figura 1 – Visão Lógica do Modelo Pré-Existente

Para o desenvolvimento do exercício, foi criada uma nova cápsula, denominada

(4)

instâncias das cápsulas controller e tester pré-existentes. A cápsula tester tem como objetivo testar o correto funcionamento da cápsula controller e será descartada futuramente, com o desenvolvimento dos exercícios complementares desta lista de exercícios. A cápsula DyeingSystem, juntamente com seu diagrama de estrutura, é apresentada na figura abaixo:

Figura 2 – Cápsula DyeingSystem e seu diagrama de estrutura

A próxima etapa do exercício envolve a execução do modelo e geração de um diagrama de sequência a partir do modelo em execução. Antes da realização desta etapa, foi realizada uma análise da cápsula pré-existente controller e de seu diagrama de estados, responsável pelo comportamento apresentado pelo sistema:

(5)

A sequência de ações realizada pela cápsula controller através de seu diagrama de estados é descrita a seguir :

1. A transição inicial é disparada e o sistema muda para o estado empty.

2. Ao recebimento de um sinal start através do protocolo OperatorDialog, a transição start é disparada. Durante a transição, o sinal turnOn do protocolo

DeviceControl é enviado através da porta fill. Esta transição, move a aplicação

para o estado filling.

3. A transição level é disparada quando o sinal value do protocolo MonitoredValue é recebido através da porta level. Esta transição move o estado do diagrama de estados para o Choice Point isFull.

4. O Choice Point isFull executa uma condicional para verificar se o tanque está cheio. Caso a condicional retorne falso, o sistema executa a transição False e retorna ao estado filling. Caso a condicional retorne verdadeiro, o sistema executa a transição True. A execução da transição True envia o sinal turnOff do protocolo DeviceControl através da porta fill. Esta mesma transição move o sistema para o estado dyeing e dispara um serviço de timer, colocando o sistema em espera por 20 segundos.

5. Assim que o serviço de timer disparar sua interrupção, ou seja, assim que os 20 segundos se esgotarem, a transição timeout será executada. Nesta transição, é enviado o sinal turnOn do protocolo DeviceControl através da porta drain. O sistema tem seu estado alterado para drainning.

6. A transição level é disparada quando o sinal value do protocolo

MonitoredValue é recebido através da porta level. Esta transição move o estado

do diagrama de estados para o Choice Point isEmpty.

7. O Choice Point isEmpty executa uma condicional para verificar se o tanque está vazio. Caso a condicional retorne falso, o sistema executa a transição False e retorna ao estado drainning. Caso a condicional retorne verdadeiro, o sistema executa a transição True. A execução da transição True envia o sinal turnOff do protocolo DeviceControl através da porta drain. Esta mesma transição envia o sinal done do protocolo OperatorDialog através da porta operatorDialog e move o sistema novamente para o estado empty.

8. O sistema aguar o recebimento de um novo sinal start para iniciar o processo novamente.

A próxima parte do exercício envolve a execução do sistema, acompanhamento das mensagens de trace e geração de um diagrama de sequência do processo capturado através do trace da aplicação. Para que esse procedimento possa ser realizado, devemos criar um componente, indicar qual é a top capsule do componente e qual a configuração alvo para geração de código e compilação. Além disso, é necessário criarmos um compilador para execução do sistema e indicarmos o componente e compilador como ativos:

(6)

Figura 4 – Configuração de TopCapsule para componente DyeingSystem

(7)

Após os passos de configuração descritos acima, foi possível compilar e executar a aplicação, obtendo o trace da mesma. Para isso, foi necessário incluir uma ponta de prova (probe) sobre a porta operatorDialog da cápsula controller, conforme diagrama abaixo:

Figura 6 – Inclusão de Probe no diagrama de estrutura da cápsula DyeingSystem Para inicialização do trace, o procedimento necessário foi clicar nas duas cápsulas que fazem parte do diagrama de estrutura da cápsula DyeingSystem e após isso, clicar com o botão direito em alguma área vazia do diagrama. Essa ação nos abre um menu de contexto com a opção OpenTrace:

(8)

A partir deste momento, basta inicializar a aplicação e enviar o sinal start através da ponta de prova para que o trace seja capturado:

Figura 8 – Resultado da operação de Trace

Com o trace da aplicação capturado, a criação de um diagrama de sequência é tarefa trivial. Basta clicar com o botão direito sobre o resultado do trace habilitar a opção

Open Sequence Diagram:

(9)
(10)

Este exercício menciona como objetivo a criação de um diagrama de classes. Abaixo são apresentados os diagramas de classe e diagrama de componentes do sistema:

Figura 11 – Diagrama de classes da aplicação

(11)

2.3. Lab 2: Valve, Start Low-Temp System

Este exercício tem sua construção baseada no resultado do exercício 1 previamente aplicado. Essa é uma característica da sequência de Labs realizada neste relatório, onde cada etapa realizada é pré-requisito da próxima etapa, tornando a aplicação e desenvolvimento dos exercícios de Labs uma atividade cumulativa. A execução do exercício de Lab 2 envolve a criação de cápsulas com estrutura e comportamento simples, bem como a construção de um novo protocolo de comunicação.

Os principais objetivos relacionados à execução deste Lab são:

 Criação de uma cápsula com estrutura e comportamento simples

 Início de construção de um modelo simples (primeira etapa do estudo de caso que será desenvolvido de forma cumulativa, nos exercícios subsequentes)

 Criação de um protocolo simples

No primeiro passo de execução desse exercício, foi removida a cápsula tester do diagrama de estrutura da cápsula DyeingSystem. A cápsula tester não será mais utilizada, e será substituída pela implementação da cápsula Valve que será definida posteriormente na execução do exercício. Para execução do Lab 2, criamos um novo protocolo denominado Flow. Esse protocolo possui o sinal de saída amount definido com o tipo de dados int:

Figura 13 – Protocolo de comunicação Flow

Na próxima etapa do exercício criamos a cápsula Valve. Essa cápsula define um atributo do tipo int, nomeado flowAmount que possui o valor inicial definido como 2. Na cápsula Valve, foram definidas as portas control, que se utiliza do protocolo

DeviceControl e é definida como EndPort conjugada, e flow que se utiliza do protocolo Flow e é definida como EndPort. A definição da cápsula, bem como seu diagrama de

estrutura, foi definida conforme abaixo:

(12)

Figura 15 – Diagrama de Estrutura da cápsula Valve

A seguir foi definido o diagrama de estados para a cápsula Valve. As transições desse diagrama de estados possuem como eventos de triggers sinais trocados através da porta

control. Ambas as ações contém instruções customizadas para execução. O

detalhamento dessas instruções é demonstrado abaixo:

(13)

Figura 17 – Instruções customizadas na execução da transição turnOn

Figura 18 – Instruções customizadas na execução da transição turnOff

A configuração demonstrada nas figuras 16, 17 e 18 define que, sempre que a transição

turnOn for disparada, o sinal isOn será enviado através da porta control e o sinal amount será disparado através da porta flow, informando o valor constante do atributo flowAmount. Na execução da transição turnOff, o sinal isOff será enviado através da

porta control.

Para verificação da execução do diagrama de estados e trace de execução da cápsula

(14)

Figura 19 – Configuração do componente DyeingSystem contendo a cápsula Valve como TopCapsule

Para que fosse possível realizar o teste da aplicação, foram incluídas duas pontas de prova (probes) sobre as portas control e flow do digrama de estrutura da cápsula Valve:

Figura 20 – Diagrama de estrutura da cápsula Valve contendo probes nas portas control e

flow

A seguir, definimos as mensagens que serão enviadas através da porta control. Isso foi realizado através da opção Open Inject acessível através do menu de contexto da probe aplicada sobre a porta control:

(15)

Figura 21 – Mensagens definidas para a probe aplicada sobre a porta control

A partir dessa configuração, foi possível executar a aplicação, capturar o trace e gerar um diagrama de sequência que apresenta os estados da aplicação em execução. Esse procedimento é útil para que possamos realizar uma depuração visual do modelo e garantir que o comportamento em execução é aquele que foi configurado na ferramenta:

Figura 22 – Diagrama de sequencia gerado a partir do trace capturado na execução do aplicativo.

A última etapa do Lab 2 envolve a criação de CapsuleRoles na cápsula DyeingSystem. Essas são instâncias da cápsula Valve, uma delas fillValve, representa uma válvula de entrada de líquido de tingimento no tanque e a outra, drainValve, representa uma válvula de drenagem do líquido do tanque. Foram realizadas as associações das portas das cápsulas do

(16)

Figura 23 – Diagrama de estrutura da cápsula DyeingSystem.

A compilação do projeto com a estrutura descrita previamente finaliza o Lab 2. O sistema cuja modelagem foi iniciada nesse lab, terá sua conclusão realizada nos exercícios seguintes.

2.4. Lab 3: Complete Low-Temp System

Este exercício tem como principal objetivo, a conclusão do modelo iniciado no Lab 2. Para conclusão deste exercício, foi integrado um timer na estrutura da cápsula Valve , que periodicamente envia mensagens indicando a quantidade de líquido na válvula, através da porta Flow. Este exercício exige também, a criação de um protocolo denominado AcquiredValue e duas novas cápsulas: Level e Dye.

Os principais objetivos relacionados à execução deste Lab são:

 Completar a construção de um modelo complexo (iniciado no Lab 2)  Fazer o uso de timer através da biblioteca de serviços de Timing

A primeira atividade deste Lab envolveu a modificação da cápsula Valve para enviar mensagens indicando a quantidade de líquido de tingimento periodicamente através da porta flow. Abaixo são apresentadas as modificações na cápsula Valve:

(17)

Figura 24 – Cápsula Valve modificada com serviços de Timing

Figura 25 – Estrutura da Cápsula Valve modificada

A próxima atividade deste Lab envolve a modificação do diagrama de estados da cápsula Valve. Uma transição de timeout foi adicionada ao modelo e as transições pré-existentes foram alteradas para fazer uso dos serviços de timer incluídos nesta cápsula:

(18)

Figura 27 – Especificação de triggers da transição turnOn

Figura 28 – Especificação de actions da transição turnOn

(19)

Figura 30 – Especificação de actions da transição timeout

Figura 31 – Especificação de triggers da transição turnOff

(20)

A seguir, foi definido o protocolo AcquiredValue. Esse protocolo é composto de dois sinais: um de input denominado value e de tipo de dados inteiro e um de output, denominado request. A estrutura do novo protocolo é apresentada abaixo:

Figura 33 – Estrutura do protocolo AcquiredValue

A próxima etapa do exercício definiu uma nova cápsula: Level. A estrutura desta cápsula criada é apresenta nas figuras que se seguem:

Figura 34 – Definição da cápsula Level.

Figura 35 – Diagrama de Estrutura da cápsula Level.

A seguir, foi definido o comportamento da cápsula Level através do seu diagrama de estados:

(21)

Figura 36 – Diagrama de estados da cápsula Level.

O estado idle possui um trecho de código que é executado sempre que o sistema entra nesse estado:

Figura 37 – EntryAction do estado idle.

A seguir, foram configurados as triggers e actions para as demais transições que compõem o diagrama de estados da cápsula Level:

(22)

Figura 38 – Trigger da transição sample.

Figura 39 – Action da transição sample.

(23)

Figura 41 – Action da transição report.

A action da transição report utiliza um conceito ainda não introduzido, *rtdata. Através deste elemento, é possível capturar o valor recebido através da mensagem de disparou o

trigger da transição, e enviá-lo através de uma porta, conforme apresentado na figura 41.

Continuando o Lab 2, foi criada a cápsula Dye, que é uma representação computacional do tanque de tingimento que é utilizado no sistema objeto de execução dos exercícios

constantes desse relatório:

(24)

.

Figura 43 – Diagrama de estrutura da cápsula Dye

O comportamento da cápsula Dye foi configurado conforme apresentado na sequência de imagens a seguir:

(25)

Figura 45 – Trigger da transição flowIn

(26)

Figura 47 – Trigger da transição flowOut

(27)

Figura 49 – Trigger da transição level

Figura 50 – Action da transição level

Com as cápsulas Valve, Level e Dye previamente configuradas, realizamos uma alteração no diagrama estrutural da cápsula DyeingSystem, conectando os elementos que o compõem para que os testes de execução pudessem ser realizados:

(28)

Figura 51 – Diagrama de estrutura da cápsula DyeingSystem

Após realização de todas as configurações previamente descritas, foi executado o teste de 30 segundos. Nesse teste, foi observado o comportamento da aplicação onde o nível de líquido no tanque cresceu de 0 a 10 em 5 segundos, permaneceu constante no valor 10 por 20 segundos e decresceu de 10 a 0 em mais 5 segundos, totalizando um teste de 30 segundos:

Figura 52 – Trace da execução do teste de 30 segundos

A comprovação da correta execução do teste de 30 segundos através de análise do trace gerado pela aplicação conclui o Lab3.

(29)

2.5. Lab 4: Master and Tank Containers

O Lab 4 foi desenvolvido para reorganizarmos o modelo do sistema de tingimento, realizado nos exercícios anteriores. Para conclusão desse exercício, foram apresentados dois importantes conceitos: aggregation, que permite combinarmos cápsulas do sistema para obtermos uma interface de comunicação mais simples (diferentemente do conceito de agregação da UML) e replication, que nos permite trabalhar com mais de uma instância e relações de cardinalidade entre as cápsulas.

Os principais objetivos relacionados à execução deste Lab são:

 Criação de hierarquias de estruturas (cápsulas que contém outras cápsulas) no modelo existente.

 Aplicação da técnica de agregação.

 Aplicação de replicação (cardinalidade) entre cápsulas e portas.

 Compilação, execução e depuração de um modelo estruturalmente complexo. A primeira parte do exercício envolve a agregação das capsule roles fillValve, drainValve,

dye e LevelSensor, contidas na cápsula DyeingSystem, em uma nova cápsula, denominada Tank:

Figura 53 – Diagrama de estrutura da cápsula Tank, gerada a partir da agregação de outros elementos

O mesmo procedimento de agregação foi utilizado para agregação da capsule role fillValve,

(30)

Figura 54 – Diagrama de estrutura da cápsula Master, gerada a partir da agregação da

capsule role container

A criação das cápsulas acima através do conceito de agregação introduziu um novo conceito: relay ports. Esse tipo de porta permite a comunicação de capsule roles com cápsulas externas aquelas onde as capsule roles estão contidas. As portas fill, drain, level e

operatorDialog apresentadas nas figuras 53 e 54 ilustram esse conceito.

Após a agregação das cápsulas pré-existentes nas novas cápsulas Master e Tank são ilustradas no diagrama abaixo, que reflete o diagrama de estrutura modificado para a cápsula DyeingSystem:

(31)

Após as alterações no modelo, foi realizado novamente o teste de 30 segundos, para observarmos que as alterações propostas não modificaram o comportamento planejado para o sistema:

Figura 56 – Trace de execução do teste de 30 segundos

A próxima etapa do exercício nos apresenta o conceito de cardinalidade. Para isso, foram criados alguns artefatos de apoio, como a classe passiva Constant que define a MAXUNITS conforme especificado:

Figura 57 – Classe passiva Constant

(32)

A seguir, foi adicionada uma porta protegida à estrutura da cápsula DyeingSystem e conectada à porta operatorDialog. A cardinalidade desta nova porta foi configurada para

Constant::MAXUNITS. A cardinalidade da cápsula controller, contida na cápsula Master,

foi alterada para Constant::MAXUNITS. O mesmo procedimento foi realizado para as relay

ports da cápsula Master:

Figura 59 – Diagrama de estrutura da cápsula DyeingSystem

Figura 60 – Diagrama de estrutura da cápsula Master

Como já realizado previamente neste Lab, reaplicamos o teste de 30 segundos para validarmos a aderência das últimas alterações aos requisitos do sistema:

(33)

Figura 61 – Trace de execução do teste de 30 segundos.

Para que possamos analisar o funcionamento do sistema aplicando os conceitos de cardinalidade configurados nos passos anteriores, alteramos o valor da constante

MAXUNITS para 3:

Figura 62 – Configuração de atributo MAXUNITS.

Novamente aplicamos o teste de 30 segundos. Nesta execução do teste, analisaremos o comportamento utilizando o número de instâncias de cápsulas controller, configurados através da constante MAXUNITS:

(34)

Figura 63 – Trace de execução do teste de 30 segundos, utilizando cardinalidade e três instâncias da cápsula controller.

A execução do teste de 30 segundos indicando a correta execução do modelo configurado encerra o Lab 4.

2.6. Lab 5: Start High-Temperature System

O Lab 5 introduz o conceito de hierarquias de herança para composição de um sistema complexo. Esses conceitos serão aplicados sobre as cápsulas, protocolos e classes passivas existentes.

Os principais objetivos relacionados à execução deste Lab são:

 Criação de um novo sistema utilizando hierarquias de herança.

Aplicação de modelagem bottom-up à uma hierarquia de herança (generalizando uma classe existente).

Aplicação de modelagem top-down à uma hierarquia de herança (especializando uma classe existente).

 Compilação, execução e depuração de um modelo contendo hierarquias de herança. A primeira etapa do exercício envolve a alteração da constante MAXUNITS, definida na classe passiva Constant para o valor 1. Essa modificação visa simplificar a fase de testes do modelo:

(35)

Figura 64 – Constante MAXUNITS com seu valor alterado novamente para 1.

A seguir, construímos uma estrutura onde a cápsula Valve se torna uma cápsula extendida de uma nova cápsula, Device. Esse procedimento, utilizou o conceeito de herança

bottom-up e foi realizado através das técnicas de generalização, disponibilizadas na ferramenta

RRRT. Uma vez construído o diagrama de classes e as estruturas de herança entre as cápsulas, a generalização de um determinada cápsula é uma tarefa simples, acionada através da opção promote, disponível em diversas visões dos diagramas da cápsula Valve, e que, uma vez acionada, promove suas capsule roles, protocolos, portas, atributos, operações, etc à classe definida como classe pai em sua hierarquia de herança. É importante que os atributos e operações definidos na superclasse da estrutura de herança sejam marcados com o modificador protected para que as subclasses que descendem desta classe tenham acesso a esses atributos e operações. O diagrama resultante da operação de generalização da cápsula Valve é apresentado a seguir:

(36)

Figura 65 – Diagrama de classe contendo generalização da cápsula Valve A próxima parte deste Lab envolve a criação de uma nova cápsula, denominada Heather. Essa cápsula terá sua estrutura baseada na cápsula Device. A construção dessa cápsula (Heather) é mais simples através da construção utilizando conceitos de herança do que se estivéssemos a construindo do zero, pois sua estrutura e comporamentos já estão definidos na superclasse Device. Para criação completa dessa classe, criamos uma nova cápsula, incluímos esta nova cápsula no diagrama de classes, e indicamos a relação de herança com sua superclasse (Device):

(37)

A seguir, reaplicamos o conceito de modelagem bottom-up para uma estrutura de herança para a cápsula Level. Criamos uma nova cápsula, denominada Sensor e efetuamos a promoção da estrutra, estado e atributos da classe Level para a classe Sensor:

Figura 67 – Diagrama de classe contendo cápsulas Level e Sensor

Finalizando a primeira parte do Lab 1, criamos uma nova cápsula, Thermometer, e a definimos como subclasse da cápsula Sensor. Ainda alteramos a transição inicial da cápsula

Sensor para que, na sua transição inicial, o valor de seu atributo sampleTime fosse alterado

para 0,5 segundo

:

(38)

Figura 69 – Transição inicial da cápsula Sensor com atributo sampleTime alterado A parte do 2 do Lab 5 incia-se com a aplicação de conceitos de herança top-down. Criamos uma cápsula denominada DyeHT , herdando da cápsula Dye e com algumas modificações em sua estrutura e comportamento, conforme apresentado abaixo:

(39)

Figura 71 – Alterações estruturais – Inclusão de três novas portas na cápsula DyeHT

Figura 72 – Alterações de comportamento – Novo diagrama de estados para a cápsula

(40)

Figura 72 – Action do estado inicial da cápsula DyeHT

Figura 73 – Trigger do estado temperature da cápsula DyeHT

(41)

Figura 75 – Trigger do estado heatOut da cápsula DyeHT

Figura 76 – Action do estado heatOut da cápsula DyeHT

(42)

Figura 78 – Action do estado heatIn da cápsula DyeHT

Realizadas as configurações no modelo apresentadas nas figuras acima, criamos um novo componente DyeingSystemHT, baseado na cápsula DyeHT. Criamos também uma nova instância de componente, DyeingSystemHT, baseado no componente DyeingSystemHT:

Figura 79 – Novo conjunto de componente / instância de componente

Um procedimento de modificação estrutural e de comporatamento também foi aplicado à cápsula Tank. Foi criada uma nova cápsula, TankHT, e as alterações estruturais/comportamentais foram configuradas conforme apresentado nas figuras abaixo:

(43)

Figura 80 – Introdução de nova cápsula no sistema: TankHT

Figura 81 –Alterações de Estrutura da cápsula TankHT

Após a conclusão das alterações, aplicamos um procedimento de testes unitários na cápsula

TankHT. Para isso, criamos um novo componente, contendo TankHT como Top Capsule e

um novo processador, com uma instância baseada no componente TankHT. Foram incluídas pontas de prova (probes) nas portas control e thermometer do diagrama de estruturas da cápsula TankHT. Ao aplicarmos um trace na porta thermometer e o sinal

(44)

trace. Ao enviarmos o sinal turnOff, observamos a temperatura decrescer até o valor

mínimo de 15 e aí se manter constante, envidenciando o funcionamento adequado do modelo.

Figura 82 –Trace de execução apresentando resultado do teste unitário Os mesmos conceitos de herança top-down foram aplicados na criação de uma nova cápsula: ControllerHT. Essa cápsula inicialmente herda estrutura e comportamento da cápsula Controller. O exercício nos propõe algumas modificações na estrutura na estrutura da cápsula ControllerHT :

Figura 83 – Diagrama de Estrutura da cápsula ControllerHT com novas portas heat e

(45)

Para que os elementos criados anteriormente possam ser conectados, vamos precisar de algumas modificações estruturais na cápsula Master. Essas modificações serão

aplicadas em uma nova cápsula, MasterHT, que herda de Master e tem as seguintes alterações em sua estrutura:

Figura 84 – Diagrama de Estrutura da cápsula MasterHT com relay ports heat e

temperature

Como última etapa do Lab 5, criamos a cápsula DyeingSystemHT, através de herança da cápsula DyeingSystem. O diagrama de estrutura dessa cápsula foi modificado para utilizar as novas cápsulas MasterHT e TankHT. A compilação do modelo finaliza o Lab 5. Ainda não é possível realizarmos testes para validação das alterações finais propostas, pois existem algumas modificações necessárias para o teste e que serão aplicadas na cápsula

(46)

Figura 84 – Diagrama de Estrutura da cápsula DyeingSystemHT

2.7. Lab 6: Complete High-Temperature System

O Lab6 tem como principal propósito demonstrar como gerenciar complexidade comportamental através da construção de máquinas de estado hierárquicas. Neste exercício, vamos modificar o comportamento da capsula Controller tornando-a uma máquina de estados hierárquica. Este exercício também adiciona a função termostática à cápsula

ControllerHT para que ela possa regular corretamente a temperatura do líquido no tanque

de tingimento.

Os principais objetivos relacionados à execução deste Lab são:

 Criação de máquinas de estado hierárquicas em um modelo existente.

 Distribuição de comportamento através de um modelo hierárquico de máquinas de estado.

 Compilação, execução e depuração de um modelo hierárquico de máquinas de estado.

A primeira atividade do Lab 6 envolve a agregação de alguns elementos constantes do diagrama de estados da cápsula Controller. Os estados filling, dyeing, e drainning, bem como as choice points presentes no modelo serão agregados em um novo estado, chamado

(47)

Figura 85 – Agrupamento de elementos na cápsula Controller

Figura 86 – Diagrama de estados (subdiagrama) do estado running.

Após a alteração inicial, novamente executamos o teste de 30 segundos para verificarmos se as alterações causaram algum efeito colateral funcional na aplicação:

(48)

Figura 87 – Execução do teste de 30 segundos

Com a execução do teste de 30 segundos, verificamos que nossa aplicação está funcionando conforme esperado e especificado. É importante observar que a alteração aplicada no Lab 5, alterando valor do atributo sampleTime da cápsula Sensor de um para meio segundo já foi refletido na execução deste teste, pois temos uma linha de output de trace para cada intervalo de meio segundo, conforme especificamos. Podemos assim, seguir adiante com as próximas etapas do Lab 6.

O próximo passo do Lab 6 inclui a modificação da cápsula ControllerHT, incluindo um novo atributo de nome dyeingTemperature, tipo de dados int e valor inicial de 30. O propósito desse atributo é armazenar o valor corrente da temperatura do líquido no tanque.

Figura 88 – Cápsula ControllerHT modificada, incluindo atributo dyeingTemperature A seguir, modificamos o comportamento da cápsula ControllerHT para manter o tanque a uma temperatura fixa. Para isso foram adicionadas ações para ligar e desligar o aquecedor, respectivamente na entrada e na saída do estado dyeing. O estado dyeing se encontra agora agrupado no estado running e deve ser acessado através de um duplo clique no estado

(49)

Figura 89 – EntryAction do estado dyeing

(50)

Incluímos também dois novos estados, heating e maintaining, internos ao estado dyeing e usados para aquecer e manter a um determinado nível a temperatura do líquido dentro do tanque de tingimento:

Figura 91 – Estados heating e maintaing, para controle de temperatura do líquido no tanque de tingimento

O estado maintaning foi configurado com dois sub-estados: heatOn e heatOff. Esses estados são utilizados para controlar a temperatura do líquido no tanque, por volta de 30 graus. Os dois choice points definem condicionais de mudança de estado para aquecer (heatOn) ou esfriar (heatOff):

(51)

Figura 92 – Condition para Choice Point tooHot

Figura 93 – Condition para Choice Point tooCold

Para que pudéssemos verificar o funcionamento adequado do sistema realizamos novamente o teste de 30 segundos. Nesta execução, uma nova ponta de prova foi adicionada à porta temperature da cápsula ControllerHT. Durante a execução do teste, pudemos observar que a variação da temperatura em decorrência das alterações nos

(52)

sensores de level do tanque. Além disso, pudemos observar a manutenção da temperatura em execução através dos estados heatOn e heatOff:

Figura 94 – Temperatura constante antes do sinal de start

(53)

Figura 96 – Redução de temperatura durante o processo de drenagem do tanque Os resultados do teste de 30 segundos demonstram que o sistema executa corretamente as ações para o qual foi modelado. Esse teste encerra o Lab 6.

2.8. Lab 7: Deliverable and Test Harness / Low and High Temperature

Os Lab 7 orienta o aluno quanto ao gerenciamento da complexidade do modelo através de

packages. Para execução do Lab, criamos três packages distintos: Deliverable, TestHarness e Commom. Dentro dos packages Deliberable e TestHarness foram criados os packages HighTemperature. A divisão proposta para execução desse trabalho, divide os artefatos

gerados nos Labs anteriores em:

Commom: Artefatos comuns aos packages Deliverable e TestHarness. Classes

passivas e protocolos utilizados nos packages Deliverable e TestHarness foram armazenados neste package. Conteúdo do package Commom:

Protocol AcquiredValue Protocol DeviceControl Protocol Flow Protocol MonitoredValue Protocol OperatorDialog PassiveClass Constant

Deliberable: Artefatos relacionados ao core do sistema de tingimento. Possui um package interno, denominado HighTemperature, onde os artefatos core da solução

relacionados à cenários de alta temperatura são armazenados. Conteúdo do package

Deliverable:

Capsule Controller Capsule Master

(54)

Package HighTemperature

A package HighTemperature contém os seguintes elementos:

Capsule ControllerHT Capsule MasterHT

TestHarness: Artefatos relacionados a testes do sistema de tingimento. A maioria

dos artefatos dessa package emula objetos reais para que o sistema de tingimento possa ter seu core testado adequadamente. Possui um package interno, denominado

HighTemperature, onde os artefatos de teste da solução relacionados à cenários de alta

temperatura são armazenados. Conteúdo do package TestHarness:

Capsule Device Capsule Dye Capsule Level Capsule Sensor Capsule Tank Capsule Tester Capsule Valve Package HighTemperature

A package HighTemperature contém os seguintes elementos:

Capsule DyeHT Capsule Heather Capsule TankHT Capsule Thermometer

(55)

Figura 97 – Estrutura de packages e artefatos do sistema

Este exercício finaliza a seqüência de labs e conclui o a aplicação para o sistema de tingimento, realizando o particionamento da aplicação em packages.

3. Aplicabilidade no projeto ITA-ECO-SAT 2

Os conceitos apresentados nesta sequencia de labs: agregação, relay ports, cardinalidade, herança, máquinas de estados hierárquicas, gerenciamento de modelos complexos e particionamento através de packages possuem um grande pontencial de aplicação na construção da USC TPA e do CSC CSM e serão avaliados quanto a validade individual de sua aplicação durante o desenvolvimento dos artefatos de software do projeto ITA-ECO-SAT-2

4. Conclusão

A sequencia de exercícios de Lab 1 a 7 complementa a sequencia de exercícios de warmup realizados previamente e introduz uma série de novos conceitos, como agregação, relay

ports, cardinalidade, herança, máquinas de estados hierárquicas, packages, entre outros. O

aluno percebe como maior benefício de execução desta sequencia de labs, a capacidade de abstração e análise para construção e gerenciamento de um modelo complexo. Essa

(56)

capacidade é especialmente importante, pois esse é o cenário do projeto a ser desenvolvido nesta disciplina e é também o cenário predominante em situações de projetos comerciais (não acadêmicos). Dessa forma, a seqüência de labs apresentada preparou este aluno para execução do projeto acadêmico ITA-ECO-SAT-2 e também forneceu uma base sólida e vários fundamentos para desenvolvimento de aplicações de sistemas embarcados de tempo real para cenários comerciais.

Referências

Documentos relacionados

conformidade com o artigo 6º do Estatuto Social, o representante da acionista Companhia Energética de Minas Gerais-Cemig indicou o nome do Diretor Arlindo Porto Neto para presidir

Na perspectiva de que toda ação do ser humano possui e é regida por significados em sua evolução histórico-cultural, podemos dizer que, em grande parte, a linguagem corporal, sobre

Assim sendo, o presente estudo, teve como objetivo avaliar o efeito residual da adubação com espécies espontâneas da caatinga (jitirana; mata-pasto e

I. O ânodo da pilha de lítio é feito do metal lítio. Na pilha de lítio o potencial de redução do lítio é alto, gerando uma bateria com 3 vezes mais energia que as pilhas

Gostaria de encerrar com a conhecida carta de Freud (1951 [1935]) para a mãe de um jovem homossexual, pois ela mostra, já em 1935, uma tentativa de despatologizar

Distribution en Europe: Clark Nutrition Center Ltd., 7 Ifgeneias Str., 2007 Nicosia,

O projeto tem como objetivo produzir, junto com as assessoras e os assessores do Centro Bíblico Verbo e as comunidades, textos que sirvam de reflexão em encontros ou cursos

O sensor-G integrado detecta um impacto e automaticamente inicia uma gravação de vídeo acionado pela alimentação da bateria interna.. Após a gravação, ele se