• Nenhum resultado encontrado

Ontology driven software engineering: a review of challenges and opportunities

N/A
N/A
Protected

Academic year: 2022

Share "Ontology driven software engineering: a review of challenges and opportunities"

Copied!
8
0
0

Texto

(1)

Universidade de São Paulo

2015-03

Ontology driven software engineering: a review of challenges and opportunities

Revista IEEE América Latina,Piscataway, NJ : IEEE,v.13, n.3, p.863-869, Mar. 2015 http://www.producao.usp.br/handle/BDPI/50919

Downloaded from: Biblioteca Digital da Produção Intelectual - BDPI, Universidade de São Paulo

Biblioteca Digital da Produção Intelectual - BDPI

Outros departamentos - ICMC/Outros Importação - 2015

(2)

Abstract— Ontologies are formal representations of knowledge about a given domain. Based on them, it is possible to create more expressive knowledge bases that can be shared, extended and reused in different scenarios. In software engineering, ontologies can contribute in many different ways to improve the models, methods, techniques and processes of software development.

Nevertheless, the use and benefits of ontologies and Semantic Web technologies in Software Engineering is spread across several articles and books available in the literature. In this context, this paper aims at compiling and presenting the research findings and potential benefits when applying ontologies to address three major challenges in software engineering: (1) difficulty in communicating and sharing information; (2) effective management of software development phases; and (3) development techniques and environments to support the production of semantic software through an interdisciplinary approach. We believe that the review of the literature and discussions presented in this work can contribute to disseminate best practices of using ontologies in software development as well as to give directions about this field of research, its challenges and opportunities.

Keywords— Ontology, Semantic Web, Software Engineering.

I.INTRODUÇÃO

A era da Internet, onde pessoas, informação e conhecimento estão fragmentados na rede WWW e os meios de comunicação estão em constante evolução, os softwares e métodos de desenvolvimento precisam lidar com diversos obstáculos [29]. Dentre eles podemos destacar os desenvolvedores em diferentes localidades; as bases de conhecimento compartilhadas e extensíveis; a dificuldade de interoperabilidade da informação; além da necessidade de manter a qualidade do produto e a satisfação do usuário final [7]. Essa complexidade e fragmentação dos recursos exige que desenvolvedores abordem o processo de construção de software através de uma perspectiva fortemente centrada na informação e no usuário.

O uso de ontologias em Engenharia de Software tem recebido muitos adeptos nos últimos anos. Segundo Calero [7]

e Cesare et al. [11], ontologias e outras tecnologias da Web Semântica possuem grande potencial de impacto nos diversos

S. Isotani, Universidade de São Paulo (USP), ICMC, São Carlos, São Paulo, Brasil, [email protected]

I. I. Bittencourt, Universidade Federal do Alagoas (UFAL), Maceió, Alagoas, Brasil, [email protected]

E. F. Barbosa, Universidade de São Paulo (USP), ICMC, São Carlos, São Paulo, Brasil, [email protected]

D. Dermeval, Universidade Federal de Campina Grande (UFCG), Campina Grande, Paraíba, Brasil, [email protected]

R. O. A. Paiva, Universidade Federal de Campina Grande (UFCG), Campina Grande, Paraíba, Brasil, [email protected]

aspectos de desenvolvimento de software como, por exemplo, no desenvolvimento de modelos e linguagens mais apropriadas para representar o software; também podem auxiliar no processo de elicitação, análise e especificação de requisitos, na organização do projeto de desenvolvimento de software e na verificação e validação de sistemas. Além destes benefícios, muitos outros podem ser identificados na literatura [2][15][16][23][32].

No entanto, apesar do contínuo interesse em utilizar ontologias para apoiar as diferentes fases de desenvolvimento de software, ainda há uma carência de uma agenda de pesquisa no tema. Nesse sentido, este artigo revisita os principais trabalhos que envolvem a utilização de ontologias em Engenharia de Software com o intuito de identificar grandes desafios e oportunidades de pesquisa de interesse comuns das comunidades de ambas as áreas. Esta agenda de pesquisa visa fortalecer a investigação conjunta por parte dos pesquisadores interessados na aproximação das áreas de ontologia e de Engenharia de Software, beneficiando assim, que pesquisas relevantes e até então pouco exploradas sejam investigadas por pesquisadores destas áreas.

Existem trabalhos que levantam o estado da arte sobre o uso de ontologias em Engenharia de Software [17][37], além de trabalhos que analisam o estado da arte do uso de ontologias em fases específicas da Engenharia de Software como, por exemplo, na Engenharia de Requisitos [9][13][39].

No entanto, tais trabalhos apresentam, principalmente, resultados de trabalhos já desenvolvidos e não apresentam uma agenda extensiva de desafios e oportunidades de pesquisa.

Neste artigo, discute-se a adoção de ontologias em Engenharia de Software com a seguinte finalidade: (a) representar formalmente o conhecimento em Engenharia de Software a fim de criar as fundações para a construção de ferramentas de apoio inteligentes, que possam evitar erros de comunicação, requisitos, e compartilhamento da informação;

(b) desenvolver ferramentas inteligentes que auxiliem o gerenciamento de software através do uso de ontologias e métodos formais, garantindo a qualidade e a integridade do software durante todas as fases de desenvolvimento; (c) identificar as melhores práticas na área de Engenharia de Software, Interação Humano-Computador (IHC) e Inteligência Artificial (IA) para criar um ambiente completo de desenvolvimento de software semântico (i.e. software que utiliza tecnologias da Web Semântica).

S. Isotani, Senior Member, IEEE, I. I. Bittencourt, E. F. Barbosa, D. Dermeval and R. O. A. Paiva

