arquitetura e interface para o módulo de análise do...

54
Universidade Federal do Rio de Janeiro Escola Politécnica Departamento de Eletrônica e de Computação Arquitetura e interface para o módulo de análise do sistema SOMA Autor: ________________________________________________________________ Diogo Rafael Corrêa Marques Orientador: ________________________________________________________________ Prof. Antônio Cláudio Gómez de Sousa, D. Sc. Examinador: ________________________________________________________________ Prof. Ricardo Rhomberg Martins, D. Sc. Examinador: ________________________________________________________________ Prof. Sergio Barbosa Villas-Boas, P.h.D. DEL Março de 2015

Upload: lambao

Post on 08-Nov-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Universidade Federal do Rio de Janeiro

Escola PolitécnicaDepartamento de Eletrônica e de Computação

Arquitetura e interface para o módulo de análise dosistema SOMA

Autor: ________________________________________________________________ Diogo Rafael Corrêa Marques

Orientador: ________________________________________________________________ Prof. Antônio Cláudio Gómez de Sousa, D. Sc.

Examinador: ________________________________________________________________ Prof. Ricardo Rhomberg Martins, D. Sc.

Examinador: ________________________________________________________________ Prof. Sergio Barbosa Villas-Boas, P.h.D.

DEL

Março de 2015

Page 2: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Dedicatória

Dedico esse trabalho à minha falecida mãe Laiz Ribeiro Corrêa Marques e ao

meu falecido amigo Guilherme Paiva. Duas pessoas muito importantes na minha vida

com quem não poderei compartilhar esse momento feliz.

ii

Page 3: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Agradecimentos

O sistema SOMA Torres é fruto de um esforço coletivo dessa forma desejo

agradecer toda a equipe do CEPEL envolvida, em especial Alexsandra Santana da Silva,

Antônio Leite, Aureo Ruffier, João Antônio Ferreira, João Saad, Luciano Azevedo, Luiz

Gonzaga, Mária Balthazar, Miguel Michalski, Renato Rocha, Ricardo Rangel, Vinicius

Falseth.

Desejo agradecer aos funcionários e corpo docente do departamento de

eletrônica e ao povo brasileiro por manter essa instituição.

Por fim, agradeço o apoio de minha família e meus amigos em especial do meu

pai Edvaldo, e amigos Guilherme, Gustavo, Filipe, Carlos e Fabiana que me apoiaram

durante momentos difíceis.

iii

Page 4: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Resumo

Arquitetura e interface para o módulo de análise do sistemaSOMA

Diogo Rafael Corrêa Marques

Novembro/2014

Orientador: Antônio Cláudio Gómez de Sousa

Departamento de Engenharia Eletrônica e de Computação

A interface de análise de um sistema de monitoramento desenvolvido no CEPEL

que tem como objetivo a observação de uma torre de transmissão de FURNAS para o

estudo dos fenômenos meteorológicos associados a eventos de queda das torres. A

interface deverá ser capaz de se adaptar a adição de novas ferramentas de análise à

medida que o problema evolua.

O resultado foi uma interface que atendeu a todos objetivos.

Palavras-Chave: GUI, Sistema de monitoramento, MVP, Flex 3

iv

Page 5: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

SumárioIntrodução.....................................................................................................................1

Tema..............................................................................................................................1

Justificativa...................................................................................................................1

Delimitação...................................................................................................................2

Objetivo.........................................................................................................................4

Metodologia..................................................................................................................4

Descrição.......................................................................................................................5

Capítulo 2......................................................................................................................7

Introdução.....................................................................................................................7

Casos de Uso.................................................................................................................8

Comunicação com o servidor........................................................................................9

Interface de Usuário....................................................................................................11

Capítulo 3....................................................................................................................16

Introdução...................................................................................................................16

Model view presenter..................................................................................................16

Vistas Principais..........................................................................................................24

Capítulo 4....................................................................................................................32

Resultados...................................................................................................................32

Objetivos.....................................................................................................................38

Limitações...................................................................................................................38

Soluções......................................................................................................................39

Conclusão....................................................................................................................40

Bibliografia.................................................................................................................41

Apêndice A..................................................................................................................42

Arquitetura do Sistema...............................................................................................42

Apêndice B..................................................................................................................43

Casos de Uso...............................................................................................................43

v

Page 6: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Índice de Figuras

Figura 1: Arquitetura básica do SOMA Torres..................................................................3

Figura 2: Casos de uso principais do módulo de análise...................................................8

Figura 3: Esquema da janela de resumo..........................................................................11

Figura 4: Dois exemplos de unidades de visualização....................................................12

Figura 5: Os domínios são organizados em uma estrutura hierárquica...........................12

Figura 6: Para cada domínio as análises são descendentes diretos..................................13

Figura 7: Esquema da janela de análise com destaque para os elementos de mudança de

domínio............................................................................................................................13

Figura 8: Diagrama do componente de navegação..........................................................14

Figura 9: Diagrama geral da interface.............................................................................15

Figura 10: Diagrama mostrando o relacionamento entre múltiplas instâncias do conjunto

apresentador e vista.........................................................................................................17

Figura 11: O apresentador deve se relacionar com a vista através de uma interface......19

Figura 12: O apresentador expõe apenas interfaces para seus interlocutores..................20

Figura 13: Gerente da aplicação e seus colaboradores....................................................21

Figura 14: Diagrama de sequência para a inicialização da aplicação..............................22

Figura 15: Eventos são transmitidos via EventBroadcaster e roteados via

SomaController................................................................................................................24

Figura 16: Apresentador do painel de análise(bruta) e seus colaboradores.....................25

Figura 17: Apresentador do painel de análise(histórica) e seus colaboradores...............26

Figura 18: Abstração do container de séries permite o tratamento universal para diversos

tipos de representações gráficas......................................................................................27

Figura 19: Unidades de visualização e sua especialização para gráficos........................28

Figura 20: Diagrama de sequência para atualização da janela de detalhe.......................29

Figura 21: Relacionamento entre a fábrica das barras de ferramentas e os elementos

construídos.......................................................................................................................29

Figura 22: Interface para tratar os eventos gerados por um grupo de ferramentas..........30

Figura 23: Diagrama de sequência para o tratamento de novas páginas publicadas na

análise..............................................................................................................................31

Figura 24: Sinal de Alarme (Tensão no estai A) no domínio do tempo...........................32

Figura 25: Agora no domínio da frequência (módulo apenas)........................................32

vi

Page 7: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 26: Módulo e fase.................................................................................................33

Figura 27: Histograma.....................................................................................................33

Figura 28: Distribuição normal com os valores estatísticos das amostras......................33

Figura 29: Tabela de todos os valores estatísticos calculados.........................................34

Figura 30: Adicionando um filtro passa banda com faixa de passagem entre 0,2Hz e

0,3Hz, transição de 0,05Hz e atenuação de 10dB...........................................................34

Figura 31: Sinal filtrado no tempo...................................................................................34

Figura 32: Resultado da filtragem na frequência.............................................................35

Figura 33: Série históricas(média e mínimo) progressão temporal.................................36

Figura 34: Histograma de ambas as séries.......................................................................36

Figura 35: Distribuição Normal.......................................................................................37

Figura 36: Tabela com os valores estatísticos calculados para ambas as séries..............37

Figura 37: Arquitetura em detalhes do SOMA Torres.....................................................42

vii

Page 8: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Siglas

API - Application Programming Interface

CEPEL - Centro de Pesquisas de Energia Elétrica

FIR - Finite Impulsive Response

FFT - Fast Fourier Transform

GUI - Graphical User Interface

GWT - Google Web Toolkit

HTML - HyperText Markup Language

HTTP - HyperText Transfer Protocol

JMS - Java Message Service

LCDS - LiveCycle Data Services

MVP - Model View Persenter

