From fd6867f8fa62d94d4c97e6f773ced6012831ce6a Mon Sep 17 00:00:00 2001 From: Joao Lucas Date: Sun, 24 Jun 2018 17:41:14 -0300 Subject: [PATCH 1/5] =?UTF-8?q?Arrumando=20as=20abrevia=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/wiki/Documento-de-Arquitetura.md | 39 ++++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/docs/wiki/Documento-de-Arquitetura.md b/docs/wiki/Documento-de-Arquitetura.md index f130f060..6a361d71 100644 --- a/docs/wiki/Documento-de-Arquitetura.md +++ b/docs/wiki/Documento-de-Arquitetura.md @@ -83,20 +83,21 @@ Desenvolvido pelos alunos das disciplinas de Engenharia de Produto de Software e

Este artefato documenta a arquitetura a ser implementada no software e abrangendo assuntos relacionados as metas e restrições da arquitetura, visão de casos de uso, visão lógica, implementação, dados, tamanho e desempenho.

### 1.3 Definições, Acrônimos e Abreviações + Abreviação|Significado -:-:|:-: -|**ECS**| Entity Component System (em tradução livre: "sistema entidade componente") -|**MDS**| Métodos de Desenvolvimento de Software -|**EPS**| Engenharia de Produto de Software -|**kB**| Kilobyte -|**MMO**| Massive Multiplayer Online Game - Jogo Online em Massa de Multijogadores -|**MER**| Modelo Entidade-Relacionamento -|**DER**| Diagrama Entidade-Relacionamento -|**OUI**| Object Ubity Interface -|**GO**| GameObject -|**Adapter**| Adaptador -|**UDP**| User Datagram Protocol - Protocolo de Datagramas do Usuário -|**TCP**|Transmission Control Protocol - Protocolo de Controle de Transmissão +-|- +**ECS** | Entity Component System (em tradução livre: "sistema entidade componente") +**MDS** | Métodos de Desenvolvimento de Software +**EPS** | Engenharia de Produto de Software +**kB** | Kilobyte +**MMO** | Massive Multiplayer Online Game (em tradução livre: "Jogo Online em Massa de Multijogadores") +**MER** | Modelo Entidade-Relacionamento +**DER** | Diagrama Entidade-Relacionamento +**OUI** | Object Ubity Interface +**GO** | GameObject +**Adapter** | Adaptador +**UDP** | User Datagram Protocol (em tradução livre: "Protocolo de Datagramas do Usuário") +**TCP** | Transmission Control Protocol (em tradução livre: "Protocolo de Controle de Transmissão") ### 1.4 Referências

Este documento faz referência ao seguinte link e documento.

@@ -113,7 +114,7 @@ Abreviação|Significado

A arquitetura utilizada no projeto é a arquitetura denominada "Entity Component System" (ECS, "entidade-componente-sistema"), a escolha dessa arquitetura foi feita por vários motivos, dentre eles a sua facilidade de aplicação dentro do Unity 3D e também por ser a arquitetura mais utilizada em jogos eletrônicos e sistemas com interface gráfica 3D nos tempos atuais. Essa arquitetura tem como princípio a "composição ao invés de herança", o que permite uma flexibilidade maior na criação de novas entidades. Com a ECS, criamos um sistema de hierarquia entre as entidades e seus componentes, podendo assim reutilizar os componentes e dar o mesmo comportamento específico para diversas entidades que tem fins totalmente diferentes. Cada entidade consiste de um ou mais componentes que adicionam comportamento ou funcionalidade para a mesma, portanto o comportamento de uma entidade qualquer pode ser alterado durante o tempo de execução simplesmente adicionando ou removendo um componente da mesma. Isso elimina os problemas de ambiguidade que eram gerados nas hierarquias feitas por heranças profundas e vastas, que se tornam difíceis de entender, manter e estender.

![Entity-Component-System](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/ECS.png) -**Figura 1**- Diagrama de classes +**Figura 1**- Diagrama de classes

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/ECS.png)

Adam Martin, um desenvolvedor de jogos MMO, criou a terminologia mais utilizada de jogos. Em jogos, a arquitetura trabalha com "sistemas" que seriam como funções que interagem com outras entidades que tenham componentes físicos e visíveis. Entidade é o objeto que consiste apenas de uma identificação única, Componentes são os dados brutos do aspecto do objeto e como interage com o mundo e Sistema são threads que executam ações das entidades que possuem mesmos componentes. @@ -125,9 +126,9 @@ Abreviação|Significado

Dentro de todo GameObject há componentes, sendo exemplos deles Transform (representa a posição, rotação e escala do objeto na scene), RigidBody (dá propriedade físicas ao GameObject), Renderers (componentes que permitem exibição dos GameObjects em cena), etc.


![GameObject](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/unity.png) - -**Figura 2**- Representação de relação GameObject e Componentes -[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/unity.png) +

+**Figura 2**- Representação de relação GameObject e Componentes

+[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/unity.png)

