SlideShare a Scribd company logo
1 of 21
Download to read offline
Object Flow Analysis –
Taking an Object-centricView
on Dynamic Analysis
Adrian Lienhard1, Stéphane Ducasse2 andTudor Gîrba1
1Software Composition Group, University of Bern, Switzerland
2 LISTIC, University of Savoie, France
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
A missing aspect of OO
dynamic analysis
Typical characterization of OO program execution:
1) message passing
2) object interrelationships
How are objects passed throught the system?
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
1) the method execution perspective
MethodNode>>generate
ASTTranslator class>>new
...
...
IRBuilder>>initialize
IRMethod class>>new
...
ASTTranslator>>visitNode:
ASTTranslator>>ir
IRMethod>>compiledMethod
IRTranlator class>new
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
1) the method execution perspective
“How is the IRMethod
instance passed to
MethodNode?”
MethodNode>>generate
ASTTranslator class>>new
...
...
IRBuilder>>initialize
IRMethod class>>new
...
ASTTranslator>>visitNode:
ASTTranslator>>ir
IRMethod>>compiledMethod
IRTranlator class>new
?
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
2) the object interrelationship perspective
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
“How is the IRMethod
instance passed to
MethodNode?”
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
?
2) the object interrelationship perspective
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
:IRBuilder
:IRMethod
:IRSequence
:MethodNode
:ASTTranslator
?
MethodNode>>generate
ASTTranslator class>>new
...
...
IRBuilder>>initialize
IRMethod class>>new
...
ASTTranslator>>visitNode:
ASTTranslator>>ir
IRMethod>>compiledMethod
IRTranlator class>new
? interdependency?
Object Flow Analysis
track the transfer of object references
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
a) capture all
references of an
object
b) track the
transfer of
references
Object Flow
Analysis
instantiation
field store
field read
argument
field store
return
return
field store
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
a) capture all
references of an
object
b) track the
transfer of
references
Object Flow
Analysis
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Object Flow
Analysis
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
instantiation
field store
field read
argument
field store
return
return
field store
argument
field read
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
IRMethod>>compiledMethod
^ compiledMethod := IRTranslator new
interpret: self;
compiledMethod.
IRTranslator>>interpret: ir
...
instantiation
field write
field read
argument
field write
return
return
field write
argument
field read
2
3
2
3
1
1
“How is the IRMethod
instance passed to
MethodNode?”
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Application
How do classes
exchange objects?
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Inter-unit
flow view
classes
containedInPackage: ’AST-Nodes’
mapTo: ’AST’.
classes
hierarchyRootedIn: ’IRInstruction’
mapTo: ’Intermediate-Representation’
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Chronological
propagation
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Spanning flows
Parser (4)
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Spanning flows
IRBuilder
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
objects stored
in an instance
variable
objects passed out
multiple times
objects passed
through directly
objects created in
IRBuilder
timeline
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Alias
*
0..1
parent
child
Instance
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
ce
nce new.
hod
isitNode: self.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Alias
*
0..1
parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Representing object flows
stantiation
field store
read
ument
store
return
return
field store
field read
stantiation
field write
read
ument
write
return
return
...
Alias
*
0..1
parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
0..1 *
sender
Method
Class
Attribute
Activation
receiver
creator
Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch
Summary
IRBuilder>>initialize
ir := IRMethod new.
...
IRBuilder>>startNewSequence
newSequence := IRSequence new.
newSequence method: ir.
IRSequence>>method: aMethod
method := aMethod.
ASTTranslator>>ir
^ builder ir.
MethodNode>>generate
ast := ASTTranslator new visitNode: self.
ir := ast ir.
^ ir compiledMethod.
instantiation
field store
field read
argument
field store
return
return
field store
field read
instantiation
field write
field read
argument
field write
return
return
...
Alias
*
0..1
parent
child
Instance
ArgumentAlias FieldWriteAliasReturnAlias...
0..1 *
sender
Method
Class
Attribute
Activation
receiver
creator
Questions?

More Related Content

Similar to Object Flow Analysis

IoT Toolkit and Smart Object API Tutorial Introduction
IoT Toolkit and Smart Object API Tutorial IntroductionIoT Toolkit and Smart Object API Tutorial Introduction
IoT Toolkit and Smart Object API Tutorial IntroductionMichael Koster
 
