• Nenhum resultado encontrado

Exemplo de Composição de UML Profiles

No documento Composição de UML Profiles (páginas 74-78)

A.9 Diagrama que define namespace do pacote constructs

4.6 Exemplo de Composição de UML Profiles

Para isto, o composition strategy operator define a estratégia de composição que será usada pelo merge operator. Uma vez que a descrição de equivalência, os modelos equivalentes e não equivalentes são definidos, o merge operator realiza a composição dos modelos equivalentes. Esta fase é finalizada assim que o composed model é criado.

Post-Composition Phase. O objetivo desta fase compreende nos objetivos do model transformation operator definido anteriormente. Baseado em desired features e well- formedness features, este operador verifica se o modelo possui alguma má formação. Sendo esta má formação representada como conflitos. Quando conflitos são en- contrados, o operador utiliza model transformation rules a fim de solucionar estes conflitos. O próximo passo é executar a transformação. O modelo de saída desta fase é produzido assim que nenhum conflito é identificado. The output model representa o resultado da composição.

4.6

Exemplo de Composição de UML

Profiles

Baseado nas seções anteriores, agora é apresentado um exemplo de composição de profiles, o qual é ilustrado na Figura 4.11. A composição será realizada entre dois profiles: Tree e Topology. Para realizar a composição, duas características devem se encontradas no re- sulting profile: (i ) um Leaf deve ter Node como superclasse da forma que Node o faz.

Desse modo, a fim de especificar e compor Tree e Topology (ver 4.11(a)) são uti- lizados a regra de especificação de composição e o guia definido anteriormente é utilizado, como segue:

1. Definição da composição usando a regra de especificação de composição, tem-se: mergeProfile {

Tree in DefaultNamespace Topology in DefaultNamespace

by MergeStrategy and DefaultMatchStrategy }

2. Initial Phase. Os modelos de entradas são analisados e conteúdo deles são tratados de acordo com os seus tipos. For exemplo, uma vez que Topology.Edge, Topology.

LocalEdge e Tree.Edge são de tipos iguais e são aplicados a Association, então

são “agrupados”.

3. Comparison Phase. É definido a default match strategy como a match strategy que deve ser seguida na composição; o threshold usado para definir a equivalência

4.6. EXEMPLO DE COMPOSIÇÃO DE UML PROFILES 75 entre o modelos será t = 0.7. Baseado nisto, é calculado o grau de similaridade (S) para todo o possível par (r,m), onde r são receiving elements e m são os merged ele- ments. O resultado da comparação é mostrado na tabela de similaridade ilustrada na Figura 4.8. Para t = 0.7 os modelos equivalentes são: Tree.Node, Tree.Leaf, Tree.Statekind, Topology.Node, Topology.EndNode, Topology.StateKind. Sendo assim, a descrição de equivalência definida é: (Tree.Node→Topology.Node),

(Tree.Leaf→Topology.EndNode) and (Tree.StateKind→Topology.StateKind). 4. Merge Phase. Neste exemplo, a estratégia de composição utilizada é a merge

strategy. Portanto, os elementos dos profiles que são equivalentes deverão apare- cer apenas uma vez no composed model (mostra uma visão integrada dos mode- los de entrada). A partir dos modelos equivalentes e da descrição de equivalên- cia entre os mesmos, os modelos composto produzidos são: (TreeTopology.Node), (TreeTopology.Leaf) and (TreeTopology.StateKind) (ver Figura 4.11(c)). 5. Post-Composition Phase. Existem duas características que não são satisfeitas,

e TreeTopology.MainNode faz referência a Topo- logy.StateKind que não existe, representando um conflito de identificado como, conflict reference. Com o objetivo de solucionar estes problemas o model transformation operator deve realizar algumas atividades, como segue:

• Passo 01: toda referência para Topology.StateKind deve ser alterada para

TreeTopology.StateKind, sendo assim tem-se: replaceReferences Topology.StateKind

with TreeTopology.StateKind in TreeTopology

Passo 02: o stereotype TreeTopology.Leaf deve estender TreeTopology.Root,

