Partial Loading of XMI Models

88
1 Par$al Loading of XMI Models Ran Wei, Dimitris Kolovos , Antonio Garcia-Dominguez, Konstan9nos Barmpis, Richard Paige University of York

Transcript of Partial Loading of XMI Models

Page 1: Partial Loading of XMI Models

1

Par$alLoadingofXMIModels

RanWei,DimitrisKolovos,AntonioGarcia-Dominguez,Konstan9nosBarmpis,RichardPaige

UniversityofYork

Page 2: Partial Loading of XMI Models

2

Page 3: Partial Loading of XMI Models

3Outline

•  Context:EMFandXMI•  EMF'sXMIParser•  Par9alXMILoading•  Evalua9on&Limita9ons•  Conclusions&FutureWork

Page 4: Partial Loading of XMI Models

4Context

•  EclipseModelingFramework(EMF)–  De-factostandardforbuildingMDEtools

•  OCL,Xtext,ATL,Epsilon,EMF-IncQuery,Acceleo,Xpand

•  XMLMetadataInterchange(XMI)–  Enablesmodelinteroperability–  Supportedna9velybyEMFandasanimport/exportformatbymodelingtools•  e.g.EnterpriseArchitect,Modelio,MagicDraw,MicrosoWVisio,VisualParadigm

Page 5: Partial Loading of XMI Models

5TheProblem

•  Modelmanagementopera9ons(valida9on,transforma9on,etc.)typicallyuseonlyasubsetoftheelementsofamodel

•  EMF’sXMIparserneedstoloadtheen9remodelanyway– Wasteful(memory+9me)

Page 6: Partial Loading of XMI Models

6varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 7: Partial Loading of XMI Models

7Alterna$vestoXMI

•  Binarymodelserialisa9on–  Supportedna9velybyEMF–  Smallerfilesandfaster–  S9llrequiresfullloading

•  Database-backedmodelpersistence–  NeoEMF,CDO,Morsa,MongoEMF–  Supportdynamicmodelelementloading/unloading–  Notwidelysupportedbymodellingtools(yet)

Page 8: Partial Loading of XMI Models

8Contribu$ons

•  Apar9alXMIloadingalgorithm–  Skipirrelevantmodelelements–  Expectedmemoryandperformancebenefits

•  Animplementa9onofthealgorithmasanextensiontoEMF'sXMIparser–  Toavoidreinven9ngthewheel–  Tofacilitateexploita9onbyEMF-basedmodelmanagementlanguagesandtools

Page 9: Partial Loading of XMI Models

9EMF'sXMIParser

•  Event-based(SAX)parser– startDocument,startElement,endElementetc.

•  Keepstrackofitsposi9oninthemodelusingastackofmodelelements(EObjects)– Onstartelement:thetopoftheobjectstackisusedtodeterminewhatEObjecttocreate

– Onendelement:thetopoftheobjectstackisremoved

Page 10: Partial Loading of XMI Models

10TheUniversityMetamodel

Page 11: Partial Loading of XMI Models

11EMF'sXMIParser

ObjectStack

Resource

Page 12: Partial Loading of XMI Models

12EMF'sXMIParser

ObjectStack :University

Resource:University

Page 13: Partial Loading of XMI Models

13EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

Page 14: Partial Loading of XMI Models

14EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

Page 15: Partial Loading of XMI Models

15EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

:WebPage

:WebPage

Page 16: Partial Loading of XMI Models

16EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

:WebPage

Page 17: Partial Loading of XMI Models

17EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

:WebPage

Page 18: Partial Loading of XMI Models

18EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

:Lecturer

:WebPage

Page 19: Partial Loading of XMI Models

19EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Student

:Lecturer

:WebPage :Student

Page 20: Partial Loading of XMI Models

20EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

:Lecturer

:WebPage :Student

Page 21: Partial Loading of XMI Models

21EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Module

:Lecturer

:WebPage :Student

:Module

Page 22: Partial Loading of XMI Models

22EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Module

:Lecturer

:WebPage :Student

:Module

:WebPage:WebPage

Page 23: Partial Loading of XMI Models

23EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Module

:Lecturer

:WebPage :Student

:Module

:WebPage

Page 24: Partial Loading of XMI Models

24EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

Page 25: Partial Loading of XMI Models

25EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

Page 26: Partial Loading of XMI Models

26EMF'sXMIParser

ObjectStack :University

Resource

:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

Page 27: Partial Loading of XMI Models

27EMF'sXMIParser

ObjectStack :University

Resource

:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

Page 28: Partial Loading of XMI Models

28EMF'sXMIParser

•  EveryXMIelementisprocessed•  AllEObjectsneedtobecreated•  Allaeribute/referenceslotsarepopulated

Page 29: Partial Loading of XMI Models

29Par$alXMILoading

•  Effec9veMetamodel(akafootprint)– Extractedfrommodelmanagementprograms– …sothatweknowwhattoloadfromamodel

•  Par9alLoadingAlgorithm– ExtensionofEMF’sXMIparsingalgorithm– Usestheeffec9vemetamodelto

•  SkipXMIelements•  Avoidcrea9onofelementsthatarenotneeded•  Avoidpopula9onofslotsthatarenotneeded

Page 30: Partial Loading of XMI Models

30Effec$veM2Extrac$on

•  Iden9fiestypes/featuresthatarelikelytobeaccessedduringtheexecu9onofamodelmanagementprogram– Extractsan"effec9vemetamodel"

•  PrototypeforEpsilonbutapplicabletoanysta9callyanalysablelanguage

Page 31: Partial Loading of XMI Models

31Effec$veM2Extrac$on

Effec9veMetamodel

Lecturer

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 32: Partial Loading of XMI Models

32Effec$veM2Extrac$on

Effec9veMetamodel

Lecturer

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 33: Partial Loading of XMI Models

33Effec$veM2Extrac$on

Effec9veMetamodel

Lecturer

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 34: Partial Loading of XMI Models

34Effec$veM2Extrac$on

Effec9veMetamodel

Lecturer

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 35: Partial Loading of XMI Models

35Effec$veM2Extrac$on

Effec9veMetamodel

Lecturer

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 36: Partial Loading of XMI Models

36Effec$veM2Extrac$on

Effec9veMetamodel

Lecturer

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 37: Partial Loading of XMI Models

37Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_name

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 38: Partial Loading of XMI Models

38Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_name

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 39: Partial Loading of XMI Models

39Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_name

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 40: Partial Loading of XMI Models

40Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_name

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 41: Partial Loading of XMI Models

41Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_name

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 42: Partial Loading of XMI Models

42Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_name

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 43: Partial Loading of XMI Models

43Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPage

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 44: Partial Loading of XMI Models

44Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPage

WebPage

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 45: Partial Loading of XMI Models

45Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPage

WebPageurl

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 46: Partial Loading of XMI Models

46Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPage

WebPageurl

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 47: Partial Loading of XMI Models

47Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPage

WebPageurl

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 48: Partial Loading of XMI Models

48Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPagemodules

WebPageurl

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 49: Partial Loading of XMI Models

49Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPagemodules

WebPageurl

Module

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 50: Partial Loading of XMI Models

50Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPagemodules

WebPageurl

Module

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 51: Partial Loading of XMI Models

51Effec$veM2Extrac$on

Effec9veMetamodel

Lecturerfirst_namelast_namewebPagemodules

WebPageurl

Module

varlecturers=Lecturer.allOfKind();for(linlecturers){

l.first_name.println();l.last_name.println();l.webPage.url.println();l.modules.size().println();

}

Page 52: Partial Loading of XMI Models

52Effec$veM2Extrac$on

Page 53: Partial Loading of XMI Models

53Effec$veM2Reconcilia$on

•  Effec9vemetamodelsextractedfrommodelmanagementprogramsmaybeincomplete–  Theyrequirereconcilia9on

Page 54: Partial Loading of XMI Models

54Effec$veM2Reconcilia$on

Page 55: Partial Loading of XMI Models

55Par$alLoadingAlgorithm

•  Theen9redocumentiss9llreadbutonlyXMIelementsofelementsareprocessed