IoT Toolkit and the Smart Object API Tutorial Introduction
IoT Toolkit and the Smart Object API Tutorial IntroductionIoT Toolkit and the Smart Object API Tutorial Introduction
IoT Toolkit and the Smart Object API Tutorial IntroductionMichael Koster
 
Android Malware Analysis
Android Malware AnalysisAndroid Malware Analysis
Android Malware AnalysisJongWon Kim
 
Rails for Beginners - Le Wagon
Rails for Beginners - Le WagonRails for Beginners - Le Wagon
Rails for Beginners - Le WagonAlex Benoit
 
Rx for Android & iOS by Harin Trivedi
Rx for Android & iOS  by Harin TrivediRx for Android & iOS  by Harin Trivedi
Rx for Android & iOS by Harin Trivediharintrivedi
 
iPhone Development
iPhone DevelopmentiPhone Development
iPhone DevelopmentTechizzaa
 
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...DroidConTLV
 
Multi-Dimensional Process Analysis
Multi-Dimensional Process Analysis Multi-Dimensional Process Analysis
Multi-Dimensional Process Analysis Dirk Fahland
 
Objects arent records with byte codes on the side
Objects arent records with byte codes on the sideObjects arent records with byte codes on the side
Objects arent records with byte codes on the sideMichael Caruso
 
Functional Programming With Scala
Functional Programming With ScalaFunctional Programming With Scala
Functional Programming With ScalaKnoldus Inc.
 
Drd secr final1_3
Drd secr final1_3Drd secr final1_3
Drd secr final1_3Devexperts
 
Dynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDevexperts
 
Class & Object - Intro
Class & Object - IntroClass & Object - Intro
Class & Object - IntroPRN USM
 
Aci programmability
Aci programmabilityAci programmability
Aci programmabilityCisco DevNet
 
Introduction to ACI APIs
Introduction to ACI APIsIntroduction to ACI APIs
Introduction to ACI APIsCisco DevNet
 

Similar to Object Flow Analysis (20)

IoT Toolkit and Smart Object API Tutorial Introduction
IoT Toolkit and Smart Object API Tutorial IntroductionIoT Toolkit and Smart Object API Tutorial Introduction
IoT Toolkit and Smart Object API Tutorial Introduction
 
IoT Toolkit and the Smart Object API Tutorial Introduction
IoT Toolkit and the Smart Object API Tutorial IntroductionIoT Toolkit and the Smart Object API Tutorial Introduction
IoT Toolkit and the Smart Object API Tutorial Introduction
 
12 virtualmachine
12 virtualmachine12 virtualmachine
12 virtualmachine
 
00-review.ppt
00-review.ppt00-review.ppt
00-review.ppt
 
Ns2 by khan
Ns2 by khan Ns2 by khan
Ns2 by khan
 
Android Malware Analysis
Android Malware AnalysisAndroid Malware Analysis
Android Malware Analysis
 
Rails for Beginners - Le Wagon
Rails for Beginners - Le WagonRails for Beginners - Le Wagon
Rails for Beginners - Le Wagon
 
Rx for Android & iOS by Harin Trivedi
Rx for Android & iOS  by Harin TrivediRx for Android & iOS  by Harin Trivedi
Rx for Android & iOS by Harin Trivedi
 
iPhone Development
iPhone DevelopmentiPhone Development
iPhone Development
 
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
Think Async: Understanding the Complexity of Multithreading - Avi Kabizon & A...
 
Multi-Dimensional Process Analysis
Multi-Dimensional Process Analysis Multi-Dimensional Process Analysis
Multi-Dimensional Process Analysis
 
Objects arent records with byte codes on the side
Objects arent records with byte codes on the sideObjects arent records with byte codes on the side
Objects arent records with byte codes on the side
 
Functional Programming With Scala
Functional Programming With ScalaFunctional Programming With Scala
Functional Programming With Scala
 
Java 8 Streams
Java 8 StreamsJava 8 Streams
Java 8 Streams
 
Drd secr final1_3
Drd secr final1_3Drd secr final1_3
Drd secr final1_3
 
Dynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programs
 
39
3939
39
 
Class & Object - Intro
Class & Object - IntroClass & Object - Intro
Class & Object - Intro
 
Aci programmability
Aci programmabilityAci programmability
Aci programmability
 
Introduction to ACI APIs
Introduction to ACI APIsIntroduction to ACI APIs
Introduction to ACI APIs
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 

