Upload
internet
View
118
Download
11
Embed Size (px)
Citation preview
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.
• 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
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:
Identificação DescriçãoRNF/PROC-01 O sistema deverá ser implementado em Python 2.6 e Flex 3 utilizando o
SGBD MySQL Server 5.0.RNF/PROC-02 O sistema deverá rodar em Windows e Linux.RNF/PROC-03 Deverá ser utilizada ferramenta CASE e a modelagem deverá ser feita em
UML.
Requisitos de Processo
Requisitos de Produto - SegurançaIdentificação Descrição
RNF/SEG-01 É necessário autenticar o usuário por meio de login e senha.RNF/SEG-02 Os atores terão acesso apenas a um conjunto mínimo de funcionalidades,
que compreendem as funções operacionais básicas.RNF/SEG-03 O gerente tem acesso a todas as funcionalidades.RNF/SEG-04 O acesso a funções com esse requisito não funcional só poderá ser feito
pelo gerente, identificado através de login e senha.RNF/SEG-05 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.
RNF/SEG-06 O acesso a funções relacionadas a pagamento, deve ser de uso exclusivo do caixa e do gerente.
Requisitos
• Requisitos funcionais:Código Nome Prioridade
RF-01 Efetuar Login Essencial
RF-02 Cadastrar Cliente Essencial
RF-03 Alterar Cliente Essencial
RF-04 Remover Cliente Essencial
RF-05 Consultar Cliente Essencial
RF-06 Cadastrar Pedido Delivery Essencial
RF-07 Alterar Pedido Delivery Essencial
RF-08 Cancelar Pedido Delivery Essencial
RF-09 Consultar Pedido Delivery Essencial
RF-10 Despachar Pedido Delivery Essencial
RF-11 Entregar Pedido Delivery Essencial
RF-12 Cadastrar Pedido Mesa/Cartão Essencial
RF-13 Alterar Pedido Mesa/Cartão Essencial
RF-14 Cancelar Pedido Mesa/Cartão Essencial
RF-15 Consultar Pedido Mesa/Cartão Essencial
RF-16 Informar Finalização do Pedido Essencial
RF-17 Abrir Mesa/Cartão Essencial
RF-18 Trocar Mesa/Cartão Essencial
RF-19 Juntar Mesa/Cartão Essencial
RF-20 Fechar Mesa/Cartão Essencial
RF-21 Efetuar Pagamento Essencial
RF-22 Cadastrar Produto Essencial
RF-23 Alterar Produto Essencial
RF-24 Remover Produto Essencial
RF-25 Consultar Produto Essencial
RF-26 Cadastrar Insumo Essencial
RF-27 Alterar Insumo Essencial
RF-28 Remover Insumo Essencial
RF-29 Consultar Insumo Essencial
RF-30 Entrada Insumo Essencial
RF-31 Saída Insumo Essencial
RF-32 Cadastrar Categoria Essencial
RF-33 Remover Categoria Essencial
RF-34 Cadastrar Funcionário Essencial
RF-35 Alterar Funcionário Essencial
RF-36 Remover Funcionário Essencial
RF-37 Consultar Funcionário Essencial
RF-38 Informação do plantel dos funcionários Essencial
RF-39 Calcular comissão Essencial
RF-40 Gerar relatórios de funcionários Essencial
RF-41 Gerar relatórios de estoque Importante
RF-42 Gerar relatórios finaceiros Essencial
RF-43 Gerar relatórios extras Desejável
Visão Geral Dos Requisitos
Diagrama de Casos de Uso
• 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 – Pré e pós condições
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.
– 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 - Fluxos
– Diagrama de Seqüência:
Casos de Usos - Análise
– Diagrama de Classe:
Casos de Usos - Análise
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.
– Diagrama de Seqüência:
Casos de Usos - Análise
– Diagrama de Classe:
Casos de Usos - Análise
Arquitetura do Sistema - Camadas
GUI
Controle
Dados
Repositório
Arquitetura do Sistema - Camadas
Django
puremvc
MTV• Model• Template• View
MVC• Model• View• Controller
Arquitetura do Sistema - Camadas
Template
View
Model & ORM
Database
Django
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?