multi level modelling
DESCRIPTION
Multi Level Modelling precise | role based | modular | simpleTRANSCRIPT
![Page 1: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/1.jpg)
Multi-Level Modellingprecise | role based | modular | simple
![Page 2: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/2.jpg)
A typical problem
![Page 3: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/3.jpg)
Class : Mammal
dateOfBirth
Class : Dog
isPoliceDog
Class : Cat
Dog : Jack{1/5/03, yes}
Dog : Susie{1/2/00, no}
Class : AnimalSpecies
maxAge
Class : Animal
dateOfBirth[*][1]
Cat : Coco{4/3/07}
Cat : Peter{10/9/98}
[*]
[2]
[*]
[2]
Animal : Jack{1/5/03}
Animal : Susie{1/2/00}
Animal : Coco{4/3/07}
Animal : Peter{10/9/98}
[*]
[2]
A.S. : Dog{20 years}
A.S. : Cat{30 years}
problem precision of links
problemno species
data
problemno species-specific
instance data
object oriented model A(modelling instantiation via association)
object oriented model B(modelling instantiation via specialisation)
![Page 4: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/4.jpg)
Class : Mammal
dateOfBirth
Class : Dog
isPoliceDog
Class : Cat
Dog : Jack{1/5/03, yes}
Dog : Susie{1/2/00, no}
[*][1]
Cat : Coco{4/3/07}
Cat : Peter{10/9/98}
[*]
[2]
[*]
[2]
problemFragmentation of
concepts
Class : AnimalSpecies
maxAge
A.S. : Dog{20 years}
A.S. : Cat{30 years}
problemSpurious complexity
object oriented model C(Power Type pattern)
![Page 5: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/5.jpg)
Class : Mammal
dateOfBirth
Class : Dog
isPoliceDog
Class : Cat
Dog : Jack{1/5/03, yes}
Dog : Susie{1/2/00, no}
[*][1]
Cat : Coco{4/3/07}
Cat : Peter{10/9/98}
[*]
[2]
[*]
[2]
Class : AnimalSpecies
maxAge
A.S. : Dog{20 years}
A.S. : Cat{30 years}
object oriented model C(Power Type pattern)
design time
run time
configuration time?
![Page 6: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/6.jpg)
The solution
![Page 7: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/7.jpg)
Vertex : AnimalSpecies
maxAgeisAbstract : no
AnimalSpecies : Dog
maxAge : 20isAbstract : noisPoliceDog
AnimalSpecies : Cat
maxAge : 30isAbstract : no
[*]
[2]
[*]
[2]
Dog : Jack
dateOfBirth : 1/5/03isPoliceDog : yes
AnimalSpecies : Mammal
maxAge : 150isAbstract : yesdateOfBirth
Dog : Susie
dateOfBirth : 1/2/00isPoliceDog : no
Cat : Coco
dateOfBirth : 4/3/07
Cat : Peter
dateOfBirth : 10/9/98
run time
configuration time
design timemulti-level modellingprecise instantiation semantics
role based binding timesmodularitysimplicity
![Page 8: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/8.jpg)
Vertex : AnimalSpecies
maxAgeisAbstract : no
AnimalSpecies : Dog
maxAge : 20isAbstract : noisPoliceDog
AnimalSpecies : Cat
maxAge : 30isAbstract : no
[*]
[2]
[*]
[2]
Dog : Jack
dateOfBirth : 1/5/03isPoliceDog : yes
AnimalSpecies : Mammal
maxAge : 150isAbstract : yesdateOfBirth
Dog : Susie
dateOfBirth : 1/2/00isPoliceDog : no
Cat : Coco
dateOfBirth : 4/3/07
Cat : Peter
dateOfBirth : 10/9/98
run time
configuration time
design timemulti-level modellingprecise instantiation semantics
role based binding timesmodularitysimplicity
instantiation ...establishes connections between two levels of abstraction that
define different binding times
generalisation/specialisation ...expresses the commonalities and variabilities between the concepts
relevant to a specific binding time
a consistent instantiation mechanism at all levels
& unlimited levels of instantiation
![Page 9: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/9.jpg)
The technology
![Page 10: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/10.jpg)
![Page 11: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/11.jpg)
EdgeEnd : semanticIdentity[1]
Graph : Graph
EdgeEnd : EdgeEnd
minCardinalitymaxCardinalityisContainerisNavigableisAbstract = FALSE
isAbstractisAbstract = TRUE
Edge : #
EdgeEnd : edgeEnds[2]
Edge : #
EdgeEnd : fromSubGraph[1]
EdgeEnd : toSubGraph[1]Edge : #
Edge : #
EdgeEnd :superSet[1]
EdgeEnd : subSet[1] Edge : #
EdgeEnd : propertyDefinitions[*]
Edge : #
SuperSetReference : SuperSetReference
isAbstract = FALSE
Visibility : Visibility
isAbstract = FALSE
Edge : #
Link : Link
isAbstract = TRUE
OrderedPair : OrderedPair
EdgeEnd : detail[1]EdgeEnd : abstraction[1]
Edge : #
EdgeTrace : EdgeTrace
isAbstract = FALSE
Edge : #
Edge : #
EdgeEnd :vertex[1]
Vertex : SemanticDomain.SemanticIdentity
isAbstract = FALSE
Edge : #
Edge : #
EdgeEnd : propertyValues[*]
Edge : #
Edge : #
Edge : #
Edge : #
Vertex : Vertex
isAbstract = FALSE
EdgeEnd : artifact[1]
EdgeEnd : artifact[1]
EdgeEnd : artifact[1]
EdgeEnd : artifact[1]
EdgeEnd : artifact[1]
Gmodel
Edge : Edge
isAbstract = FALSE
OrderedSet :OrderedSet
*EdgeEnd : SuperSetReferenceFlavored[*]
EdgeEnd : visibilityFlavored[*]
EdgeEnd : edgeTraceFlavored[*]
EdgeEnd : edgeFlavored[*]
EdgeEnd : vertexFlavored[*]
EdgeEnd : commands[*]
Edge : #EdgeEnd : queries[*]
Edge : #
beyond Open Source
![Page 12: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/12.jpg)
The following pages illustrate the use of the Gmodel API.
For further information on the open source Gmodel technology
based on denotational semantics, contact:
Jorn Bettinjbe @ sofismo.ch
![Page 13: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/13.jpg)
Examples
![Page 14: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/14.jpg)
Vertex : DomainAnalysis
Vertex : DomainEngineering
Vertex : ApplicationEngineeringVertex : ProductManagement
Vertex : ProjectManagement
Vertex : ProductLineManagement
![Page 15: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/15.jpg)
Vertex : DomainAnalysis
Vertex : DomainEngineering
Vertex : ApplicationEngineeringVertex : ProductManagement
Vertex : ProjectManagement
Vertex : ProductLineManagement
Model expressed through the Gmodel API
Instance domainanalysis = instantiateAbstractArtifact(kernelI.graph, "Domain Analysis", kernelI.vertex); Instance projectmanagement = addAbstractSubGraphArtifact(domainanalysis, "Project Management"); Instance productmanagement = addAbstractSubGraphArtifact(domainanalysis,"Product Management"); Instance productlinemanagement = addAbstractSubGraphArtifact(domainanalysis, "Product Line Management"); Instance applicationengineering = addAbstractSubGraphArtifact(domainanalysis, "Application Engineering"); Instance domainengineering = addAbstractSubGraphArtifact(domainanalysis, "Domain Engineering");
G.link(kernelI.visibility, projectmanagement, productmanagement); G.link(kernelI.visibility, productmanagement, productlinemanagement); G.link(kernelI.visibility, applicationengineering, productmanagement); G.link(kernelI.visibility, applicationengineering, productlinemanagement); G.link(kernelI.visibility, applicationengineering, domainengineering); G.link(kernelI.visibility, domainengineering, productlinemanagement); G.link(kernelI.visibility, domainengineering, productmanagement);
![Page 16: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/16.jpg)
Vertex : DomainAnalysis.ProductLineManagement
Vertex : Organization
Vertex : System
Vertex : ManagedFeature
![Page 17: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/17.jpg)
Vertex : DomainAnalysis.ProductLineManagement
Vertex : Organization
Vertex : System
Vertex : ManagedFeature
Model expressed through the Gmodel API
Instance organization = addAbstractSubGraphArtifact(productlinemanagement, "Organization"); Instance system = addAbstractSubGraphArtifact(productlinemanagement,"System"); Instance managedfeature = addAbstractSubGraphArtifact(productlinemanagement, "Managed Feature");
G.link(kernelI.visibility, organization, system); G.link(kernelI.visibility, system, managedfeature);
![Page 18: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/18.jpg)
Vertex : DomainAnalysis.ProductManagement
Vertex : ...ProductLineManagement.ManagedFeatureVertex : ...ProductLineManagement.Organization
Vertex : Product
Vertex : ProductFeedback Vertex : UseCase
![Page 19: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/19.jpg)
Vertex : DomainAnalysis.ProductManagement
Vertex : ...ProductLineManagement.ManagedFeatureVertex : ...ProductLineManagement.Organization
Vertex : Product
Vertex : ProductFeedback Vertex : UseCase
Model expressed through the Gmodel API
Instance product = addAbstractSubGraphArtifact(productmanagement, "Product"); Instance productfeedback = addAbstractSubGraphArtifact(productmanagement,"Product Feedback"); Instance usecase = addAbstractSubGraphArtifact(productmanagement, "Use Case");
G.link(kernelI.visibility, product, productfeedback); G.link(kernelI.visibility, product, usecase); G.link(kernelI.visibility, productfeedback, organization); G.link(kernelI.visibility, usecase, organization); G.link(kernelI.visibility, usecase, managedfeature);
![Page 20: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/20.jpg)
Vertex : DomainAnalysis.ProjectManagement
Vertex : ...ProductManagement.Product
Vertex : Timebox
![Page 21: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/21.jpg)
Vertex : DomainAnalysis.ProjectManagement
Vertex : ...ProductManagement.Product
Vertex : Timebox
Model expressed through the Gmodel API
Instance timebox = addAbstractSubGraphArtifact(projectmanagement, "Timebox");
G.link(kernelI.visibility, timebox, product);
![Page 22: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/22.jpg)
Vertex : DomainAnalysis.DomainEngineering
Vertex : ...ProductManagement.UseCaseVertex : DomainAnalysis.ProductLineManagement
Vertex : Development
Vertex : Design
![Page 23: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/23.jpg)
Vertex : DomainAnalysis.DomainEngineering
Vertex : ...ProductManagement.UseCaseVertex : DomainAnalysis.ProductLineManagement
Vertex : Development
Vertex : DesignModel expressed through the Gmodel API
Instance development = addAbstractSubGraphArtifact(domainengineering, "Development"); Instance design = addAbstractSubGraphArtifact(domainengineering, "Design");
G.link(kernelI.visibility, development, design); G.link(kernelI.visibility, design, productlinemanagement); G.link(kernelI.visibility, design, usecase);
![Page 24: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/24.jpg)
Vertex : DomainAnalysis.ApplicationEngineering
Vertex : ...DomainEngineering.DevelopmentVertex : ...DomainEngineering.Design
Vertex : DevelopmentVertex : Design
Vertex : ...ProductManagement.UseCase
Vertex : ...ProductLineManagement.Organization
Vertex : ...ProductLineManagement.ManagedFeature
![Page 25: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/25.jpg)
Vertex : DomainAnalysis.ApplicationEngineering
Vertex : ...DomainEngineering.DevelopmentVertex : ...DomainEngineering.Design
Vertex : DevelopmentVertex : Design
Vertex : ...ProductManagement.UseCase
Vertex : ...ProductLineManagement.Organization
Vertex : ...ProductLineManagement.ManagedFeature
Model expressed through the Gmodel API
Instance appdevelopment = addAbstractSubGraphArtifact(applicationengineering, "App Development"); Instance appdesign = addAbstractSubGraphArtifact(applicationengineering, "App Design");
G.link(kernelI.visibility, appdevelopment, appdesign); G.link(kernelI.visibility, appdevelopment, development); G.link(kernelI.visibility, appdesign, design); G.link(kernelI.visibility, appdesign, usecase); G.link(kernelI.visibility, appdesign, organization); G.link(kernelI.visibility, appdesign, managedfeature);
![Page 26: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/26.jpg)
Vertex : DomainAnalysis.DomainEngineering.Design
Vertex : EntityRelationshipSchema
Vertex : HierarchicalERSchema
![Page 27: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/27.jpg)
Vertex : DomainAnalysis.DomainEngineering.Design
Vertex : EntityRelationshipSchema
Vertex : HierarchicalERSchemaModel expressed through the Gmodel API
Instance entityrelationshipschema = addConcreteSubGraphArtifact(design, "Entity Relationship Schema"); Instance hierarchicalerschema = addConcreteSubGraphArtifact(design, "Hierarchical ER Schema");
G.link(kernelI.visibility, hierarchicalerschema, entityrelationshipschema);
![Page 28: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/28.jpg)
Vertex : DomainAnalysis.DomainEngineering.Design.EntityRelationshipSchema
EdgeEnd : source[*]
EdgeEnd : target[*]
EdgeEnd : owner[1] EdgeEnd : attributes[*]
Edge : relationship
Vertex : Attribute
typeEdge : #
Vertex : Entity
![Page 29: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/29.jpg)
Vertex : DomainAnalysis.DomainEngineering.Design.EntityRelationshipSchema
EdgeEnd : source[*]
EdgeEnd : target[*]
EdgeEnd : owner[1] EdgeEnd : attributes[*]
Edge : relationship
Vertex : Attribute
pluralName = AttributesString : type
Edge : #
Vertex : Entity
Model expressed through the Gmodel API
Instance entity = addConcreteVertex(entityrelationshipschema, "Entity", kernelI.vertex); Instance attribute = addConcreteVertex(entityrelationshipschema, "Attribute", kernelI.vertex);
Instance entity_to_attribute = G.link(kernelI.edge, semanticIdentityFactory.createSemanticIdentity("owner", "owners"), entity, kernelP.minCardinality_1, kernelP.maxCardinality_1, kernelP.isNavigable_TRUE, kernelP.isContainer_TRUE, semanticIdentityFactory.createSemanticIdentity("attribute", "attributes"), attribute, kernelP.minCardinality_0, kernelP.maxCardinality_n, kernelP.isNavigable_TRUE, kernelP.isContainer_FALSE ); Instance entity_to_entity = G.link(kernelI.edge, semanticIdentityFactory.createSemanticIdentity("source", "sources"), entity, kernelP.minCardinality_0, kernelP.maxCardinality_n, kernelP.isNavigable_TRUE, kernelP.isContainer_FALSE, semanticIdentityFactory.createSemanticIdentity("target", "targets"), entity, kernelP.minCardinality_0, kernelP.maxCardinality_n, kernelP.isNavigable_TRUE, kernelP.isContainer_FALSE );
![Page 30: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/30.jpg)
EntityRelationshipSchema : ApplicationEngineering.Design.CustomerRelationshipManagement
Attribute : price
source : products[*]Boolean : isIncorrect
target : orders[*]
owner : owner[1] attribute : prices[*]
relationship : #
type = amtOfMoneyamtOfMoney.usdamtOfMoney.fromamtOfMoney.until
# : #
Entity : Product
Entity : Order
databaseLocation
![Page 31: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/31.jpg)
EntityRelationshipSchema : ApplicationEngineering.Design.CustomerRelationshipManagement
Attribute : price
source : products[*]Boolean : isIncorrect
target : orders[*]
owner : owner[1] attribute : prices[*]
relationship : #
pluralName = pricestype = amtOfMoneyBigDecimal : amtOfMoney.usdBigDecimal : amtOfMoney.fromBigDecimal : amtOfMoney.until
# : #
Entity : Product
pluralName = Products
Entity : Order
pluralName = OrdersString : databaseLocation
Model expressed through the Gmodel API
Instance crm = instantiateConcreteArtifact(design, "CRM", entityrelationshipschema); Instance crm_product = addConcreteVertex(crm, "Product", entity); Instance order = addConcreteVertex(crm, "Order", entity);
Instance product_to_order = G.link(entity_to_entity, semanticIdentityFactory.createSemanticIdentity("product", "products"), order, kernelP.minCardinality_0, kernelP.maxCardinality_n, kernelP.isNavigable_TRUE, kernelP.isContainer_FALSE, semanticIdentityFactory.createSemanticIdentity("order", "orders"), crm_product, kernelP.minCardinality_0, kernelP.maxCardinality_n, kernelP.isNavigable_TRUE, kernelP.isContainer_FALSE ); Instance product_to_price = G.link(entity_to_attribute, semanticIdentityFactory.createSemanticIdentity("owner", "owners"), order, kernelP.minCardinality_1, kernelP.maxCardinality_1, kernelP.isNavigable_TRUE, kernelP.isContainer_TRUE, semanticIdentityFactory.createSemanticIdentity("price", "prices"), crm_product, kernelP.minCardinality_0, kernelP.maxCardinality_n, kernelP.isNavigable_TRUE, kernelP.isContainer_FALSE );
![Page 32: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/32.jpg)
CustomerRelationshipManagement : InstalledApplication.Sofismo
Attribute : price : #
source : products : #[#]isIncorrect = true
target : orders : #[#]
owner : owner : #[#] attribute : prices : #[#]
relationship : # : #
amtOfMoney.usd = 3.5amtOfMoney.from = 2009 04 12amtOfMoney.until = 2009 12 31
# : # : #
Entity : Product : #
Entity Order : #
databaseLocation = Lenzburg
![Page 33: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/33.jpg)
Language Extension Example
![Page 34: Multi Level Modelling](https://reader034.vdocuments.net/reader034/viewer/2022042623/547cf5bd5906b561378b460b/html5/thumbnails/34.jpg)
Vertex : DomainAnalysis.DomainEngineering.Design.HierarchicalERSchema
EdgeEnd : source[*]
Edge : relationship
Vertex : RootEntity Vertex : ChildEntity
EdgeEnd : target[1]
Edge : relationship
EdgeEnd : source[*]isNavigable = false
Edge : relationship
EdgeEnd : source[0]isNavigable = false
EdgeEnd : target[*]
Vertex : Entity
EdgeEnd : target[0]