Partial Loading of XMI Models

Post on 20-Jan-2017

203 views 0 download

Transcript of Partial Loading of XMI Models

1

Par$alLoadingofXMIModels

RanWei,DimitrisKolovos,AntonioGarcia-Dominguez,Konstan9nosBarmpis,RichardPaige

UniversityofYork

2

3Outline

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

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

5TheProblem

•  Modelmanagementopera9ons(valida9on,transforma9on,etc.)typicallyuseonlyasubsetoftheelementsofamodel

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

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

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

}

7Alterna$vestoXMI

•  Binarymodelserialisa9on–  Supportedna9velybyEMF–  Smallerfilesandfaster–  S9llrequiresfullloading

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

8Contribu$ons

•  Apar9alXMIloadingalgorithm–  Skipirrelevantmodelelements–  Expectedmemoryandperformancebenefits

•  Animplementa9onofthealgorithmasanextensiontoEMF'sXMIparser–  Toavoidreinven9ngthewheel–  Tofacilitateexploita9onbyEMF-basedmodelmanagementlanguagesandtools

9EMF'sXMIParser

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

•  Keepstrackofitsposi9oninthemodelusingastackofmodelelements(EObjects)– Onstartelement:thetopoftheobjectstackisusedtodeterminewhatEObjecttocreate

– Onendelement:thetopoftheobjectstackisremoved

10TheUniversityMetamodel

11EMF'sXMIParser

ObjectStack

Resource

12EMF'sXMIParser

ObjectStack :University

Resource:University

13EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

14EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

15EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

:WebPage

:WebPage

16EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

:WebPage

17EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Lecturer

:Lecturer

:WebPage

18EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

:Lecturer

:WebPage

19EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Student

:Lecturer

:WebPage :Student

20EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

:Lecturer

:WebPage :Student

21EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Module

:Lecturer

:WebPage :Student

:Module

22EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Module

:Lecturer

:WebPage :Student

:Module

:WebPage:WebPage

23EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department:Module

:Lecturer

:WebPage :Student

:Module

:WebPage

24EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

25EMF'sXMIParser

:University

ObjectStack :University

Resource

:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

26EMF'sXMIParser

ObjectStack :University

Resource

:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

27EMF'sXMIParser

ObjectStack :University

Resource

:Department

:Lecturer

:WebPage :Student

:Module

:WebPage

28EMF'sXMIParser

•  EveryXMIelementisprocessed•  AllEObjectsneedtobecreated•  Allaeribute/referenceslotsarepopulated

29Par$alXMILoading

•  Effec9veMetamodel(akafootprint)– Extractedfrommodelmanagementprograms– …sothatweknowwhattoloadfromamodel

•  Par9alLoadingAlgorithm– ExtensionofEMF’sXMIparsingalgorithm– Usestheeffec9vemetamodelto

•  SkipXMIelements•  Avoidcrea9onofelementsthatarenotneeded•  Avoidpopula9onofslotsthatarenotneeded

30Effec$veM2Extrac$on

•  Iden9fiestypes/featuresthatarelikelytobeaccessedduringtheexecu9onofamodelmanagementprogram– Extractsan"effec9vemetamodel"

•  PrototypeforEpsilonbutapplicabletoanysta9callyanalysablelanguage

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

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();

}

52Effec$veM2Extrac$on

53Effec$veM2Reconcilia$on

•  Effec9vemetamodelsextractedfrommodelmanagementprogramsmaybeincomplete–  Theyrequirereconcilia9on

54Effec$veM2Reconcilia$on

55Par$alLoadingAlgorithm

•  Theen9redocumentiss9llreadbutonlyXMIelementsofelementsareprocessed

•  Novelty:PlaceholderObjects– Theobjectstackisessen9altoEMF'sXMIloadingalgorithms

– Wecreateoneplaceholderobjectforeachirrelevanttypeanduseinintheplaceofignoredmodelelements

56ReconciledEffec$veM2

57Par$alXMILoading

ObjectStack

Resource

Placeholders

:University

:Department

:Student

58Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

59Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

60Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

61Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

62Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

:WebPage :WebPage

63Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

:WebPage :WebPage

64Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer :Lecturer

:WebPage

65Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

66Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Student

67Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Student

68Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

69Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

:Module

70Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

:Module

:WebPage

71Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

:Module

72Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student

:Department

:Lecturer

:WebPage

:Module

73Par$alXMILoading

:University

ObjectStack

Resource

Placeholders

:University

:Department

:Student :Lecturer

:WebPage

:Module

74Par$alXMILoading

ObjectStack

Resource

Placeholders

:University

:Department

:Student :Lecturer

:WebPage

:Module

75Par$alXMILoading

ObjectStack

Resource

Placeholders

:University

:Department

:Student :Lecturer

:WebPage

:Module

76Par$allyLoadedModel

77Integra$onwithEMF

78

Evalua$on_

79Benchmarks

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

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

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

80BenchmarkResults:Set0

81BenchmarkResults:Set1

82BenchmarkResults:Set2

83BenchmarkResults:Set3

84BenchmarkResults:Set4

85Observa$ons

•  Linearbehaviourwithregardtothenumberofmodelelementsandslotsofinterest– Loading9me– Memoryfootprint

•  Whenloading100%ofthemodel,thepar9alloadingalgorithmismarginallyslower

86Limita$ons

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

•  Par9allyloadedmodelsareread-only– Changescannotbesavedbacktotheoriginalmodel

87Conclusions

•  Firstaeempttopar9allyloadXMImodels•  tosave9meandmemory

•  AlgorithmimplementedasanextensiontoEMF'sXMIparser

•  Scaleslinearlywithrespecttothenumberofmodelelementsandslotsofinterest

88FutureWork

•  Run9memodel-levelpruning– AvoidingXMLtagsanditschildrenifcompletelynotneeded

•  Propaga9ngchangesbacktotheoriginalmodel

•  Suppor9ngfragmentpathIDs•  Par9alloadingofmodelsserialisedinEMF'sbinaryformat