Title: Report on DMM Dagstuhl Middle Model
1Report on DMM(Dagstuhl Middle Model)
- Timothy C. Lethbridge
- SITE, University. of Ottawa
- tcl_at_site.uottawa.ca
2DMM was Invented at The Dagstuhl Seminar on
Interoperability of Reverse Engineering Tools
- Jan 22-26, 2001
- About 45 people
3The Dagstuhl Middle Model (DMM)
- Represents relationships among program and source
elements in a language-independent way - Key inputs
- University of Ottawa (TA)
- Sander Tichelaar Berne (Famix)
- Erhard Plödereder Stuttgart (Bauhaus)
- See http//titan.cnds.unibe.ch8080/Exchange/2
4Key Decisions
- Non-pre-processed code preferred
- Can represent procedural languages
- References partly resolved
- More study of this is needed
- Allows several different levels of detail
5The DMM schema
- Represented as UML
- Intended to be translated into a GXL schema
6Other GXL Schemas for Reverse Engineering
- Programming language level
- Abstract syntax trees
- Too much detail for many purposes
- Architectural level
- Connecting black boxes (e.g. pipe and filter)
- Hard / not possible to generate automatically
7Top level of the hierarchy
8Modelelementhierarchy
9Relationshiphierarchy
10Source objecthierarchy
11DMM Development Status
- University of Ottawa
- Have C parser that generates DMM
- Used in SORTIE project
- Others used the data our parser generated
- Future work
- Progress continuing steadily by email etc.
12Issues
- Multi-part references to members
- a.b().c.d
- Function pointers
- Resolving correct references
- Computed and aliased references
- Templates
13Possible extensions for traces and clusters
14Extending the Relationship Hierarchy for Clusters
15Useful URLs
- My home page
- http//www.site.uottawa.ca/tcl
- DMM
- http//titan.cnds.unibe.ch8080/Exchange/2
16Example code to demonstrate DMM
17Example DMM GXL (1/4)
- lt?xml version"1.0"?gt
- lt!DOCTYPE gxl SYSTEM "gxl1.0.dtd"gt
- ltgxlgt
- ltgraphgt
- lttype xlinkxref"dmmschema.dtddm
m"/gt - ltnode id1gt
- lttype xlinkxref"dmmschem
a.dtdSourceFile"/gt - ltattr name"name"gt
-
ltstringgtexample1.clt/stringgt - lt/attrgt
- ltattr name"path"gt
-
ltstringgtC\TEST\lt/stringgt - lt/attrgt
- lt/nodegt
- ltnode id2gt
- lttype xlinkxref"dmmschem
a.dtdSourcePart"/gt - ltattr name"startLine"gt
- ltintgt1lt/intgt
- lt/attrgt
18ExampleDMM GXLcont. (2/4)
- ltnode id4gt
- lttype xlinkxref"dmmschem
a.dtdSourcePart"/gt - ltattr name"startLine"gt
- ltintgt1lt/intgt
- lt/attrgt
- ltattr name"startChar"gt
- ltintgt4lt/intgt
- lt/attrgt
- ltattr name"endLine"gt
- ltintgt1lt/intgt
- lt/attrgt
- ltattr name"endChar"gt
- ltintgt5lt/intgt
- lt/attrgt
- lt/nodegt
- ltnode id5gt
- lttype xlinkxref"dmmschem
a.dtdType"/gt - ltattr name"name"gt
-
ltstringgtintlt/stringgt
19ExampleDMM GXLcont. (3/4)
- ltnode id7gt
- lttype xlinkxref"dmmschem
a.dtdRoutine"/gt - ltattr name"name"gt
-
ltstringgtmainlt/stringgt - lt/attrgt
- lt/nodegt
- ltnode id8gt
- lttype xlinkxref"dmmschem
a.dtdSourcePart"/gt - ltattr name"startLine"gt
- ltintgt2lt/intgt
- lt/attrgt
- ltattr name"startChar"gt
- ltintgt0lt/intgt
- lt/attrgt
- ltattr name"endLine"gt
- ltintgt2lt/intgt
- lt/attrgt
- ltattr name"endChar"gt
- ltintgt4lt/intgt
20Example DMM GXL cont. (4/4)
- ltedge from4 to5gt
- lttype xlinkxref"dmmschem
a.dtdDeclares"/gt - lt/edgegt
- ltedge from3 to5gt
- lttype xlinkxref"dmmschem
a.dtdIsOfType"/gt - lt/edgegt
- ltedge from1 to6gt
- lttype xlinkxref"dmmschem
a.dtdContains"/gt - lt/edgegt
- ltedge from6 to7gt
- lttype xlinkxref"dmmschem
a.dtdDefines"/gt - lt/edgegt
- ltedge from6 to8gt
- lttype xlinkxref"dmmschem
a.dtdContains"/gt - lt/edgegt
- ltedge from8 to9gt
- lttype xlinkxref"dmmschem
a.dtdDeclares"/gt - lt/edgegt
- ltedge from7 to9gt