SlideShare a Scribd company logo
1 of 19
Download to read offline
Tracking Objects to Detect
  Feature Dependencies
   Adrian Lienhard, Orla Greevy and Oscar Nierstrasz
                           Software Composition Group
                          University of Bern, Switzerland
Context

“A feature is an observable unit of behavior of a system
triggered by the user” [Eisenbarth’03]




                                                Example: IRC client
                                                Open, Setup, Connect, Join Channel,
                                                Send Message, Receive Message, Disconnect

ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
No feature is an island



  We consider a runtime dependency to exist
  between features if state-changes in one feature
  impact the behavior of another feature.




ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Why object aliasing
     causes dependencies
                    Open                    Join Channel              Receive Message




ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Why object aliasing
     causes dependencies
                    Open                    Join Channel              Receive Message

                            window
                                 connection




                               Snapshot 1




ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Why object aliasing
     causes dependencies
                    Open                    Join Channel              Receive Message

                            window                       window
                                 connection                   connection


                                                             channel
                               Snapshot 1                   Snapshot 2




ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Why object aliasing
     causes dependencies
                    Open                    Join Channel              Receive Message

                            window                       window
                                 connection                   connection


                                                             channel
                               Snapshot 1                    Snapshot 2


                                                       ...
                                                       conn := channel.getConnection();
                                                       conn.nextMessage();
                                                       ...




ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Open                      Join Channel               Receive Message

                                             window                         window
                                                  connection                     connection
Snapshot
view
                                                                                channel
                                                 Snapshot 1                    Snapshot 2


            Identify the creation of all references of an object
            and how they are transferred


                                 Open                        Join Channel                     Receive Message
Object
flow view
of connection




     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Open                      Join Channel               Receive Message

                                             window                         window
                                                  connection                     connection
Snapshot
view
                                                                                channel
                                                Snapshot 1                     Snapshot 2


            Identify the creation of all references of an object
            and how they are transferred


                                 Open                        Join Channel                     Receive Message
Object
flow view                 <new>          model
of connection
                       reference returned
                                                      store into field (of
                       from instantiating
                                                      window instance)
                       the connection



     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Open                      Join Channel               Receive Message

                                             window                         window
                                                  connection                     connection
Snapshot
view
                                                                                channel
                                                 Snapshot 1                    Snapshot 2


            Identify the creation of all references of an object
            and how they are transferred


                                 Open                        Join Channel                     Receive Message
Object
flow view                 <new>           model           model        connection
of connection
                                                                        store into field (of
                                               read from field
                                                                        channel instance)




     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Open                      Join Channel               Receive Message

                                             window                         window
                                                  connection                     connection
Snapshot
view
                                                                                channel
                                                 Snapshot 1                    Snapshot 2


            Identify the creation of all references of an object
            and how they are transferred


                                 Open                        Join Channel                     Receive Message
Object
flow view                 <new>          model           model         connection             connection          conn
of connection
                                                                                                     stored into local
                                                                             read from field         variable -- then
                                                                                                     used as target of
                                                                                                     message send


     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Detecting dependencies
     ‣ Identify the reference through which a message is sent
          to its target
     ‣ From this reference, follow the object flow backwards

     ‣ If a previous reference originates in different feature,
          we found a dependency

         Open                         Join Channel                        Receive Message

<new>            model            model         connection               connection               conn

               ➾ the connection instance causes two
               dependencies for the Receive Message feature

ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Exploring dependencies
Object dependency graph of Receive Message



                                                                                          ‣ nodes: objects
                                                                                               depended on
                                                                                          ‣ edges: references
                                                                                               subject to a
                                                                                               dependency

                                                    Open              Join Channel
                                                    Connect           Send Message


     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Exploring dependencies
Object dependency graph of Receive Message



                                                                                          ‣ nodes: objects
                                                                                               depended on
                                                                                          ‣ edges: references
                                                                                               subject to a
                                                                                               dependency

                                                    Open              Join Channel
                                                    Connect           Send Message


     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Exploring dependencies
Object dependency graph of Receive Message



                                                                                          ‣ nodes: objects
                                                                                               depended on
                                                                                          ‣ edges: references
                                                                                               subject to a
                                                                                               dependency

                                                    Open              Join Channel
                                                    Connect           Send Message


     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Exploring dependencies
Object dependency graph of Receive Message



                                                                                          ‣ nodes: objects
                                                                                               depended on
                                                                                          ‣ edges: references
                                                                                               subject to a
                                                                                               dependency

                                                    Open              Join Channel
                                                    Connect           Send Message


     ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
IRC client dependencies
          Open
          Setup
       Connect
        MOTD
   Join Channel
  Send Message
Receive Message
  New Console
    Disconnect

                    0             5             10            15            20            25            30        35
                         Our approach                 Salah et al.



      ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Pier CMS dependencies
   Initialization
            Start
            Login
      Add Page
     Copy Page
       Edit Page
Change Group
 Change Other
Change Owner
  Remove Page
         Logout
                    0                      100                      200                    300                    400
                         Our approach                Salah et al.



      ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
