• Keine Ergebnisse gefunden

Graph Exchange Language

N/A
N/A
Protected

Academic year: 2022

Aktie "Graph Exchange Language"

Copied!
51
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Interoperability of Reengineering Tools

Universität Koblenz-Landau Institut für Softwaretechnik Re-Group

Dagstuhl, Jan 20-25, 2001

Graph Exchange Language

Andreas Winter

joint work with:

Ric Holt Andy Schürr

Susan Sim

(2)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (2)

Interoperablity of Reengineering Tools

Contents

• Motivation and Idea

• Definition of GXL

• Exchanging graphs with GXL

• Exchanging schemas with GXL

• Conclusion

(3)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (3)

Interoperablity of Reengineering Tools

GXL Objective

standard exchange language

– for interchanging data between reengineering tools

mathematical model

– typed, attributed, directed graphs

notation

– eXtensible Markup Language (XML) – Unified Modeling Language (UML)

application to other areas in software engineering

– graph transformation

– graph drawing

(4)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (4)

Interoperablity of Reengineering Tools

History

(5)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (5)

Interoperablity of Reengineering Tools

GXL Partners

Bell Canada (Datrix Group), Canada

IBM Centre for Advanced Studies, Canada Mahindra British Telecom, India

Nokia Research Center (Software Technology Laboratory), Finland Philips Research (Software Architecture Group), The Netherlands RWTH Aachen (Department of Computer Science III), Germany TU Berlin (Theoretical CS/Formal Specification Group), Berlin University of Berne (Software Composition Group), Switzerland

University Bw München (Institute for Software Technology), Germany University of Koblenz (IST, GUPRO), Germany

University of Oregon (Department of Computer Science), U.S.A.

University of Paderborn (AG Softwaretechnik), Germany University of Stuttgart (BAUHAUS Group), Germany University of Victoria (RIGI Group), Canada

Universities of Waterloo and Toronto (SWAG), Canada

(6)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (6)

Interoperablity of Reengineering Tools

GXL Example

<gxl>

<graph>

<node id = "P" >

<attr name = "File">

<string> main.c </string> </attr>

</node>

<node id = "Q" >

<attr name = "File">

<string> test.c </string> </attr>

</node>

<node id = "V" >

<attr name = "Line">

<int> 225 </int> </attr>

</node>

<node id = "W" >

<attr name = "Line">

<int> 316 </int> </attr>

</node>

<edge id = "r1"

from = "P" to = "V">

<attr name = "Line">

<int> 127 </int> </attr>

</edge>

<edge id = "r2"

from = "Q" to = "W">

<attr name = "Line">

<int> 27 </int> </attr>

</edge>

<edge id = "c"

from = "P" to = "Q">

<attr name = "Line">

<int> 316 </int></attr>

</edge>

</graph>

</gxl>

(7)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (7)

Interoperablity of Reengineering Tools

Dimensions of Reengineering Data

Programming Languages

– single Languages (Ada, C, C++, Cobol, Java) – multi-language systems

Level of Abstraction

– AST-level

– Architectural level

Relational Aspects

– Dataflow, Controlflow, ...

– Includes, Calls, Uses, ...

(8)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (8)

Interoperablity of Reengineering Tools

Definition of GXL

Requirements for Exchange Formats

– independent from

• specific reengineering dimensions

• specific reengineering applications

• specific reengineering tools

– concrete enough to be interpreted by different reengineering tools

GXL Approach

– exchanging instance data and schema data

GXL First Directive

Everything is a typed, attributed, directed graph

(9)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (9)

Interoperablity of Reengineering Tools

GXL Idea

Graph

DataPart

SchemaPart

<<isInstanceOf>>

Schema Graph Data

DataPart

SchemaPart

<<instanceOf>>

M0 M1

Schema Meta Graph

DataPart

SchemaPart

<<instanceOf>>

M2

UML class diagrams

UML object diagrams GXL Documents

(10)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (10)

Interoperablity of Reengineering Tools

Definition of GXL

• simple and compact representation of directed and undirected graphs

• suitable for a broad spectrum of graph models,

– including support for hypergraphs and – support for hierarchical graphs

• support for representation of complex attribute values

extensibility of graph elements and attribute types

uniform representation for graphs

and graph schemas

(11)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (11)

Interoperablity of Reengineering Tools

GXL Graph Model

(12)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (13)

Interoperablity of Reengineering Tools

GXL Document Type Definition

automatic generation of GXL DTD

 follows MOF/XMI standard

 entity types and attributes are not distinguished

 blows up the number of XML elements (GXL 0.7.2: 136/74 elements)

