Projeto de Engenharia de Software Sistema de gerenciamento de restaurante Conteúdo • Motivação • Planejamento do Projeto • Requisitos – Casos de Uso • Arquitetura – Classe Implementada • Testes • Resultados Motivação • O BrightChef buscar trazer uma solução para administração de restaurantes: – Automatizando Entrada e Saída de insumos, controle de Estoque. – Gerenciando pedidos, módulo de Delivery. – Facilitando a análise de faturamento e controle de cadastros com geração de Relatórios. – Organizando os pedidos de mesa/cartão, gerando o cálculo da conta e pagamento. Planejamento do Projeto • O ciclo do projeto se baseou no RUP, tendo as seguintes fases: – Concepção: ênfase no escopo do sistema; – Elaboração: ênfase na arquitetura; – Construção: ênfase no desenvolvimento; – Transição: ênfase na implantação. Planejamento do Projeto • Na etapa de concepção foi definido a organização do projeto. – Funções: • • • • • Gerente – Henrique Menezes Arquiteto de Software – Tiago Sales Analista de Sistema – Dayvid Rodrigues Analista de Sistema – Danilo Queiroz Analista de Sistema – Paulo Ferreira Planejamento do Projeto – Cronograma: Requisitos • Elicitação de requisitos: – Entrevistas – Brainstorming – Análise de concorrentes – Pesquisas sobre o mercado Requisitos • Requisitos não-funcionais: Requisitos de Processo Identificação RNF/PROC-01 RNF/PROC-02 RNF/PROC-03 Descrição O sistema deverá ser implementado em Python 2.6 e Flex 3 utilizando o SGBD MySQL Server 5.0. O sistema deverá rodar em Windows e Linux. Deverá ser utilizada ferramenta CASE e a modelagem deverá ser feita em UML. Requisitos de Produto - Segurança Identificação RNF/SEG-01 RNF/SEG-02 RNF/SEG-03 RNF/SEG-04 RNF/SEG-05 RNF/SEG-06 Descrição É necessário autenticar o usuário por meio de login e senha. Os atores terão acesso apenas a um conjunto mínimo de funcionalidades, que compreendem as funções operacionais básicas. O gerente tem acesso a todas as funcionalidades. O acesso a funções com esse requisito não funcional só poderá ser feito pelo gerente, identificado através de login e senha. O acesso a funções relacionadas a insumo, produto e categoria, com exceção da função de consulta, deve ser de uso exclusivo do gerente e do almoxarife. O acesso a funções relacionadas a pagamento, deve ser de uso exclusivo do caixa e do gerente. Requisitos • Requisitos funcionais: Código RF-01 RF-16 RF-31 RF-02 RF-17 RF-32 RF-03 RF-18 RF-33 RF-04 RF-19 RF-34 RF-05 RF-20 RF-35 RF-06 RF-21 RF-36 RF-07 RF-22 RF-08 RF-37 RF-23 RF-09 RF-24 RF-38 RF-10 RF-25 RF-39 RF-11 RF-26 RF-40 RF-12 RF-27 RF-41 RF-13 RF-28 RF-42 RF-14 RF-29 RF-43 RF-15 RF-30 Nome Efetuar Login Saída Informar Insumo Finalização do Pedido Cadastrar Cliente Abrir Mesa/Cartão Cadastrar Categoria Alterar Mesa/Cartão Cliente Trocar Remover Categoria Remover Cliente Juntar Mesa/Cartão Cadastrar Funcionário Consultar Cliente Fechar Mesa/Cartão Alterar Funcionário Cadastrar Pedido Delivery Efetuar Pagamento Remover Funcionário Alterar Pedido Delivery Cadastrar Produto Consultar Cancelar Pedido Funcionário Alterar Produto Delivery ConsultarProduto Pedido Delivery Remover Informação do plantel dos funcionários Despachar Pedido Delivery Consultar Produto Calcular comissão Entregar Pedido Cadastrar InsumoDelivery Gerar relatórios de funcionários Cadastrar Pedido Mesa/Cartão Alterar Insumo Gerar relatórios de estoque Alterar Pedido Mesa/Cartão Remover Insumo Gerar relatórios finaceiros Cancelar Pedido Mesa/Cartão Consultar Insumo Gerar relatórios Consultar Pedidoextras Mesa/Cartão Entrada Insumo Prioridade Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Importante Essencial Essencial Essencial Essencial Essencial Desejável Essencial Essencial Visão Geral Dos Requisitos Diagrama de Casos de Uso Casos de Usos – Pré e pós condições • Cadastrar Funcionário – Pré-condição: O gerente deve ter efetuado login no sistema. – Pós-condições: O funcionário cadastrado no sistema. Casos de Usos - Fluxos • Cadastrar Funcionário – Fluxo Primário: • Inicialmente, o gerente deve entra na janela de cadastro de funcionário. • O gerente informar os dados do funcionário necessários para a realização do cadastro como nome, endereço, Cpf, cargo do novo funcionário e etc. • O sistema verifica se o funcionário já existe. • O sistema armazena os dados do cliente no repositório e informa que o cadastro foi realizado com sucesso. Casos de Usos - Fluxos – Fluxo secundário: • No fluxo primário 3, se o funcionário já existir significa dizer que o funcionário já está cadastrado, o sistema exibe uma mensagem informando a ocorrência. Casos de Usos - Análise – Diagrama de Seqüência: Casos de Usos - Análise – Diagrama de Classe: Casos de Usos – Pré e pós condições • Gerar Relatório Funcionário – Pré-condição: O usuário deve ter efetuado login no sistema. – Pós-condições: O relatório de funcionários deve ser retornado. Casos de Usos - Fluxos • Gerar Relatório Funcionário – Fluxo Primário: • O usuário deve entrar na janela de relatórios. • Seleciona o relatório de Funcionários. • O sistema gera o relatório e retorna ao cliente. Casos de Usos - Análise – Diagrama de Seqüência: Casos de Usos - Análise – Diagrama de Classe: Arquitetura do Sistema - Camadas GUI Controle Dados Repositório Arquitetura do Sistema - Camadas Django MTV • Model • Template • View puremvc MVC • Model • View • Controller Arquitetura do Sistema - Camadas Django Template View Model & ORM Database Arquitetura do Sistema - Camadas puremvc Classes Implementadas • Python: – Models: • Produto – Views: • ProdutoAdmin • ProdutoService – Templates: • • • • change_form.html change_list.html change_list_results.html ... Classes Implementadas • Flex: – Models: • ProdutoVO • ProdutoProxy – Controller: • ProdutoReloadCommand • ProdutoSaveCommand • ProdutoDeleteCommand – Views: • ProdutoTabMediator • ListarProdutosTabMediator • Components: – ProdutoTab.mxml – ListarProdutosTab.mxml Ferramentas • • • • • • • • • • • • • Python Django Pyunit PyAMF Flex Flex Builder 3 PureMVC Office 2007 Jude Notepad++ Aptana Microsoft Project Git Testes • • • • Teste de Unidade Teste Integração Teste de Sistema Teste de Aceitação Testes • Teste de Unidade – Testar corretude de componentes individualmente: • Classes • Métodos – Foi utilizado um framework de testes PyUnit, em específico o módulo unittest. Testes • Teste de Unidade - Exemplo Testes • Teste de Integração – Foi realizada a medida que novos componentes eram agrupados ao sistema. – Com ele foi possível encontrar erro nas interfaces de comunicação entre os componentes. – Exemplo: • Codificação, decodificação e comunicação dos dados entre AMF e Python. Testes • Teste de Sistema – Após a integração completa do sistema iniciamos esse tipo de teste, onde não nos limitamos somente a requisitos funcionais mas testamos também requisitos não-funcionais. – Exemplo: • Testamos nos browsers: Internet Explorer, Mozilla Firefox e Google Chrome. Testes • Teste de Aceitação – Foram feitos testes de caixa-preta com usuários finais e a partir daí foi notificado todos os erros acontecidos e posteriormente corrigidos. – Exemplo: • Foi notificado no módulo estoque um problema em saída de insumo, onde a quantidade do insumo estava decrementando quando um valor superior ao do estoque atual e resultava em uma quantidade negativa no estoque do insumo. Resultados • Artefatos produzidos nesse projeto: • • • • • Plano de Projeto Documento de Requisitos Plano de Testes Projeto de Testes Documento de Análise e Projeto • Site de acompanhamento • Aplicação Resultados • Versão Flex / Janela Mesa/Cartão: Resultados • Versão Html / Janela Entradas de Insumo: Perguntas? • Alguma duvida?