Conclusions
‣ Analyzing where objects are created does not
     reveal dependencies caused by object aliasing
‣ By tracking the flow of objects we can
     accurately detect feature runtime dependencies




ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch

More Related Content

Viewers also liked

Viewers also liked (20)

201506 CSE340 Lecture 14
201506 CSE340 Lecture 14201506 CSE340 Lecture 14
201506 CSE340 Lecture 14
 
Uip Romain
Uip RomainUip Romain
Uip Romain
 
Chapter 11
Chapter 11Chapter 11
Chapter 11
 
RCMSL Phenomenal July 9, 2009
RCMSL Phenomenal July 9, 2009RCMSL Phenomenal July 9, 2009
RCMSL Phenomenal July 9, 2009
 
201506 CSE340 Lecture 22
201506 CSE340 Lecture 22201506 CSE340 Lecture 22
201506 CSE340 Lecture 22
 
Mobile Social Media, Sept. 2010, Do You Want To Be Visible?, Marketing Club K...
Mobile Social Media, Sept. 2010, Do You Want To Be Visible?, Marketing Club K...Mobile Social Media, Sept. 2010, Do You Want To Be Visible?, Marketing Club K...
Mobile Social Media, Sept. 2010, Do You Want To Be Visible?, Marketing Club K...
 
200905 - Sociable machines
200905 - Sociable machines200905 - Sociable machines
200905 - Sociable machines
 
Object Flow Analysis
Object Flow AnalysisObject Flow Analysis
Object Flow Analysis
 
Chapter 3
Chapter 3Chapter 3
Chapter 3
 
Mpv2010
Mpv2010Mpv2010
Mpv2010
 
Barya Perception
Barya PerceptionBarya Perception
Barya Perception
 
Pachin
PachinPachin
Pachin
 
Master Teset Specification SRCP
Master Teset Specification SRCPMaster Teset Specification SRCP
Master Teset Specification SRCP
 
Twitter voor journalisten
Twitter voor journalistenTwitter voor journalisten
Twitter voor journalisten
 
2009 04 москва, совазс
2009 04 москва, совазс2009 04 москва, совазс
2009 04 москва, совазс
 
Thomasville
ThomasvilleThomasville
Thomasville
 
201506 CSE340 Lecture 09
201506 CSE340 Lecture 09201506 CSE340 Lecture 09
201506 CSE340 Lecture 09
 
Syndrome metabolique et maladies vasculaires
Syndrome metabolique et maladies vasculairesSyndrome metabolique et maladies vasculaires
Syndrome metabolique et maladies vasculaires
 
LiveOffice Email Archiving & Compliance 301
LiveOffice Email Archiving & Compliance 301LiveOffice Email Archiving & Compliance 301
LiveOffice Email Archiving & Compliance 301
 
201506 CSE340 Lecture 10
201506 CSE340 Lecture 10201506 CSE340 Lecture 10
201506 CSE340 Lecture 10
 

More from lienhard

Prototype-based Programming with JavaScript
Prototype-based Programming with JavaScriptPrototype-based Programming with JavaScript
Prototype-based Programming with JavaScriptlienhard
 
Virtual Machines Lecture
Virtual Machines LectureVirtual Machines Lecture
Virtual Machines Lecturelienhard
 
Flow-Centric, Back-In-Time Debugging
Flow-Centric, Back-In-Time DebuggingFlow-Centric, Back-In-Time Debugging
Flow-Centric, Back-In-Time Debugginglienhard
 
OORPT Dynamic Analysis
OORPT Dynamic AnalysisOORPT Dynamic Analysis
OORPT Dynamic Analysislienhard
 
Dynamic Object Flow Analysis (PhD Defense)
Dynamic Object Flow Analysis (PhD Defense)Dynamic Object Flow Analysis (PhD Defense)
Dynamic Object Flow Analysis (PhD Defense)lienhard
 
Rapid Prototyping Of Visualizations Using Mondrian
Rapid Prototyping Of Visualizations Using MondrianRapid Prototyping Of Visualizations Using Mondrian
Rapid Prototyping Of Visualizations Using Mondrianlienhard
 
Practical Object-Oriented Back-in-Time Debugging
Practical Object-Oriented Back-in-Time DebuggingPractical Object-Oriented Back-in-Time Debugging
Practical Object-Oriented Back-in-Time Debugginglienhard
 
Test Blueprints
Test BlueprintsTest Blueprints
Test Blueprintslienhard
 
Identifying Traits with Formal Concept Analysis
Identifying Traits with Formal Concept AnalysisIdentifying Traits with Formal Concept Analysis
Identifying Traits with Formal Concept Analysislienhard
 

More from lienhard (10)

Chicken
ChickenChicken
Chicken
 
Prototype-based Programming with JavaScript
Prototype-based Programming with JavaScriptPrototype-based Programming with JavaScript
Prototype-based Programming with JavaScript
 
Virtual Machines Lecture
Virtual Machines LectureVirtual Machines Lecture
Virtual Machines Lecture
 
Flow-Centric, Back-In-Time Debugging
Flow-Centric, Back-In-Time DebuggingFlow-Centric, Back-In-Time Debugging
Flow-Centric, Back-In-Time Debugging
 
