• Nenhum resultado encontrado

RelatórioWarm-Ups

N/A
N/A
Protected

Academic year: 2021

Share "RelatórioWarm-Ups"

Copied!
28
0
0

Texto

(1)

Instituto Tecnológico de Aeronáutica

CE-230 - Qualidade, Confiabilidade e Segurança ( Safety ) de Software Professor Doutor: Adilson Marques da Cunha

(2)

Sumário

1. OBJETIVO

Realizar os Warm-ups 1 (um) ao 8 (oito). Abaixo uma visão geral dos exercícios:

Warm-Up 1: Hello, World!

Criar uma cápsula com o comportamento, mas nenhuma estrutura.

Warm-Up 2: Passive class

(3)

Warm-Up 3: Traffic Light

Criar uma cápsula com uma porta, cujo estado da máquina contém três estados.

Warm-Up 4: Electronic Lock

Criar um modelo com uma classe de passivo cujo comportamento é definido por um diagrama de estado.

Warm-Up 5: Battleship

Criar um modelo com estrutura simples e de comportamento, que usa os temporizadores e os serviços de log.

Warm-Up 6: Traffic System

Criar um modelo com comportamento moderado e estrutura.

Warm-Up 7: Client / Server

Criar dois client / server modelos com estrutura dinâmica e comportamento.

Warm-Up 8: RQA-RT

Criar um diagrama de seqüência de especificação para o modelo cliente / servidor e executar o Verificar o comportamento contra ela.

2. WARM-UP 1 Objetivos

Depois de completar este exercício, você será capaz de: Criar um novo modelo.

Criar uma cápsula no modelo.

Adicionar comportamento simples para a cápsula. Compilar, executar e depurar o modelo.

Instruções

Iniciar oconjunto de ferramentasRoseRealTime. Criar um novomodelo deC++.

Selecione Arquivo> Novo.

Clique duas vezes emRTC++. Salvar o modelo.

Selecione Arquivo> Salvar como Modelo. Nomeie o arquivo Hello Word.

(4)

Criar uma cápsula:

Clicar com o botão direito do mouse em Logic View. Selecione New -> Capsule.

O nome da cápsula: Tipo HelloWorld.

Abrir a cápsula State Diagram Selecionar Open State Diagram.

Adicionar um diagrama de estado para a cápsula. Adicionar uma transição inicial para o estado. Clicar na ferramenta de transição de estado. Clicar no ponto estado inicial e arraste para Active. Colocar o código na transição:

(5)

Selecione a aba Actions. Digite o seguinte código:

cout <<"Hello, World" <<endl;

Incluir uma biblioteca:

Clicar duas vezes na cápsula na Logic View para abrir a Caixa de diálogo da cápsula Clique na guia C + +.

Na área HeaderPreface digite a instrução:

#include <iostream.h>

Criar um novo componente:

Selecione Component> Novo.

Nomear o componente como HelloWorld.

Clicar no componente e selecione Definir como Active.

Arraste a cápsula HelloWorld (da Logic View) para o componente.

(6)

Definir TopCapsule para HelloWorld. Ir para a guia C + + Executável . Escolher HelloWorld da lista. Ir para a guia de compilação C + +.

Selecionar NT40T.x86-VisualC + 6.0 da lista.

Clicar OK para salvar as configurações.

Criar um novo processador:

Botão direito do mouse em Deployment View. Selecione New > Processor.

(7)

Nomear o processador Workstation. Compilar, executar e depurar HelloWorld.

Arraste o componente HelloWorld (da Visão de componentes) para

Estação de trabalho (na Visão de Implantação). Isso cria uma instância do componente. Renomeá-lo HelloWorld e ativá-lo.

Salvar o seu modelo.

Clique para construir e executar o modelo.

Quando a construção for concluída com êxito, um prompt de comando janela aparecerá. Para que aparece nessa janela o HelloWorld na tela do prompt, é só dar play no modelo:

(8)

Após, finalize a sessão clicando em Shutdown

1. WARM-UP 2 Objetivos

Criar um modelo usando uma Passive class.

Adicionar comportamento simples para a classe adicionando uma operação. Compilar, executar e depurar o modelo.

Alterar o código produzido por Rose RealTime com um utilitário de texto.