•  Novelty:PlaceholderObjects– Theobjectstackisessen9altoEMF'sXMIloadingalgorithms

– Wecreateoneplaceholderobjectforeachirrelevanttypeanduseinintheplaceofignoredmodelelements

Page 56: Partial Loading of XMI Models

56ReconciledEffec$veM2

Page 57: Partial Loading of XMI Models

57Par$alXMILoading

ObjectStack

Resource

Placeholders

:University

:Department

:Student

Page 58: Partial Loading of XMI Models

58Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

Page 59: Partial Loading of XMI Models

59Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

Page 60: Partial Loading of XMI Models

60Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

Page 61: Partial Loading of XMI Models

61Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

Page 62: Partial Loading of XMI Models

62Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

:WebPage :WebPage

Page 63: Partial Loading of XMI Models

63Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

:WebPage :WebPage

Page 64: Partial Loading of XMI Models

64Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

:WebPage

Page 65: Partial Loading of XMI Models

65Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

Page 66: Partial Loading of XMI Models

66Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Student

Page 67: Partial Loading of XMI Models

67Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Student

Page 68: Partial Loading of XMI Models

68Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

Page 69: Partial Loading of XMI Models

69Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

:Module

Page 70: Partial Loading of XMI Models

70Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

:Module

:WebPage

Page 71: Partial Loading of XMI Models

71Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

:Module

Page 72: Partial Loading of XMI Models

72Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

Page 73: Partial Loading of XMI Models

73Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student :Lecturer

:WebPage

:Module

Page 74: Partial Loading of XMI Models

74Par$alXMILoading

ObjectStack

Resource

Placeholders

:University

:Department

:Student :Lecturer

:WebPage

:Module

Page 75: Partial Loading of XMI Models

75Par$alXMILoading

ObjectStack

Resource

Placeholders

:University

:Department

:Student :Lecturer

:WebPage

:Module

Page 76: Partial Loading of XMI Models

76Par$allyLoadedModel

Page 77: Partial Loading of XMI Models

77Integra$onwithEMF

Page 78: Partial Loading of XMI Models

78

Evalua$on_

Page 79: Partial Loading of XMI Models

79Benchmarks

•  ModelsfromGraBaTs2009•  5datasets– set0–set4,obtainedbyreverse-engineeringJavaprojects

– Sizes:9.2MB,27.9MB,283.2MB,626.7MBand676.9MB

•  Benchmarkquerysets– EOLqueriesautoma9callygeneratedtoaccess20%,40%,60%,80%and100%ofalldatasets

Page 80: Partial Loading of XMI Models

80BenchmarkResults:Set0

Page 81: Partial Loading of XMI Models

81BenchmarkResults:Set1

Page 82: Partial Loading of XMI Models

82BenchmarkResults:Set2

Page 83: Partial Loading of XMI Models

83BenchmarkResults:Set3

Page 84: Partial Loading of XMI Models

84BenchmarkResults:Set4

Page 85: Partial Loading of XMI Models

85Observa$ons

•  Linearbehaviourwithregardtothenumberofmodelelementsandslotsofinterest– Loading9me– Memoryfootprint

•  Whenloading100%ofthemodel,thepar9alloadingalgorithmismarginallyslower

Page 86: Partial Loading of XMI Models

86Limita$ons

•  XMImodelsshoulduseuniqueIDsratherthanfragmentpathIDs– Suchas//@departments.0/@modules.0

•  Par9allyloadedmodelsareread-only– Changescannotbesavedbacktotheoriginalmodel

Page 87: Partial Loading of XMI Models

87Conclusions

•  Firstaeempttopar9allyloadXMImodels•  tosave9meandmemory

•  AlgorithmimplementedasanextensiontoEMF'sXMIparser

•  Scaleslinearlywithrespecttothenumberofmodelelementsandslotsofinterest

Page 88: Partial Loading of XMI Models

88FutureWork

•  Run9memodel-levelpruning– AvoidingXMLtagsanditschildrenifcompletelynotneeded

•  Propaga9ngchangesbacktotheoriginalmodel

•  Suppor9ngfragmentpathIDs•  Par9alloadingofmodelsserialisedinEMF'sbinaryformat