O Projeto de DOG

O conteúdo a seguir não é essencial ao usuário de DOG, que não necessita dele para conseguir produzir jogos distribuídos usando a solução construída. Ele é voltado a quem deseja conhecer mais a fundo o projeto e a implementação de DOG.

DOG foi produzido a partir da abordagem Beyond, de desenvolvimento orientado a componentes, apresentada no livro “Desenvolvimento orientado a componentes com UML”, e também apresentada no curso em vídeo com mesmo título, ambos de autoria de Ricardo Pereira e Silva, desenvolvedor de DOG. Seguindo a abordagem adotada e dado à necessidade de suportar o desenvolvimento de jogos distribuídos, DOG foi desenvolvido como uma aplicação web cliente-servidor, estruturada como um software orientado a componentes.

A partir da abordagem adotada, foram produzidos três tipos de especificação UML: de DOG, como um software orientado a componentes, das interfaces dos componentes e dos componentes.

O desenvolvimento seguiu a sequência de etapas prevista, descrita no diagrama de atividades a seguir.

Etapas do desenvolvimento de programa orientado a componentes [Silva, 2018]


Especificação de DOG como um software orientado a componentes

Foi definido que DOG seria composto por três componentes, um no lado servidor e dois no lado cliente. O componente do lado servidor foi denominado DOG Server. Para tornar transparente ao usuário de DOG a comunicação em rede, o lado cliente foi organizado como dois componentes conectados: DOG Framework, responsável pela intermediação da comunicação com DOG Server e o componente chamado Specific Game, na verdade uma “casca” a ser preenchida pelo desenvolvedor de um jogo especifico. A imagem a seguir (deployment diagram da especificação de DOG) mostra a organização dos componentes de DOG.

A especificação de DOG contém o resultado da execução das etapas do desenvolvimento, até a etapa “especificação estrutural do programa”, mais o feedback da etapa “especificação das interfaces dos componentes”.

Baixar a especificação UML de DOG como software orientado a componentes.


Especificação das interfaces dos componentes de DOG

A partir da especificação de DOG, o esforço seguinte foi a etapa de especificação das interfaces dos seus três componentes.

Baixar as especificações UML das interfaces dos três componentes de DOG.


Especificação dos componentes de DOG

A partir da disponibilidade das especificações das interfaces dos três componentes, o esforço seguinte foi a etapa de desenvolvimento dos componentes, detalhada no diagrama de atividades a seguir.

Etapas do desenvolvimento de componente [Silva, 2018]

Baixar as especificações UML dos três componentes de DOG.


Interfaces dos componentes de DOG

Na construção dos componentes, ao invés da adoção de Component Interface Pattern, prevista na abordagem Beyond, a opção foi por soluções mais compactas, em função da comunicação bastante simples entre os componentes:

  • • Componente DOG Server: sua interface de componente é uma API que responde a cinco requisições HTTP (POST);
  • • Componente DOG Framework: sua interface de componente é implementada por meio de duas fachadas (design pattern Facade), sendo uma para comunicação com o componente DOG Server e a outra para comunicação com o componente Specific Game;
  • • Componente Specific Game: sua interface de componente é implementada por meio de uma fachada, para comunicação com o componente DOG Framework. Para saber mais sobre design pattern Facade, assistir ao vídeo Facade.

Implementação dos componentes de DOG

Os três componentes foram implementados em Python, sendo que DOG Server foi implementado sob o framework Django e seu projeto omite todas as especificidades inerentes ao uso desse framework, destacando apenas a lógica do servidor.

Baixar a implementação de DOG Server.

A implementação de DOG Framework está disponível aos usuários, assim como a implementação (e projeto) de um jogo específico, o exemplo Gobblet Gobblers (ver demais páginas de DOG).


--------------------------------

[Silva, 2018] SILVA, Ricardo Pereira e. Desenvolvimento orientado a componentes com UML. Florianópolis, SC: Amazon, 2018. 283p.