RPC - Remote Procedure Call

UC - Use Case

UML - Unified Modeling Language

XML - Extensible Markup Language

viii

Page 9: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Introdução

Tema

O tema do trabalho será um sistema de monitoramento de estruturas, a fim de

medir o impacto de fenômenos meteorológicos sobre a mesma.

Justificativa

Toda estrutura é projetada levando-se em conta o ambiente que ocupará.

Informações sobre o ambiente como temperatura ambiente, velocidade do vento,

concentração de chuva/neve, presença de terremotos servem como condições de

contorno para o projeto da mesma.

Essas informações, no entanto, são retiradas de referências que podem se tornar

obsoletas ao longo do tempo, fenômenos que não foram observados antes do projeto

podem vir a ter uma presença significativa após a construção. Dentro desse cenário se

torna importante o monitoramento contínuo dessas grandezas.

A análise de formas de onda é uma das principais ferramentas usadas no estudo

de sistemas. Logo a habilidade de visualizar grandezas como corrente elétrica,

temperatura, tensão tanto no tempo quanto em frequência é fundamental em um sistema

de monitoramento e diagnóstico.

Ainda no contexto desse tipo de sistema existe uma demanda crescente em não

apenas diagnosticar a saúde atual de um ativo como também se antecipar à possíveis

falhas, a fim de atingir este objetivo é necessário o monitoramento e análise de diversas

grandezas durante um período de funcionamento e constantemente cruzar as

informações coletadas com o modelo teórico. Este cruzamento será usado para

determinar quais desvios do comportamento esperado correspondem a sintomas de

falhas. O resultado será usado para gerar um modelo matemático mais sofisticado e a

partir deste uma nova rodada de coleta e cruzamento é realizada com cada iteração

gerando conjuntos de regras cada vez mais refinados.

A iteratividade do processo será refletida na interface pois a cada iteração novas

1

Page 10: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

ferramentas e formas de exibir o sinal poderão ser adicionadas, logo um programa que

facilite sua própria expansão e que possa ser configurado com o conjunto otimizado de

ferramentas para cada processo analisado é o ideal. Para isso precisamos de uma

arquitetura flexível, que tenha um baixo custo de manutenção e expansão.

Delimitação

A interface a ser examinada está ligada a uma derivação do projeto chamada

SOMA Torres, desenvolvido por uma equipe do CEPEL, que tem como objetivo o

estudo de uma torre de transmissão de Furnas na região sul do país. Essa região

apresenta um comportamento climático instável que é a suspeita causa das quedas de

torres dessa linha. O estudo das forças e da velocidade dos ventos aplicadas às mesmas

é fundamental para um melhor entendimento do fenômeno.

As seguintes grandezas serão observadas:

• Tensão nos estais - poderemos com essas ter uma melhor idéia sobre o

conjunto de forças aplicadas à torre.

• Dados ambientais locais (Velocidade e direção do vento e temperatura

ambiente) - podemos cruzar com a tensão a fim de estimar a influência

direta dos ventos no equilíbrio da torre.

O sistema, por sua vez, recebe as amostras colhidas desses sensores que estão

conectados ao módulo de controle que está instalado na torre. A comunicação entre

módulo e servidor é feita pela internet através de um modem 3G. O segundo conjunto

de objetivos que esse módulo tenta cumprir se refere à operação do próprio. Para o

CEPEL o desenvolvimento de uma tecnologia de aquisição de dados remotos com

alimentação independente é interessante, logo um segundo conjunto de dados será

coletado para o estudo do mesmo.

• Temperatura interna do gabinete.

• Medidas de corrente relacionadas ao consumo e geração de energia do

módulo e dos painéis solares.

• Estimativa de carga do conjunto de baterias.

• Tensão de alimentação do módulo.

Essas medidas mais as mensagens de diagnóstico do módulo ajudarão a

determinar a saúde do mesmo, tanto hardware quanto software, e no caso de falha a

2

Page 11: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

apontar a causa.

Já o servidor tem a funções de controlar o módulo remoto, guardar os valores

amostrados e fornecê-los a interface e outros sistemas externos. O mesmo é composto

de três camadas básicas.

• Transporte - responsável pela comunicação entre o servidor e sistemas

externos. Esta pode ser feita várias maneiras tanto de maneira direta

(sockets, HTTP) ou indireta (JMS, LCDS).

• Serviços - contém código que permite a iteração com a persistência, a

capacidade de determinar os comandos a serem enviados ao módulo

remoto e qualquer outro código que atenda a um objetivo em um escopo

limitado (ex. módulo de cálculo que retorne a vida útil esperada de um

componente baseado nos dados dos sensores guardados no banco de

dados).

• Persistência - guarda os dados originados nos sensores observados pelo

sistema. Valores históricos são guardados em um banco de dados

enquanto que amostras brutas são armazenadas em um sistema de

arquivos.

A seguir podemos ver de forma resumida como os principais elementos de

software se relacionarão.

Figura 1: Arquitetura básica do SOMA Torres

Um diagrama mais completo com mais elementos e suas devidas posições nas

camadas do sistema pode ser encontrado no apêndice A.

Esse contexto será usado para definir as condições de contorno que a interface

3

Page 12: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

do módulo de análise deve atender.

Objetivo

O objetivo geral do sistema é prover mais informações para determinar a causa

das quedas das torres na região em estudo.

Como é bem provável que novos cálculos e análises sejam necessários

dependendo da informação extraída, a interface tem duas categorias de objetivos a

serem perseguidos. Para os desenvolvedores o sucesso será medido em função da

facilidade com que a arquitetura permita o acréscimo de novas funcionalidades e a

facilidade de manutenção.

Em relação aos usuários que trabalham com a torre será o atendimento dos casos

de uso críticos definidos no capitulo dois. De maneira resumida podemos dizer que estes

são:

• Visualizar a série histórica ou de alarme, de uma ou mais fontes de dado,

em função do tempo.

• Controlar um subintervalo nessa seleção.

• Oferecer ferramentas de análise (filtros, transformadas etc).

Metodologia

O projeto será desenvolvido de maneira contínua em múltiplas iterações. Na

iteração inicial temos como base um modelo de como o sistema coletrará dados e como

a interface os deixará disponíveis. Uma vez que essa iteração esteja completa novas

iterações serão realizadas para lehorias na interface, modelo de diagnóstico e quaisquer

outras demandas de FURNAS.

Essa metodologia iterativa tem como objetivo a melhora incremental do sistema

e que a mesma acompanhe o entendimento do problema em questão, ou seja, à medida

que coletamos mais dados e os modelos matemáticos que descrevem o problema se

tornam mais refinados o sistema será capaz de se adaptar a essa evolução.

Parte das condições de contorno já estavam definidas antes do início do projeto.

4

Page 13: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

a) A parte de serviços é toda escrita em linguagem JAVA, portanto qualquer

adição de serviço deve ser escrita nesse formato, e por outro lado, é

necessário que qualquer aplicativo do lado do cliente possa se comunicar

com as interfaces de serviço.

b) O lado do cliente será escrito em ActionScript 3 usando a API do Flex

3.6A com a IDE da adobe Flex Builder 3.

c) A modelagem será feita em UML 2.0. Usaremos os principalmente

diagramas de classe e de sequência quando precisarmos.

Com essas condições satisfeitas prosseguimos com as etapas que estão no

escopo da primeira iteração.

O primeiro passo foi o estudo das diferentes arquiteturas de relacionamento

entre modelo, regras de negócio e as vistas e dentre elas escolher a que atende às nossas

necessidades, que basicamente são a capacidade de adição de novas vistas e a

testabilidade dos elementos de controle.

Uma vez que a arquitetura tenha sido escolhida, a próxima etapa foi a de

implementar os elementos básicos com o objetivo de produzir a vista principal da