Ontology Driven Software Engineering:

A Review of Challenges and Opportunities

N

(3)

II. ONTOLOGIAS E ENGENHARIA DE SOFTWARE:

DESAFIOS E OPORTUNIDADES

Diversos pesquisadores apontam que a comunidade de Engenharia de Software tem três grandes desafios para enfrentar nas próximas décadas [2][7][11][18][31][36]. O primeiro desafio é a integração do conhecimento em ambientes de desenvolvimento de software. O termo

“conhecimento” aqui empregado faz referência aos termos, métodos, processos e padrões necessários para se planejar e conduzir o desenvolvimento de um software. Este primeiro desafio tem como objetivo facilitar a definição e a troca de informação entre membros da equipe de desenvolvimento e entre desenvolvedores e clientes. Atualmente, muito tempo é desperdiçado pela falta de uma formalização explícita do conhecimento em Engenharia de Software e pela dificuldade de compartilhar adequadamente este conhecimento [7][29][44].

O segundo desafio está relacionado ao refinamento e gerenciamento eficaz das fases de desenvolvimento de software tais como requerimento, planejamento e implementação. Quanto maior a complexidade do sistema, maiores são as dificuldades e custos de se gerenciar as fases de desenvolvimento [10]. Assim, existe a necessidade de construir ferramentas e métodos avançados e mais inteligentes de suporte às diversas atividades da Engenharia de Software.

Estas ferramentas e métodos devem diminuir o tempo e o custo de desenvolvimento, além de oferecer o máximo de benefícios ao desenvolvedor para garantir a qualidade do produto final [2][3].

O terceiro desafio está relacionado à crescente demanda de desenvolvimento de sistemas que manipulam, armazenam, processam e apresentam a informação presente na Web. Em sistemas de informação, nos quais a tecnologia é utilizada para melhorar os processos de gerenciamento e a tomada de decisão, existe a necessidade de criar programas inteligentes e interativos, altamente robustos e com interface amigável ao usuário-final. Neste contexto, promover uma abordagem interdisciplinar para gerar novos métodos, processos e ferramentas de desenvolvimento de software é fundamental.

Esta abordagem interdisciplinar vem crescendo, principalmente combinando resultados das áreas de IHC, IA e Engenharia de Software [18][26][31][33][36]. Linhas de pesquisa como Human-Centered Software Engineering e Knowledge-based Software Engineering vêm demonstrando que o desenvolvimento de software utilizando uma visão integrada destas áreas oferece novas direções e possibilidades para criar programas que atendem de maneira mais adequada às necessidades do usuário.

Entre as propostas para enfrentar estes desafios em Engenharia de Software destaca-se a utilização de ontologias [37][44]. Basicamente, uma ontologia é a representação formal e explícita do conhecimento contido dentro de um domínio ou tarefa por meio da definição de conceitos e suas relações semânticas [34]. Ontologias estão se tornando a peça- chave para representar e gerenciar dados na Web. Contudo, em Engenharia de Software, a adoção de métodos e técnicas

baseadas em ontologias ainda encontra-se em seu estágio inicial [11].

A Engenharia de Software baseada em Ontologias (do inglês Ontology-Driven Software Engineering) é uma subárea da Engenharia de Software que vem emergindo nos últimos anos e tem como objetivo estudar as diversas formas com as quais ontologias, engenharia de ontologias e outras tecnologias provenientes da Web Semântica podem contribuir para o processo de desenvolvimento de software.

Desafios e oportunidades decorrentes da aplicação de ontologias em Engenharia de Software são o foco deste artigo, sendo estes aspectos detalhados e discutidos a seguir.

A. Primeiro Desafio - De Desenvolvimento Orientado à Processo para Orientado à Informação

Um dos principais tópicos de pesquisa em desenvolvimento de sistemas tem sido identificar e aplicar padrões de desenvolvimento para proporcionar um roteiro que facilita a criação de software em diferentes situações/domínios. Em outras palavras, o foco tem sido sobre os processos operacionais e funcionais que norteiam o desenvolvimento do software. Pesquisas nessa área são de extrema importância para a comunidade. Contudo, poucas pesquisas estudam o impacto que a fragmentação da informação e dos recursos, como pessoal, equipamento, conhecimento, entre outros, tem durante a criação de software em ambientes de desenvolvimento distribuídos [42][44]. Os grandes desafios nesta área são gerenciar, coletar e compartilhar a informação adequadamente [7][12].

O problema da interpretação incorreta de requisitos ou requisitos ambíguos não é novidade na Engenharia de Software. Apesar disso, a dificuldade de lidar com a informação continua presente no cotidiano do desenvolvedor [42]. Esse problema tem se agravado ainda mais com a utilização de ambientes interdisciplinares e distribuídos de desenvolvimento, pois o fluxo de informação entre desenvolvedores e clientes, desenvolvedores e usuários finais e entre desenvolvedores com diferentes formações escolares e culturais, nem sempre ocorre adequadamente.

Segundo Dillon et al. [15], em ambientes distribuídos de desenvolvimento, os desafios de comunicação durante o gerenciamento da equipe podem ser divididos em três categorias: (a) treinamento e práticas diferentes entre cidades e países. Isso significa que membros da equipe que estão em locais distantes terão dificuldade para trocar informações e compartilhar suas idéias, experiências e conhecimento; (b) princípios e disciplinas de Engenharia de Software não são seguidos e compartilhados entre as localidades de desenvolvimento. Isso cria inconsistências na coleta e apresentação de requisitos, além de problemas de documentação, planejamento e diagramação; (c) inconsistência na compreensão das teorias e aplicações da Engenharia de Software. Neste caso, terminologias e abordagens diferentes são aplicadas para especificar uma mesma função, processo ou objeto, causando confusão e ambiguidade. Como resultado, projetos podem ter falhas de requisitos, problemas de arquitetura de software e,