manual definition of GXL DTD

 manual work to do

 distinction between entity types and attributes reflects design decisions

 small and simple DTD (23 elements)

(13)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (14)

Interoperablity of Reengineering Tools

GXL Document Type Definition (0.99)

<!ENTITY % *-extension "" >

<!ELEMENT gxl (%gxl-extension; graph*) >

<!ATTLIST gxl xmlns:xlink CDATA #FIXED "www.w3.org/1999/xlink">

<!ELEMENT type EMPTY>

<!ATTLIST type xlink:type (simple) #FIXED "simple"

xlink:href CDATA #REQUIRED>

<!ELEMENT graph (%graph-extension;

type? , attr* , ( node | edge | rel )*) >

<!ATTLIST graph id ID #REQUIRED role NMTOKEN #IMPLIED edgeids ( true | false ) "false"

hypergraph ( true | false ) "false"

orientation ( directed | undirected ) "directed">

<!ELEMENT node (%node-extension; type? , attr*, graph*) >

<!ATTLIST node id ID #REQUIRED>

<!ELEMENT edge (%edge-extension; type?, attr*, graph*) >

<!ATTLIST edge id ID #IMPLIED from IDREF #REQUIRED to IDREF #REQUIRED fromorder CDATA #IMPLIED toorder CDATA #IMPLIED

orientation ( directed | undirected ) #IMPLIED>

<!ELEMENT rel (%rel-extension;

type? , attr*, graph*, link* ) >

<!ATTLIST rel id ID #IMPLIED

orientation ( directed | undirected ) #IMPLIED>

<!ELEMENT link (%link-extension; attr*) >

<!ATTLIST link ref IDREF #REQUIRED role NMTOKEN #IMPLIED

direction ( in | out | none ) #IMPLIED startorder CDATA #IMPLIED

endorder CDATA #IMPLIED >

<!ELEMENT attr (type?, attr*, (%val;)) >

<!ATTLIST attr id IDREF #IMPLIED name NMTOKEN #REQUIRED kind NMTOKEN #IMPLIED >

<!ENTITY % val " %value-extension; locator | bool |int | float | string | seq | set | bag |tup ">

<!ELEMENT locator EMPTY >

<!ATTLIST locator xlink:type (simple) #FIXED "simple"

xlink:href CDATA #IMPLIED >

