Version Control for Graphs as a Basis of Version Control for Models Z. Protić M. F. van Amstel...

of 12 /12
Version Control for Graphs as a Basis of Version Control for Models Z. Protić M. F. van Amstel M.G.J. van den Brand T. Verhoeff

Embed Size (px)

Transcript of Version Control for Graphs as a Basis of Version Control for Models Z. Protić M. F. van Amstel...

  • Version Control for Graphs as a Basis of Version Control for ModelsZ. ProtiM. F. van AmstelM.G.J. van den BrandT. Verhoeff

  • Problem statementDefine a generic method for version control of modelsIt should work for graph-based modelsIt should be possible to use it with existing toolsIt should be easy to use

  • SolutionRepresent all models as graphsUse state-based versioning Differences are calculated based on structure of the modelsUse the experience of the existing versioning systems (CVS, SVN) to define the functions of the model versioning system

  • Graphs used to represent modelsGraphs consist of:Labeled nodesEach node is uniquely identifiedLabeled edgesExample graph

  • Graphs used to represent modelsGraphs can be transformed to structured text.Example graphO1O2O3O4O1, O2, E1O1, O4, E2Textual representationBi-directionaltransformation

  • Graph-based model versioning system: Architecture

  • Example graph representation of a modelAB: Int

    A ID1

    B

    Int ID2 ID3Kolovos, D.S., Di Ruscio, D., Pierantonio, A., Paige, R.F.: Different models for model matching: An analysis of approaches to support model differencing ICSE Workshop on Comparison and Versioning of Software Models (2009) 1-6

  • Graph-based model versioning system: Architecture

  • Graph-based model versioning system: Differences detectionM. F. van Amstel, M. G. J. van den Brand, Z. Protic, T. Verhoef:Graph-based calculation and representation of metamodel-independent model differencesSubmitted to FASE 2010

  • Questions ?

  • Graph Differences

  • Templating language ::= "TEMPLATE" "(" ")" "->" "[" "]""uses" ":"

    ::= ::= | | "," ::= | | "," ::= | ";" ::= | | | | ::= | | ::= "empty(" ")" ::= | ::= | "," | "," | ::= "[" "]" "=" "match(" "(" ")" ")" ::= "[" "]" "=" "union(" "[" "]", "[" "]" ")" ::= "[" "]" "=" "intersect(" "[" "]", "[" "]" ")" ::= "[" "]" "=" "subtract(" "[" "]", "[" "]" ")" ::= "{" "}" ::= | ::= "$" ::= | ::= ::= | ::= | ::= | | ::= "A"|"a"|...|"Z"|"z" ::= "_"|"="|":" ::= "0"|"1"|...|"9"