This is an old revision of the document!


Como implementar uma nova Spec

Implementar uma nova Spec é um processo trabalhoso e por vezes demorado. Como trabalhamos há mais de dois anos com essa atividade, temos uma certa experiência no assunto, que está traduzida nesta dica.

Os passos são os seguintes:

1. Ler a Spec

  • Não tem como fugir, você precisa ler o texto da especificação, nem que seja a parte conceitual → para que serve isso?
  • Nessa leitura, identifique os key-methods (para um serviço) ou as principais classes, para começar os testes.
  • Nesta fase e importante ver quem fez o quê. Muitas Specs já possuem implementações livre ou exemplos → use-os para separar o essencial das firulas

2. Mapear para conceitos TerraLib

  • Uma vez identificados os métodos para um serviço, ou objetos para um formato, passe a mapear esses conceitos para o que existe na TerraLib.
  • Em princípio, a TerraLib dá suporte a muita coisa mesmo, nativamente. Outras só adaptando, mas mesmo assim possível
  • Nesta fase convém implementar esses conceitos em arquivos de testes simples, para identificar se a TerraLib pode ser usada
  • Só passe adiante se confirmar que é possível implementar os conceitos da Spec na TerraLib

3. Modelar as classes C++

  • Como praticamente TODAS as Specs usam XML Schema para modelar seus conceitos, e poder validar seus XMLs, realize a tradução desses Schemas para classes C++ usando UML
  • O Jude é uma boa ferramenta para tal
  • Não confie em ferramentas que automatizem esse processo! Só a prática leva ao entendimento completo do problema e a modelagem correta dos conceitos. Existem várias sutilezas nos XML Schemas! Os próprios XSDs da Spec XSD são muito difíceis de entender
  • O diagrama de classes em UML vai ajudá-lo bastante na hora de implementar as classes em C++


FIXME por exemplos

4. Implementar a Spec

  • A fase de implementação consiste em traduzir os diagramas UML para classes em C++
  • Copie a documentação da Spec (no texto ou no Schema) para a documentação da classe → esses dados passam a fazer parte da implementação
  • Implemente as classes se preocupando sempre com os métodos writeToXML e readFromXML, que são o núcleo da Spec
  • Se for implementar um formato, faça os métodos de conversão de/para conceitos TerraLib (Exemplo: TeKMLPolygon ↔ TePolygon, TeGMLPolygon ↔ TePolygon)
  • Se for implementar um serviço, siga os passos seguintes:

4.1 Classes comuns

4.2 Classes servidor

4.3 Servidor CGI

4.4. Classes cliente


Navigation