Object Flow Analysis

  • 1. Object Flow Analysis – Taking an Object-centricView on Dynamic Analysis Adrian Lienhard1, Stéphane Ducasse2 andTudor Gîrba1 1Software Composition Group, University of Bern, Switzerland 2 LISTIC, University of Savoie, France
  • 2. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch A missing aspect of OO dynamic analysis Typical characterization of OO program execution: 1) message passing 2) object interrelationships How are objects passed throught the system?
  • 3. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch 1) the method execution perspective MethodNode>>generate ASTTranslator class>>new ... ... IRBuilder>>initialize IRMethod class>>new ... ASTTranslator>>visitNode: ASTTranslator>>ir IRMethod>>compiledMethod IRTranlator class>new
  • 4. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch 1) the method execution perspective “How is the IRMethod instance passed to MethodNode?” MethodNode>>generate ASTTranslator class>>new ... ... IRBuilder>>initialize IRMethod class>>new ... ASTTranslator>>visitNode: ASTTranslator>>ir IRMethod>>compiledMethod IRTranlator class>new ?
  • 5. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch :IRBuilder :IRMethod :IRSequence :MethodNode :ASTTranslator 2) the object interrelationship perspective
  • 6. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch “How is the IRMethod instance passed to MethodNode?” :IRBuilder :IRMethod :IRSequence :MethodNode :ASTTranslator ? 2) the object interrelationship perspective
  • 7. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch :IRBuilder :IRMethod :IRSequence :MethodNode :ASTTranslator ? MethodNode>>generate ASTTranslator class>>new ... ... IRBuilder>>initialize IRMethod class>>new ... ASTTranslator>>visitNode: ASTTranslator>>ir IRMethod>>compiledMethod IRTranlator class>new ? interdependency? Object Flow Analysis track the transfer of object references
  • 8. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch a) capture all references of an object b) track the transfer of references Object Flow Analysis instantiation field store field read argument field store return return field store argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ...
  • 9. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch a) capture all references of an object b) track the transfer of references Object Flow Analysis instantiation field write field read argument field write return return field write argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ... instantiation field write field read argument field write return return field write argument field read
  • 10. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Object Flow Analysis instantiation field write field read argument field write return return field write argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ... instantiation field write field read argument field write return return field write argument field read instantiation field store field read argument field store return return field store argument field read IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. IRMethod>>compiledMethod ^ compiledMethod := IRTranslator new interpret: self; compiledMethod. IRTranslator>>interpret: ir ... instantiation field write field read argument field write return return field write argument field read 2 3 2 3 1 1 “How is the IRMethod instance passed to MethodNode?”
  • 11. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Application How do classes exchange objects?
  • 12. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Inter-unit flow view classes containedInPackage: ’AST-Nodes’ mapTo: ’AST’. classes hierarchyRootedIn: ’IRInstruction’ mapTo: ’Intermediate-Representation’
  • 13. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Chronological propagation
  • 14. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Spanning flows Parser (4)
  • 15. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Spanning flows IRBuilder
  • 16. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch objects stored in an instance variable objects passed out multiple times objects passed through directly objects created in IRBuilder timeline
  • 17. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ...
  • 18. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ... Alias * 0..1 parent child Instance
  • 19. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows ce nce new. hod isitNode: self. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ... Alias * 0..1 parent child Instance ArgumentAlias FieldWriteAliasReturnAlias...
  • 20. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Representing object flows stantiation field store read ument store return return field store field read stantiation field write read ument write return return ... Alias * 0..1 parent child Instance ArgumentAlias FieldWriteAliasReturnAlias... 0..1 * sender Method Class Attribute Activation receiver creator
  • 21. Object FlowAnalysis —Taking an Object-centricView on DynamicAnalysis :: Adrian Lienhard :: lienhard@iam.unibe.ch Summary IRBuilder>>initialize ir := IRMethod new. ... IRBuilder>>startNewSequence newSequence := IRSequence new. newSequence method: ir. IRSequence>>method: aMethod method := aMethod. ASTTranslator>>ir ^ builder ir. MethodNode>>generate ast := ASTTranslator new visitNode: self. ir := ast ir. ^ ir compiledMethod. instantiation field store field read argument field store return return field store field read instantiation field write field read argument field write return return ... Alias * 0..1 parent child Instance ArgumentAlias FieldWriteAliasReturnAlias... 0..1 * sender Method Class Attribute Activation receiver creator Questions?