864 IEEE LATIN AMERICA TRANSACTIONS, VOL. 13, NO. 3, MARCH 2015

(4)

conseqüentemente, gerar a insatisfação dos usuários ao utilizarem o produto final, i.e. software.

Para resolver estes problemas, o processo de criação de software pode ser gerenciado utilizando o ponto de vista orientado à informação. Este ponto de vista é extensivamente utilizado na Engenharia de Ontologias para que a informação, ou melhor, o conhecimento sobre um determinado domínio seja criado, formalizado e aplicado. Esta abordagem permite que o fluxo e a transmissão de uma determinada informação ou conhecimento ocorram consistentemente durante todo o ciclo de comunicação entre pessoa-pessoa, pessoa-computador e computar-computador. Assim, esse método pode ser utilizado para facilitar a aquisição, especificação e representação formal do conhecimento em Engenharia de Software, necessário para o bom andamento e execução de projetos de desenvolvimento de sistemas [16].

Nesse contexto, faz-se necessário estudar como os métodos de Engenharia de Ontologias podem ser aplicados para criar ontologias de domínio que formalizam o conhecimento sobre Engenharia de Software. Ainda, é preciso estudar como esse conhecimento pode facilitar a condução das atividades de desenvolvimento, além de viabilizar a transmissão e a comunicação da informação de forma organizada e padronizada. Utilizando os métodos associados à Engenharia de Ontologias, é possível definir e representar o conhecimento compartilhável sobre Engenharia de Software através do uso de ontologias pesadas (heavyweight ontologies). Esse conhecimento trará mais semântica e expressividade ao glossário já existente na área, identificando quais os conceitos, e não apenas os termos, a serem definidos, como eles estão relacionados e explicando a razão desta relação. Essa ideia é representada na Fig. 1 (adaptada de [44]).

A Fig. 1 ilustra como o conhecimento de Engenharia de Software pode ser formalizado por meio do uso de ontologias de domínio: (a) o conhecimento de Engenharia de Software como, por exemplo, os diversos processos de desenvolvimento existentes, os tipos de artefatos e como os artefatos e fases do processo se relacionam podem ser representados utilizando uma ontologia de domínio; (b) o domínio do problema (requisitos) também pode ser formalizado através do uso de

ontologias de domínios que representam as informações específicas dos conceitos relativos ao domínio da Engenharia de Requisitos [40]; e (c) o espaço da solução pode fazer uso de ontologias de domínio para conter, por exemplo, os conceitos relativos ao projeto arquitetural do software. Além disso, como mostrado na Fig. 1, a formalização destas informações em ontologias permite que tais informações sejam compartilhadas com os diferentes tipos de stakeholders existentes no projeto de um software.

Desse modo, durante o processo de desenvolvimento, é possível relacionar os requisitos presentes no projeto com os conceitos presentes na ontologia e garantir que os requisitos não sejam ambíguos, inconsistentes e que todos estejam presentes no produto final. Por exemplo, ao identificar que um requisito de projeto está intrinsecamente relacionado a dois ou mais conceitos na ontologia significa que este requisito tem mais de dois significados e, portanto, é considerado pode ser considerado ambíguo. Além disso, é possível também verificar se dois requisitos são inconsistentes quando eles se referem a dois conceitos na ontologia que são conflitantes, ou seja, um requisito não pode ser definido ou implementado caso o outro seja requerido. Finalmente, pode-se garantir que todos os requisitos estejam presentes, aumentando a completude da especificação de requisitos por meio do mapeamento ontológico dos requisitos com as funções, objetos e procedimentos que farão parte do produto final.

Em suma, o estabelecimento de uma abordagem ontológica viabiliza o desenvolvimento de ferramentas que facilitam a troca de informação entre todos os interessados como clientes, usuários e desenvolvedores. Isso ocorre, pois as ontologias garantem que a mesma linguagem, métodos, processos e entendimento sobre a área de Engenharia de Software sejam utilizados e compartilhados formalmente, mesmo que os envolvidos estejam espalhados em diferentes localidades de desenvolvimento. Além disso, tal estabelecimento também pode fortalecer a rastreabilidade entre os artefatos produzidos durante o desenvolvimento do software, uma vez que as informações de requisitos, projeto, implementação e testes podem ser relacionadas através do uso de ontologias.

Figura 1. Criação e uso de ontologias para formalizar o conhecimento em Engenharia de Software e facilitar o controle e compartilhamento de informação (adaptada de [44]).

(5)

B. Segundo Desafio - Ferramentas Cientes de Conhecimento para Gerenciamento de Software

O uso de técnicas de IA para criar ferramentas inteligentes de apoio aos processos de Engenharia de Software tem sido objeto de estudo de muitos pesquisadores [35][36][43].

Contudo, ainda hoje, diversos obstáculos precisam ser superados para criar ferramentas de apoio inteligente. Beckert, et al. [3] aponta que são poucas as ferramentas inteligentes que: (a) podem ser aplicadas em diversos domínios; (b) aumentam a corretude, confiabilidade e segurança sobre o software sendo desenvolvido; e (c) sejam flexíveis e úteis para o desenvolvedor.

Uma das técnicas de IA que vem recebendo grande atenção por parte da comunidade de Engenharia de Software é conhecida como métodos formais [26]. Os métodos formais são fundamentais para verificar a corretude do software.

