UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO TECNOLÓGICO GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO SILVANO NOGUEIRA BUBACK ODEDoc: Uma Ferramenta de Apoio à Documentação no Ambiente ODE Vitória 2007 1 SILVANO NOGUEIRA BUBACK ODEDoc: Uma Ferramenta de Apoio à Documentação no Ambiente ODE Monografia apresentada à Universidade Federal do Espírito Santo como requisito parcial para obtenção do título de Bacharel em Ciência da Computação, na área de concentração de Sistemas de Informação. Orientador: Ricardo de Almeida Falbo Vitória Outubro, 2007 2 Silvano Nogueira Buback ODEDoc: Uma Ferramenta de Apoio à Documentação no Ambiente ODE Aprovada em 22 de outubro de 2007. COMISSÃO EXAMINADORA Prof. Ricardo de Almeida Falbo, D.Sc. Orientador Prof. Davidson Cury, D.Sc. Prof. Julio César Nardi, M.Sc. 3 Agradecimentos principalmente para Deus, pois sem ele nada faria sentido. Aos meus pais, pois deles tive todo o apoio necessário para chegar até aqui. Ao Falbo, pela orientação e paciência. 4 RESUMO ODEDoc: Uma Ferramenta de Apoio à Documentação no Ambiente ODE Silvano Nogueira Buback Outubro de 2007 Orientador: Prof. Ricardo de Almeida Falbo A necessidade cada vez mais freqüente por softwares e estes cada vez mais complexos trazem desafios aos engenheiros de software, principalmente no que diz respeito à manutenibilidade desses sistemas. A atividade de documentação visa apoiar a manutenibilidade dos sistemas, porém, para reduzir custos e compensar atrasos, principalmente da fase de desenvolvimento, a documentação é colocada em segundo plano, reduzindo a qualidade do software construído e aumentando o custo da manutenção. O uso de uma ferramenta que apóie a geração dos documentos pode tornar a atividade de documentação mais rápida, além de facilitar a atualização quando tais documentos são alterados. Ainda, a criação de modelos de documento facilita a padronização dos documentos de uma corporação. Neste trabalho foi construída a ferramenta ODEDOC, uma ferramenta de apoio à documentação para o ambiente ODE (Ontology-based software Development Environment). É apresentado como a ferramenta foi construída e mostrado como ela pode facilitar a geração e atualização dos documentos pelo uso de modelos de documentos. Palavras chave: Documentação, Modelos de Documento, Ambiente de Desenvolvimento de Software. 5 SUMÁRIO Capítulo 1 - Introdução ............................................................................................... 9 1.1 Objetivo ............................................................................................................. 9 1.2 Metodologia ..................................................................................................... 10 Capítulo 2 - Automatização do Processo e Documentação ...................................... 12 2.1 CASE ............................................................................................................... 12 2.2 I-CASE............................................................................................................. 14 2.2.1 Framework de Integração ......................................................................... 14 2.2.2 Problemas relacionados à integração........................................................ 16 2.3 Ambientes de Desenvolvimento de Software .................................................. 16 2.4 O Ambiente ODE............................................................................................. 17 2.5 Documentação de Software ............................................................................. 18 Capítulo 3 3.1 Especificação de Requisitos.................................................................. 21 Requisitos Funcionais ...................................................................................... 21 3.1.1 Caso de Uso Editar Modelo de Documento ............................................. 22 3.1.2 Caso de Uso Editar Modelo de Seção ...................................................... 24 3.1.3 Caso de Uso Editar Documento Formatado ............................................. 25 3.1.4 Caso de Uso Editar Seção......................................................................... 26 3.1.5 Caso de Uso Gerar Documento Formatado.............................................. 27 3.2 Especificação de Requisitos Não Funcionais .................................................. 28 3.2.1 Manutenibilidade ...................................................................................... 29 3.2.2 Usabilidade ............................................................................................... 30 Capítulo 4 4.1 Análise .................................................................................................. 31 Modelo de Classes ........................................................................................... 31 4.1.1 Pacote Controle ........................................................................................ 33 4.1.2 Pacote Conhecimento ............................................................................... 33 4.1.3 Pacote Documentacao............................................................................... 35 4.2 Modelagem comportamental ........................................................................... 37 Capítulo 5 - Projeto................................................................................................... 39 5.1 Plataforma de implementação.......................................................................... 39 5.2 Arquitetura ....................................................................................................... 40 5.3 Pacote Conhecimento.documentacao .............................................................. 43 6 5.3.1 Pacote cdp................................................................................................. 43 5.3.2 Pacote cgd................................................................................................. 45 5.3.3 Pacote cgt.................................................................................................. 45 5.3.4 Pacote cih.................................................................................................. 47 5.3.5 Pacote cci.................................................................................................. 49 5.4 Pacote Ode.documentacao ............................................................................... 51 5.4.1 Pacote cdp................................................................................................. 51 5.4.2 Pacote cgd................................................................................................. 52 5.4.3 Pacote cgt.................................................................................................. 52 5.4.4 Pacote cih.................................................................................................. 53 5.4.5 Pacote cci.................................................................................................. 55 5.5 Implementação................................................................................................. 57 5.5.1 5.6 Gerar Documento Formatado ................................................................... 57 Testes ............................................................................................................... 59 Capítulo 6 - Conclusões e Perspectivas Futuras ....................................................... 62 6.1 Conclusões ....................................................................................................... 62 6.2 Perspectivas futuras ......................................................................................... 62 7 INDÍCE DE FIGURAS Figura 2.1 - Arquitetura Conceitual de ODE.................................................................. 17 Figura 2.2 - Ontologia de Artefato (NUNES et al., 2004).............................................. 19 Figura 2.3 - Ontologia de Documentos de Software. ..................................................... 20 Figura 3.1 - Diagrama de Casos de Uso. ........................................................................ 22 Figura 4.2 - Diagrama de pacotes................................................................................... 32 Figura 4.3 - Diagrama de classes parcial do pacote Ode.ControleProcesso.................. 33 Figura 4.4 - Diagrama de classes do pacote Ode.Conhecimento.Documentacao .......... 34 Figura 4.5 - Diagrama de classes do pacote Ode.Documentacao................................... 36 Figura 4.6 – Caso de Uso Exportar Documento............................................................. 38 Figura 5.1 - Arquitetura em camadas. ............................................................................ 41 Figura 5.2 – Comparação entre modelo MVC e o modelo adotado no Ode. ................. 41 Figura 5.3 - Dependência de pacotes de todo o sistema................................................. 42 Figura 5.4 - Pacote Conhecimento.documentacao.cdp................................................... 44 Figura 5.5 - Pacote Conhecimento.documentacao.cgd................................................... 45 Figura 5.6 - Pacote Ode.Conhecimento.Documentacao.Cgt .......................................... 46 Figura 5.7 - Diagrama de classes do pacote ode.conhecimento.documentacao.cih ....... 47 Figura 5.8 - Janela de seleção dos modelos de documentos........................................... 48 Figura 5.9 - Janela de edição dos dados do modelo de documento................................ 48 Figura 5.10 - Janela de edição dos dados do modelo de seção....................................... 49 Figura 5.11 - Diagrama de classes do pacote ode.conhecimento.documentacao.cci ..... 50 Figura 5.12 - Pacote documentacao.cdp......................................................................... 51 Figura 5.13 - Pacote documentacao.cgd......................................................................... 52 Figura 5.14 - Pacote documentacao.cgt.......................................................................... 53 Figura 5.15 - Diagrama de classes do pacote documentacao.cih ................................... 54 Figura 5.16 - Janela de edição dos dados do documento formatado e das seções.......... 55 Figura 5.17 - Diagrama de classes do pacote ode.conhecimento.documentacao.cci ..... 56 8 Capítulo 1 - Introdução A documentação de software tem a finalidade de comunicar informações sobre o sistema de software ao qual ela pertence (FORWARD, 2002). Em outras palavras, documentar é comunicar. Porém a comunicação informal, essencialmente baseada em palavras, não é suficiente. Além da facilidade de ocorrerem distorções na compreensão, termo popularmente conhecido como telefone sem fio, ela não é capaz de resistir ao tempo e não é prática quando a quantidade de pessoas envolvidas no projeto é muito alta ou quando o mesmo tem rotatividade alta. Por isto, um processo formal de documentação se faz necessário. Assim, a documentação assume um papel imprescindível no processo de desenvolvimento de software, visto que a mesma está presente em todas as fases do ciclo de vida do software (PRESSMAN, 2002). Como a demanda por software cresce continuamente, principalmente no que diz respeito a problemas que pedem soluções mais complexas, muitas vezes o trabalho de se documentar torna-se deveras oneroso, sendo usualmente posto de lado em detrimento a outras atividades, tal como a codificação. Contudo, o engenheiro de software deve possuir em mente que, sem uma documentação consistente e detalhada, é praticamente impossível garantir a manutenibilidade. 1.1 Objetivo O objetivo deste trabalho é desenvolver uma ferramenta de apoio à documentação que possa auxiliar na geração da documentação do projeto. O objetivo não é somente gerar a primeira documentação, mas sim auxiliar na manutenção da mesma, permitindo que as alterações feitas no projeto possam ser refletidas nos documentos. Ainda, é fundamental que a geração de documentos seja integrada ao ambiente ODE (Ontology-based software Development Environment) (FALBO et al., 2003), o Ambiente de Desenvolvimento de Software (ADS) em desenvolvimento no Laboratório de Engenharia de Software da Universidade Federal do Espírito Santo (LabES). A integração da ferramenta de apoio à 9 documentação a ODE vai permitir que as várias ferramentas do ambiente possam utilizá-la, evitando a construção de soluções isoladas de documentação, o que pode comprometer a integração de ferramentas. Como diferencial em relação aos outros dois trabalhos de pesquisa sobre documentação desenvolvidos para o ODE (SOARES, 2002) (SILVA, 2004), este trabalho tem por objetivo tornar a documentação um processo simples de ser feito, não sendo necessários conhecimentos sobre XML, HTML ou qualquer outra tecnologia. O objetivo é que o gerente de documentação conheça apenas o ADS ODE. 1.2 Metodologia A metodologia adotada no desenvolvimento deste trabalho pode ser dividida em três fases: revisão bibliográfica sobre ferramentas CASE e ADS, definição do escopo do trabalho e desenvolvimento. Ainda na fase de revisão bibliográfica foi delimitado o escopo inicial do trabalho, porém, esse escopo original incluía também a persistência de artefatos em XML para apoiar a ferramenta de gerência de configuração (NUNES, 2005). Na fase de definição do escopo, decidiu-se abandonar essa idéia, concentrando a atenção deste trabalho apenas na documentação de artefatos produzidos internamente a ODE. A motivação para retirar a persistência de artefatos em XML surgiu da separação entre a documentação e a gerência de configuração. A geração dos artefatos em XML permitia atender às duas soluções, porém não atendia de forma razoável a nenhuma das duas. Na documentação, o uso do artefato em XML facilitava a leitura dos dados, porém exigia a construção das folhas de estilo para gerar a apresentação, uma tarefa que exigia um conhecimento técnico sobre XML e tecnologias relacionadas. Na gerência de configuração, as versões antigas dos artefatos não podiam ser manipuladas de forma transparente pelas ferramentas, impedindo que dois usuários fossem capazes de visualizar, através da ferramenta que as gerou, duas versões distintas de um mesmo artefato. 10 1.3 Organização da monografia Além deste capítulo, esta monografia contém mais cinco capítulos, a saber: • Capítulo 2 – Automatização do Processo e Documentação: neste capítulo discute-se a evolução das ferramentas CASE até os se chegar aos ADSs. Também é enfatizada a importância da documentação de software, além de uma breve apresentação do ADS ODE; • Capítulo 3 – Especificação de Requisitos: neste capítulo são apresentados os requisitos funcionais e não-funcionais para o desenvolvimento da ferramenta de apoio à documentação; • Capítulo 4 – Análise: neste capítulo é apresentada a modelagem de análise da aplicação, com diagramas de classes e de seqüência; • Capítulo 5 – Projeto: é apresentado o projeto da ferramenta, levando em consideração os aspectos tecnológicos e requisitos. Também neste capítulo são descritas as estratégias de implementação e testes; • Capítulo 6 – Conclusões e Perspectivas Futuras: neste capítulo é explicado como este trabalho poderá ajudar na atividade de documentação além de melhorias e trabalhos futuros que poderão surgir. 11 Capítulo 2 - Automatização do Processo e Documentação Há um provérbio árabe que diz: “Conheces um trabalhador pelas tuas ferramentas”. Um engenheiro de software, hoje, conhece bem a aplicação desse ditado. Com softwares cada vez mais complexos, prazos mais curtos e a necessidade de custos menores, em função de um mercado cada vez mais competitivo, o desenvolvimento de software tornou-se uma tarefa árdua. Levantar requisitos, gerar documentação, acompanhar cronograma, gerenciar riscos, codificar, testar, implantar são algumas das atividades presentes em qualquer ciclo de desenvolvimento de software que se tornaram praticamente impossíveis de realizar sem o uso de ferramentas adequadas. Neste capítulo examinamos a evolução das ferramentas CASE (Computer-Aided Software Engineering) e a necessidade da documentação de software, terminando com a apresentação do projeto no qual a ferramenta desenvolvida por este trabalho está inserida 2.1 CASE Existem muitas definições para CASE. Segundo (PRESSMAN, 2002), CASE é uma ferramenta de software apoiada por computador, que assiste gerentes e profissionais de engenharia de software em toda atividade associada com o processo de software. Ferramentas CASE automatizam as atividades de gestão de projetos, gerenciam todos os produtos de trabalho produzidos ao longo do processo e assistem os engenheiros em seu trabalho de análise, projeto, codificação e teste. Já o Instituto de Engenharia de Software (Software Engineering Institute – SEI) (SEI, 2007) define CASE de uma forma bem direta: CASE é o apoio do computador no processo de desenvolvimento de software. Essencialmente, a definição do SEI é mais ampla, não restringindo o conceito de CASE apenas a software. Em (PRESSMAN, 2002) foi criada uma taxonomia para essas ferramentas, utilizando como critério a função à qual ela é aplicada. A seguir temos uma lista dos grupos de ferramentas: 12 • Ferramentas de engenharia de processos de negócio; • Ferramentas de modelagem e gestão de processo; • Ferramentas de planejamento de projeto; • Ferramentas de análise de riscos; • Ferramentas de gestão de projetos; • Ferramentas de rastreamento de requisitos; • Ferramentas de métricas e gestão; • Ferramentas de documentação; • Ferramentas de software básico; • Ferramentas de garantia da qualidade; • Ferramentas de gestão de bases de dados; • Ferramentas de gestão de configuração de software; • Ferramentas de análise e projeto; • Ferramentas de prototipação / simulação; • Ferramentas de projeto e desenvolvimento de interfaces; • Ferramentas de programação; • Ferramentas de desenvolvimento Web; • Ferramentas de integração e testes; • Ferramentas de análise estática; • Ferramentas de análise dinâmica; • Ferramentas de gestão de testes; • Ferramentas de teste cliente/servidor; • Ferramentas de reengenharia; Apesar da evolução permanente dessas ferramentas, elas não substituem práticas confiáveis de engenharia de software. Elas devem ser utilizadas apenas para complementá-las. Sem um processo de software estabelecido, métodos de engenharia de software e qualidade aprendidos, o uso dessas ferramentas CASE pode vir a prejudicar o bom andamento do projeto, tornando-o burocrático e confuso (PRESSMAN, 2002) . 13 2.2 I-CASE As etapas de desenvolvimento de software são todas interligadas. Os métodos utilizados para realizar os testes, ao final do processo de desenvolvimento, estão intimamente ligados aos requisitos colhidos no início do projeto. Isso torna necessária uma integração muito ampla por parte das ferramentas CASE. Ferramentas isoladas são muito úteis em determinadas etapas, porém os resultados obtidos pela integração podem ser muito maiores. À ferramenta CASE integrada dá-se o nome de I-CASE (Integrated CASE) (PRESSMAN, 2002). De fato, a integração de ferramentas não é uma tarefa muito simples de ser feita, principalmente, considerando que, apesar do processo de desenvolvimento de software ser todo integrado, significados diferentes são atribuídos às informações durante cada etapa do desenvolvimento. Uma ferramenta CASE totalmente integrada deve refletir todas as peculiaridades do processo de desenvolvimento, enfatizando as necessidades de cada etapa. Apesar do significado que cada informação possui para determinada ferramenta, estas não podem perder o significado global da informação. Por exemplo, um diagrama de classes é feito a partir dos requisitos levantados do sistema. A partir dele pode-se derivar o modelo relacional. Porém, se um requisito a mais for considerado, este pode, por exemplo, implicar na adição de um atributo em alguma classe. O atributo em questão deve ser adicionado ao código fonte e, também, deve ser propagado para o modelo relacional. Apesar dos modelos serem aparentemente diferentes, todos fazem parte do contexto do software que está sendo desenvolvido. As alterações feitas em algum dos modelos têm impacto em muitos outros. 2.2.1 Framework de Integração Em relação à integração, há dois pontos de visão distintos: o ambiente do ponto de vista do usuário e o ambiente do ponto de vista do construtor. O ambiente do usuário é voltado para interface. Este quer ver o quanto bem integrado está às ferramentas. Já o construtor de ferramentas, preocupa-se 14 com o quão fácil é integrar uma ferramenta ao ambiente (THOMAS et al., 1992). De acordo com o modelo de referência proposto em (THOMAS et al., 1992), há quatro dimensões de integração: • Integração de dados: é suportada pelo repositório e serviços de integração de dados; • Integração de controle: é suportada pela gerência de processos e serviços de mensagens; • Integração de apresentação: é suportada pelos serviços de interface com o usuário; • Integração de processo: garante que a ferramenta interage efetivamente no apoio a um processo definido. Integração de dados A informação manipulada pelas ferramentas inclui dados persistentes e não-persistentes (que não sobrevivem após a execução das ferramentas e que são compartilhados e trocados entre elas). O objetivo é manter a informação consistente, independentemente de quantas partes estão sendo operadas e transformadas pelas ferramentas (THOMAS et at., 1992). Integração de Controle Para ferramentas compartilharem funcionalidades, elas precisam ser capazes de comunicar as operações que devem ser executadas. Como as operações requerem dados, as ferramentas também devem comunicar ou referenciar dados. Neste contexto, a integração de controle complementa a integração de dados. Integração de dados diz respeito à representação dos dados, conversão e tarefas de armazenamento. Integração de controle diz respeito à transferência, controle e compartilhamento de serviços (THOMAS et at., 1992). Integração de Apresentação O objetivo da integração de apresentação é aumentar a eficiência e a efetividade da interação do usuário com o ambiente, reduzindo o esforço cognitivo (THOMAS et at., 1992). Ela diz respeito à forma como os dados são 15 apresentados e os recursos acessados. A uniformização da apresentação torna o aprendizado de ferramentas novas muito mais rápido e fácil Integração de Processos O objetivo da integração de processo é garantir que as ferramentas interagem de forma eficaz com base em um processo definido. Uma ferramenta incorpora um conjunto de concepções sobre o processo que pode ser usado. Duas ferramentas são bem integradas em relação ao processo se suas concepções são consistentes (THOMAS et at., 1992). 2.2.2 Problemas relacionados à integração A maior parte das pesquisas e desenvolvimento de ferramentas CASE integradas está focada na infra-estrutura e mecanismos para integração, como funcionalidades de usuários e mecanismos de troca de dados entre as ferramentas. Não há tantas pesquisas referentes à semântica dos dados, sendo esta o objetivo final da integração: integrar ferramentas sem que elas percam a semântica da informação que está sendo manipulada. Também há problemas de muitas ferramentas CASE não terem sido implementadas em uma arquitetura em que a integração fosse possível. Desta forma, seria necessário remodelar toda ferramenta, o que é, na maioria das vezes, inviável para os negócios da empresa. Questões de estratégia por parte das empresas também impedem a integração real. Muitas empresas já possuem, por meio de suas ferramentas, uma grande parcela do mercado. Não seria interessante para elas permitir que algumas de suas ferramentas possam ser substituídas pelas dos concorrentes. A integração ocorre apenas entre ferramentas da própria empresa desenvolvedora, ou seja, a camada de integração das ferramentas existe, em parte, porém são proprietárias. 2.3 Ambientes de Desenvolvimento de Software Como a integração de ferramentas CASE produzidas sem uma preocupação prévia com esse aspecto revelou-se utópica e a necessidade de ferramentas que apoiassem todas as etapas do desenvolvimento de software 16 cresce cada vez mais, começaram a surgir os Ambientes de Desenvolvimento de Software (ADSs). Um ADS apóia todas as etapas do desenvolvimento, consistindo ainda de ferramentas separadas, porém as ferramentas do ADS são construídas sobre um núcleo comum, o que facilita a integração. Um tipo de ADS merece destaque: os Ambientes de Desenvolvimento de Software Centrados em Processo. Esses ambientes exploram uma representação explícita do processo de software para guiar e auxiliar os desenvolvedores no desenvolvimento de software. Os processos são modelados no ADS e a execução dá-se quando os agentes, humanos ou não, executam as atividades decorrentes do processo. 2.4 O Ambiente ODE Ontology-based software Development Environment (ODE) é um ambiente que vem sendo desenvolvido no Laboratório de Engenharia de Software (LABES) da Universidade Federal do Espírito Santo. O ambiente é um ADS Centrado em Processo e baseado em ontologias que possui uma infra-estrutura de gerência do conhecimento. Em ODE, parte-se do pressuposto que, se as ferramentas de um ADS são construídas baseadas em ontologias, a integração delas pode ser facilitada, pois os conceitos envolvidos são bem definidos pelas ontologias (FALBO et al., 2003). Dentre as ontologias que compõem a base ontológica de ODE, tem-se a ontologias de processo de software (BERTOLLO, 2006), de qualidade de software (FALBO et al., 2002) e de artefatos de software (NUNES, 2005), utilizada neste trabalho. Para manter a amarração semântica entre os objetos de ODE e agregar as ontologias ao ambiente, foi proposta uma arquitetura de três níveis (RUY, 2006): Figura 2.1 - Arquitetura Conceitual de ODE 17 • O Nível Ontológico é responsável pela descrição das ontologias. O pacote Ontologia contém as classes que definem uma ontologia de certo domínio e seus elementos. As instâncias das classes do nível ontológico servem de base para a definição das classes dos outros níveis. • O Meta-Nível abriga as classes que descrevem o conhecimento em relação a um domínio de aplicação. Suas classes são derivadas das ontologias e as instâncias dessas classes atuam no papel de conhecimento sobre os objetos do nível base. Elas constituem o conhecimento do ambiente, que pode ser utilizado por qualquer ferramenta que o compõe. • O Nível Base define as classes responsáveis por implementar as aplicações no contexto do ambiente (funcionalidades da infraestrutura e suas ferramentas). Essas classes são também derivadas das ontologias, mas tipicamente incorporam detalhes não descritos por elas, necessários para implementar as aplicações. 2.5 Documentação de Software Um documento de software pode ser definido como um artefato cuja finalidade é comunicar uma informação sobre o sistema de software ao qual ele pertence (FORWARD, 2002). Em outras palavras, documentar é comunicar. Segundo Ambler (AMBLER, 2004), do ponto de vista da modelagem ágil, um documento é qualquer artefato externo ao código fonte cujo propósito seja transmitir informação de uma maneira persistente. Já um modelo é uma abstração que descreve um ou mais aspectos de um problema ou de uma solução potencial para resolver um problema. Alguns modelos podem se tornar documentos, ou incluídos como parte deles, ou simplesmente serem descartados quando cumprirem seu papel. Por fim, código fonte é uma seqüência de instruções, incluindo os comentários que descrevem essas 18 instruções, para um sistema de computador. O termo documentação inclui documentos e comentários de código fonte. O objetivo deste trabalho é desenvolver uma ferramenta de apoio à documentação em ODE. Como foi dito anteriormente, ODE é um ADS baseado em ontologias. As ontologias são a base para a integração das ferramentas em ODE. Assim, é natural que uma ferramenta de documentação inserida no contexto de ODE seja apoiada por uma ontologia de documentos, que, por sua vez, é parte da ontologia de artefatos (NUNES et al., 2004), parcialmente mostrada na Figura 2.2. produto +super-artefato 0..* <<Conceito>> Atividade 0..* 0..* 0..* insumo (from Ontologia de Processo) Recurso Humano <<Conceito>> 0..* Artefato +sub-artefato (from Ontologia de Processo) 0..* 0..* dependência <<Conceito>> Documento <<Conceito>> 0..* <<Conceito>> Diagrama <<Conceito>> 0..* 0..* aprovação <<Conceito>> Artefato de Código Componente de Software <<Conceito>> Produto de Software Figura 2.2 - Ontologia de Artefato (NUNES et al., 2004) Segundo (NUNES et al., 2004), documentos são artefatos de software não passíveis de execução, constituídos tipicamente de declarações textuais, normalmente associados a padrões organizacionais (roteiros) que definem a forma como eles devem ser produzidos. Exemplos de documentos incluem documentos de especificação de requisitos, planos de projeto, planos de qualidade, relatórios de avaliação de qualidade, entre outros. A Figura 2.3 apresenta a ontologia de documento de software proposta em (NUNES et al., 2004). Os conceitos de Artefato, Procedimento e Roteiro foram importados da ontologia de processo de software (BERTOLLO, 2006), indicando a integração entre essas ontologias. 19 <<Conceito>> Procedimento (f rom Ontologia de Processo) 0..* +super-artefato <<Conceito>> +sub-artefato <<Conceito>> 0..* Artefato 0..* 0..* Diretriz (f rom Ontologia de Processo) dependência 0..* <<Conceito>> 0..* Roteiro (f rom Ontologia de Processo) aplicação +sub-modelo-documento <<Conceito>> Documento 0..* 0..* <<Conceito>> Modelo Documento 1 0..* +super-modelo-documento 1 0..* 0..* 0..* <<Conceito>> 0..* correspondência Seção 0..1 +super-seção 0..* 0..1 <<Conceito>> Modelo Seção 0..* opcional +modelo-super-seção +modelo-sub-seção 0..1 +sub-seção Figura 2.3 - Ontologia de Documentos de Software. De acordo com a arquitetura de ODE, apresentada na Figura 2.1, a ontologia acima vai deu origem a classes nos níveis de conhecimento e base, conforme discutido no Capítulo 5. 20 Capítulo 3 - Especificação de Requisitos Neste capítulo são apresentados os requisitos funcionais e nãofuncionais para o desenvolvimento da ferramenta de apoio à documentação do ambiente ODE, denominada ODEDoc. Esses requisitos foram adaptados e reformulados a partir dos requisitos de uma outra ferramenta de apoio à documentação, XMLDoc, desenvolvida em (SILVA, 2004) e (SOARES, 2002). Na seção 3.1 tratamos dos requisitos funcionais, ou seja, das necessidades do sistema. Na seção 3.2 são tratados os requisitos não-funcionais. 3.1 Requisitos Funcionais Em se tratando de requisitos funcionais, os modelos de casos de uso, juntamente com suas descrições, fornecem uma eficiente forma de modelar esses requisitos. Tais modelos dão ao desenvolvedor uma visão externa do problema a ser capturado, mostrando a interação entre o usuário e o sistema. Os casos de uso possuem dois importantes papéis (FALBO, 2000): • Capturar os requisitos funcionais do sistema. Um modelo de caso de uso define o comportamento de um software (e a informação associada) através de um conjunto de casos de uso. O ambiente do sistema é definido pela descrição dos diferentes atores. Esses atores utilizam o sistema através de um número de casos de uso; • Oferecer uma abordagem para a modelagem de sistemas. Para gerenciar a complexidade de sistemas reais, é comum apresentar os modelos do sistema em um número de diferentes visões. Em uma abordagem guiada por casos de uso, pode-se construir uma visão para cada caso de uso, isto é, em cada visão são modelados apenas aqueles elementos que participam de um caso de uso específico. Isto 21 significa que um modelo de sistema completo só é visto através de um conjunto de visões. A Figura 3.1 mostra o diagrama de casos de uso para o desenvolvimento de ODEDoc. O ator Desenvolvedor pode criar um documento formatado e solicitar a geração dos documentos formatados do projeto. Os documentos formatados são gerados seguindo as instruções de modelos de documento, criados pelo Gerente de Documentação. Figura 3.1 - Diagrama de Casos de Uso. A seguir são apresentadas as descrições dos casos de uso. 3.1.1 Caso de Uso Editar Modelo de Documento Este caso de uso é realizado pelo gerente de documentação e é responsável por criar, alterar e excluir um modelo de documento. Os cenários Criar Modelo de Documento, Alterar Modelo de Documento e Excluir Modelo de Documento compõem este caso de uso. 22 Cursos Normais Criar Modelo de Documento O gerente de documentação informa o nome, uma descrição, o título, o corpo do preâmbulo e o tipo de artefato ao qual se aplica o modelo de documento. Caso os dados sejam válidos, um novo modelo de documento é criado. O cenário Criar Modelo de Seção do caso de uso Editar Modelo de Seção é chamado. Alterar Modelo de Documento O gerente de documentação informa o modelo de documento que deseja alterar e os novos dados. Caso os dados sejam válidos, a alteração é registrada. Cenários do caso de uso Editar Modelo de Seção podem ser chamados. Excluir Modelo de Documento O gerente de documentação informa o modelo de documento que deseja excluir. Uma confirmação para a operação é solicitada. Se a exclusão for confirmada, o modelo de documento e seus modelos de seção são excluídos. Não é permitida a exclusão de modelos de documento que possuam documentos formatados associados. Cursos Alternativos Criar/Alterar Modelo de Documento Dados inválidos: Uma mensagem de erro é exibida solicitando correção dos dados. Excluir Modelo de Documento Existe um ou mais documentos formatados associados ao modelo de documento: Uma mensagem de erro é exibida, informando ao gerente de documentação que existem documentos formatados associados ao modelo de documento e a exclusão não pode ser realizada. 23 3.1.2 Caso de Uso Editar Modelo de Seção Este caso de uso permite criar, alterar e excluir modelos de seção de um modelo de documento. Os cenários Criar Modelo de Seção, Alterar Modelo de Seção e Excluir Modelo de Seção compõem esse caso de uso. Cursos Normais Criar Modelo de Seção O gerente de documentação informa o modelo de seção pai, caso a seção a ser criada seja subseção de uma outra, o título, se a existência de seções desse tipo nos documentos a serem gerados é obrigatória ou opcional, o corpo de texto básico da seção e, opcionalmente, o tipo de artefato que deverá compor o corpo do modelo de seção. Caso os dados sejam válidos, um novo modelo de seção é criado. Caso o modelo de seção não tenha um modelo de seção pai, ele é adicionado como a última seção do modelo de documento. Caso contrário, a nova seção deve ser adicionada ao final da lista de subseções do modelo de seção pai do mesmo. Alterar Modelo de Seção O gerente de documentação informa o modelo de seção que deseja alterar e os novos dados. Caso os dados sejam válidos a alteração é registrada. Excluir Modelo de Seção O gerente de documentação informa o modelo de seção que deseja excluir. Os dados são apresentados e é solicitada uma confirmação. Se a exclusão for confirmada, o modelo de seção e todas as suas subseções são excluídos. Não é permitida a exclusão de um modelo de seção que tenha seções em documentos formatados associados. Cursos Alternativos Criar Modelo de Seção/Alterar Modelo de Seção Dados inválidos: Uma mensagem de erro é exibida solicitando a correção dos dados. 24 Excluir Modelo de Seção Existem uma ou mais seções associadas ao modelo de seção: Uma mensagem de erro é exibida, informando ao gerente de documentação que existem documentos formatados associados ao modelo de documento e, por isso, a exclusão de seção não é permitida. 3.1.3 Caso de Uso Editar Documento Formatado Este caso de uso é iniciado pelo desenvolvedor e permite criar e excluir um documento formatado. Os cenários Criar Documento Formatado e Excluir Documento Formatado compõem este caso de uso. Cursos Normais Criar Documento Formatado O desenvolvedor informa o modelo de documento, o documento ao qual este documento formatado se aplica e as seções opcionais que deseja. Caso os dados sejam válidos, o documento formatado é criado. Para cada modelo de seção obrigatória e para as opcionais do modelo de documento selecionadas, o cenário Criar Seção do caso de uso Editar Seção deve ser realizado. Alterar Documento Formatado O desenvolvedor informa o documento formatado que deseja alterar. Os cenários do caso de uso Editar Seção podem ser chamados. Excluir Documento Formatado O desenvolvedor informa o documento formatado que deseja excluir. É solicitada uma confirmação. Se a exclusão for confirmada, o documento formatado é excluído, juntamente com todas as suas seções. Cursos Alternativos Criar Documento Formatado Dados inválidos: Uma mensagem de erro é exibida, solicitando correção dos dados. 25 Excluir Documento Formatado O documento formatado é corpo de uma seção: Uma mensagem de erro é exibida informando ao desenvolvedor que o documento formatado é corpo de uma seção e por isso não pode ser excluído. 3.1.4 Caso de Uso Editar Seção Este caso de uso permite criar, editar e excluir seções de um documento formatado. Os cenários Criar Seção, Alterar Seção e Excluir Seção compõem este caso de uso. Cursos Normais Criar Seção O desenvolvedor informa o modelo de seção e, se este possuir um tipo de artefato como corpo, deverá informar um artefato que irá compor o corpo da seção. O artefato deve ser do mesmo tipo que o tipo de artefato do modelo seção e deve estar entre os sub-artefatos do documento. Alterar Seção O desenvolvedor informa o modelo de seção que deseja alterar e os novos dados. Caso os dados sejam válidos, a alteração é registrada. Excluir Seção O desenvolvedor informa a seção que deseja excluir. Os dados são apresentados e é solicitada uma confirmação. Se a exclusão for confirmada, a seção é excluída. Cursos Alternativos Criar/Alterar Seção Dados inválidos: Uma mensagem de erro é exibida solicitando a correção dos dados. Excluir Seção Modelo de seção da seção não é opcional: Uma mensagem de erro é exibida, informando que a seção não pode ser excluída. 26 3.1.5 Caso de Uso Gerar Documento Formatado Este caso de uso permite ao desenvolvedor gerar um documento formatado. O documento formatado gerado pode ser exportado ou impresso. Curso Normal O desenvolvedor informa o documento formatado que deseja gerar e o tipo de geração desejado (documento impresso ou em arquivo). Caso o tipo de geração seja impresso, uma janela solicitando a impressora e a quantidade de cópias é exibida. Se for escolhida a geração em arquivo, o desenvolvedor deve informar o formato do arquivo de saída e o destino. O texto correspondente ao documento é gerado conforme abaixo: 1. O título do texto é o título do modelo de documento associado ao documento formatado em geração; 2. Após o título, é apresentado o corpo do preâmbulo do modelo de documento. 3. Cada seção do documento dá origem a uma seção no texto, de acordo com a ordem especificada pelas seções. As subseções da seção, analogamente, geram subseções no texto; Para o preenchimento do conteúdo de uma seção do documento formatado, o seguinte procedimento é adotado: 1. O título da seção é o título do modelo de seção correspondente; 2. Um texto inicial da seção é produzido a partir do corpo texto do modelo de seção, sendo que as referências a elementos do documento, como nome do projeto, equipe, etc, devem ser substituídas pelos respectivos valores; 3. Se a seção contiver um outro documento como corpo, uma quebra de página será gerada no texto e o documento correspondente é gerado, utilizando-se as mesmas regras descritas aqui, à exceção da numeração das seções do documento corpo, que serão seções filhas da seção atual; 27 4. Se a seção contiver um diagrama como corpo, uma referência à exibição do diagrama deve ser feita no corpo de texto, indicando onde a imagem deve ser exibida; 5. As regras acima se aplicam recursivamente às subseções. Ao final do processo, uma mensagem é exibida, informando que o texto foi enviado para a impressora ou que o arquivo foi gerado com sucesso e mostrando a localização do mesmo. Cursos Alternativos Arquivo de saída já existente: Uma mensagem de aviso é exibida, solicitando a confirmação da sobrescrita do arquivo. Erro na geração do arquivo de saída: Uma mensagem de erro é exibida, informando o motivo do erro e o caso de uso é finalizado. 3.2 Especificação de Requisitos Não Funcionais Na seção anterior foram tratados apenas os requisitos funcionais, ou seja, aqueles que não levam em consideração a tecnologia a ser utilizada na implementação do sistema. Agora, são tratados os requisitos não funcionais requeridos pelo software. Esses levam em consideração aspectos tecnológicos, juntamente com suas imperfeições, e podem determinar o sucesso ou o fracasso de um sistema, sendo o diferencial entre dois produtos que satisfazem aos mesmos requisitos funcionais do usuário. Dentre os requisitos não funcionais, podemos citar (ISO, 1999): • Confiabilidade: diz respeito à capacidade do software manter seu nível de desempenho, sob condições estabelecidas, por um período de tempo. Tem como sub-características: maturidade, tolerância à falhas, recuperabilidade e conformidade; • Usabilidade: refere-se ao esforço necessário para se utilizar um produto de software, bem como o julgamento individual de tal uso por um conjunto de usuários. Tem como sub-características: 28 inteligibilidade, apreensibilidade, operacionalidade, atratividade e conformidade; • Eficiência: diz respeito ao relacionamento entre o nível de desempenho do software e a quantidade de recursos utilizados sob condições estabelecidas. Tem como sub-características: comportamento em relação ao tempo, comportamento em relação aos recursos e conformidade; • Manutenibilidade: concerne ao esforço necessário para se fazer modificações no analisabilidade, software. Tem modificabilidade, como sub-características: estabilidade, testabilidade e conformidade; • Portabilidade: refere-se à capacidade do software ser transferido de um ambiente adaptabilidade, para outro. capacidade Tem para como ser sub-características: instalado, coexistência, capacidade para substituir e conformidade. Dentre os requisitos não funcionais descritos acima, os de maior relevância para este trabalho são: Manutenibilidade e Usabilidade. 3.2.1 Manutenibilidade Manutenibilidade é um critério de qualidade que visa a garantir a facilidade de alterar futuramente o projeto tecnológico em função de erros de projeto, novas necessidades do usuário e alterações no ambiente tecnológico do usuário (XAVIER, 1995). A manutenibilidade do sistema será dada principalmente pela estrutura em camadas. A estrutura em camadas provê uma estratégia de como distribuir a funcionalidade da aplicação entre classes. Além disso, arquiteturas em camadas provêem direção sobre com que outros tipos de classes uma certa classe pode interagir e como esta interação acontecerá. Isto aumenta a extensibilidade, manutenibilidade e portabilidade dos sistemas desenvolvidos (AMBLER, 1998). 29 A manutenibilidade do sistema será dada, também, pela padronização de nomes, de documentos e de código, o que aumenta a legibilidade e a modificabilidade. 3.2.2 Usabilidade Na medida em que os recursos computacionais foram ficando mais próximos do usuário final, os sistemas necessitavam de um apresentação visual mais conveniente. Para auxiliar a comunicação entre o usuário e o sistema surgiram interfaces com elementos gráficos padronizados (menus, janelas, botões). O objetivo de uma boa interface homem-máquina é colocar as funções mais próximas do alcance do usuário, sem confundi-lo. Neste sentido, a prioridade é o usuário, depois a tarefa que ele irá realizar e, finalmente, as técnicas utilizadas (XAVIER et al., 1995). Esta ferramenta faz uso destes elementos gráficos padronizados, buscando uma interface com a qual o usuário se sinta familiarizado. O projeto de interface será discutido com mais detalhes no capítulo 6 referente a Projeto e Implementação. 30 Capítulo 4 - Análise O objetivo da Análise Orientada a Objetos é definir as classes, os relacionamentos e o comportamento associado a elas, que são relevantes ao problema a ser resolvido no contexto do sistema. Para tal, um número de tarefas deve ocorrer (FALBO, 2000): • Identificação de Classes; • Especificação de Hierarquias de Generalização/Especialização; • Identificação de Associações e Atributos; • Modelagem do Comportamento; • Definição das Operações. Na seção 4.1 tratamos das três primeiras tarefas, descrevendo os aspectos estáticos do sistema, enquanto na seção 4.2 tratamos das tarefas restantes, apresentando os modelos comportamentais do sistema, mapenado aspectos dinâmicos da interação entre os objetos. 4.1 Modelo de Classes Sendo este trabalho realizado no contexto de um ADS, é necessário integrar a ferramenta desenvolvida na arquitetura do mesmo. Tomando por base o modelo de arquitetura conceitual de ODE (ver Figura 2.1), as ontologias do ambiente e os pacotes responsáveis por oferecer um suporte à integração das ferramentas de ODE, podemos dividir esta ferramenta em três sub-sistemas, ou pacotes, como mostra a Figura 4.1. 31 Figura 4.2 - Diagrama de pacotes. O pacote Controle contém as principais classes responsáveis por implementar as aplicações no contexto do ambiente (funcionalidades da infraestrutura do ambiente e suas ferramentas). Essas classes são derivadas das ontologias, mas tipicamente incorporam detalhes não descritos por elas, necessários para implementar as aplicações do ambiente (FALBO et al., 2004a). O pacote Conhecimento abriga as classes que descrevem o conhecimento em relação a um domínio de aplicação. Suas classes são derivadas das ontologias e as instâncias dessas classes atuam, tipicamente, no papel de conhecimento sobre os objetos do Controle (FALBO et al., 2004). O sub-pacote Conhecimento.Documentacao contém as classes derivadas da ontologia de documento, cujo modelo foi apresentado no Capítulo 2 (Figura 2.3). O pacote Documentacao é responsável por abrigar as classes que representam os artefatos dos tipos documento e diagrama. Esse pacote ainda abriga as classes relativas à formatação de documentos, que são utilizadas para criar uma representação para as informações dos artefatos do tipo documento. Nas sub-seções seguintes têm-se os modelos de classes de cada um dos pacotes utilizados neste trabalho. 32 4.1.1 Pacote Controle Conforme discutido anteriormente, o pacote Controle contém as principais classes responsáveis por implementar as aplicações no contexto do ambiente (funcionalidades da infra-estrutura do ambiente e suas ferramentas). No contexto deste trabalho, foi utilizada apenas a classe Artefato do sub-pacote ControleProcesso (BERTOLLO, 2006), mostrada na Figura 4.2. Figura 4.3 - Diagrama de classes parcial do pacote Ode.ControleProcesso • Artefatos: São os produtos gerados nas atividades do processo de software. Podem ser produzidos ou consumidos por uma atividade. São exemplos de artefatos: documentos de especificação de requisitos, manuais de qualidade, atas de revisão, diagramas de classes e código fonte (MIAN et al., 2001). Esta classe é muito importante para este trabalho, pois todo documento é um artefato produzido por uma atividade do processo de software. 4.1.2 Pacote Conhecimento Assim como o pacote Controle é decomposto em vários sub-pacotes, o pacote Conhecimento também o é. Mais especificamente, cada sub-pacote do pacote Conhecimento trata de uma ontologia desenvolvida em ODE. Assim, no contexto deste trabalho, são importantes as classes dos pacotes Conhecimento.Processo e Conhecimento.Documentacao, derivadas a partir das ontologias de processo e de documento, respectivamente, e parcialmente mostradas na Figura 4.4. 33 Figura 4.4 - Diagrama de classes do pacote Ode.Conhecimento.Documentacao As classes KModeloDocumento e KModeloSecao são derivadas diretamente da ontologia de documentos proposta em (NUNES et al., 2004). Um modelo de documento é definido como sendo um tipo especial de roteiro que estabelece a estrutura de um documento e informações para a sua elaboração. O atributo titulo representa o título do documento final gerado com base neste modelo de documento. O atributo corpoPreambulo contém o texto que deverá aparecer entre o título e a primeira seção do documento. Já um modelo de seção contém a formatação para a elaboração de seções de documentos aderentes ao respectivo modelo de documento. Como pode ser visto pelo diagrama da Figura 4.3, um modelo de documento é composto de modelos de seção, podendo estes serem opcionais ou não. Um modelo de seção opcional é aquele que não necessita de uma seção correspondente nos documentos que aplicam o modelo de documento ao qual pertencem. Um modelo de seção contém ainda o título da seção (atributo titulo) e um corpo de texto (atributo corpoTexto). Este último contém o texto que 34 preencherá a seção, juntamente com sua formatação. Observe também que um modelo de seção pode especificar um tipo de artefato (KArtefato) como corpo. Por fim, modelos de seção podem ser decompostos em outros modelos de seções. 4.1.3 Pacote Documentacao Como foi citado, o pacote Documentacao é responsável por abrigar a classe que representa artefatos do tipo documento, classe Documento na Figura 4.4. Além disso, esse pacote também contém as classes responsáveis pela formatação de documentos, de acordo com um modelo de documento: as classes DocumentoFormatado e Secao. Assim como um modelo de documento possui modelos de seções e os modelos de seção, subseções, um documento formatado está associado a seções (classe Secao), que possui subseções. Cada seção possui uma associação com um modelo de seção (KModeloSecao) correspondente. A Figura 4.3 apresenta o diagrama de classes do pacote Documentacao, sendo que as classes desse pacote estão destacadas em amarelo. 35 Figura 4.5 - Diagrama de classes do pacote Ode.Documentacao Observe no diagrama a associação corpo entre Secao e DocumentoFormatado. Como um modelo de seção (KModeloSecao) pode ter um tipo de artefato (KArtefato) como corpo, a seção correspondente deve possuir um DocumentoFormatado como corpo. Este deve estar associado a um modelo de documento (KModeloDocumento) que se aplica ao mesmo tipo de artefato (KArtefato) do modelo de seção (KModeloSecao). Temos, assim, uma restrição de integridade. Diagramas são artefatos que possuem uma representação visual e, portanto, todo diagrama deve ter de fornecer essa representação por meio do método obterImagem(), que será utilizado para incluir a imagem do diagrama no documento formatado. A classe Diagrama foi desenvolvida como parte do trabalho de (NARDI, 2003). 36 4.2 Modelagem comportamental Os diagramas de interação são ferramentas que permitem modelar os aspectos dinâmicos das colaborações entre os objetos. Há dois tipos de diagramas de interação: Diagramas de Seqüência e Diagramas de Colaborações. Uma vez que ambos representam o mesmo tipo de informação, optou-se por utilizar neste trabalho apenas diagramas de seqüência. Segundo (AMBLER, 1998), um diagrama de seqüência mostra os tipos de objetos envolvidos no cenário de utilização, as mensagens que podem ser enviadas uns aos outros, como também os valores associados às mensagens. A apresentação dos diagramas de seqüência mostra com detalhes a colaboração entre objetos na realização dos casos de uso. A Figura 4.5 mostra o diagrama de seqüência para o caso de uso Exportar Documento, apresentado no capítulo 3. 37 Figura 4.6 – Caso de Uso Exportar Documento 38 Capítulo 5 - Projeto Durante a fase de análise não nos preocupamos com as restrições tecnológicas. Levamos em consideração apenas os requisitos funcionais que deveriam ser atendidos. Neste capítulo vamos incorporar as restrições tecnológicas para modelar a solução que será implementada. Na seção 5.1 está descrita a plataforma de implementação. Na seção 5.2 está descrita a arquitetura de pacotes, mostrando o acoplamento com os sistemas já existentes, inclusive com o próprio núcleo de ODE. Nas seções 5.3 e 5.4 está sendo tratado o projeto dos pacotes identificados na fase de análise. A seção 5.5 discute a implementação. Por fim, na seção 5.6 é abordado o processo de testes. 5.1 Plataforma de implementação Como esta ferramenta deverá ser integrada a ODE, vamos nos orientar na plataforma em que este foi construído, com o intuito de facilitar a integração e permitir o reúso de componentes. O reúso de componentes de persistência, visão, negócio, entre outras classes utilitárias, traz algumas vantagens: • Redução do tempo de desenvolvimento: como os componentes já estão implementados, documentados e testados, pode-se focar no desenvolvimento das funcionalidades específicas do projeto. • Facilidade de manutenção: uma vez que os componentes reutilizados são de conhecimento de todo o projeto ODE e já estão bem testados, diminui-se também o tempo despendido em depurações. Sendo assim, como ODE, esta ferramenta foi implementada utilizando Java como linguagem de programação (na versão 5.0) e para persistência de dados Hibernate 3.1 (HIBERNATE, 2007) e PostgreSQL 8.2 como Sistema Gerenciador de Banco de Dados (SGBD). 39 Para a geração dos documentos, os frameworks Jelly (APACHE, 2007a) e AurigaDoc (SOURCEFORGE, 2007a) foram utilizados. 5.2 Arquitetura Com o intuito de facilitar a manutenção e evolução do ambiente e permitir produção de componentes para reúso, a maior parte das ferramentas de ODE, incluindo a apresentada neste trabalho, é organizada em uma arquitetura em camadas, composta de cinco componentes principais, cada um deles responsável por tratar de uma parte do sistema, a saber: • Componente de Domínio do Problema (cdp): contém as classes que identificam os conceitos do domínio do negócio. Essas classes são tipicamente identificadas na fase de análise. • Componente de Gerência de Tarefas (cgt): é responsável pelo controle e execução das funcionalidades das ferramentas. Suas classes implementam os casos de uso e junto com o cdp forma a camada de negócio. • Componente de Interface Humana (cih): contém as classes que representam os elementos de interação de entrada e saída de dados com o meio externo. É representado por janelas, botões, desenhos entre outros. Uma atenção especial deve ser dada a essa componente, pois é por meio dele que o usuário final interage com o ambiente. • Componente de Controle de Interação (cci): Faz a intermediação entre a comunicação do cih e o cgt, permitindo uma menor dependência do cgt em relação ao cih. • Componente de Gerência de Dados (cgd): Contém as classes responsáveis por encapsular o mecanismo de persistência de objetos. A dependência entre os componentes é apresentada na Figura 5.1. 40 Figura 5.1 - Arquitetura em camadas. O modelo de arquitetura de ODE é semelhante ao modelo MVC (Model – View – Controller) (SUN, 2007a). As principais diferenças são: • Componente Model do MVC encapsula os pacotes cgt e cdp do modelo de arquitetura de ODE. • O MVC não descreve a interação com a camada de persistência. • MVC permite que a camada Model se comunique com a View através de eventos, notificando-a de alterações que ocorrem no modelo, enquanto que o modelo de arquitetura de ODE não admite essa comunicação. A Figura 5.2 compara os dois modelos. Figura 5.2 – Comparação entre modelo MVC e o modelo adotado no Ode. 41 Outro detalhe arquitetural importante é mostrar de quais componentes de ODE este trabalho depende e possíveis impactos que este trabalho possa causar no ambiente. Essas dependências são mostradas na Figura 5.3. Figura 5.3 - Dependência de pacotes de todo o sistema. Como pode ser visto pelo diagrama de pacotes da Figura 5.3, este trabalho depende dos componentes Controle, Conhecimento e Utilitario de ODE. No momento, não há dependências de pacotes do ambiente para os pacotes propostos neste trabalho, porém outras ferramentas poderão ter uma dependência se desejarem utilizar os recursos que eles oferecem. Além da dependencia de pacotes do próprio ambiente em que está inserido, este trabalho também tem dependências externas com os framework Jelly e AurigaDoc, como já foi citado no início deste capítulo. 42 O Jelly é um framework que implementa uma linguagem de script baseada em XML, muito semelhante a JSTL (SUN, 2007c). A função dele é combinar o modelo de documento com o documento, através das marcações que serão inseridas. A linguagem de script de Jelly será responsável por fazer as substituições. Já o AurigaDoc é utilizado para fazer a geração do documento em diversos formatos, como HTML e PDF. Ele recebe um documento XML de entrada e é capaz de convertê-lo para o formato de saída solicitado. 5.3 Pacote Conhecimento.documentacao Como já citado no capítulo 4, este pacote descreve o conhecimento em relação ao domínio de documentação, ou seja, as classes derivadas da ontologia de documentos (Figura 2.3). A seguir cada um dos cinco componentes da arquitetura é descrito para esse pacote. 5.3.1 Pacote cdp A Figura 5.4 apresenta o Diagrama de Classe referente ao Componente do Domínio do Problema do pacote Conhecimento.documentacao. 43 Figura 5.4 - Pacote Conhecimento.documentacao.cdp Em relação ao modelo de análise, este modelo contém as navegabilidades e os tipos de dados, importantes no modelo de projeto. Outras modificações foram feitas, a saber: • Adição do atributo ordem à classe KModeloSecao, garantindo que a ordem seja mantida após a recuperação a partir do SGBD. Esse atributo foi adicionado para implementar a restrição ordenado que havia no modelo de análise. • Herança da classe ObjetoPersistente, feita para auxiliar a persistência. Essa superclasse adiciona os atributos id e version, responsáveis por manter a identidade do objeto e o controle de modificações concorrentes, respectivamente. • Alteração da multiplicidade entre KModeloSecao e KModeloDocumento. Na fase de projeto, é permitido que um KModeloSecao não possua um KModeloDocumento associado, quando for subseção de um outro KModeloSecao. Assim, somente os KModeloSecao que não possuem seção pai estão associados a um KModeloDocumento. 44 5.3.2 Pacote cgd A Figura 5.5 apresenta o modelo de classes referente ao Componente de Gerência de Dados ao pacote Conhecimento.documentacao. Ele foi definido utilizando-se o padrão de projeto DAO (SUN, 2007b). Figura 5.5 - Pacote Conhecimento.documentacao.cgd A herança da classe Hib3DAO não é opcional. Essa classe é responsável por disponibilizar o objeto Session, responsável por realizar as operações de persistência do Hibernate. Essa classe também disponibiliza alguns métodos auxiliares para facilitar a implementação das classes DAO, como salvar, excluir, obterPorId e obterTodos. 5.3.3 Pacote cgt A Figura 5.6 mostra o diagrama de classes do Componente de Gerência de Tarefas. Esse componente é responsável por implementar os casos de uso do sistema. A classe AplEditarModeloDocumento implementa o caso de uso Editar Modelo de Documento e, portanto, possui os métodos criarModeloDocumento, alterarModeloDocumento e excluirModeloDocumento que estão diretamente ligados aos cenários desse caso de uso, conforme 45 discutido na seção 3.1. O método buscarModeloDocumento é auxiliar, utilizado pela cci para obter uma lista de todos os modelos de documentos, de forma que o usuário possa selecionar o que ele deseja alterar ou excluir, no componente de visão. O método verificarPossibilidadeExclusaoModeloSecao é somente uma ponte para o método de igual nome na classe AplEditarModeloSecao. Seu acesso precisa ser exposto para ser acessado pelo controlador, conforme discutido na seção 5.3.5. Figura 5.6 - Pacote Ode.Conhecimento.Documentacao.Cgt O método excluirModeloDocumento pode disparar a exceção ModeloDocumentoEmUsoException, referente ao curso alternativo do cenário Excluir Modelo de Documento do caso de uso Editar Modelo de Documento. A classe AplEditarModeloSecao implementa o caso de uso Editar Modelo de Seção e, portanto, possui os métodos criarModeloSecao, alterarModeloSecao e excluirModeloSecao que estão diretamente ligados aos cenários desse caso de uso, conforme discutido na seção 3.1. O método verificarPossibilidadeExclusaoModeloSecao existe para verificar se é possível excluir um objeto KModeloSecao. De acordo com a especificação de requisitos, um modelo de seção pode ser excluído somente se não existe nenhuma seção associada a ele. Observando o diagrama de casos de uso da Figura 3.1, vemos uma extensão entre os casos de uso Editar Modelo de Seção e Editar Modelo de Documento. No projeto do cgt, essa extensão foi traduzida em uma associação entre as classes AplEditarModeloDocumento e AplEditarModeloSecao, que representam esses casos de uso. 46 5.3.4 Pacote cih O Componente de Interação Humana (cih) do pacote Conhecimento.documentacao é responsável por estabelecer uma comunicação entre o usuário e a máquina, na realização dos casos de uso. Figura 5.7 - Diagrama de classes do pacote ode.conhecimento.documentacao.cih Como pode ser observado pela Figura 5.7, o pacote cih possui duas janelas: uma janela de cadastro, classe JanCadastroModeloDocumento, que é responsável por apresentar uma lista dos modelos de documento (KModeloDocumento) disponíveis e uma janela onde os dados são apresentados e editados, classe JanDadosModeloDocumento. Ainda pelo diagrama pode ser visto o reúso de um componente de interface de ODE, o PainelCadastroTabela, que auxilia o usuário na seleção dos modelos de documento. A Figura 5.8 mostra o layout da janela JanCadastroModeloDocumento, enquanto que as Figuras 5.9 e 5.10 apresentam o layout da janela JanDadosModeloDocumento. 47 Figura 5.8 - Janela de seleção dos modelos de documentos Figura 5.9 - Janela de edição dos dados do modelo de documento 48 Figura 5.10 - Janela de edição dos dados do modelo de seção 5.3.5 Pacote cci O Componente de Controle de Interação (cci) tem como objetivo tratar a comunicação de dados entre as interfaces da ferramenta (cih) e as classes de aplicação (cgt), como mostra a Figura 5.11. 49 Figura 5.11 - Diagrama de classes do pacote ode.conhecimento.documentacao.cci A navegabilidade no CtrlConhecimentoDocumentacao sentido para da a classe classe controladora de aplicação AplEditarModeloDocumento permite que as funcionalidades da ferramenta também possam ser usadas por outras ferramentas do ambiente ODE e também permite que a ferramenta possua mais de um tipo de interface diferente, como swing e web. O controlador conhece todas as operações necessárias para atender às requisições das interfaces. Quando uma interface necessita de alguma funcionalidade da classe de aplicação, o controlador faz uma requisição à aplicação. Em seguida, esta retorna um resultado para o controlador que o interpreta e atualiza as interfaces, caso haja necessidade. Apesar dos métodos não estarem explícitos no diagrama da Figura 5.11, o controlador possui vários métodos, cujas principais funcionalidades são de atualização das interfaces e de requisições às aplicações. 50 5.4 Pacote Ode.documentacao Este pacote abriga a classe que representa artefatos do tipo documento, além das classes responsáveis pela formatação de documentos. A seguir cada um dos cinco componentes da arquitetura é descrito para esse pacote. 5.4.1 Pacote cdp A Figura 5.12 apresenta o diagrama de classe referente ao Componente do Domínio do Problema do pacote documentacao. Figura 5.12 - Pacote documentacao.cdp Em relação ao modelo de análise, este modelo contém as navegabilidades e os tipos de dados, importantes no modelo de projeto. Outras modificações foram feitas, a saber: • Herança da classe ObjetoPersistente, feita para auxiliar a persistência. Essa superclasse adiciona os atributos id e version, responsáveis por manter a identidade do objeto e o controle de modificações concorrentes, respectivamente. 51 • Classe Secao não possui mais a associação subsecao. A navegação através das seções, pela ordem e pela hierarquia deve ser feita através do modelo de seção (KModeloSecao) correspondente. Essa escolha permite que os modelos de seção (KModeloSecao) sejam reordenados ou tenham sua hierarquia alterada, sem a necessidade de se preocupar em reordenar as seções dos documentos (classe Secao). 5.4.2 Pacote cgd A Figura 5.13 apresenta o modelo de classes referente ao Componente de Gerência de Dados ao pacote documentacao. Ele foi definido utilizando-se o padrão de projeto DAO (SUN, 2007b) e as considerações feitas para o pacote Conhecimento.documentacao.cgd aplicam-se aqui também. Figura 5.13 - Pacote documentacao.cgd 5.4.3 Pacote cgt A Figura 5.14 mostra o digrama de classes do Componente de Gerência de Tarefas. Esse componente é responsável por implementar os casos de uso relativos à formatação e geração de documentos. Assim, as classes AplEditarDocumentoFormatado, AplEditarSecao e 52 AplGerarDocumentoFormatado correspondem aos casos de uso Editar Documento Formatado, Editar Seção e Gerar Documento Formatado, respectivamente. Os alterarDocumentoFormatado, métodos criarDocumentoFormatado, excluirDocumentosFormatado, criarSecao, alterarSecao, excluirSecao e gerarDocumento correspondem à implementação dos cenários dos seus respectivos casos de uso. Os demais métodos são auxiliares e análogos aos descritos no pacote Conhecimento.documentacao. Figura 5.14 - Pacote documentacao.cgt O método excluirDocumentoFormatado pode disparar a exceção DocumentoFormatadoEmUsoException, caso o documento formatado (DocumentoFormatado) seja corpo de uma seção. Observando o diagrama de casos de uso da Figura 3.1, vemos uma extensão entre os casos de uso Editar Seção e Editar Documento Formatado. No projeto do cgt, essa extensão foi traduzida em uma associação entre as classes AplEditarDocumentoFormatado e AplEditarSecao, que representam esses casos de uso. 5.4.4 Pacote cih O Componente de Interação Humana (cih) é responsável por estabelecer uma comunicação entre o usuário e a máquina, na realização dos casos de uso. 53 Figura 5.15 - Diagrama de classes do pacote documentacao.cih Como pode ser observado pela Figura 5.15, o pacote cih possui duas janelas: uma janela de cadastro, classe JanCadastroDocumentoFormatado, que é responsável por apresentar uma lista dos documentos formatados (DocumentoFormatado) disponíveis e uma janela onde os dados de um documento formatado selecionado são apresentados e editados, classe JanDadosDocumentoFormatado. A Figura 5.16 JanDadosDocumentoFormatado. mostra A o layout janela da de janela cadastro (JanCadastroDocumentoFormatado) possui layout análogo ao da janela da Figura 5.8. 54 Figura 5.16 - Janela de edição dos dados do documento formatado e das seções 5.4.5 Pacote cci O Componente de Controle de Interação (cci) tem como objetivo tratar a comunicação de dados entre as interfaces da ferramenta (cih) e as classes de aplicação (cgt), como mostra a Figura 5.17. 55 Figura 5.17 - Diagrama de classes do pacote ode.conhecimento.documentacao.cci Analogamente navegabilidade ao no pacote sentido CtrlEditarDocumentoFormatado para Conhecimento.documentacao.cci, da as classe classes a controladora de aplicação AplEditarDocumentoFormatado e AplGerarDocumentoFormato permite que as funcionalidades da ferramenta possam ser usadas por outras ferramentas do ambiente ODE. Além disso, também permite que a ferramenta possua mais de um tipo de interface diferente, como swing e web. Apesar dos métodos não estarem explícitos no diagrama da Figura 5.17, o controlador possui vários métodos, cujas principais funcionalidades são de atualização das interfaces e de requisições às aplicações. 56 5.5 Implementação A fase de implementação ocorre no instante em que as classes necessitam ser programadas, tomando-se por base o modelo de projeto. O sistema é concebido através da implementação, produzindo-se os arquivos de código fonte que resultarão em um sistema executável. Se o projeto foi elaborado corretamente e com detalhes suficientes, a tarefa de codificação é facilitada (RATTES, 2001). Poucos diagramas adicionais são criados na fase de implementação. Na verdade, os diagramas criados na fase de projeto são detalhados ou corrigidos quando necessário (FURLAN, 1998). Como já havia uma experiência nas ferramentas utilizadas para construção deste trabalho e as decisões de projeto eram, sempre que possível, prototipadas, nenhuma modificação do modelo de projeto para a implementação foi feita. O caso de uso mais complexo de ser implementado foi o Gerar Documento Formatado, pois envolve a geração de documentos em formatos diferentes e requer a navegação ao longo dos modelos das subclasses de Documento. Os demais casos de uso são apenas cadastros. Assim, na seção 5.5.1 detalha-se como foi realizada a implementação desse caso de uso. 5.5.1 Gerar Documento Formatado A implementação deste caso de uso consiste em transformar o modelo de documento, juntamente com os modelos de seção e as marcações nos corpos texto, preâmbulo e títulos, em um arquivo de documento em múltiplos formatos, utilizando as informações de um objeto da classe Documento. A dificuldade para implementar uma substituição de texto para as marcações existe porque que não conhecemos nada sobre as subclasses de Documento, que é utilizada para realizar a documentação. Assim, para combinar as informações de um objeto da classe Documento com os textos marcados, foi necessário utilizar uma linguagem de script que fosse capaz de processar as marcações no texto que referenciavam os elementos do 57 documento de uma forma dinâmica. O Jelly é o executor de script responsável por transformar as marcações no corpo de texto do modelo de seção, título do modelo de seção, corpo preâmbulo e título do modelo de documento na informação supostamente desejada no objeto a ser documentado da classe Documento. O principal motivo para escolha do Jelly como framework para executar o script é porque ele pode ser facilmente extensível e sua linguagem é baseada em marcações XML, o que facilita a analise e a edição dos textos que serão processados. Contudo a solução oferecida pelo Jelly para realizar a substituição das marcações ainda é muito simples para atender aos requisitos deste trabalho. Assim, foi necessário estender sua funcionalidade implementando o que o framework chama de taglibs, que nada mais é que uma tag XML (a especificação de XML chama de Element (W3C, 2007a)), cujo conteúdo será processado por uma classe Java. A implementação da taglib consiste em ser capaz de realizar uma substituição simples, como o nome do projeto, ou de repetir uma seção ou lista, caso os elementos da marcação contenham listas. Para facilitar a compreensão, imagine que o gerente de documentação deseja imprimir uma subseção para cada equipe do projeto. Neste caso, o título deverá conter o texto abaixo: Equipe <o:doc>projeto.equipes.tipo<o:doc> O conteúdo projeto.equipes é uma lista e indica que esta seção deverá ser repetida para cada elemento da lista de equipes do projeto. Assim, serão geradas tantas seções quanto forem as equipes do projeto. Cada referência projeto.equipes.tipo está associada ao tipo de uma equipe específica no título do modelo de seção. A mesma regra vale para listas, numeradas ou não. Caso a referência seja de um objeto da classe Diagrama, o desenho correspondente (DDiagrama) será chamado para renderizar a imagem. Após substituir todas as marcações do texto, um arquivo XML é gerado em um formato muito parecido com o XHTML (W3C, 2007b). Porém, ainda é necessário gerar o arquivo de saída no formato selecionado pelo ator desenvolvedor. Para isto o framework AurigaDoc foi utilizado. Basta gerar o documento em um formato XML especificado por esse framework, que ele é 58 capaz de gerar os documentos nos mais diversos formatos, sendo possível adicionar um novo formato caso seja necessário. O arquivo gerado após o processamento do Jelly ainda não esta no formato requerido pelo AurigaDoc. Para gerar o formato requerido, uma folha de estilos (W3C, 2007c) é aplicada no XML de saída para convertê-lo. A partir daí, o processo fica por conta do framework AurigaDoc que se encarrega de gerar o arquivo final nos formatos de saída desejados. Para realizar essa tarefa, o AurigaDoc possui um driver para cada formato de saída suportado. A maioria dos drivers consiste de uma folha de estilo que converte o formato do AurigaDoc no formato desejado, como a geração para HTML ou DHTML. A geração para os formatos RTF e PDF é mais complexa, pois esses formatos não são XML. Neste caso o documento enviado para o AurigaDoc é convertido para o formato XSL-FO (W3C, 2007c) e convertido para PDF ou RTF através do Apache FOP (APACHE, 2007b). 5.6 Testes O teste do software é um processo realizado pelo testador de software que permeia outros processos da Engenharia de Software e envolve ações que vão do levantamento de requisitos até a execução do teste propriamente dito. O objetivo é encontrar defeitos nos produtos, para que estes possam ser corrigidos pela equipe de programadores. No contexto deste trabalho, além dos testes realizados pelo desenvolvedor, testes automatizados foram criados. A vantagem de se criar testes automatizados é poder sempre garantir que um caso de uso estará sempre atendendo aos requisitos para o qual foi projetado, embora não assegure que a equipe de desenvolvimento tenha entendido corretamente o requisito. Assim, quando uma manutenção é feita no sistema, basta executar o caso de teste para assegurar que as outras funcionalidades continuam funcionando. Já após o levantamento dos requisitos, ficam claros os casos de testes abaixo: 59 • Testar a criação de um modelo de documento e seus modelos de seção; • Testar a alteração de um modelo de documento e seus modelos de seção; • Testar a pesquisa de modelos de documentos criados; • Testar a exclusão de um modelo de documento e seus modelos de seção; • Testar a exclusão de um modelo de documento que está em uso por um documento; • Testar a criação de um documento formatado; • Testar a alteração de um documento formatado; • Testar a pesquisa de documentos formatados criados; • Testar a exclusão de um documento formatado; • Testar a exclusão de uma seção associada a modelo de seção obrigatório ou não; • Gerar documento formatado; Para facilitar a automatização dos testes foi utilizado um framework de testes unitários conhecido como JUnit (SOURCEFORGE, 2007b), na versão 3.8. O critério de escolha foi baseado na experiência anterior com esse framework, facilitadade de integração dele com a IDE utilizada para o desenvolvimento da ferramenta de documentação e no tamanho da comunidade que já utilizou o framework. A desvantagem de utilizar o JUnit neste contexto é que alguns testes não são necessáriamente unitários, pois envolvem persistencia de dados ou dependem de insumos produzidos por outras ferramentas. Observe o exemplo dos testes de geração do documento formatado. É necessário ter instâncias das classes Documento e DocumentoFormatado no sistema de persistencia, ou escrever um código para gerá-las, dentro do caso de testes, o que pode ser bastante complexo dependendo o modelo. Neste caso optou-se por assumir que a base estivesse populada com alguns objetos que seriam pesquisados e utilizados para a execução do caso de testes. Com o uso do JUnit já no início da fase de implementação, foi possível testar rapidamente tudo o que era produzido, sem a necessidade de aguardar 60 pela criação da interface gráfica com o usuário, permitindo ao desenvolvimento caminhar de forma independente da confecção das interfaces. Isto é muito útil em organizações onde as equipes de implementação e a equipe de design são diferentes. 61 Capítulo 6 - Conclusões e Perspectivas Futuras Neste capítulo são apresentadas as considerações finais deste trabalho. Na seção 6.1 são apresentadas as conclusões e na seção 6.2 as perspectivas para trabalhos futuros. 6.1 Conclusões Mesmo que não seja negligenciada a atividade de documentação de software, a manutenção, muitas vezes, é, tornando a documentação existente desatualizada, podendo, assim, atrapalhar mais do que ajudar na identificação dos requisitos e entendimento do sistema. Com este trabalho espera-se auxiliar o processo de geração de documentos nos projetos acompanhados através do ADS ODE. A documentação gerada a partir de modelos de documentos é automaticamente atualizada quando qualquer um dos objetos é modificado, reduzindo o esforço necessário de atualização e também permitindo maior integração entre as ferramentas de ODE, uma vez que a geração da documentação passa a ser um processo único em ODE. Além de complementar o ADS ODE, o desenvolvimento deste trabalho permitiu consolidar os conhecimentos adquiridos durante o curso de Ciência da Computação da Universidade Federal do Espírito Santo, principalmente na área de engenharia de software. 6.2 Perspectivas futuras Mesmo atingindo o objetivo proposto, sempre é possível melhorar. Abaixo temos uma lista de melhorias que podem ser feitas para auxiliar ainda mais a geração de documentos em ODE: • Este trabalho fornece a base para a criação de artefatos internos do tipo documentos no ambiente ODE. Porém, para permitir uma melhor utilização dele no ambiente como um todo, é importante 62 que o máximo de ferramentas sejam capazes de produzir artefatos, como sub-classes da classe Documento. • Facilitar a criação do modelo de documento também é uma importante melhoria para este trabalho. Atualmente ele está diretamente ligado ao modelo de projeto de ODE, ou seja, é necessário que o gerente de documentação tenha uma visão da modelagem de dados interna de ODE. Juntamente a este item, pode-se acrescentar uma melhora na interface, para torná-la mais intuitiva. • A geração de elementos mais complexos também é importante. Gerar uma tabela, por exemplo, com valores obtidos dos documentos não é uma tarefa fácil de ser feita no estágio atual da ferramenta. 63 REFERÊNCIAS BIBLIOGRÁFICAS (AMBLER, 1998) AMBLER, Scott. Análise e Projeto Orientados a Objetos – Vol. 2. Rio de Janeiro: Infobook, 1998. (AMBLER, 2004) AMBLER, Scott W. Agile Documentation. 20012004, The Official Agile Modeling (AM) Site, 2001, Disponível em : <http://www.agilemodeling.com/essays/ agileDocumentation.htm>, Acesso em: 02 abr. 2001. (APACHE, 2007a) Apache Software Executable Foundation XML. (Org.). Disponível Jelly: em: <http://commons.apache.org/jelly/>. Acesso em: 24 set. 2007. (APACHE, 2007b) Apache Software Foundation (Org.). Apache FOP. Disponível em: <http://xmlgraphics.apache.org/fop/>. Acesso em: 24 set. 2007. (BERTOLLO, 2006) BERTOLLO, G., “Definição de Processos em um Ambiente de Desenvolvimento de Software”. Dissertação de Mestrado, Mestrado em Informática, UFES, Vitória, Junho 2006. (FALBO, 2000) Projeto de Sistemas - Notas de Aula, Departamento de Informática, UFES, 2000. 64 (FALBO et al., 2002) FALBO, R.A.; GUIZZARDI, G.; DUARTE, K.C.; “An Ontological Approach do Domain Engineering”. Proceedings of the 14th International Conference on Software Engineering and Knownledge Engineering, SEKE’2002, pp.351-358, Ischia, Italy, 2002. (FALBO et al., 2003) FALBO, R. A., NATALI, A. C. C., MIAN, P. G., BERTOLO, G., RUY, F. B., “ODE: Ontology-based software Development Environment”. IX Congreso Argentino de Ciencias de la Computación, p. 11241135. La Plata, Argentina, Outubro de 2003. (FALBO et al., 2004) FALBO, R.A., RUY, F.B., PEZZIN, J., DAL MORO, R., “Ontologias e Ambientes de Desenvolvimento de Software Semânticos”. 4th Ibero-American Symposium on Software Engineering and Knowledge Engineering, JIISIC’2004, Vol. I, 277292, Madrid, Spain, November 2004. (FORWARD, 2002) FORWARD, Andrew. Software Documentation – Building and Maintaining Artefacts of Comunication, 2002. Teste de Mestrado, Universidade de Ottawa, Ottawa, Toronto, Canadá. (FURLAN, 1998) FURLAN, José Davi. Modelagem de Objetos através da UML. São Paulo: Makron Books, 1998. (ISO, 1999) ISO/IEC 9126-1, Information technology – software product quality – Part 1: quality model, 1999. (HIBERNATE, 2007) HIBERNATE (Org.). Hibernate. Disponível em: <http://www.hibernate.org>. Acesso em: 18 jun. 2007. 65 (MIAN et al., 2001) MIAN, P. G.; NATALI, A. C. C.; FALBO, R. A.. Ambientes de Desenvolvimento de Software e o Projeto ADS. Revista Engenharia Ciência Tecnologia, Vitória, ES, v. 04, n. 04, p. 3-10, 2001. (NARDI, 2003) NARDI, J.C., “Modelagem de Estados em OODE Segundo o Meta-Modelo da UML”. Projeto de Graduação, Curso de Ciência da Computação, UFES, Novembro 2003. (NUNES et al., 2004) NUNES, V.B.; SOARES, A.O.; FALBO, R.A. “Apoio à Documentação em um ambiente de desenvolvimento de Software”, Memorias de VII Workshop Iberoamericano de Ingeniería de Requisitos y Desarrollo de Ambientes de Software IDEAS'2004, pp. 50-55, Arequipa, Peru, 2004. (NUNES, 2005) NUNES, B.V., Configuração de “Integrando Software, Gerência de Documentação e Gerência de Conhecimento em um Ambiente de Desenvolvimento de Software”. Dissertação de Mestrado, UFES, Vitória, Brasil, 2005. (PRESSMAN, 2002) PRESSMAN, Roger S. Engenharia de Software. 5º edição. Rio de Janeiro: McGrawHill, 2002. (RATTES, 2001) RATTES, Pablo Damasceno. CASE para Tecnologia de Objetos: Suporte à Modelagem de Classes e Estados, Projeto de Graduação, Curso de Ciência da Computação. Espírito Santo: UFES, Abril 2001. (RUY, 2006) RUY, F.B., “Semântica em um Ambiente de Desenvolvimento de Software”. Dissertação de Mestrado, Mestrado em Informática, UFES, Vitória, Junho 2006. 66 (SEI, 2007) SOFTWARE ENGINEERING INSTITUTE (Org.). What is a CASE Environment? Disponível em: <http://www.sei.cmu.edu/legacy/case/case_whatis. html>. Acesso em: 04 fev. 2007. (SILVA, 2004) SILVA, P.B., “Adequação da Ferramenta de Documentação de ODE a uma Ontologia de Artefato”. Projeto de Graduação, Curso de Ciência da Computação, UFES, Dezembro 2004. (SOARES, 2002) SOARES, A.O., “Ferramenta de Apoio à Documentação”. Projeto de Graduação, Curso Ciência da Computação, UFES. (SOURCEFORGE, 2007a) SOURCEFORGE.NET (Org.). AurigaDoc. Disponível em: <http://aurigadoc.sourceforge.net/>. Acesso em: 24 set. 2007. (SOURCEFORGE, 2007b) SOURCEFORGE.NET (Org.). JUnit. Disponível em: <http://junit.sourceforge.net/>. Acesso em: 24 set. 2007. (SUN, 2007a) SUN MICROSYSTEMS Controller. J2EE (Inc.). Patterns. Model-View- Disponível em: <http://java.sun.com/blueprints/patterns/MVCdetailed.html>. Acesso em: 07 maio 2007. (SUN, 2007b) SUN MICROSYSTEMS (Org.). Data Access Object. Disponível em: <http://java.sun.com/blueprints/corej2eepatterns/Pa tterns/DataAccessObject.html>. Acesso em: 07 maio 2007. (SUN, 2007c) SUN MICROSYSTEMS (Org.). JavaServer Pages Standard Tag Library. Disponível em: < http://java.sun.com/products/jsp/jstl/>. Acesso em: 01 outubro 2007. 67 (THOMAS et al., 1992) THOMAS I., NEJMEH, B.A. “Definitions of Tool Integration for Environments”, IEEE Software, 2935, March 1992. (W3C, 2007a) W3C.ORG (Org.). Extensible Markup Language (XML) 1.0 (Fourth Edition). Disponível em: < http://www.w3.org/TR/REC-xml/>. Acesso em: 24 set. 2007. (W3C, 2007b) W3C.ORG (Org.). XHTML™ 1.0 The Extensible HyperText Markup Language (Second Edition). Disponível em: < http://www.w3.org/TR/xhtml1/>. Acesso em: 24 set. 2007. (W3C, 2007c) W3C.ORG (Org.). Extensible Stylesheet Language (XSL) Version 1.1. Disponível em: < http://www.w3.org/TR/xsl11>. Acesso em: 24 set. 2007. (XAVIER, 1995) XAVIER, Carlos Magno da S., Portilho., C. Projetando com Qualidade a Tecnologia em Sistemas de Informação. LTC Editora, 1995; 68