aplicação (com os elementos mais básicos possíveis).

Por fim um conjunto de passos que podem ser descritos como: implementar

vistas uma por uma e a cada vista do sistema analisar como a atual implementação da

arquitetura está se comportando na iteração com as vistas construídas até aquele ponto.

Caso a resposta não fosse favorável, seria necessário fazer algum tipo de refactoring e

as iterações continuaram até um resultado favorável com todas as vistas.

Depois a interface passou por uma etapa de testes de usabilidade internos onde

teremos a oportunidade de mudar a forma com que esta é usada e corrigir eventuais

falhas que não tinham sido detectadas até o momento.

Descrição

Esse documento será divido em cinco capítulos, onde o primeiro, introduziu o

trabalho em linhas gerais.

O segundo apresentará uma visão geral do módulo de análise como os casos de

usos principais que devem ser satisfeitos, o tipo de informação que o servidor espera e

5

Page 14: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

provê e como esta deve ser trocada. Além de uma apresentação dos elementos visuais

que comporão as vistas principais.

O terceiro mostrará a escolha de arquitetura, seus elementos básicos e como eles

se relacionam e uma visão mais detalhada da implementação das vistas descritas no

capítulo anterior.

Os resultados serão apresentados no quatro e último capítulo através da captura

de telas onde o funcionamento real da aplicação será demonstrado e será levantado

quais objetivos foram alcançados e quais partes podem ser melhoradas.

6

Page 15: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Capítulo 2

Introdução

O módulo de análise deverá permitir um estudo preliminar dos sinais

armazenados pelo sistema de monitoramento. Isso implica em ter opções de seleção de

intervalos de interesse, juntamente com formas de identificá-los, a habilidade de se

aplicar filtros e mudar a perspectiva com que o sinal é visto (tempo, frequência,

estatística).

As vistas críticas serão gráficos e tabelas com estas representações a fim de dar

condições aos usuários de identificar as causas de um determinado comportamento em

um intervalo de interesse.

Quanto ao sistema de monitoramento é importante definir que tipo de dados

serão armazenados. Cada sensor envia dados constantemente, que serão referidos a

partir deste momento como ‘dados brutos’. Essa sequência de amostras, por sua vez, é

agregada e processada em janelas de tempo pré determinadas onde o resultado será

denominado de ‘dados históricos’.

Dados históricos são sempre persistidos e críticos para a análise de longo prazo

da saúde do sistema monitorado. Já os dados brutos são relevantes apenas em situações

específicas e é responsabilidade do sistema de monitoramento e seus operadores

identificarem essas instâncias. O sistema realiza essa tarefa através do sistema de alarme

que, uma vez acionado, tem como principal tarefa garantir a conservação dos dados

brutos relevantes ao evento.

Para o nosso caso, o sistema embarcado no módulo remoto fará a agregação para

o histórico e a publicação dos dados brutos no caso de alarme.

A distinção dessas duas categorias dos sinais a serem estudados no módulo de

análise é importante pois certos tratamentos e procedimentos só serão feitos em um tipo

ou outro como, por exemplo, a análise em frequência só será aplicada em dados brutos.

Por fim, a última condição de contorno para o módulo é como tais sinais serão

organizados.

Sinais categorizados como sendo históricos estão diretamente relacionados ao

sensor em questão e ao intervalo de interesse. Já os dados de alarme estão não apenas

7

Page 16: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

relacionados às medidas que dispararam o evento como à localização temporal do

evento.

Como exemplo para o primeiro poderíamos estar interessados na velocidade

média ao redor da torre durante o mês de outubro, já no segundo estaríamos

interessados na velocidade do vento e a carga nos estais da torre durante uma ocorrência

no dia dez de novembro.

Casos de Uso

Levando em conta as condições de contorno expostas no item anterior,

chegamos aos casos de uso típicos de nossa aplicação. Esses casos se relacionam com

os principais atores do sistema da seguinte maneira:

Figura 2: Casos de uso principais do módulo de análise

Cada caso está detalhado no apêndice B.

8

Page 17: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Comunicação com o servidor

Uma vez que os casos de uso foram determinados e temos uma visão mais

específica do que a interface tem que prover ao usuário, fica claro que haverá uma

camada de comunicação com o sistema de monitoramento, de maneira mais específica

com a base de dados.

Lendo o item anterior podemos compilar as mensagens trocadas entre as partes.

• Listagem de sensores e alarmes (UC1 e UC2).

• Requisições de dados tanto para histórico quanto para alarme(UC1 e

UC2).

• Os dados históricos e brutos(UC1 e UC2).

Dentre as nossas definições internas as requisições de objetos pequenos são

feitas no esquema de RPC, ao passo que as estruturas mais complexas são partidas e

seus pedaços enviados sequencialmente. Na lista anterior os dois primeiros itens se

encaixam na categoria de elementos simples enquanto as séries de dados necessitam ser

repartidas.

O servidor, no entanto, já possui maneiras pré estabelecidas de se comunicar

com aplicações FLEX. Adobe disponibiliza uma infra-estrutura chamada LCDS para

realizar a comunicação entre uma aplicação escrita em ActionScript e um servidor em

Java. Existe suporte para quatro modalidades: serviço de mensagens, chamadas HTTP,

chamadas de objeto remoto e web services.

Logo para as listas e requisições, as três ultimas opções seriam aceitáveis

enquanto para os dados particionados o sistema de mensagens seria mais aconselhável.

As chamadas de objeto remoto foram escolhidas, pois apresentaram maior facilidade de

implementação e melhor desempenho.

A chamada remota de objeto permite que objetos de uma classe JAVA tenham

seus métodos executados a partir de código ActionScript e que o mesmo receba o valor

de retorno. Embora seja possível controlar a multiplicidade das instâncias geradas (uma

para todos os clientes, uma por cliente ou por chamada), não é possível controlar uma

instância específica, à exceção da instancia única, o que impõe uma restrição para que

se use código que não dependa do estado dessa instância.

Já serviço de mensagens gerencia a troca de informação entre uma fonte e todos

os cliente conectados a um determinado destino. Esse por sua vez pode ser dividido em

9

Page 18: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

tópicos sendo possível formar um hierarquia de destinos, organizados por assunto. Essa

divisão evita que receptores tenham que receber e filtrar cada mensagem publicada no

sistema.

Por último, a definição das estruturas de dados envolvidas no protocolo de

cominucação entre as duas partes.

Requisições são objetos simples compostos apenas de atributos sem nenhuma

lógica específica em seus métodos além do acesso aos atributos, a única restrição que

foi feita é que exista classes recíprocas dos dois lados da comunicação. Então, se existe

um objeto que representa um pedido de dados históricos deverá haver uma versão em

ActionScript e outra em Java, podemos desta forma delegar a responsabilidade de

traduzir a informação trocada para o LCDS.

Já as listas de sensores e alarmes são representadas no formato XML dada sua

característica hierárquica e a sua condição de uso que não se limita à essa interface.

Sensores são identificados na hierarquia de acordo com seu posicionamento físico em

relação à planta (organizada em itens, componentes, subcomponentes etc). Alarmes, no

entanto, tem uma hierarquia temporal associada (ano, mês, dia, etc). Esses fragmentos

são carregados sob demanda de forma a manter o tempo de resposta aceitável.

Série de dados, por fim, usam conjuntos de objetos de valor para comunicação.

O primeiro é o cabeçalho que contém atributos ligados à identificação da série como

nome, título, sensor relacionado e outros de controle, como a quantidade de páginas de

dados. Depois do cabeçalho existe uma sequência de páginas de dados. Cada página é

composta de uma lista de amostras com um intervalo fixo, data de início e índice na

sequência global.

10

Page 19: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Interface de Usuário

Com os objetivos da interface e a forma de comunicação com o servidor