Instruções

Criar o modelo e salvar como Passive Class.

Na aba Logic View, criar uma Passive Class e nomeie como Greetings.

Como o botão direito em cima de Greetings, crie uma operação com o nome de main. Dar um duplo clique em main e especificar a operação para main.

(9)

Escolha o tipo de return int e adicione os parâmetros. Dê um duplo clique em argv e configure como abaixo: Em code, digitar: printf(“ Greetings, ”); printf(“ Earthling \n”); getchar(); return 0;

(10)

Clicar em ok.

Dar um duplo clique em Greetings, ir na aba C++ para adicionar biblioteca #include <stdio.h> no espaço ImplementationPreface.

Em seguida, clicar em ok.

Adicionada a biblioteca, criar um novo componente, dando um duplo clique em ComponentView, New->Component nomeando-o como Greetings.

Arrastar Greetings de LogicView para dentro de Greetings em Component View e ative-o. Dê um duplo clique no componente ativado.

Ao abrir a caixa de especificação, ir na aba General e setar as variáveis como abaixo:

Após, ir na aba C++ compilation, em Target configuration selecionar Select NT40T.x86-VisualC+ +-6.0.

(11)

Clique em Ok.

Clicar duas vezes em Greetings do Component View, ir na aba general e em Environment escolher C++.

Em C++ Compilation, em Target Configuration selecionar: NT40T.x86-VisualC++-6.0 e clique em Ok.

Após, deve-se criar um processador.

Ir em Deployment View, New->Processor, nomeando como Workstation e salve o modelo.

Arrastar o Greetings de ComponentView para dentro do Workstation e uma instância será criada. Nomei-a como Greetings.

Dê um duplo clique na instância, nas especificações da instância, ir na aba Detail e desativar

Attach to target on startup e clicar em Ok.

Após ative a instância.

Rodar o modelo, utilizando o botão Run.

Ocorrerá um processamento e o prompt irá aparecer. Feche-a.

Após, clique com o botão direito na instância Greetings, dar um Shutdown, ok.

Editar a fonte Greetings.cpp e abri-lo em um editor de texto. No código, onde tiver printf, substituir

Earthling trocar por outra palavra. Por exemplo, contato. Salve as alterações.

Após, deve-ser abrir a caixa de comand. Após aberta, ir a uma pasta acima do código fonte e copie o endereço onde se encontra o Greetings e cole na linha de comando, escrever nmake e dar enter.

(12)

No Rational Rose Real Time, rode o modelo. Na linha de comando ao invés de Earthling aparecerá Contato.

Após, dar um shutdown na instância Greetings.

Clicar em Greetings em ComponentView, escolher Build ->Code Sync, conforme abaixo: A janela que abrir, aparecerá o código novo e o alterado.

Dar Ok e rodar novamente o modelo. E irá mudar novamente.

2. WARM-UP 3

Objetivos

Construir um modelo de requisitos apresentados na forma de um diagrama de seqüência. Criar uma classe simples protocolo.

Definir comportamento (máquina de estado finito), composto por vários estados e transições. Compilar, executar, depurar e verificar o modelo multi-estado, utilizando diagramas de seqüência gerados durante o tempo de execução.

Instruções

Criar um modelo e nomeá-lo como Traffic Light e salve-o.

Após, criar um protocolo clicando com o botão direito em LogicView-> New-> Protocol. Nomei-o como Light Control.

Clique duas vezes no protocolo. Abrirá a cixa para especificações do protocolo. Na aba Signals, cria-se os três sinais: Red, Yellow e Green.

(13)

Após, deve-se criar uma cápsula, clicando com o botão direito em LogicView->New->Capsule e nomei-a como Traffic Light.

Abrir o diagrama de estrutura para Traffic Light, expandindo sua árvore e dando um duplo clique no diagrama.

Dar um duplo em Structure Diagram e adionar uma porta e nomei-a como control. Dê um duplo clique na porta criada e aparecerá a espeficação para a porta. Na aba General, clicar em

Conjugated e End Port e dar Ok.

Para definir o comportamento para Traffic Light, deve-se adicionar em State Diagram, selecionar a ferramenta State e criar as caixas Red, Yellow e Green.

Após, definir o Red como estado inicial. Para isso, utlizar a ferramenta de transição.