OORPT Dynamic Analysis
OORPT Dynamic AnalysisOORPT Dynamic Analysis
OORPT Dynamic Analysis
 
Dynamic Object Flow Analysis (PhD Defense)
Dynamic Object Flow Analysis (PhD Defense)Dynamic Object Flow Analysis (PhD Defense)
Dynamic Object Flow Analysis (PhD Defense)
 
Rapid Prototyping Of Visualizations Using Mondrian
Rapid Prototyping Of Visualizations Using MondrianRapid Prototyping Of Visualizations Using Mondrian
Rapid Prototyping Of Visualizations Using Mondrian
 
Practical Object-Oriented Back-in-Time Debugging
Practical Object-Oriented Back-in-Time DebuggingPractical Object-Oriented Back-in-Time Debugging
Practical Object-Oriented Back-in-Time Debugging
 
Test Blueprints
Test BlueprintsTest Blueprints
Test Blueprints
 
Identifying Traits with Formal Concept Analysis
Identifying Traits with Formal Concept AnalysisIdentifying Traits with Formal Concept Analysis
Identifying Traits with Formal Concept Analysis
 

Recently uploaded

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 

Recently uploaded (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 

Tracking Objects To Detect Feature Dependencies

  • 1. Tracking Objects to Detect Feature Dependencies Adrian Lienhard, Orla Greevy and Oscar Nierstrasz Software Composition Group University of Bern, Switzerland
  • 2. Context “A feature is an observable unit of behavior of a system triggered by the user” [Eisenbarth’03] Example: IRC client Open, Setup, Connect, Join Channel, Send Message, Receive Message, Disconnect ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 3. No feature is an island We consider a runtime dependency to exist between features if state-changes in one feature impact the behavior of another feature. ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 4. Why object aliasing causes dependencies Open Join Channel Receive Message ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 5. Why object aliasing causes dependencies Open Join Channel Receive Message window connection Snapshot 1 ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 6. Why object aliasing causes dependencies Open Join Channel Receive Message window window connection connection channel Snapshot 1 Snapshot 2 ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 7. Why object aliasing causes dependencies Open Join Channel Receive Message window window connection connection channel Snapshot 1 Snapshot 2 ... conn := channel.getConnection(); conn.nextMessage(); ... ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 8. Open Join Channel Receive Message window window connection connection Snapshot view channel Snapshot 1 Snapshot 2 Identify the creation of all references of an object and how they are transferred Open Join Channel Receive Message Object flow view of connection ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 9. Open Join Channel Receive Message window window connection connection Snapshot view channel Snapshot 1 Snapshot 2 Identify the creation of all references of an object and how they are transferred Open Join Channel Receive Message Object flow view <new> model of connection reference returned store into field (of from instantiating window instance) the connection ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 10. Open Join Channel Receive Message window window connection connection Snapshot view channel Snapshot 1 Snapshot 2 Identify the creation of all references of an object and how they are transferred Open Join Channel Receive Message Object flow view <new> model model connection of connection store into field (of read from field channel instance) ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 11. Open Join Channel Receive Message window window connection connection Snapshot view channel Snapshot 1 Snapshot 2 Identify the creation of all references of an object and how they are transferred Open Join Channel Receive Message Object flow view <new> model model connection connection conn of connection stored into local read from field variable -- then used as target of message send ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 12. Detecting dependencies ‣ Identify the reference through which a message is sent to its target ‣ From this reference, follow the object flow backwards ‣ If a previous reference originates in different feature, we found a dependency Open Join Channel Receive Message <new> model model connection connection conn ➾ the connection instance causes two dependencies for the Receive Message feature ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 13. Exploring dependencies Object dependency graph of Receive Message ‣ nodes: objects depended on ‣ edges: references subject to a dependency Open Join Channel Connect Send Message ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 14. Exploring dependencies Object dependency graph of Receive Message ‣ nodes: objects depended on ‣ edges: references subject to a dependency Open Join Channel Connect Send Message ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 15. Exploring dependencies Object dependency graph of Receive Message ‣ nodes: objects depended on ‣ edges: references subject to a dependency Open Join Channel Connect Send Message ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 16. Exploring dependencies Object dependency graph of Receive Message ‣ nodes: objects depended on ‣ edges: references subject to a dependency Open Join Channel Connect Send Message ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 17. IRC client dependencies Open Setup Connect MOTD Join Channel Send Message Receive Message New Console Disconnect 0 5 10 15 20 25 30 35 Our approach Salah et al. ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 18. Pier CMS dependencies Initialization Start Login Add Page Copy Page Edit Page Change Group Change Other Change Owner Remove Page Logout 0 100 200 300 400 Our approach Salah et al. ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch
  • 19. Conclusions ‣ Analyzing where objects are created does not reveal dependencies caused by object aliasing ‣ By tracking the flow of objects we can accurately detect feature runtime dependencies ICPC’07 : : Tracking Objects to Detect Feature Dependencies : : Adrian Lienhard : : lienhard@iam.unibe.ch