definidos, pode-se pensar na parte visual que irá satisfazer todas essas condições. Em

termos das diferentes perspectivas em que os dados serão visualizados, estas se

resumirão a diversos gráficos e afins (gráficos de linha, coluna, tabelas etc).

Logo o primeiro passo foi esquematizar a forma genérica que esses elementos

tomariam. Dois fatores foram considerados para essa vista.

1. Uma vez que o cliente carregar todos os dados será necessário escolher

seções de interesse dentro do intervalo total.

2. Dentro do intervalo serão aplicadas as diferentes perspectivas.

Para resolver a primeira especificação criamos uma vista que consiste de um

gráfico no tempo contendo o sinal inteiro e um elemento sobreposto a fim de indicar a

seção em destaque. Este elemento será manipulado pelo usuário para a escolha de

intervalos de interesse. A vista será chamada de janela de resumo e tentaremos atingir

um visual no estilo abaixo:

Figura 3: Esquema da janela de resumo

A segunda, por sua vez, será satisfeita através do conceito que demos o nome de

unidades de visualização. Essas vistas conterão o elemento específico para realizar a

perspectiva ou parte da mesma, ou seja, uma perspectiva pode conter uma ou mais

unidades organizadas da forma que for necessária. A unidade em si será formada pelo

11

Page 20: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

componente que expressará os dados (gráfico, tabela, etc) e uma barra de

controle/navegação.

Figura 4: Dois exemplos de unidades de visualização

Uma vez que agora temos uma ideia mais concreta de como as perspectivas

foram formadas, podemos pensar em como organizá-las e ter uma visão geral de como a

interface inteira foi estruturada.

As vistas foram agrupadas por domínios e subdomínios onde os últimos

determinam uma perspectiva. Inicialmente os domínios serão: tempo, frequência (só

para alarme) e estatística. Os subdomínios serão: sinal no tempo, FFT, espectro

completo, histograma, distribuição normal e tabela de valores.

Nessa versão, apenas uma perspectiva será vista em um dado momento de modo

que esses conjuntos serão organizados em pilhas conforme explícito nas figuras abaixo:

Figura 5: Os domínios são organizados em uma estrutura hierárquica

12

Page 21: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 6: Para cada domínio as análises são descendentes diretos

Para navegar entre as perspectivas usaremos os elementos descritos no esquema

a seguir:

Figura 7: Esquema da janela de análise com destaque para os elementos demudança de domínio

O que resta equacionar é a forma de navegar entre as vistas relacionadas a sinais

histórico e de alarme e como selecionar uma entrada específica dentro da árvore de

elementos.

A vista que desempenhará este papel será chamada de explorer e terá como

objetivo prover controles de navegação dentro e entre os módulos principais da área de

conteúdo, além de mostrar o usuário atual e oferecer a opção de encerrar a sessão.

Isso implica em controlar simultaneamente as duas pilhas tanto do lado de

navegação quanto do lado de conteúdo, para fazer a mudança entre análise de histórico

e alarme e dentro desses escolher quais fontes de dados e intervalos serão consideradas.

Para o gerenciamento da pilha de navegação escolhemos o componente acordeão

(classe “Accordion” no Flex) e dentro de cada elemento se encontram as árvores que

representam as configurações físicas dos sensores no caso de histórico, ou temporais no

13

Page 22: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

caso de alarme.

A figura abaixo ilustra o componente:

Figura 8: Diagrama do componente de navegação

Por fim, podemos apresentar os componentes em uma imagem completa de

como vai ser a interface levando em conta a área de navegação e conteúdo:

14

Page 23: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 9: Diagrama geral da interface

O próximo passo foi projetar uma arquitetura para realizar essa visão além de

permitir que novas perspectivas sejam adicionadas/retiradas com facilidade.

15

Page 24: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Capítulo 3

Introdução

A fim de construir softwares que tenham baixos custos de manutenção e

permitam que novas funcionalidades sejam adicionadas sem muitos transtornos, é

necessário que haja um isolamento entre o comportamento externalizado da classe e sua

implementação diante de seus colaboradores.

No caso de interfaces isso se expande para as vistas e, de maneira mais

específica, entre o que será mostrado e como será mostrado.

Desacoplar esses dois conceitos não é uma técnica nova e existem diversos

padrões de projeto que tratam desse problema, entre eles se destacam: Presentation-

abstraction-control, Model-view-controller, Model-view-presenter, dentre outros. Todas

essas soluções tem seus conjuntos particulares de vantagens e desvantagens e a escolha

deve ser baseada nas necessidades do projeto e da equipe. A abstração Model-view-

presenter, nos atende melhor e por isso será usada.

Model view presenter

Esse padrão, popularizado pelo GWT, consiste em separar os elementos de uma

interface em três categorias:

1. Modelo - se refere ao modelo de dados e os objetos de negócio que serão

manipulados pela interface.

2. Apresentação - lógica que implementa as regras de negócio.

3. Vistas - conjuntos de componentes que dão forma à interface.

Cada vista possui um apresentador associado responsável pelas regras de

negócio associadas à mesma. Essas vistas são gerenciadas por uma classe e tem seus

relacionamentos mapeados por outra, por fim elas se comunicam por meio de um

barramento de eventos.

Uma das vantagens fundamentais desse padrão é a facilidade de se testar a

camada de apresentação e a habilidade de conectar diferentes apresentadores pelo

16

Page 25: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

barramento de eventos, garantindo independência entre eles e a habilidade de

comunicação ponto-multiponto.

Quanto à testabilidade, o fato da vista e o modelo estarem desacopladas permite

que as classes de apresentação tenham testes unitários, e sua logica fique independente

de testes funcionais, que por sua vez dependem de macros frágeis ou intervenção

humana. Infelizmente tais testes ainda se fazem necessários para as vistas e para

homologação da interface como um todo.

A capacidade de quebrar a solução em módulos independentes, uma vez que a

estrutura central esteja definida, permite desenvolvimento simultâneo em equipe.

Embora não seja uma necessidade presente, os planos de expansão futuros irão exigir tal

flexibilidade.

Figura 10: Diagrama mostrando o relacionamento entre múltiplasinstâncias do conjunto apresentador e vista

Modelo

Engloba todos os objetos de negócio e estão subdivididos em três categorias:

• Série de dados - contém todas as informações de uma fonte de dados

durante um intervalo definido.

• Unidades de processamento - objetos como filtros, modificam os dados

presentes da série (ex.: filtro passa baixa), ou máscaras que modificam

dados a serem exibidos mas a série permanece intocada (ex.: FFT).

17

Page 26: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

• Objetos de valor - são aqueles que participam da comunicação entre

cliente e servidor encapsulando valores cujo conjunto tem um significado

específico.

Dessas categorias, a classe que se destaca é a “DataSeries” que contém todas as

informações relevantes para a análise de uma fonte de dados durante um período de

tempo. Dentre estas incluem-se nome, título, período de amostragem, marcações de

início e fim de intervalo, uma estrutura de filtros que mapeia a configuração das

unidades de processamento ligadas à série e um atributo que faz um cache da seleção

mais recente, de forma a otimizar o sistema de redesenho entre as vistas.

Dada a necessidade de gerir várias fontes de dados em abas de análise e módulos

diferentes, devemos ser capazes de identificar séries da mesma fonte em períodos ou

módulos diferentes. Para isso, utilizaremos como chaves únicas a combinação do nome

da análise, que é um identificador único na aplicação, e o nome da série que é único

dentro de uma análise. Dessa forma podemos garantir o roteamento correto de páginas

vindas do servidor e de eventos disparados em diversos pontos da interface.

Esse mapa de séries de dados será atribuído a uma classe que será responsável

por sua gestão.

A estrutura de filtros, por sua vez, é uma implementação do padrão de projeto,