Através deles é possível identificar falhas nas funções ou saídas do sistema, funções inexistentes, condições que nunca são executadas, laços sem fim, variáveis não utilizadas ou utilizadas incorretamente, além de muitos outros possíveis erros de implementação. No entanto, a aplicação de métodos formais para verificar e aperfeiçoar sistemas requer do desenvolvedor conhecimentos especializados em matemática e lógica [6][21]. Por este motivo, essa abordagem é utilizada de forma extensiva apenas em domínios que demandam atributos de qualidade críticos, como os controles de tráfego aéreo, onde a segurança e a vida de pessoas precisam ser preservadas [1].

De acordo com Hinchey et al. [26], um dos passos mais importantes para viabilizar o uso de métodos formais é a habilidade de abstrair e modelar sistemas e seus processos com um nível de representação apropriado. Contudo, Atkinson et al. [2] indicam que a geração atual de ferramentas de modelagem carece de funções mais ricas para representar adequadamente estes modelos. Em particular, Atkinson e colegas defendem o uso de uma abordagem ontológica para viabilizar a criação de ferramentas inteligentes que proporcionam suporte à abstração de processos e a modelagem de sistemas.

Neste contexto, o segundo desafio de pesquisa é criar ontologias para facilitar a modelagem de sistemas e processos em Engenharia de Software. Além disso, também se faz necessário o estabelecimento de ferramentas de apoio inteligente para modelagem e gerenciamento das fases de desenvolvimento de software. Em particular, um dos grandes desafios é criar métodos para utilizar ontologias de tarefas com o intuito de facilitar a modelagem de processos e, assim, viabilizar o uso de métodos formais com maior regularidade.

A Fig. 2, apresenta um conjunto de atividades (e.g. análise, projeto, desenvolvimento, implementação e testes) e um conjunto de artefatos (e.g. requisitos, projeto abstrato, projeto concreto, código/software e resultados de testes) inerentes ao processo de desenvolvimento de software que podem ser apoiadas por ontologias de tarefas e domínio.

A ideia por trás do desenvolvimento de ontologias de tarefa é a intrínseca contribuição para gerar modelos independentes de domínio, mas que possuem semântica para

esclarecer o papel dos conceitos envolvidos no domínio.

Assim, uma ontologia de tarefas faz a separação entre o conhecimento do domínio, como o conhecimento de

Engenharia de Software descrito na subseção A, e os passos necessários para realizar uma tarefa que pode ser utilizada nesse domínio. Por exemplo, a tarefa de programar independe do domínio no qual se está programando. Dessa forma, ontologias de tarefas permitem criar padrões, modelos e metamodelos que são ao mesmo tempo independentes de domínio, mas que dão semântica aos conceitos do domínio quando utilizados dentro de um contexto.

Essa característica de independência de domínio das ontologias de tarefa contribui para a redução da complexidade e das restrições de utilizar métodos formais de maneira mais extensiva. Assim, é possível criar ferramentas formais que fornecem apoio ao desenvolvedor durante todo o processo de desenvolvimento. Além disso, espera-se que seja possível criar procedimentos baseados em ontologias e métodos formais para interligar todas as fases de desenvolvimento de software. Dessa forma, será possível oferecer meios mais confiáveis de detecção de falhas humanas ou de implementação em cada fase de desenvolvimento e garantir uma maior qualidade do produto final.

C. Terceiro Desafio - Desenvolvimento de Software Baseado em Web Semântica

O terceiro desafio está relacionado à crescente demanda de sistemas de informação que manipulam dados da Web de forma interativa e inteligente [24]. Segundo Shadbolt et al.

[38], o desenvolvimento de sistemas baseados em Web Semântica são a resposta para este desafio. Além disso, Cardoso e colegas [8] também indicam que sistemas semânticos já estão sendo incorporados por empresas e indústrias, principalmente aquelas que lidam com grandes quantidades de dados. Apesar disso, a área de Web Semântica ainda é recente e, portanto, existem muitas oportunidades para criar e melhorar as técnicas e métodos para análise e especificação de requisitos e para o desenvolvimento e a implementação de software nessa área.

Figura 2. Fases de desenvolvimento de software conectadas por ontologias de tarefa e de domínio (adaptado de [22]).

866 IEEE LATIN AMERICA TRANSACTIONS, VOL. 13, NO. 3, MARCH 2015

(6)

De acordo com diversos pesquisadores e desenvolvedores experientes, a interdisciplinaridade da equipe e da própria formação do desenvolvedor é a chave para garantir a qualidade do software desenvolvido utilizando tecnologias da Web Semântica [8][25]. Isso ocorre pois, para desenvolver softwares semânticos, os desenvolvedores lidam com três fatores concorrentemente: (a) a arquitetura e modelos de referência para desenvolver aplicações semânticas; (b) a interface entre computador-pessoa e entre computador- computador; e (c) a estrutura da informação. Para explicar um pouco mais sobre a relação entres estes três fatores é preciso compreender como a arquitetura da Web Semântica é composta.

Pode-se dizer que as camadas de base da arquitetura Web Semântica (Fig. 3) é responsável pela interface de comunicação computador-computador e facilitam a transmissão da informação entre computadores de forma estruturada e padronizada. As camadas intermediárias auxiliam a estruturar a informação dando significado aos dados e oferecendo mecanismos para raciocinar sobre esses dados. Finalmente, as camadas superiores lidam com a interface humano-computador e o desenvolvimento de aplicações e interfaces com o usuário que facilitam a busca e a apresentação da informação com diferentes graus de qualidade e confiança. Vale ressaltar que as camadas apresentadas nessa arquitetura não funcionam como componentes independentes.

