1 laboratório de sistemas e tecnologia subaquática documentação da neptus framework arquitectura...
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
20
Laboratório de Sistemas e Tecnologia Subaquática
Perguntas?