Download presentation
Presentation is loading. Please wait.
1
Report on DMM (Dagstuhl Middle Model)
3/15/2017 Report on DMM (Dagstuhl Middle Model) Timothy C. Lethbridge SITE, University. of Ottawa
2
DMM was Invented at The Dagstuhl Seminar on Interoperability of Reverse Engineering Tools
Jan 22-26, 2001 About 45 people WCRE 2001 Timothy C. Lethbridge
3
The 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 WCRE 2001 Timothy C. Lethbridge
4
Key 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 WCRE 2001 Timothy C. Lethbridge
5
The DMM schema Represented as UML
Intended to be translated into a GXL schema WCRE 2001 Timothy C. Lethbridge
6
Other 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 WCRE 2001 Timothy C. Lethbridge
7
Top level of the hierarchy
WCRE 2001 Timothy C. Lethbridge
8
Model element hierarchy
WCRE 2001 Timothy C. Lethbridge
9
Relationship hierarchy
WCRE 2001 Timothy C. Lethbridge
10
Source object hierarchy
WCRE 2001 Timothy C. Lethbridge
11
DMM 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 etc. WCRE 2001 Timothy C. Lethbridge
12
Issues Multi-part references to members Function pointers
a.b().c.d Function pointers Resolving correct references Computed and aliased references Templates WCRE 2001 Timothy C. Lethbridge
13
Possible extensions for traces and clusters
WCRE 2001 Timothy C. Lethbridge
14
Extending the Relationship Hierarchy for Clusters
WCRE 2001 Timothy C. Lethbridge
15
Useful URLs My home page http://www.site.uottawa.ca/~tcl DMM
WCRE 2001 Timothy C. Lethbridge
16
Example code to demonstrate DMM
int i; void main() { i = 1; } WCRE 2001 Timothy C. Lethbridge
17
Example DMM GXL (1/4) WCRE 2001 Timothy C. Lethbridge
<?xml version="1.0"?> <!DOCTYPE gxl SYSTEM "gxl1.0.dtd"> <gxl> <graph> <type xlink:xref="dmmschema.dtd#dmm"/> <node id=1> <type xlink:xref="dmmschema.dtd#SourceFile"/> <attr name="name"> <string>example1.c</string> </attr> <attr name="path"> <string>C:\TEST\</string> </node> <node id=2> <type xlink:xref="dmmschema.dtd#SourcePart"/> <attr name="startLine"> <int>1</int> <attr name="startChar"> <int>4</int> <attr name="endLine"> <attr name="endChar"> <int>5</int> <node id=3> <type xlink:xref="dmmschema.dtd#GlobalVariable"/> <string>i</string> Example DMM GXL (1/4) WCRE 2001 Timothy C. Lethbridge
18
Example DMM GXL cont. (2/4)
<node id=4> <type xlink:xref="dmmschema.dtd#SourcePart"/> <attr name="startLine"> <int>1</int> </attr> <attr name="startChar"> <int>4</int> <attr name="endLine"> <attr name="endChar"> <int>5</int> </node> <node id=5> <type xlink:xref="dmmschema.dtd#Type"/> <attr name="name"> <string>int</string> <node id=6> <int>2</int> Example DMM GXL cont. (2/4) WCRE 2001 Timothy C. Lethbridge
19
Example DMM GXL cont. (3/4)
<node id=7> <type xlink:xref="dmmschema.dtd#Routine"/> <attr name="name"> <string>main</string> </attr> </node> <node id=8> <type xlink:xref="dmmschema.dtd#SourcePart"/> <attr name="startLine"> <int>2</int> <attr name="startChar"> <int>0</int> <attr name="endLine"> <attr name="endChar"> <int>4</int> <node id=9> <type xlink:xref="dmmschema.dtd#Type"/> <string>void</string> <edge from=1 to=2> <type xlink:xref="dmmschema.dtd#Contains"/> </edge> <edge from=2 to=3> <type xlink:xref="dmmschema.dtd#Defines"/> <edge from=2 to=4> Example DMM GXL cont. (3/4) WCRE 2001 Timothy C. Lethbridge
20
Example DMM GXL cont. (4/4)
<edge from=4 to=5> <type xlink:xref="dmmschema.dtd#Declares"/> </edge> <edge from=3 to=5> <type xlink:xref="dmmschema.dtd#IsOfType"/> <edge from=1 to=6> <type xlink:xref="dmmschema.dtd#Contains"/> <edge from=6 to=7> <type xlink:xref="dmmschema.dtd#Defines"/> <edge from=6 to=8> <edge from=8 to=9> <edge from=7 to=9> <type xlink:xref="dmmschema.dtd#Uses"/> <edge from=7 to=3> <type xlink:xref="dmmschema.dtd#Sets"/> </graph> </gxl> WCRE 2001 Timothy C. Lethbridge
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.