SlideShare a Scribd company logo
1 of 32
Properties of  Signature Change Patterns Sung Kim,  Jim Whitehead,  Jennifer Bevan  University of California, Santa Cruz
Motivation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Nature of Contribution: Characterization ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
No hypotheses… yet ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Analyzed Projects (all in C) 6,029 185,006 Aug 2001-Mar 2005 Subversion (SVN) 3,012 298,236 Nov 1988-Feb 1993 GCC 2,873 62,415 Dec 1994-Sep 2003 CVS 1,353 33,600 Jul 1999-Feb 2005 APR Utility (APU) 5,990 72,630 Jan 1999-Feb 2005 Apache Portable Runtime (APR) 3,877 104,417 Jul 1999-Aug 2003 Apache 2.0 (A 2) 7,747 116,398 Jan 1996-Mar 2005 Apache 1.3 (A1.3) Commits LOC Period Project
Per-Project Analysis Process SCM Repository Filesystem Extract Automated transaction extraction Save  Persist signature data to database Relational database Analyze  Query DB to observe signature properties Analysis Software Compute Extract function signatures Kenyon Origin analysis Process  Reconstruct change history of functions across name changes
[object Object]
Distribution of Signature Changes ,[object Object],[object Object],[object Object]
Distribution of Signature Changes ,[object Object],94 58 Subversion 99 92 GCC 97 61 CVS 96 67 APU 86 49 APR 90 57 Apache 2 96 56 Apache 1.3 % changed less than 3 times % never changed Project
Function body changes and signature changes ,[object Object],[object Object],[object Object],[object Object],6.2 SVN 13.2 GCC 14.9 CVS 6.3 APU 3.5 APR 5.95 Apache 2 7.6 Apache 1.3 # of body changes before signature change Project
How does the number of parameters per function change over time? Does this show evidence of code decay?
Function Parameter List Lengths ,[object Object],[object Object]
Number of Parameters Over Time
Parameter Lists Growing or Shrinking ,[object Object],[object Object],[object Object]
Signature Changes as Code Decay Measure? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What kinds of signature changes  are most common?
Signature Change Taxonomy ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Signature Change Kinds ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Signature Change Kinds (cont’d) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Signature Change Frequencies Frequency is number of changes of specific kind over total number of signature changes for a project.  A single signature change event can include multiple signature change kinds.
Do the frequencies of signature change kinds evolve over the history of a project? Are there project specific patterns to the frequency and evolution of signature change kinds?
Signature Change Frequencies Over Time - Subversion
Signature Change Frequencies Over Time – Apache 1.3
Signature Change Frequencies Over Time Can see that Subversion and Apache 1.3 exhibit different frequencies of ordering changes and modifier changes Also, different trajectories for addition and deletion changes. There appear to be distinct per-project patterns of signature change evolution.
Do signature changes occur in regular sequences?
Change Kind Sequences (APR) ,[object Object],[object Object]
Change Kind Sequences (Apache 2) ,[object Object],[object Object],[object Object]
Threats to Validity ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Summary
Properties of Signature Changes ,[object Object],[object Object],[object Object],[object Object]
Properties of Signature Changes (cont’d) ,[object Object],[object Object],[object Object],[object Object],[object Object]
Questions?

More Related Content

Similar to Signature Change Analysis

OORPT Dynamic Analysis
OORPT Dynamic AnalysisOORPT Dynamic Analysis
OORPT Dynamic Analysis
lienhard
 
Source code comprehension on evolving software
Source code comprehension on evolving softwareSource code comprehension on evolving software
Source code comprehension on evolving software
Sung Kim
 

Similar to Signature Change Analysis (20)

Analyzing Changes in Software Systems From ChangeDistiller to FMDiff
Analyzing Changes in Software Systems From ChangeDistiller to FMDiffAnalyzing Changes in Software Systems From ChangeDistiller to FMDiff
Analyzing Changes in Software Systems From ChangeDistiller to FMDiff
 
Software Architecture Design Patterns
Software Architecture Design PatternsSoftware Architecture Design Patterns
Software Architecture Design Patterns
 
Saner16a.ppt
Saner16a.pptSaner16a.ppt
Saner16a.ppt
 
