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.
Download

Uma Ontologia para Engenharia de Requisitos de Software