Para melhor visualização da relação entre os componentes no Unity, segue um diagrama: ![Diagrama Componentes](http://oi64.tinypic.com/23hsntc.jpg) @@ -146,7 +147,7 @@ A implementação do projeto será a linguagem de programação C# (C-Sharp).Ele ### 4.1 Diagrama de Casos de Uso ![DiagramaCasoDeUso](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Casos_de_uso.png) -**Figura 3**- Diagrama de casos de uso +**Figura 3**- Diagrama de casos de uso

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Casos_de_uso.png) ### 4.2 Atores de Casos de Uso @@ -175,7 +176,7 @@ A implementação do projeto será a linguagem de programação C# (C-Sharp).Ele ![DiagramaGeralDeArquitetura](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Diagrama_geral_de_arquitetura.png) -**Figura 4**- Representação do diagrama da arquitetura dos adapters +**Figura 4**- Representação do diagrama da arquitetura dos adapters

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Diagrama_geral_de_arquitetura.png)

From b9ffd922b8a98175ea534bfd8f4d299f45addb09 Mon Sep 17 00:00:00 2001 From: Joao Lucas Date: Mon, 25 Jun 2018 15:13:28 -0300 Subject: [PATCH 2/5] =?UTF-8?q?Centralizando=20imagens=20e=20informa=C3=A7?= =?UTF-8?q?=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/wiki/Documento-de-Arquitetura.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/wiki/Documento-de-Arquitetura.md b/docs/wiki/Documento-de-Arquitetura.md index 6a361d71..31d99072 100644 --- a/docs/wiki/Documento-de-Arquitetura.md +++ b/docs/wiki/Documento-de-Arquitetura.md @@ -113,7 +113,7 @@ Abreviação|Significado ## 2. Representação da Arquitetura

A arquitetura utilizada no projeto é a arquitetura denominada "Entity Component System" (ECS, "entidade-componente-sistema"), a escolha dessa arquitetura foi feita por vários motivos, dentre eles a sua facilidade de aplicação dentro do Unity 3D e também por ser a arquitetura mais utilizada em jogos eletrônicos e sistemas com interface gráfica 3D nos tempos atuais. Essa arquitetura tem como princípio a "composição ao invés de herança", o que permite uma flexibilidade maior na criação de novas entidades. Com a ECS, criamos um sistema de hierarquia entre as entidades e seus componentes, podendo assim reutilizar os componentes e dar o mesmo comportamento específico para diversas entidades que tem fins totalmente diferentes. Cada entidade consiste de um ou mais componentes que adicionam comportamento ou funcionalidade para a mesma, portanto o comportamento de uma entidade qualquer pode ser alterado durante o tempo de execução simplesmente adicionando ou removendo um componente da mesma. Isso elimina os problemas de ambiguidade que eram gerados nas hierarquias feitas por heranças profundas e vastas, que se tornam difíceis de entender, manter e estender.

-![Entity-Component-System](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/ECS.png) +![Entity-Component-System](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/ECS.png)

**Figura 1**- Diagrama de classes

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/ECS.png) @@ -146,7 +146,7 @@ A implementação do projeto será a linguagem de programação C# (C-Sharp).Ele ### 4.1 Diagrama de Casos de Uso -![DiagramaCasoDeUso](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Casos_de_uso.png) +![DiagramaCasoDeUso](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Casos_de_uso.png)

**Figura 3**- Diagrama de casos de uso

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Casos_de_uso.png) @@ -350,12 +350,12 @@ Um exercício gera n pontos nos eixos x e y. ### 6.2 DER -![DER](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/der.png) -**Figura 5**- Diagrama Entidade-Relacionamento +![DER](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/der.png)

+**Figura 5**- Diagrama Entidade-Relacionamento

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/der.png) ### 6.3 Diagrama Lógico -![LÓGICO](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/logico.png) -**Figura 6**- Diagrama ME-R Lógico +![LÓGICO](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/logico.png)

+**Figura 6**- Diagrama ME-R Lógico

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/logico.png) From ec48cab72e1525aac2da05c5d55be2102b2bc201 Mon Sep 17 00:00:00 2001 From: Joao Lucas Date: Mon, 25 Jun 2018 20:36:29 -0300 Subject: [PATCH 3/5] Refatorando a Visao Logica --- docs/wiki/Documento-de-Arquitetura.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/wiki/Documento-de-Arquitetura.md b/docs/wiki/Documento-de-Arquitetura.md index 31d99072..70c67fab 100644 --- a/docs/wiki/Documento-de-Arquitetura.md +++ b/docs/wiki/Documento-de-Arquitetura.md @@ -76,7 +76,7 @@ Documento de Arquitetura de Software ## 1. Introdução ### 1.1 Finalidade -

Este documento possui como finalidade uma visão geral abrangente à implementação arquitetural do projeto Reabilitação Motora - FisioTech. +

Este documento possui como finalidade uma visão geral abrangente à implementação arquitetural do projeto Reabilitação Motora. Desenvolvido pelos alunos das disciplinas de Engenharia de Produto de Software e Métodos de Desenvolvimento de Software com o intuito de ajudar no tratamento de pessoas que sofrem de paralisia do membro superior.

### 1.2 Escopo @@ -113,6 +113,7 @@ Abreviação|Significado ## 2. Representação da Arquitetura