Saner16a.ppt
Saner16a.pptSaner16a.ppt
Saner16a.ppt
 
50120140503001
5012014050300150120140503001
50120140503001
 
50120140503001
5012014050300150120140503001
50120140503001
 
50120140503001
5012014050300150120140503001
50120140503001
 
Building scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thriftBuilding scalable and language independent java services using apache thrift
Building scalable and language independent java services using apache thrift
 
OORPT Dynamic Analysis
OORPT Dynamic AnalysisOORPT Dynamic Analysis
OORPT Dynamic Analysis
 
Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...Building scalable and language-independent Java services using Apache Thrift ...
Building scalable and language-independent Java services using Apache Thrift ...
 
The Joy Of Functional Programming
The Joy Of Functional ProgrammingThe Joy Of Functional Programming
The Joy Of Functional Programming
 
Getting Unstuck: Working with Legacy Code and Data
Getting Unstuck: Working with Legacy Code and DataGetting Unstuck: Working with Legacy Code and Data
Getting Unstuck: Working with Legacy Code and Data
 
Embedded Solutions 2010 : Challenges In Porting and Abstraction , by Mapusoft
Embedded Solutions 2010 : Challenges In Porting  and Abstraction , by Mapusoft Embedded Solutions 2010 : Challenges In Porting  and Abstraction , by Mapusoft
Embedded Solutions 2010 : Challenges In Porting and Abstraction , by Mapusoft
 
Porcorn tutorial
Porcorn tutorialPorcorn tutorial
Porcorn tutorial
 
Source code comprehension on evolving software
Source code comprehension on evolving softwareSource code comprehension on evolving software
Source code comprehension on evolving software
 
Materialize: a platform for changing data
Materialize: a platform for changing dataMaterialize: a platform for changing data
Materialize: a platform for changing data
 
Software Engineering - RS1
Software Engineering - RS1Software Engineering - RS1
Software Engineering - RS1
 
Using Automation to Improve Software Services
Using Automation to Improve Software ServicesUsing Automation to Improve Software Services
Using Automation to Improve Software Services
 
Standardizing Our Drivers Through Specifications: A Look at the CRUD API
Standardizing Our Drivers Through Specifications: A Look at the CRUD APIStandardizing Our Drivers Through Specifications: A Look at the CRUD API
Standardizing Our Drivers Through Specifications: A Look at the CRUD API
 
Prowess presentation
Prowess presentationProwess presentation
Prowess presentation
 

More from Sung Kim

DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence LearningDeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
Sung Kim
 
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
Sung Kim
 
Heterogeneous Defect Prediction (

ESEC/FSE 2015)
Heterogeneous Defect Prediction (

ESEC/FSE 2015)Heterogeneous Defect Prediction (

ESEC/FSE 2015)
Heterogeneous Defect Prediction (

ESEC/FSE 2015)
Sung Kim
 
A Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution TechniquesA Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution Techniques
Sung Kim
 
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Sung Kim
 
How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...
How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...
How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...
Sung Kim
 
A Survey on Dynamic Symbolic Execution for Automatic Test Generation
A Survey on  Dynamic Symbolic Execution  for Automatic Test GenerationA Survey on  Dynamic Symbolic Execution  for Automatic Test Generation
A Survey on Dynamic Symbolic Execution for Automatic Test Generation
Sung Kim
 
MSR2014 opening
MSR2014 openingMSR2014 opening
MSR2014 opening
Sung Kim
 

More from Sung Kim (20)

DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence LearningDeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
DeepAM: Migrate APIs with Multi-modal Sequence to Sequence Learning
 
Deep API Learning (FSE 2016)
Deep API Learning (FSE 2016)Deep API Learning (FSE 2016)
Deep API Learning (FSE 2016)
 
Time series classification
Time series classificationTime series classification
Time series classification
 
Tensor board
Tensor boardTensor board
Tensor board
 
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
REMI: Defect Prediction for Efficient API Testing (

ESEC/FSE 2015, Industria...
 
Heterogeneous Defect Prediction (

ESEC/FSE 2015)
Heterogeneous Defect Prediction (

ESEC/FSE 2015)Heterogeneous Defect Prediction (

ESEC/FSE 2015)
Heterogeneous Defect Prediction (

ESEC/FSE 2015)
 
A Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution TechniquesA Survey on Automatic Software Evolution Techniques
A Survey on Automatic Software Evolution Techniques
 
Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)Crowd debugging (FSE 2015)
Crowd debugging (FSE 2015)
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
 
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
 
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
 