Após, adicionar as demais transições de Red para Green, Green para Yellow e Yellow para Red.

Após, deve-se adicionar um trigger para cada transição. Para isso, dar um duplo clique na linha de transição e abrirá a caixa de especificação. Em General, Inserir a direção que a transição está sendo apontada, fazendo para os estados.

(14)

Após, clicar com o botão direito em ComponentView e criar um novo componente nomeado como

Traffic Light e ative-o. Em seguida, arraste a cápsula para dentro do componente.

Clicar duas vezes em Traffic Light, na aba C++ Executable e em C++ Compilation, configurando como a seguir:

Após, deve-se criar um processador em Deployment View, nomeando como Workstation. Após criar uma instância para Traffic Light, arrastando-o para Workstation e renome-a a instância para

Traffic Light e ative-a e salve.

Rode o modelo. A caixa de comando abrirá. Para testar, clicar em:

(15)

Criar três sinais: Red, Amareloe Verde.

Expandir a pasta Probes e clicar duas vezes para abrir sua caixa de especificação. Clicar na guia Details, clique com o campo de entrada, e selecione Inserir.

Salvar.

Repitiro procedimento para Probes restantes.

Após, dar Play no modelo.

Clique com o Botão direito do mouse e selecione Open State Monitor.

Dar um duplo clique em control/Red, control/yellow e control/green. Isso permitirá a transição entre os estados.

3. WARM-UP 4 Objetivos:

Adicionar uma máquina de estado para uma Passive Class.

Criar uma operação de gatilho para uma máquina Passive Class do Estado. Adicione código para uma transição.

Instruções

Criar um modelo com o nome de lock e salvá-lo.

Criar uma Passive Class com o nome de Eletronic Lock e adiciona a biblioteca #include < stdio.h>, #include < stdlib.h> e #include < conio.h>.

Criar uma operação com o nome main.

Dar duplo clique e adicionar as especificações para a operação.

(16)

Criar mais um operador para agir como trigger, nomeando-a como Number e escolher o esteriótipo trigger para esta operação e configure as especificações.

Criar uma máquina de estado, dando um duplo clique em Eletronic Lock.

Clicar na ferramenta State, clicar dentro da máquina criada, nomeie como Lock e criar uma transição.

Digitar o código nessa transição:

printf("*****************************\n");

printf(" ACME Electronic Lock System \n"); printf("*****************************\n\n");

(17)

Criar uma transição para o próprio estado, nomear como Question e defina a transição na aba trigger.

Clicar duas vezes na transição para abrir a Especificação de diálogo de transição. Ir até a aba Triggers.

Botão direito do mouse e selecione Inserir. Selecionar Number da caixa drop-down. Na janela da Guarda, type: num == '?'.

Ir até a aba Ações na caixa de diálogo Especificação de transição e digitar o código:

printf ("Help Locked Goes Here \ n");

Adicionar um novo estado com o nome Unlocking, outro estado com o nome Unlocked. Criar uma transição de Locked para Unlocking chamada Number1.

Criar outra transição de Unlocked para Locked, chamada locklsClosed. Criar uma transição de Unclocked para ele mesmo com o nome de question.

Definir a transição locklsClosed, dando um duplo clique em cima linha. Na caixa de especificação ir na aba Triggers, inserir o código num == 'L'.

Em actions colocar o código: printf("The lock is LOCKED\n");

Após, definir a transição Number1, digitando na aba Guard Code, inserir o código: num == '1'. Na transição de Unlocked para Unlocked, também deve-se fazer as especificações: na aba

triggers, digitar num == '?', em Actions, digitar o código: printf ("Unlocked Help Goes Here\n");

Criar um ponto de escolha.

Selecionar a ferramenta ponto de escolha e criar um ponto de escolha chamado

IsQuestion.

Dar duplo para abrir a caixa de especificação.

Ir para a guia Condição e digitar a condição: Num == '?'

Criar um ponto de escolha para determinar se a entrada for de dois ou não.

(18)

Abrir a caixa de Especificação Point.

Ir para a guia Condição e digitar a condição: Num == '2 ' Criar as transições conforme a figura abaixo:

Definir a transição InputRcvd.

