Estudo de Ontologias em Engenharia de Software Felipe Pinheiro de Souza, Francisco de Assis Zampirolli, Edson Pinheiro Pimentel e Maria das Graças Bruno Marietto Um Ambiente de Desenvolvimento de Software (ADS) é um conjunto de ferramentas CASE integradas que apóia todo o ciclo de vida de software, facilitando a realização de atividades de engenharia de software. Neste resumo, é apresentado o Ambiente de Desenvolvimento de Software Web Semântico, um ADS que irá utilizar ontologias, inicialmente durante a etapa de requisitos, para garantir que o conteúdo esteja bem estruturado e para auxiliar na funcionalidade de geração automática de código. Palavras-chave — Ontologias em Engenharia de Software, Engenharia de Software, Geração Automática de Código e Documento, XML, MDA. I. INTRODUÇÃO N o desenvolvimento de um software é crucial o suporte de ferramentas eficientes, pois estas influenciam diretamente no tempo de desenvolvimento do software, no seu custo e na qualidade do produto desenvolvido [1]. Apesar disso, essas ferramentas geralmente são isoladas, não sendo capazes de compartilhar serviços ou dados. Para atingir seu real potencial elas precisam estar integradas, pois seu uso individual traz apenas benefícios em atividades diferentes [2]. Um Ambiente de Desenvolvimento de Software (ADS) é um conjunto dessas ferramentas de suporte integradas que apóia todo o ciclo de vida de software, facilitando a realização de atividades de engenharia de software [1]. Durante o desenvolvimento de um software, muitas informações são produzidas e requeridas e, muitas vezes, é essencial estabelecer conexões entre recursos de informação para se obter o conjunto necessário de informações para apoiar a realização de alguma atividade [3]. Para desempenhar este papel podemos usar ontologias. Uma ontologia define um vocabulário específico usado para descrever certa realidade, mais um conjunto de decisões explícitas fixando de forma rigorosa o significado pretendido para o vocabulário. Então, uma ontologia envolve um vocabulário de representação que captura os conceitos e relações em algum domínio e um conjunto de axiomas, que restringem a sua interpretação [3]. Nos últimos anos, surgiram diversos trabalhos relacionados a ontologias em diferentes áreas da computação, motivados, sobretudo, pelo crescente interesse na Web Semântica (Semantic Web) [4]. Elas são usadas basicamente como uma forma de representação de conhecimento sobre determinado(s) elemento(s) de algum contexto. O Ambiente de Desenvolvimento de Software Web Semântico tem como objetivo criar e manipular uma base de dados onde o conteúdo, armazenado em XML, representa artefatos produzidos no ciclo de vida de desenvolvimento de software seguindo um padrão de documentação. Este padrão segue os princípios de Engenharia de Software, possibilitando o uso de vários processos e recursos como geração automática de código e documento (seguindo conceitos de MDA), além de rastreabilidade de requisitos. Para garantir que o conteúdo esteja bem estruturado serão utilizadas Ontologias, que trarão diversos benefícios principalmente na especificação de requisitos. Como resultados deste ambiente, podemos ter várias facilidades para o desenvolvimento de software e uma documentação completa, disponibilizando para consulta um portfólio de projetos seguindo este padrão de desenvolvimento. Esta metodologia de desenvolvimento de software pode ser usada para auxiliar os projetos desenvolvidos em cursos de graduação. Outra expectativa no desenvolvimento do Ambiente de Desenvolvimento de Software Web Semântico é encorajar o surgimento de novos projetos de software livre, ao disponibilizar recomendações para o desenvolvimento de projetos. Deve-se destacar que o Ambiente de Desenvolvimento de Software Web Semântico será especificado com foco na utilização de padrões abertos e na independência de plataforma, aumentando assim a liberdade do usuário na sua utilização. Devidamente aperfeiçoado, o Ambiente de Desenvolvimento de Software Web Semântico pode ser considerado um “gerenciador de informações”, isto é, uma ferramenta que permite o acesso comum à informação. Porém, com os devidos “ajustes”, se o retorno das respostas for o “mais próximo” da consulta é possível utilizar o Ambiente para o chamado “reuso do conhecimento” dedicado à construção de softwares. Com o auxilio de Ontologias características como a interoperabilidade, comunicação e coordenação, estarão presentes no Ambiente de Desenvolvimento de Software Web Semântico. A qualidade da informação contida no Ambiente de Desenvolvimento de Software Web Semântico também será afetada pelo uso de Ontologias, que garantem estrutura ao conteúdo e isso auxilia na compreensão, manipulação e reutilização das informações. Este trabalho está dividido da seguinte maneira: a segunda seção apresenta o Ambiente de Desenvolvimento de Software e explica como a partir dele será implementado o Ambiente de Desenvolvimento de Software Web Semântico, a terceira seção apresenta alguns trabalhos semelhantes à proposta do Ambiente de Desenvolvimento de Software, a quarta seção explica a proposta inicial do Ambiente de Desenvolvimento de Software Web Semântico e por fim a quinta seção apresenta a conclusão do trabalho. II. MATERIAIS E MÉTODOS O Ambiente de Desenvolvimento de Software (ADS) é descrito em [9] e, a partir do ADS, será implementado o Ambiente de Desenvolvimento de Software Web Semântico. A arquitetura do Ambiente de Desenvolvimento de Software Web Semântico será similar a do ADS, que será a exemplificada abaixo para demonstração do que será esperado como resultado. A arquitetura do ADS é apresentada na Figura 1. Esta figura mostra os projetos armazenados em XML, que são validados por um esquema DTD ou XSD. Estes projetos podem ser editados na Web, através de formulários visualizados por Folhas de Estilo XSL e Linguagens Web, como JSP e PHP. O conteúdo em XML é então processado pelas folhas de estilo gerando documentos (como HTML e LaTeX) e tem como objetivo gerar códigos em diversas outras linguagens (C, Java, etc.) e em diversas plataformas (Unix, Linux, Windows, entre outros.). Fig. 1. Arquitetura do ADS A arquitetura do ADS permite a utilização do padrão XMI para realizar a interoperabilidade com outros ambientes de desenvolvimento de software e repositórios de dados e proporciona perspectiva para o tratamento formal de metamodelo para a geração automática de software. A arquitetura do ADS foi derivado do Adesso, um ambiente computacional de suporte ao desenvolvimento de aplicações científicas [5] [6]. O ADS será ampliado de modo a permitir a geração de código automático, utilizando como ponto de partida ontologias e possivelmente a linguagem AWK [13] para processamento de dados baseados em texto. Inicialmente o objetivo é fazer com que o Ambiente de Desenvolvimento de Software Web Semântico processe um texto, escrito provavelmente pelo cliente, que contenha os requisitos do software. Então, o Ambiente de Desenvolvimento de Software Web Semântico deverá analisar o texto retornando possíveis classes para o engenheiro de software. Pretende-se assim criar um ADS, que irá agregar artefatos, como: diagramas, formulários, questionários, tarefas, checklists, template, linguagens formais, etc. Também pretendemos coletar e analisar informações, definidas por estes artefatos, para avaliar sobre a evolução na qualidade dos resultados dessa experimentação. Assim, o Ambiente de Desenvolvimento de Software Web Semântico vai ser uma atualização do ADS apresentado anteriormente. Este projeto estimula o compartilhamento de informações e experiências acerca das melhores práticas no desenvolvimento de software. O uso de plataforma Web garante o acesso livre à base de dados do Ambiente de Desenvolvimento de Software Web Semântico, o que traz um grande potencial de aplicação no ensino e na capacitação de pessoal. Com o tempo, os projetos desenvolvidos com o auxílio deste ambiente formarão uma base sólida de desenvolvimento de software, capaz de ser utilizada profissionalmente. Essa base servirá para auxiliar a criação de novos produtos de software, uma vez que os desenvolvedores podem aproveitar artefatos já existentes para criar novas funcionalidades. Assim evita-se a repetição, desnecessária, de esforço acelerando o processo de desenvolvimento como um todo na programação. Outra expectativa no desenvolvimento do Ambiente de Desenvolvimento de Software Web Semântico é encorajar o surgimento de novos projetos de software livre, ao disponibilizar recomendações para o desenvolvimento de projetos. O uso de técnicas de Engenharia de Software também colaboraria para aumentar a credibilidade do software livre produzido, uma vez que todos teriam acesso às especificações de cada projeto e às métricas de qualidade do mesmo. O uso de ontologias foi adotado, pois trará diversos benefícios como um melhor compartilhamento de conhecimento, suporte à interoperabilidade entre o ambiente e outros sistemas computacionais, auxílio na reutilização de conhecimento, nos processos de especificação de requisitos e na manutenção e documentação do Ambiente de Desenvolvimento de Software Web Semântico. III. TRABALHOS SEMELHANTES ODE (Ontology-based software Development Environment) é um ADS centrado em processo, fundamentado em ontologias. O ambiente ODE vem sendo desenvolvido no Laboratório de Engenharia de Software da UFES (LabES) e é implementado em plataforma livre, utilizando Java como linguagem de programação e banco de dados PostgreSQL [7] [8]. Algumas características de ODE que merecem destaque são: a uniformidade de conceitos provida pelas ontologias, que facilita a integração, deixa o ambiente mais homogêneo e torna mais efetiva a comunicação entre pessoas e entre ferramentas; a forte base em conhecimento, que permite que o ambiente ofereça um suporte especializado ao usuário na realização de suas tarefas e possibilita que as informações geradas mantenham-se interligadas e consistentes ao longo de todo o processo; e o foco em ferramentas gerenciais, uma vez que a gerência é uma área de grande importância e ainda é bastante carente em termos de ferramentas [7] [8]. O Adesso é um ambiente computacional de suporte ao desenvolvimento de aplicações científicas. O Adesso explora o modelo de programação baseado em componentes reutilizáveis, cada vez mais comum em programas de última geração, para fornecer suporte ao desenvolvimento de componentes e sua integração a diversas plataformas de programação científica. O Adesso baseia-se em uma base de dados, de componentes (algoritmos), representada em XML e em um conjunto de ferramentas de transformação (stylesheets) para geração de código, documentação e empacotamento dos componentes [5] [6]. IV. DESENVOLVIMENTO A proposta inicial é criar um sistema para o desenvolvimento e o armazenamento de software, chamado Ambiente de Desenvolvimento de Software Web Semântico. Sustentado no Ambiente de Desenvolvimento de Software Web - ADS [9] e em Ontologias. Este sistema estará disponível na Internet para uso de um padrão de desenvolvimento de software, onde vários sistemas (seus diagramas, documentos e código fonte) poderão ser armazenados. O Ambiente de Desenvolvimento de Software Web Semântico vai criar e manipular uma base de dados em XML (Extensible Markup Language) onde o conteúdo representa todo o processo de desenvolvimento de software seguindo conceitos de Engenharia de Software. O processo de desenvolvimento será livre, onde o usuário poderá customizar o processo de desenvolvimento, podendo dizer quais documentos irão compor cada fase, semelhando ao RUP [10]. Um pré-requisito para um software fazer parte desta base de dados é seguir a filosofia de "Software Livre", disponibilizando todo o processo de desenvolvimento, desde o levantamento dos requisitos, até a implantação do sistema. Quanto à geração automática de código, a proposta inicial é a de usar ontologias em conjunto com a linguagem AWK, para processar um texto contendo as especificações dos requisitos do software e retornar as possíveis classes para o engenheiro de software. Com as classes definidas o próximo passo é definir as relações entre elas e os atributos mais importantes. Tendo esses dados podemos criar um diagrama de classes, que pode ser transformado em código por alguma ferramenta CASE [2]. Essa função do Ambiente de Desenvolvimento de Software Web Semântico trará um ganho significativo na produtividade dos engenheiros de software, garantindo a diminuição nos custos de projeto, além da capacidade de realizar a construção de funcionalidades das aplicações de maneira mais eficiente e segura. Outra vantagem que esta função pode trazer se refere à padronização percebida no código gerado, o que é um ponto positivo com relação à qualidade do software, ter uma aplicação cujo código-fonte possui um estilo único de programação. V. CONCLUSÃO O Ambiente de Desenvolvimento de Software Web Semântico, quando concluído, trará diversos benefícios para o engenheiro de software. Entre eles: reutilização de código, diminuição nos custos de projeto e no tempo de desenvolvimento através da geração automática de código e vai trazer para os engenheiros de software um maior enfoque na elaboração dos modelos e diagramas, podendo assim trazer qualidade maior ao produto final. AGRADECIMENTOS O primeiro autor é financiado pelo Programa Institucional de Bolsas de Iniciação Científica CNPq (PIBIC) da Universidade Federal do ABC. REFERÊNCIAS [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] HARRISON, W.; OSSHER, H.; TARR, P., Software Engineering Tools and Environments: A Roadmap, In: Proc. of The Future of Software Engineering, ICSE’2000, Limerick, Ireland, 2000. PRESSMAN, R.S. Software Engineering: A Practitioner's Approach, 5th Edition, New York: McGraw-Hill, 2001. FALBO, R.A.; RUY, F.B.; PEZZIN, J.; DAL MORO, R., “Ontologias e Ambientes de Desenvolvimento de Software Semânticos”. 4th IberoAmerican Symposium on Software Engineering and Knowledge Engineering, JIISIC’2004, Vol. I, 277-292, Madrid, Spain, November 2004. GUIZZARDI G.; FALBO, R.A.; GUIZZARDI, R.S.S., “A importância de Ontologias de Fundamentação para a Engenharia de Ontologias de Domínio: o caso do domínio de Processos de Software”, IEEE LATIN AMERICA TRANSACTIONS, VOL. 6, NO. 3, JULY 2008 ADESSO - Ambiente para Desenvolvimento de Software Científico. http://www.dca.fee.unicamp.br/~lotufo/adesso/. Acesso em Agosto de 2009. MACHADO, R.C. Adesso - ambiente para desenvolvimento de software científico. Dissertação de Mestrado, Universidade Estadual de Campinas, Campinas, SP, Brasil, 2002. FALBO, R.A.; NATALI, A.C.C.; MIAN, P.G.; BERTOLLO, G.; RUY, F.B.. “ODE: Ontology-based software Development Environment”, IX Congreso Argentino de Ciencias de la Computación, La Plata, Argentina, 2003, pp 931-940. ODE - Ontology-based software Development Environment http://www.inf.ufes.br/~labes/ode/. Acesso em Agosto de 2009. ZAMPIROLLI, F. A; SILVA, M.A.S. Ambiente de Desenvolvimento de Softwares (ADS). In: II Encontro de Pesquisa e Extensão, 2005, São Paulo, 2005. RUP Rational Unified Process. http://www306.ibm.com/software/awdtools/rup. Acesso em Agosto de 2009. XML (2004) Extensible Markup Language (XML) 1.0 (Third Edition), http://www.w3.org/TR/2004/REC-xml-20040204 - 3C Recommendation February. Acesso em Agosto de 2009. NUNES, V.B.; SOARES, A.O.; FALBO, R.A. “Apoio à Documentação em um Ambiente de Desenvolvimento de Software”, VII Workshop Iberoamericano de Ingeniería de Requisitos y Desarrollo de Ambientes de Software, IDEAS’2004, pp 50-55, Arequipa, Peru, Maio 2004. AHO, Alfred V.; KERNIGAN, Brian K.; WEINBERGER, Peter J.. The AWK Programming Language. Reading, Massachusetts, EUA: AddisonWesley, 1988. pp. 210. ISBN 0-201-07981-X