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.