Filter[1]. Atualmente a essa estrutura foram impostas algumas limitações como a

presença de apenas um filtro de um determinado tipo, ou o fato de não está aberto ao

usuário o uso de nomes para identificá-los.

Já os filtros em si são do tipo FIR com o uso da janela de Kaiser. Essa janela foi

escolhida por sua flexibilidade, o seu formato pode ser alterado através de um

parâmetro, o que permite ao usuário fazer uma especificação bem detalhada em

frequência.

A partir dessa família de funções podemos disponibilizar os seguintes filtros

para os usuários:

• Passa Baixa - frequências a partir do corte serão atenuadas.

• Passa Alta - frequências até o corte serão atenuadas.

• Passa Banda - frequências fora do intervalo entre os dois cortes serão

atenuadas.

• Rejeita Banda - frequências entre os dois cortes serão atenuadas.

18

Page 27: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Vista

Contém os componentes e a sua configuração. Não deve ter conhecimento dos

detalhes da apresentação ou do modelo apenas o tipo e quantidade de componentes

assim como seu posicionamento. Nossa adaptação também inclui lógica sobre efeitos e

estilos visuais.

Ela se comunica diretamente com o apresentador e seus componentes. O

apresentador, no entando, vê apenas uma interface, de forma que esta solução apresenta

vantagens na testabilidade e na flexibilidade caso um conjunto de regras de negócio

tenha de ser visualizada de uma maneira diferente.

Figura 11: O apresentador deve se relacionar com avista através de uma interface

Como exemplo, podemos imaginar a vista que descreve a janela de resumo. Essa

vista tem apenas um componente, um gráfico, que ocupa o espaço inteiro dessa vista.

Ela conhece os estilos associados a este componente e as regras relacionadas ao

movimento da ferramenta de seleção, mas não sabe o impacto que essas ações têm no

modelo e nas demais classes de apresentação, sua responsabilidade, neste caso, fica

limitada a passar o resultado dos movimentos da ferramenta para o apresentador

delegando a lógica de negócio a este.

19

Page 28: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Apresentador

A camada de apresentação será responsável pela lógica de negócio relacionada

às vistas da aplicação. Ela tanto recebe comandos e informação do usuário através das

vistas, como executa a lógica necessária para fazer as alterações no modelo. Por outro

lado a mesma também recebe notificações de mudança no modelo e as comunica pela

vista.

É o componente da arquitetura fundamental para que o isolamento entre a vista e

o modelo seja realizado, de forma que os elementos do modelo enxergam uma interface

de apresentação e a vista uma outra. Já a apresentação vê as interfaces dos dois lados e

se responsabiliza pela troca de informações entre eles.

Figura 12: O apresentador expõe apenas interfaces para seusinterlocutores

Essa configuração permite que as vistas possam ser trocadas sem alterações no

apresentador e que suas interações possam ser testadas com maior facilidade.

Gerente de aplicação

Um conjunto de componentes visuais, suas regras de negócio e modelo de dados

associado formam uma, e apenas uma vista. No entanto, desejamos uma aplicação

inteira e algo mais se faz necessário. Precisamos de uma estrutura que agregue e

organize todas as vistas presentes em uma estrutura coerente.

O gerente da aplicação é o elemento central dessa estrutura. Ele é responsável

20

Page 29: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

pelas lógicas que se aplicarão à coletividade dos objetos de apresentação. Essas incluem

a lógica de inicialização, instruções de como as vistas se relacionam, credenciais do

usuário e coordenação da comunicação com a camada básica de aplicação, que pertence

ao ambiente Flash.

Assim que a aplicação é iniciada o gerente é responsável pela coleta das

credenciais do usuário, que nesse ponto já está com sua sessão validada, inicia o sistema

de aviso e executa as instruções que criam e configuram todas as vistas de acordo com

uma série de regras pré-estabelecidas.

Outras responsabilidades incluem pedir ao servidor informações sobre as

configurações das árvores de histórico e alarme, e manter uma coleção com todos os

apresentadores ativos.

Este conjunto de responsabilidades não é nealizado apenas pelo gerente, ele é

também delegado a outras classes que veremos a seguir:

• SystemListener - monitora o canal de sistema entre o servidor e o cliente.

Os principais objetivos são a manutenção de uma conexão ativa e o

recebimento de mensagens que tenham o escopo do sistema como um

todo.

• Assembler - constrói todos os apresentadores e suas vistas e os

interconecta de acordo com um conjunto de regras. Nesta implementação

o conjunto é imutável e é diretamente codificado.

O relacionamento entre essas classes foi mapeado abaixo.

Figura 13: Gerente da aplicação e seus colaboradores

21

Page 30: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

A partir desta estrutura de classes é possível desenhar uma sequência de

inicialização para o aplicativo.

Figura 14: Diagrama de sequência para a inicialização da aplicação

Uma vez que o usuário tenha suas credenciais autenticadas, o gerente busca no

serviço de avisos o catálogo das mensagens de erro do sistema e espera uma resposta.

Independente da resposta, caso as mensagens não sejam recuperadas, o sistema usará as

já presentes no código e inicia o processo de criação e organização das vistas. Uma vez

que as últimas tenham sido adicionadas à aplicação, o processo pode ser retomado e é

feito um último pedido pelas árvores de topologia e de alarme, onde a interface é

liberada ao uso.

Transmissor de eventos, barramento e controladores

Como foi abordado no item anterior, esta aplicação terá muito mais do que um

simples conjunto vista - apresentador. Mesmo que as vistas já estejam organizadas e

interligadas na estrutura visual de forma a constituir uma aplicação, ainda não foi

explicado como esses conjuntos podem se comunicar com a infra-estrutura e entre si.

A princípio, a maneira mais intuitiva seria fazer a comunicação com chamadas

diretas de métodos, usando interfaces e outras técnicas para diminuir o acoplamento. No

entanto, esta solução não é o suficiente neste caso. O objetivo da arquitetura é promover

a facilidade de adição e remoção de vistas e estas técnicas implicariam na mudança do

22

Page 31: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

código de apresentadores existentes na adição de novos.

Para atender ao objetivo de flexibilidade de adição e remoção de vistas foi

usada uma alternativa baseada em eventos de modo que o emissor e o receptor não se

referenciem diretamente e possamos trocar informações entre um apresentador e um

conjunto dos mesmos. Contudo, essa alternativa tem um custo e complexidade maiores,

envolvendo um maior número de chamadas de métodos e classes.

Desta forma é importante limitarmos o uso de eventos, a fim de não

comprometermos o desempenho da interface.

Continuaremos a definição da infra-estrutura de comunicação com a definição

de dois termos importantes:

• Chamadas horizontais - ocorrem entre a vista e o seu apresentador.

• Chamadas verticais - são feitas entre apresentadores e entre

apresentadores e infra-estrutura.

Chamadas horizontais são mais numerosas e tem um destinatário fixo. Logo

chamadas diretas proporcionam a melhor solução. Já as chamadas verticais apresentam

um cenário diferente: poucas chamadas envolvendo um ou mais destinatários que

provavelmente crescerão em número à medida que novas funcionalidades forem

adicionadas, o que torna a estrutura de eventos a solução mais atrativa.

A estrutura foi composta pelos elementos listados a seguir:

• SomaController - responsável pelo roteamento dos eventos do

transmissor até seus receptores registrados.

• EventBoradcaster - faz a transmissão dos eventos e se liga diretamente ao

controlador.

• ICommand - todas as classes receptoras tem que implementar essa

interface que possui os métodos usados pelo controlador para entregar

eventos.

• BaseEvent - serve de base para todos os eventos. Possui um atributo de

escopo que permite que um tipo específico possa ter diferentes grupos de

receptores.

Para o receptor basta apenas se registrar no ‘SomaController’ em um escopo

definido e ofereça uma instância de uma classe que implemente a interface