Duplo clique na transição InputRcvd para abrir a especificação. Ir para a aba Triggers.

Adicionar o código para o IsQuestion .

Ir para a aba Actions e digite o seguinte no Código

printf ("Desbloquear Help Goes Here \ n");

Clicar duas vezes na transição IsTwo em Ir para a aba Actions

printf ("The lock is UNLOCKED\n");

Adicionar código para a transição False.

Dar duplo clique na linha e digitar na aba Actions o código:

printf ("Sorry, that is not the right combination\n"); Salve o modelo.

Ciar um componente coom o nome LockSystem Arrastar o EletronicLock para dentro do componente. Ativar o componente.

Dar um duplo clique no LockSystem, na aba General, escolher C++ na opção Environment. Na aba C++ Compilation, na aba TargetConfiguration, escolher a opção como abaixo:

(19)

Clicar na ferramenta Build Component.

Se rodar com sucesso, criar o processador com o nome de Workstation.

Arrastar o componente para dentro do processador e renomear como LockSystem.

Duplo clique em LockSystem, na aba Detail, desativar a opção: Attach to target on startup.

Após, ativar a instância. Clicar no botão Run.

Se rodar com sucesso, aparecerá um prompt de comando.

(20)

Se apertar qualquer outra tecla, nenhuma mensagem no prompt aparecerá, mas se apertar o ponto de interrogação a frase acima aparecerá, monstrando que ainda está em Locked. Para passar para Unlocking é só apertar o número 1.

Apertar o número dois e passará de Unlocking para Unlocked.

O ponto de interrogação aparecerá a mensagem Unlocked Help Goes Here. Para voltar para Locked, deve-se apertar o L maiúsculo.

O resultado está abaixo:

4. WARM-UP 5 Objetivos

Criar um novo modelo a partir de elementos do modelo existente.

Desencadear o comportamento da cápsula com um timer, usando o Timing Service na biblioteca de serviços.

Exibir mensagens de texto a partir de uma cápsula, usando o Log Service nos serviços biblioteca.

Compilar, executar, depurar e verificar o modelo usando diagramas de seqüência gerada durante o tempo de execução.

Instruções

Abrir o modelo Battleship. Salvar o modelo.

Criar duas cápsulas: Battleship e Ocean. Conectar as portas com o mesmo protocolo.

Criar um State Diagram dentro de Battleship e adicionar as transições. Criar um Structure Diagram.

(21)

Colocar na transição Send o timeout..

A porta SonarSignals tem que ser End Port para comunicar com a máquina de estado.

Receive vai ser trigado com a função echo.

Após definie-se a ação.

(22)

Adicionar a biblioteca <stdio.h>;

(23)

Após criar o componente, processador, execute o modelo.

Dessa forma, de 1 (um) em 1 (um) segundo, é enviado um sinal de ping do Battleship para o

(24)

5. WARM-UP 6 Objetivo

Criar um novo modelo usando um modelo existente e seus elementos (cápsula e classes de protocolo).

Criar uma classe nova cápsula e definir sua estrutura e comportamento. Criar uma cápsula.

Adicionar estrutura para a cápsula.

Compilar, executar e depurar o novo modelo.

Instruções

Abrir o modelo TrafficLight do exercício 3. Salvar o modelo como TrafficSystem.

Criar uma cápsula com o nome de Controller. Definir uma estrutura.

Criar uma cápsula com o nome de Intersection. Adicionar uma cápsula, baseada na Controller.

Adicionar quatro cápsulas baseadas em TrafficLight, nomeadas como norte, sul, leste e oeste. Conectar cada uma das quatro cápsulas TrafficLight no seu controle apropriado.

Compilar, rodar e debugar Intersection.

(25)

6. WARM-UP 7 Objetivos

Criar um modelo com cápsulas que estão intercaladas (criada dinamicamente ao executar). Criar um modelo com cápsulas que são importados (de forma dinâmica ao executar). Compilar, executar e depurar os modelos que usam intercalação e contenções múltiplas.

Instruções

Abrir o modelo ClientServer.

Salvar o modelo como ClientServerIncarnated. Abrir o diagrama de estrutura para o TheSystem.

Abir a caixa de diálogo CapsuleRole especificação para o cliente e altere a configuração de fixo para opcional.

