UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO UMA APLICAÇÃO WEB PARA GERENCIAMENTO DE DOCUMENTOS ATENDENDO A NBR ISO 9000:2000 GERALDO VOLPATO CALEGARI JUNIOR FLORIANÓPOLIS, MAIO DE 2004. UNIVERSIDADE FEDERAL DE SANTA CATARINA CENTRO TECNOLÓGICO DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA CURSO DE CIÊNCIAS DA COMPUTAÇÃO UMA APLICAÇÃO WEB PARA GERENCIAMENTO DE DOCUMENTOS ATENDENDO A NBR ISO 9000:2000 GERALDO VOLPATO CALEGARI JUNIOR Projeto apresentado à disciplina de Projetos em Ciência da Computação II, orientado pelo professor Renato Cislaghi. FLORIANÓPOLIS, MAIO DE 2004. II SUMÁRIO LISTA DE FIGURAS ............................................................................................ VII LISTA DE SIGLAS E ABREVIATURAS .............................................................. VIII 1. INTRODUÇÃO ................................................................................................... 9 1.1. Apresentação ............................................................................................... 9 1.2. Objetivos ...................................................................................................... 9 1.2.1. Geral ..................................................................................................... 9 1.2.2. Específicos .......................................................................................... 10 1.3. Justificativa ................................................................................................ 10 1.4. Estrutura do Trabalho ................................................................................ 11 2. FUNDAMENTAÇÃO TEÓRICA ........................................................................ 13 2.1. Qualidade e Normalização ......................................................................... 13 2.1.1. O conceito de “Qualidade” .................................................................. 13 2.1.2. Histórico da Qualidade ........................................................................ 14 2.1.3. ISO ...................................................................................................... 15 2.1.4. ISO Série 9000 .................................................................................... 16 2.1.5. Requisitos da norma NBR ISO 9001:2000 .......................................... 17 2.1.5.1. Sistema de gestão da qualidade................................................... 17 2.1.5.2. Responsabilidade da direção ....................................................... 17 2.1.5.3. Gestão de recursos ...................................................................... 18 2.1.5.4. Realização do produto .................................................................. 18 2.1.5.5. Medição, análise e melhoria ......................................................... 18 2.1.6. Requisitos de documentação .............................................................. 19 2.1.7. Gerenciamento de documentos da qualidade baseado na ISO 9000 [1] ...................................................................................................................... 21 2.2. Arquitetura Cliente/Servidor ....................................................................... 23 III 2.2.1. Arquitetura Cliente/Servidor de duas camadas ................................... 23 2.2.2. Arquitetura Cliente/Servidor de três camadas ..................................... 24 2.3. Tecnologia Java ......................................................................................... 25 2.3.1. Linguagem Java .................................................................................. 25 2.3.2. Plataforma J2EE ................................................................................. 26 2.3.2.1. Arquitetura .................................................................................... 26 2.3.2.2. Infra-Estrutura ............................................................................... 27 2.3.2.3. Tecnologias .................................................................................. 28 2.3.2.3.1. Servlets .................................................................................. 29 2.3.2.3.2. JavaServer Pages (JSP) ........................................................ 30 2.3.2.3.3. Enterprise JavaBeans (EJB) .................................................. 30 2.4. Reuso de Software e Projeto ..................................................................... 31 2.4.1. Design Patterns ................................................................................... 31 2.4.1.1. Model-View-Controller .................................................................. 31 2.4.1.2. Facade .......................................................................................... 32 2.4.1.3. Factory Method ............................................................................. 33 2.4.1.4. Singleton ....................................................................................... 34 2.4.2. Frameworks ........................................................................................ 35 2.4.2.1. Velocity ......................................................................................... 35 2.4.2.2. Hibernate ...................................................................................... 36 2.5. Processo de Software ................................................................................ 38 2.5.1. ICONIX ................................................................................................ 38 2.5.1.1. Análise de requisitos ..................................................................... 39 2.5.1.2. Análise e projeto preliminar .......................................................... 40 2.5.1.3. Projeto .......................................................................................... 40 2.5.1.4. Implementação ............................................................................. 40 3. APLICAÇÃO PROPOSTA ................................................................................ 41 3.1. Análise ....................................................................................................... 42 3.1.2. Requisitos Funcionais ......................................................................... 42 3.1.3. Requisitos não funcionais ................................................................... 43 3.1.4. Atores .................................................................................................. 43 3.1.4.1. Gestor ........................................................................................... 43 3.1.4.2. Colaborador .................................................................................. 44 IV 3.1.5. Casos de uso ...................................................................................... 44 3.1.5.1. Efetuar Login (colaborador / gestor) ............................................. 44 3.1.5.2. Listar documentos (colaborador/gestor) ....................................... 44 3.1.5.3. Abrir documento (colaborador/gestor) .......................................... 45 3.1.5.4. Elaborar Documento (gestor)........................................................ 45 3.1.5.5. Enviar Documento para Consenso (gestor) .................................. 45 3.1.5.6. Registrar Adequação do Documento (colaborador)...................... 46 3.1.5.7. Registrar Aprovação do Documento (colaborador)....................... 47 3.1.5.8. Revisar Documento (gestor) ......................................................... 47 3.1.5.9. Cancelar Documento (gestor) ....................................................... 47 3.1.5.10. Enviar lembrete de pendência (gestor) ....................................... 48 3.1.6. Diagrama de Casos de uso ................................................................. 48 3.1.7. Modelo de Domínio ............................................................................. 49 3.1.7.1. Classe Documento ....................................................................... 49 3.1.7.2. Classe Consenso.......................................................................... 49 3.1.7.3. Classe Aprovacao......................................................................... 50 3.1.7.4. Classe Area .................................................................................. 50 3.1.7.6. Classe Colaborador ...................................................................... 50 3.1.7.7. Classe WorkflowManager ............................................................. 50 3.2. Projeto ....................................................................................................... 51 3.2.1. Diagramas de interação ...................................................................... 51 3.2.1.1. Diagrama de seqüência – Efetuar Login ....................................... 51 3.2.1.2. Diagrama de seqüência – Listar Documentos .............................. 51 3.2.1.3. Diagrama de seqüência – Abrir Documento ................................. 52 3.2.1.4. Diagrama de seqüência – Elaborar Documento ........................... 52 3.1.2.5. Diagrama de seqüência – Enviar Documento para Consenso ..... 52 3.1.2.6. Diagrama de seqüência – Registrar Adequação do Documento .. 52 3.1.2.7. Diagrama de seqüência – Registrar Aprovação do Documento ... 53 3.1.2.8. Diagrama de seqüência – Revisar Documento ............................ 53 3.2.2. Diagrama de classes de projeto .......................................................... 53 3.2.3. Diagramas de Estados ........................................................................ 58 3.2.4. Diagrama E-R do banco de dados ...................................................... 59 3.3. Implementação .......................................................................................... 60 V 3.3.1. Ambiente de Desenvolvimento ............................................................ 60 3.3.1.1. Ferramenta IDE ............................................................................ 60 3.3.1.2. Servidor de Aplicações ................................................................. 60 3.3.1.3. Banco de Dados ........................................................................... 61 3.3.2. Arquitetura da Aplicação ..................................................................... 61 3.3.2.1. Implementação do padrão MVC ................................................... 61 3.3.3. Classes Implementadas ...................................................................... 62 3.3.3.1. Classes da Camada de Controle .................................................. 62 3.3.3.1.1. Classe Controller .................................................................. 62 3.3.3.1.2. Classe Action ........................................................................ 63 3.3.3.1.3. Classe DocumentoAction .................................................... 63 3.3.3.1.4. Classe ViewAction ................................................................ 63 3.3.3.1.5. Classe LoginAction .............................................................. 63 3.3.3.1.6. Classe ConsensoAction ....................................................... 63 3.3.3.1.7. Classe AprovacaoAction...................................................... 64 3.3.3.1.8. Classe ActionFactory ........................................................... 64 3.3.3.2. Classe da Camada de Negócios .................................................. 64 3.3.3.2.1. Classe GerenciadorDocumentos ........................................ 64 3.3.3.2.2. Classe FacadeGerenciador .................................................. 64 3.3.3.2.3. Classe WorkflowManager .................................................... 65 3.3.3.2.4. Classe SegurancaHandler.................................................... 65 3.3.3.2.5. Classes de Objetos do Negócio ............................................. 65 3.3.3.2.6. Classes da Sub-Camada de Persistência .............................. 65 3.3.3.2.7. Classes Utilitárias ................................................................... 66 3.3.4. Layout do Sistema............................................................................... 67 3.3.5. Considerações .................................................................................... 69 3.4. Testes ........................................................................................................ 70 3.4.1. O Ambiente de Teste .......................................................................... 70 3.4.2. Funcionamento em Ambiente Distribuído ........................................... 70 3.4.3. Testes de Uso do Sistema .................................................................. 71 4. CONSIDERAÇÕES FINAIS ............................................................................. 73 4.1. Conclusão .................................................................................................. 73 4.2. Dificuldades Encontradas .......................................................................... 74 VI 4.3. Trabalhos Futuros ...................................................................................... 74 ANEXOS .............................................................................................................. 79 Anexo 1: Diagrama de Seqüência – Efetuar Login............................................... 80 Anexo 2: Diagrama de Seqüência – Listar Documentos ...................................... 81 Anexo 3: Diagrama de Seqüência – Abrir Documento ......................................... 82 Anexo 4: Diagrama de Seqüência – Elaborar Documento ................................... 83 Anexo 5: Diagrama de Seqüência – Enviar Documento para Consenso ............. 84 Anexo 6: Diagrama de Seqüência – Registrar Adequação do Documento .......... 85 Anexo 7: Diagrama de Seqüência – Registrar Aprovação do Documento ........... 86 Anexo 8: Diagrama de Seqüência – Revisar Documento .................................... 87 Anexo 9: Código Fonte ......................................................................................... 88 VII LISTA DE FIGURAS Figura 2.1: Arquitetura J2EE ................................................................................ 27 Figura 2.2: Servidores e Contêineres J2EE ......................................................... 28 Figura 2.3: Tecnologias J2EE .............................................................................. 29 Figura 2.4: Design Pattern - Model-View-Controller ............................................. 32 Figura 2.5: Design Pattern - Facade .................................................................... 33 Figura 2.6: Design Pattern - Factory Method........................................................ 34 Figura 2.7: Design Pattern - Singleton ................................................................. 34 Figura 2.8: ICONIX - Visão Geral da Estrutura de Desenvolvimento ................... 39 Figura 3.1: Diagrama de Casos de Uso ............................................................... 48 Figura 3.2: Diagrama de Classes Conceituais ..................................................... 49 Figura 3.3: Diagrama de Classes - Pacote Default (raiz) ..................................... 54 Figura 3.4: Diagrama de Classes - Pacote Controller .......................................... 55 Figura 3.5: Diagrama de Classes - Pacote Model ................................................ 56 Figura 3.6: Diagrama de Classes - Pacote Persistencia ...................................... 57 Figura 3.7: Diagrama de Estados – Objeto Documento ....................................... 58 Figura 3.8: Diagrama de Entidade-Relacionamento do Banco de Dados ............ 59 Figura 3.9: Layout do Sistema – Tela de Login .................................................... 67 Figura 3.10: Layout do Sistema – Pendências do Colaborador ........................... 67 Figura 3.11: Layout do Sistema – Documento Em Elaboração ............................ 68 Figura 3.12: Layout do Sistema – Registro de Aprovação ................................... 68 VIII LISTA DE SIGLAS E ABREVIATURAS API - Applications Programming Interface CQT - Controle da Qualidade Total DAO – Database Access Object DBMS – Database Management System EIS – Enterprise Information System EJB - Enterprise JavaBeans HTML - HyperText Markup Language IDE - Integrated Development Environment ISO – International Organization for Standardization J2EE – Java 2 Enterprise Edition J2SE - Java 2 Standard Edition JDBC - Java DataBase Connectivity JMS - Java Message Service JSP – JavaServer Pages JTA - Java Transaction MVC –Model-View-Controller RTF - Rich Text Format SQL – Structured Query Language TQC - Total Quality Control TQM - Total Quality Management UML - Unified Modeling Language VTL - Velocity Template Language 9 Capítulo I 1. INTRODUÇÃO 1.1. Apresentação As normas da família ISO 90001 são utilizadas como guias para a implementação e documentação de sistemas de gestão da qualidade. Tais normas não traçam regras, apenas fornecem diretrizes que servem de orientação para as organizações durante o processo de implantação de um sistema da qualidade. Em sistemas de gestão da qualidade baseados na ISO 9000, o controle de documentos é um dos alicerces do sistema da qualidade, pois, “com ele, o cumprimento dos requisitos estabelecidos é evidenciado, a informação atualizada sobre como desenvolver cada atividade é de conhecimento dos colaboradores da empresa e, além disso, os processos de trabalho da empresa contam com um ambiente propício para sua melhoria contínua” [1] As atividades de gerenciamento de documentos do sistema da qualidade são dinâmicas representando um trabalho bastante dispendioso quando feito de modo não automatizado. Diante desse fato, o presente trabalho pretende ser uma solução informatizada para este problema. 1.2. Objetivos 1.2.1. Geral Implementar uma aplicação Web para gerenciamento de documentos que seja compatível com os requisitos do processo de controle de documentos das normas da série NBR ISO 9000. 1 Conjunto de normas que fornecem diretrizes para a gestão de sistemas da qualidade. 10 1.2.2. Específicos Implementar um software que possa auxiliar empresas/instituições a solucionarem problemas típicos de um Sistema de Gestão da Qualidade decorrentes do controle de documentos. Tal software deverá: Controlar a identificação de códigos na geração de documentos; Automatizar o fluxo de consenso dos documentos (sistema de workflow); Automatizar o fluxo de revisão, aprovação e cancelamento de documentos (sistema de workflow); Disponibilização pela Web dos documentos aos colaboradores da empresa/instituição; Este trabalho também tem por objetivo: A aplicação prática dos conhecimentos obtidos nas disciplinas de análise e projetos e engenharia de software; Estudo e utilização da tecnologia Java para Web. 1.3. Justificativa As normas ISO 9000 foram desenvolvidas para servirem de guias para Gestão da Qualidade de forma eficaz. São aplicáveis a qualquer organização seja ela de qualquer tamanho, pública ou privada e sem considerar o produto/serviço oferecido. O controle de documentos é um dos alicerces do sistema da qualidade, pois, com ele, o cumprimento dos requisitos estabelecidos é evidenciado, a informação atualizada sobre como desenvolver cada atividade é de conhecimento dos colaboradores da empresa e, além disso, os processos de trabalho da empresa contam com um ambiente propício para sua melhoria contínua. 11 As atividades relativas ao controle de documentos são dinâmicas e acompanham o desenvolvimento do sistema da qualidade. É de fundamental importância a implantação de um sistema informatizado para gerenciar essas atividades. Benefícios com um sistema informatizado para controle de documentos do sistema da qualidade: Maior integração entre a área de gestão da qualidade e as demais áreas da instituição; Melhor difusão do conhecimento na instituição; Melhor comunicação entre as partes: gestores e usuários; Nova interface leve e intuitiva para o usuário das informações; Mais segurança no acesso às informações do sistema de gestão da qualidade; Mais tranqüilidade nas revisões e aprovações de documentos; Mais rapidez na divulgação de novas versões de documentos do sistema de gestão da qualidade; Mais facilidades de localização de documentos; Menores traumas decorrentes de não-conformidades2 em documentação; Forte redução de despesas com cópias impressas; Acesso ao sistema em qualquer lugar do mundo. 1.4. Estrutura do Trabalho O presente trabalho está estruturado da seguinte forma: No capítulo 2 é apresentada toda a fundamentação teórica que serviu de alicerce no desenvolvimento deste trabalho. O capítulo ??? é possui uma seção que apresenta uma visão geral sobre os conceitos referentes à normalização e qualidade. As demais seções apresentam questões sobre tecnologia e engenharia de software. Os assuntos deste capítulo não são abordados a fundo não entrando muito em detalhes. 2 Não cumprimento de algum requisito da norma. 12 O capítulo 3 apresenta o processo realizado no desenvolvimento da aplicação proposta. As seções deste capítulo descrevem as etapas de Análise, Projeto, Implementação e Testes. No capítulo 4 são apresentadas as dificuldades encontradas, sugestões de trabalhos futuros e a conclusão final. 13 Capítulo II 2. FUNDAMENTAÇÃO TEÓRICA 2.1. Qualidade e Normalização 2.1.1. O conceito de “Qualidade” A palavra Qualidade está cada vez mais presente no nosso dia a dia. Nos comerciais na TV, nos outdoors, estampado nos produtos, desde um selinho numa caixinha de leite até um enorme selo de qualidade no ônibus que utilizamos. No entanto, ao se utilizar a palavra “Qualidade”, muitas vezes, não se consegue transmitir o seu verdadeiro significado. Ao perguntar qual a verdadeira definição da palavra Qualidade podemos encontrar as mais diversas respostas, como por exemplo: um conceito subjetivo (“Não sei ao certo o que é qualidade, mas eu a reconheço quando a vejo”). Ou, um conceito baseado no produto (“O produto possui algo, que lhe acrescenta valor, que os produtos similares não possuem”). Entretanto, o conceito de qualidade baseado no cliente (“É a adequação ao uso”; “É a conformidade às exigências do cliente”) é o mais interessante, pois refere-se à satisfação de quem vai utilizar o produto. Este tipo de enfoque, baseado no cliente, fez com que as empresas olhassem para o mundo exterior e criassem produtos que as pessoas querem e não produtos que os engenheiros de projeto (ou outros responsáveis pelo desenvolvimento de um produto) achavam que as pessoas queriam. [2] 14 Segundo a definição da ISO3 (International Organization for Standardization), um produto de qualidade é aquele que satisfaz às necessidades do cliente em todos os aspectos tais como especificações, método ou data da entrega, preço, etc. Para [2], um produto ou serviço de qualidade é aquele que atende perfeitamente, de forma confiável, de forma acessível, de forma segura e no tempo certo às necessidades dos clientes. 2.1.2. Histórico da Qualidade No modelo de produção artesanal, o artesão era o responsável pelo controle de qualidade. Com a Revolução Industrial4, surgiu o processo de divisão das tarefas de produção e o controle da qualidade era feito pelo mestre industrial, que supervisionava cada um dos grupos da linha de produção. Mas com a produção em alta escala, tornou-se inviável a supervisão de todo o processo por um único mestre. Surgiu então uma evolução do controle da qualidade: o controle estatístico baseado na inspeção por amostragem e gráficos de controle (timidamente começava a despontar o conceito de prevenção de falhas). Um novo enfoque, em termos de controle da qualidade, é adotado para aumentar a eficiência dessas ações de prevenção/correção a falhas, o Controle da Qualidade Total - CQT (em inglês, Total Quality Control – TQC), também conhecido por Total Quality Management - (TQM). No CQT, foram introduzidos aprimoramentos como: preocupação com a satisfação do cliente, conceito de melhoria contínua, envolvimento dos funcionários e valorização do respeito ao indivíduo. Organização internacional que tem a missão de promover o desenvolvimento de normas, testes e certificação para estabelecer uma padronização mundial. http://www.iso.org 4 Revolução ocorrida na Inglaterra do século XVIII que significou a substituição da ferramenta pela máquina, e contribuiu para consolidar o capitalismo como modo de produção dominante. 3 15 O CQT é mais do que uma simples utilização de metodologias, técnicas, sistemas ou ferramentas. O CQT é uma filosofia organizacional, expressa através de ações da gerência, de cima para baixo, que focalizam o processo de organização como um todo e que buscam a vantagem competitiva a longo prazo, tendo como armas estratégicas: a qualidade, o respeito, a participação e a confiança de todos os funcionários. [2] Nos dias atuais, com a disputa pela preferência do mercado, a preocupação com a qualidade dos produtos oferecidos torna-se um fator competitivo. Neste contexto, a adoção de um sistema de gestão da qualidade é a forma que as empresas utilizam para fornecerem evidências objetivas aos consumidores de que esta se preocupa com a qualidade dos produtos oferecidos. Com as atuais tendências de globalização torna-se necessário adotar-se um mesmo vocabulário padronizado e reconhecido internacionalmente no que diz respeito aos sistemas da qualidade. Isso garantirá o reconhecimento da qualidade dos produtos a nível mundial. Para isso foram criadas normas internacionais, emitidas pela ISO, sobre sistemas de gestão da qualidade. 2.1.3. ISO ISO – International Organization for Standardization (Organização Internacional para Normalização) é uma organização não governamental fundada em 1947, com sede em Genebra, Suíça. A sigla ISO é uma referência à palavra grega “isos”, que significa igual. Sua missão de promover o desenvolvimento de normas, testes e certificação para estabelecer uma padronização mundial com o principal objetivo de facilitar o comércio internacional de bens e serviços. Esta organização é formada por representantes de 91 países, cada um representado por um organismo de normas, testes e certificação. O Inmetro5 é o representante brasileiro. 5 Instituto Nacional de Metrologia, Normalização e Qualidade Industrial. http://www.inmetro.gov.br 16 2.1.4. ISO Série 9000 As normas da ISO Série 9000 podem ser utilizadas por qualquer tipo de empresa, seja ela grande, pequena, de caráter industrial, prestadora de serviços ou até mesmo uma entidade governamental. A ISO 9000 tem como único objetivo orientar a implantação de sistemas de gestão da qualidade nas empresas. Ela não é destinada a um produto nem para uma indústria específica. Deste modo, as normas ISO 9000 não conferem qualidade extra a um produto, apenas garantem que tal seja produzido por um processo certificado e apresentará sempre as mesmas características e o mesmo padrão de qualidade. A primeira versão da ISO Série 9000 foi lançada em 1987 e era formada por um conjunto de cinco normas (ISO 9000 a ISO 9004), passando por duas revisões, uma em 1994 e outra em 2000. Na versão 2000 a norma ISO 9001 cancela e substitui as normas ISO 9002 e ISO 9003. A ISO 9000 e a ISO 9004 são guias e a ISO 9001 é a norma certificadora. ISO 9000: Sistemas de Gestão da Qualidade – Conceitos e terminologia: Descreve os fundamentos de sistemas de gestão da qualidade ISO 9001: Sistemas de Gestão da Qualidade – Requisitos: Especifica requisitos para um sistema de gestão da qualidade, onde uma organização precisa demonstrar sua capacidade para fornecer produtos que atendam os requisitos do cliente e os requisitos regulamentares aplicáveis, e objetiva aumentar a satisfação do cliente. ISO 9004: Sistemas de Gestão da Qualidade – Guia para melhoria de desempenho: Fornece diretrizes que consideram tanto a eficácia como a eficiência do sistema de gestão da qualidade. O objetivo desta norma é melhorar o desempenho da organização e a satisfação dos clientes e das outras partes interessadas. ISO 19011: Diretrizes para auditorias de Sistemas de Gestão: Fornece diretrizes sobre auditoria de sistemas de gestão da qualidade e ambiental. 17 A série ISO 9000 foi adotada no Brasil pela ABNT 6 com o nome de NBR ISO 9000. 2.1.5. Requisitos da norma NBR ISO 9001:2000 2.1.5.1. Sistema de gestão da qualidade A organização deve estabelecer, documentar, implementar e manter um sistema de gestão da qualidade e melhorar continuamente a sua eficácia.. Esses processos devem ser monitorados, analisados e, se necessário, aperfeiçoados através de ações de melhoria contínua. Os requisitos relacionados ao controle de documentos da qualidade fazem parte dessa seção da norma ISO 9001:2000 e serão abordados de modo mais sucinto na seção 2.1.6 do presente trabalho. 2.1.5.2. Responsabilidade da direção A organização deve fornecer evidências objetivas do comprometimento da Alta Direção com o desenvolvimento, implementação, melhoria contínua e eficácia do sistema de gestão da qualidade. A Alta Direção deve garantir que os requisitos dos clientes sejam determinados e atendidos com o objetivo de aumentar a satisfação dos mesmos. Também é de responsabilidade da Alta Direção assegurar que a Política da Qualidade esteja apropriada ao propósito da empresa, seja comunicada e entendida por todos e analisada criticamente para manutenção de sua adequação. Dentre outras responsabilidades da direção deve assegurar que: Os objetivos da qualidade estejam de acordo com a política da qualidade; O planejamento do sistema de gestão da qualidade satisfaça os objetivos da qualidade; 6 Assosiação Brasileira de Normas Técnicas. http://www.abnt.org.br/ 18 As responsabilidades e autoridades estejam definidas e comunicadas na empresa; Os processos de comunicação interna estejam estabelecidos com objetivo de difundir as informações relativas à eficácia do sistema de gestão da qualidade de maneira apropriada. 2.1.5.3. Gestão de recursos A organização deve fornecer recursos para implementar e manter o sistema de gestão da qualidade e melhorar sua eficácia visando aumentar a satisfação de seus clientes. Deve também fornecer a infra-estrutura necessária para alcançar a conformidade com os requisitos do produto. 2.1.5.4. Realização do produto A organização deve planejar e desenvolver os processos necessários para a realização do produto. A etapa de levantamento dos requisitos do produto deve ser analisada, documentada e comunicada de forma adequada ao cliente. Após o levantamento dos requisitos segue-se a etapa de planejamento e desenvolvimento, a qual deve ter mecanismos para verificação do correto atendimento dos requisitos bem como uma validação final do mesmo. 2.1.5.5. Medição, análise e melhoria A organização deve planejar e implementar processos de monitoramento, medição, análise e melhoria contínua. A realização de pesquisas de satisfação dos clientes é um mecanismo que ajuda na identificação de oportunidades de melhoria. Os dados apropriados devem ser coletados e analisados para demonstrar a eficácia do sistema de gestão da qualidade. 19 2.1.6. Requisitos de documentação “4.2.3 Controle de documentos Os documentos requeridos pelo sistema de gestão da qualidade devem ser controlados. Registros são um tipo especial de documento e devem ser controlados de acordo com os requisitos apresentados em 4.2.4. Um procedimento documentado deve ser estabelecido para definir os controles necessários para: a) aprovar documentos quanto à sua adequação, antes da sua emissão, b) analisar criticamente e atualizar, quando necessário, e reaprovar documentos, c) assegurar que alterações e a situação da revisão atual dos documentos sejam identificadas, d) assegurar que as versões pertinentes de documentos aplicáveis estejam disponíveis nos locais de uso, e) assegurar que os documentos permaneçam legíveis e prontamente identificáveis, f) assegurar que documentos de origem externa sejam identificados e que sua distribuição seja controlada, e g) evitar o uso não intencional de documentos obsoletos e aplicar identificação adequada nos casos em que forem retidos por qualquer propósito.” [3] A documentação dos processos de trabalho possui um grande valor dentro de um sistema de gestão da qualidade, sendo considerada um elemento chave. Seu objetivo é contribuir para que a organização possa: Atingir a conformidade com os requisitos do cliente e a melhoria da qualidade; Prover treinamento apropriado aos seus colaboradores; Fornecer evidências objetivas do cumprimento dos requisitos da norma; Realizar a avaliação da eficácia e a melhoria contínua do sistema de gestão da qualidade. A geração da documentação é uma atividade que agrega valor. 20 “Os seguintes tipos de documentos são usados em sistemas de gestão da qualidade: a) documentos que fornecem informações consistentes, tanto internamente como externamente, sobre o sistema de gestão da qualidade da organização; tais documentos são referidos como manuais da qualidade; b) documentos que descrevem como o sistema de gestão da qualidade é aplicado em um projeto, contrato ou produto específico; tais documentos são referidos como planos da qualidade; c) documentos que estabelecem requisitos; tais documentos são referidos como especificações; d) documentos que estabelecem recomendações ou sugestões; tais documentos são referidos como diretrizes; e) documentos que fornecem informações sobre como realizar atividades e processos de forma consistente; tais documentos podem incluir procedimentos documentados, instruções de trabalho e desenhos; f) documentos que fornecem evidência objetiva de atividades realizadas ou de resultados alcançados; tais documentos são referidos como registros. Cada organização determina a extensão da documentação necessária e os meios a serem utilizados. Isto depende de diversos fatores, tais como: o tipo e tamanho da organização, a complexidade e interação dos processos, a complexidade dos produtos, os requisitos do cliente, os requisitos regulamentares aplicáveis, a demonstração da capacidade do pessoal e o grau necessário para demonstrar o atendimento de requisitos do sistema de gestão da qualidade.” [4] Segundo [1], numa releitura das normas ISO 9000, o requisito controle de documentos traz as seguintes diretrizes básicas: A organização deve estabelecer e manter procedimentos documentados para controle, alteração e aprovação dos documentos integrantes do sistema da qualidade; Devem existir processos de trabalho documentados para: o elaboração/emissão, 21 o aprovação, o alteração/revisão/cancelamento, o distribuição/recolhimento, o controle de todos os documentos do sistema da qualidade em operação; Os documentos devem definir claramente os métodos e responsabilidades na execução dessas tarefas; Os documentos devem estar disponíveis nos locais de trabalho, e quando obsoletos, devem ser prontamente removidos e substituídos. 2.1.7. Gerenciamento de documentos da qualidade baseado na ISO 9000 [1] Toda documentação deve ser legível, datada (incluindo as datas de revisão), clara, prontamente identificável, além de incluir a devida autorização. Devem ser estabelecidos métodos para o controle da emissão, distribuição e revisão dos documentos. Os métodos devem assegurar que os documentos sejam: Aprovados pelo pessoal autorizado; Liberados e colocados à disposição nas áreas em que as informações são necessárias; Compreensíveis e aceitáveis pelos usuários; Analisados criticamente, caso seja necessária alguma revisão; Retirados de circulação ao se tornarem obsoletos. Com a interpretação da norma, o gerenciamento de documentos do sistema da qualidade consiste em controlar os processos de trabalho que envolve o cumprimento dos requisitos controle de documentos e de dados e controle de registros da qualidade. 22 As atividades relativas ao gerenciamento de documentos são, basicamente, as seguintes: Controle de emissão de documentos; Controle de revisão de documentos; Guarda centralizada dos originais; Elaboração e manutenção do arquivo histórico dos documentos do sistema da qualidade (retenção de documentos obsoletos e não aplicáveis); Distribuição e troca de cópias controladas; Cancelamento e recolhimento de documentos desatualizados; Elaboração e gerenciamento da tabela de temporalidade documental; Capacitação do pessoal envolvido (treinamento); Essas atividades são dinâmicas e acompanham o desenvolvimento do sistema da qualidade. É imprescindível implantar um sistema (de preferência informatizado), para gerenciar essas atividades. Neste sistema, podem ser controlados os seguintes elementos: Assunto do documento; Classificação/codificação; Tipo; Elaborador e responsável pela aprovação; Data do original; Data do documento vigente; Histórico das revisões; Documentos relacionados; Perfil de cópias controladas; Registros da qualidade relacionados; Nome dos funcionários treinados, etc. Esse gerenciamento deve acompanhar o desenvolvimento do documento, desde sua emissão até sua saída do sistema da qualidade (cancelamento). Estruturar um sistema dinâmico e organizado é requisito mandatário para o desenvolvimento de um sistema da qualidade baseado na ISO 9000. 23 2.2. Arquitetura Cliente/Servidor O termo cliente/servidor foi usado pela primeira vez nos anos 80 em referência aos computadores pessoais (PCs) em uma rede. O modelo cliente/servidor atual começou a ganhar aceitação no final dos anos 80. A arquitetura cliente/servidor é versátil, baseada em mensagens e possui uma infra-estrutura modular, características para melhorar a usabilidade, flexibilidade, interoperabilidade e escalabilidade, se compararmos com a computação centralizada dos mainframes de compartilhamento de tempo. [5] Na arquitetura cliente/servidor introduziu-se o conceito de serviço onde o lado cliente executa o papel de solicitante e o lado servidor o papel de executor, podendo uma mesma máquina agir como cliente ou servidor ao mesmo tempo. A arquitetura também introduziu o servidor de banco de dados que veio cobrir uma série de limitações da arquitetura de compartilhamento de arquivos utilizada até então. “Utilizando sistemas de manutenção de banco de dados relacionais (DBMS – Database Management System), as consultas dos usuários poderiam ser respondidas diretamente”. [5] 2.2.1. Arquitetura Cliente/Servidor de duas camadas Na arquitetura Cliente/Servidor de duas camadas a carga de trabalho fica do lado cliente deixando o lado servidor com a responsabilidade de prover os serviços de banco de dados. Para [6], a desvantagem desse tipo de arquitetura é que ela começa a apresentar problemas quando o número de clientes aumenta. Podem ocorrer problemas como, por exemplo, a sobrecarga da rede ocasionando queda da performance. Um outro problema é o custo, pois cada cliente precisa ter uma máquina potente o suficiente para rodar a aplicação. 24 Enfim, a arquitetura Cliente/Servidor com 2 camadas é uma boa solução para a computação distribuída quando os grupos de trabalho são na ordem de dezenas ou centenas de pessoas interagindo na rede simultaneamente. [5] 2.2.2. Arquitetura Cliente/Servidor de três camadas A arquitetura Cliente/Servidor de três camadas, também conhecida como arquitetura Cliente/Servidor multicamadas, surgiu para suprir as limitações que da arquitetura em duas camadas. Na arquitetura em três camadas, uma camada intermediária foi adicionada entre a camada cliente e o servidor. Existe uma variedade de formas diferentes de se implementar esta camada intermediária, como servidores de mensagens, servidores de aplicação e monitores de processamento de transições. [5] A performance e a flexibilidade aumentaram em relação à arquitetura de duas camadas para grandes grupos de usuários. A desvantagem da arquitetura de três camadas é que o desenvolvimento de aplicações nesse modelo é demanda um maior esforço. 25 2.3. Tecnologia Java 2.3.1. Linguagem Java Java™ foi criada, em 1994, na Sun MicroSystems por uma pequena equipe liderada por James Gosling. A principio foi projetada para ser utilizada na programação de aparelhos como celulares, relógios e palms, mas devido à explosão da Internet a partir de 1995, identificou-se no Java uma linguagem ideal para aplicações na Internet. Desde então não parou mais de crescer. Segundo [7], Java deixou de ser apenas uma linguagem de programação passando a ser também uma plataforma. Java é uma linguagem de programação de alto nível e possui as seguintes características: Simples Orientada a Objetos Distribuída Interpretada Robusta Segura Arquitetura neutra Portável Alta performance Multithreading Dinâmica No modo de compilação e execução, o Java difere de linguagens de programação tradicionais, como o C++. Em um ambiente de programação tradicional, você escreve e compila o código fonte de um programa dentro do código do objeto para um hardware e sistema operacional específicos.[7] 26 Os programas em Java são constituídos de um conjunto de classes. E estas classes são constituídas por um conjunto de métodos que realizam tarefas e retornam as informações ao completarem suas tarefas. [8] As bibliotecas de classes, também conhecidas como Java APIs (Applications Programming Interfaces – interfaces de programas aplicativos), são artefatos de grande utilidade na criação de aplicações Java pois são um incentivo à reutilização de código. Para os que desejam aprofundar os conhecimentos no assunto, o site oficial do Java - http://java.sun.com - é o lugar indicado. A lista completa das APIs da especificação Java pode ser encontrada em http://java.sun.com/products. 2.3.2. Plataforma J2EE A plataforma J2EE (Java 2 Enterprise Edition) não é uma nova linguagem, e sim uma nova abordagem que visa simplificar o modelo de desenvolvimento de aplicações mais complexas. De fato, a plataforma J2EE é executada sobre a plataforma J2SE (Java 2 Standard Edition); além disto, todos os componentes desenvolvidos para a plataforma J2EE são desenvolvidos em Java. [9] 2.3.2.1. Arquitetura Segundo [9], a plataforma J2EE define um padrão para desenvolvimento de aplicações corporativas multicamadas. A aplicação lógica é dividida em componentes de acordo com a função, e estes vários componentes podem ser instalados em diferentes máquinas dependendo da camada em que se encontram: Componentes da camada cliente rodam na máquina cliente. Componentes da camada Web rodam no servidor J2EE. 27 Componentes da camada de Negócio rodam no servidor J2EE. A camada de Sistemas de Informações Corporativas (EIS) – roda no servidor EIS. Essa arquitetura baseada em componentes do J2EE, ilustrada na Figura 2.1, facilita o desenvolvimento modular do sistema, ou seja, as partes do projeto podem ser desenvolvidas separadamente facilitando a divisão do trabalho. Figura 2.1: Arquitetura J2EE 2.3.2.2. Infra-Estrutura A arquitetura J2EE exige uma infra-estrutura de suporte para armazenar o código da aplicação, os chamados “Contêineres”. Estes contêineres são aplicações provedoras de serviços, que irão implementar as APIs definidas para o tipo de serviços oferecidos. [9] Deste modo, temos diferentes contêineres apropriados para cada tipo de serviço demandado na J2EE: 28 Contêiner EJB (Enterprise JavaBeans): gerencia a execução de componentes EJB, proveêm um ambiente de execução para suportar as aplicações distribuídas, controle transacional, persistência, etc. Roda sobre o servidor J2EE. Contêiner Web: gerencia a execução de páginas JSP e componentes Servlets de aplicações J2EE. E ainda podem atender requisições de Web Services. Roda sobre o servidor J2EE. Contêiner de Aplicações Cliente: gerencia a execução de componentes de aplicações cliente. As aplicações cliente e o contêiner rodam na máquina Cliente. Contêiner Applet: gerencia a execução de applets. Consiste de um browser Web e um Plugin Java rodando juntos na máquina cliente. Na Figura 2.2 podemos visualizar a infra-estrutura J2EE e o relacionamento com os componentes. Figura 2.2: Servidores e Contêineres J2EE 2.3.2.3. Tecnologias 29 A plataforma J2EE se utiliza de tecnologias padronizadas Java, tanto para o desenvolvimento de aplicações quanto para prover suporte ao acesso às funcionalidades. A Figura 2.3 ilustra as tecnologias utilizadas na plataforma J2EE. As tecnologias primárias são usadas diretamente pelo desenvolvedor para gerar a aplicação desejada: Servlets, JavaServer Pages (JSP) e Enterprise JavaBeans (EJB). Já as tecnologias de suporte são usadas para prover acesso a uma determinada funcionalidade desejada seja recursos, transação, comunicação, outros sistemas ou autenticação: Java DataBase Connectivity (JDBC), Java Transaction (JTA), Java Message Service (JMS), etc. . Figura 2.3: Tecnologias J2EE 2.3.2.3.1. Servlets De acordo com [9], Servlets são componentes que interagem com outros componentes clientes seguindo um modelo requisição/resposta, ou seja, a 30 aplicação cliente irá invocar um método específico de um Servlet e este irá disparar a execução de uma série de atividades. Pode-se usar Servlets tanto para a implementação da apresentação da aplicação quanto para a lógica de negócios. A tecnologia Servlet é a base do desenvolvimento de aplicativo web usando a linguagem de programação Java.[6] 2.3.2.3.2. JavaServer Pages (JSP) São páginas em texto formatado, contendo porções que serão convertidas e entendidas como código Java. Estas porções são compiladas em uma aplicação Java, no momento que se necessita do seu uso. O uso mais comum é em páginas dinâmicas, onde se criam páginas mesclando a linguagem HTML com porções de código Java para acesso a componentes e dados de aplicações Java. Seu uso é recomendado para a apresentação da aplicação. [9] Na verdade, JSP é uma extensão da tecnologia Servlet, e é prática comum usar ambas. Servlets e páginas JSP nos mesmos aplicativos web. [6] 2.3.2.3.3. Enterprise JavaBeans (EJB) Segundo [9], EJBs são componentes flexíveis voltados para aplicações de negócios distribuídas ou de maior complexidade. Podem representar uma entidade de negócio, uma lógica de negócio ou uma comunicação assíncrona. Em resumo, um Enterprise JavaBean é um componente do lado servidor exatamente como qualquer outro componente, no entanto precisam estar de acordo com as especificações EJB e só são distribuídos e podem executar apenas em um contêiner EJB. [6] 31 2.4. Reuso de Software e Projeto No contexto da Engenharia de Software, diferentes abordagens buscam melhorar a quantidade de artefatos de software, bem como diminuir o tempo e o esforço necessários para produzi-los. [11] 2.4.1. Design Patterns Design Patterns ou Padrões de Projeto são soluções elegantes e reutilizáveis para problemas recorrentes que encontramos diariamente no processo de desenvolvimento de aplicativos para o mundo real. Eles tratam da concepção e da interação entre objetos, definindo ao mesmo tempo um padrão de comunicação que é compartilhado por toda a equipe de desenvolvimento. [12] Para [13], um Pattern descreve uma solução comprovada para um problema de desenho recorrente, dando ênfase particular no contexto e forçando a aproximação do problema, e as conseqüências e o impacto de sua solução. A utilização de Design Patterns, por si só, não garante o sucesso do desenvolvimento. A documentação do pattern fornece informações que indicam quando ele pode ser aplicado, mas apenas a experiência do projetista pode proporcionar o entendimento de quando um padrão particular irá melhorar o desenho do sistema. 2.4.1.1. Model-View-Controller O design pattern MVC determina a separação das camadas de visualiação (View), controle de interação com o usuário (Controller) e o modelo de objetos (Model) facilitando o desenvolvimento modular e a manutenção do sistema. 32 Esse pattern é bastante utilizado por empresas que desenvolvem aplicações de grande porte onde o trabalho em equipe é indispensável. O MVC facilita bastante a divisão do trabalho. No MVC o fluxo da aplicação é intermediado por um controlador central (Controller) que tem a função de repassar as requisições (tarefas) aos responsáveis que estão localizados no modelo (Model). Após a execução da tarefa pelos objetos do modelo, a requisição é respondida através do controlador e apresentada na visão (View), como ilustra a Figura 2.4. Request http 1 2 Lógica de negócios 4 3 Servlet Contêiner (Tomcat) Modelo Controlador 6 Apresentação 5 Response http Figura 2.4: Design Pattern - Model-View-Controller 2.4.1.2. Facade O Facade pertence à categoria dos patterns estruturais. Fornece uma interface única de acesso a um subsistema tornanando-o mais fácil de utilzar. Como podemos visualizar na Figura 2.5, as classes/objetos que integram o pattern Facade são: Classe Facade: Delega as chamadas para a classe do subsistema que é responsável pela a execução. 33 Classes do Subsistema: Estas classes implementam a funcionalidade do subsistema e trabalham agregadas ao objeto Facade. Figura 2.5: Design Pattern - Facade 2.4.1.3. Factory Method De acordo com [13], o padrão Factory Method é caracterizado por retornar uma instância dentre muitas possíveis classes, dependendo dos dados providos a ele. Geralmente, todas as classes que ele retorna têm uma classe pai e métodos em comum, mas cada um executa tarefas diferentes e é otimizado para diferentes tipos de dados. Ele resolve o problema, por exemplo, da criação de objetos de diferentes tipos de acordo com um determinado parâmetro. A classe responsável pela criação do objeto não precisa conhecer a lógica de criação desse objeto de acordo com o parâmetro de entrada. A classe utiliza os serviços da “Fábrica de Objetos” para criar o objeto seguindo uma determinada lógica. A figura 2.6 ilustra de maneira simples o funcionamento desse pattern da categoria dos patterns criacionais7. 7 Padrões (patterns) que lidam com a melhor forma de se criar instâncias dos objetos. 34 Figura 2.6: Design Pattern - Factory Method 2.4.1.4. Singleton O pattern Sigleton garante que apenas uma instância de uma determinada classe irá existir. Por exemplo, um sistema pode ter apenas um gerenciador de janelas, ou gerenciador de impressão, ou então um único ponto de acesso ao banco de dados. A maneira mais fácil de se fazer uma classe que possua uma única instância dela mesma é utilizar uma variável estática na classe, onde será guardada a referência para a instância corrente. A Figura 2.7 mostra o diagrama UML de uma classe Singleton. Figura 2.7: Design Pattern - Singleton 35 2.4.2. Frameworks Frameworks são estruturas de classes que constituem implementações incompletas que, estendidas, permitem produzir diferentes artefatos de software. A grande vantagem desta abordagem é a promoção de reuso de código e projeto, que pode diminuir o tempo e o esforço exigidos na produção de software. [11] 2.4.2.1. Velocity O Velocity é um framework de templates8 Java (“Template-Engine”). É mais freqüentemente aplicado no desenvolvimento de aplicações Web Java, pois permite a completa abolição do código Java no meio do HTML, tornando-se uma alternativa bastante eficiente para implementação da camada de apresentação (View), ou seja, a camada visual da aplicação em projetos que implementam o padrão MVC (Model-View-Controller). O seu uso não restringe-se apenas ao mundo Java Web, pode ser usado em qualquer aplicação que tenha função de processamento de textos, como por exemplo formatação de mensagens com base em um template, criação de documentos RTF(Rich Text Format), SQL, etc. Outra utilização bastante freqüente desse framework é na geração de arquivos xml. O Velocity utiliza uma linguagem própria para a construção dos templates, a Velocity Template Language – VTL. Essa linguagem é bastante pequena possuindo uma sintaxe bastante simples de ser compreendida. Tornando a facilidade do uso um ponto bastante forte dessa tecnologia. Essa ferramenta é um subprojeto do projeto Jakarta, da Fundação Apache 9. É Open Source permitindo o uso em qualquer tipo de aplicação sem custo algum. Também disponibiliza o código fonte e estimula os usuários a participarem do projeto. Estrutura pré-definida ou modelo. A Fundação Apache dá suporte à comunidade desenvolvedora de software livre. http://www.apache.org 8 9 36 A documentação completa desse framework pode ser encontrada no site oficial do projeto: http://jakarta.apache.org/velocity/index.html. 2.4.2.2. Hibernate Hibernate é um framework que fornece um mecanismo de persistência de objetos em banco de dados relacionais de maneira simples e transparente para aplicações Java em plataforma web ou desktop. A utilização dessa ferramenta aumenta a produtividade e diminui o esforço, pois elimina o trabalho de ficar escrevendo sentenças SQL, misturando-as no meio do código Java e programando mapeamentos de consultas para objetos. O processo de desenvolvimento com o Hibernate é muito mais simples do que usando JDBC puro. A utilização do Hibernate engloba 5 atividades: Criação das tabelas no banco de dados onde os objetos vão persistir; Criação dos objetos cujo estado vai ser persistido; Criação do arquivo XML utilizado para realizar o mapeamento dos campos da tabela às propriedades do objeto; Criação do arquivo XML que conterá as propriedades para que o Hibernate se conecte ao banco de dados; Criação das classes DAOs que irão persistir os objetos. O Hibernate utiliza um dialeto SQL próprio que pode ser traduzindo para os códigos SQL relativos aos diversos bancos de dados existentes. Deste modo, para mudar a aplicação de um banco de dados para outro basta mudar um parâmetro de configuração que diz qual é o tipo utilizado. Outros atrativos para a utilização do Hibernate são a grande documentação disponível e o grande número de projetos utilizando esse framework, fato este que evidencia sua aceitação pela comunidade de desenvolvedores. 37 Não bastasse tudo o que foi citado, o Hibernate tem mais um ponto positivo, é um software livre e seu uso é permitido em projetos comerciais e Open Source. No site do projeto, http://www.hibernate.org/, encontra-se uma extensa documentação, exemplos, ferramentas, projetos relacionados, entre outros materiais. 38 2.5. Processo de Software Os processos usados para desenvolver um projeto de software têm a maior importância na qualidade do software produzido e na produtividade alcançada pelo projeto. No entanto, não existe um modelo uniforme que possa descrever com precisão o que de fato acontece durante todas as fases da produção de um software; os processos implementados são muito variados, e as necessidades de cada organização diferem substancialmente. [15] Segundo [16], um processo de desenvolvimento de software tem quatro funções: Fornecer uma diretriz sobre a seqüência de atividades de uma equipe. Especificar artefatos que devem ser desenvolvidos. Direcionar as tarefas de desenvolvedores individuais e da equipe como um todo. Oferecer critérios para monitorar e comparar produtos e atividades do projeto. Em muitos projetos opta-se pela utilização de um processo híbrido que utiliza artefatos característicos de diferentes metodologias. Assim, podemos criar um processo personalizado que atende a um determinado grupo de aplicações utilizando o melhor de cada metodologia existente. 2.5.1. ICONIX O ICONIX é um processo simplificado que unifica conjuntos de métodos de orientação a objetos em uma abordagem completa, com o objetivo de dar cobertura ao ciclo de vida. Foi elaborado por Doug Rosenberg e Kendall Scott a partir da síntese do processo unificado pelos “três amigos” - Booch, Rumbaugh, e Jacobson o qual tem dado suporte e conhecimento a metodologia ICONIX desde 1993. Além disso, o ICONIX está adaptado ao padrão da UML, é dirigido por casos de uso e o seu processo é iterativo incremental. [17] 39 Figura 2.8: ICONIX - Visão Geral da Estrutura de Desenvolvimento O desenvolvimento de software seguindo o processo ICONIX prevê a execução de quatro atividades básicas: Análise de requisitos; Análise e desenho preliminar; Desenho; Implementação. 2.5.1.1. Análise de requisitos Levantamento dos casos de uso e atores do sistema representando a interação entre estes através do diagrama de casos de uso da UML. Construção do modelo de domínio contendo os objetos referentes ao problema e as relações entre esses objetos. Um diagrama UML de classes de domínio é utilizado para representação. 40 Dependendo da situação poderá ser realizada uma prototipação rápida da interface do sistema para facilitar a compreensão do cliente sobre o sistema proposto. 2.5.1.2. Análise e projeto preliminar Detalhamento dos casos de uso de modo a representarem o fluxo principal, os fluxos alternativos e a ocorrência de erros. Realizar a análise de robustez para cada caso de uso. Atualizar o diagrama de classes 2.5.1.3. Projeto Especificar o comportamento dinâmico do sistema identificando as trocas de mensagens entre os objetos. Os diagramas de seqüência são utilizados nessa representação. Atualizar continuamente o diagrama de classes com os atributos e métodos identificados. Finalizar o modelo estático. 2.5.1.4. Implementação Produzir, se necessário, diagramas de apoio à implementação tais como, diagramas de componentes e de implantação. Escrever ou gerar o código do sistema. Realizar testes unitários, de integração e de aceitação do usuário. 41 Capítulo III 3. APLICAÇÃO PROPOSTA O processo de desenvolvimento utilizado foi baseado na metodologia ICONIX apresentada na seção 2.5.1. Prevendo as seguintes etapas: Análise Projeto Implementação Testes As etapas de Análise de Requisitos e Análise e Projeto Preliminar da metodologia ICONIX foram agrupadas em uma só etapa denominada Análise e tendo como sub atividades o levantamento dos requisitos (funcionais e não funcionais), identificação e detalhamento dos casos uso, identificação dos atores e representação da interação entre os casos de uso e atores do sistema. Os testes serão realizados em uma etapa separada. No ICONIX os testes fazem parte da etapa de implementação. 42 3.1. Análise Essa etapa foi realizada baseando-se no sistema de gestão da qualidade utilizado pelo Instituto Euvaldo Lodi - IEL/SC. Esta instituição possui a certificação ISO 9000:2000 e se dispôs a auxiliar no desenvolvimento desse trabalho no que diz respeito aos assuntos relacionados à qualidade. 3.1.2. Requisitos Funcionais 1. O sistema deverá automatizar o processo de controle da documentação de sistemas de gestão da qualidade baseados na norma NBR ISO 9000:2000 facilitando o atendimento dos requisitos de documentação da mesma. Essa automatização será baseada no ciclo de vida dos documentos segundo a norma. Abaixo uma síntese desse ciclo de vida: Elaboração Consenso das áreas envolvidas Aprovação Disponibilização Revisão (se necessário) Cancelamento (se necessário) 2. O sistema deverá assegurar que documentos, em sua versão mais atual, estejam disponibilizados e acessíveis via Web para todos os colaboradores da organização. 3. O sistema deverá armazenar registros históricos de consensos, aprovações e revisões dos documentos. Os documentos que já estão fora de circulação por motivo de revisão ou cancelamento também devem ser mantidos no sistema, acessíveis apenas pelos gestores do sistema. 4. O sistema deverá permitir consultas aos documentos categorizadas por tipo de documento, área e data de publicação. 43 5. O sistema deverá enviar avisos de pendências de consenso e aprovação de documentos aos colaboradores para que o processo ocorra com rapidez. 3.1.3. Requisitos não funcionais 1. O sistema deverá ter uma interface amigável e intuitiva favorecendo uma melhor utilização do mesmo por parte dos colaboradores. 2. O sistema deverá garantir a segurança dos documentos publicados não permitindo o acesso de usuários não autorizados. 3. O sistema deverá apresentar bom desempenho não exigindo uma largura de banda considerável, podendo ser acessível de forma rápida numa conexão de Internet discada. 4. O sistema poderá ser utilizado por organizações de qualquer porte que buscam a certificação de qualidade da ISO, e também para aquelas que já possuem certificação e que desejam melhorar o seu processo de controle da documentação do sistema de gestão da qualidade. 3.1.4. Atores 3.1.4.1. Gestor Realiza a gestão do sistema. Responsável pela elaboração, alteração, cancelamento e revisão dos documentos. Também é responsável pelo envio de avisos de pendências de consenso/aprovação para os responsáveis. Tarefas: Elaborar Documento; Enviar Documento para Consenso; Cancelar Documento; 44 Revisar Documento; Enviar Lembrete de Pendências; Listar Documentos; Abrir Documento; 3.1.4.2. Colaborador Responsável pela aprovação de documentos. Tarefas: Registrar Consenso do documento; Registrar Aprovação do documento; Listar Documentos; Abrir Documento; 3.1.5. Casos de uso 3.1.5.1. Efetuar Login (colaborador / gestor) 1. O colaborador/gestor entra no sistema informando seu login e senha; 2. O colaborador/gestor submete essas informações; 3. O sistema realiza a validação e verifica a sua permissão (gestor ou colaborador); Extensões: 2a. Se o usuário não estiver cadastrado no sistema, o acesso é negado; 3.1.5.2. Listar documentos (colaborador/gestor) 1. Inclui Efetuar Login; 2. O colaborador/gestor seleciona a lista desejada (por Área, por Tipo, por Data de Publicação ou por Status); 3. O sistema mostra a lista de documentos; Extensões: 45 1a. Se o gestor já estiver logado no sistema não é necessário efetuar login novamente; 3.1.5.3. Abrir documento (colaborador/gestor) 1. Inclui Efetuar Login; 2. Inclui Listar documentos; 4. O colaborador/gestor seleciona o documento desejado a partir da lista; 5. O sistema mostra o documento selecionado; Extensões: 1a. Se o gestor já estiver logado no sistema não é necessário efetuar login novamente; 3.1.5.4. Elaborar Documento (gestor) 1. Inclui Efetuar Login; 2. O gestor do sistema preenche as informações referentes ao documento (tipo do documento, área, título e número da revisão). 3. O gestor do sistema submete essas informações; 4. O sistema gera um código automático para o documento com base no tipo e área do documento e mostra o próximo formulário. 5. Inclui Enviar Documento para Consenso; Extensões: 1a. Se o gestor já estiver logado no sistema não é necessário efetuar login novamente; 5a. Se o gestor não possuir todas as informações necessárias para preencher ele pode optar por realizar a etapa de elaboração posteriormente. 3.1.5.5. Enviar Documento para Consenso (gestor) 1. Inclui Abrir documento; 46 2. O gestor preenche as informações referentes ao documento (objetivo da elaboração/revisão, prazo para consenso, responsável pela aprovação e responsáveis pelo consenso) e anexa o documento (Word, Excel, etc) previamente elaborado; 3. O gestor envia o documento para consenso; 4. O sistema mostra a confirmação de que a operação foi realizada com sucesso; 5. O sistema envia email de aviso para os responsáveis pelo consenso do documento; Extensões: 1a. Se o documento for mostrado diretamente a partir da criação do documento, não é necessário localizar e abri-lo novamente; 3.1.5.6. Registrar Adequação do Documento (colaborador) 1. Inclui Abrir documento; 2. O colaborador registra seu parecer sobre o documento julgando se este é adequado ou não e registra as observações desejadas; 3. O colaborador submete as informações; 4. O sistema mostra confirmação de que a operação foi realizada com sucesso; 5. Se o colaborador for o último a registrar o consenso do documento e, se todos os responsáveis pelo consenso registrarem o documento como adequado, o sistema envia o documento para aprovação. Extensões: 5a. Se um dos responsáveis pelo consenso registrar o documento como não adequado, o sistema envia email para o responsável pela elaboração do documento informando que o documento não foi consensado e necessita alterações. (status: Documento Devolvido pelo Consenso); 47 3.1.5.7. Registrar Aprovação do Documento (colaborador) 1. Inclui Abrir documento; 2. O colaborador registra seu parecer sobre o documento aprovando-o ou não e registra as observações desejadas; 3. O colaborador submete as informações; 4. O sistema mostra confirmação de que a operação foi realizada com sucesso; 5. Se o colaborador aprovar o documento, o sistema publica o documento e envia email para os responsáveis pelo consenso e elaboração que este já está disponível para uso de todos. Extensões: 5a. Se o colaborador não aprovar o documento, o sistema envia email para o responsável pela elaboração do documento informando que o documento não foi aprovado e necessita alterações. 3.1.5.8. Revisar Documento (gestor) 1. Inclui Abrir documento; 2. O gestor seleciona a opção de criação de uma nova revisão para o documento; 3. O sistema cria uma cópia do documento, mantendo a revisão anterior publicada. 4. Inclui Enviar Documento para Consenso 3.1.5.9. Cancelar Documento (gestor) 1. Inclui Abrir documento; 2. O gestor seleciona a opção de cancelamento do documento e informa o motivo do cancelamento; 3. O sistema envia email para os responsáveis pelo consenso avisando que o documento foi cancelado e não está mais disponível para uso. 48 3.1.5.10. Enviar lembrete de pendência (gestor) 1. Inclui Abrir documento; 2. O gestor seleciona a opção de enviar lembrete; 3. O sistema envia email para os responsáveis para o consenso/responsável pela aprovação; 3.1.6. Diagrama de Casos de uso O diagrama apresentado na Figura 3.1 mostra a interação entre atores e casos de uso do sistema. Listar Documentos <<include>> <<include>> Efetuar Login Abrir Documento <<include>> Enviar Documento para Consenso <<include>> <<include>> <<include>> <<include>> <<include>> <<include>> Enviar Lembrete de Pendencia Revisar Documento <<include>> Colaborador Registrar Aprovação do Documento Cancelar Documento <<include>> Registrar Adequação do Documento Elaborar Documento Gestor Figura 3.1: Diagrama de Casos de Uso 49 3.1.7. Modelo de Domínio Com base no levantamento dos casos de uso e requisitos do sistema foram identificados os objetos do mundo real que fazem parte domínio do sistema e as relações existentes entre esses objetos. O resultado desta tarefa foi o diagrama de classes conceituais representado na Figura 3.2. Documento Consenso -id:int -codigo:String -revisao:int -tipo:TipoDocumento -area:Area -data:Date -path:String -filename:String -status:int -respCadastro:Colaborador -prazoConsenso:Date -consenso:List -aprovacao:List -dataAprovacao:Date -dataPublicacao:Date relativo ao documento Colaborador responsável pelo cadastro responsável -id:int -nome:String -login:String -senha:String -email:String -id:int -data:Date -status:int -resultado:String -responsavel:Colaborador -obs:String -doc:Documento responsável responsável relativo ao documento Aprovacao -id:int -data:Date -status:int -resultado:String -responsavel:Colaborador -obs:String -doc:Documento WorkflowManager TipoDocumento Area -id:int -tipo:int -codigo:int -numeracao:int -id:int -area:String -codigo:String -responsavel:Colaborador -equipe:List Figura 3.2: Diagrama de Classes Conceituais 3.1.7.1. Classe Documento Classe que representa a estrutura principal do sistema, o Documento e seus atributos. 3.1.7.2. Classe Consenso Cada documento deve passar por um consenso dos colaboradores que o utilizam (todos os colaboradores de setores selecionados, ou colaboradores selecionados 50 individualmente). Essa classe representa o consenso do documento com seus atributos. 3.1.7.3. Classe Aprovacao Cada documento deve passar por uma aprovação do colaborador responsável pela área de utilização do documento. 3.1.7.4. Classe Area Os documentos podem ser agrupados por área dentro da organização (Área Administrativa, Diretoria, etc.). Essa classe representa essas unidades de agrupamento. 3.1.7.6. Classe Colaborador Esta classe representa o usuário do sistema, o colaborador da organização. 3.1.7.7. Classe WorkflowManager Classe que controla a automatização do clico de vida dos documentos no sistema (elaboração, consenso, aprovação e publicação) Implementa o workflow do sistema. 51 3.2. Projeto 3.2.1. Diagramas de interação Os diagramas de interação mostram a estrutura dinâmica do sistema ilustrando como os objetos colaboram entre si para o atendimento dos requisitos. Nos diagramas elaborados as operações referentes à persistência dos dados estão num nível de abstração maior, já que o uso do framework Hibernate, descrito na seção 2.4.2.2, deixa essas operações transparentes para o projetista. As operações ocorridas durante a mudança de estado interno do documento também foram abstraídas com o objetivo de facilitar a compreensão dos diagramas. Outro aspecto interessante para ser observado nos diagramas é a utilização dos padrões de projeto citados na seção 2.4.1. 3.2.1.1. Diagrama de seqüência – Efetuar Login Este diagrama representa a operação Efetuar Login que irá garantir o controle de acesso ao sistema. O usuário informa seu login e senha e o sistema realiza a validação verificando se este faz parte da lista de colaboradores cadastrados e se a senha informada está correta. Se a validação for realizada com sucesso identifica o tipo de acesso (colaborador ou gestor). (Anexo 1) 3.2.1.2. Diagrama de seqüência – Listar Documentos Este diagrama representa a operação Listar Documentos. O usuário seleciona uma das listas disponíveis de acordo com o seu acesso (Documentos por status, por data, por área, etc). O sistema acessa o banco de dados buscando pelos documentos que satisfazem à condição escolhida. (Anexo 2) 52 3.2.1.3. Diagrama de seqüência – Abrir Documento Este diagrama representa a operação Abrir Documento. Após a lista de documentos ter sido gerada, o usuário seleciona um dos documentos listados nela. O sistema localiza o documento no banco de dados escolhido e mostra na tela. (Anexo 3) 3.2.1.4. Diagrama de seqüência – Elaborar Documento Este diagrama representa a operação Elaborar Documento. O gestor preenche as informações referentes ao documento a ser criado e envia. O sistema gera o código do documento com base no tipo e área selecionados, cria os registros de consenso e aprovação e armazena o documento no banco de dados. A partir desse ponto o documento passa a existir no sistema. (Anexo 4) 3.1.2.5. Diagrama de seqüência – Enviar Documento para Consenso Este diagrama representa a operação Enviar Documento para Consenso. Após terminada a etapa de elaboração do documento o próximo passo é enviá-lo para consenso. O sistema envia email para os responsáveis pelo consenso do documento para que estes realizem essa operação. (Anexo 5) 3.1.2.6. Diagrama de seqüência – Registrar Adequação do Documento Este diagrama representa a operação Registrar Adequação do Documento. Ao receber o email informando que existe um documento aguardando seu consenso, o usuário entra no sistema e abre o documento referido e registra seu parecer sobre julgando-o adequado ou não adequado. O sistema armazena esse parecer e verifica se todos os responsáveis já registraram o consenso. Se sim, verifica se todos adequaram o documento. Se o documento foi adequado o sistema envia o documento para aprovação. Senão, o documento é devolvido para o responsável pela elaboração para que este possa efetuar as alterações necessárias. (Anexo 6) 53 3.1.2.7. Diagrama de seqüência – Registrar Aprovação do Documento Este diagrama representa a operação Registrar Aprovação do Documento. Ao receber o email informando que existe um documento aguardando sua aprovação, o usuário entra no sistema e abre o documento referido e registra seu parecer aprovando ou não o documento. O sistema armazena esse parecer e se for aprovado, publica o documento no sistema. Caso não seja aprovado, o documento é devolvido para o responsável pela elaboração para que este possa efetuar as alterações necessárias. (Anexo 7) 3.1.2.8. Diagrama de seqüência – Revisar Documento Este diagrama representa a operação Revisar Documento. Ao executar essa operação o sistema gera uma cópia documento revisado para que possam ser feitas as alterações necessárias e seja enviado para consenso. (Anexo 8) 3.2.2. Diagrama de classes de projeto A estrutura estática do sistema é representada através de diagramas de classes. Estas classes foram obtidas através do refinamento do modelo de domínio com auxílio dos diagramas de seqüência que ajudaram a identificar novos atributos e métodos. O sistema foi dividido em pacotes de classes. No pacote default (raiz da aplicação) temos a classe Controller e os pacotes model e controller como podemos ver na Figura 3.3. 54 VelocityServlet Controller -log:Log #loadConfiguration:Properties +handleRequest:Template -processRequest:String model mensagem persistencia seguranca workflow +Aprovacao +Colaborador +Consenso +Documento +Area +GeradorCodigo +FacadeGerenciador +GerenciadorDocumentos +Constantes +Propriedades +FormatadorDatas +TipoDocumento controller +Action +ActionFactory +ConsensoAction +DocumentAction +LoginAction +ViewAction +EntradaAction +AprovacaoAction Figura 3.3: Diagrama de Classes - Pacote Default (raiz) A Figura 3.4 mostra o projeto das classes do pacote controller. Essas classes, juntamente com a classe Controller, compõem a camada controladora do sistema. 55 ActionFactory -instance:ActionFactory -ActionFactory +getInstance:ActionFactory +newAction:Action +newAction:Action Action #request:HttpServletRequest #multi:MultipartRequest +Action +Action +execute:String DocumentAction ConsensoAction -log:Log -log:Log +DocumentAction +DocumentAction +execute:String EntradaAction AprovacaoAction LoginAction +EntradaAction +execute:String ViewAction -log:Log -log:Log +LoginAction +execute:String +ViewAction +execute:String +ConsensoAction +execute:String -log:Log +AprovacaoAction +execute:String Figura 3.4: Diagrama de Classes - Pacote Controller O projeto das classes de negócio é mostrado na figura 3.5. devido a complexidade e para facilitar a compreensão essa camada foi dividida em pacotes. O diagrama desse pacote não mostra os relacionamentos fracos (dependência e associação) existentes entre as classes para facilitar a compreensão. 56 Documento TipoDocumento 0..* 1 interface Constantes FacadeGerenciador -colaborador:Colaborador +Documento aprovacaoAtiva:Aprovacao consensoAtivo:List statusTexto:String motivoCancelamento:String dataCancelamento:Date dataObsoleto:Date aprovacao:List area:Area codigo:String consenso:List dataCriacao:Date dataPublicacao:Date docsRelacionados:List filename:String id:Long objetivo:String path:String prazoConsenso:Date respCadastro:Colaborador revisao:Integer status:Integer tipo:TipoDocumento titulo:String 1..* id:Long codigo:String denominacao:String numeracao:Long ativo:String Aprovacao +Aprovacao 1 id:Long resultado:String justificativa:String data:Date status:String responsavel:Colaborador documento:Documento dataEnvio:Date ativo:String 1..* 1..* 1..* 1..* 1 Consenso 1 Colaborador +Consenso +Colaborador id:Long resultado:String justificativa:String status:String prazo:Date documento:Documento responsavel:Colaborador data:Date dataEnvio:Date ativo:String id:Long login:String nome:String email:String senha:String acesso:String ativo:String trabalhaPara:Set 0..* 1 id:Long codigo:String denominacao:String responsavel:Colaborador equipe:Set ativo:String +AREA:int +COLABORADOR:int +TIPODOCUMENTO:int +DOCUMENTO:int +APROVACAO:int +CONSENSO:int GeradorCodigo -log:Log +GeradorCodigo +geraCodigo:String 1 Area -instance:FacadeGerenciador -log:Log -gerenciador:GerenciadorDocumentos 1 GerenciadorDocumentos 1 -log:Log -instance:GerenciadorDocumentos -props:Propriedades -databaseHandler:DatabaseHandler -segurancaHandler:SegurancaHandler -agenteMensageiro:AgenteMensageiro -workflowManager:WorkflowManager 1 -geradorCodigo:GeradorCodigo -GerenciadorDocumentos +getInstance:GerenciadorDocumentos +getAplicacaoHost:String +getAplicacaoPath:String +getDocsHost:String +getDocsPath:String +getDocsPathPublicados:String +getDocsPathFluxo:String +getDocsPathObsoletos:String +getDocsPathCancelados:String +getSmtpHost:String +getListaTipos:List +getListaAreas:List +getListaColaboradores:List +getListaDocumentosStatus:List +getListaPendenciasConsenso:List +getListaPendenciasAprovacao:List +getRegistroConsenso:Consenso +getRegistroAprovacao:Aprovacao +getColaborador:Colaborador 1 +getDocumento:Documento +valideUsuario:int +armazenaConsenso:void +addListaConsenso:void +addColaboradorConsenso:void +delColaboradorConsenso:void +flowNextState:void +criaDocumento:Documento seguranca persistencia +ColaboradorDAO +ConsensoDAO +DatabaseHandler +DocumentoDAO +AprovacaoDAO +AreaDAO +DAO +DAOException +HibernateSession +TipoDocumentoDAO FormatadorDatas -instance:FormatadorDatas -FormatadorDatas +getInstance:FormatadorDatas +stringToDate:Date +dateToString:String Propriedades -log:Log -props:Properties 1 +Propriedades +inicializaPropriedades:void aplicacaoHost:String aplicacaoPath:String docsHost:String docsPath:String docsPathPublicados:String docsPathFluxo:String docsPathObsoletos:String docsPathCancelados:String smtpHost:String 0..* +SegurancaHandler 1 -FacadeGerenciador +getInstance:FacadeGerenciador +getAplicacaoHost:String +getAplicacaoPath:String +getDocsHost:String +getDocsPath:String +getDocsPathPublicados:String +getDocsPathFluxo:String +getDocsPathObsoletos:String +getDocsPathCancelados:String +getSmtpHost:String +getListaTipos:List +getListaAreas:List +getListaColaboradores:List +getListaDocumentosStatus:List +getListaPendenciasConsenso:List +getListaPendenciasAprovacao:List +getRegistroConsenso:Consenso +getRegistroAprovacao:Aprovacao +getColaborador:Colaborador +getDocumento:Documento +valideUsuario:int +armazenaConsenso:void +addListaConsenso:void +addColaboradorConsenso:void +delColaboradorConsenso:void +criaDocumento:Documento +flowNextState:void workflow +WorkflowManager mensagem +MensagemFactory +MimeMessage +AgenteMensageiro Figura 3.5: Diagrama de Classes - Pacote Model 57 A Figura 3.6 mostra a estrutura do pacote persistencia que está dentro do pacote model. HibernateSession DAO +session:ThreadLocal -cfg:Configuration -sf:SessionFactory -log:Log #armazenaObj:void #removeObj:void #recuperaObj:Object #recuperaObj:Object #recuperaObjs:List #rollback:void #closeSession:void +currentSession:Session +closeSession:void -loadClasses:void ColaboradorDAO ConsensoDAO +armazenaColaborador:Colaborador +getColaborador:Colaborador +removeColaborador:void +removeColaborador:void +searchColaboradores:List +armazenaConsenso:Consenso +getConsenso:Consenso +removeConsenso:void +removeConsenso:void +searchConsenso:List AreaDAO DocumentoDAO TipoDocumentoDAO AprovacaoDAO +armazenaArea:Area +getArea:Area +removeArea:void +removeArea:void +searchAreas:List +armazenaDocumento:Documento +getDocumento:Documento +removeDocumento:void +removeDocumento:void +searchDocumentos:List +armazenaTipo:TipoDocumento +getTipo:TipoDocumento +removeTipo:void +removeTipo:void +searchTiposDocumento:List +armazenaAprovacao:Aprovacao +getAprovacao:Aprovacao +removeAprovacao:void +removeAprovacao:void +searchAprovacao:List Exception DAOException DatabaseHandler #exception:Exception -log:Log +DAOException +DAOException +DAOException +DAOException +DAOException +printStackTrace:void +printStackTrace:void +toString:String +DatabaseHandler +getColaborador:Colaborador +getDocumento:Documento +getArea:Area +getColaborador:Colaborador +getTipoDocumento:TipoDocumento +getConsenso:Consenso +getAprovacao:Aprovacao +search:List +armazena:void fatal:boolean Figura 3.6: Diagrama de Classes - Pacote Persistencia 58 3.2.3. Diagramas de Estados Os diagramas de estados possibilitam a visualização do ciclo de vida dos objetos. A Figura 3.7 mostra o ciclo de vida do objeto Documento no sistema. <<<<documento>>>> Em Criação Novo Documento Solicitar Código <<<<documento>>>> Em Elaboração Enviar para Consenso <<<<documento>>>> Enviado para Consenso Enviar para Consenso <<<<documento>>>> Devolvido pelo Consenso Devolver para o Responsável pela Elaboração[Se no mínimo UM dos Responsávels pelo Consenso julgar o Documento NÃO ADEQUADO] Enviar para Aprovação[Se o Documento for julgado ADEQUADO por TODOS os Responsáveis pelo Consenso] <<<<documento>>>> Enviado para Aprovação Enviar para Consenso <<<<documento>>>> Devolvido pelo Aprovador Devolver para o Resposável pela Elaboração[Se o Responsável pelo Aprovação NÃO APROVAR] Publicar no Sistema[Se o Responsável pela Aprovação APROVAR] Revisar/Cria uma cópia do documento <<<<documento>>>> Publicado <<<<documento>>>> Cancelado Cancelar Revisar <<<<documento>>>> Obsoleto Figura 3.7: Diagrama de Estados – Objeto Documento 59 3.2.4. Diagrama E-R do banco de dados O projeto do banco de dados é outro ponto de fundamental importância. Um projeto mal feito pode ocasionar sérios problemas na implementação do sistema. A Figura 3.8 apresenta o diagrama Entidade-Relacionamento do banco de dados do sistema. tipodoc eh do tipo documento id_tipodoc area codigo denominacao numeracao ativo id_area id_colaborador(FK) codigo denominacao ativo relacao id_area(FK) id_colaborador(FK) pertence a area id_documento id_tipodoc(FK) id_area(FK) id_colaborador(FK) colaborador responsavel titulo codigo data_criacao data_publicacao data_cancelamento data_obsoleto prazo_consenso revisao status filename path objetivo motivo_cancelamento responsável pelo cadastro responsavel id_colaborador relacao login nome email senha acesso ativo responsavel aprovacao do documento aprovacao id_aprovacao id_documento(FK) id_colaborador(FK) consenso consenso do documento area_colaborador id_consenso id_documento(FK) id_colaborador(FK) resultado justificativa data data_envio status ativo id_documento resultado justificativa data data_envio status prazo ativo Figura 3.8: Diagrama de Entidade-Relacionamento do Banco de Dados 60 3.3. Implementação 3.3.1. Ambiente de Desenvolvimento O ambiente de desenvolvimento utilizado para a implementação do projeto foi montado utilizando-se basicamente ferramentas livres Java. Existe um grande número de ferramentas gratuitas disponíveis para a plataforma Java: servidores de aplicação, IDEs, bancos de dados, entre outras. 3.3.1.1. Ferramenta IDE O Eclipse surgiu como projeto interno da IBM, que foi doado para a comunidade Open Source no ano de 2001, e desde então vem evoluindo muito rapidamente. É uma ferramenta integrada de desenvolvimento que fornece um ambiente completo para o desenvolvimento de aplicações com suporte a várias linguagens (Java, C++, PHP, Cobol, etc). Também possui outros recursos inexistentes em outras ferramentas. Um outro ponto positivo do Eclipse é a possibilidade de instalação de plugins com funcionalidades específicas: Desenvolvimento de aplicações Web Java, Edição de Templates Velocity, Persistência de dados com Hibernate, Interface com bancos de dados, editores gráficos de diagramas UML, e muitos outros disponíveis, na maioria das vezes, gratuitamente. O Eclipse pode ser encontrado em http://www.eclipse.org. No site http://www.eclipse-plugin.com pode-se encontrar plugins Eclipse para os mais diversos fins. 3.3.1.2. Servidor de Aplicações O Tomcat é um container de aplicações web desenvolvido pela Fundação Apache. É focado na linguagem Java, mais especificamente nas tecnologias de Servlets e JavaServer Pages(JSP). 61 Optou-se por sua utilização por tratar-se de um software livre e pelo fato de ser mais simples e adequado ao porte da aplicação. 3.3.1.3. Banco de Dados Dentre as várias alternativas de bancos de dados livres, optou-se por utilizar o MySQL por ser ele quase que um padrão no desenvolvimento de aplicações Web. Mais uma vez referenciando o uso do framework para persistência de dados Hibernate, destaca-se o fato de que o sistema não estar “amarrado” somente ao MySQL. Pode-se optar por utilizar qualquer outro banco de dados compatível com JDBC somente alterando-se os arquivos xml de configuração. 3.3.2. Arquitetura da Aplicação A arquitetura Cliente-Servidor de três camadas foi escolhida por ser a que melhor atende aos requisitos da aplicação. A aplicação foi desenvolvida utilizando a linguagem Java sobre a plataforma J2EE(Java 2 Enterprise Edition) usando a tecnologia primária Servlets e a tecnologia de suporte JavaMail; A aplicação será desenvolvida utilizando o padrão de projeto MVC (Model-ViewController) descrito na seção 2.4.1.1. Foi escolhido por ser, atualmente, o principal padrão de projetos para aplicações web. 3.3.2.1. Implementação do padrão MVC A camada que responsável pelo controle da interação com o usuário (Controller) foi implementada utilizando a tecnologia Servlet. 62 O framework Velocity foi utilizado na implementação da camada de visualização (View). Segundo [18], uma das vantagens do Velocity, em relação a outras tecnologias de implementação dessa camada (JSP por exemplo), é a de facilmente limitar as possibilidades que um designer tem em escrever o código da página. Enquanto em uma página JSP o designer tem acesso a todas as classes Java disponíveis na aplicação web, é possível configurar o Velocity para que cada template tenha acesso a somente alguns objetos. A camada que contém os objetos do negócio (Model) é completamente independente das outras duas camadas e poderia ser utilizada em qualquer outra aplicação não web. O framework de Hibernate, descrito na seção 2.4.2.2, foi utilizado para implementar a sub-camada de persistência dentro da camada de negócio. Proporcionando mais uma vez, o desenvolvimento modular do sistema. 3.3.3. Classes Implementadas O código das classes implementadas está na seção de anexos. 3.3.3.1. Classes da Camada de Controle 3.3.3.1.1. Classe Controller É a classe responsável por receber todas as requisições do cliente. O controlador processa a requisição identificando o tipo de ação e instanciando um objeto Action que irá realizar a tarefa desejada. Após o término da tarefa o controlador renderiza a saída em formato HTML a partir do template Velocity indicado pela ação. Essa classe é derivada da classe VelocityServket que faz parte do framework Velocity. 63 3.3.3.1.2. Classe Action Classe abstrata que a partir da qual são derivadas todas as classes que executam as ações do sistema. 3.3.3.1.3. Classe DocumentoAction Classe derivada de Action responsável pela execução das ações de manipulação dos documentos. Abrir documento Elaborar documento Proceder troca de estado do documento Em cada estado do ciclo de vida do documento, executa as possíveis ações e após a execução retorna o template para visualização. 3.3.3.1.4. Classe ViewAction Classe derivada de Action que executa as ações referentes a listagem de documentos. De acordo com o tipo de lista selecionado pelo cliente interagem com os objetos de negócio e retorna o template com os dados para a visualização. 3.3.3.1.5. Classe LoginAction Classe derivada de Action que executa a ação de validação do usuário no sistema. Se o usuário for validade com sucesso retorna o template de página principal do sistema. 3.3.3.1.6. Classe ConsensoAction 64 Classe derivada de Action que executa as ações referentes aos registros de adequação do documento: Registrar adequação Abrir registro de adequação Visualizar histórico da adequação do documento 3.3.3.1.7. Classe AprovacaoAction Classe derivada de Action que executa as ações referentes aos registros de aprovação do documento: Registrar aprovação Abrir registro de aprovação Visualizar histórico da aprovação do documento 3.3.3.1.8. Classe ActionFactory Essa classe implementa o design pattern Factory Method e responsável por implementar a lógica de criação dos objetos Action. A classe Controller não precisa conhecer todos os tipos de objetos Action e a lógica de criação, para isso ela usa a classe ActionFactory para criá-los. 3.3.3.2. Classe da Camada de Negócios 3.3.3.2.1. Classe GerenciadorDocumentos Esta é a classe principal da camada de negócios. Realização a manipulação dos objetos de negócio e com a subcamada de persistência. 3.3.3.2.2. Classe FacadeGerenciador Essa classe é o ponto único de acesso à camada de negócios. Recebe todas as requisições da camada de controle. 65 3.3.3.2.3. Classe WorkflowManager Classe que implementa a máquina de estados do documento. Possui um único método que efetua a troca de estados do documento no sistema. Faz a alteração do estado interno do documento alterando atributos, alterando objetos relacionados (Aprovação e Consenso). Interage com o sistema de mensagens para enviar emails para os responsáveis. 3.3.3.2.4. Classe SegurancaHandler Realiza as ações referentes à segurança do sistema. Para essa versão, apenas a função de validação foi implementada. 3.3.3.2.5. Classes de Objetos do Negócio As seguintes classes já foram descritas na seção 3.1.7: 1. Documento 2. Consenso 3. Aprovacao 4. Colaborador 5. Area 6. TipoDocumento 3.3.3.2.6. Classes da Sub-Camada de Persistência 1. DatabaseHandler: responsável pela interação com os objetos de dados. Seguindo o pattern Facade essa classe seria a interface única de acesso aos objetos da sub-camada de persistência. 2. HibernateSession: responsável por obter a sessão do banco de dados. Realiza a interação com o framework Hibernate. 3. DAO: classe que realiza a interação entre os objetos persistentes e o framework Hibernate. 66 Para cada classe de objetos de negócio, seção 3.3.3.2.5., existe uma classe “xxxDAO” derivada de DAO. 3.3.3.2.7. Classes Utilitárias 1. GeradorCódigo: utilizada para gerar o código do documento num formato padrão de acordo com a Área e o Tipo do Documento. 2. Propriedades: armazena as propriedades dinâmicas do sistema (nome do servidor, diretórios, etc) que são lidas do arquivo de configuração. 3. MensagemFactory: responsável pela criação das mensagens enviadas aos responsáveis pelas ações no sistema. 4. AgenteMensageiro: responsável pelo envio das mensagens. Utiliza a tecnologia JavaMail. 5. FormatadorDatas: realiza a manipulação de datas. Converte de String para Date e o inverso também. 67 3.3.4. Layout do Sistema Na Figura 3.9 temos a tela inicial que solicita o login ao usuário. Figura 3.9: Layout do Sistema – Tela de Login Após a validação do colaborador, o sistema lista as suas pendências de consenso/aprovação. Figura 3.10. Figura 3.10: Layout do Sistema – Pendências do Colaborador 68 A Figura 3.11 ilustra o formulário de dados de um documento em elaboração. Figura 3.11: Layout do Sistema – Documento Em Elaboração Figura 3.12, temos um registro de aprovação do documento. Figura 3.12: Layout do Sistema – Registro de Aprovação 69 3.3.5. Considerações O sistema não implementa as ações de gerenciamento dos cadastros de colaboradores, tipos de documentos e áreas, pois não fazia parte do escopo definido. Para utilização do sistema supõe-se essas tabelas já existentes e alimentadas. No desenvolvimento da interface do sistema, tentou-se atender alguns requisitos de usabilidade tais como: funções de validação dos dados antes de enviá-los, máscaras de entradas para campos data, mensagens de confirmação, mensagens de erro compreensíveis, entre outros. ( Anda não consegui um servidor público e gratuito para hospedar a aplicação e disponibilizá-la para avaliação. Deste modo, coloco-me a disposição para apresentação do sistema. ) 70 3.4. Testes Os testes realizados durante a implementação não foram documentados. Após o término da etapa de implementação, o sistema foi instalado e testado em ambiente distribuído. 3.4.1. O Ambiente de Teste Os testes foram realizados com a ajuda da equipe da Unidade de Sistemas de Informação e Qualidade do Instituto Euvaldo de Santa Cataria – IEL/SC que também participou do processo de levantamento dos requisitos. 3.4.2. Funcionamento em Ambiente Distribuído Esse teste serviu para testar o comportamento do sistema em ambiente distribuído. Foram encontrados os seguintes problemas: Os arquivos de configuração do sistema (arquivos xml) não estavam sendo carregados corretamente. O acesso aos arquivos estava sendo realizado com um path absoluto e ao mudar de sistema operacional esse tipo de ação pode dar problema. A solução transformar o path da aplicação de absoluto para relativo. Manipulação de arquivos na rede: o nome do host do servidor de arquivos no arquivo de configuração do sistema estava num formato incorreto. A forma correta de mapear o servidor de arquivos corrigiu esse problema. 71 3.4.3. Testes de Uso do Sistema O objetivo destes testes é evidenciar que o sistema atende corretamente aos requisitos e casos de uso levantados na etapa de análise. Fluxo de publicação de documento (fluxo normal) 1. O documento da área técnica Formulário de Cadastro de Cliente – TCN FM 001 foi elaborado e enviado para consenso com sucesso; 2. Os responsáveis pelo consenso do documento receberam os avisos por email e efetuaram o registro de adequação com sucesso; 3. O responsável pela aprovação recebeu o aviso por email e efetuou o registro com sucesso; 4. O documento foi publicado e disponibilizado para acesso de todos os colaboradores; Fluxo de publicação de documento (fluxo alternativo) 1. O documento da área técnica Formulário de Cadastro de Fornecedor – TCN FM 001 foi elaborado e enviado para consenso com sucesso; 2. Os responsáveis pelo consenso do documento receberam os avisos por email e efetuaram o registro de adequação com sucesso. Um dos membros julgou o documento como não adequado. 3. O responsável pela elaboração do documento recebeu o aviso por email, efetuou as alterações necessárias e enviou novamente para consenso. O histórico de consenso estava disponível para que o elaborador pudesse visualizar as decisões anteriores; 4. Os responsáveis pelo consenso do documento receberam os avisos por email e efetuaram o registro de adequação com sucesso. O histórico de consenso estava disponível para que os envolvidos pudessem visualizar as decisões anteriores; 5. O responsável pela aprovação recebeu o aviso por email e efetuou o registro com sucesso; 6. O documento foi publicado e disponibilizado para acesso de todos os colaboradores; 72 Fluxo de publicação de documento (fluxo alternativo) 1. O documento da área administrativa Padrão de Processo de Aquisição – ADM PP 001 foi elaborado e enviado para consenso com sucesso; 2. Os responsáveis pelo consenso do documento receberam os avisos por email e efetuaram o registro de adequação com sucesso. 3. O responsável pela aprovação recebeu o aviso por email e efetuou o registro não aprovando o documento. 4. O responsável pela elaboração do documento recebeu o aviso por email, efetuou as alterações necessárias e enviou novamente para consenso. O histórico de consenso estava disponível para que os envolvidos visualizassem as decisões anteriores; 5. Os responsáveis pelo consenso do documento receberam os avisos por email e efetuaram o registro de adequação com sucesso. Os históricos de consenso e aprovação estavam disponíveis para que os envolvidos visualizassem as decisões anteriores; 6. O responsável pela aprovação recebeu o aviso por email e efetuou o registro com sucesso; 7. O documento foi publicado e disponibilizado para acesso de todos os colaboradores; Deste modo, vários outros documentos foram inseridos no sistema evidenciando o atendimento dos requisitos e casos de uso estabelecidos. Apenas algumas observações referentes à usabilidade do sistema foram levantadas pelos envolvidos nos testes. Um ponto positivo identificado foi a manutenção dos registros históricos pelo sistema. 73 Capítulo 4 4. CONSIDERAÇÕES FINAIS 4.1. Conclusão A adoção dos processos de gestão da qualidade dentro de uma empresa/organização não é uma tarefa simples. No caso da ISO 9000, os requisitos devem ser todos atendidos e evidenciados. Nesse contexto, a ferramenta desenvolvida poderá trazer a facilidade de automatizar o gerenciamento da documentação que é um dos requisitos mais importantes da norma. Os objetivos referentes ao atendimento das recomendações da ISO para gerenciamento de documentos foram alcançados com sucesso. O sistema desenvolvido automatiza o fluxo de elaboração, aprovação e publicação de documentos e mantém o histórico dos registros de consenso e aprovação. Após a aprovação, o documento é publicado e disponibilizado para acesso de todos os colaboradores da empresa/organização. O objetivo de aplicação prática dos conhecimentos obtidos nas disciplinas de Análise e Projetos e Engenharia de Software também foi alcançado. O sistema foi desenvolvido seguindo uma metodologia que serviu de guia no desenvolvimento. Os design patterns foram de extrema importância nas decisões tomadas na etapa de projeto do sistema. A reutilização de código com o uso de frameworks foi outro fator que de fundamental importância no desenvolvimento do trabalho. Por fim, a utilização da tecnologia Java foi outro objetivo alcançado na medida em o desenvolvimento deste trabalho possibilitou o aprendizado mais aprofundado da mesma. ( Muito se aprendeu com este trabalho. Java é realmente fascinante. ) 74 4.2. Dificuldades Encontradas Apesar de já conhecer a linguagem Java houve um pouco de dificuldade ao embarcar na plataforma J2EE. Foi um grande desafio encarar um trabalho desses partindo do “Hello World”. O estudo da tecnologia tomou um bom tempo. Outra dificuldade foi na modelagem, pois a falta de experiência é a grande inimiga nessas horas. O projeto foi mudado várias vezes até chegar ao estado atual. Diante deste contexto, os padrões de projeto foram de fundamental importância para decidir questões sobre a modelagem e o projeto. A persistência dos objetos foi um problema de início, mas com a utilização do framework Hibernate foi superado. Um pouco de tempo foi gasto na leitura dos manuais desse framework, mas o resultado compensou. 4.3. Trabalhos Futuros Desenvolvimento do módulo de segurança com funções de assinatura digital para os documentos garantindo assim a autenticidade dos registros de adequação e consenso. Desenvolvimento do módulo de Auditorias Internas para automatização do processo de Auditorias Internas da Qualidade. Com funções para agendar, criar e preencher relatórios de auditorias, entre outras. Desenvolvimento do módulo de Ações Corretivas e Preventivas para automatização do processo de registro de não-conformidades, ações corretivas e preventivas. Esse sistema facilitaria o fornecimento de evidências objetivas do comprometimento da organização com o processo de melhoria contínua. Quando ocorre uma não-conformidade, deve-se gerar ações corretivas determinando 75 atividades de modo a corrigir o problema ocorrido e evitar que ele não ocorra novamente. 76 Bibliografia [1] VALLS, Valéria Martin. O gerenciamento dos documentos do Sistema da Qualidade. Revista Ciência da Informação – Vol 25, N.º 2, 1995. Disponível em <http://www.ibict.br/cionline/250296/25029601.pdf> Data de Acesso: 22/12/2003. [2] ISRAELIAN, Eliane. et al. Uma Introdução às Normas da Série ISO 9000. Allchemy Web, 1996. Disponível em: <http://allchemy.iq.usp.br/pub/metabolizando/bd6c001z.doc> Data de Acesso: 22/12/2003. [3] ABNT - Associação Brasileira de Normas Técnicas. Sistemas de gestão da qualidade – Requisitos. NBR ISO 9001:2000. [4] ABNT - Associação Brasileira de Normas Técnicas (ABNT). Sistemas de gestão da qualidade – Fundamentos e vocabulário. NBR ISO 9000:2000. [5] SADOSKI, Darleen. Client/Server Architectures – An Overview. Carnegie Mellon Software Engineering Institue, 1997. Disponível <http://www.sei.cmu.edu/str/descriptions/clientserver_body.html> Data em: de Acesso: 10/05/2004. [6] KURNIAWAN, Budi. Java para Web com Servlets, JSP e EJB. Rio de Janeiro: Editora Ciência Moderna Ltda., 2002. [7] CAMPIONE, Mary; WALRATH, Kathy; HUML, Alison. The Java™ Tutorial. Disponível em: <http://java.sun.com/docs/books/tutorial/> Data de Acesso:12/05/2004. [8] DEITEL, H.M. Java, como programar / H. M. Deitel e P.J. Deitel; tradução de Carlos Arthur Lang Lisboa. – 4.ed. – Porto Alegre : Bookman, 2003. 77 [9] YUNG, Leandro. J2EE Visão Geral. Revista JavaMagazine, Número 04, 2004. [10] ARMSTRONG, Eric. et al. The J2EE™ 1.4 Tutorial. Disponível em: <http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html> Data de Acesso: 15/05/2004. [11] SILVA, Ricardo Pereira e. Suporte ao desenvolvimento e uso de frameworks e componentes. Porto Alegre: Universidade Federal do Rio Grande do Sul, 2000. (Tese, Doutorado em Ciência da Computação). Disponível em: <http://www.inf.ufsc.br/~ricardo/download/tese.pdf> Data de Acesso: 20/05/2004. [12] OODESIGN, Equipe. Padrões de Projeto de Software. Portal OODesign. Disponível em: <http://www.oodesign.com.br/patterns/> Data de Acesso: 21/05/2004. [13] DESTRO, Daniel. Implementando Design Patterns com Java. Grupo de Usuários Java, 2004. Disponível em: <http://www.guj.com.br/article.get.print.chain?article.id=137> Data de Acesso: 21/05/2004. [14] DATA & OBJECT FACTORY. Software Design Patterns. Developer Training. Disponível em: <http://www.dofactory.com/Patterns/Patterns.aspx> Data de Acesso 22/05/2004. [15] SILVA, Alberto M. R.; VIDEIRA, Carlos A. E. UML, Metodologias e Ferramentas Case. Lisboa: Centro Atlântico, 2001. [16] CONALLEN, Jim. Desenvolvimento de aplicações Web com UML / Jim Conallen; tradução de Altair Dias Caldas de Moraes, Cláudio Belleza Dias. Rio de Janeiro: Campus, 2003. 78 [17] BONA, C.; COSTA T. C. Processo de Software: Um Estudo de Caso em ICONIX. III Congresso Brasileiro de Computação, 2003. [18] SILVEIRA, Azevedo Guilherme de; VILLELA, Carlos. GUJ2 – Criando uma comunidade ainda melhor. Revista JavaMagazine, Número 04, 2004. [19] ALMEIDA, A. DARLT, R. Pesquisa e Desenvolvimento em UML. UNISUL, 2001. [20] HIBERNATE.ORG. Hibernate Reference Documentation. Disponível em: <http://www.hibernate.org/hib_docs/reference/en/html/> [21] PRESSMAN, Roger S. Engenharia de Software. - São Paulo: Makron Books ,1995. 79 ANEXOS 80 Anexo 1: Diagrama de Seqüência – Efetuar Login 81 Anexo 2: Diagrama de Seqüência – Listar Documentos 82 Anexo 3: Diagrama de Seqüência – Abrir Documento 83 Anexo 4: Diagrama de Seqüência – Elaborar Documento 84 Anexo 5: Diagrama de Seqüência – Enviar Documento para Consenso 85 Anexo 6: Diagrama de Seqüência – Registrar Adequação do Documento 86 Anexo 7: Diagrama de Seqüência – Registrar Aprovação do Documento 87 Anexo 8: Diagrama de Seqüência – Revisar Documento 88 Anexo 9: Código Fonte Ainda está sendo documentado. 89