‘ICommand’ , enquanto que o transmissor apenas necessita chamar a classe

‘EventBroadcaster’ para transmitir o evento. Caso os escopos de transmissão e recepção

sejam iguais o evento chegará ao elemento receptor.

23

Page 32: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

O apresentador que faz a transmissão se relaciona com as classes do sistema de

comunicação conforme ilustrado abaixo:

Figura 15: Eventos são transmitidos via EventBroadcaster eroteados via SomaController

Vistas Principais

Com a infra-estrutura definida podemos nos concentrar nas vistas que

implementarão as funcionalidades da aplicação.

Vista da análise de alarme

Representa a análise de uma ocorrência de alarme. Tem como objetivo prover

gráficos e ferramentas necessárias para uma análise preliminar dos dados contidos. A

fim de atender esta demanda a vista é composta de duas outras vistas que serão

detalhadas mais adiante. A implementação possui este conjunto de responsabilidades:

• Lógica de negócio para inserção de novas séries de dados.

• Fazer chamadas de requisição de dados, e lidar com as respostas.

• Coordenar as mudanças de domínio.

• Prover um escopo pelo qual todos os apresentadores possam se ligar a

fim de receber os eventos relevantes.

Com relação ao primeiro tópico, faremos referência ao caso de uso de número

dois. Nesse caso as seguintes regras são estabelecidas na seção de extensões: “Um

alarme de cada vez”, “Fontes de dados devem ser compatíveis”.

24

Page 33: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

A fim de esclarecermos o significado destas regras teremos que levar em conta a

forma com que os alarmes são categorizados. A topologia de alarme é dividida em

tempo e tipo, onde os níveis ano, mês, dia e alarme identificam a ocorrência em relação

ao tempo, já os sensores estão organizados por tipo. Dessa forma a primeira regra citada

significa que duas ou mais fontes de dados em uma aba de alarme específica têm que

pertencer ao mesmo alarme.

A segunda regra, por sua vez, limita uma aba ao mesmo tipo, e a última impede

que uma mesma fonte de dado seja usada mais de uma vez.

Já o segundo tópico se refere às chamadas ao servidor e a recepção das páginas

de dados. Cabe ao apresentador dessa vista recebê-las e avisar, via barramento de

eventos, a sua chegada para todas as outras partes envolvidas.

Por fim, para o escopo poderemos usar o próprio identificador da vista, já que

este deve ser único na aplicação.

Embora essas responsabilidades estejam no escopo da vista e seu apresentador,

algumas delas são delegadas às classes colaboradoras a fim de podermos reusar as

lógicas nelas contidas.

• RawDataSeriesValidator - faz a validação das fontes de dados de acordo

com as regras descritas anteriormente.

• OccurrenceRequestService - comunicação do tipo RPC, faz os pedidos e

devolve as respostas.

• DataSeriesListener - escuta o canal apropriado por cabeçalhos e páginas

de dados publicados pelo servidor.

Figura 16: Apresentador do painel de análise(bruta) e seus colaboradores

A parte visual é bem simples contendo apenas os componentes que realizarão as

trocas de domínio. Essas trocas devem ser avisadas e mais uma vez o barramento de

eventos será usado.

25

Page 34: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Vista da análise de histórico

A segunda implementação da aba de análise tem os mesmos objetivos que a

anterior com pequenos desvios na lógica dada as diferenças entre sinais históricos e de

alarme. Estes desvios incluem diferentes regras de validação, e as janelas de tempo são

determinadas pelo usuário e não pelo sistema.

No caso de alarmes, seu início e fim estão definidos pelo serviço que o agendou,

já no caso do histórico a coleta de dados ocorre permanentemente, e uma janela de

tempo deve ser escolhida pelo usuário.

As regras de validação para esta vista só contemplam o tipo e a multiplicidade

das fontes. Dessa forma o diagrama de classes pode ser desenhado dessa maneira:

Figura 17: Apresentador do painel de análise(histórica) e seus colaboradores

Unidades de visualização

Não existem ferramentas capazes de resolver todos os problemas, dessa forma se

faz necessário disponibilizar opções adequadas a múltiplos cenários. Para esta versão as

vistas concretas serão:

• Sinal tempo - gráfico de linha com o eixo horizontal marcando tempo.

• FFT módulo - módulo da transformada discreta de Fourier.

• FFT fase - fase da transformada discreta de Fourier.

• Distribuição normal - outro gráfico de linha que mostra uma distribuição

gaussiana calculada com os parâmetros retirados da janela de análise.

• Histograma - gráfico de colunas mostrando a densidade de amostras em

intervalos distintos.

• Tabela de valores - tabela onde cada linha é composta por parâmetros

26

Page 35: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

estatísticos calculados de cada série.

O FLEX possui uma biblioteca para apresentação de dados com formas definidas

para tratar dados em gráficos e tabelas, desta forma a solução tem suas condições de

contorno ditadas por esse conjunto de regras.

É importante saber que os dados a serem usados nestes componentes visuais

devem estar contidos em uma implementação da classe “Series” e que estas variam com

a classe de visualização a ser usada, exceto para os elementos de tabela.

De modo a acomodar as duas maneiras em uma estrutura única usaremos uma

classe para encapsular esses detalhes de implementação, assim os apresentadores podem

tratar os procedimentos de adição e remoção de séries de dados de forma uniforme.

O diagrama abaixo mostra a classe “SeriesContainer” que isola os requisitos dos

gráficos e tabelas da classe de apresentação.

Figura 18: Abstração do container de séries permite o tratamento universalpara diversos tipos de representações gráficas

O próximo requisito dos componentes gráficos é a organização das séries em um

vetor que deve ser atribuído ao apresentador. A classe “UnitDisplayPresenter” fará o

gerenciamento dos elementos que englobam os dados que serão mostrados nas unidades

de visualização, e haverá um subclasse, “GraphUnitDisplayPresenter”, que será

responsável pela lógica específica para os gráficos.

27

Page 36: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Esses relacionamentos são descritos na imagem a seguir:

Figura 19: Unidades de visualização e sua especialização para gráficos

Outra necessidade a se levar em conta é a inclusão de funções que processem o

sinal antes que seja desenhado. Como exemplos temos transformadas de Fourier ou

funções para o cálculo de parâmetros de estatística que não fazem parte dos dados

originais mas sua execução é um passo necessário para a formatação dos dados a serem

apresentados na vista. Esses artefatos serão chamados de máscaras. As principais serão

detalhadas a seguir:

• Decimação - para os gráficos de linha existe uma relação entre o número

de pixeis disponíveis no monitor e o espaço matemático descrito pela

abstração a ser apresentada. Quando esta relação se reduz teremos

sobreposição de pontos que afeta a legibilidade do gráfico e o

desempenho do algoritmo de desenho. A fim de reduzir esse efeito esta

máscara faz uma nova amostragem da série, eliminando pontos menos

relevantes visualmente.

• FFT Módulo / Fase - a transformada de Fourier resulta em uma sequência

de números complexos em função da frequência. A forma mais comum

de visualizar essa informação é através da quebra em dois gráficos com o

módulo em um e a fase em outro. Cada máscara recebe a sequência e

calcula o valor correspondente.

• Estatística - este conjunto de máscaras faz a transformação das séries, no

tempo, em funções estatísticas correspondentes.

Uma observação a ser feita é que nem todas as máscaras estão associadas a uma

vista, algumas delas podem estar associadas a um outro conceito. Por exemplo a

máscara que realiza o cálculo da FFT está associada ao domínio da frequência de

maneira a minimizar a quantidade de cálculos a serem realizados.

28

Page 37: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Por fim, deverá existir um mecanismo que controle a forma com que as vistas

atualizem as informações em respostas à mudanças no modelo. É desejável que ele evite

