projeto de engenharia de software
DESCRIPTION
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: - PowerPoint PPT PresentationTRANSCRIPT
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?