US2003 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki

US2003

=======================================

1. Requisitos

Como Gestor de Produção, pretendo visualizar todos os produtos sem ficha de produção.

2. Análise

O utilizador inicia o caso de uso. O sistema apresenta um conjunto de informações sobre todos os produtos sem ficha de produção. O caso de uso termina. O conjunto de informações aqui mencionado refere-se a toda a informação que seja relevante e curta o suficiente para participar numa tabela sumária dos atributos do Produto.

Visto que era necessário apresentar os produtos ao utilizador e que estes contêm vários parâmetros, foi decidido utilizar uma classe já existente que formata a informação numa tabela. Esta classe foi desenvolvida por Carl Eriksson e está disponível publicamente no GitHub. No entanto, a classe foi alterada ligeiramente para que retorne a tabela (String) em vez de a imprimir, garantindo então que a UI continua com responsabilidade exclusiva de comunicar com o utilizador.

SSD SSD

Restrições de dados

Documentado no US2006.

3. Design

3.1. Realização da Funcionalidade

Note-se que o repositório é obtido através de PersistenceContext.repositories().produto(), que é a metodologia utilizada em toda a aplicação sempre que um repositório é necessário.

SD SD

3.2. Diagrama de Classes

CD CD

3.3. Padrões Aplicados

  • Repository Pattern - ProdutoRepository.
  • Factory Method - Para a instanciação de objetos do domínio.
  • Simple Factory - Na instanciação de repositórios, neste caso através de PersistenceContext.repositories().produto().
  • Command - A UI faz parte de uma aplicação deste padrão, sendo que implementa Action e é posteriormente utilizada de maneira genérica como uma ação.
  • Controller - ConsultarProdutosSemFichaDeProducaoController
  • Polymorphism & Template method - Usado na implementação do repositório específico de cada entidade bem como na implementação da UI específica deste caso de uso.
  • Dependency inversion & Protected variation & Strategy - JpaProdutoRepository é utilizado como uma instância da interface ProdutoRepository. ArrayList é utilizada como uma instância da interface List.
  • Creator - Para geração de todos os DTOs. Exemplo: Produto gera ProdutoDTO
  • Liskov Substitution principle & Dependency inversion - Em todas as implementações de interfaces e extensões de classes.
  • Pure fabrication - Controller e UI.
  • Information expert & HC/LC - Sempre presente: cada classe tem uma responsabilidade bem definida, visando a sua independência de outras classes.
  • Singleton - Utilizado na RepositoryFactory

3.4. Testes

  • Nenhum produto com ficha de produção
  • Testar com 1+ produtos com ficha de produção e 1+ produtos sem ficha produção na base de dados.
  • Mais de 500 produtos com ficha de produção

6. Observações

Foi utilizada uma classe desenvolvida por Carl Eriksson que está disponível publicamente no GitHub.

⚠️ **GitHub.com Fallback** ⚠️