sequências desnecessárias de cálculo de maneira que apenas unidades visíveis

participem desta. O diagrama de sequência pode ser visto abaixo:

Figura 20: Diagrama de sequência para atualização da janela de detalhe

A sequência descrita acima pode ser disparada por três cadeias de eventos:

1. Visibilidade - Na troca de domínio ou subdomínio vistas mudam sua

visibilidade, logo aquelas que se tornam visíveis precisam ter seu

conteúdo atualizado.

2. Cache - se o cache da série de dados for invalidado as vistas devem fazer

o mesmo. Formas de invalidação do cache:

1. Estrutural - inserção / remoção de um filtro ou outra unidade de

processamento.

2. Janela - mudança do período de tempo a ser analisado.

O último componente da vista é a barra de ferramentas que possui um conjunto

de botões para ativar funcionalidades como filtros, réguas, exportar para formato de

planilha, etc. Estas funcionalidades estão agrupadas e existe um elemento “fábrica” que

tem como função construir a barra com os conjuntos relevantes para a vista.

A seguir o relacionamento entre a fábrica, a barra e seus grupos:

Figura 21: Relacionamento entre afábrica das barras de ferramentas e os

elementos construídos

29

Page 38: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Já que a barra faz parte da vista, cada uma delas precisa implementar uma

interface de modo a se comunicar com cada grupo de ferramentas, conforme descrito a

seguir.

Figura 22: Interface para tratar os eventos gerados por um grupo de ferramentas

Os grupos esperam uma interface específica às suas necessidades, e cada uma

delas deve ser descendente da interface de marcação “IToolBoxHandler”. Os grupos

existentes se dividem em:

• Controles gráficos - ferramentas como réguas, zoom, mira, que usam a

camada de anotação dos elementos gráficos. Essas ferramentas não

afetam o modelo, só a visualização é alterada.

• Controles de filtragem - controlam a inserção e remoção de filtros no

modelo de dados.

• Controles de comando - por enquanto disponível apenas no histórico,

contém apenas a ferramenta responsável por exportar os dados

disponíveis no intervalo de seleção para um formato de planilha.

Vista janela de resumo

Todos os dados mostrados nas unidades de visualização são um subconjunto dos

disponíveis à análise. A janela de resumo é responsável por mostrar o conjunto

completo e prover o controle que faz a seleção do intervalo de interesse.

A vista em si é muito similar às unidades de visualização contendo um gráfico,

máscaras e séries, porém não há uma barra de ferramentas, o controle de intervalo é o

único componente na camada de anotação e o eixo vertical, do gráfico, não é

desenhado.

Os dados não mudam com o modelo da análise, a não ser que novos pacotes

cheguem do servidor ou a série seja removida. Outras mudanças como inserção de

filtros não é refletida nessa vista.

30

Page 39: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 23: Diagrama de sequência para o tratamento de novas páginas publicadasna análise

O diagrama de sequência acima mostra a mudança da vista quando uma página

de dados nova é recebida do servidor.

Existe um desvio nos caminhos dependendo da implementação do apresentador,

que definirá qual transformação será aplicada aos dados da página. Após o

processamento o gráfico é atualizado.

Explorador

A vista tem a função apenas de prover funcionalidades relacionadas à navegação

e à escolha dos dados a serem solicitados do servidor.

Tanto para séries de alarme e históricas as fontes são dispostas em uma estrutura

de árvore, essa estrutura é implementada no FLEX pelo componente “Tree” e aceita um

texto no formato XML como base para o desenho. Esse arquivo é construído pelo

servidor e provido à interface em sua carga.

Já a sincronização entre as pilhas do explorador e da vista principal é feita

através do barramento de eventos quando o primeiro intercepta o evento de mudança do

componente de navegação, “Accordion”, e o redireciona para o segundo que muda seu

estado de forma análoga.

31

Page 40: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Capítulo 4

Resultados

Nas próximas páginas serão apresentadas uma série de telas capturadas

mostrando as vistas principais da aplicação separadas por funcionalidades.

Alarme

Primeiro a sequência de vistas relacionadas à funcionalidade de alarme. Sinal

simulado a 1Hz.

Figura 24: Sinal de Alarme (Tensão no estai A) no domínio do tempo

Figura 25: Agora no domínio da frequência (módulo apenas)

32

Page 41: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 26: Módulo e fase

Figura 27: Histograma

Figura 28: Distribuição normal com os valores estatísticos das amostras

33

Page 42: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 29: Tabela de todos os valores estatísticos calculados

Figura 30: Adicionando um filtro passa banda com faixa de passagem entre0,2Hz e 0,3Hz, transição de 0,05Hz e atenuação de 10dB

Figura 31: Sinal filtrado no tempo

34

Page 43: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 32: Resultado da filtragem na frequência

35

Page 44: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Histórico

Para o histórico teremos dados calculados a partir de uma janela de dez minutos.

Figura 33: Série históricas(média e mínimo) progressão temporal

Figura 34: Histograma de ambas as séries

36

Page 45: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Figura 35: Distribuição Normal

Figura 36: Tabela com os valores estatísticos calculados para ambas as séries

37

Page 46: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Objetivos

Com relação aos definidos com o cliente, todos os casos de uso foram

implementados, tanto o fluxo principal quanto as extensões. As capturas de telas no item

anterior ilustram este resultado e descrições detalhadas sobre cada caso de uso estão

disponíveis no apêndice A.

Já os definidos do lado dos desenvolvedores, a capacidade de criar módulos

independentes que possam ser adicionados e retirados, foi bem sucedida. A natureza

modular das vistas adicionado à delegação da montagem das mesmas para um

componente específico e comunicação entre os apresentadores tornou esse objetivo em

realidade. Essa mesma independência também proporciona facilidade na manutenção de

código já que funcionalidades específicas estão localizadas em um conjunto fechado de

classes.

Uma das maiores vantagens do MVP, testabilidade das regras de negócio sem o

envolvimento das vistas, não teve seu potencial realizado. Para que isso possa ser feito

se faz necessário que a linguagem da implementação tenha um suporte razoável a testes

unitários. O ActionScript tem bibliotecas escritas por usuários que tentam disponibilizar

algum tipo de infra estrutura para tais testes, mas na prática o fluxo de trabalho dos

mesmos impossiblita o seu uso em projetos maiores do que provas de conceito. Por essa

razão, nessa iteração serão mantidos os testes funcionais como forma de teste para

regras de negócio.

Limitações

Embora o componente responsável pela montagem da aplicação, referido como

Assembler, tenha uma grande contribuição para o sucesso da arquitetura, ele pode ser

melhorado. A implementação inicial não passa de um conjunto de instruções para

criação e montagem das vistas e seus apresentadores. Esse formato hard coded exige

que a aplicação inteira seja recompilada para qualquer mudança de configuração e como

instalações, geralmente, implicam em diferentes configurações, seria necessário uma

versão do Assembler para cada instalação. Além disso se torna difícil limitar

funcionalidades a grupos de usuários, assim como outras tarefas relacionadas à

segurança da aplicação.

Quanto à parte dos gráficos existem duas limitações importantes. A primeira, é a

38

Page 47: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

especificação que apenas uma grandeza pode ser analisada no gráfico em um

determinado momento. Isso claramente vai atrapalhar o cruzamento de dados entre

carga nos estais e velocidade do vento entre outras análises.

A segunda é a classificação da barra de ferramentas para os gráficos como

componentes, e não como vistas. A ausência de um apresentador associado cria um

desvio de comportamento onde no futuro podemos ter um componente contendo regras

de negócio, o que violaria os princípios da arquitetura, além de tornar mais difícil a

adição e remoção de funcionalidades relacionadas a uma vista ou instalação específica.

Por fim a linguagem em si, ActionScript, não atende completamente às