How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...
How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...
How We Get There: A Context-Guided Search Strategy in Concolic Testing (FSE 2...
 
CrashLocator: Locating Crashing Faults Based on Crash Stacks (ISSTA 2014)
CrashLocator: Locating Crashing Faults Based on Crash Stacks (ISSTA 2014)CrashLocator: Locating Crashing Faults Based on Crash Stacks (ISSTA 2014)
CrashLocator: Locating Crashing Faults Based on Crash Stacks (ISSTA 2014)
 
A Survey on Dynamic Symbolic Execution for Automatic Test Generation
A Survey on  Dynamic Symbolic Execution  for Automatic Test GenerationA Survey on  Dynamic Symbolic Execution  for Automatic Test Generation
A Survey on Dynamic Symbolic Execution for Automatic Test Generation
 
Survey on Software Defect Prediction
Survey on Software Defect PredictionSurvey on Software Defect Prediction
Survey on Software Defect Prediction
 
MSR2014 opening
MSR2014 openingMSR2014 opening
MSR2014 opening
 
Personalized Defect Prediction
Personalized Defect PredictionPersonalized Defect Prediction
Personalized Defect Prediction
 
STAR: Stack Trace based Automatic Crash Reproduction
STAR: Stack Trace based Automatic Crash ReproductionSTAR: Stack Trace based Automatic Crash Reproduction
STAR: Stack Trace based Automatic Crash Reproduction
 
Transfer defect learning
Transfer defect learningTransfer defect learning
Transfer defect learning
 
Automatic patch generation learned from human written patches
Automatic patch generation learned from human written patchesAutomatic patch generation learned from human written patches
Automatic patch generation learned from human written patches
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Signature Change Analysis

  • 1. Properties of Signature Change Patterns Sung Kim, Jim Whitehead, Jennifer Bevan University of California, Santa Cruz
  • 2.
  • 3.
  • 4.
  • 5. Analyzed Projects (all in C) 6,029 185,006 Aug 2001-Mar 2005 Subversion (SVN) 3,012 298,236 Nov 1988-Feb 1993 GCC 2,873 62,415 Dec 1994-Sep 2003 CVS 1,353 33,600 Jul 1999-Feb 2005 APR Utility (APU) 5,990 72,630 Jan 1999-Feb 2005 Apache Portable Runtime (APR) 3,877 104,417 Jul 1999-Aug 2003 Apache 2.0 (A 2) 7,747 116,398 Jan 1996-Mar 2005 Apache 1.3 (A1.3) Commits LOC Period Project
  • 6. Per-Project Analysis Process SCM Repository Filesystem Extract Automated transaction extraction Save Persist signature data to database Relational database Analyze Query DB to observe signature properties Analysis Software Compute Extract function signatures Kenyon Origin analysis Process Reconstruct change history of functions across name changes
  • 7.
  • 8.
  • 9.
  • 10.
  • 11. How does the number of parameters per function change over time? Does this show evidence of code decay?
  • 12.
  • 13. Number of Parameters Over Time
  • 14.
  • 15.
  • 16. What kinds of signature changes are most common?
  • 17.
  • 18.
  • 19.
  • 20. Signature Change Frequencies Frequency is number of changes of specific kind over total number of signature changes for a project. A single signature change event can include multiple signature change kinds.
  • 21. Do the frequencies of signature change kinds evolve over the history of a project? Are there project specific patterns to the frequency and evolution of signature change kinds?
  • 22. Signature Change Frequencies Over Time - Subversion
  • 23. Signature Change Frequencies Over Time – Apache 1.3
  • 24. Signature Change Frequencies Over Time Can see that Subversion and Apache 1.3 exhibit different frequencies of ordering changes and modifier changes Also, different trajectories for addition and deletion changes. There appear to be distinct per-project patterns of signature change evolution.
  • 25. Do signature changes occur in regular sequences?
  • 26.
  • 27.
  • 28.
  • 30.
  • 31.