As camadas de base oferecem as tecnologias necessárias para o funcionamento das camadas superiores e, portanto, ter conhecimentos básicos sobre o funcionamento de todas as camadas é fator fundamental para desenvolver sistemas através da tecnologia da Web Semântica.

Com o apoio da W3C, a primeira proposta de arquitetura para a Web Semântica foi apresentada por Berners-Lee em 2000 [4]. Ao longo dos anos essa arquitetura inicial vem sofrendo diversas modificações e continua em constante processo de evolução [19][20]. A última versão da arquitetura da Web Semântica é dividida em camadas [5], as quais representam as tecnologias que apoiam a Web Semântica e suas relações de dependência.

A Fig. 3 apresenta a versão mais recente desta arquitetura.

Por exemplo, para criar uma ontologia em OWL [45] o desenvolvedor ou a ferramenta de autoria irá também utilizar as linguagens RDF [46] e RDF-S [47]. Ambas as linguagens, RDF-S e RDF, são definidas através do uso da linguagem XML. Além disso, na base da arquitetura tem-se a URI [50] e o Unicode [41] que são padrões para codificar, identificar e descrever recursos tipicamente encontrados na Web, mas não se restringindo a ela. Utiliza-se também a linguagem SPARQL [49] para realizar consultas em arquivos estruturados em RDF e utiliza-se a camada RIF [48] para criar regras de interoperabilidade entre sistemas baseados na Web Semântica.

A camada de Lógica unificada propõe a unificação de lógicas (e.g. lógica de descrição) para aumentar tanto a expressividade dos documentos descritos através das ontologias quanto a garantir a capacidade de raciocínio de tal forma que seja decidível [38]. A camada de prova executa as regras e verifica junto com os mecanismos da camada de confiança se uma

dada prova é confiável ou não [30]. Já a camada de Criptografia pode ser utilizada para verificar a autoridade de um documento. Por fim, a camada de interface do usuário visa permitir que tanto agentes de software quanto agentes humanos estejam habilitados a fazer uso de todas as potencialidades providas pela Web Semântica e de seus formalismos de representação de conhecimento.

Interface do Usuário & aplicações Confiança Prova

Lógica unificada

Consulta SPARQL

Regras:

RIF Ontologia:

OWL

Troca de dados: RDF

Cripto Camadas

superiores

Camadas intermediárias

Camadas de base

Figura 3. Arquitetura da Web Semântica. Adaptada e traduzida de [5].

Nesse contexto, para desenvolver sistemas semânticos exige-se do desenvolvedor uma formação interdisciplinar em Engenharia de Software, IA e IHC para lidar com a complexidade desta arquitetura. Um bom desenvolvedor de sistemas semânticos consegue entender como os dados são representados utilizando ontologias, como é possível receber e transmitir dados utilizando dados estruturados e padronizações e como criar interfaces amigáveis que lidam com esses dados [8][25].

Para ajudar o desenvolvedor a criar sistemas utilizando a arquitetura da Web Semântica (Fig. 3) existem diversas categorias de ferramentas de auxílio. Segundo a W3C essas ferramentas podem ser divididas em dez categorias [51].

Dentre essas categorias, duas estão fortemente relacionadas à Engenharia de Software: ambientes de programação e ambientes de desenvolvimento. Os ambientes de programação oferecem um conjunto de ferramentas para criar aplicações utilizando tecnologias da Web Semântica. Esse conjunto de ferramentas oferece os elementos essenciais para criar aplicações semânticas, mas não oferece nenhum auxilio para desenvolver tais aplicações. Os ambientes de desenvolvimento oferecem editores visuais para criar e modelar ontologias e também “raciocinar” sobre elas. Esses ambientes são fundamentais para criar ontologias de domínio ou tarefa e realizar a verificação e validação destas ontologias.

Apesar dos grandes benefícios dos ambientes de programação e de desenvolvimento disponíveis, a comunidade de Web Semântica ainda carece de ferramentas apropriadas que apoiem todo o ciclo de desenvolvimento de sistemas tais como: formulação dos requisitos; projeto de software com base na arquitetura da Web Semântica; planejamento detalhado relacionado à representação e uso da informação;

implementação usando as tecnologias da Web Semântica;

(7)

teste, uso e manutenção. Além disso, são poucas as pesquisas que discutem a criação de modelos de referência que auxiliam o desenvolvimento de aplicações semânticas e a sua utilização em cenários reais [14][23][28]. Outra dificuldade para a criação de sistemas semânticos é a falta de ferramentas e ambientes de suporte ao desenvolvimento de interfaces semânticas que lidam com o usuário final [27].

Assim, o terceiro desafio de pesquisa é criar métodos e ferramentas de gerenciamento, como discutido na subseção B, para desenvolver sistemas que utilizam as tecnologias da Web Semântica. Em particular, é preciso identificar as melhores práticas nas áreas de Engenharia de Software, IA e IHC que possam ajudar na geração de modelos, padrões e técnicas de desenvolvimento de sistemas semânticos.

III. CONCLUSÕES

Neste artigo discutiu-se como o uso das ontologias e técnicas provenientes da Web Semântica podem beneficiar a área de Engenharia de Software. Esta área de pesquisa, conhecida como Engenharia de Software baseada em Ontologias, é relativamente recente e vem atraindo pesquisadores de diversas áreas da Ciência da Computação.

Em particular, três grandes desafios foram apresentados: (1) facilitar a comunicação e o compartilhamento de informação;

