Arquitetura do Projeto
Definições
O sistema seguirá uma arquitetura baseada no padrão MVC (Model-View-Controller). Esta escolha foi feita pelo grupo considerando a necessidade de separar claramente a lógica de negócios (Modelo), a interface do usuário (Visão) e o fluxo de aplicação (Controlador). A arquitetura MVC facilita a manutenção, escalabilidade e permite que diferentes componentes do sistema sejam desenvolvidos e atualizados de forma independente.
Justificação sua escolha
A escolha pela arquitetura MVC para o sistema VEGA foi fundamentada em diversos aspectos destacados nos documentos de Visão do Produto e Projeto e Declaração de Escopo do Produto. Seguem as principais justificativas:
Separação de Responsabilidades:
Conforme descrito no documento de Visão do Produto e Projeto, o sistema VEGA necessita de uma abordagem que permita uma clara separação de responsabilidades entre a interface do usuário, a lógica de negócios e o controle do fluxo de aplicação. O padrão MVC atende a essa necessidade ao dividir a aplicação em três componentes distintos, facilitando a manutenção e a evolução do sistema.
2. Facilidade de Manutenção e Escalabilidade
A arquitetura MVC facilita a manutenção do sistema ao permitir que desenvolvedores trabalhem em diferentes partes da aplicação de forma independente. Por exemplo, alterações na interface do usuário (Visão) não afetam diretamente a lógica de negócios (Modelo) e vice-versa. Isso é crucial para um sistema como o VEGA, que deve se adaptar rapidamente às mudanças nas necessidades dos restaurantes, conforme mencionado na seção 1.3 dos documentos fornecidos.
3. Reutilização de Componentes
O uso do padrão MVC permite a reutilização de componentes, o que é particularmente importante para o VEGA, que precisa ser altamente customizável para diferentes tipos de restaurantes. A modularidade do MVC facilita a implementação de novas funcionalidades sem impactar negativamente o restante do sistema.
4.Adaptação a Mudanças:
A metodologia ágil, destacada como parte central do desenvolvimento do VEGA, se beneficia da flexibilidade proporcionada pelo MVC. Alterações e novas funcionalidades podem ser integradas de forma mais eficiente e com menor risco de introduzir erros em outras partes do sistema.
5. Compatibilidade com Tecnologias Utilizadas:
O documento de Declaração de Escopo do Produto indica o uso de tecnologias como HTML, CSS, JavaScript, Python e frameworks como Django, que naturalmente suportam e são otimizados para a implementação do padrão MVC. Isso garante que a equipe de desenvolvimento possa utilizar as melhores práticas e ferramentas disponíveis para construir um sistema robusto e escalável.
Detalhamento
Neste esquema, o usuário faz uma requisição de um dado ou de uma função. Essa requisição vai para o controller, que executa a função e irá até o model, responsável pelo banco de dados, coletar as informações requisitadas. Uma vez coletados os dados, eles são processados pelo controller e enviados para a view para serem apresentados ao usuário. Ou seja:
- Usuário -> View: Usuário faz uma requisição.
- View -> Controller: View envia a requisição para o Controller.
- Controller -> Model: Controller solicita dados ao Model.
- Model -> Banco de Dados: Model acessa e coleta dados do banco de dados.
- Model -> Controller: Model retorna os dados para o Controller
- Controller -> View: Controller processa e envia os dados para a View.
- View -> Usuário: View apresenta os dados ao usuário.
Metas e restrições arquiteturais
- Usabilidade, o sistema deve ser agil de ser utilizado
- Responsabilidade, a cardápio deverá ser responsivo para diferentes tipos de telas
- Segurança, o sistema deve ser seguro, uma vez que armazena dado confidenciais do funcionários e clientes
- Escalabilidade, o software de ser fácil processo evolutivo
- Manutenibilidade, o software deve ter fácil manutenção
Visão de Casos de uso
Nosso produto visa facilitar e ajudar a gerenciar esse fluxo de atendimento para o restaurante, e assim melhorando o atendimento do cliente do restaurante, tendo mais agilidade e também mais comodidade para o restaurante poder gerenciar.
Na primeira etapa o cliente faz o pedido para o garçom o garçom anota e comanda o pedido e assim o sistema vai identificar de onde é cada pedido e enviar para os setores corretos, após a confecção dos pedidos e o cumim leva o pedido para o garçom e assim o garçom serve a mesa com os pedido feitos pelos clientes.
Visão lógica
O sistema é subdividido nos seguintes módulos:
- Módulo de Gerenciamento de Funcionários
- Módulo de Gerenciamento de Mesas
- Módulo de Pedidos
- Módulo de Estoque de Cozinha
- Módulo de Banco de Dados
Razão Lógica de Cada Módulo:
- Módulo de Gerenciamento de Funcionários
- Propósito: Gerenciar informações e funções dos funcionários (gerentes, garçons, cozinheiros).
- Funções: Cadastro de funcionários, atualização de informações, controle de acesso
- Módulo de Gerenciamento de Mesas
- Propósito: Gerenciar a alocação e estado das mesas do restaurante
- Funções: Reserva de mesas, atualização de estado (disponível, ocupada, reservada).
- Módulo de Pedidos
- Propósito: Gerenciar os pedidos realizados pelos clientes
- Funções: Criação de pedidos, atualização de status, associação com mesas
- Módulo de Estoque de Cozinha
- Propósito: Gerenciar o estoque de ingredientes e materiais necessários para a cozinha
- Funções: Cadastro de itens, controle de quantidades, atualização de estoqu
- Módulo de Banco de Dados
- Propósito: Persistência e recuperação de dados para todos os outros módulos.
- Funções: Operações de CRUD (Create, Read, Update, Delete) para funcionários, mesas, pedidos, e estoque.
Comunicação entre os Módulos - Interfaces:
- API de Funcionários: Interface para operações de gerenciamento de funcionários.
- API de Mesas: Interface para operações de gerenciamento de mesas.
- API de Pedidos: Interface para operações de gerenciamento de pedidos.
- API de Estoque: Interface para operações de gerenciamento de estoque.
- API de Banco de Dados: Interface para persistência e recuperação de dados
Diagrama de Estados da Aplicação
Exemplificando:
- Novo Pedido: Estado inicial quando um pedido é criado.
- Em Preparação: O pedido está sendo preparado pelo cozinheiro
- Pronto para Servir: O pedido está pronto e aguardando ser servido.
- Aguardando Servir: O pedido está pronto e aguardando o garçom para ser levado à mesa.
- Servido: O pedido foi servido ao cliente.
- Concluído: O pedido foi consumido e o processo está encerrado.
diagrama de atividades da aplicação
Diagrama de Classes
Visão de Implantação
Para a implementação não será necessário um hardware muito potente já que o sistema irá funcionar basicamente no servidor, que será feito a requisição e voltará os dados necessários para que o usuário consiga utilizar a interface para o usuários, sendo ele o garçom, gerente ou o local que será feito o preparo dos pratos.
o sistema irá precisar basicamente de um terminal onde se possa ser feito a requisição e logo o poderá ser acessado com o mouse e teclado e ver tudo através do monitor, como banco de será utilizado o MySQL á que mais simples para fazer a integração de maneira mais viável, será utilizado também Python já possui diversas bibliotecas que podem ser implementadas e assim ajudando melhor no funcionamento do sistema no geral, isso no back-end, á para o front end será utilizado HTML, Flutter, CSS e JavaScript já que são linguagem já conhecidas pelos integrantes do grupo e também possui bibliotecas com diversas funcionalidades.
Restrições adicionais
Para garantir que o sistema funcione de maneira eficiente e atenda às necessidades do negócio e dos usuários, algumas restrições adicionais são necessárias. Estas restrições estão relacionadas a aspectos negociais e de qualidade de software.São elas:
- Autenticação de Usuário:
- Descrição: Todos os usuários devem se autenticar utilizando um login e uma senha antes de acessar o sistema.
- Justificativa: A autenticação garante que somente usuários autorizados, como gerentes, garçons e cozinheiros, possam acessar e modificar informações relevantes. Isso evita acessos não autorizados e protege os dados.
- Suporte para Múltiplos Usuários Concomitantemente:
- Descrição: O sistema deve suportar até múltiplos usuários logados ao mesmo tempo
- Justificativa: Restaurantes podem ter vários funcionários trabalhando simultaneamente e vários clientes acessando o cardápio e realizando o pedido, e o sistema deve ser capaz de suportar essa carga para garantir a eficiência das operações
- Usabilidade
- Descrição: O software deve ser intuitivo e fácil de usar para todos os funcionários e clientes, independentemente de seu nível de habilidade técnica.
- Justificativa: Uma interface amigável e fácil de usar minimiza erros de operação e reduz o tempo de treinamento necessário para os novos funcionários.