Uma Ontologia para Engenharia de Requisitos de Software Autor: Raul de Abreu Medeiros Júnior Orientadores: Arnaldo Dias Belchior Co-orientador: Pedro Porfírio Muniz Farias Nível: Mestrado Programa de pós-graduação : Mestrado em Informática Aplicada – MIA da Universidade de Fortaleza - UNIFOR E-mail de contato do aluno : medeiros_raul@ yahoo.com.br E-mail de contato dos orientadores : [email protected] E-mail de contato do co-orientador: porfí[email protected] Ano de ingresso no programa : 2003 Época prevista de conclusão : Março de 2005 Proposta de dissertação aprovada em: esta atividade não existe formalmente na UNIFOR. Resumo Experiências reais e pesquisas mostram que um mau entendimento dos requisitos poderá levar a inúmeros problemas no processo de desenvolvimento de software. Este trabalho objetiva contribuir no esforço de redução desses problemas, a partir da proposição de uma ontologia de engenharia de requisitos. Para isto, pretendemos utilizar ferramentas de inferência em ontologia, para dar suporte à gerência desses requisitos ao longo do processo de desenvolvimento de software. Palavras chaves: Engenharia de Requisitos, Ontologia. 1. Caracterização do Problema Apesar de hoje desenvolvermos mais software e produtos de software cada vez mais sofisticados é também verdade que problemas no processo de desenvolvimento ainda continuam trazendo enormes prejuízos para os envolvidos. Uma questão central a alguns dos problemas decorrentes de falhas no processo de produção ou manutenção de software está o fato da precariedade dos processos de produção empregados, principalmente pela não observância de princípios da engenharia de requisitos. A engenharia de software associa a palavra “requisitos” como o início da produção de software. Um produto de software deverá ser construído de acordo com seus requisitos. Experiências reais e pesquisas mostram que um mau entendimento dos requisitos tem levado a inúmeros problemas no processo de desenvolvimento do software [10]. É uma boa prática em engenharia de software que investimentos na engenharia de requisitos sejam justificados como uma forma de evitar problemas futuros, ou mudanças ao longo do processo de desenvolvimento. Uma farta quantidade de pesquisas estatísticas sempre tem revelado que corrigir um erro no início do processo de desenvolvimento é bem mais barato do que corrigir esse mesmo erro depois. Os números variam de 1 para 20 e até 1 para 200 dependendo do tipo de produto considerado. Existem também vários estudos relatando que uma grande quantidade dos erros de desenvolvimento é devido a um mau entendimento dos requisitos. Naturalmente, um dos principais objetivos da engenharia de requisitos é construir requisitos de fácil entendimento tanto para quem os solicitaram, quanto para os desenvolvedores [9]. Para auxiliar no entendimento dos requisitos entre as duas partes (clientes e desenvolvedores), este trabalho propõe a utilização de uma ontologia para a engenharia de requisitos de software. Uma ontologia é uma especificação de uma conceituação, isto é, uma descrição de conceitos e relações que existem em um domínio de interesse. Basicamente, uma ontologia consiste de conceitos, relações, definições, propriedades, e restrições descritos na forma de axiomas [3]. As ontologias são úteis para apoiar a especificação e a implementação de qualquer sistema de computação complexo. Elas podem ajudar os envolvidos a compreenderem melhor uma certa área de conhecimento, apoiar as pessoas a alcançarem um consenso no entendimento sobre uma dada área de conhecimento [3]. Neste trabalho, pretendemos elaborar uma ontologia para engenharia de requisitos de software, que possa vir a facilitar a compreensão de seus conceitos. Isto poderá auxiliar na detecção de redundância, inconsistências de requisitos ou falhas no processo de engenharia de requisitos. 2. Fundamentação Teórica 2.1 Engenharia de Requisitos de Software A engenharia de requisitos de software é uma área recente; contudo, tem-se desenvolvido muito rapidamente. Em 1993, no primeiro Simpósio Internacional de Requisitos promovido pela IEEE, foram delimitadas as fronteira entre a engenharia de requisitos e as demais atividades de engenharia de software. Em particular, a comunidade científica visualizou a engenharia de requisitos como um tópico de pesquisa, como a modelagem e a análise [9]. Atualmente, várias abordagens que tratam da qualidade de processos de software, enfatizam o gerenciamento de requisitos como uma etapa importante do processo de construção de software. O CMMI [2], por exemplo, define duas áreas de processo para requisitos. Uma área de processo é um conjunto das práticas relacionadas entre si que, quando executadas coletivamente, satisfazem a um conjunto de objetivos considerados importantes para a sua operacionalização. A primeira área, que pertence ao nível dois de maturidade (abordagem por estágio), é a Gerência dos Requisitos com a finalidade de controlar os requisitos do projeto e do produto de software, além de identificar inconsistências entre requisitos e planos de projeto. A segunda, que pertence ao nível três de maturidade, é o Desenvolvimento dos Requisitos com o objetivo de produzir e analisar requisitos do cliente, do produto e dos componentes do produto. A ISO 9001 [8] recomenda que se deve assegurar que os requisitos do cliente sejam determinados e atendidos com o propósito de aumentar a satisfação do mesmo. Para facilitar um gerenciamento eficaz dos requisitos, é essencial que quaisquer mudanças acordadas nesses requisitos sejam simultaneamente comunicadas a todos os envolvidos. 2.2. Ontologia A palavra ontologia vem do grego ontos (ser) + logos (palavra). Ela foi introduzida na filosofia no século XIX, por filósofos alemães para distinguir o estudo do ser do estudo dos vários tipos de seres na ciência natural. Como uma disciplina da filosofia, uma ontologia construída tem a preocupação de prover categorias de sistemas, que agreguem uma certa visão do mundo. Na ciência da computação, ontologias têm sido desenvolvidas na inteligência artificial, para facilitar o compartilhamento de conhecimento e seu reuso. Atualmente, elas estão começando a se expandir em outras áreas como a integração inteligente de informação, sistemas cooperativos, produtos de software baseados em agentes, e no comercio eletrônico [1]. Uma das definições mais citadas para ontologia é dada por Gruber [5]: “Uma ontologia é uma especificação formal e explícita para um conceito compartilhado”. Neste contexto, padrões de conceituação para um modelo abstrato são meios explícitos em que os elementos são claramente definidos e, ultimamente, meios formais que podem ser processados por máquinas. Grunninger [7] relata, entre outras questões, a possibilidade do uso de ontologias para comunicação entre homens e sistemas computacionais, para inferência computacional e para o reuso e organização de conhecimento [1]. No contexto de ontologias, existem alguns padrões entre eles a OWL (Web Ontology Language) [16], que é uma linguagem para definição e instanciação de ontologias Web. Ela foi criada pela W3C com o intuito de facilitar as buscas semânticas na Web. Uma ontologia escrita em OWL deve incluir as descrições de classes, propriedades e suas instâncias. A semântica formal da OWL especifica como derivar, a partir de seqüências lógicas, fatos não literais presentes na ontologia, mas ligados pela semântica. Estes relacionamentos podem ser baseados em um simples documento ou em múltiplos documentos distribuídos que são combinados usando os mecanismos nela definidos. O desenvolvimento de ontologias, parece ser mais uma arte que uma ciência [18]. Até agora, grupos de pesquisadores estão tentando resolver este problema desenvolvendo metodologias para o desenvolvimento das mesmas. Gruninger e Fox [6] propuseram a metodologia TOVE (Toronto Virtual Enterprise). Essa metodologia foi derivada da experiência dos autores no laboratório de integração (Enterprise Integration Laboratory) para desenvolvimento e evolução de ontologias integradas. Eles usaram cenários de motivação para descrever problemas ou exemplos os quais não eram adequadamente referenciados por ontologias existentes. Os cenários de motivação fornecem um conjunto intuitivo de possíveis soluções para os problemas encontrados. Estes dão a primeira idéia da semântica pretendida para objetos e seus relacionamentos, que irão depois ser inseridos na ontologia. Noy e McGuiness [13] propuseram uma outra metodologia, que chamaram de uma simples metodologia de engenharia do conhecimento. Eles criaram um guia com suas experiências com o Protégé-2000 [14]. 3. Metodologia de Trabalho e Estado Atual do Trabalho A metodologia para realização desta dissertação envolve as seguintes fases: • Revisão bibliográfica; • Definição de uma ontologia para engenharia de requisitos de software escrita em OWL, utilizando métodos e técnicas de criação de ontologia. Nesta fase, usaremos como base à literatura de requisitos; • Validação da ontologia junto a especialistas; • Realização de estudo de caso; • Análise dos resultados; • Conclusão do trabalho. 4. Trabalhos Relacionados Em [15] é defendido o uso do conhecimento do domínio durante o desenvolvimento de software para tornar o processo de desenvolvimento mais fácil e melhorar a produtividade. Para apoiar esta idéia, foram definidos os Ambientes de Desenvolvimento de Software Orientados a Domínio (ADSOD). Esses ambientes tornam disponível o conhecimento sobre o domínio numa representação simbólica, utilizando ontologias do domínio e a identificação de possíveis tarefas realizadas no domínio em questão. Ferramentas específicas do domínio introduzidas no ambiente definem o uso desse conhecimento em um processo de software bem definido. É apresentado um modelo para construção de ADSOD baseado nestas características, juntamente com um ADSOD para o Domínio de Cardiologia construído usando este modelo. Em [3] é apresentado uma ontologia de qualidade de software com o objetivo de apoiar a compreensão de terminologias e conceitos de qualidade de software, que é um domínio complexo. Esta ontologia é usada como uma base para o entendimento comum sobre conceitos de qualidade de software em um tutorial. Em [1] são inspecionados os princípios básicos do comportamento de ontologias e como elas têm sido usadas na comunidade de Web Semântica. É focado no processo de construção de ontologias centradas no conceito de linguagem de aplicações. Este conceito é fixado em um esquema de representação chamado “language extended lexicon” (LEL). Em [17] é proposto um framework combinando vários formalismos de engenharia de requisitos em um sistema de manufatura. Ele tem como objetivo mostrar os benefícios de integrá-los na base dos requisitos. Em [12] são apresentados e especificados os principais conceitos e relações de uma ontologia para métricas e indicadores de software baseada principalmente em conceitos da ISO, entre outros padrões. Ela é útil para dar suporte a diferentes processos de qualidade, métodos e ferramentas que servem como fundamentação para diversos indicadores e métricas. Atualmente, este trabalho está evoluindo, para a sua re-implementação em OWL. Em [4] foi discutido como a engenharia de requisitos pode auxiliar o processo de criação de ontologias. Foi introduzida uma ferramenta que automatiza o processo de geração de ontologias baseadas na LAL (Léxico Ampliado da Linguagem) [11], que é um hiperdocumento que descreve os símbolos de um Universo de Informação. Esse universo é utilizado para facilitar a comunicação e a compreensão de palavras ou frases peculiares entre as pessoas envolvidas no desenvolvimento de um software. 5. Resultados Esperados Este trabalho objetiva construir e validar uma ontologia para a engenharia de requisitos de software. Assim sendo, esperamos contribuir no processo de elaboração de requisitos de forma mais clara e objetiva, tanto para o cliente como para os desenvolvedores, facilitando a documentação, aumentando a confiabilidade, e melhorando a manutenção do produto de software. Referências Bibliográficas 1 Breitman, Karin K.; Leite, Júlio C. S. P.; “Ontology as a Requirements Engineering Product”; 11th IEEE International Requirements Engineering Conference; 2003. 2 Capability Maturity Model® Integration, Software Engineering Institute, Version 1.1. Carnegie Mellon. Pittsburgh; 2002. 3 Duarte, Katia C.; Falbo, Ricardo A.; “Uma Ontologia de Qualidade de Software”; Anais do VII Workshop de Qualidade de Software, XIV Simpósio Brasileiro de Engenharia de Software, João Pessoa; 2000. 4 Felicíssimo, Carolina H.; Silva, Lyrene F.; Breitman, Karin K.; Leite, Júlio S. P.; “Geração de Ontologias subsidiada pela Engenharia de Requisitos”; novembro de 2003. 5 Gruber, Thomas R.; “A Translation Approach to Portable Ontology Specifications”, Knowledge Acquisiton – 5: 199:200. 1993 6 Gruninger, Michael, Fox, Mark S.; “Methodology for Design and Evaluation of Ontologies”, Proceedings of Workshop on basic Ontological Issues in Knowledge Sharing – Canada, 1995. 7 Gruninger, Michael; Lee, Jintae; Introcução da seção “Ontology Application and Design”; Communication ACM, February, 2002. 8 NBR ISO 9001:2000, “Sistemas de gestão da qualidade – Requisitos”. 9 Leite, Júlio C. S. P.; Doorn, Jorge H.; “Perspectives on Software Requirements”. Kluwer Academic Press, ISBN: 1-4020-7625-8; 2003. 10 Leite, J., Castro, J., Pinheiro, F., 2004, Plataforma Tecnológica em Engenharia de Requisitos – Estratégias para o Aumento da Qualidade no Desenvolvimento de Sistemas. http://www.cic.unb.br/~facp/per/perhome.html. Acessado em março de 2004. 11 Leite, Júlio C. S. P.; Franco, Ana P. M.; “A Strategy for Conceptual Model Acquisition. First”; International Symposium on Requirements Engineering. Proceedings. IEEE Computer Society Press. pp. 243-246; 1993. 12 Martin, Maria A.; Olsina, Luis; “Towards an Ontology for Software Metrics and Indicators as the Foundation for a Cataloging Web System”; First Latin American Web Congress; novembro de 2003. 13 Noy, Natalya F.; McGuinness, Deborah L.; “Ontology Devepment 1001: A Guide to Creating Your First Ontology”; KSL Techinical Report, Standford University, 2001. 14 Noy, Natalya. F.; Sintek, Michael; Decker, Stefan; Crubezy, Monica; Fergerson, Ray W.; Musen, Mark A; “Creating Semantic Web Contents with Protege-2000”. IEEE Intelligent Systems 16(2): 60-71; 2001. 15 Oliveira, Káthia M.; “Modelo para Construção de Ambientes de Desenvolvimento de Software Orientados a Domínio”; Tese Doutorado, 1999. 16 W3C; 2004, “Web Ontology Language”; http://www.w3c.org/TR/2004/REC-owlfeatures-20040210/. Acessado em março de 2004. 17 Petit, Michaël; Dubois, Eric; “Defining an Ontology for the Formal Requirements Engineering of Manufacturing Systems”; FUNDP; 1997. 18 Ushold, Mike; Gruninger, Michael; “Ontologies: Principles, Methods and Applications”. Knowledge Engineering Review, Vol. 11, No. 2, pp.93-136; 1996.