(2) gerenciar de forma eficaz as fases de desenvolvimento de software; (3) desenvolver métodos, técnicas e ambientes para facilitar a produção de softwares semânticos utilizando uma abordagem interdisciplinar.

Os trabalhos e projetos decorrentes dos desafios identificados podem abrir novos rumos para pesquisas interdisciplinares nas áreas de Ontologias e Engenharia de Software e, como resultado, gerar melhores métodos/ferramentas de desenvolvimento e proporcionar softwares mais robustos, de melhor qualidade e que satisfaçam as exigências dos clientes e dos usuários.

Como trabalho futuro, pretende-se investigar mais a fundo alguns dos desafios apresentados neste artigo, com uma ênfase maior no Desafio 3. Além disso, também deseja-se realizar um estudo sistemático da literatura para identificar como ontologias tem suportado o processo de desenvolvimento de software em nível de pesquisa e de prática.

AGRADECIMENTOS

Os autores deste trabalho agradecem o apoio técnico e financeiro da W3C Brasil, CNPq, FAPESP e CAPES.

REFERÊNCIAS

[1] M. Archer , C. Heitmeyer and E. Riccobene, “Proving invariants of I/O automata with TAME”, Automated Software Engineering, 9(3), p.201-232, 2002.

[2] C. Atkinson, M. Gutheil and B. Kennel, “A Flexible Infrastructure for Multilevel Language Engineering”, IEEE Transactions on Software Engineering, 35(6), p.742-755, 2009.

[3] B. Beckert, T. Hoare, R. Hahnle, D. R. Smith, C. Green, S. Ranise, C.

Tinelli, T. Ball and S. K. Rajamani, “Intelligent Systems and Formal Methods in Software Engineering”, IEEE Intelligent Systems, 21( 6), p.71-81, 2006.

[4] T. Berners-Lee. (2000, December 6). Semantic Web on XML [Online]

Available: http://www.w3.org/2000/Talks/1206-xml2k-tbl/slide10- 0.html

[5] T. Berners-Lee. (2006, July 18). Artificial Intelligence and the Semantic Web [Online]. Available: http://www.w3.org/2006/

Talks/0718-aaai-tbl/Overview.html#(14)

[6] J.P. Bowen and M. G. Hinchey, “Seven more myths of formal methods”, IEEE Software, 12(4), p.34–41, 1995.

[7] C. Calero, F. Ruiz, and M. Piattini, Ontologies for software engineering and software technology. Berlin, Heidelberg: Springer, 2006.

[8] J. Cardoso, M. Hepp and M. D. Lytras, The Semantic Web: Real- World Applications from Industry. Berlin, Heidelberg: Springer, 2008.

[9] V. Castañeda, L. Ballejos, M. L. Caliusco and M. R. Galli, “The use of ontologies in requirements engineering”, Global journal of researches in engineering, 10 (6), 2010.

[10] E. Coskun and M. Grabowski, “Software complexity and its impacts in embedded intelligent real-time systems”, Journal of Systems and Software, 78(2), p.128-145, 2005.

[11] S. Cesare, G. L. Geerts, G. Holland, M. Lycett and C. Partridge,

“Ontology-driven software engineering”, Proceeding of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications (OOPSLA), p.723-724, 2009.

[12] D. Deridder and B. Wouters, “The Use of Ontologies as a Backbone for Software Engineering Tools”, Proceedings of the Fourth Australian Knowledge Acquisition Workshop, 1999. Available:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.1.8118.

[13] D. Dermeval, J. Vilela, I. I. Bittencourt, J. Castro, S. Isotani, and P.

Brito, “A systematic review on the use of ontologies in requirements engineering”. Proceedings of the Brazilian Symposium on Software Engineering (SBES), IEEE Press, p.1-10, 2014.

[14] V. Devedzic, Semantic Web and Education. Berlin, Heidelberg:

Springer, 2006.

[15] T. S. Dillon, E. Chang and P. Wongthongtham, “Ontology-Based Software Engineering- Software Engineering 2.0”. Proceedings of the 19th Australian Conference on Software Engineering. IEEE Press, p.13-23, 2008.

[16] J. Garzas and M. Piattini, “An Ontology for Microarchitectural Design Knowledge”, IEEE Software, 22(2), p.28-33, 2005.

[17] D. Gasevic, N. Kaviani, and M. Milanovic, “Ontologies and software engineering” Handbook on Ontologies, Springer Berlin Heidelberg, p.593-615, 2009.

[18] G. Goth, D. Dorenbos, and V. Dorenbos, “Currents: Trends, People, Projects”, IEEE Software, 24(4), p.100-105, 2007.

[19] A. Gerber, A. van der Merwe and A. Barnard, “A functional semantic web architecture” Proceedings of the 5th European Semantic Web Conference. Lecture Notes In Computer Science. Berlin, Heidelberg:

Springer-Verlag, p.273-287, 2008.

[20] B. C. Grau, “A possible simplification of the semantic web architecture”, Proceedings of the 13th international Conference on World Wide Web (WWW), ACM Press, p.704-713, 2004.

[21] J. A. Hall, “Seven myths of formal methods”, IEEE Software, 7(5), 11–19, 1990.

[22] Y. Hayashi, S. Isotani, J. Bourdeau, R. Mizoguchi, “Toward a Learning/Instruction Process Model for Facilitating the Instructional Design Cycle” IFIP Advances in Information and Communication Technology, V. 302, Springer, p.138-147, 2009.

[23] O. Holanda, S. Isotani, I. I. Bittencourt, E. Elias and T. Tenório,

“JOINT: Java ontology integrated toolkit”, Expert Systems with Applications, 40(16), p.6469-6477, 2013.

