Não vale nota.* Esta é uma atividade individual que tem como objetivo fixar os conteúdos desenvolvidos durante a disciplina.
Para entender melhor como a Arquitetura Limpa funciona, desafiamos você a construir uma solução para o seguinte problema:
Uma ONG recebe doações de alimentos em pacotes, armazena-os e depois entrega esses pacotes para outras ONGs, de acordo com suas necessidades.
Exemplo:
A ONG recebe um pacote com 200 kg de arroz, 100kg de feijão e 300 latas de óleo. Uma outra ONG solicita a doação de 30kg de arroz, 10kg de feijão e 15 latas de óleo. Para atender a solicitação, a entrega deve ser feita com outros pacotes, pois é necessária uma separação diferente.
O objetivo é criar uma arquitetura e uma aplicação que:
- Registre o recebimento dos pacotes, incluindo o cadastro dos produtos recebidos (peso ou unidades).
- Registre os pedidos de doação, com as quantidades de produtos solicitadas.
- Valide se é possível atender aos pedidos, considerando o estoque disponível.
- Emita uma listagem completa dos pedidos efetuados.
- Emita uma listagem do estado atual do estoque de alimentos.
- Efetue a entrega de um pedido, realizando a baixa das quantidades no estoque e registrando a entrega.
- Comece resolvendo apenas uma das regras de negócio (caso de uso) e vá melhorando o desenho da arquitetura de acordo com os outros casos de uso. Não resolva tudo de uma vez.
- Priorize a simplicidade e o atendimento ao caso de uso. Não defina mais do que o necessário.
- Pense na solução antes de implementá-la. Use a arquitetura para guiar a implementação do código.
Você deve entregar:
- O desenho da arquitetura, com as classes e em qual camada/tipo ela se enquadra.
- O repositório Git com os códigos desenvolvidos para a tarefa.
Se precisar de ajuda, procure-nos no Discord. Se quiser, publique o link do seu repositório Github no Discord para discutir a solução com seus colegas.
- EVANS, Eric. Domain-Driven Design: Tackling Complexity in the Heart of Software. [s.l.]: Addison-Wesley Professional, 2003.
- FOWLER, Martin. Disponível em: https://martinfowler.com/bliki/UseCase.html
- MARTIN, Robert. Arquitetura Limpa. Rio de Janeiro: Alta Books Editora, 2019.
- MARTIN, Robert. Clean Code: A Handbook of Agile Software Craftsmanship. [s.l.]: Pearson, 2008.