Unioeste – Universidade Estadual do Oeste do Paraná CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Colegiado de Ciências da Computação Curso de Bacharelado em Ciências da Computação Especificação de Requisitos e Modelagem Sistema Academia SportLife Hudson João Magalhães Lucas da Silva Grando Cascavel 2010 2 SUMÁRIO 1 MOTIVAÇÃO…………………………………………………………………………. 2 PROBLEMA DA EMPRESA………………………………………………………… 3 CRONOGRAMA……………………………………………………………………… 4 METODOLOGIA ESCOLHIDA................................................................................. 3 3 3 4 5 REQUISITOS FUNCIONAIS....................................................................................... 6 REQUISITOS NÃO FUNCIONAIS ............................................................................ 6.1 REQUISITOS DE PROCESSO .................................................................................... 6.2 REQUISITOS DO PRODUTO ..................................................................................... 6.3 O GRAFO SIG……………………………………………………………………….. 7 MODELAGEM ORGANIZACIONAL i*................................................................... 7.1 MODELO DE DEPENDÊNCIAS ESTRATÉGICAS.................................................. 7.2 MODELO DE RAZÕES ESTRATÉGICAS................................................................. 8 CASOS DE USO ............................................................................................................ 5 7 7 7 8 9 10 11 14 8.1 REPRESENTAÇÃO DOS CASOS DE USO............................................................... 8.2 DESCRIÇÃO DOS CASOS DE USO.......................................................................... 9 DIAGRAMAS DE CLASSES ....................................................................................... 10 DIAGRAMAS DE SEQUECIA 11 DESIGN PATTERN 12 ARQUITETURA 13 TESTES CONCLUSÃO.................................................................................................................... Apêndice A – Coleta de Informações............................................................................... 14 14 22 28 30 32 34 45 46 3 1 INTRODUÇÃO E MOTIVAÇÃO Busca por conhecimento da equipe, no desenvolvimento do aprendizado do uso da engenharia de software para o desenvolvimento de sistemas em geral, atender o cliente que necessita de um sistema organizacional para controle do caixa, e cadastro dos dados dos alunos produzindo um sistema de qualidade que gerencie as tarefas de uma academia. O objetivo é diminuir o tempo gasto nos arquivamentos dos dados dos alunos, manutenção do estoque dos produtos e agendar todas das tarefas diárias da academia. Com este sistema poderá resultar na economia de tempo e esforço, gerando também mais segurança e restrição aos dados. A empresa a qual o sistema será implantado é a academia Sport Life. Conforme os dados abaixo: Academia Sport Life Rua Visconde do Rio Branco, 3402 Vila Tolentino - Cascavel - PR Telefone: +55 (45) 3038-9800 2 PROBLEMA DA EMPRESA A empresa ainda não possui qualquer tipo de sistema para o controle das atividades, onde por esse motivo há uma perca de tempo preciosa para organizar-se, além de que esse controle estar sendo feito em arquivos de papel, ocorre frequentemente perda de informação ou até erro humano na hora de organizar as informações, gerando assim inúmeros transtornos. Este controle irá gerenciar as atividades em geral da academia tais como as contas a pagar no dia, e as atividades agendadas, tais como avaliações físicas e aulas pessoais. Há também a necessidade de armazenar todos os dados dos alunos, como as medidas, exames físicos e médicos, mas também principalmente controlar o vencimento da mensalidade. O Sistema proposto irá resolver essas situações para o proprietário, agilizando e organizando o dia a dia da empresa, além de evita erros graves. E trazendo mais algumas funcionalidades ao sistema. 3 CRONOGRAMA 4 Descrição 1 Treinamento e Obtenção dados Previsão (Semanas) Data início 1 02/07 2 Telas Iniciais 2 16/07 3 Cadastro Aluno 1 23/07 4 Utilização Webcam 1 30/07 5 Login/ Criptografia 1 06/08 6 Funcionários/Salários 1 13/08 7 Usuários 1 20/08 8 Avaliação 1 27/08 9 Avaliação + Anaminse 1 04/09 10 Modalidades 1 11/09 11 Integridade Do Banco De Dados 1 18/09 12 Back UP 1 25/09 13 Agenda Contatos 1 02/10 14 Agenda Tarefas 1 09/10 15 Controle Alunos 1 16/10 16 Controle Do Acesso 1 23/10 17 Abertura E Restrição das Mensalidades 1 30/10 18 Caixa 1 14/11 19 Revisão e Testes 2 21/11 4 METODOLOGIA ESCOLHIDA Como a exigência do mercado de softwares hoje em dia é muito forte, não só em questão 5 a qualidade mais também ao tempo de entrega, além da complexidade do sistema que irá ser desenvolvido, prevendo mudanças das especificações durante a produção do projeto e a gestão sendo indispensável para assegurar a qualidade do produto, utilizaremos para o desenvolvimento do sistema será a metodologia XP. Como a metodologia XP, é uma metodologia para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança, resolvemos adotar esta metodologia. Para isso a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software. Os quatro valores fundamentais da metodologia XP são: comunicação, simplicidade, feedback e coragem. A partir desses valores, possui como princípios básicos: feedback rápido, presumir simplicidade, mudanças incrementais, abraçar mudanças e trabalho de qualidade. Dentre as variáveis de controle em projetos (custo, tempo, qualidade e escopo), há um foco explícito em escopo. Para isso, recomenda-se a priorização de funcionalidades que representem maior valor possível para o negócio. Desta forma, caso seja necessário à diminuição de escopo, as funcionalidades menos valiosas serão adiadas ou canceladas. A XP incentiva o controle da qualidade como variável do projeto, pois o pequeno ganho de curto prazo na produtividade, ao diminuir qualidade, não é compensado por perdas (ou até impedimentos) a médio e longo prazo. 5 REQUISITOS FUNCIONAIS Os requisitos funcionais descrevem os serviços que o sistema deve oferecer e suas "funções" ao fim do seu desenvolvimento, como devem se comportar a certas entradas, as mais variadas situações. Os requisitos funcionais que serão apresentados foram estudados e analisados juntamente ao filho do dono da empresa. Os seguintes requisitos estão apresentados abaixo. [RF - 01] Cadastrar Produto O sistema deverá permitir cadastrar novos produtos com todos os seus atributos. O cadastro não poderá ser realizado no caso de já existir no estoque um produto com o mesmo código de barra ou nome. 6 [RF - 02] Remover Produto O sistema deverá permitir a exclusão de produtos por nome ou código de barra,via usuários autorizados ( logados ). [RF - 03] Alterar Produto O sistema deverá permitir a alteração de um produto já existente no banco de dados. [RF - 04] Consultar Produto O sistema deverá permitir a consulta de um produto já existente no banco de dados. [RF – 05] Cadastrar Aluno O sistema deverá cadastrar um Aluno quando necessário e seus dados no banco de dados. Tais com as medidas, vencimento da mensalidade. [RF – 06] Excluir Aluno O sistema deverá possibilitar a exclusão pelo nome do aluno, atualizando automaticamente no banco de dados. [RF – 07] Pesquisar Aluno O sistema deverá possibilitar a pesquisa de um aluno já armazenado no banco de dados do sistema e disponibilizar a informação para o usuário. Tais com as medidas, vencimento da mensalidade e a foto. [RF – 08 ] Alterar Aluno O Sistema deverá possibilitar ao usuário modificações/alterações nas informações já armazenadas no sistema. [RF – 09 ] Cadastrar Usuário O Sistema deverá possibilitar o cadastro de novos usuários para o sistema, cada um com um login e senha distinta. 7 [RF – 10 ] Remover Usuário O Sistema deverá possibilitar a remoção de usuários do sistema, desabilitando-os de qualquer acesso ao sistema. [RF – 11 ] Alterar Usuário O Sistema deverá possibilitar as alterações na conta de usuários no sistema, modificando senha ou login se necessário. [RF – 12 ] Pesquisar Usuário O Sistema deverá possibilitar uma pesquisa sobre as contas de usuários do sistema existentes e disponibilizar essas informações. [RF - 13 ] Logar no Sistema Todas as funcionalidades do sistema são acessíveis aos usuários de acordo com seu nível de privilégio no sistema. Isto é realizado através de um sistema de Login/Senha. [RF - 14 ] Realizar Venda Os funcionários serão permitidos realizar uma venda, o sistema devera possibilitar a venda através do usuário logado. [RF - 15 ] Realizar Avaliação Física Os usuários do sistema poderão armazenar no banco de dados, as informações do aluno da academia referente a avaliação física. Como as medidas, peso, altura, etc... [RF - 16 ] Agendar Avaliação Física O sistema irá trabalhar como uma agenda de horários, onde o usuário passara as informações para realizar um agendamento para avaliar o aluno. [RF – 17 ] Registrar Movimentação Caixa O sistema deverá registrar toda movimentação diária do caixa. Como entrada e saída de capita, venda de produto, pagamento de mensalidade. 8 [RF - 18] Lembrar Tarefas Diárias O sistema deverá lembrar o usuário de alguma tarefa agendada para a data atual. Essa tarefa pode ser uma conta a pagar, ou qualquer compromisso armazenado. 6 REQUISITOS NÃO FUNCIONAIS 6.1 REQUISITOS DE PROCESSO [RNF /PROC -01] O sistema deverá ser implementado em Java de modo a ser compatível com o sistema operacional Windows. [RNF /PROC -02] Será criado um documento contendo um diagrama de classes e informações sobre o código fonte. [RNF /PROC- 03] Será criado um cronograma detalhado para o processo de desenvolvimento no qual constem: as atividades a serem desenvolvidas e em que período e com que recursos humanos e físicos serão desenvolvidos o sistema. 6.2 REQUISITOS DO PRODUTO * SEGURANÇA [RNF /SEG - 04] Os usuários terão que ter permissão para utilizar algumas funcionalidades do sistema, deverá utilizar do login e senha para manipular estoque dos produtos, e gerencia dos funcionários. * USABILIDADE 9 [RNF /USAB - 05] A interface do sistema será agradável, objetiva e trivial ao usuário. Suas funcionalidades e informações deveram estar bem visíveis e disponíveis. [RNF /USAB - 06] Haverá mensagens de erro do sistema que deverão ser precisas e informativas, apontando sua origem. [RNF /USAB - 07] O Sistema disponibilizará ao usuário um menu "Ajuda", onde trará de forma objetiva informações sobre o sistema e suas demais funções e possíveis duvidas. * DESEMPENHO E CUSTO [RNF /DES- 08] O Sistema usará um banco de dados orientado a objeto, assim garantindo a segurança dos dados, mas também agilizando desempenho do sistema. Este banco de dados será o DB4O, por ser um software livre, haverá uma considerável diminuição dos custos. [RNF /DES - 09] Para um melhor desempenho do sistema é recomendada uma máquina razoável. Com os seguintes requisitos mínimos. Processador 1200MHz, 512Mb de Memória, espaço mínimo no HD de 1GB. 6.3 O GRAFO SIG (SOFTGOAL INTERDEPENDENCY GRAPHS) Este permite uma visão vertical desde a estratégia de alto nível até o detalhe. Cujo principal objetivo é demonstrar que os requisitos não-funcionais reorganizados proporcionam uma visão mais realista do sistema. Através dele podemos verificar o que deve ser operacionalizado para atender determinado requisito e como ele contribui (positivo ou negativamente) para os demais. 10 Figura 1 – O grafo SIG 11 7 MODELAGEM ORGANIZACIONAL i* 7.1 MODELO DE DEPENDÊNCIAS ESTRATÉGICAS A partir de uma visão macro do modelo nota-se que é composto de seis atores, sendo que a utilização direta do sistema é feita apenas pelos autores gerente e funcionário, essa interação é especificada pelas dependências destes com o ator sistema. Figura 2: Modelo de Dependências Estratégicas (SD) 12 O ator funcionário interage com o ator sistema, para isso ele necessita logar no sistema, sendo necessária entrada de usuário e senha. Após logado no sistema ele tem permissão de realizar algumas tarefas: gerência produtos e agendamento, vendas. Todas estas operações para não impor dificuldade ao usuário na utilização do sistema são necessário que ele tenha uma boa usabilidade. Por haver grande fluxo de dados entre os atores, sendo que o sistema tem uma dependência de obter dados junto ao funcionário, é necessário que esta comunicação seja feita de forma segura e ágil. O ator gerente pode ser considerado um funcionário especializado, sendo assim ele poderá executar todas as operações de um funcionário “comum”, para isto ele faz uso de um login/senha diferenciado. Esta especialização é denotada com a ligação ISA entre os atores. Além das operações “herdadas” do ator funcionário, ele se relaciona com o ator sistema ao fazer uso das funções: gerenciar funcionário, gerenciar caixa, estas sendo essenciais ao funcionamento da organização. Para que o sistema seja rápido, com dados íntegros e confiáveis ele dependera da qualidade do sistema gerenciador de banco de dados. 7.2 MODELO DE RAZÕES ESTRATÉGICAS O modelo SR (figura 3), complementa o modelo SD de forma a compreender e modelar de maneira mais detalhada as razões associadas com cada ator e suas dependências. Percebem-se pela expansão do ator sistema, a tarefa logar é necessário que usuário forneça um login e senha. Já as operações com produtos, agendamentos e funcionários têm as mesmas subdivisões, que são: cadastrar, modificar, remover e consultar. 13 Figura 3: Modelo de Razões Estratégica (SR) 14 8 CASOS DE USO 8.1 REPRESENTAÇÃO DOS CASOS DE USO Figura 4, Casos de Uso. 8.1 DESCRIÇÃO DOS CASOS DE USO [Caso de uso 001]: Controlar Mensalidade Descrição: O Sistema deverá fazer o controle de todas as mensalidades dos alunos. Atores envolvidos: Usuário do sistema e aluno. Pré-condição: Apenas usuários com acesso ao sistema poderão controlar as mensalidades. Nenhuma mensalidade vencida poderá ser alterada ou excluída sem autorização do gerente. 15 Pós-condição: Redireciona o Sistema a operação desejada. Cenário Principal de Sucesso: 1. O caso de uso é iniciado quando o usuário entra com o login e senha. 2. O usuário escolhe a opção controle de mensalidades. 3. O sistema levará o usuário a uma tela onde encontrará todas as mensalidades ativas. E mostrará o status de cada. “Ok”, “Vencida”, “Aberta”. 4. O usuário seleciona o aluno na lista. E caso o usuário escolha PAGAMENTO, o sistema remete para tela de pagamento da mensalidade. <<include>> Cenário Secundário 4.1. Caso o usuário escolha a opção Alterar Mensalidade no passo 3, o sistema redireciona-o ao Caso de uso Alterar Mensalidade <<extends>>. 4.2. Caso o usuário escolha a opção Excluir Mensalidade no passo dois, o sistema remete ao Caso de uso Excluir Mensalidade <<extends>>. [Caso de uso 002]: Alterar Mensalidade Descrição: O Sistema deverá alterar dados da mensalidade do aluno. Atores envolvidos: Usuários com acesso privilegiado. Gerentes. Pré-condição Usuário deve estar logado no sistema e ter realizado o Caso de Uso Controlar Mensalidade. Cenário Principal de Sucesso: 1. O Sistema apresenta os dados pessoais sobre o aluno a qual a mensalidade foi selecionada. 2. O usuário altera os dados pretendidos. 3. O sistema válida os dados. E mostra mensagem de sucesso. Cenário Secundário: 3.1. Caso ocorra algum erro na validação dos dados, será exibido mensagem de erro. [Caso de uso 003]: Excluir Mensalidade Descrição: O Sistema deverá excluir a mensalidade do aluno. Atores envolvidos: Usuários com acesso privilegiado. Gerentes. 16 Pré-condição Usuário deve estar logado no sistema e ter realizado o Caso de Uso Controlar Mensalidade. Cenário Principal 1. O Sistema apresentara uma mensagem de Confirmação. 2. O usuário confirma a mensagem. 3. O Sistema excluirá a mensalidade e todas as ocorrências do mesmo no sistema, então o desconectará do sistema. Cenário Secundário 2.1 Caso o usuário negue a confirmação, o sistema voltara ao Caso de Uso Gerenciar Mensalidade. [Caso de uso 004] Agendar Avaliação Descrição: O Sistema deverá mostrar quais as datas e horários disponíveis para agendamento da avaliação do aluno. Atores envolvidos: Usuário do sistema. Pré-condição: O usuário devera estar logado no sistema. E o horário solicitado estar vago. Pós-Condições: Retorno da condição do agendamento, agendamento realizado com sucesso ou erro. Cenário Principal de Sucesso: 1. O sistema apresenta todas as datas e horários vagos. 2. O usuário deverá selecionar o horário para o possível agendamento. 3. O usuário submete os dados do aluno para validação. 4. O sistema valida os dados e retorna mensagem de sucesso. Cenário Secundário: 4.1. O sistema aborta a validade dos dados e retorna mensagem de erro, e volta à tela de horários. [Caso de uso 005] Agendar Tarefa Descrição: O Sistema deverá agendar qualquer tarefa ou compromisso solicitado pelo usuário. 17 Atores envolvidos: Usuário do sistema. Pré-condição: O usuário devera estar logado no sistema. E o horário solicitado estar vago. Pós-Condições: Retorno da condição do agendamento, agendamento realizado com sucesso ou erro. Cenário Principal de Sucesso: 1. O sistema apresenta todas as datas e horários vagos. 2. O usuário deverá selecionar o horário para o possível agendamento. 3. O usuário submete os dados necessários para agendamento. 4. O sistema valida os dados e retorna mensagem de sucesso. Cenário Secundário: 4.1. O sistema aborta a validade dos dados e retorna mensagem de erro, e volta à tela de compromissos. [Caso de uso 006]: Controle Caixa Descrição: O Sistema deverá fazer o controle de todas as movimentações diárias do caixa. Atores envolvidos: Usuário do sistema. Pré-condição: Apenas usuários com acesso ao sistema poderão controlar a movimentação do caixa. Todas as movimentações são registradas, para relatar ao gerente. Pós-condição: Redireciona o Sistema a operação desejada. Cenário Principal de Sucesso: 1. O caso de uso é iniciado quando o usuário entra com o login e senha. 2. O usuário escolhe a opção caixa. 3. O sistema levará o usuário a uma tela onde aparecerão todas as movimentações realizadas até o momento. Entrada e saída do caixa. Podendo escolher algumas opções. 4. O usuário seleciona a opção fechar caixa. <<include>> Cenário Secundário 4.1. Caso o usuário escolha a opção saída no passo 4, o sistema redireciona-o ao Caso de uso Saída do Caixa <<extends>>. 4.2. Caso o usuário escolha a opção Excluir Mensalidade no passo dois, o sistema remete ao Caso de uso Entrada do Caixa <<extends>>. 18 [Caso de uso 007] Saída do Caixa Descrição: O Sistema deverá registrar e atualizar a retirada de capital do caixa. Atores envolvidos: Usuários do sistema. Pré-condição Usuário deve estar logado no sistema e ter realizado o Caso de Uso Controle Caixa Cenário Principal 1. O Sistema apresentara uma janela com a descrição e valor da retirada. 2. O usuário confirma os dados. 3. O Sistema validará a retirada, e a movimentação do caixa será registrada. O sistema exibirá uma mensagem de sucesso. Cenário Secundário 2.1 Caso o usuário negue a confirmação, o sistema voltara ao Caso de Uso Controle Caixa. [Caso de uso 008] Entrada do Caixa Descrição: O Sistema deverá registrar e atualizar a entrada de capital do caixa. Atores envolvidos: Usuários do sistema. Pré-condição Usuário deve estar logado no sistema e ter realizado o Caso de Uso Controle Caixa Cenário Principal 1. O Sistema apresentara uma janela com a descrição, valor da entrada e o tipo (mensalidade, venda de produto ou entrada capital). 2. O usuário confirma os dados. 3. O Sistema validará a entrada, e a movimentação do caixa será registrada. O sistema exibirá uma mensagem de sucesso. Cenário Secundário 2.1 Caso o usuário negue a confirmação, o sistema voltara ao Caso de Uso Controle Caixa. [Caso de uso 009]: Contas a Pagar 19 Descrição: O Sistema deverá exibir todas as contas a serem pagas em data determinada. Atores envolvidos: Usuário do Sistema. Pré-condição Usuário deve estar logado no sistema. E o caixa da empresa possuir capital. Cenário Principal de Sucesso: 1. O caso de uso é iniciado quando o usuário solicita o lembrete das contas do dia. 2. O usuário poderá visualizar em uma janela todas as contas do dia. 3. O usuário pode selecionar a conta a ser paga, registrando a retirada do caixa, Caso de Uso Saída Caixa <<extend>> Cenário Secundário: 3.1 O sistema não valida a retirada do caixa. Mostrando mensagem de erro, ou falta de capital. [Caso de uso 010]: Controle Acesso Descrição: O Sistema deverá controlar a entrada de todas as pessoas na empresa. Atores envolvidos: Gerente, funcionário, aluno Pré-condição: O sistema deverá estar logado e funcionando. Os atores envolvidos deverão estar cadastrados no Banco de Dados. Cenário Principal de Sucesso: 1. O ator envolvido submete sua impressão biométrica ao leitor. 2. O sistema deverá pesquisar as informações para liberação. 3. O sistema valida os dados e entrada permitida. Cenário Secundário: 3.1. O sistema retorna erro. Não encontrou registros biométricos solicitados. Ou aluno bloqueado devido a falta de pagamento da mensalidade. [Caso de uso 011] Fechar Caixa Descrição: O Sistema deverá finalizar o caixa diário, mostrando todas as movimentações e saldo final. 20 Atores envolvidos: Gerente Pré-condição: O sistema deve estar logado com usuário com privilégios de gerente. O caixa deverá estar aberto no dia e houver alguma movimentação. Cenário Principal de Sucesso: Cenário Principal 1. O Sistema apresentara uma janela com a descrição de todos os registros do caixa. 2. O usuário confirma os dados. E solicita fechamento. 3. O Sistema validará a entrada, e a movimentação do caixa será registrada. O sistema exibirá uma mensagem de sucesso. Cenário Secundário 2.1 Caso o usuário negue a confirmação, o sistema voltara ao Caso de Uso Controle Caixa. [Caso de uso 012]: Logar no Sistema Descrição: O usuário devera entrar com seus dados: login e senha. O Sistema deverá permitir acesso ao conteúdo do software se somente se os dados estiverem corretos. Atores envolvidos: Gerente e Funcionário. Pré-condição O usuário já devera possuir seu cadastro no sistema. Cenário Principal de Sucesso: 1. O caso de uso é iniciado com a tela de login e senha. 2. O usuário devera entrar com seus dados. 3. O sistema busca no banco de dados se os dados estão corretos 4. O sistema será iniciado, liberando os privilégios de acordo com o privilegio do usuário. Exibe mensagem de sucesso. Cenário Secundário: 4.1 O sistema retorna a mensagem de erro, ou login inválido. [Caso de uso 013]: Realizar Venda Descrição: O usuário entrara com alguns dados do aluno em seguida os códigos e quantidades 21 dos produtos da venda. Atores envolvidos: Gerente e Funcionário Pré-condição O usuário já devera estar logado no sistema. Cenário Principal de Sucesso: 1. O caso de uso é iniciado com a solicitação de venda de produto. 2. O usuário devera entrar com os dados do cliente. 3. O usuário da inicio a venda, passando os códigos dos produtos e a quantidade. 4. O sistema retorna uma espécie de nota fiscal, com o valor total da venda. [Caso de uso 014]: Gerar Relatório Descrição: O usuário solicita ao sistema um relatório do dia. Atores envolvidos: Usuário do sistema Pré-condição O usuário já devera estar logado no sistema. Cenário Principal de Sucesso: 1. O caso de uso é iniciado com a solicitação da geração do relatório. 2. O usuário aceitar a mensagem de confirmação. 3. O sistema gerará um documento com todos os registros do caixa, e a inscrição de novos alunos. 4. O sistema retorna esse documento para impressão. Cenário Secundário: 2.1 Caso não confirme a mensagem de geração do relatório, o sistema será redirecionado a tela inicial. 9 DIAGRAMAS DE CLASSES Um diagrama de classes é uma representação da estrutura e relações das classes que servem de modelo para objetos. É uma modelagem muito útil para o sistema, define todas as classes que o sistema necessita possuir e é a base para a construção dos diagramas de comunicação e estados. Logo abaixo é apresentado o diagrama de classes do sistema, e uma breve descrição de cada classe segue abaixo. 22 Figura 5 – Representação Diagrama de Classes PRODUTO Esta classe representa os produtos estocados na empresa e cadastrados no sistema. Seus atributos são id, Descrição e Quantidade, junto com seus custos, Preço de venda e preço de compra, que serão necessários para o cadastro do produto no sistema e futura utilização dos dados, seus métodos são set e get que serão utilizados para a inserção e alteração dos atributos, possibilitando também que outras classes chamem esses métodos se necessários. Produto Descrição Atributos nome: String descricao: String Classe responsável por encapsular os atributos do objeto Produto e pela criação das funções de manipulação das mesmas( camada modelo). Responsável pelo armazenamento de informação referente ao nome do produto. Responsável pelo armazenamento de informação referente a descrição do produto 23 medida: String fabricante: String Id: int quantidade: double preco: double estoquemin: double Operações getNome(): String setNome(n: string): void getID(): int getDescricao(): String setDescricao(d: String):void getFabricante(): String setFabricante(r: String): void getQuantidade(): double setQuantidade(q: double): void getEstoqueMIN(): double setEstoqueMIN(q: double): void getValor(): double setValor(q: double): void getUnidadeMedida(): String setUnidadeMedida(q: String): void PESSOA Responsável pelo armazenamento de informação referente ao tipo de medida do produto. Responsável pelo armazenamento de informação referente ao fabricante do produto. Responsável pelo armazenamento de informação referente ao numero de identificação do produto. Responsável pelo armazenamento de informação referente a quantidade do produto. Responsável pelo armazenamento de informação referente ao preço do produto. Responsável pelo armazenamento de informação referente a quantidade mínima permitida no estoque. Retorna o valor do variável referente ao nome do produto. Seta o nome (altera o valor da variável referente ao nome do Produto). Retorna o valor da variável referente ao identificador do Produto. Retorna o valor da variável referente a descrição do produto Seta a descricao (altera o valor da variável referente a descrição do produto). Retorna o valor da variável referente ao fabricante do produto Seta o fabricante (altera o valor da variável referente ao fabricante do produto). Retorna o valor da variável referente a quantidade do produto Seta a quantidade (altera o valor da variável referente a quantidade do produto). Retorna o valor da variável referente a quantidade mínina de produto permitida em estoque. Seta a quantidade (altera o valor da variável referente a quantidade do produto). Retorna o valor da variável referente ao valor do produto. Seta o preco (altera o valor da variável referente ao valor do produto). Retorna o valor da variável referente a unidade de medida do produto. Seta a medida (altera o valor da variável referente a unidade de medida do produto). 24 Classe referente aos atores do sistema. Seu objetivo principal é fornecer dados as classes que à herdam. Com seus atributos Nome, Telefone, Endereço, CPF, Idade. Possui todos os métodos sets e gets. Assim implementados para manipulação desses atributos. Esta classe no sistema é utilizada pra gerenciar a agenda de contatos da empresa. Pessoa Descrição Atributos nome: String telefone: String cell: String tipo: String RG: String cpf: String ID: int endereco: String Operações Pessoa() Pessoa(no: String, te: String, id: int) Pessoa(no: String, te: String, r: String, cp: String, t: String, end: String, id: int): getID(): int setID(ID: int): void setNome(nome: String): void getNome(): String setTelefone (telefone: String): void getTelefone():String Classe responsável por encapsular os atributos do objeto Pessoa e pela criação das funções de manipulação das mesmas (camada modelo). Responsável pelo armazenamento de informação referente ao nome da pessoa. Responsável pelo armazenamento de informação referente ao telefone da pessoa Responsável pelo armazenamento de informação referente ao telefone da pessoa Responsável pelo armazenamento de informação referente ao tipo da pessoa ( gerente , funcionário ou cliente) . Responsável pelo armazenamento de informação referente ao RG da pessoa Responsável pelo armazenamento de informação referente ao CPF da pessoa Responsável pelo armazenamento de informação referente a identificação da pessoa. Responsável pelo armazenamento de informação referente a quantidade mínima permitida no estoque. Destrutor Construtor Construtor Retorna o valor da variável referente ao identificador da pessoa. Seta o ID (altera o valor da variável referente a identificação da pessoa). Seta o nome (altera o valor da variável referente ao nome da pessoa). Retorna o valor da variável referente ao nome da pessoa Seta o telefone (altera o valor da variável telefone da pessoa). Retorna o valor da variável referente ao telefone da pessoa. 25 setCell(telefone: String): void getCell(): String setRG(r: String): void getRG(): String setCPF(c: String): void getCPF (): String setTipo(t: String): void getTipo(): String Seta a quantidade (altera o valor da variável referente a quantidade do produto). Retorna o valor da variável referente ao telefone da pessoa. Seta RG (altera o valor da variável referente ao RG da pessoa). Retorna o valor da variável referente ao RG da pessoa. Seta o cpf (altera o valor da variável referente ao cpf da pessoa). Retorna o valor da variável referente ao CPF. Seta a “tipo de pessoa” (altera o valor da variável referente ao tipo de pessoa). Retorna o valor da variável referente ao tipo da pessoa (gerente, vendedor ou cliente). FUNCIONÁRIO Esta classe representa os funcionários da empresa cadastrados no sistema. Seus atributos são apenas o Login que será atribuído pelo gerente e Senha, esses dados são necessários para efetuar o cadastro do funcionário no sistema. Esta classe também possui atributos necessários para gerenciar guardar algumas informações do Funcionário, como Cargo e Salário. Também são disponíveis métodos para possibilitar o gerenciamento e manipulação dos seus dados. Funcionário Descrição Atributos ID: Int CPF: String Salario: Double Cargo: String Classe responsável por encapsular os atributos do objeto Funcionário, herda os atributos da Classe Pessoa, mas possui mais algumas informações úteis ao sistema (camada modelo). Armazena o identificador do funcionário, ligando com sua respectiva tabela de informações da classe Pessoa. Responsável pelo armazenamento de informação referente ao CPF do funcionário Responsável pelo armazenamento de informação referente ao salário do funcionário Responsável pelo armazenamento de informação referente ao Cargo do funcionário ( gerente , funcionário geral ou secretária) . ALUNO Classe que herda atributos da classe Pessoa, esta classe refere-se aos alunos matriculados na academia e que estão ativos no sistema, ou seja, mensalidade em dia. Possui atributos para 26 gerenciar o acesso do aluno a academia, também para o controle da mensalidade. Esta classe é associada a classe de Acesso e Mensalidade. Com isso podemos controlar as ações do aluno dentro da academia. Aluno Descrição Atributos ID: Int Data: Date Sexo: Double Classe responsável por encapsular os atributos do objeto Aluno, herda os atributos da Classe Pessoa, mas possui mais algumas informações úteis ao sistema (camada modelo). Armazena o identificador do Aluno, ligando com sua respectiva tabela de informações da classe Pessoa. Responsável pelo armazenamento de informação referente ao data de nascimento do aluno Responsável pelo armazenamento de informação referente ao sexo do aluno ACESSO Classe que depende de Alunos, para poder gerenciar o acesso do aluno as dependências da academia. Esta é muito utilizada para evitar inadimplências. E restringir o acesso de pessoas não devidamente não registradas ao interior da sala de musculação. Esse controle será feito através de uma catraca eletrônica. Acesso Descrição Atributos ID: Int Login: String Senha: Double Classe responsável por encapsular os atributos do objeto Acesso, herda os atributos da Classe Funcionário, porém armazena as informações necessárias para conseguir acesso ao sistema. (camada modelo). Armazena o identificador do Funcionário, ligando com sua respectiva tabela de informações da classe Funcionario. Responsável pelo armazenamento de informação referente ao login do usuário do sistema. Responsável pelo armazenamento de informação referente a senha necessária para logar no sistema. MENSALIDADE Esta reserva os dados dependentes do aluno, para controlar as mensalidades da academia. Ela guarda todas as datas de pagamento, o dia do vencimento, e o valor da mensalidade a ser 27 paga pelo aluno. Mensalidade Descrição Atributos ID: Int DataUltimo: Data DataVenc: Data Classe responsável por encapsular os atributos do objeto Mensalidade, guarda as informações das mensalidades pagas pelo aluno. Armazena o identificador do Aluno, ligando com sua respectiva tabela de informações da classe Aluno. Responsável pelo armazenamento de informação referente a ultima data que foi paga a mensalidade. Armazena a data do vencimento da mensalidade do aluno. MEDIDA Classe que depende da classe aluno para poder armazenar dados referentes às medidas do aluno, podendo comparar assim a evolução da sua avaliação física no decorrer do tempo. Esta classe armazena todos os dados utilizados pela academia para avaliar um aluno. Acesso Descrição Atributos ID: Int Date : date Braco: double Tórax : double Peso: double Abdomem: double Perna: Double Classe responsável por encapsular os atributos do objeto Medidas, herda os atributos da Classe aluno. Essa classe modela todas as informações referente as medidas do aluno. Armazena o identificador do Aluno, ligando com sua respectiva tabela de informações da classe Aluno. Salva a data da realização das medidas. Guarda as informações da medida do braço do aluno. Guarda as informações da medida do torax do aluno. Guarda as informações da medida do peso do aluno. Guarda as informações da medida do abdomem do aluno. Guarda as informações da medida da perna do aluno. TAREFA Uma classe utilizada pelo sistema para poder armazenar dados no banco de dados, para controlar uma espécie de agenda diária. Contendo todos os compromissos agendados, e podendo avisar ao usuário do sistema quando esse compromisso estiver por vencer. Compreende seus atributos em Data, Hora, Descrição do evento ou compromisso. 28 Descrição Atributos nome: String D: int M: int A: int H: int Min: int fone: String Id: int Operações Tarefa() Tarefa getID(): int setID(n: int): void getDia(): int setDia(n: int): void getMes(): void setMes(n: int): int getAno(): void setAno(n: int): int getHora(): int setHora(n: int): void getMin(): int setMin(n: int): void getNome(): String SetNome(n: String): void getfone(): String setfone(n: String): void Classe responsável por encapsular os atributos do Objeto tarefa e pela criação das funções de manipulação das mesmas( camada modelo). Referente ao nome da tarefa definida pelo usuário. Responsável pelo armazenamento de informação referente ao dia do mês. Responsável pelo armazenamento de informação referente ao mês do ano. Responsável pelo armazenamento de informação referente ao ano. Responsável pelo armazenamento de informação referente a hora para realização da tarefa Responsável pelo armazenamento de informação referente aos minutos para completar o horário de realização da tarefa Responsável pelo armazenamento de informação referente ao telefone do cliente onde será realizada a obra Responsável pelo armazenamento de informação referente ao numero de identificação da obra. Retorna o ID da tarefa. Seta o ID (altera o valor da variável id). Retorna o valor da variável referente ao dia da tarefa. Seta o D (altera o valor da variável referente ao dia da tarefa). Retorna o valor da variável referente ao Mês da tarefa. Seta o M (altera o valor da variável referente ao Mês da tarefa). Retorna o valor da variável referente ao Ano da tarefa. Seta o A (altera o valor da variável referente ao Ano da tarefa). Retorna o valor da variável referente a hora da tarefa. Seta o H (altera o valor da variável referente a hora da tarefa). Retorna o valor da variável referente aos minutos da tarefa. Seta o Min (altera o valor da variável referente aos minutos da tarefa). Retorna o valor da variável referente ao nome da tarefa. Seta o nome (altera o valor da variável referente ao nome da tarefa). Seta o fone (altera o valor da variável referente ao fone da tarefa). 29 CAIXA Classe utilizada pelo sistema, para gerenciar o caixa diário da empresa. Com todos as entradas e saídas de capital do caixa. Podendo no final do dia apenas solicitar ao sistema o 30 fechamento do caixa, e conferindo se os saldos finais batem. Esta classe também é muito importante para poder ter uma real visão do rendimento da academia. Caixa Descrição Atributos ID: Int Date : date Dinheiro: double Cheque : double Cartao: double Classe responsável por encapsular os atributos do objeto Caixa, armazena os movimentos de entrada e saída de capital diariamente da empresa. Armazena o identificador do Caixa; Salva a data da realização da abertura do caixa; Guarda as informações da referente ao montante de dinheiro que está disponível em caixa. Guarda as informações da referente ao montante de cheque que está disponível em caixa. Guarda as informações da referente ao montante de capital que entrou por forma de cartão e que está disponível em caixa. 10 DIAGRAMAS DE SEQÜÊNCIAS DIAGRAMA DE SEQÜÊNCIA ADICIONAR ALUNO / PRODUTO Figura 3: Diagrama de seqüência adicionar aluno /produto. Diagrama representa a seqüência e os devidos passos para adicionar um produto, um aluno e as passagens de parâmetros indicadas pelo símbolo “(*)”. Como utilizamos a arquitetura MVC começamos pela visão, onde o usuário passa os dados para o sistema com o intuito de adicionar um produto ou uma obra. A partir daí o sistema executa os passos para completar a adição, seguindo pelo controlador, chegando ao modelo. Na camada de modelo, são carregados os produtos ou obras cadastrados no banco de dados, em seguida é criado 31 o novo objeto produto ou obra e todos os itens são reinseridos no banco de dados. Assim retornando até a visão o resultado sucesso ou falha da operação. DIAGRAMA DE SEQÜÊNCIA ALTERAR PRODUTO / OBRA Figura 4: Diagrama de seqüência alterar produto / aluno. Diagrama representa a seqüência e os devidos passos para alterar um produto ou aluno e as passagens de parâmetros indicadas pelo símbolo “(*)”. Como utilizamos a arquitetura MVC começamos pela visão, onde o usuário passa os dados para o sistema com o intuito de alterar um produto ou uma obra já cadastrado. A partir daí o sistema executa os passos para completar a alteração, seguindo pelo controlador, chegando ao modelo. Na camada de modelo, são carregados os produtos ou obras cadastrados no banco de dados, em seguida é localizado o produto ou obra a ser alterado, alteram-se os dados e todos os itens são reinseridos no banco de dados. Assim retornando até a visão o resultado sucesso ou falha da operação. DIAGRAMA DE SEQÜÊNCIA EXCLUIR PRODUTO / ALUNO 32 Figura 4: Diagrama de seqüência excluir produto / obra. Diagrama representa a seqüência e os devidos passos para excluir um produto ou obra e as passagens de parâmetros indicadas pelo símbolo “(*)”. Como utilizamos a arquitetura MVC começamos pela visão, onde o usuário passa os dados para o sistema com o intuito de excluir um produto ou uma obra já cadastrado. A partir daí o sistema executa os passos para completar a exclusão, seguindo pelo controlador. Em seguida é localizado o produto ou obra a ser excluído, excluem-se o produto ou obra desejada e o banco de dados é atualizado. Assim retornando até a visão o resultado sucesso ou falha da operação. 11 DESIGN PATTERN Existem alguns critérios para que uma solução torne-se um padrão: 1. Devem descrever e justificar as soluções para problemas concretos e bem definido, i.e., não são estratégias ou princípios de implementação; 2. As soluções descritas devem estar comprovadas, i.e., devem ter sido previamente experimentadas e testadas; 3. O problema tratado por um padrão deve ocorrer em diferentes contextos, ou seja, se a solução não tem aplicação em diferentes situações, então não é um padrão; 4. Usualmente os padrões de projeto descrevem relações entre os conceitos, mecanismos e estruturas existentes nos sistemas; 5. Os padrões de projeto devem ser capazes de capturar a evolução e o aprimoramento das soluções, assim como equilibrar os pontos fortes e fracos encontrados, sendo assim, não são soluções óbvias ou triviais; 6. Os padrões devem ser utilizados em conjunto com outros padrões, compondo uma linguagem de padrões. 33 Existem patterns para quase todo tipo de situação, alguns exemplos dos que utilizamos: DAO é o nome de um pattern que padroniza sua conexão com a base de dados, FAÇADE é um pattern que padroniza a disponibilização dos métodos das entidades do seu sistema. Para desenvolvermos o diagrama de classes nos baseamos em um dos vários padrões de projetos, escolhemos o padrão "Builder", pois permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações. Segundo o livro "Design Patterns: Elements of Reusable ObjectOriented Software", contém os seguintes elementos: • director — constrói um objeto utilizando a interface do builder; • builder — especifica uma interface para um construtor de partes do objetoproduto; • concrete builder — define uma implementação da interface builder, mantém a representação que cria e fornece interface para recuperação do produto; • product — o objeto complexo em construção. Inclui classes que definem as parte constituintes. Figura 1: Exemplo Builder Basicamente visamos desenvolver algumas características desse padrão de projeto do ponto de vista que um processo possa criar diferentes representações, um exemplo disso seria a nossa classe Venda que representar uma venda de algum produto ou a venda de uma obra. É importante notar que os padrões não resolverá todos os seus problemas, mas constituem uma ferramenta extra muito útil nas situações do dia-a-dia, e certamente facilitará a vida de quem os conhece. 12 ARQUITETURA Utilizamos a arquitetura MVC que visa basicamente separar os dados (model) da interface (view), assim alterando a interface não prejudica em nada a manipulação de dados, e estes poderão ser reorganizados sem alterar a interface. Esta arquitetura trabalha na separação das tarefas de acesso aos dados e lógica de negócio, lógica de apresentação e de interação com o utilizador, Introduzindo um componente entre os dois: o controlador (controller). 34 É exatamente isto que queremos para o nosso sistema a separação desses fatores, pois diferentes interfaces poderão acessar os mesmos dados, funcionando como uma "mascara" apenas. Com isso obtemos um sistema mais organizado e muito mais fácil resolver problemas e migrações com essas especificações do que em um sistema sem arquitetura. 13 TESTES Para avaliar os casos de testes utilizamos o método da caixa preta "Particionamento de equivalência" pois divide o domínio de entrada de um programa em classe de dados a partir das quais os casos de teste podem ser derivados. O particionamento de equivalência procura definir um caso de teste que descubra classes de erros, assim reduzindo o número total de casos de teste que devem ser resolvidos o que facilita o desempenho do desenvolvimento do sistema tendo em vista que nossa equipe utiliza metodologia ágil XP. Baseia-se numa avaliação de classes de equivalência para uma condição de entrada. Uma classe de equivalência representa um conjunto de estados válidos ou inválidos para condições de entrada. Alem disso faremos verificações periódicas no código do sistema para tentar evitar possíveis erros de implementação e focar a implementação correta dos requisitos. Estão descritos os possíveis testes manuais realizados no sistema em sua etapa de teste, expressado em um formato detalhado de como realizar os casos de testes, estes casos de testes são baseados nos casos de uso e nos requisitos do sistema. CT - 01 Tarefa Cadastrar um Aluno. Importância Essencial. Objetivo Cadastrar um aluno no sistema. Pré-Condição Usuário logado no sistema. Dados Teste ID = identificador válido {Id do produto, Integer >0 e único} do Nome = nome válido { Nome do produto, String não nula} Telefone = valor válido { String não nula, Length > 9} Descrição Cenário Principal: 1. 2. 3. 4. Após o usuário passar os dados do aluno. O sistema deverá validar todas as informações Retorno de mensagem de sucesso. Sistema será redirecionado a tela principal. Cenário Secundário: 1. 2. 3. Após o sistema verificar os dados do aluno; O sistema retornará uma mensagem de erro; A operação ficará em espera até corrigir os erros ou 35 Forçar saída do sistema. Resultados Fluxo Principal: Aluno cadastrado com sucesso. Fluxo Alternativo 1: Algum campo inválido ou vazio: O sistema indica que se encontra o erro. CT - 02 Tarefa Alterar dados de um aluno. Importância Essencial. Objetivo Gerenciar as informações do aluno no sistema. Pré-Condição Usuário logado no sistema. Dados Teste ID = identificador válido {Id do produto, Integer >0 e único} do Nome = nome válido { Nome do produto, String não nula} Telefone = valor válido { String não nula, Length > 9} Descrição Cenário Principal: 1. 2. 3. 4. Após o usuário alterar os dados do aluno. O sistema deverá validar todas as informações Retorno de mensagem de sucesso. Sistema será redirecionado a tela principal. Cenário Secundário: 1. 2. 3. Após o sistema verificar os dados do aluno; O sistema retornará uma mensagem de erro; A operação ficará em espera até corrigir os erros ou Forçar saída do sistema. Resultados Fluxo Principal: Alteração do aluno já cadastrado. Fluxo Alternativo 1: Algum campo inválido ou vazio: O sistema indica que se encontra o erro. CT - 03 Tarefa Cadastrar um produto. Importância Essencial. 36 Objetivo Cadastrar um produto no sistema. Pré-Condição Usuário logado no sistema. Dados Teste ID = identificador válido {Id do produto, Integer >0 e único} do Nome = nome válido { Nome do produto, String não nula} Valor = valor válido {Valor do produto, Double > 0,00} Fabricante = nome válido { Nome do fabricante, String não nula} QuantidadeTotal = valor válido{Valor da quantidade, Double > 0,00} Estoque Mínimo = valor válido{Valor da quantidade_minima, Double > 0,00} Descrição Cenário Principal: 1. 2. 3. 4. Após o usuário passar as informações do produto. O sistema deverá validar todas as informações Retorno de mensagem de sucesso. Sistema será redirecionado a tela principal. Cenário Secundário: 1. 2. 3. Após o sistema verificar os dados do produto; O sistema retornará uma mensagem de erro; A operação ficará em espera até corrigir os erros ou Forçar saída do sistema. Resultados Fluxo Principal: Produto cadastrado. Fluxo Alternativo 1: Algum campo inválido ou vazio: O sistema indica que se encontra o erro. CT - 04 Tarefa Gerenciar produto. Importância Importante. Objetivo Procura por produtos já cadastrados e exibi suas informações na tela, permiti modificações em qualquer campo de informação além de exclusão do produto. Pré-Condição Produto deve estar cadastrado no sistema e o usuário deve estar devidamente logado de acordo com seu privilégio no sistema. Dados Teste ID = identificador válido {Id do produto, Integer >0 e único} do 37 Nome = nome válido { Nome do produto, String não nula} Valor = valor válido {Valor do produto, Double > 0,00} Fabricante = nome válido { Nome do fabricante, String não nula} QuantidadeTotal = valor válido{Valor da quantidade, Double > 0,00} Estoque Mínimo = valor válido{Valor da quantidade_minima, Double > 0,00} Descrição Cenário Principal: 1. Após o usuário alterar os dados do produto. 2. O sistema deverá validar todas as informações 3. Retorno de mensagem de sucesso. 4. Sistema será redirecionado a tela principal. Cenário Secundário: 1. Após o sistema verificar os dados do produto; 2. O sistema retornará uma mensagem de erro; 3. A operação ficará em espera até corrigir os erros ou Forçar saída do sistema. Resultados Fluxo Principal: Produto alterado ou excluído. Fluxo Alternativo 1: Algum campo inválido ou vazio ou: O sistema indicara que se encontra o erro. Fluxo Alternativo 2: Produto inexistente: O sistema indicara que o produto não consta cadastrado no sistema. CT - 05 Tarefa Agendar Tarefa. Importância Essencial. Objetivo Agendar uma Tarefa no sistema. Pré-Condição Usuário logado no sistema. Dados Teste Ano = ano válido { >2000 } Mês = mês válido { 1 à 12} Dia = dia válido { 1 à 30} do 38 Hora = hora válida { 0 à 23} Tarefa = tarefa válida {Nome da tarefa, String não nula} Descrição 1. O usuário inicia o menu Tarefas; 2. O usuário escolhe o item "Agendar Tarefa" do menu; 3. O sistema abre uma janela com um calendário, onde com um duplo clique em uma data abrirá uma janela de agendamento; 4. O usuário preenche os campos obrigatórios; 5. Após o preenchimento desses campos o usuário submete a ação; 6. Será retornado a mensagem de Erro ou sucesso; Resultados Fluxo Principal: tarefa agendada. Fluxo Alternativo 1: campo tarefa vazio: o sistema indicara por meio de aviso para o usuário especificar a tarefa agendada. CT - 06 Tarefa Gerenciar Tarefa. Importância Importante. Objetivo Gerenciar uma tarefa já agendada no sistema. Pré-Condição Tarefa já agendada no sistema. Dados Teste Ano = ano válido { >2000 } Mês = mês válido { 1 à 12} Dia = dia válido { 1 à 30} do Hora = hora válida { 0 à 23} Tarefa = tarefa válida {Nome da tarefa, String não nula} Descrição 1. O usuário inicia o menu Tarefas; 2. O usuário escolhe o item "Agendar Tarefa" do menu; 3. O sistema abre uma janela com um calendário, onde com um clique em uma data atualizará a tabela de tarefas; 4. O usuário seleciona a tarefa para modificar/excluir; 5. Se excluir, apenas a mensagem de confirmação; 6. Se alterar, uma janela com os dados atuais, onde o usuário 39 faz a modificação; 7. Mensagem retorno Falha/Sucesso. Resultados Fluxo Principal: Gerenciamento das tarefas já cadastradas. CT - 07 Tarefa Cadastro de funcionário Importância Essencial. Objetivo Cadastrar um funcionário no sistema, para que este possa ter suas informações tais como salário e comissões gerenciados pelo sistema. Pré-Condição Usuário logado no sistema e este usuário ser um gerente, ou administrador do sistema. Dados Teste Nome = nome válido { Nome da funcionário, String não nula} do Telefone = telefone válido { Numero do telefone, String Length >7} CPF = CPF válido {Numero do CPF, String Length > 9} Cargo = Cargo válido { Nome do cargo, String não nula} Salário = Salário válido{ Salário Real, double > 0,00 } Descrição 1. O usuário inicia o menu Gerencia; 2. O usuário escolhe o item Controle de funcionários; 3. O sistema abre uma janela com a listagem de todas os funcionários cadastrados no sistema; 4. O usuário deve clicar no botão Novo Funcionário; 5. Abrirá uma janela com campos de informação; 6. Preencha os campos obrigatórios e submeta a ação; 7. Será retornado a mensagem de Erro ou sucesso; Resultados CT - 08 Fluxo Principal: Funcionário cadastrado. 40 Tarefa Gerencia de funcionário Importância Essencial. Objetivo Gerencia dos funcionário no sistema, para que este possa ter suas informações tais como salário e comissões gerenciados pelo sistema. Pré-Condição Usuário logado no sistema e este usuário ser um gerente, ou administrador do sistema. Dados Teste Nome = nome válido { Nome da funcionário, String não nula} do Telefone = telefone válido { Numero do telefone, String Length >7} CPF = CPF válido {Numero do CPF, String Length > 9} Cargo = Cargo válido { Nome do cargo, String não nula} Salário = Salário válido{ Salário Real, double > 0,00 } Descrição 1. O usuário inicia o menu Gerencia; 2. O usuário escolhe o item Controle de funcionários; 3. O sistema abre uma janela com a listagem de todas os funcionários cadastrados no sistema; 4. O usuário deve Selecionar na tabela o funcionário que deseja modificar ou excluir; 5. O sistema enviará uma mensagem de confirmação; 6. Se sua opção foi modificar aparecera uma janela com os campos de informação do funcionário então pode altera-los e submeta a ação; 7. Será retornado a mensagem de Erro ou sucesso; Resultados Fluxo Principal: Funcionário Excluído/Modificado.. CT - 9 Tarefa Cadastro de Usuário Importância Essencial. 41 Objetivo Cadastrar um usuário no sistema, sómente cadastrado seu login e senha um funcionário se tornará usuário e poderá utilizar o sistema. Pré-Condição Usuário logado no sistema, e este usuário ser um gerente. Dados Teste Nome = nome válido { Nome da funcionário, String não nula} do User = nome de usuário válido { Usuário válido, String Length > 2} Senha = Senha válida {Senha válida, String Length > 5} Tipo = Tipo válido {Tipo de Login, String=“Gerente ou Vendedor”} Descrição 1. O usuário inicia o menu Gerencia; 2. O usuário escolhe o item Controle de Usuário; 3. O sistema abre uma janela com alguns campos a ser preenchidos 4. O usuário deve preencher todos os campos pois são obrigatórios 5. Se o funcionário ainda não cadastrado, clique no botão “...” este abrirá uma janela com os dados para um novo funcionário. 6. Preencha os campos obrigatórios e selecione o funcionário correspondente a este login; 7. Será retornado a mensagem de Erro ou sucesso; Resultados Fluxo Principal: usuário cadastrado. CT - 10 Tarefa Gerencia de Usuário Importância Essencial. Objetivo Gerencia dos Usuário segurança do sistema. Pré-Condição Usuário logado no sistema, e este usuário ser um gerente. Dados Teste User = nome de usuário válido { Usuário válido, String Length > 2} do no sistema, garantir integridade Senha = Senha válida {Senha válida, String Length > 5} Descrição 1. O usuário inicia o menu Gerencia; e 42 2. O usuário escolhe o item Controle de Usuário; 3. O sistema abre uma janela com alguns campos a ser preenchidos 4. O usuário deve preencher os campos de login e senha e depois clicar no botão alterar; 5. Se usuário e senha válido, então será liberado a modicar o login no sistema; 6. Será retornado a mensagem de Erro ou sucesso; Resultados Fluxo Principal: Alterar login do funcionário; 43 CONCLUSÃO Este documento tem como meta fornecer uma modelagem para o sistema proposto inicialmente: um sistema de apoio à empresa, academia de ginástica e musculação SportLife. Esta modelagem baseada em orientação a objetos tornou o processo de desenvolvimento do software mais ágil, prático e de melhor entendimento a todos os membros da equipe, pois todos os passos foram seguidos por dicas e informações do cliente. Assim, com esta documentação foram esclarecidos e objetivados todos os requisitos necessários para a satisfação da empresa-cliente. 44 Apêndice A – Coleta de Informações Ao identificar a necessidade de um sistema para gerenciamento da academia A coleta de informações baseou-se em entrevistas com o dono da empresa a academia SportLife, o senhor Alain Camargo. A partir do primeiro contato, explanou o funcionamento básico do ambiente organizacional da empresa. Já nas demais entrevistas, foram necessárias algum questionamento sobre a realidade da empresa. Os tópicos abordados nestes questionários foram: - Descrição do processo realização das tarefas; - Atividades mais freqüentes na academia; - Formas de registros atuais; - Alocação e recursos; - Funcionamento em geral da academia. Tendo em vista o bom aproveitamento dos questionários, e levando em consideração todas as colocações impostas pelo senhor Alain, quanto aos demais instrutores da academia. Assim podemos nos basear em quais requisitos necessários para o desenvolvimento e implantação do sistema na empresa. 45 Apêndice B. 1Como o sistema exigiu da equipe algumas melhoras nos feedbacks, tais como alteração das telas. Melhor gerenciamento da barra de menus. Isso trouxe em alguns esforços não previstos no cronograma. E também algumas das iterações do sistema, não foram seguidas conforme previstas no cronograma do projeto. Pois a necessidade do cliente nos fez rever algumas das etapas e antecipa-las deixando as previstas como segundo plano. Temos isso não visto na questão de LOGIN DO SISTEMA que era uma etapa prevista para a data de 06/08, mas foi antecipado para as primeiras etapas para poder controlar o fluxo dos usuários que já usavam a versão beta do sistema. Uma outra etapa antecipada foi CONTROLE DO CAIXA, pois temos a necessidade que o cliente já gostaria de ir usando o sistema para poder ter o controle das mensalidades de todos alunos, e tendo isto em vista, o sistema necessitaria de um controle do caixa para poder cumprir esse requisito do cliente. 2- Com a implantação do sistema e seu uso diário, tivemos muita dificuldade em conseguir que o DB4O, se mantivesse estável. Houve muitas quebras de informações e também a performance do sistema já estava ficando comprometida. Com essas dificuldades foi sugerido migrar todo o banco de DB4O para PostGress. O PostGress apresento uma melhor performance e é considerado um SGBD mais confiável. Como essas mudanças surgiram no meio do caminho do projeto, houve um atraso considerável no cronograma, mas garantimos uma qualidade melhor do sistema em si. Veja o anexo do novo cronograma. 46 Anexo Cronograma Descrição 1 Treinamento e Obtenção dados Previsão (Semanas) Data início 1 02/07 2 Telas Iniciais 2 16/07 3 Cadastro Aluno 1 23/07 4 Utilização Webcam 1 30/07 5 Login/ Criptografia 1 06/08 6 Funcionários/Salários 1 13/08 7 Usuários 1 20/08 8 Avaliação 1 27/08 9 Avaliação + Anaminse 1 04/09 10 Modalidades 1 11/09 11 Integridade Do Banco De Dados 1 18/09 12 Back UP 1 25/09 13 Agenda Contatos 1 02/10 14 Agenda Tarefas 1 09/10 15 Controle Alunos 1 16/10 16 Controle Do Acesso 1 23/10 17 Abertura E Restrição das Mensalidades 1 30/10 18 Caixa 1 14/11 19 Migração do SGBD Para PostGress 2 21/11 20 Revisão e Testes 2 05/12 47 FORMULÁRIO DO RELATÓRIO DA EQUIPE Nome Hudson João Magalhães Lucas da Silva Grando Contribuição Assinatura 50% _____________________________________ 50% _____________________________________