[24] N. Heino, S. Dietzold, M. Martin and S. Auer, “Developing Semantic Web Applications with the OntoWiki Framework”, Studies in Computational Intelligence, v. 221, p.61-77, 2009.

[25] J. Hendler, N. Shadbolt, W. Hall, T. Berners-Lee and D. Weitzner,

“Web science: an interdisciplinary approach to understanding the web”, Communications of the ACM, 51(7), p.60-69, 2008.

[26] M. Hinchey, M. Jackson, P. Cousot, B. Cook, J. P. Bowen and T.

Margaria, “Software Engineering and Formal Methods”, Communications of the ACM, 51(9), p.54-59, 2008.

[27] D. F. Huynh, R. C. Miller and D. R. Karger, “Potluck: Data mash-up tool for casual users”, Journal of Web Semantics, 6(4), p.274-282, 2008.

868 IEEE LATIN AMERICA TRANSACTIONS, VOL. 13, NO. 3, MARCH 2015

(8)

[28] S. Isotani, R. Mizoguchi, A. Inaba and M. Ikeda, “The foundations of a theory-aware authoring tool for CSCL design”, Computers and Education, v. 54, p.809-834, 2010.

[29] S. Isotani, E. Costa, R. Mizoguchi and I. I. Bittencourt, “Estado da Arte em Web Semântica e Web 2.0: Potencialidades e Tendências da Nova Geração de Ambientes de Ensino na Internet”, Revista Brasileira de Informática na Educação, 17(1), p.30-42, 2009.

[30] M.-R. Koivunen, and E, Muller, “W3C semantic web activity”

Semantic Web Kick-Off in Finland - Vision, Technologies, Research, and Applications, p.27-44, 2002. Available:

http://www.cs.helsinki.fi/u/eahyvone/stes/semanticweb/kick- off/proceedings.pdf

[31] N. G. Leveson, “Intent Specifications: An Approach to Building Human-Centered Specifications”, IEEE Transactions on Software Engineering, 26(1), p.15-35, 2000.

[32] J. B. Machado, S. Isotani, E. F. Barbosa and M. B. Ribeiro, “Towards an Ontological Infrastructure for Content Modeling and Personalization”, International Workshop on Semantic and Social Media Adaptation and Personalization (SMAP), IEEE Press, p.107- 112, 2012.

[33] T. Memmel, F. Gundelsweiler, and H. Reiterer, “Agile human- centered software engineering”. Proceedings of British Computer Society Conference on Human-Computer Interaction, p.167-175, 2007.

[34] R. Mizoguchi, “Tutorial on Ontological Engineering: Part 1:

Introduction to Ontological Engineering”, New Generation Computing, Springer, 21(4), p.365-384, 2003.

[35] D. Nardi and M. Tucci, “Building tools for software engineering with artificial intelligence techniques”, Applied Artificial Intelligence, 4(4), 283-307, 1990.

[36] J. Rech and K-D. Althoff, “Artificial Intelligence and Software Engineering: Status and Future Trends”, The German Artificial Intelligence Journal, 18(3), p.5-11, 2004.

[37] F. Ruiz and J. Hilera, “Chapter 2: Using Ontologies in Software Engineering and Technology”. Ontologies for software engineering and software technology. Berlin, Heidelberg: Springer, p.62-119, 2006.

[38] N. Shadbolt, T. B. Lee and W. Hall, “The semantic web revisited”, IEEE Intelligent Systems, 21(3), p. 96–101, 2006.

[39] K. Siegemund, E. J. Thomas, Y. Zhao, J. Pan and U. Assmann,

“Towards ontology-driven requirements engineering”, Proceedings of the Semantic Web Enabled Software Engineering Workshop, p.1-14, 2011.

[40] I. Sommerville and G. Kotonya, Requirements Engineering:

Processes and Techniques. John Wiley & Sons, Inc., New York, NY, USA, 1998.

[41] The Unicode Consortium. (2014, June 16). The Unicode Standard [Online]. Available: http://www.unicode.org/consortium/consort.html.

[42] G. S. Walia and J. C. Carver, “A systematic literature review to identify and classify software requirement errors”, Information and Software Technology, 51(7), p.1087-1109, 2009.

[43] C. A. Welty and P. G. Selfridge, “Artificial Intelligence and Software Engineering: Breaking the Toy Mold”, Automated Software Engineering, 4(3), p.255-270, 1997.

[44] P. Wongthongtham, E. Chang, T. Dillon and I. Sommerville,

“Development of a Software Engineering Ontology for Multisite Software Development”, IEEE Transactions on Knowledge and Data Engineering, p.1205-1217, 2009.

[45] W3C. (2012, December 11). OWL 2 Web Ontology Language Document Overview (Second Edition) [Online]. Available:

http://www.w3.org/OWL/

[46] W3C. (2014, February 25). Resource Description Framework (RDF) [Online]. Available: http://www.w3.org/RDF/

[47] W3C. (2014, February 25). RDF Schema 1.1 [Online]. Available:

http://www.w3.org/TR/rdf-schema/

[48] W3C. (2013, February 5) RIF Overview (Second Edition) [Online].

Available: http://www.w3.org/TR/rif-overview/

[49] W3C. (2013, March 21) SPARQL 1.1 Overview [Online]. Available:

http://www.w3.org/TR/sparql11-overview/

[50] W3C (2001, September 21) URIs, URLs, and URNs: Clarifications and Recommendations 1.0 [Online]. Available:

http://www.w3.org/TR/uri-clarification/

[51] W3C (2015, January 4) Semantic Web Tools and Categories [Online].

Available: http://www.w3.org/2001/sw/wiki/Category:Tool

