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

USDemo1

1. Requisitos

Como Gestor de Produção, eu pretendo introduzir manualmente uma nova ordem de produção.

2. Análise

O gestor de produção inicia o caso de uso. O sistema pede que o utilizador indique o ID da ordem, a data de execução esperada e os indentificadores das encomendas que a ordem pretende tratar. O utilizador fornece a informação pedida. O sistema mostra uma tabela de produtos e que o utilizador indique o código de fabrico. O utilizador indica o código de fabrico. O sistema pede que indique a quantidade a produzir. O utilizador especifica a quantidade. O sistema informa o utilizador sobre o sucesso da operação.

Nota: para mais fácil compreensão, no diagrama abaixo os primeiros itens pedidos ao utilizador estão juntos, no entanto, o sistema pede cada um individualmente.

SSD SSD

3. Design

3.1. Realização da Funcionalidade

SD SD

3.2. Diagrama de Classes

CD CD

3.3. Padrões Aplicados

  • Repository Pattern - Para abstrair o sistema de persistência de objetos, facilitando a implementação com diferentes tecnologias
  • Simple Factory - Na instanciação de repositórios (RepositoryFactory).
  • Builder - Para permitir um controlo granular do sucesso/falha de cada atributo de produto criado.
  • Command - Para especificar o que fazer quando uma opção do menu é escolhida. Também utilizado na classe EspecificarOrdemProducaoUI para facilitar a escrita do código que pede informação ao utilizador até que sejam fornecidos dados corretos.
  • Data Transfer Object - Para poder transferir informação do domínio para a UI sem misturar os dois layers.
  • Controller - Para separar o layer da interface do layer de domínio.
  • 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 - Os repositórios são utilizados como uma instância da interface:
  • 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
  • Builder - Para facilitar e tornar mais legível a criação de ordens de produção.

3.4. Testes

  • Enviar IDs de encomendas repetidos
  • Indicar o ID de uma ordem que já existe
  • Indicar um código de produto não registado
  • Fornecer como data prevista de execução a data atual
  • Fornecer como data prevista de execução uma data no passado
  • Indicar uma quantidade negativa
  • Indicar quantidade 0

4. Implementação

Foi utilizada uma classe desenvolvida por Carl Eriksson que está disponível publicamente no GitHub. Esta classe gera tabelas em texto para a consola.

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