Universidade Federal do Espírito Santo UFES Centro Tecnológico CT
Departamento de Informática DI Engenharia de Computação
Disciplina: Projeto de Graduação INF02850 Orientador: Prof. Dr. Giancarlo Guizzardi Coorientador: Prof. Dr. João Paulo Almeida Andrade
Aluno: Alessander Botti Benevides Matrícula: 2002102326
Período: 2007/1
Uma Ferramenta baseada em Modelos para Modelagem Conceitual ontologicamente bem
fundada
Alessander Botti Benevides
Uma Ferramenta baseada em Modelos para Modelagem Conceitual ontologicamente bem
fundada
Monografia apresentada ao Programa de Graduação em Engenharia de Computação do Centro Tecnológico da Universidade Federal do Espírito Santo, como requisito parcial para obtenção do Titulo de Engenheiro de Computação.
Orientador: Prof. Dr. Giancarlo Guizzardi
Coorientador: Prof. Dr. João Paulo Almeida
Andrade
Alessander Botti Benevides
Uma Ferramenta baseada em Modelos para Modelagem Conceitual ontologicamente bem
fundada
Monografia apresentada ao Programa de Graduação em Engenharia de Computação do Centro Tecnológico da Universidade Federal do Espírito Santo, como requisito parcial para obtenção do Titulo de Engenheiro de Computação.
Aprovada em 13 de agosto de 2007
Comissão Examinadora
________________________________________________________
Prof. Dr. Giancarlo Guizzardi Universidade Federal do Espírito Santo
Orientador
________________________________________________________
Prof. Dr. João Paulo Almeida Andrade Universidade Federal do Espírito Santo
Coorientador
à meus pais, que me ensinaram o valor da perseverança.
à meu irmão, pela amizade e apoio nas disciplinas em que houve a oportunidade de concluirmos juntos.
à minha namorada, Renata, pelo amor e compreensão durante os anos de dedicação a este curso.
aos mestres que conheci, pelo incentivo, amizade e conhecimentos transmitidos.
à todos que me auxiliaram a realizar esse
Agradecimentos
Aos meus pais, pelo auxílio; ao meu irmão pela amizade e apoio; e à minha namorada, Renata, pelo amor e compreensão.
Ao professor Giancarlo, por aceitarme como aluno de iniciação científica, orientar meu projeto de graduação e ser meu orientador no mestrado.
Ao professor João Paulo, meu coorientador, pela assistência na realização desse projeto.
Ao professor José Gonçalves, por apresentarme ao professor Giancarlo e viabilizar minha bolsa de iniciação científica.
Ao CNPq e a todos que me auxiliaram nesse projeto.
"Deveríamos ser capazes de recusarnos a viver se o preço da vida é a tortura de seres sensíveis."
Mahatma Gandhi
“O que se pode em geral dizer, podese dizer claramente; e sobre aquilo de que não se pode falar, devese calar.”
Ludwig Wittgenstein
Resumo
O objetivo dessa monografia é o estudo da proposta de alteração do metamodelo da linguagem UML 2.0, feita em [Guizzardi, 2005], e posterior construção de uma ferramenta para modelagem conceitual ontologicamente bemfundada.
Ao longo da monografia, são mostradas as propostas do framework MDA, as limitações da linguagem UML 2.0 e a necessidade da utilização de uma linguagem formal adicional para a escrita de restrições. Também é explicitada a análise feita na tese supracitada, na qual tentase mapear conceitos da ontologia fundacional UFO à metaclasses do metamodelo UML 2.0. A partir da análise anterior, é colocada uma proposta de alteração ao metamodelo UML, para que o mesmo seja compatível com a ontologia fundacional UFO. Esse novo metamodelo é a sintaxe abstrata da linguagem utilizada na escrita de ontologias de domínio na ferramenta construída nessa monografia.
Palavraschave: modelagem, metamodelagem, ontologia, mereologia, UFO, MDA, UML,
OCL, Eclipse, EMF, GMF, MDT.
Abstract
The objective of this monograph is the study of the alteration proposal of the metamodel of the language UML 2.0, made in [Guizzardi, 2005], and further construction of a tool for ontologically wellestablished conceptual modelling.
Throughout the monograph, are shown the proposals of the MDA framework, the limitations of UML 2.0 language, and the necessity of the use of an additional formal language for the writing of restrictions. Also is explicited the analysis made in the abovementioned thesis, in which it is tried to map concepts of the foundational ontology UFO to metaclasses of the UML 2.0 metamodel.
From the previous analysis, it is placed a proposal of alteration to the UML metamodel, so that the same is compatible with the foundational ontology UFO. This new metamodel is the abstract syntax of the language used in the writing of domain ontologies in the tool constructed in this monograph.
Keywords: modelling, metamodelling, ontology, mereology, UFO, MDA, UML, OCL, Eclipse,
EMF, GMF, MDT.
Lista de Figuras
Figura 1: Símbolo usual para plataforma...22
Figura 2: Transformação de modelo...24
Figura 3: Marcação em um modelo...26
Figura 4: Transformação entre metamodelos...27
Figura 5: Aplicação de padrões...27
Figura 6: Padrões como nomes de marcas...28
Figura 7: Transformação de um PIM em um PSM...30
Figura 8: Segunda transformação...31
Figura 9: Terceira transformação...31
Figura 10: PIM, PSM, aplicação e plataforma...32
Figura 11: PIM, PSM, aplicação e plataforma, sob pontos de vista diferentes...32
Figura 12: Três visões distintas do que seriam plataformas...33
Figura 13: Abstração de plataformas...33
Figura 14: Transformação por mapeamento entre metamodelos...34
Figura 15: Modelo expresso em um diagrama UML...38
Figura 16: Fragmento do metamodelo da UFO referente à classes e generalização...51
Figura 17: Fragmento revisado do metamodelo UML...52
Figura 18: Fragmento do metamodelo da UFO referente à classificadores e propriedades...57
Figura 19: Fragmento revisado do metamodelo UML...58
Figura 20: Fragmento do metamodelo da UFO referente à agregação e composição...65
Figura 21: Fragmento revisado do metamodelo UML...65
Figura 22: Metamodelo unificado...73
Figura 23: 1ª, 2ª e 3ª transformações...75
Figura 24: Diagrama das transformações do metamodelo...76
Figura 25: 4ª transformação...77
Figura 26: 5ª transformação...77
Figura 27: 6ª transformação...77
Figura 28: 7ª transformação...78
Figura 29: 8ª transformação...78
Figura 30: Exemplo de ontologia de domínio...79
Figura 31: Ontologia de domínio construída no editor...80
Figura 32: Exemplo de validação em tempo real...81
Figura 33: Exemplo de validação manual...82
Lista de Tabelas
Tabela 1: Especificação de operações...70
Tabela 2: Especificação de derivações...71
Lista de Abreviaturas
ALU Arithmetic and Logic Unit (Unidade Aritmética e Lógica);
BNF Backus Naur Form (Forma Backus Naur);
CD Compact Disc (Disco Compacto);
CIM Computation Independent Model (Modelo Independente de Computação);
CNPq Conselho Nacional de Desenvolvimento Científico e Tecnológico;
CPU Central Process Unit (Unidade Central de Processamento);
EM Extensional Mereology (Mereologia Extensional);
EMF Eclipse Modeling Framework (Suporte à Modelagem no Eclipse);
EMOF Essential MOF (MOF Essencial);
GEF Graphical Editing Framework (Suporte à Edição Gráfica);
GMF Graphical Modeling Framework (Suporte à Modelagem Gráfica);
IDE Integrated Development Environment (Ambiente Integrado de Desenvolvimento);
JET Java Emitter Templates (Emissor Java de Padrões);
MDA ModelDriven Architecture (Arquitetura dirigida à Modelo);
MDE ModelDriven Engineering (Engenharia dirigida à Modelo);
MDT Model Development Tools (Ferramentas de Desenvolvimento de Modelo);
MM Minimum Mereology (Mereologia Mínima);
MML's Modeling Maturity Levels (Níveis de Maturidade de Modelagem);
MOF Meta Object Facility (Aparato de Meta Objeto);
OCL Object Constraint Language (Linguagem de Restrição de Objeto);
OWL Web Ontology Language (Linguagem de Ontologia para a Web);
OMG Object Management Group (Grupo de Gerência de Objeto);
PIM Platform Independent Model (Modelo Independente de Plataforma);
PSM Platform Specific Model (Modelo Específico de Plataforma);
SQL Structured Query Language (Linguagem de Consulta Estruturada);
UFES Universidade Federal do Espírito Santo;
UFO Unified Foundational Ontology (Ontologia Fundacional Unificada);
UML Unified Modeling Language (Linguagem Unificada de Modelagem).
Sumário
1. Introdução...15
1. Estrutura da monografia...16
2. Pressupostos Teóricos...18
1. Da (meta)Modelagem...18
1. Da Modelagem...18
1. Níveis de maturidade de modelagem...18
1. Nível 0: Nenhuma especificação...18
2. Nível 1: Textual...19
3. Nível 2: Texto com diagramas...19
4. Nível 3: Modelos com texto...19
5. Nível 4: Modelos precisos...20
6. Nível 5: Somente modelos...20
2. Da Metamodelagem...20
2. MDA...21
1. Conceitos Básicos...21
2. Transformações MDA...24
1. Mapeamentos...24
1. Mapeamento entre tipos...24
2. Mapeamento em nível de instâncias...25
3. Combinação das duas formas de mapeamento anteriores...25
4. Templates...25
2. Métodos de Transformação...25
1. Marcação...26
2. Transformação entre Metamodelos...26
3. Aplicação de Padrões...27
3. Graus de Automação e Suporte Computacional...28
1. Transformação Manual...28
2. Transformação de um PIM preparado por um perfil...29
3. Transformação utilizando Padrões e Marcas...29
4. Transformações Automáticas...29
3. Outras Capacidades MDA...30
1. Múltiplas Aplicações das Transformações MDA...30
2. Transformações Gerais Modelo para Modelo...34
3. Reuso de Mapeamentos...34
1. Extensão...34
2. Combinação...35
3. OCL...36
1. Propriedades da linguagem OCL...36
2. Aplicação em diagramas de classe...37
1. Regras de derivação...38
2. Valores Default...38
3. Especificação de operações de consulta...39
4. Invariantes...39
5. Précondições e póscondições...39
6. Mensagens em póscondições...40
7. Definição de classes derivadas...40
8. Multiplicidade dinâmica...40
9. Multiplicidade opcional...40
10. Restrições ou...41
3. Estilos de modelagem...41
1. Definição de atributos ou operações...41
2. A restrição de subconjunto...42
3. Herança X Invariantes...42
4. MDA, UML e OCL...44
1. Modelagem com UML/OCL...44
2. Metamodelagem com UML/OCL...45
3. Transformações definidas com UML/OCL...45
5. Metamodelagem utilizandose o Eclipse...46
1. MOF...47
2. EMF...47
3. GMF...47
3. Das Limitações da Modelagem Conceitual Utilizandose UML 2.0...49
1. Classes e Generalização...49
2. Classificadores e Propriedades...56
3. Agregação e Composição...63
4. Invariantes adicionais...69
5. Definição de métodos em OCL...70
6. Definição de metaatributos/metaassociações derivados...71
4. Construção e Uso da Ferramenta de Modelagem...72
1. Análise das transformações...74
2. Estudo de Caso...78
5. Conclusão...83
1. Das dificuldades...83
2. Trabalhos futuros...85
6. Referências...86
7. Apêndice 1: XML's...87
1. Código do metamodelo ECore...87
2. Código do modelo Gen...92
3. Código do modelo GMFGraph...96
8. Apêndice 2: Códigos Java das decorações...144
1. Código Java para a implementação da metaclasse Collective...144
2. Código Java para a implementação da metaclasse GeneralizationSet...149
3. Código Java para a implementação das relações...155
1. SubQuantityOfCustomFigure.java...155
2. SubQuantityOfEditPart.java...157
3. GeneralizationCustomFigure.java...161
4. DerivationCustomFigure.java...162
1. Introdução
O objetivo dessa monografia é a construção de um editor para a construção de modelos conceituais ontologicamente bemfundados.
A motivação para a criação de tal editor é a avaliação da linguagem UML 2.0 (Unified Modelling Language) [http://www.uml.org], exposta em [Guizzardi, 2005], no qual é proposto um framework para a avaliação de linguagens de modelagem e, utilizandose o mesmo, é mostrada a inadequação da linguagem UML 2.0 em representar uma série de características da realidade.
[Guizzardi, 2005] também constrói um metamodelo revisado da UML 2.0 e um perfil de modelagem, que são a especificação da linguagem de modelagem ontologicamente bemfundada utilizada no presente projeto como base para a criação do editor.
A avaliação da linguagem UML 2.0 foi feita comparandose o metamodelo da mesma com a teoria ontológica formal UFO (Unified Foundational Ontology), também definida em [Guizzardi, 2005]. Essa avaliação mostra a incapacidade da UML em representar diversos tipos de relações ontológicas propostas na UFO.
A ontologia UFO foi a ontologia fundacional adotada na avaliação da linguagem UML por ser teoricamente bem fundamentada (baseada em teorias filosóficas formais e que possuem corroboração empírica) e relevante para a prática de construção de modelos conceituais em sistemas sensíveis ao contexto.
Para a realização desse projeto também foi estudada a necessidade da utilização de uma linguagem formal adicional, no caso OCL 2.0 (Object Constraint Language) [10], para ampliar a expressividade dos modelos construídos em UML. Essa linguagem também é utilizada na tradução das restrições propostas no perfil de modelagem exposto em [Guizzardi, 2005], escritas em linguagem natural, para OCL 2.0.
Outra linguagem estudada foi a linguagem ECore [http://download.
eclipse.org/modeling/emf/emf/javadoc/2.3.1/ org/ eclipse/ emf/ ecore/ packagesummary.html], na qual foi escrito o metamodelo revisado da UML 2.0. Esse metamodelo, juntamente com as restrições escritas em OCL 2.0, passará por diversas transformações até que seja construído um editor no ambiente Eclipse [http://www.eclipse.org].
Nessa monografia também é abordado o framework MDA (ModelDriven Architecture) [http://www.omg.org/mda], que auxilia nas diversas transformações entre metamodelos, necessárias à criação do editor.
A importância da criação desse editor é que ele representa uma prova de conceito da
ontologia fundacional UFO e auxilia no processo de engenharia de ontologias, provendo
metaclasses e relações que permitem a criação de modelos sem ambigüidades e proíbem a criação de modelos não intencionais, ou seja, de modelos que não correspondem à realidade, na prática da modelagem conceitual.
O editor também tem importância na criação de modelos compatíveis com a tecnologia MDA, pois auxiliando na criação de modelos bem definidos, aproximase a possibilidade da realização de transformações automáticas entre modelos.
1.1 Estrutura da monografia
Para facilitar a compreensão dessa monografia, é mostrada aqui uma breve descrição dos assuntos dos capítulos, bem como suas relações com os demais capítulos.
O cap. 2 trata dos pressupostos teóricos necessários ao entendimento dessa monografia. A seção 2.1. expõe brevemente as principais características e objetivos da (meta)modelagem. A seção 2.2. mostra o framework MDA, um recente paradigma em modelagem e transformação de conhecimento. Suas características e técnicas são explicadas detalhadamente. O leitor não deverá perder de vista que MDA é a idéia central que permeia a criação e as transformações entre modelos realizadas nesse projeto e explicadas no cap. 4. A seção 2.3. mostra as principais capacidades e características que tornam a linguagem OCL 2.0, atualmente, a linguagem formal mais adequada para a escrita de restrições em (meta)modelos no contexto do paradigma MDA. A seção 2.4. trata da relação entre a proposta MDA e as linguagens de modelagem UML e OCL. O objetivo desse capítulo é expor a incapacidade da linguagem UML para representar uma série de características da realidade, destacandose a importância da utilização da linguagem OCL, em adição à UML, nas atividades de (meta)modelagem. Essas considerações são feitas, sempre que possível, no contexto MDA. A seção 2.5. trata do uso da ferramenta Eclipse para a criação de metamodelos e editores.
O cap. 3 é baseado em [Guizzardi, 2005]. Nele são expostas as limitações e incoerências do metamodelo da linguagem UML 2.0, e as conseqüências delas na atividade de modelagem conceitual. Nas primeiras três seções são analisadas características distintas desse metamodelo e, ao final de cada uma dessas seções, são exibidas uma revisão do metamodelo e um perfil de modelagem que expõe restrições, em linguagem natural e traduzidas para OCL 2.0, necessárias ao metamodelo relacionado.
O cap. 4 mostra os resultados obtidos nesse projeto. Primeiramente é exposto um metamodelo que unifica os três fragmentos revisados do metamodelo UML 2.0 propostos no cap. 6.
A seguir, são exibidas as técnicas MDA utilizadas nas transformações sucessivas realizadas no
metamodelo, para que seja criado um editor na plataforma Eclipse. Por fim são mostrados alguns
estudos de caso da ferramenta implementada.
obstáculos, avaliações das ferramentas utilizadas e trabalhos futuros.
No cap. 6 constam as referências utilizadas na elaboração dessa monografia.
O Apêndice 1 mostra os códigos XML criados nas diversas transformações entre metamodelos, explicadas no cap. 4.
O Apêndice 2 mostra as classes Java criadas para construir as decorações utilizadas nas
extremidades das relações, conforme sugerido nos perfis exibidos no cap. 3.
2. Pressupostos Teóricos
Nesse capítulo são apresentados os conceitos e tecnologias que serviram de base para a realização desse projeto. A seção 2.1. expõe brevemente a atividade de (meta)modelagem; A seção 2.2. trata do framework MDA; a seção 2.3. trata da linguagem OCL, exemplificando conceitos e aplicações; a seção 2.4. versa sobre a importância das linguagens UML e OCL no contexto MDA; a seção 2.5. mostra princípios básicos da utilização da IDE (Integrated Development Environment) Eclipse para a atividade de metamodelagem.
2.1. Da (meta)Modelagem 2.1.1. Da Modelagem
Um modelo descreve um sistema utilizando uma linguagem bem definida. Ele é um conjunto consistente e coerente de elementos de modelagem que possuem características e restrições. Por exemplo, classes e estados são elementos de modelagem providas pela linguagem UML. Atributos e operações são características de classes e, regras de derivação e invariantes são restrições em atributos e classes, respectivamente.
Normalmente o termo repositório de modelos é utilizado para designar um local de armazenamento de modelos e, o termo diagrama é utilizado para indicar uma certa visão do repositório de elementos de modelos.
2.1.1.1. Níveis de maturidade de modelagem
Para criar alguma ordem e transparência na utilização de modelos, são definidos níveis de maturidade de modelagem (MML's Modeling Maturity Levels). Eles indicam quais são os papeis de modelos em processos de desenvolvimento de software.
O termo programar adquire novos significados à medida que aumentase o nível de maturidade. Em um alto nível de maturidade, modelar e programar são quase sinônimos. Nas subseções a seguir são apresentados esses níveis.
2.1.1.1.1. Nível 0: Nenhuma especificação
No nível mais baixo, a especificação do software se encontra somente na mente dos desenvolvedores. Este é o nível mais comum entre desenvolvedores não profissionais, onde idéias sobre o modelo são trocadas informalmente. As características desse nível são as seguintes:
freqüentemente há conflitos entre as visões dos desenvolvedores e entre as visões de
●
essa maneira de criar software é aceitável para pequenas aplicações. Aplicações grandes e mais complexas necessitam de algum design antes da codificação;
●
a compreensão do código é impossível quando os desenvolvedores não estão disponíveis para esclarecer;
●
muitas escolhas são feitas ad hoc pelos desenvolvedores.
2.1.1.1.2. Nível 1: Textual
Nesse nível de maturidade a especificação do software é escrita em linguagem natural em um ou mais documentos, que variam quanto à formalidade. Esse é o nível mais baixo de desenvolvimento profissional de software. As características desse nível são as seguintes:
●
a especificação do software é ambígua, em função do uso de linguagem natural, que é inerentemente ambígua;
●
o desenvolvedor faz decisões de modelagem baseadas em sua interpretação do(s) texto(s);
●
não há como manter a especificação atualizada após ocorrer mudança no código.
2.1.1.1.3. Nível 2: Texto com diagramas
No nível 2 de maturidade, a especificação do software é provida em um ou mais documentos escritos em linguagem natural e acrescidos de vários diagramas de altonível para explicar a arquitetura e detalhes complexos. As características desse nível são as seguintes:
●
o sistema ainda é especificado por texto, mas os diagramas o tornam mais compreensível;
●
todas as características do nível 1 estão presentes no nível 2.
2.1.1.1.4. Nível 3: Modelos com texto
Um conjunto de modelos, que podem ser textos ou diagramas com significado bem definido, forma a especificação do software nesse nível. Adicionalmente são utilizados textos em linguagem natural para explicar detalhes e motivações dos modelos, mas os modelos são a parte mais importante do design. As características desse nível são as seguintes:
●
os diagramas ou textos formais são representações reais do software;
●
a transformação dos modelos em código é predominantemente manual;
●
ainda é muito difícil manter a especificação atualizada em relação a mudanças no código;
●
o codificador ainda faz decisões subjetivas de modelagem, mas elas têm menos
influência na arquitetura do sistema.
2.1.1.1.5. Nível 4: Modelos precisos
Nesse nível de maturidade o software é especificado por modelos que são conjuntos consistentes e coerentes de textos e/ou diagramas que possuem significados bem definidos e muito precisos. Textos em linguagem natural são utilizados para adicionar comentários e explicar a motivação do modelo. Os modelos nesse nível são suficientemente precisos para manter uma relação direta com o código atual. No entanto, eles estão em um nível diferente de abstração. Este é o nível em que o MDA está focado. As características desse nível são as seguintes:
●
os codificadores não fazem mais decisões subjetivas na modelagem;
●
manter modelos e código atualizados é essencial e fácil;
●
desenvolvimentos iterativos e incrementais são facilitados pela transformação direta de modelos em código.
2.1.1.1.6. Nível 5: Somente modelos
Nesse nível de maturidade os modelos são descrições completas, consistentes, detalhadas e precisas do sistema. Eles são bons o suficiente para suportar uma completa geração de código, sem ajustes. Nesse nível os desenvolvedores confiarão na geração automática de código da mesma forma que confiam em compiladores. Não existirá a necessidade de verificar o código. Haverá texto nos modelos, mas com funções idênticas aos comentários em códigos fonte.
2.1.2. Da Metamodelagem
O metamodelo de uma linguagem, também chamado de sintaxe abstrata, é a descrição de todos os conceitos que podem ser utilizados nessa linguagem. Por exemplo, o conceito de atributo é parte da linguagem UML; os conceitos construtor e método são partes da linguagem Java; os conceitos tabela, coluna e chave são parte da linguagem SQL. Esses conceitos são chamados metaclasses ou metatipos, e o conjunto de todos as metaclasses e relações entre as mesmas é denominado de metamodelo da linguagem.
Qualquer elemento em um modelo é uma instância de um conceito da linguagem utilizada,
ou seja, todo elemento do modelo é instância de uma metaclasse. Por exemplo, em um modelo
UML, uma classe chamada Pássaro é instância da metaclasse Class do metamodelo UML. Na
atividade de modelagem, podese utilizar somente elementos definidos no metamodelo da
linguagem utilizada para modelagem.
2.2. MDA
MDA (ModelDriven Architecture) é um framework de design de software, criado pela OMG (Object Management Group), com o objetivo de facilitar o reuso de conhecimento, o desenvolvimento, a integração, a manutenção, o teste, a simulação, a interoperabilidade e a portabilidade de software.
Uma das premissas adotadas pela OMG no desenvolvimento do MDA é que não se deve modelar um sistema em vista de sua implementação. Modelagem e implementação são etapas independentes e, se for dada a devida atenção à etapa de modelagem, grande parte das etapas seguintes poderão ser automatizadas. De fato, MDA propõe uma evolução no desenvolvimento de software: a compilação à nível de modelos.
Existem compiladores para traduzir dados e modelos de aplicações definidos em MOF ou UML para linguagens de alto nível e, portanto, para plataformas que as implementem.
Em suma, os três principais objetivos do MDA são: portabilidade, interoperabilidade e reusabilidade, alcançados por meio de uma separação arquitetural de interesses. O framework MDA é um passo dado na direção de tornar a “arte” de desenvolver software em uma disciplina de engenharia.
O framework MDA possibilita a criação de ferramentas para:
●
especificação de um sistema independentemente da plataforma que o suportará;
●
especificação de plataformas;
●
escolha de uma plataforma particular para o sistema;
●
transformação da especificação do sistema em uma especificação para uma plataforma particular.
As seções a seguir o explicam detalhadamente.
2.2.1. Conceitos Básicos
Alguns conceitos básicos em MDA são:
●
Sistema (System): Os conceitos de MDA são apresentados em termos de algum sistema existente ou planejado. Esse sistema pode incluir: um programa, um sistema computacional, uma combinação de partes de diferentes sistemas, uma união de sistemas, um empreendimento, entre outros.
●
Modelo (Model): Um modelo de um sistema é uma descrição ou uma especificação desse
sistema e de seu ambiente para um propósito específico. Um modelo é geralmente
apresentado como uma combinação de elementos gráficos e textuais. O texto pode ser escrito em uma linguagem de modelagem ou em linguagem natural.
●
Orientação à Modelos (ModelDriven): MDA é orientado à modelos porque provê meios para utilização de modelos para direcionar o rumo da compreensão, design, construção, operação, manutenção e modificação.
●
Arquitetura (Architecture): A arquitetura de um sistema é a especificação de suas partes, conexões e regras para interação das partes utilizando as conexões.
●
Ponto de Vista (Viewpoint): Um ponto de vista em um sistema é uma técnica para abstração, que utiliza um conjunto selecionado de conceitos arquiteturais e regras de estruturação para focar aspectos particulares do sistema. O framework MDA especifica três pontos de vista em um sistema: um ponto de vista independente de computação, um ponto de vista independente de plataforma e um ponto de vista específico de plataforma.
●
Visão (View): Uma visão de um sistema é a representação do mesmo pela perspectiva de um ponto de vista específico.
●
Plataforma (Platform): Uma plataforma é um subconjunto de sistemas e tecnologias que provê um conjunto coerente de funcionalidades, por meio de interfaces que qualquer aplicação suportada pela plataforma pode utilizar sem preocuparse com detalhes sobre como a funcionalidade provida pela plataforma foi implementada.
Figura 1: Símbolo usual para plataforma.
●
Aplicação (Application): O termo aplicação é utilizado para se referir a uma funcionalidade sendo desenvolvida. Um sistema é descrito em termos de uma ou mais aplicações suportadas por uma ou mais plataformas.
●
Independência de Plataforma (Platform Independence): Independência de plataforma é a qualidade que um modelo exibe quando é independente de funcionalidades de quaisquer plataformas.
●
Pontos de Vista MDA (MDA Viewpoints):
○
Ponto de Vista Independente de Computação (Computational Independent Viewpoint): O ponto de vista independente de computação foca no ambiente do sistema e nas exigências para o sistema. Os detalhes da estrutura e processamento do sistema estão omitidos ou ainda indeterminados.
○
Ponto de Vista Independente de Plataforma (Platform Independent Viewpoint): O ponto de vista independente de plataforma foca na operação do sistema, omitindo os detalhes necessários para uma plataforma particular. Esse ponto de vista pode utilizar uma linguagem de modelagem de propósito geral ou uma linguagem específica da área em que o sistema será utilizado.
○
Ponto de Vista Específico de Plataforma (Platform Specific Viewpoint): O ponto de
●
Modelo Independente de Computação (Computation Independent Model) (CIM): Um modelo independente de computação é uma visão de um sistema pelo ponto de vista independente de computação. Um CIM, também chamado de modelo de domínio, não mostra detalhes estruturais do sistema, mas descreve a situação em que o sistema será utilizado. Sua especificação é geralmente feita por meio de um vocabulário familiar aos especialistas no domínio em questão. O CIM tem o importante papel de intercambiar o conhecimento entre os especialistas no domínio e seus requisitos, e os e os especialistas em design e construção de artefatos.
●
Modelo Independente de Plataforma (Platform Independent Model) (PIM): Um modelo independente de plataforma é uma visão de um sistema pelo ponto de vista independente de plataforma. Um PIM exibe um grau específico de independência de plataforma, de forma que seja compatível com um número de plataformas de um tipo similar. Uma técnica muito comum para obter independência de plataforma é direcionar o modelo do sistema para uma máquina virtual tecnologicamente neutra. Uma máquina virtual é definida como um conjunto de partes e serviços que são definidos independentemente de qualquer plataforma específica, e que são realizados de maneiras específicas em diferentes plataformas. Uma máquina virtual é uma plataforma, e um modelo que a utilize será específico para essa plataforma. Mas esse modelo é independente de plataforma no que diz respeito à classe de diferentes plataformas nas quais a máquina virtual foi implementada.
●
Modelo Específico de Plataforma (Platform Specific Model) (PSM): Um modelo específico de plataforma é uma visão de um sistema pelo ponto de vista específico de plataforma. Um PSM combina as especificações de um PIM, com detalhes que especificam como o sistema utiliza um tipo particular de plataforma.
●
Modelo de Plataforma (Platform Model): Um modelo de plataforma provê um conjunto de conceitos técnicos que representam diferentes tipos de partes que formam a plataforma e os serviços providos pela mesma. Ele também provê conceitos que representam diferentes tipos de elementos utilizados na especificação do uso da plataforma por uma aplicação. Um modelo de plataforma também especifica restrições para a conexão e uso de partes da plataforma, e conexão de uma aplicação à plataforma.
●
Transformação de Modelo (Model Transformation): Transformação de modelo é o processo de conversão de um modelo para outro modelo do mesmo sistema. A figura 2 ilustra a transformação de um PIM em um PSM.
O PIM e outras informações são combinadas pela transformação para produzir o PSM. Essa figura é genérica. Posteriormente serão mostradas várias maneiras de fazer essa transformação.
Transformações não são necessárias para PIM's baseados em máquinas virtuais, pois é a maquina virtual que precisa ser transformada em um PSM para uma plataforma específica.
●
Implementação (Implementation): Implementação é uma especificação que provê toda a informação necessária para construir um sistema e colocalo em operação.
Entendidos os conceitos básicos, passaremos às transformações MDA.
Figura 2: Transformação de modelo.
2.2.2. Transformações MDA
Transformações de modelo são pontos chave da tecnologia MDA, e a existência de mapeamentos entre os modelos independentes de plataforma e as especificações da plataforma escolhida são imprescindíveis para a transformação de um modelo independente de plataforma (PIM) em um modelo específico de plataforma (PSM). Essas transformações podem ser realizadas de diversas formas e com diferentes graus de automação e suporte computacional.
Os tipos de mapeamentos, métodos de transformação e graus de automação e suporte computacional são os assuntos abordados nas próximas subseções.
2.2.2.1. Mapeamentos
Um mapeamento MDA provê especificações para a transformação de um PIM em um PSM para uma plataforma particular. O modelo da plataforma escolhida vai determinar a natureza do mapeamento.
2.2.2.1.1. Mapeamento entre tipos
Essa forma de mapeamento especifica um mapeamento de qualquer modelo construído, utilizandose tipos especificados na linguagem PIM para modelos expressos utilizandose tipos especificados na linguagem PSM. Um PIM é construído escolhendose elementos de modelagem de uma linguagem de modelagem independente de plataforma, de acordo com as necessidades da aplicação.
Se os tipos dos elementos de modelagem, tanto no PIM, quanto no PSM, forem
Metamodelos.
2.2.2.1.2. Mapeamento em nível de instâncias
Uma outra forma de mapeamento é a identificação de elementos no modelo PIM que deverão ser transformados de uma forma particular, de acordo com a plataforma escolhida para dar suporte ao PSM.
Esse tipo de mapeamento utiliza marcas que são aplicadas em elementos do PIM e que representam conceitos no PSM. Essas marcas não são partes do PIM, pois são específicas de plataforma. Elas indicam como o elemento do PIM será transformado, e podem ser vistas como uma camada transparente colocada por cima do modelo.
Em geral, elementos do PIM podem ser marcados várias vezes, indicando que o elemento tem papeis distintos em diferentes mapeamentos. Marcas são geralmente utilizadas para indicar parâmetros de qualidade de serviço ou opções mutuamente exclusivas de modelagem para um conceito. Estereótipos UML podem ser utilizados como marcas, indicando templates específicos para serem utilizados na transformação de um modelo PIM para um PSM.
2.2.2.1.3. Combinação das duas formas de mapeamento anteriores
A maioria dos mapeamentos consiste de uma combinação das formas anteriores, pois o mapeamento entre tipos é determinístico e dificilmente será capaz de prover todas as informações necessárias para a construção do PSM. É justamente para prover essas informações faltantes que são adicionadas marcas ao modelo.
É importante observar que essas marcas possuem uma sintaxe que deve ser obedecida, para que os modelos marcados sejam semanticamente válidos e possam ser transformados em PSM's.
2.2.2.1.4. Templates
Um mapeamento também pode incluir templates, que são modelos parametrizados que especificam tipos particulares de transformação. Templates podem ser utilizados em regras para transformar um padrão de elementos de modelagem em um mapeamento entre tipos.
Um conjunto de marcas pode ser associado a um template para indicar as instâncias de um modelo que devem ser transformadas de acordo com esse template.
2.2.2.2. Métodos de Transformação
O passo seguinte é pegar um PIM (marcado ou não) e transformalo em um PSM. Isso pode
ser feito manualmente, com assistência computacional ou automaticamente.
As entradas da transformação são os PIM's e os mapeamentos, as saídas são os PSM's e registros das transformações. Esses registros contêm informações sobre os mapeamentos dos conceitos do PIM para conceitos do PSM. Uma ferramenta de modelagem MDA pode utilizar esses registros para manter PIM's e PSM's sincronizados quando alguma mudança ocorrer.
PSM's podem prover mais ou menos detalhes, dependendo do seu propósito. Um PSM será uma implementação se prover todas as informações necessárias para construir o sistema e colocalo em operação, ou poderá agir como um PIM, que será posteriormente refinado para um PSM, podendo ser diretamente implementado.
Alguns métodos de transformação de modelos são: marcação, transformação entre metamodelos, transformação entre modelos, aplicação de padrões e união de modelos.
2.2.2.2.1. Marcação
Figura 3: Marcação em um modelo.
A figura acima mostra o processo de transformação por marcação. Escolhida a plataforma que suportará a aplicação, devese criar ou reusar, se já existir, um mapeamento para a plataforma.
Esse mapeamento deve prover um conjunto de marcas que serão utilizadas em elementos do PIM para guiar a transformação do PIM para o PSM.
2.2.2.2.2. Transformação entre Metamodelos
O PIM é preparado utilizandose uma linguagem independente de plataforma, e especificada
plataforma deve ser criada, ou reusada. Nesse caso, essa especificação de transformação é um mapeamento entre o metamodelo da linguagem utilizada para a formalização do PIM e a linguagem que será utilizada para a formalização do PSM.
Figura 4: Transformação entre metamodelos.
2.2.2.2.3. Aplicação de Padrões
Uma extensão das duas técnicas anteriores inclui padrões, além dos tipos ou conceitos da linguagem de modelagem.
Figura 5: Aplicação de padrões.
Em adição aos conceitos da linguagem de modelagem, um modelo genérico pode prover padrões. Tanto os conceitos como os padrões podem ser mapeados para conceitos e padrões dependentes de plataforma.
Uma outra forma de se utilizar padrões é usalos como nomes de marcas específicas de plataforma, ou seja, nomes de padrões de design que são específicos de plataforma. A figura abaixo ilustra essa alternativa.
Figura 6: Padrões como nomes de marcas.
2.2.2.3. Graus de Automação e Suporte Computacional
As ferramentas de suporte para transformação entre modelos podem promover diferentes graus de automação de transformação e, há diferentes modos de prover o modelo com todas as informações necessárias para transformalo em um PSM. Quatro diferentes categorias de transformação são descritas aqui e ilustram essas possibilidades: transformação manual, transformação de um PIM preparado por um perfil, transformação utilizando padrões e marcas, e transformação automática.
2.2.2.3.1. Transformação Manual
Durante a transformação de um PIM em um PSM, decisões de design devem ser feitas. Essas
decisões podem ser tomadas durante o processo de desenvolvimento, em conformidade com os
requisitos de implementação. Essa é uma boa alternativa, pois as decisões são consideradas no
Esse processo manual de transformação não difere muito do que tem sido feito em design de software. Mas o método MDA adiciona valor em duas formas:
●
faz uma distinção explícita entre modelos independentes de plataforma e modelos dependentes de plataforma;
●