assim, tem-se:

createAssociation(inheritance, TreeTopology.Leaf, TreeTopology.Node){

Factory.createLink(inheritance, TreeTopology.Leaf, TreeTopology.Node) }

Passo 3: a propriedade leaf:Leaf deve ser criada e inserida em TreeTopology

profile:

leaf = createProperty(Property, leaf, Leaf){ Factory.createElement(Property, leaf, Leaf) } insertProperty leaf

into TreeTopology

4.6. EXEMPLO DE COMPOSIÇÃO DE UML PROFILES 76

Input Profile A

Input Profile B

Definition of Signature for every Profile Element Type

[Problems were identified] Composed Model Definition of the Match Strategy Merging of Profiles

Application of Merge Rules

Identification of

To Be Applied

Model Transformation Rules

Modified Model

Model Transformation Operator Identification and Analysis of Input Profiles Definition of Similarity Degree ( )S [Valid Models] [Invalid Models] InitialPhase ComparisonPhase MergePhase P ost -CompositionPhase Match Models Well-Formedness Rules Specification of Equivalent Profile Elements and Match Description

Ngram Algorithm Application of Match Rules

Verify Composed Model

[No problem was identified] Model Transformation Rules Match Description Composition Strategy Specification Merge Operator Output Model Model Transformation Matching Operator Threshold

Composition Strategy Operator

Desired Features

Definition of the Merge Strategy

Synonym Dictionary

[Equivalent models were found] [No match

models was found]

No-Match Models

4.6. EXEMPLO DE COMPOSIÇÃO DE UML PROFILES 77 Tree <<profile>> <<metaclass>> Class <<stereotype>> Search name: String value: Integer <<stereotype>> Node <<stereotype>> Root <<streotype>> Leaf <<metaclass>> Operation Receiving Profile <<profile>> <<metaclass>> Class <<metaclass>> Operation <<stereotype>> Search location: String name: String value: Integer <<stereotype>> Node A ) <<stereotype>> MainNode state: StateKind <<enumeration>> StateKind available busy off state: StateKind <<enumeration>> StateKind available busy off

TreeTopology Resulting Profile

<<merge>> Topology <<profile>> <<metaclass>> Class <<metaclass>> Association <<stereotype>> LocalEdge <<stereotype>> Edge <<stereotype>> Node B ) location: String <<enumeration>> StateKind available busy <<stereotype>> MainNode Merged Profile name: String state: StateKind equivalent equivalent equivalent equivalent position: String <<streotype>> EndNode <<stereotype>> Leaf position: String <<stereotype>> Root state: StateKind leaf: Leaf C ) <<profile>> <<metaclass>> Class <<metaclass>> Operation <<stereotype>> Search location: String name: String value: Integer <<stereotype>> Node <<stereotype>> MainNode state: StateKind <<enumeration>> StateKind available busy off

TreeTopology Resulting Profile with Problems

<<metaclass>> Association <<stereotype>> LocalEdge <<stereotype>> Edge name: String reference <<stereotype>> Leaf position: String <<stereotype>> Root state: StateKind inheritance

create new tagged values

D) <<stereotype>> Edge <<metaclass>> Association <<metaclass>> Association <<stereotype>> LocalEdge <<stereotype>> Edge name: String

Capítulo 5

Estratégias de Composição

Neste capítulo são descritas as estratégias de composição especificadas nesta dissertação. O objetivo destas estratégias é dar flexibilidade à composição através da apresentação de diferentes maneiras de realizar a composição de modelos. Ao longo do capítulo são apresentadas três seções:

Override Strategy: nesta seção é apresentada a descrição da estratégia override, do

seu cenário de aplicação e de sua semântica.

• Union Strategy: nesta seção é apresentada a descrição da estratégia union, do seu

cenário de aplicação e de sua semântica.

• Merge Strategy: nesta seção é apresentada a descrição da estratégia merge, do seu

cenário de aplicação e de sua semântica.

No documento Composição de UML Profiles (páginas 74-78)