<!ELEMENT bool |int | float | string (#PCDATA) >

<!ELEMENT seq | set | bag | tup (%val;)* >

(14)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (15)

Interoperablity of Reengineering Tools

Exchanging Graphs with GXL

• Attributed, typed, directed Graphs

• Undirected Graphs

• Ordered Graphs

• Hypergraphs

• Hierarchical Graphs

(15)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (16)

Interoperablity of Reengineering Tools

Typed, Attributed, Directed Graphs

p :

v :

graph <?xml version="1.0"?>

<!DOCTYPE gxl SYSTEM "gxl.dtd">

<gxl><graph>

<node id = "p">

</node>

<node id = "v">

</node>

<edge

from = "p" to = "v">

</edge>

<graph></gxl>

e :

id = "e"

<type xlink:href =

"schema.gxl#Proc"/>

<type xlink:href =

"schema.gxl#Var"/>

<type xlink:href =

"schema.gxl#refers"/>

refers typed

Proc

Var attributed

file = "main.c"

line = 27

<attr name = "file">

<string>main.c</string></attr>

<attr name = "line">

<int>27</int></attr>

(16)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (17)

Interoperablity of Reengineering Tools

Attributed Edges

<edge id = "e"

from = "p" to = "v">

<type xlink:href =

"schema.gxl#refers"/>

<attr name = "line">

<int>42</int>

</attr>

</edge>

p :

v :

Proc

Var

file = "main.c"

line = 27 e : refers

line = 42

(17)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (18)

Interoperablity of Reengineering Tools

<graph

orientation = "undirected" >

...

<edge id = "e"

from = "p" to = "v">

</edge>

...

</graph>

Undirected Graphs

p :

v :

Proc

Var

file = "main.c"

line = 27 e :

edges are always noted as directed

but can be interpreted as undirected

(18)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (21)

Interoperablity of Reengineering Tools

Nodes and Edges (DTD)

<!ELEMENT node (%node-extension;

type? , attr*, graph*) >

<!ATTLIST node

id ID #REQUIRED >

<!ELEMENT edge (%edge-extension;

type? , attr*, graph*)>

<!ATTLIST edge

id ID #IMPLIED

from IDREF#REQUIRED to IDREF#REQUIRED

fromorder CDATA #IMPLIED toorder CDATA #IMPLIED

orientation (directed|undirected ) #IMPLIED>

(19)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (22)

Interoperablity of Reengineering Tools

Prog authors = { Ric,

Andy, Susan,

Andreas } p :

GXL supports

•set,

•sequence,

•bag,

•tuple

of

•bool,

•int,

•float,

•string,

•references (URI),

•complex values

Attribute Types

<node id = "p">

<type xlink:href =

"schema.gxl#prog"/>

<attr name = "authors">

<set>

<string>Ric</string>

<string>Andy</string>

<string>Susan</string>

<string>Andreas</string>

</set>

</attr>

</node>

(20)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (25)

Interoperablity of Reengineering Tools

Ordering of Incidences

<node id = "u" />

<node id = "v" />

<node id = "w" />

<edge id = "e"

from = "v" to = "u"

/>

<edge id = "f"

from = "w" to = v"

/>

<edge id = "g"

from = "v" to = "v"

/>

u :

w : v : e :

g :

f : {1}

{2}

{4}

{3}

toorder = "3"

toorder = "2"

fromorder = "1"

fromorder = "4"

(21)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (26)

Interoperablity of Reengineering Tools

{1}

{2}

v : V

w : W

u : U r :

theSecondU

theFirstU

theV

theW

directed

Hypergraphs and n-ary Relations

<rel id = "r"

orientation = "directed">

<link ref = "u"

role = "theFirstU"

direction = "out"

endorder = "2" />

<link ref = "u"

role = "theSecondU"

direction = "out"

endorder = "1" />

<link ref = "v"

role = "theV"

direction = "in" />

<link ref = "w"

role = "theW"

direction = "none"/>

</rel>

(22)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (29)

Interoperablity of Reengineering Tools

u : f : t : T

Support for Hierarchical Graphs

<node id = "t">

<type xlink:href =

"schema.gxl#T" />

</node>

<node id = "u"/>

<edge id = "f"

from = "t" to = "u"/>

<graph id = "g">

<type xlink:href =

"schema.gxl#GraphT"/>

<node id = "v"/>

<node id = "w"/>

<edge id = "e"

from = "v" to = "w"/>

</graph>

v : e : w :

g : GraphT

(23)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (31)

Interoperablity of Reengineering Tools

GXL Extension

• by redefining entities

• by including GXL DTD (external entities)

<!ENTITY % gxl-extension "FOO ," >

<!ELEMENT FOO (#PCDATA)>

<!ENTITY % basegxl SYSTEM "gxl.dtd">

%basegxl;

• GXL offers extending

– GXL documents – graphs

– nodes – edges

– hyperedges (rel) – links

– values

(24)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (33)

Interoperablity of Reengineering Tools

Summary: Exchanging Graphs

• Attributed, typed, directed Graphs

• Undirected Graphs

• Ordered Graphs

• Hypergraphs

• Hierarchical Graphs

(25)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (34)

Interoperablity of Reengineering Tools

Exchanging Schemas with GXL

• Graph Schema Definition with UML Class Diagrams

– attributed, typed, directed graphs – hypergraphs

– hierarchical graphs

• GXL Representation of class diagrams

• GXL Metaschema

(26)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (35)

Interoperablity of Reengineering Tools

Graph Schema - Graphs

UML class diagram

Var

file : string

line : int line : int

refers

Proc

v : Var

file="main.c"

line = 27 line = 42

e : refers

UML object diagram

p : Proc

(27)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (36)

Interoperablity of Reengineering Tools

Graph Schema - Notation

Var

file : string

line : int line : int

refers

Proc

edge class

node class node attribute

ordering

{ordered}

direction multiplicity

0 .. *

attribute attribute type

name edge

attributes

(28)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (37)

Interoperablity of Reengineering Tools

Graph Schema - Hypergraphs

UML object diagram

V

W

U r

theSecondU

theFirstU

theV

theW 1..*

0..1

1 1 {ordered}

{ordered}

UML class diagram v : V

w : W

u : U r :

theSecondU

theFirstU

theV

theW {1}

{2}

(29)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (38)

Interoperablity of Reengineering Tools

Graph Schema - Hierarchical Graphs

UML object diagram

u : U f : F

t : T

v : V w : W

e : E g : GraphT

UML class diagram

U T F

V W

GraphT

<<graph>>

E

Stereotyp

e

(30)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (39)

Interoperablity of Reengineering Tools

Graph Schema - Hierarchical Graphs

UML object diagram

u : U f : F

t : T

v : V w : W

e : E g : GraphT

Stereotyp

e Composition

U

V W

T

GraphT

<<graph>>

F E

UML class diagram

(31)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (40)

Interoperablity of Reengineering Tools

Graph Schema - Higher Constructs

Generalization

Aggregation

(32)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (41)

Interoperablity of Reengineering Tools

Summary: Exchanging Schemas

• Graph Schema Definition with UML Class Diagrams

– attributed, typed, directed graphs – hypergraphs

– hierarchical graphs

• GXL Representation of class diagrams

• GXL Metaschema

(33)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (42)

Interoperablity of Reengineering Tools

Representing Schemas

• Schemas (graph classes) are represented as graphs as well

• Schemas are exchanged as GXL

documents suiting a metaschema for graph classes

• only one common and simple DTD for exchanging

– graphs matching different graph schemas

– graph classes matching a metaschema

(34)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (43)

Interoperablity of Reengineering Tools

GXL Schema Representation

UML class diagram

Var file:string

line : int line : int

Proc

refers

:

Nodeclas s

name="Proc"

:

Attribut e

name="file"

: String

:

EdgeClas s

name="refers"

:

NodeClass name="Var"

: Integer :

Attribut e

name="line"

comesFrom

goesTo has Attribute

has Domain

has

Attribute

has

Attribute

has Domain

schema graph

(35)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (44)

Interoperablity of Reengineering Tools

GXL Metaschema (Extract)

(36)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (45)

Interoperablity of Reengineering Tools

GXL Metaschema - Graph

(Extract)

(37)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (47)

Interoperablity of Reengineering Tools

GXL Metaschema - GXL Document

<?xml version="1.0"?>

<!DOCTYPE gxl SYSTEM "gxl.dtd">

<gxl>

<graph id = "gxl">

<type xlink:href = "gxl.gxl#gxl"/>

<node id = "NodeClass">

<type xlink:href =

"gxl.gxl#NodeClass"/>

<attr name = "name">

<string>NodeClass</string>

</attr>

<attr name = "isAbstract">

<bool>false</bool>

</attr>

</node>

...

<node id = "GraphClassElement">

<type xlink:href =

"gxl.gxl#NodeClass"/>

<attr name = "name">

<string>

GraphClassElement </string>

</attr>

<attr name = "isAbstract">

<bool>true</bool>

</attr>

</node>

...

<edge

from = "NodeClass"

to = "GraphClassElement">

<type xlink:href = "gxl.gxl#isA"/>

</edge>

(38)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (48)

Interoperablity of Reengineering Tools

Concepts in GXL Class Diagrams

• Definition of NodeClasses, EdgeClasses, and RelationClasses.

• Definition of (structured) Attributes.

• Definition of Orientation, Multiplicities, Roles, and Ordering.

• Definition of Graph Hierarchy.

• Definition of Graphclasses.

• Definition of Generalization and

Aggregation.

(39)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (49)

Interoperablity of Reengineering Tools

GXL Metaschema (Graph

Part)

(40)

© Institut für Softwaretechnik

Universität Koblenz-Landau Dagstuhl, Jan 21-26, 2001 (51)

Interoperablity of Reengineering Tools

Conclusion

GXL offers

a language for describing graphs

• directed and undirected, typed, attributed graphs

• hypergraphs and hierarchical graphs

a language for defining graph classes a language for exchanging graphs

instance graphs

schema graphs

more information

– http://www.gupro.de/GXL

Referenzen

ÄHNLICHE DOKUMENTE

This introduces exchangeable random graphs and gives a one-to-one correspondence between infinite ex- changeable random graphs and distributions on the space of proper graph

Claim: A necessary and sufficient condition for a walk of the desired form is that the graph is connected and has exactly zero (-&gt; Eulerian cycle) or two nodes (-&gt;

When we store the number of nodes for a graph G=(V,E) plus the degree and the neighbours of each node , such a data structure will be called an adjecency- list

Jeder deterministische Sortieralgorithmus, der auf paarweisen Vergleichen von Schlüsseln basiert, braucht zum Sortieren eines n -elementigen Arrays sowohl im Worst-Case als auch

Nokia Research Center (Software Technology Laboratory), Finland Philips Research (Software Architecture Group), The Netherlands RWTH Aachen (Department of Computer Science III),

mathematical model on instance and schema level – typed, attributed, directed

– graphs matching different graph schemas – graph classes matching a metaschema.. GXL Metaschema (Graph