1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura...

20
1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves

Transcript of 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura...

Page 1: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

1

Laboratório de Sistemas e Tecnologia Subaquática

Documentação da Neptus Framework

Arquitectura de Sistemas de Software 2006

José Pinto, Rui Gonçalves

Page 2: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

2

Laboratório de Sistemas e Tecnologia Subaquática

Estrutura da apresentação

Neptus Framework

Importância da documentação

Como documentar?

Principais tópicos

Ligação Documentação <-> código

Documentação da arquitectura

Alguns Padrões existentes (encontrados)

Resultados

Page 3: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

3

Laboratório de Sistemas e Tecnologia Subaquática

Neptus Framework

Sistema que permite controlar equipas de veículos de vários tipos: autónomos, semi-autónomos ou teleguiados

O sistema permite definir uma missão que consiste em vários mapas e planos individuais

O sistema é flexível na forma de ser facilmente possível adicionar novos tipos de manobras e veículos

Todos os veículos interagem através de uma plataforma de comunicação comum

Podem ser facilmente criadas consolas de operação para novos tipos de veículos ou missões.

z

Page 4: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

4

Laboratório de Sistemas e Tecnologia Subaquática

Importância da documentação

Neptus permite a rápida criação de novas aplicações mas inclui também aplicações completas.

A documentação é importante tanto para os programadores como os utilizadores finais

Dada a reutilização dos componentes existentes, também pode ser reutilizada a documentação nos manuais de utilização

Quais as melhores formas de documentar uma framework deste tipo?

z

Page 5: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

5

Laboratório de Sistemas e Tecnologia Subaquática

Como documentar - MediaWiki Permite uma fácil edição e consulta da

documentação

Permite a crição de hiperligações entre tópicos relacionados

Obtenção de feedback (comentários) dos utilizadores finais

Os responsáveis de cada módulo, documentam o seu “código”, os parceiros revêem a documentação.

z

Page 6: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

6

Laboratório de Sistemas e Tecnologia Subaquática

Principais Tópicos

Neptus Overview – Possibilidades da framework

Existing Applications – Aplicações que usam Neptus

Getting Started – Começo rápido (simple and fast)

Framework Architecture – Várias vistas da arquitectura

Design Patterns – Ajudam a entender a arquitectura

User Manuals – Utilização das aplicações existentes

z

Page 7: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

7

Laboratório de Sistemas e Tecnologia Subaquática

Documentação <-> código

Na documentação da framework existe necessidade de referir código existente

Foi criada uma extensão MediaWiki que permite ligar objectos ao seu Javadoc / Código fonte

r

Page 8: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

8

Laboratório de Sistemas e Tecnologia Subaquática

Documentação da arquitectura Várias representações da arquitectura

(deployment, comunicações, diagramas de classes, …)

Utilização de padrões para melhor entender a arquitectura

r

Page 9: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

9

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Singleton• ConfigFetch: Para que todas as classes tenham acesso

a ficheiros de configuração, é arrancado uma classe (sem construtor público) que carrega os ficheiros e depois os disponibiliza

• MissionConsole: A aplicação “de topo” que permite lançar outras consolas, não pode ser instanciada mais que uma vez.

r

Page 10: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

10

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Proxy• GuiUtils: Quando é necessário carregar uma imagem a

partir do disco, é utilizada o método GuiUtils.getImage() que carrega a imagem do disco apenas quando necessário, criando também uma cache de imagens já carregadas.

z

Page 11: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

11

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Observer• MapChangeListener: Sempre que é editado um mapa,

todos os seus observadores são notificados, reagindo de acordo

• VariableChangeListener: Quando os valores da árvore central são alterados, caso existam observadores estes são notificados

r

Page 12: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

12

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Composite• MapGroup: Esta classe permite criar um mapa a partir

de objectos (MapObject) ou da composição de vários mapas existentes.

z

Page 13: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

13

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Interpreter• ScriptTreeEvaluator: Existem vários observadores

(Padrão Listener) da árvore de variáveis que incluem condições em formato texto (JavaScript). Sempre que as variáveis observadas são alteradas, o texto é interpretado com o novo valor das variáveis.

r

Page 14: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

14

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

State• Maneuver: Para ser possível pré-visualizar um plano

(sequência de manobras), existe a classe IndividualPlanType que contêm uma lista de manobras e chama periodicamente o método maneuverFunction() da manobra activa até esta terminar. Em seguida é chamado o mesmo método da próxima manobra, …

z

Page 15: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

15

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Iterator• MapObject: Sempre que é pintado um mapa, são

iterados os seus objectos, de forma a todos eles serem pintados (usando o pattern Command).

• Renderer2DPainter: Esta classe representa uma layer genérica do mapa. Todas as layers activas são pintadas, uma de cada vez, quando o mapa é pintado (Exemplos: legenda, plano previsto, posição dos veículos, …)

r

Page 16: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

16

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Memento• MapType, GraphType, CheckListType: Todas estas

classes implementam a interface XMLOutputMethods que inclui os métodos asXML() e fromXML(), que permite guardar e carregar os objectos em disco.

z

Page 17: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

17

Laboratório de Sistemas e Tecnologia Subaquática

Alguns padrões encontrados…

Factory• NativeTypeFactory: Cada nó da rede especifica quais as

mensagens que são transmitidas através de um ficheiro XML. Os campos das mensagens são enviados como estruturas do C (formato little endian) e por isso é necessário criar classes dinamicamente que consigam obter os dados.

• ManeuverFactory: Todos os veículos suportados especificam as manobras suportadas, incluindo uma implementação (caminho para a classe que implementa). Quando é pré-visualizado um plano, é usada uma classe factory para gerar as manobras do veículo.

z

Page 18: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

18

Laboratório de Sistemas e Tecnologia Subaquática

Resultados

A documentação é facilmente reutilizável para a produção de manuais (utilização / desenvolvimento)

A documentação serve também de catálogo das possibilidades / componentes existentes, ficando assim os desenvolvimentos melhor documentados

r

Page 19: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

19

Laboratório de Sistemas e Tecnologia Subaquática

Resultados (cont.)

Foi criada uma nova consola para um veículo autónomo aéreo (AsasF) com o auxílio da documentação existente

r

Page 20: 1 Laboratório de Sistemas e Tecnologia Subaquática Documentação da Neptus Framework Arquitectura de Sistemas de Software 2006 José Pinto, Rui Gonçalves.

20

Laboratório de Sistemas e Tecnologia Subaquática

Perguntas?