Object Centric Reflection
-
Upload
esug -
Category
Technology
-
view
719 -
download
0
description
Transcript of Object Centric Reflection
![Page 1: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/1.jpg)
Object-Centric Reflection
Jorge RessiaSoftware Composition Group
Thursday, August 30, 12
![Page 2: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/2.jpg)
Profiling
Thursday, August 30, 12
![Page 3: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/3.jpg)
Profiling:Is the activity of analyzing a program execution.
Thursday, August 30, 12
![Page 4: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/4.jpg)
Profile
}
{
}
{
}
{}
{
}
{
Domain-Specific Profiling 3
CPU time profiling
Mondrian [9] is an open and agile visualization engine. Mondrian describes avisualization using a graph of (possibly nested) nodes and edges. In June 2010a serious performance issue was raised1. Tracking down the cause of the poorperformance was not trivial. We first used a standard sample-based profiler.
Execution sampling approximates the time spent in an application’s methodsby periodically stopping a program and recording the current set of methodsunder executions. Such a profiling technique is relatively accurate since it haslittle impact on the overall execution. This sampling technique is used by almostall mainstream profilers, such as JProfiler, YourKit, xprof [10], and hprof.
MessageTally, the standard sampling-based profiler in Pharo Smalltalk2, tex-tually describes the execution in terms of CPU consumption and invocation foreach method of Mondrian:
54.8% {11501ms} MOCanvas>>drawOn:54.8% {11501ms} MORoot(MONode)>>displayOn:30.9% {6485ms} MONode>>displayOn:
| 18.1% {3799ms} MOEdge>>displayOn:...
| 8.4% {1763ms} MOEdge>>displayOn:| | 8.0% {1679ms} MOStraightLineShape>>display:on:| | 2.6% {546ms} FormCanvas>>line:to:width:color:...
23.4% {4911ms} MOEdge>>displayOn:...
We can observe that the virtual machine spent about 54% of its time inthe method displayOn: defined in the class MORoot. A root is the unique non-nested node that contains all the nodes of the edges of the visualization. Thisgeneral profiling information says that rendering nodes and edges consumes agreat share of the CPU time, but it does not help in pinpointing which nodesand edges are responsible for the time spent. Not all graphical elements equallyconsume resources.
Traditional execution sampling profilers center their result on the frames ofthe execution stack and completely ignore the identity of the object that receivedthe method call and its arguments. As a consequence, it is hard to track downwhich objects cause the slowdown. For the example above, the traditional profilersays that we spent 30.9% in MONode>>displayOn: without saying which nodeswere actually refreshed too often.
Coverage
PetitParser is a parsing framework combining ideas from scannerless parsing,parser combinators, parsing expression grammars and packrat parsers to modelgrammars and parsers as objects that can be reconfigured dynamically [11].
1 http://forum.world.st/Mondrian-is-slow-next-step-tc2257050.html#a2261116
2 http://www.pharo-project.org/
Thursday, August 30, 12
![Page 5: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/5.jpg)
Domain
Profile
}
{
}
{
}
{}
{
}
{
Domain-Specific Profiling 3
CPU time profiling
Mondrian [9] is an open and agile visualization engine. Mondrian describes avisualization using a graph of (possibly nested) nodes and edges. In June 2010a serious performance issue was raised1. Tracking down the cause of the poorperformance was not trivial. We first used a standard sample-based profiler.
Execution sampling approximates the time spent in an application’s methodsby periodically stopping a program and recording the current set of methodsunder executions. Such a profiling technique is relatively accurate since it haslittle impact on the overall execution. This sampling technique is used by almostall mainstream profilers, such as JProfiler, YourKit, xprof [10], and hprof.
MessageTally, the standard sampling-based profiler in Pharo Smalltalk2, tex-tually describes the execution in terms of CPU consumption and invocation foreach method of Mondrian:
54.8% {11501ms} MOCanvas>>drawOn:54.8% {11501ms} MORoot(MONode)>>displayOn:30.9% {6485ms} MONode>>displayOn:
| 18.1% {3799ms} MOEdge>>displayOn:...
| 8.4% {1763ms} MOEdge>>displayOn:| | 8.0% {1679ms} MOStraightLineShape>>display:on:| | 2.6% {546ms} FormCanvas>>line:to:width:color:...
23.4% {4911ms} MOEdge>>displayOn:...
We can observe that the virtual machine spent about 54% of its time inthe method displayOn: defined in the class MORoot. A root is the unique non-nested node that contains all the nodes of the edges of the visualization. Thisgeneral profiling information says that rendering nodes and edges consumes agreat share of the CPU time, but it does not help in pinpointing which nodesand edges are responsible for the time spent. Not all graphical elements equallyconsume resources.
Traditional execution sampling profilers center their result on the frames ofthe execution stack and completely ignore the identity of the object that receivedthe method call and its arguments. As a consequence, it is hard to track downwhich objects cause the slowdown. For the example above, the traditional profilersays that we spent 30.9% in MONode>>displayOn: without saying which nodeswere actually refreshed too often.
Coverage
PetitParser is a parsing framework combining ideas from scannerless parsing,parser combinators, parsing expression grammars and packrat parsers to modelgrammars and parsers as objects that can be reconfigured dynamically [11].
1 http://forum.world.st/Mondrian-is-slow-next-step-tc2257050.html#a2261116
2 http://www.pharo-project.org/
Thursday, August 30, 12
![Page 6: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/6.jpg)
Mondrian
Thursday, August 30, 12
![Page 7: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/7.jpg)
Thursday, August 30, 12
![Page 8: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/8.jpg)
System ComplexityLanza and Ducasse 2003
Thursday, August 30, 12
![Page 9: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/9.jpg)
Domain-Specific Profiling 3
CPU time profiling
Mondrian [9] is an open and agile visualization engine. Mondrian describes avisualization using a graph of (possibly nested) nodes and edges. In June 2010a serious performance issue was raised1. Tracking down the cause of the poorperformance was not trivial. We first used a standard sample-based profiler.
Execution sampling approximates the time spent in an application’s methodsby periodically stopping a program and recording the current set of methodsunder executions. Such a profiling technique is relatively accurate since it haslittle impact on the overall execution. This sampling technique is used by almostall mainstream profilers, such as JProfiler, YourKit, xprof [10], and hprof.
MessageTally, the standard sampling-based profiler in Pharo Smalltalk2, tex-tually describes the execution in terms of CPU consumption and invocation foreach method of Mondrian:
54.8% {11501ms} MOCanvas>>drawOn:54.8% {11501ms} MORoot(MONode)>>displayOn:30.9% {6485ms} MONode>>displayOn:
| 18.1% {3799ms} MOEdge>>displayOn:...
| 8.4% {1763ms} MOEdge>>displayOn:| | 8.0% {1679ms} MOStraightLineShape>>display:on:| | 2.6% {546ms} FormCanvas>>line:to:width:color:...
23.4% {4911ms} MOEdge>>displayOn:...
We can observe that the virtual machine spent about 54% of its time inthe method displayOn: defined in the class MORoot. A root is the unique non-nested node that contains all the nodes of the edges of the visualization. Thisgeneral profiling information says that rendering nodes and edges consumes agreat share of the CPU time, but it does not help in pinpointing which nodesand edges are responsible for the time spent. Not all graphical elements equallyconsume resources.
Traditional execution sampling profilers center their result on the frames ofthe execution stack and completely ignore the identity of the object that receivedthe method call and its arguments. As a consequence, it is hard to track downwhich objects cause the slowdown. For the example above, the traditional profilersays that we spent 30.9% in MONode>>displayOn: without saying which nodeswere actually refreshed too often.
Coverage
PetitParser is a parsing framework combining ideas from scannerless parsing,parser combinators, parsing expression grammars and packrat parsers to modelgrammars and parsers as objects that can be reconfigured dynamically [11].
1 http://forum.world.st/Mondrian-is-slow-next-step-tc2257050.html#a2261116
2 http://www.pharo-project.org/
Thursday, August 30, 12
![Page 10: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/10.jpg)
Which is the relationship?Domain-Specific Profiling 3
CPU time profiling
Mondrian [9] is an open and agile visualization engine. Mondrian describes avisualization using a graph of (possibly nested) nodes and edges. In June 2010a serious performance issue was raised1. Tracking down the cause of the poorperformance was not trivial. We first used a standard sample-based profiler.
Execution sampling approximates the time spent in an application’s methodsby periodically stopping a program and recording the current set of methodsunder executions. Such a profiling technique is relatively accurate since it haslittle impact on the overall execution. This sampling technique is used by almostall mainstream profilers, such as JProfiler, YourKit, xprof [10], and hprof.
MessageTally, the standard sampling-based profiler in Pharo Smalltalk2, tex-tually describes the execution in terms of CPU consumption and invocation foreach method of Mondrian:
54.8% {11501ms} MOCanvas>>drawOn:54.8% {11501ms} MORoot(MONode)>>displayOn:30.9% {6485ms} MONode>>displayOn:
| 18.1% {3799ms} MOEdge>>displayOn:...
| 8.4% {1763ms} MOEdge>>displayOn:| | 8.0% {1679ms} MOStraightLineShape>>display:on:| | 2.6% {546ms} FormCanvas>>line:to:width:color:...
23.4% {4911ms} MOEdge>>displayOn:...
We can observe that the virtual machine spent about 54% of its time inthe method displayOn: defined in the class MORoot. A root is the unique non-nested node that contains all the nodes of the edges of the visualization. Thisgeneral profiling information says that rendering nodes and edges consumes agreat share of the CPU time, but it does not help in pinpointing which nodesand edges are responsible for the time spent. Not all graphical elements equallyconsume resources.
Traditional execution sampling profilers center their result on the frames ofthe execution stack and completely ignore the identity of the object that receivedthe method call and its arguments. As a consequence, it is hard to track downwhich objects cause the slowdown. For the example above, the traditional profilersays that we spent 30.9% in MONode>>displayOn: without saying which nodeswere actually refreshed too often.
Coverage
PetitParser is a parsing framework combining ideas from scannerless parsing,parser combinators, parsing expression grammars and packrat parsers to modelgrammars and parsers as objects that can be reconfigured dynamically [11].
1 http://forum.world.st/Mondrian-is-slow-next-step-tc2257050.html#a2261116
2 http://www.pharo-project.org/
?
Thursday, August 30, 12
![Page 11: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/11.jpg)
Debugging
Thursday, August 30, 12
![Page 12: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/12.jpg)
Debugging:Is the process of interacting with a running software system to test and understand its current behavior.
Thursday, August 30, 12
![Page 13: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/13.jpg)
Mondrian
Thursday, August 30, 12
![Page 14: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/14.jpg)
Thursday, August 30, 12
![Page 15: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/15.jpg)
System ComplexityLanza and Ducasse 2003
Thursday, August 30, 12
![Page 16: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/16.jpg)
Rendering
Thursday, August 30, 12
![Page 17: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/17.jpg)
Shape and Nodes
Thursday, August 30, 12
![Page 18: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/18.jpg)
Thursday, August 30, 12
![Page 19: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/19.jpg)
Thursday, August 30, 12
![Page 20: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/20.jpg)
How do we debug this?
Thursday, August 30, 12
![Page 21: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/21.jpg)
Breakpoints
Thursday, August 30, 12
![Page 22: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/22.jpg)
Conditional Breakpoints
Thursday, August 30, 12
![Page 23: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/23.jpg)
}
{
}
{
}
{}
{
}
{
Thursday, August 30, 12
![Page 24: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/24.jpg)
}
{
}
{
}
{}
{
}
{
Thursday, August 30, 12
![Page 25: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/25.jpg)
Developer Questions
Thursday, August 30, 12
![Page 26: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/26.jpg)
When during the execution is this method called? (Q.13)Where are instances of this class created? (Q.14) Where is this variable or data structure being accessed? (Q.15)What are the values of the argument at runtime? (Q.19)What data is being modified in this code? (Q.20)How are these types or objects related? (Q.22)How can data be passed to (or accessed at) this point
in the code? (Q.28)What parts of this data structure are accessed in this
code? (Q.33)
Thursday, August 30, 12
![Page 27: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/27.jpg)
When during the execution is this method called? (Q.13)Where are instances of this class created? (Q.14) Where is this variable or data structure being accessed? (Q.15)What are the values of the argument at runtime? (Q.19)What data is being modified in this code? (Q.20)How are these types or objects related? (Q.22)How can data be passed to (or accessed at) this point
in the code? (Q.28)What parts of this data structure are accessed in this
code? (Q.33) Sillito etal.
Questions programmers ask during software
evolution tasks. 2008
Thursday, August 30, 12
![Page 28: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/28.jpg)
Which is the relationship?
?When during the execution is this method called? (Q.13)
Where are instances of this class created? (Q.14)
Where is this variable or data structure being accessed? (Q.15)
What are the values of the argument at runtime? (Q.19)
What data is being modified in this code? (Q.20)
How are these types or objects related? (Q.22)
How can data be passed to (or accessed at) this point in the code? (Q.28)
What parts of this data structure are accessed in this code? (Q.33)
Thursday, August 30, 12
![Page 29: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/29.jpg)
What is the problem?
Thursday, August 30, 12
![Page 30: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/30.jpg)
Traditional Reflection
Thursday, August 30, 12
![Page 31: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/31.jpg)
Domain-Specific Profiling 3
CPU time profiling
Mondrian [9] is an open and agile visualization engine. Mondrian describes avisualization using a graph of (possibly nested) nodes and edges. In June 2010a serious performance issue was raised1. Tracking down the cause of the poorperformance was not trivial. We first used a standard sample-based profiler.
Execution sampling approximates the time spent in an application’s methodsby periodically stopping a program and recording the current set of methodsunder executions. Such a profiling technique is relatively accurate since it haslittle impact on the overall execution. This sampling technique is used by almostall mainstream profilers, such as JProfiler, YourKit, xprof [10], and hprof.
MessageTally, the standard sampling-based profiler in Pharo Smalltalk2, tex-tually describes the execution in terms of CPU consumption and invocation foreach method of Mondrian:
54.8% {11501ms} MOCanvas>>drawOn:54.8% {11501ms} MORoot(MONode)>>displayOn:30.9% {6485ms} MONode>>displayOn:
| 18.1% {3799ms} MOEdge>>displayOn:...
| 8.4% {1763ms} MOEdge>>displayOn:| | 8.0% {1679ms} MOStraightLineShape>>display:on:| | 2.6% {546ms} FormCanvas>>line:to:width:color:...
23.4% {4911ms} MOEdge>>displayOn:...
We can observe that the virtual machine spent about 54% of its time inthe method displayOn: defined in the class MORoot. A root is the unique non-nested node that contains all the nodes of the edges of the visualization. Thisgeneral profiling information says that rendering nodes and edges consumes agreat share of the CPU time, but it does not help in pinpointing which nodesand edges are responsible for the time spent. Not all graphical elements equallyconsume resources.
Traditional execution sampling profilers center their result on the frames ofthe execution stack and completely ignore the identity of the object that receivedthe method call and its arguments. As a consequence, it is hard to track downwhich objects cause the slowdown. For the example above, the traditional profilersays that we spent 30.9% in MONode>>displayOn: without saying which nodeswere actually refreshed too often.
Coverage
PetitParser is a parsing framework combining ideas from scannerless parsing,parser combinators, parsing expression grammars and packrat parsers to modelgrammars and parsers as objects that can be reconfigured dynamically [11].
1 http://forum.world.st/Mondrian-is-slow-next-step-tc2257050.html#a2261116
2 http://www.pharo-project.org/
?
Profiling
Thursday, August 30, 12
![Page 32: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/32.jpg)
?When during the execution is this method called? (Q.13)
Where are instances of this class created? (Q.14)
Where is this variable or data structure being accessed? (Q.15)
What are the values of the argument at runtime? (Q.19)
What data is being modified in this code? (Q.20)
How are these types or objects related? (Q.22)
How can data be passed to (or accessed at) this point in the code? (Q.28)
What parts of this data structure are accessed in this code? (Q.33)
Debugging
Thursday, August 30, 12
![Page 33: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/33.jpg)
Object Paradox
Thursday, August 30, 12
![Page 34: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/34.jpg)
Object-Centric Reflection
Thursday, August 30, 12
![Page 35: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/35.jpg)
Thursday, August 30, 12
![Page 36: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/36.jpg)
Organize the Meta-level
Thursday, August 30, 12
![Page 37: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/37.jpg)
ExplicitMeta-objects
Thursday, August 30, 12
![Page 38: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/38.jpg)
Object
Meta-object
Class
Thursday, August 30, 12
![Page 39: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/39.jpg)
Object
Meta-object
Class
Thursday, August 30, 12
![Page 40: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/40.jpg)
Evolved Object
Meta-object
Class
Thursday, August 30, 12
![Page 41: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/41.jpg)
ExecutionReification
StructureEvolution
ProfilingDebugging
Thursday, August 30, 12
![Page 42: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/42.jpg)
ExecutionReification
StructureEvolution
ProfilingDebugging
Thursday, August 30, 12
![Page 43: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/43.jpg)
Object-Centric Debugging
Thursday, August 30, 12
![Page 44: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/44.jpg)
Object-Centric Debugging
ICSE 2012J. Ressia, A, Bergel and O. Nierstrasz
Thursday, August 30, 12
![Page 45: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/45.jpg)
}
{
}
{
}
{}
{
}
{
Thursday, August 30, 12
![Page 46: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/46.jpg)
}
{
}
{
}
{}
{
}
{
Thursday, August 30, 12
![Page 47: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/47.jpg)
}
{
}
{
}
{}
{
}
{
Thursday, August 30, 12
![Page 48: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/48.jpg)
Thursday, August 30, 12
![Page 49: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/49.jpg)
Thursday, August 30, 12
![Page 50: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/50.jpg)
Thursday, August 30, 12
![Page 51: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/51.jpg)
InstructionStream class>>on: InstructionStream class>>new InstructionStream>>initializeCompiledMethod>>initialPCInstructionStream>>method:pc:InstructionStream>>nextInstructionMessageCatcher class>>newInstructionStream>>interpretNextInstructionFor:...
on: new
initializemethod:pc:nextInstructioninterpretNextInstructionFor:...
step into, step over, resume
next message, next change
stack-centric debugging
object-centric debugging
...
centered on the InstructionStream class
centered on the InstructionStream object
next message, next change
Thursday, August 30, 12
![Page 52: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/52.jpg)
Mondrian
Thursday, August 30, 12
![Page 53: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/53.jpg)
Shape and Nodes
Thursday, August 30, 12
![Page 54: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/54.jpg)
Thursday, August 30, 12
![Page 55: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/55.jpg)
Thursday, August 30, 12
![Page 56: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/56.jpg)
halt on object in call
Thursday, August 30, 12
![Page 57: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/57.jpg)
Halt on next messageHalt on next message/s namedHalt on state changeHalt on state change namedHalt on next inherited messageHalt on next overloaded messageHalt on object/s in callHalt on next message from package
Thursday, August 30, 12
![Page 58: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/58.jpg)
ExecutionReification
StructureEvolution
Debugging Profiling
Thursday, August 30, 12
![Page 59: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/59.jpg)
MetaSpy
Thursday, August 30, 12
![Page 60: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/60.jpg)
MetaSpy
TOOLS 2011Bergel etal.
Thursday, August 30, 12
![Page 61: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/61.jpg)
Mondrian Profiler
Thursday, August 30, 12
![Page 62: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/62.jpg)
Thursday, August 30, 12
![Page 63: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/63.jpg)
System ComplexityLanza, Ducasse 2003
Thursday, August 30, 12
![Page 64: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/64.jpg)
Thursday, August 30, 12
![Page 65: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/65.jpg)
Profiling
StructureEvolution
Debugging
ExecutionReification
Thursday, August 30, 12
![Page 66: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/66.jpg)
What if we do not know what to evolve?
Thursday, August 30, 12
![Page 67: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/67.jpg)
Thursday, August 30, 12
![Page 68: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/68.jpg)
?Thursday, August 30, 12
![Page 69: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/69.jpg)
Prisma
Thursday, August 30, 12
![Page 70: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/70.jpg)
Thursday, August 30, 12
![Page 71: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/71.jpg)
Thursday, August 30, 12
![Page 72: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/72.jpg)
Thursday, August 30, 12
![Page 73: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/73.jpg)
Thursday, August 30, 12
![Page 74: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/74.jpg)
Thursday, August 30, 12
![Page 75: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/75.jpg)
Back in time Debugger
Thursday, August 30, 12
![Page 76: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/76.jpg)
Back in time Debugger
Object Flow Debugger
Lienhard etal. ECOOP 2008
Thursday, August 30, 12
![Page 77: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/77.jpg)
:Person field-write@t2
field-write@t3
init@t1
'Doe'
person := Person new t1...name := 'Doe' t2...name := 'Smith' t3
'Smith'
nullpredecessor
predecessor
value
value
value
name
name
name
Thursday, August 30, 12
![Page 78: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/78.jpg)
Profiling
ExecutionReification
Debugging
StructureEvolution
Thursday, August 30, 12
![Page 79: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/79.jpg)
Talents
scg.unibe.ch/research/talents
Thursday, August 30, 12
![Page 80: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/80.jpg)
Talents
scg.unibe.ch/research/talents
IWST 2011J. Ressia, T. Gîrba, O. Nierstrasz, F. Perin and
L. Renggli
Thursday, August 30, 12
![Page 81: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/81.jpg)
Dynamically composable units of
reuse
Thursday, August 30, 12
![Page 82: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/82.jpg)
Streams
Thursday, August 30, 12
![Page 83: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/83.jpg)
scg.unibe.ch/research/bifrost
Thursday, August 30, 12
![Page 84: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/84.jpg)
Object-Centric
DebuggerPrisma
Subjectopia MetaSpy
Talents Chameleon
Thursday, August 30, 12
![Page 85: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/85.jpg)
scg.unibe.ch/jenkins/
Thursday, August 30, 12
![Page 86: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/86.jpg)
AlexandreBergel
MarcusDenker
StéphaneDucasse
OscarNierstrasz
LukasRenggli
OscarNierstrasz
OscarNierstrasz
OscarNierstrasz
TudorGîrba
FabrizioPerin
Thursday, August 30, 12
![Page 87: Object Centric Reflection](https://reader034.fdocuments.net/reader034/viewer/2022051109/5485b15ab47959140d8b4f3e/html5/thumbnails/87.jpg)
scg.unibe.ch/research/bifrost
Thursday, August 30, 12