Seiji Isotani é Professor Associado do Instituto de Ciências Matemáticas e de Computação da Universidade de São Paulo (ICMC-USP). Possui Bacharelado e Mestrado em Ciência da Computação pela Universidade de São Paulo (IME-USP) e doutorado em Engenharia da Informação pela Osaka University (Japão). Realizou seu pós-doutorado na Carnegie Mellon University (EUA) onde foi contratado e permaneceu no quadro docente (Faculty) até 2011. Tem experiência nas áreas de Ciência da Computação, desenvolvimento de software e transferência de tecnologia. Tem realizado pesquisas sobre os seguintes temas: sistemas tutores inteligentes, CSCL, ontologias, open linked data, Web Semântica e mineração/visualização de dados educacionais. Recebeu diversos prêmios em sua carreira nas áreas de pesquisa, inovação e docência. Atualmente, é Senior Member da IEEE, bolsista produtividade do CNPq, Editor Chefe da Revista Brasileira de Informática na Educação, Membro do Conselho Municipal da Secretaria da Educação do Município de São Carlos e Representante da SBC no Technical Committee on Education (TC3) da IFIP.

Ig Ibert Bittencourt é graduado em Análise de Sistemas pelo Centro de Estudos Superiores de Maceió (2003), mestrado em Modelagem Computacional do Conhecimento pela UFAL (2006), doutorado em Ciência da Computação pela UFCG (2009) e pós-doutor pela Unicamp (2013). Atualmente é Professor do Instituto de Computação da Universidade Federal de Alagoas, Bolsista de Produtividade em Desenvolvimento Tecnológico e Extensão Inovadora do CNPq, Representante Consultivo da UFAL no W3C e membro da SBC, ACM e W3C. É um dos fundadores do Núcleo de Excelência em Tecnologias Sociais (NEES) e atua como Vice-coordenador da Comissão Especial de Informática na Educação da Sociedade Brasileira de Computação. É também fundador de duas startups premiadas, sendo uma na área de Informática na Educação (MeuTutor) e outra na área de Tecnologias Semânticas (Boa Moradia). Ig Ibert Bittencourt tem trabalhado com pesquisa, desenvolvimento e inovação nas áreas de Tecnologias Educacionais, Web Semântica e Empreendedorismo Social.

Ellen Francine Barbosa é bacharel em Ciência da Computação pela Universidade Estadual de Londrina (UEL).

Mestre e Doutora em Ciência da Computação e Matemática Computacional pelo Instituto de Ciências Matemáticas e de Computação da Universidade de São Paulo (ICMC-USP).

Realizou estágios na Georgia Institute of Technology e na University of Florida. Atualmente é Professora Associada do ICMC-USP. Foi coordenadora do Laboratório de Engenharia de Software (LabES) no período de 2008 a 2011. É fundadora e atual coordenadora do Laboratório de Computação Aplicada à Educação e Tecnologia Social Avançada (CAEd) e diretora do Centro de Ensino e Treinamento do INCT-SEC. Entre seus interesses de pesquisa destacam-se os temas relacionados a Ensino e Aprendizagem, Linha de Produtos de Software, Arquiteturas de Referência, Qualidade de Software, Teste de Software, Engenharia de Software Experimental e Ontologias.

Diego Dermeval é doutorando em Ciência da Computação pela Universidade Federal de Campina Grande. Possui Mestrado em Ciência da Computação pela Universidade Federal de Pernambuco e Graduação em Ciência da Computação pela Universidade Federal de Alagoas. Foi professor no Instituto de Computação da Universidade Federal de Alagoas. Atualmente é membro do Núcleo de Excelência em Tecnologias Sociais (NEES) onde realiza pesquisa no desenvolvimento de técnicas de Engenharia de Software e Web Semântica em Informática na Educação.

Ranilson Oscar Araújo Paiva é graduado em Sistemas de Informação pela Faculdade de Alagoas (2008), especialista em Desenvolvimento de Aplicações Web, mestre em Modelagem Computacional do Conhecimento, pela Universidade Federal de Alagoas e, atualmente, aluno do Doutorado em Ciência da Computação pela Universidade Federal de Campina Grande.

Desenvolvendo pesquisas com foco em Mineração de Dados Educacionais, Sistemas de Recomendação e Ferramentas de Autoria. Atualmente é Membro do Núcleo de Excelência em Tecnologia Sociais - NEES.

Referências

Documentos relacionados

Este trabalho busca reconhecer as fragilidades e potencialidades do uso de produtos de sensoriamento remoto derivados do Satélite de Recursos Terrestres Sino-Brasileiro

Para atingir este fim, foram adotados diversos métodos: busca bibliográfica sobre os conceitos envolvidos na relação do desenvolvimento de software com

O presente trabalho tem como objetivo geral avaliar a precisão do Modelo Digital de Terreno - MDT, gerado a partir dos dados obtidos por imagens digitais de um Veículo Aéreo

Kulčar 40 , encontrou benefícios semelhantes (Tabela 3) e, além disso, ao acompanhar os membros permanentes do grupo por um período de 10 anos, constatou uma

A origem do nome Açaí é que nós justamente tivemos o trabalho né, foi o processo foi feito com o SEBRAE né, foi dado as aulas pra nós, aí então, lá no curso ela pediu pra

A função gerente de obras torna-se cada vez mais necessária na construção civil, pois o setor está cada vez mais desenvolvendo e aprimorando a área de coordenação

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de

Já o Ministério do Turismo (2010), divulga não apenas as atribuições gerais que o guia deve cumprir, mas também as atribuições específicas de acordo com a