SlideShare a Scribd company logo
Tracking dependencies 
between code changes 
Lucas Godoy
Scenario 
It’s common for software developers to work in 
more than one problem at the same time 
For example, to fix a critical bug in the middle of a 
big refactor 
Good practices recommend to perform atomic 
commits
Define atomic 
Ideally, an atomic commit should only affect a 
single aspect of the system 
This improves understandability, makes easier bug 
identification and requires less effort to rollback 
But the atomic commit policy is not enforced by 
tools
The problem 
The developer has to cherry-pick changes 
manually (by using git-add -i) 
But with traditional VCS, changes are scattered in 
a large amount of text 
And detailed information about the sequence of 
changes is lost
Objective 
To aid the developer in the cherry-picking process 
The resulting change-set should be atomic 
Limitations: not fully automatic, not 100% 
accurate in all cases
What we would like 
Changes modeled as objects and recorded as 
they happen 
To track dependencies between those objects to 
define the atomic change set we’re going to 
commit 
And dependencies should also be modeled as 
objects
What tools do we have? 
ChangeSorter: log of executable statements, not 
all entities are objects, coarse granularity 
CoExist: coexisting versions, continuous testing, 
change-oriented, no dependency tracking 
Epicea: change-oriented, no dependency tracking 
JET: snapshot-based, tracks dependencies
Proposed solution 
Do dependency analysis based on the system 
history
Structural dependencies 
The suggested rearrange of changes is based on 
structural relationships between the entities 
3 types of dependencies 
Class hierarchy dependencies 
References to variables and classes 
Message sends
Examples 
Object subclass: #AbstractTimeZone 
instanceVariableNames: ’’ 
classVariableNames: ’’ 
poolDictionaries: ‘ChronologyConstants’ 
category: ’Kernel-Chronology’ 
Trait named: #TClass 
uses: TBehaviorCategorization 
category: ’Traits-Kernel-Traits’ 
AbstractTimeZone >> printOn: aStream 
super printOn: aStream. 
aStream 
nextPut: $(; 
nextPutAll: self abbreviation; 
nextPut: $).
Message sends 
3 kinds with different scope for a candidate set 
Messages sent to self are restricted to the current 
class hierarchy 
Messages sent to super are restricted to the upper 
part of class hierarchy 
Messages sent to classes are restricted to the 
class side of the given class
Unknown sends 
If the message sent don’t fall into any of the 
previous categories, we have to put all 
implementors in the candidate set 
This is what we call an unknown send 
Basically any polymorphic message can lead to 
false positives in the candidate set
Implementation 
One visitor for Epicea events 
Another visitor for AST nodes to find 
dependencies in methods 
Early prototype called Tracks: 
http://smalltalkhub.com/#!/~LucasGodoy/Tracks
Future work 
Dealing with shadowing 
History reconstruction 
Integration with Epicea 
Dependency transitivity 
Visualization of dependencies (Telescope?) 
Performance test & optimization
In summary 
To make an atomic commit by cherry-picking 
changes can be time consuming 
We propose a tool to make it easier 
The tool suggests additions to the change-set by 
finding dependencies between changes made to 
the system 
You can send feedback and comments to 
godoy.lucas@gmail.com

More Related Content

PPTX
Twitter Sub-event Detection Project Presentation
PDF
Email2git: Extending cregit to Link Review Emails to Commits
PPTX
Strategies for Managing Dependencies
PPTX
Context-dependency, risk analysis and policy modelling
PDF
Dependency Management In A Large Agile Organization
PDF
Dependency Management In A Large Agile Environment
PPTX
Managing Interdependencies in Complex Organizations
PDF
A Critique On Code Critics
Twitter Sub-event Detection Project Presentation
Email2git: Extending cregit to Link Review Emails to Commits
Strategies for Managing Dependencies
Context-dependency, risk analysis and policy modelling
Dependency Management In A Large Agile Organization
Dependency Management In A Large Agile Environment
Managing Interdependencies in Complex Organizations
A Critique On Code Critics

Similar to Tracking dependencies between code changes (20)