necessidades para um desenvolvimento produtivo. Como exposto anteriormente, a parte

de testes não tem suporte nativo, o uso de depuradores implica na instalação de uma

versão distinta do Flash Player, que tem um atraso considerável em relação à versão

para o consumo, o que gera riscos para a segurança da máquina de desenvolvimento,

além de suporte inexistente para processamento paralelo.

Soluções

O Assembler pode ser refatorado para carregar dinamicamente as

funcionalidades baseado no conteúdo do banco de dados e das credenciais do usuário.

Dessa forma podemos resolver tanto a parte de segurança quanto a fragilidade do

código em termos da flexibilidade de configuração.

Já a parte gráfica pode ser melhorada a nível de design. Tanto no levantamento

da restrição de uma grandeza por unidade e a adição de suporte a múltiplos eixos, a fim

de lidar com possíveis diferenças de escala, quanto na promoção das barras de

ferramentas para vistas com seus próprios apresentadores. Essa mudança eliminaria o

risco de futuros itens violarem os princípios da arquitetura e facilitará a montagem de

outras variantes e sua inserção em vistas novas ou existentes.

O Actionscript, no entanto, não apresenta sinais de melhora no futuro próximo.

Com os navegadores líderes de mercado cobrindo mais de 80% do HTML 5, é razoável

concluir que esta será a última geração de aplicações em Actionscript no que se diz

respeito ao projeto SOMA.

39

Page 48: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Conclusão

O projeto foi bem sucedido em todos os principais objetivos embora haja espaço

para melhorias e expansão. Os dados estão sendo corretamente coletados e exibidos. A

arquitetura é flexível o suficiente para adição de novas vistas de maneira eficiente e

falhas encontradas são fáceis de ser isoladas e removidas.

Em um contexto profissional esse projeto foi enriquecedor dada minha falta de

experiência com arquiteturas de software em geral. Os conceitos aprendidos durante a

execução desse projeto melhoraram a qualidade dos meus designs substancialmente.

40

Page 49: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Bibliografia

[1] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Pattern-Oriented System Architecture: A System of Patterns, Wiley, 1996.

41

Page 50: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Apêndice A

Arquitetura do Sistema

Figura 37: Arquitetura em detalhes do SOMA Torres

42

Page 51: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

Apêndice B

Casos de Uso

UC1: Visualizar histórico

Ator principal: Analista

Pré-requisitos: Usuário autorizado e lista de sensores disponível.

Resultado: Um conjunto de amostras das fontes selecionadas é mostrado na

perspectiva e no período que o analista desejar.

Fluxo Básico:

1. Usuário escolhe um período de tempo.

2. Usuário escolhe uma perspectiva.

3. Usuário escolhe um conjunto de sensores.

4. A interface gera um pedido ao servidor contendo os itens 1 e 3.

5. Servidor responde com um conjunto de amostras dos sensores listados no

item 3 durante o intervalo descrito pelo item 1.

6. A interface salva uma cópia em memória e mostra os sinais de acordo

com a persperctiva escolhida no item 2.

7. O procedimento pode ser repetido a fim de adicionar dados de novos

sensores.

Extensões:

1. Se um intervalo de tempo não for escolhido, o período das últimas 24h

será usado no lugar.

2. Cada painel de análise só pode agregar dados de uma determinada

grandeza. Caso mais de uma seja selecionada apenas uma será

apresentada.

3. Se a conexão com a rede em que o servidor está localizado estiver

indisponível o usuário será aconselhado a tentar novamente uma vez que

esta for restaurada.

4. Se um ou mais sensores não possuírem informação no período em

questão deve-se avisar ao usuário.

5. O intervalo de tempo em questão pode ser alterado. Nesse caso os dados

43

Page 52: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

atuais serão removidos e substituídos pelos novos.

UC2: Visualizar alarme

Ator principal: Analista

Pré-requisitos: Usuário autorizado e lista de alarmes disponível.

Resultado: Um conjunto de amostras das fontes selecionadas é mostrado na

perspectiva que o analista desejar.

Fluxo Básico:

1. Usuário escolhe um conjunto de sensores dentro de uma entrada de

alarme.

2. Usuário escolhe uma perspectiva.

3. A interface gera e envia um pedido ao servidor com os dados presentes

no item 1.

4. Servidor responde com os dados do alarme em questão durante a duração

registrada do alarme.

5. A interface armazena uma cópia em memória e mostra os sinais de

acordo com a perspectiva escolhida no item 2.

6. O procedimento pode ser repetido a fim de adicionar dados de novos

sensores desde que estejam relacionados a essa ocorrência de alarme em

particular.

Extensões:

1. Apenas leituras de sensores pertencentes a uma instância de alarme, ou

compatíveis podem ser selecionados, os demais devem ser filtrados e o

usuário avisado.

2. Se a conexão com a rede em que o servidor está localizado estiver

indisponível o usuário será aconselhado a tentar novamente uma vez que

esta for restaurada.

3. Se um ou mais sensores não possuírem informação no período em

questão o usuário deve ser notificado.

UC3: Seleção de intervalos

Ator principal: Analista

Pré-requisitos: Usuário autorizado e um conjunto de dados está sendo

visualizado.

Resultado: Na perspectiva selecionada, mostra-se um subconjunto do sinal em

44

Page 53: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

um intervalo de tempo específico.

Fluxo Básico:

1. Usuário seleciona um subconjunto, dado o intervalo completo carregado

na interface.

2. A perspectiva selecionada é atualizada e mostra apenas o resultado

condizente com o intervalo selecionado.

Extensões:

1. Neste caso o intervalo não pode violar os limites impostos pelos casos de

uso: UC1 e UC2

2. Uma vez que o tamanho do intervalo seja escolhido deverá ser possível

também alterar sua posição.

3. Caso haja algum tipo de filtro esteja sendo aplicado ao sinal, este

também deverá ser aplicado ao subconjunto.

UC4: Aplicar processamento

Ator principal: Analista

Pré-requisitos: Usuário autorizado e um conjunto de dados está sendo

visualizado.

Resultado: O conjunto à mostra na perspectiva selecionada é modificado pelo

processamento selecionado.

Fluxo Básico:

1. Usuário seleciona algum tipo de processamento.

2. A interface aplica o processamento a todos os sinais presentes no painel

selecionado.

3. A interface atualiza a perspectiva uma vez que o sinal resultante seja

calculado.

Extensões:

1. O processamento pode ter diferentes níveis de complexidade em relação

a sua configuração. Alguns podem exigir parâmetros e outros podem não

fazer nenhum pedido.

2. Se o processamento falhar o usuário precisa ser avisado.

UC5: Exportar dados

Ator principal: Analista

Pré-requisitos: Usuário autorizado e um conjunto de dados está sendo

45

Page 54: Arquitetura e interface para o módulo de análise do ...monografias.poli.ufrj.br/monografias/monopoli10014627.pdf · medir o impacto de fenômenos meteorológicos sobre a mesma

visualizado.

Resultado: Uma planilha é gerada na máquina do usuário contendo os dados de

todos os sensores em uma análise específica.

Fluxo Básico:

1. Usuário seleciona a funcionalidade de exportação.

2. A interface agrega toda a informação no domínio do tempo em uma

planília.

3. A interface pergunta ao usuário o local onde o arquivo gerado deve ser

salvo.

4. O usuário escolhe um local confirmando sua intenção de salvá-lo.

5. A interface manda o arquivo recém gerado para a localização descrita no

item anterior.

Extensões:

1. O intervalo de tempo está associado ao escolhido no UC3.

2. Se a quantidade de amostras ultrapassar um limite superior o processo é

cancelado e o usuário deverá selecionar um conjunto menor.

3. Não haverá recuperação automática no caso de erros no sistema do lado

do usuário(capacidade de armazenamento esgotada, falhas de escrita,

etc).

46