Adicionar um protegido, frame de porta unwired, com base no serviço Frame. Selecionar a ferramenta Port e clique dentro do limite da TheSystem.

Selecionar o quadro na lista de protocolos. Digitar o nome da nova porta.

Adicionar uma transição inicial ao comportamento TheSystem contendo o seguinte código:

frame.incarnate (cliente);

Construir o modelo e remover quaisquer erros. Executar o modelo.

Salvar o modelo como ClientServerImported.

Setar cliente para Plug-in em sua caixa de diálogo Especificação. Adicionar um novo cliente para TheSystem, chamado realClient.

Alterar o código na transição inicial do comportamento TheSystem para:

frame.import (realClient, client);

Construir o modelo e remover quaisquer erros.

Executar o modelo, assista cliente receber o realClient importados, e depois utilizar o Rastreamento para assistir o cliente eo servidor de mensagens começar.

7. WARM-UP 8 Objetivos:

Criar um modelo Cliente/Servidor a partir do diagrama de seqüência e verificar seu comportamento.

Parte 1

Baixar o pacote TestClientServer. Criar um pacote TestResults.

(26)

Criar um diagrama de colaboração e nomeá-lo SingleClient.

Arrastar as cápsulas cliente e servidor para o diagrama de colaboração e criar a ligação entre elas com a ferramenta de Associação.

Criar um diagrama de seqüência de especificação para o modelo da colaboração diagrama. O nome do HappyPath diagrama. Criando um diagrama de colaboração mantém os artefatos de teste isolado do resto do modelo.

Criar uma mensagem assíncrona chamado RequestService do cliente ao servidor. Criar um componente chamado TestComponent com a configuração-alvo correto. Criar um processador chamado TestProc usando as configurações padrão. Nesse momento que o armazenamento dos resultados é definido.

Fazer as verificações de comportamentos e verificar resultado.

Parte 2

Criar um diagrama de classe TestClientServer2. Criar Diagrama de Colaboração MultipleClients.

(27)

Criar um novo diagrama de seqüência chamado RequestWithData . Alterar a classe de dados para int.

Adicionar os dados RequestService. Digite o número 6 na caixa de dados. Definir uma variável na interação clientR1.

Abrir a caixa de diálogo Interação Instância Especificação, clique com o botão ClientRole1 interação no diagrama de seqüência e selecione Abrir

Especificação.

Na janela Atributos digitar: serviceNumber: int

Criar uma ação local acima da primeira mensagem sobre a interação clientR1.

Abrir a caixa de diálogo Enviar Mensagem Especificação para a mensagem de resposta de o servidor para clientR1.

Adicionar dados para as mensagens e modificar clientR2 da mesma maneira como para clientR1.

CONCLUSÕES

A Execução dos Warm-ups exigiu pesquisa, uma vez que nem todos os passos estão claramente definidos no tutorial.

O Warm-up 8 foi finalizado quando se descobriu que deveria ligar as portas dos componentes Server e client e não somente as estruturas.

Referências

Documentos relacionados

Dados os problemas de focalização do Programa Bolsa-Família, considerado pelo Banco Mundial o maior programa de transferência de renda da América Latina, torna-se pertinente

Occurrence of severe cases and deaths may be related to the time until care is received by the victims: the majority of deaths were caused by accidents in rural areas,

O presente trabalho busca uma reflexão acerca da aquisição de competências na leitura e escrita durante o processo de alfabetização, tendo como base um breve referencial a respeito

Isolates from suggestive bovine tuberculosis lesions were tested by a multiplex polymerase chain reaction (m-PCR) targeting for RvD1Rv2031c and IS6110 sequences, specific for M..

The user uses GIS to generate a map with a visual representation of the location and extent of the active containment zones in September 2013 and information about the measures

Com a primeira transformação teremos o resultado, ou seja, a intensificação desta transformação, que é onde o S2 entra em disjunção com o objeto de valor

do prazo de abertura do procedimento concursal, o qual se fixa em 15 dias úteis após publicação deste Aviso. Pode um/a candidato/a, com fundamento na impossibilidade ou

Após séculos de estudos sobre a influência do quadril na anatomia humana na área da saúde, há um nível de progressão preocupante das mudanças das medidas do quadril, a partir