




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Semântica refere-se ao significado dos construtores sintáticos em uma determinada linguagem. Para exemplificar o que é semântica no contexto de sistemas ...
Tipologia: Notas de aula
1 / 102
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Dissertação de Mestrado apresentada ao Programa de Pós-Graduação em Informática da Universidade Federal do Espírito Santo, como requisito parcial para obtenção do Grau de Mestre em Informática. Orientador: Prof. Dr. Ricardo de Almeida Falbo Co-orientador: Prof. Dr. Giancarlo Guizzardi
Ao Sinhozinho, Sinhazinha, Entojo e Pobre...
AGRADECIMENTOS
À FAPES (Fundação de apoio à Ciência e Tecnologia do Espírito Santo), pelo apoio financeiro, viabilizado por meio da bolsa de mestrado.
ABSTRACT The increasing interest in the area of integration between software systems has promoted the emergence of approaches to address this issue. In general, systems integration can occur at four levels, namely hardware, platform, syntactic and semantic levels. At the semantic level, which is the focus of this work, the meaning of the involved components must be as clear as possible during the integration process. In other words, the intended meaning of concepts in the data schema, operations signatures and services should be made explicit. In this context, a domain ontology can be used to define an explicit representation of this shared conceptualization and as reference during the integration process. This work applies the approach OBA-SI, which is an approach of ontology-based semantic integration, to integrate the data layer of the tools that support the software project planning, control and tracking. During the integration process, a software process ontology (SPO) is used to add semantics to the concepts of the tools involved in this process. In order to suitably serve as a reference model, the SPO has gone through a reengineering process based on UFO (Unified Foundational Ontology).
O gerenciamento de projetos envolve a aplicação de conhecimento, habilidades, ferramentas e técnicas às atividades do projeto, a fim de atender aos seus requisitos. Um projeto é um empreendimento integrado e requer que cada um de seus processos seja alinhado e conectado de forma apropriada com os outros processos para facilitar sua coordenação. As ações adotadas durante um processo em geral afetam, além do processo em si, outros processos relacionados. O gerenciamento de projetos bem sucedido inclui gerenciar ativamente essas interações para cumprir os requisitos das partes interessadas (PMI, 2008).
Entre os processos de um projeto, podemos destacar os processos de Planejamento de Projeto e Acompanhamento e Controle de Projeto. Durante o planejamento do projeto, o processo do projeto deve ser definido, o cronograma estabelecido, bem como um plano de recursos humanos. Baseado neste planejamento, com o projeto em andamento, é necessário acompanhar e controlar o projeto, verificando se o planejamento está sendo cumprido, se ele precisa ser revisto e o que deve ser feito para corrigir eventuais desvios.
No contexto de projetos de software, durante o planejamento do projeto, processos de software padrão são utilizados como base para a definição de processos de projeto. Uma vez que os processos de projeto estão definidos, é necessário definir a equipe do projeto, quais os papéis que um recurso humano vai desempenhar em uma determinada atividade, quais os tipos de recursos requeridos e assim por diante. Durante a execução do projeto, as atividades devem ser controladas e monitoradas, registrando seu tempo de duração e a participação de cada recurso humano na atividade, bem como o esforço por ele despendido.
Geralmente, diferentes ferramentas são usadas para apoiar tais tarefas. Considerando que essas tarefas são iterativas e inter-relacionadas, idealmente essas ferramentas devem interoperar para apoiar efetivamente os processos de gerência de projeto.
aprendizado e resolução de problemas no domínio. Para que atinja tais objetivos, uma ontologia de referência deve ser construída levando em conta uma ontologia de fundamentação (GUIZZARDI et al., 2008).
Levando em consideração as motivações apresentadas, o objetivo geral deste trabalho é integrar conceitual e semanticamente ferramentas de apoio ao processo de Gerência de Projetos de Software na camada de dados. Para a integração será utilizada, então, uma ontologia de referência do domínio de processos de software que considera as distinções ontológicas feitas em uma ontologia de fundamentação, a UFO ( Unified Foundational Ontology ) (GUIZZARDI, 2005) (GUIZZARDI et al., 2008).
Esse objetivo geral pode ser detalhado nos seguintes objetivos específicos: Fazer a reengenharia da Ontologia de Processo de Software baseado na UFO: Uma vez que já existe uma ontologia de processos de software desenvolvida (BERTOLLO, 2006) e parcialmente alinhada aos conceitos da UFO (GUIZZARDI et al., 2008), é um objetivo específico desta dissertação avançar na reengenharia dessa ontologia. Essa reengenharia tem o intuito de explicitar os compromissos ontológicos da ontologia de processos de software. Aplicar uma abordagem de integração semântica para integrar conceitualmente as ferramentas escolhidas. Neste trabalho, tem-se como ponto de partida um conjunto inicial de ferramentas a serem integradas: as ferramentas de apoio ao processo de Gerência de Projetos do ambiente ODE ( Ontology-based software Development Environment ) (FALBO et al., 2005). Assim, é necessário selecionar uma ferramenta de Gerência de Projeto que atenda a requisitos tidos como necessários para que o processo de Gerência de Projetos de
Software seja atendido após a integração. Para a integração, foi aplicada OBA-SI (CALHAU; FALBO, 2010), uma abordagem de integração semântica de sistemas de informação.
Para alcançar os objetivos listados na seção anterior, foram realizadas as atividades descritas a seguir. Inicialmente, foi feito um levantamento bibliográfico relacionado ao tema Interoperabilidade Semântica. O intuito deste estudo foi levantar como o problema de interoperabilidade está sendo tratado pela comunidade científica. Durante este estudo notou-se que, apesar de existir um consenso sobre a importância do uso de ontologias para a integração semântica, pouco se relata sobre a qualidade dessas ontologias e como elas, de fato, devem ser usadas. Sendo assim, optou-se por, não apenas utilizar uma ontologia no processo de integração, mas utilizar uma ontologia de domínio que fosse elaborada com base em uma ontologia de fundamentação. Uma vez que este trabalho visa discutir a integração no nível conceitual, foi de extrema importância utilizar uma abordagem de integração semântica que enfoque os aspectos não computacionais da integração. Como as ferramentas a serem integradas são ferramentas que apoiam a gerência de projetos de software, foi feito um estudo sobre este domínio. O estudo possibilitou reconhecer dentro do ambiente ODE quais eram os pontos que não eram devidamente apoiados pelas ferramentas e, consequentemente, quais os requisitos que a ferramenta externa deveria atender. Uma vez que as ferramentas seriam integradas no nível conceitual, a ontologia utilizada como interlíngua entre os modelos conceituais das ferramentas deveria ser construída de maneira a maximizar a expressividade na captura de aspetos fundamentais do domínio subjacente e tornar explícitos os compromissos ontológicos. Para tal, a ontologia de processo de software passou por um processo de reengenharia baseado na UFO para atender a tais requisitos.
Atualmente, cresce a necessidade dos sistemas de informação interoperarem de forma a apoiarem os objetivos das organizações. Podemos citar como uma das causas o crescente número de fusões entre empresas. Quando isso ocorre, sistemas que antes trabalhavam de forma independente passam a ter que trabalhar integrados para apoiar os processos de negócio satisfatoriamente. Podemos citar, ainda, ferramentas que executam tarefas complementares dentro de um processo como, por exemplo, ferramentas que apoiam diferentes fases do processo de desenvolvimento de software. Durante esse processo é comum que artefatos produzidos em uma fase sejam consumidos por outra e, portanto, é ideal que essas ferramentas sejam capazes de se comunicar entre si, sem a necessidade de intervenção manual.
Na busca por soluções para o problema apresentado acima, tem-se despendido muito tempo e dinheiro. Em 2002, estimava-se que as grandes organizações gastavam cerca de 40% do seu orçamento destinado à tecnologia com este problema e que isto aumentaria com o passar dos anos (SERAIN, 2002). Isto implicou no crescimento do interesse na área de interoperabilidade e, consequentemente, surgiram abordagens que visam solucionar este problema. As abordagens diferenciam-se entre si, entre outros fatores, pelo nível de interoperabilidade que se deseja entre os componentes de software.
Este capítulo aborda o problema de Interoperabilidade Semântica, bem como as possíveis abordagens para a sua solução. Ele está estruturado da seguinte forma: a Seção 2.1 apresenta o problema da falta de interoperabilidade; a Seção 2. apresenta a abordagem de integração semântica adotada neste trabalho; a Seção 2.3 apresenta um cenário de necessidade de integração de ferramentas para apoiar o planejamento de projetos de software; e a Seção 2.4, por fim, apresenta as considerações finais do capítulo.
Interoperabilidade em um contexto amplo pode ser definida como a habilidade de operar em conjunto ou, mais especificamente no contexto de sistemas computacionais, como a capacidade de trocar dados e serviços entre aplicativos ou componentes de aplicativos (VERNADAT 1996, WEGNER, 1996). Esses aplicativos, por sua vez, podem ser classificados de acordo com a heterogeneidade existente entre eles (IZZA et al. 2005). Heterogêneo significa que cada aplicação implementa seu próprio modelo de dados e de processo. Quanto maior é a diferença entre esses modelos, sejam por conflitos sintáticos ou semânticos, mais difícil e complexo é torná-los interoperáveis (IZZA, 2009).
Há diversas dimensões de integração que ajudam a caracterizar a noção de integração e que podem ser usadas para classificar as abordagens de integração. Izza (2009) propõe quatro dimensões:
Escopo da integração: A integração pode se dar dentro da organização, envolvendo apenas aplicações da mesma, ou entre organizações, conectando aplicações de diferentes parceiros. Pontos de vista da integração: A integração pode focar o ponto de vista do usuário, do projetista ou do programador. O ponto de vista do usuário preocupa-se as diferentes visões que especialistas de domínio e usuários de negócio têm. O ponto de vista do projetista enfoca os diferentes modelos usados durante o projeto de sistemas de informação (visão conceitual). Finalmente, o ponto de vista do programador refere-se à implementação dos sistemas. Camadas de integração: A integração de aplicativos pode ocorrer em três camadas: camada de dados, camada de mensagem ou serviço e camada de processo. A camada de dados lida com a troca de dados entre vários repositórios. Neste ponto, uma aplicação manipula os dados de outra aplicação diretamente no banco de dados, através de sua interface nativa, ignorando a lógica da aplicação. A integração na camada de mensagens
Conforme discutido anteriormente, a integração pode acontecer em diferentes níveis, a saber: nível de hardware, plataforma, sintático e semântico. Os de maior interesse para este trabalho são os níveis sintático e semântico, os quais são discutidos mais detalhadamente nesta seção.
A sintaxe define uma lista de palavras válidas em uma determinada linguagem e as regras que governam como essas palavras serão combinadas para que formem sentenças válidas (POKRAEV, 2009). Dois ou mais sistemas estão integrados sintaticamente quando eles são capazes de trocar dados e serviços. Para tal, é essencial a especificação de protocolos de comunicação que descrevam como esta troca vai ocorrer. Podemos citar XML ou SQL como padrões que proveem interoperabilidade sintática.
Quando dois sistemas estão integrados sintaticamente, é possível detectar erros sintáticos como, por exemplo, chamar um serviço passando um parâmetro de tipo incompatível com o esperado. Contudo, abordagens sintáticas não preveem erros semânticos, onde a sintaxe está correta, contudo, a semântica não. Estudos apontavam em 2005 que 70% das tentativas de integração que se limitavam a este nível não eram bem sucedidas (HALLER et al, 2005).
Lidar com o problema de integração sintática foge do escopo desta dissertação. Por esta razão nós focaremos no problema de interoperabilidade semântica
Semântica refere-se ao significado dos construtores sintáticos em uma determinada linguagem. Para exemplificar o que é semântica no contexto de sistemas computacionais, podemos pensar em um método escrito em Java com a seguinte assinatura:
public Double CalculaComprimentoCirculo (Double x); Este método recebe como parâmetro o raio de um círculo e calcula o comprimento do mesmo. Suponha um programador que utilizará este método e que conheça a linguagem. Ele será capaz de deduzir, apenas olhando, que o método calcula o comprimento de um círculo. Contudo, uma vez que a semântica do parâmetro x não está explícita, caberá ao programador atribuir significado a esse parâmetro. Tal situação pode trazer consequências indesejadas, pois o programador pode entender que x representa o diâmetro do círculo e usar incorretamente o método. Desta forma, mesmo conhecendo a sintaxe da linguagem, ocorreria um erro, pois a semântica do parâmetro não está explícita.
Neste contexto, podemos definir semântica como sendo o mapeamento de um objeto de um sistema de informação para o objeto no mundo real que ele representa (POKRAEV, 2009). Desta forma, interoperabilidade semântica é a capacidade de dois ou mais sistemas heterogêneos e distribuídos trabalharem em conjunto, compartilhando as informações entre eles com entendimento comum de seu significado (BURANARACH, 2001).
De acordo com Pokraev (2009), ao integrar dois sistemas, podemos ter os seguintes problemas de interoperabilidade semântica:
i. Diferentes sistemas usam o mesmo símbolo para representar conceitos disjuntos. Por exemplo, um sistema usa o símbolo “Amazonas” para representar o conceito “estado venezuelano”, enquanto outro sistema