A arquitetura utilizada no projeto é a arquitetura denominada "Entity Component System" (ECS, "entidade-componente-sistema"), a escolha dessa arquitetura foi feita por vários motivos, dentre eles a sua facilidade de aplicação dentro do Unity 3D e também por ser a arquitetura mais utilizada em jogos eletrônicos e sistemas com interface gráfica 3D nos tempos atuais. Essa arquitetura tem como princípio a "composição ao invés de herança", o que permite uma flexibilidade maior na criação de novas entidades. Com a ECS, criamos um sistema de hierarquia entre as entidades e seus componentes, podendo assim reutilizar os componentes e dar o mesmo comportamento específico para diversas entidades que tem fins totalmente diferentes. Cada entidade consiste de um ou mais componentes que adicionam comportamento ou funcionalidade para a mesma, portanto o comportamento de uma entidade qualquer pode ser alterado durante o tempo de execução simplesmente adicionando ou removendo um componente da mesma. Isso elimina os problemas de ambiguidade que eram gerados nas hierarquias feitas por heranças profundas e vastas, que se tornam difíceis de entender, manter e estender.

+ ![Entity-Component-System](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/ECS.png)

**Figura 1**- Diagrama de classes

[Clique aqui para visualizar a imagem](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/ECS.png) @@ -168,10 +169,11 @@ A implementação do projeto será a linguagem de programação C# (C-Sharp).Ele ## 5. Visão Lógica -

Em visão lógica, o Diagrama Geral da Arquitetura demonstra como será o funcionamento do projeto. Inicialmente, através de um sensor, o usuário executará um movimento para que seja capturado e através de um adapter, que deve atender as exigências de acoplamento, envia ao programa em Unity 3D. O KINECT, diferente dos outros sensores, já possui integração feita de forma nativa no software, portanto não exige o uso do adapter.

+

Em visão lógica, o Diagrama Geral da Arquitetura demonstra como será o funcionamento do projeto. Inicialmente, através de um sensor, o usuário executará um movimento para que seja capturado e através de um adapter, que deve atender as exigências de acoplamento, envia ao programa em Unity 3D que se pode criar cadastros e movimentos e gerencia-los. O movimento executado será exibido em uma *Scene* demostrando graficamente o movimento e os seus resultados adquiridos.

O Módulo de Processamento (pode ser considerado um plugin que realiza processamentos externos) é uma unidade de processamento, podendo ser escrita em qualquer linguagem de programação, que receberá dados do movimento e poderá utilizá-los para realizar cálculos não abordados pelo sistema. A sua comunicação com o software também é feita por meio de um adapter.

Para a conexão com diversos sensores será usado um adapter com a capacidade de receber informações específicas para a usabilidade da aplicação através de portas UDP. A escolha das portas UDP em relação as portas TCP para uso no adapter entre o sensor-unity foi motivada pelo fato de que utilizando o protocolo UDP a transferência é feita de forma mais rápida do que utilizando o protocolo TCP, pois o TCP garante que dados são entregues integralmente, sem erros (pois ele não só envia pacote de dados, como também recebe), ao custo de ser mais lento que o UDP.

O UDP provê um serviço sem conexão não confiável, usando IP para transportar mensagens entre duas máquinas. Este protocolo, igualmente o TCP, provê um mecanismo que o transmissor usa para distinguir entre múltiplos receptores numa mesma máquina.

+

O KINECT, diferente dos outros sensores, já possui integração feita de forma nativa no software, portanto não exige o uso do adapter.

![DiagramaGeralDeArquitetura](https://raw.githubusercontent.com/fga-gpp-mds/2018.1-Reabilitacao-Motora/development/docs/imagens/Arquitetura/Diagrama_geral_de_arquitetura.png) From 3eed24c71abe35191341ffa16affe9d0f4764b33 Mon Sep 17 00:00:00 2001 From: Joao Lucas Date: Mon, 25 Jun 2018 21:41:41 -0300 Subject: [PATCH 4/5] Ignorando teste Flow para scene de UDP Patient --- Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs b/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs index 44efc8ef..21edb744 100644 --- a/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs +++ b/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs @@ -102,7 +102,7 @@ public static IEnumerator TestUpdatePatient() Debug.Log("saindo de " + currentscene); } - + [Ignore("Evitar Problemas com a Travis")] [UnityTest] public static IEnumerator TestRealtimeGraphUDPPatient() { From 6a86b67b0e29c61df2e3bcb8500a05e274288f63 Mon Sep 17 00:00:00 2001 From: Joao Lucas Date: Mon, 25 Jun 2018 22:06:48 -0300 Subject: [PATCH 5/5] Desconsiderando o Ignore pra verificar erro na build --- Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs b/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs index 21edb744..430724ea 100644 --- a/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs +++ b/Reabilitacao-Motora/Assets/Tests/TestMenu/TestFlow.cs @@ -102,7 +102,6 @@ public static IEnumerator TestUpdatePatient() Debug.Log("saindo de " + currentscene); } - [Ignore("Evitar Problemas com a Travis")] [UnityTest] public static IEnumerator TestRealtimeGraphUDPPatient() {