Aplicações de
Ontologias em
Engenharia de
Software
Ricardo de Almeida Falbo
Ontologias para Engenharia de Software Departamento de Informática
Agenda
• Introdução • Ontologias em Engenharia de Software • Ontologias no Desenvolvimento Distribuído de Software • Ontologias no Desenvolvimento de Sistemas Multiagentes • Categorização de Ontologias em ES (2) • Exemplos de Ontologias Existentes • Web Semântica de ESO que é uma ontologia?
• Uma ontologia é uma descrição parcial e explícita de uma conceituação compartilhada. • Tipos de Ontologias: – Quanto ao grau de generalidade (Guarino, 1998): ontologias de fundamentação, ontologias de domínio, ontologias de tarefa e ontologias de aplicação. – Quanto ao grau de generalidade (Scherp et al., 2011): ontologias de fundamentação, ontologias núcleo (core ontologies) e ontologias de domínio – Em relação à fase do processo de desenvolvimento de ontologias (Guizzardi, 2007): ontologias de referência e ontologias operacionais. – Quanto ao nível de axiomatização (Ruiz et al., 2006): ontologias pesadas e ontologias leves.Modelos, Meta-modelos e Ontologias
• Ontologias de Referência são modelos conceituais. Modelos Conceituais de sistemas também. Qual a diferença entre eles então? – Escopo. Modelos são destinados a um projeto particular, enquanto ontologias têm um escopo bem mais abrangente, que perpassa vários projetos e organizações, visando ser um modelo consensual para uma certa comunidade. • Muitas vezes, meta-modelos são considerados mais relacionados com ontologias. Contudo, eles são modelos que falam sobre modelos e, portanto, visam melhorar o rigor de modelos sintaticamente semelhantes, mas semanticamente diferentes. Já ontologias visam tratar a semântica.Ontologias em Engenharia de Software
• As aplicações de ontologias em ES são múltiplas. • Ontologias podem ser integradas a infraestruturas de desenvolvimento e no próprio software sendo desenvolvido para apoiar várias atividades do processo de software. • Com o surgimento da Web Semântica (WS), iniciativas capitaneadas por organizações de padronização, tais como W3C e OMG, começaram a ser desenvolvidas no sentido de integrar as áreas de WS e ES. (Happel et al., 2010)6
Aplicações de Ontologias – Visão Geral
• Aplicações de Ontologias (Jasper et al., 1999): – Comunicação – Interoperabilidade de Sistemas – Especificação de Sistemas – Recuperação de Informação7
Aplicações de Ontologias – Comunicação
• Comunicação entre pessoas: – Ontologias reduzem confusões terminológicas e conceituais. – Favorecem o entendimento compartilhado entre as pessoas.8
Aplicações de Ontologias – Comunicação
• Podem ser usadas para criar uma rede de conceitos dentro de um sistema permitindo às pessoas explorarem e navegarem através dessa rede para entender os relacionamentos internos do sistema. • Comunicação: – Entre pessoas – Entre pessoas e sistemas – Entre sistemas (interoperabilidade)9
Aplicações de Ontologias – Interoperabilidade
• Ontologias podem ser usadas como uma inter-língua para apoiar a tradução entre diferentes linguagens e representações. • Permitem a comunicação entre sistemas. • Acesso Comum à Informação: uma ontologia é usada para permitir que múltiplas aplicações-alvo tenham acesso a fontes heterogêneas de informação que são expressas usando vocabulário diverso ou formato inacessível (Jasper et al., 1999). • Serviços CompartilhadosAplicações de Ontologias – Interoperabilidade
• Sistemas: Dados e Serviços
• Arquiteturas Organizacionais: Processos • Representações: Modelos
11
Aplicações de Ontologias – Especificação
de Sistemas
• Ontologias promovem o entendimento compartilhado de um domínio ou tarefa. • Ontologia como Especificação: uma ontologia de um determinado domínio/tarefa é criada e provê um vocabulário para especificar requisitos para uma ou mais aplicações-alvo. A ontologia é usada como uma base para especificação e desenvolvimento de software, permitindo reúso de conhecimento (Jasper et al., 1999).• Ontologias de Domínio ßà Modelos Estruturais • Ontologias de Tarefa ßà Modelos Comportamentais • Ontologias de Fundamentação: base para ambos os modelos: Modelagem Conceitual.
Aplicações de Ontologias – Especificação
de Sistemas
13
Aplicações de Ontologias – Recuperação
de Informação
• Máquinas de busca tradicionais retornam listas de recursos recuperados, oferecendo pouca ou nenhuma informação sobre as relações semânticas existentes entre eles. • Ontologias oferecem um meio de lidar com a representação de recursos de informação: o modelo de domínio descrito por uma ontologia pode ser usado como uma estrutura unificadora para dar semântica e uma representação comum à informação (Davies et al., 2003). • Busca Baseada em Ontologias: uma ontologia é usada para procurar, em um repositório de informação, por recursos desejados, melhorando a precisão e reduzindo a quantidade de tempo gasto na busca (Jasper et al., 1999). • Ex.: Web Semântica14
Aplicações de Ontologias – Recuperação
de Informação
• Recuperação de itens de conhecimento: artefatos, lições aprendidas, discussões... • Recuperação de componentes, bibliotecas, serviços, frameworks.Aplicações de Ontologias
• Inferência
• Organização e Reutilização de Conhecimento (Gerência de Conhecimento)
Uso de Ontologias na ES - Geral
• Integração de Ferramentas: Diferentes projetos ou mesmo stakeholders de um mesmo projeto usam diferentes ferramentas, que muitas vezes não se comunicam. • Problema: Interoperabilidade • Ontologias podem ser usadas para apoiar a integração semântica das informações armazenadas nessas ferramentas e de serviços providos por elas.Uso de Ontologias na ES - Geral
• Compartilhamento de Conhecimento: necessidades de conhecimento, muitas vezes, não são explicitamente declaradas, mas sim estabelecidas pelo gap entre o conhecimento de um desenvolvedor e o conhecimento necessário para desempenhar uma tarefa à Necessidade de disseminação pró-ativa. • Problema: Encontrar o equilíbrio entre sobrecarga de informação e falta de informação • Problemas relacionados: Provisão, Acesso e Utilização da Informação (incluindo as diferenças entre os contextos de criação e de uso de um item de conhecimento).Uso de Ontologias na ES - Geral
• Acesso à Informação: Como encontrar a informação necessária para resolver um problema ou realizar uma tarefa? A existência de grandes repositórios pode dificultar a busca por itens relevantes para o contexto em mãos. • Ontologias podem ser usadas para anotar semanticamente itens de conhecimento, tais como artefatos do processo de software, lições aprendidas, artefatos de colaboração (e-mails, listas de discussão, fóruns etc.). Grupos de interesse podem ser estabelecidos dinamicamente através da ligação entre o conteúdo anotado semanticamente e os perfis dos stakeholders anotados com base na mesma ontologia. Mecanismos de consulta avançados baseados em ontologias podem ser usados para apoiar a busca.Uso de Ontologias na ES - Geral
• Provisão de Informação: Desenvolvedores frequentemente evitam esforços de documentação e rejeitam a ideia de ter de descrever itens de conhecimento para reúso (anotação semântica). • Ontologias podem ajudar a explicitamente capturar informações de contexto e oferecer aos desenvolvedores um vocabulário mais preciso e não ambíguo para expressar certas informações. Além disso, certas informações contextuais podem ser derivadas automaticamente de artefatos de software, utilizando-se de métodos de extração (documentação semântica).Uso de Ontologias na ES - Geral
• Documentação: Diferentes artefatos contém várias informações inter-relacionadas (p.ex., documentos de requisitos, código fonte e casos de teste). As tarefas de juntar e manter essas ligações ficam a cargo dos usuários e desenvolvedores desses artefatos. • Ontologias podem ser usadas para adicionar semântica a elementos de informação em documentos, de modo que ferramentas automatizadas possam processar e relacionar estas informações (documentação semântica). Ex.: Wiki semânticos.Uso de Ontologias na ES - Geral
• Rastreabilidade: Manter matrizes de rastreabilidade é muito trabalhoso. • Ontologias usadas para apoiar a documentação semântica podem ser usadas também para descrever a semântica das relações existentes entre os vários artefatos de software produzidos, permitindo o desenvolvimento de ferramentas automatizadas para a manutenção e recuperação de informações de rastreabilidade.Uso de Ontologias na ES - Geral
• Tratabilidade: Software é uma entidade sócio-técnica e, portanto, é necessário manter uma trilha de todas as interações relevantes: humano-humano e humano-software (p.ex., chat que explica uma decisão). • Ontologias podem ser usadas para descrever a semântica das relações existentes entre os vários artefatos, incluindo aqueles que não são classicamente definidos como entrada ou saída de uma atividade do processo de desenvolvimento.Uso de Ontologias na ES – Processo de
Desenvolvimento
• Requisitos: As principais razões de fracassos de projetos de software são: falta de envolvimento de usuários, requisitos incompletos ou mal especificados e volatilidade de requisitos. • Uma vez que engenheiros de software normalmente não são especialistas de domínio, eles precisam aprender sobre o domínio do problema com usuários. Obter um entendimento compartilhado é um dos principais desafios da ER.Uso de Ontologias na ES – Processo de
Desenvolvimento: Requisitos
• Ontologias podem ser usadas como uma especificação de domínio (modelo de domínio) compartilhada, formal e não ambígua, que sirva de ponto de partida para a especificação de requisitos para vários sistemas naquele domínio (abordagem de Engenharia de Domínio).25
Engenharia de Domínio
• Enfoque sistemático para a produção de componentes reutilizáveis. • Atividades: – Análise de Domínio: visa representar requisitos comuns de uma família de aplicações por meio de modelos de domínio; – Projeto de Domínio: busca prover modelos arquiteturais para uma classe de aplicações a partir de um único modelo de domínio; – Implementação de Domínio: prover implementações de componentes que representam funcionalidades básicas de aplicações relacionadas a um domínio.Uso de Ontologias na ES – Processo de
Desenvolvimento: Requisitos
• Uso de distinções ontológicas providas por ontologias de fundamentação durante a modelagem conceitual de sistemas. P.ex., uso de OntoUML na modelagem conceitual de sistemas.Uso de Ontologias na ES – Processo de
Desenvolvimento
• Arquitetura de Software: Na maioria dos sistemas, a lógica de negócio é codificada em uma linguagem de programação em um componente da arquitetura. Mudanças na lógica de negócio requerem modificações no código fonte e análises de impactos. • Arquiteturas baseadas em regras e uso de máquinas de regras podem ser uma solução para este problema. A ideia é separar a lógica de negócio e a lógica de processamento. • Em uma arquitetura baseada em regras, uma ontologia pode ser um componente (em tempo de execução) da camada de lógica de negócio, separado do componente de lógica de processamento (papel desempenhado por uma máquina de regras – reasoner).Uso de Ontologias na ES – Processo de
Desenvolvimento
• Reutilização de Componentes / Serviços Web: Estes são casos mais específicos do problema de acesso à informação, contextualizados nas fases de projeto e implementação do processo de desenvolvimento. A questão básica é: existem componentes/serviços que podem ser reusados? Como encontrá-los e usá-los no contexto do projeto corrente? • Ontologias podem ser usadas para descrever componentes / serviços web (anotações semânticas), de modo a permitir o uso posterior de mecanismos de busca mais convenientes e poderosos. • No caso de serviços web semânticos, descoberta, matching e composição automáticos de serviços podem ser feitos, tomando por base a conceituação compartilhada oferecida pela ontologia.Uso de Ontologias na ES – Processo de
Desenvolvimento
• Manipulação de Erros: Outro caso mais específico do problema de acesso à informação, contextualizado nas fases de teste, depuração e manutenção. Quando um erro é apresentado, o que ele significa? Como tratá-lo? • Geralmente, é útil encontrar ocorrências similares do mesmo erro e, para tal, desenvolvedores, muitas vezes, recorrem a mecanismos de busca bem gerais, como o Google. O problema é que o contexto pode ser muito diferente... • Ontologias podem ser usadas para se fazer uma mediação entre os diferentes contextos, tomando por base anotações semânticas baseadas em ontologia.Uso de Ontologias na ES – Processo de
Desenvolvimento
• Testes: O projeto de casos de teste requer conhecimento tanto do domínio do problema quanto do domínio da solução e das técnicas a serem aplicadas. • Ontologias de domínio podem ser usadas para apoiar testadores, que normalmente não estão tão envolvidos com o domínio quanto desenvolvedores, a compreender melhor o domínio do sistema a ser testado. • Além disso, anotações semânticas podem ser usadas para ligar informação relacionada no projeto (ou até em outros projetos), como p.ex., casos de teste e requisitos.Uso de Ontologias na ES – Processo de
Desenvolvimento
• Manutenção: Durante a manutenção, há muitos tipos de informação relacionados, mas sem uma conexão explícita, tornando difícil a solução de um problema. • Ontologias podem ajudar a conectar comunicações eletrônicas (e-mails, listas de discussão), relatos de bugs e itens de software afetados, provendo uma camada para integrar dados de diferentes fontes (interoperabilidade semântica) em um modelo semântico unificado. • Os dados combinados podem ser, então, usados para derivar informação adicional por meio de inferências ou mineração de dados, informação essa que não estava explicitamente declarada em nenhuma das bases.Uso de Ontologias na ES
• Ambientes de Desenvolvimento de Software (ADSs): precisam ter modelos de processos, de modo a compreender, dentre outros, as atividades que estão sendo realizadas e as dependências entre artefatos, de modo a apoiar mais efetivamente os desenvolvedores na realização de suas tarefas. • Ontologias do domínio de processos de software podem contribuir para a realização de ADSs Semânticos, provendo a base para um suporte baseado em conhecimento e sensível ao contexto do usuário.Desenvolvimento Distribuído de Software
• Desenvolvimento Distribuído de Software (DDS): colaboração entre grupos de desenvolvedores que
trabalham em conjunto, localizados em cidades ou países diferentes.
34
Desafios do DDS - Comunicação
• Awareness: Consciência, Percepção e Conhecimento das Atividades Desenvolvidas. – O que está acontecendo? – Quem está realizando determinada tarefa? – Onde ela está acontecendo? – Quem precisa ser notificado acerca de novas informações? – Qual a dependência entre requisitos / funcionalidades? • Contexto: Qual o contexto de cada integrante da equipe?35
Desafios do DDS - Comunicação
• Dispersão Geográfica e Temporal: – Dificuldade de obter consenso. – Estados físicos e mentais dos participantes. • Estilos de Comunicação: Preocupações com a forma e o conteúdo da comunicação. • Formas de Comunicação: – Comunicação informal é reduzida. – Necessidade de comunicação indireta. – Prejuízo para a riqueza de contexto. – Sentido de uma frase não está apenas nas palavras. Outros elementos dão sentido a uma frase, tais como tom de voz, linguagem corporal, expressão facial, uso do silêncio etc.Uso de Ontologias no DDS
• Coordenação: sua necessidade tem origem nas
dependências entre as tarefas do processo de software, o que requer que diferentes pessoas coordenem seus
trabalhos para atingir um objetivo ou produto comum.
• Problema: Falta de consciência (awareness) do trabalho dos outros. • Os usos de ontologias discutido nos problemas relacionados ao acesso à informação são igualmente úteis para a formação da consciência, em especial: anotação semântica de itens de conhecimento, mecanismos de busca baseados em ontologias, pró-atividade na disseminação de conhecimento.
Agentes
• Agentes são sistemas computacionais capazes de ações autônomas em algum ambiente, a fim de alcançar seus objetivos de projeto. • Um agente, tipicamente, sente seu ambiente (por sensores físicos, no caso de agentes situados na parte do mundo real, ou por sensores de software no caso de agentes de software) e disponibiliza um repertório de ações que podem ser executadas para modificar o ambiente, o qual pode responder não-deterministicamente à execução dessas ações.Sistemas Multiagentes (SMAs)
• São sistemas computacionais compostos por diversos agentes interagindo no ambiente a fim de alcançar seus objetivos de projeto. • Em um SMA, agentes precisam se comunicar a fim de alcançar melhor os seus objetivos ou os objetivos do sistema/sociedade no qual eles existem. • Em um SMA, agentes precisam coordenar suas ações com a de outros agentes para atingir os objetivos do sistema ou sociedade. • Ontologias podem ser usadas para associar significado às mensagens trocadas por agentes, ou para prover uma conceituação comum para agentes em um SMA.Categorização de Ontologias em ES
• Segundo Happel et al. (2006), o uso de ontologias na ES pode ser categorizado segundo duas dimensões principais: – Uso em tempo de desenvolvimento x em tempo de execução – Uso para tratar problemas relativos ao domínio x aspectos de infraestruturaCategorização de Ontologias em ES
Ontology-driven development (ODD): uso de ontologias em tempo de desenvolvimento, descrevendo o domínio do problemaCategorização de Ontologias em ES
Ontology-enabled development (OED): uso de ontologias em tempo de desenvolvimento com o objetivo de apoiar desenvolvedores em suas tarefas.Categorização de Ontologias em ES
Ontology-based architectures (OBA): uso de ontologias como um artefato em tempo de execução (ontologia como um elemento central na arquitetura do software).Categorização de Ontologias em ES
Ontology-enabled architectures (OEA):
uso de ontologias
para prover suporte de infraestrura em tempo real (p.ex., descoberta automática de
Categorização de Ontologias em ES
• Ruiz e Hilera (2006) propõem uma taxonomia de ontologias para Engenharia e Tecnologia de Software (SET) formada por duas categorias genéricas: – Ontologias do Domínio de SET: descrevem conhecimento acerca do domínio de SET. – Ontologias como Artefatos de Software: usadas como artefatos durante o processo de software.Categorização de Ontologias em ES
• Ontologias do Domínio de SET são classificadas
considerando uma distinção entre Engenharia de Software e Tecnologia de Software, conforme estabelecido nas
Categorização de Ontologias em ES
• Ontologias de ES, quanto à cobertura do domínio de ES, podem ser ontologias de todo o domínio (ditas genéricas) ou de um subdomínio (ditas específicas). • Ontologias de todo domínio têm o ambicioso objetivo de modelar o corpo de conhecimento de ES por completo. São baseadas em fontes como SWEBOK, livros e glossários. • Ontologias de subdomínios buscam tratar a conceituação de apenas parte (subdomínio) desta disciplina. – Algumas ontologias de subdomínios de SET são elaboradas levando em conta a possibilidade de integração com outras ontologias de subdomínio, visando estabelecer uma rede de ontologias (ontology network).Categorização de Ontologias em ES
• Software Engineering (SE) Ontologies – Generic (all-domain) – Specific (sub-domain) • Software Requirements • Software Design • Software Construction • Software Testing • Software Maintenance • Software Configuration Management • Software Quality • Software Engineering Tools & Methods • Software Engineering Process • Software Engineering ManagementCategorização de Ontologias em ES
• As categorias e subcategorias da taxonomia da ACM foram usadas para classificar Ontologias de Tecnologia de
Categorização de Ontologias em ES
• Software Technology (ST) – Software • Programming Techniques • Programming Languages • Operating Systems – Data • Data Structures • Data Storage Representations • Data Encryption • Coding and Information Theory • Files – Information Technology and Systems • Models and Principles • Database Management • Information Storage and Retrieval • Information Technology and Systems Applications • Information Interfaces and Representation (HCI)Categorização de Ontologias em ES
• Ontologias como Artefatos de Software são classificadas em um primeiro nível em ontologias como artefatos usados em tempo de desenvolvimento ou usados em tempo de execução. • A categoria das ontologias usadas em tempo de desenvolvimento é subdividida com base na função dos processos de ciclo de vida nos quais elas são principalmente usadas, tomando por base a ISO/IEC 15504-2 (1998). • Para simplificar, apenas dois níveis de quebra (grupos de processo e categorias de processo) foram usados, tendo sido desconsiderados, portanto, o nível de processos individuais.Categorização de Ontologias em ES
• Grupos e Categorias de Processo da ISO 15504-2 (1998) – Processos Primários • Cliente-Fornecedor • Engenharia – Processos de Apoio • Apoio – Processos Organizacionais • Gerência • Organização • Taxonomia de Ontologias como Artefatos usados em tempo de desenvolvimento: – Para Processos de Engenharia • Desenvolvimento • Manutenção – Para Outros Processos • Cliente-Fornecedor • Apoio • Gerência • OrganizaçãoCategorização de Ontologias em ES
• A categoria das ontologias usadas em tempo de execução é subdividida em duas sub-categorias, tomando por base a classificação de Guarino:
– Ontologias como artefatos arquitetônicos: quando a ontologia é parte da arquitetura do software, sendo um componente adicional que trabalha com o resto do sistema em tempo de execução para atingir os objetivos do software.
– Ontologias como recursos de informação: quando a ontologia é usada pelo software em tempo de execução para um
propósito específico, atuando como um recurso de
informação, normalmente remoto, sobre o qual o software opera, realizando, p.ex., consultas específicas.