PPTX
Code Metrics
PPT
Unit 1 Java
PPT
TrackStudio Overview
PDF
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
PPT
characteristicsofdistributedsystem-121004123308-phpapp02.ppt
PPTX
Unit two concept of classes and objects
PPT
Chapter 6 System Design and Decomposing the system.ppt
PPTX
PDF
Review oop and ood
DOCX
Operating System- INTERPROCESS COMMUNICATION.docx
PPTX
Lecture 17 -18 - Sequence Diagram - Class Diagram.pptx
PDF
Early Detection of Collaboration Conflicts & Risks in Software Development
PPTX
Communication And Synchronization In Distributed Systems
PPTX
Distributed Systems
PPTX
Communication And Synchronization In Distributed Systems
PPT
Object Oriented Design
PPT
Object Oriented Design
PPTX
chapter 6 (System Design) software system design
PPT
OBJECT ORIENTED ANALYSIS FOR EASY UNDERSTANDING .ppt
Code Metrics
Unit 1 Java
TrackStudio Overview
Nina Grantcharova - Approach to Separation of Concerns via Design Patterns
characteristicsofdistributedsystem-121004123308-phpapp02.ppt
Unit two concept of classes and objects
Chapter 6 System Design and Decomposing the system.ppt
Review oop and ood
Operating System- INTERPROCESS COMMUNICATION.docx
Lecture 17 -18 - Sequence Diagram - Class Diagram.pptx
Early Detection of Collaboration Conflicts & Risks in Software Development
Communication And Synchronization In Distributed Systems
Distributed Systems
Communication And Synchronization In Distributed Systems
Object Oriented Design
Object Oriented Design
chapter 6 (System Design) software system design
OBJECT ORIENTED ANALYSIS FOR EASY UNDERSTANDING .ppt
Ad

More from ESUG (20)

PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
PDF
Directing Generative AI for Pharo Documentation
PDF
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
PDF
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
PDF
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
PDF
Analysing Python Machine Learning Notebooks with Moose
PDF
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
PDF
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
PDF
Package-Aware Approach for Repository-Level Code Completion in Pharo
PDF
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
PDF
An Analysis of Inline Method Refactoring
PDF
Identification of unnecessary object allocations using static escape analysis
PDF
Control flow-sensitive optimizations In the Druid Meta-Compiler
PDF
Clean Blocks (IWST 2025, Gdansk, Poland)
PDF
Encoding for Objects Matters (IWST 2025)
PDF
Challenges of Transpiling Smalltalk to JavaScript
PDF
Immersive experiences: what Pharo users do!
PDF
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
PDF
Cavrois - an Organic Window Management (ESUG 2025)
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
Micromaid: A simple Mermaid-like chart generator for Pharo
Directing Generative AI for Pharo Documentation
Even Lighter Than Lightweiht: Augmenting Type Inference with Primitive Heuris...
Composing and Performing Electronic Music on-the-Fly with Pharo and Coypu
Gamifying Agent-Based Models in Cormas: Towards the Playable Architecture for...
Analysing Python Machine Learning Notebooks with Moose
FASTTypeScript metamodel generation using FAST traits and TreeSitter project
Migrating Katalon Studio Tests to Playwright with Model Driven Engineering
Package-Aware Approach for Repository-Level Code Completion in Pharo
Evaluating Benchmark Quality: a Mutation-Testing- Based Methodology
An Analysis of Inline Method Refactoring
Identification of unnecessary object allocations using static escape analysis
Control flow-sensitive optimizations In the Druid Meta-Compiler
Clean Blocks (IWST 2025, Gdansk, Poland)
Encoding for Objects Matters (IWST 2025)
Challenges of Transpiling Smalltalk to JavaScript
Immersive experiences: what Pharo users do!
ChatPharo: an Open Architecture for Understanding How to Talk Live to LLMs
Cavrois - an Organic Window Management (ESUG 2025)
Ad

Recently uploaded (20)

PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Download FL Studio Crack Latest version 2025 ?
PDF
CCleaner Pro 6.38.11537 Crack Final Latest Version 2025
PPTX
Patient Appointment Booking in Odoo with online payment
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Cost to Outsource Software Development in 2025
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
assetexplorer- product-overview - presentation
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
AutoCAD Professional Crack 2025 With License Key
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
iTop VPN Crack Latest Version Full Key 2025
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025
Design an Analysis of Algorithms I-SECS-1021-03
Download FL Studio Crack Latest version 2025 ?
CCleaner Pro 6.38.11537 Crack Final Latest Version 2025
Patient Appointment Booking in Odoo with online payment
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Cost to Outsource Software Development in 2025
Wondershare Filmora 15 Crack With Activation Key [2025
assetexplorer- product-overview - presentation
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Monitoring Stack: Grafana, Loki & Promtail
wealthsignaloriginal-com-DS-text-... (1).pdf
Computer Software and OS of computer science of grade 11.pptx
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Navsoft: AI-Powered Business Solutions & Custom Software Development
AutoCAD Professional Crack 2025 With License Key
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
Operating system designcfffgfgggggggvggggggggg
iTop VPN Crack Latest Version Full Key 2025
Reimagine Home Health with the Power of Agentic AI​
CapCut Video Editor 6.8.1 Crack for PC Latest Download (Fully Activated) 2025

Tracking dependencies between code changes

  • 1. Tracking dependencies between code changes Lucas Godoy
  • 2. Scenario It’s common for software developers to work in more than one problem at the same time For example, to fix a critical bug in the middle of a big refactor Good practices recommend to perform atomic commits
  • 3. Define atomic Ideally, an atomic commit should only affect a single aspect of the system This improves understandability, makes easier bug identification and requires less effort to rollback But the atomic commit policy is not enforced by tools
  • 4. The problem The developer has to cherry-pick changes manually (by using git-add -i) But with traditional VCS, changes are scattered in a large amount of text And detailed information about the sequence of changes is lost
  • 5. Objective To aid the developer in the cherry-picking process The resulting change-set should be atomic Limitations: not fully automatic, not 100% accurate in all cases
  • 6. What we would like Changes modeled as objects and recorded as they happen To track dependencies between those objects to define the atomic change set we’re going to commit And dependencies should also be modeled as objects
  • 7. What tools do we have? ChangeSorter: log of executable statements, not all entities are objects, coarse granularity CoExist: coexisting versions, continuous testing, change-oriented, no dependency tracking Epicea: change-oriented, no dependency tracking JET: snapshot-based, tracks dependencies
  • 8. Proposed solution Do dependency analysis based on the system history
  • 9. Structural dependencies The suggested rearrange of changes is based on structural relationships between the entities 3 types of dependencies Class hierarchy dependencies References to variables and classes Message sends
  • 10. Examples Object subclass: #AbstractTimeZone instanceVariableNames: ’’ classVariableNames: ’’ poolDictionaries: ‘ChronologyConstants’ category: ’Kernel-Chronology’ Trait named: #TClass uses: TBehaviorCategorization category: ’Traits-Kernel-Traits’ AbstractTimeZone >> printOn: aStream super printOn: aStream. aStream nextPut: $(; nextPutAll: self abbreviation; nextPut: $).
  • 11. Message sends 3 kinds with different scope for a candidate set Messages sent to self are restricted to the current class hierarchy Messages sent to super are restricted to the upper part of class hierarchy Messages sent to classes are restricted to the class side of the given class
  • 12. Unknown sends If the message sent don’t fall into any of the previous categories, we have to put all implementors in the candidate set This is what we call an unknown send Basically any polymorphic message can lead to false positives in the candidate set
  • 13. Implementation One visitor for Epicea events Another visitor for AST nodes to find dependencies in methods Early prototype called Tracks: http://smalltalkhub.com/#!/~LucasGodoy/Tracks
  • 14. Future work Dealing with shadowing History reconstruction Integration with Epicea Dependency transitivity Visualization of dependencies (Telescope?) Performance test & optimization
  • 15. In summary To make an atomic commit by cherry-picking changes can be time consuming We propose a tool to make it easier The tool suggests additions to the change-set by finding dependencies between changes made to the system You can send feedback and comments to godoy.lucas@gmail.com