SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Analyzing Changes in Software Systems
From ChangeDistiller to FMDiff
Martin Pinzger
Software Engineering Research Group
University of Klagenfurt
http://serg.aau.at/bin/view/MartinPinzger
Pfunds
PhD
Postdoc
Assistant
Professor
Univ. Prof.
Software systems change [Lehman et al.]
Views on Mozilla evolution
50% of files have been modified in last quarter of observation
3
What did change in this revision?
5
What is the impact of these changes?
6
Do these changes affect my code?
7
Understanding changes and their impact
Current tools lack support for comprehending changes
“How do software engineers understand code changes? - an
exploratory study in industry”, Tao et al. 2012
Developers need to reconstruct the detailed context and
impact of each change which is time consuming and error
prone
“An exploratory study of awareness interests about software
modifications”, Kim 2011
8
We need better support to analyze and
comprehend changes and their impact
Overview of (my) tools
ChangeDistiller
Fine-Grained Evolution of Java classes
WSDLDiff
Evolution of service-oriented systems
FMDiff
Evolution of feature models
10
ChangeDistiller
Fine-grained evolution of Java classes
Beat Fluri, Martin Pinzger, and Harald Gall
Extracting source code changes using ASTs
Using tree differencing, we can determine
public void method(D d) {
if (d != null) {
d.foo();
d.bar();
}
}
public void method(D d) {
d.foo();
d.bar();
}
12
Using tree differencing, we can determine
Enclosing entity (root node)
Extracting source code changes using ASTs
public void method(D d) {
if (d != null) {
d.foo();
d.bar();
}
}
public void method(D d) {
d.foo();
d.bar();
}
13
Using tree differencing, we can determine
Enclosing entity (root node)
Kind of statement which changed (node information)
public void method(D d) {
d.foo();
d.bar();
}
public void method(D d) {
if (d != null) {
d.foo();
d.bar();
}
}
Extracting source code changes using ASTs
14
Using tree differencing, we can determine
Enclosing entity (root node)
Kind of statement which changed (node information)
Kind of change (tree edit operation)
public void method(D d) {
if (d != null) {
d.foo();
d.bar();
}
}
public void method(D d) {
d.foo();
d.bar();
}
Extracting source code changes using ASTs
15
ChangeDistiller model
uniqueName
shortName
type
SourceCodeEntity
structureEntity
sourceCodeEntity
type
ChangeOperation
parentEntity
Insert
parentEntity
Delete
oldParentEntity
newParentEntity
Move
newEntity
parentEntity
Update
uniqueName
type
bodyChanges
declarationChanges
StructureEntity
*
changeType
changeOperations
SourceCodeChange
*
structureEntity
version
StructureEntityVersion
attributeVersions
AttributeHistory
methodVersions
MethodHistory
*
classVersions
attributeHistories
innerClassHistories
methodHistories
ClassHistory
*
*
*
Revision
link to
org.evolizer.model.versioning
BodyChange
DeclarationChange
*
*
16
ChangeDistiller tool
Dem
17https://bitbucket.org/sealuzh/tools-changedistiller/wiki/Home
ChangeDistiller references
“Change distilling: Tree differencing for fine-grained source
code change extraction”, Fluri et al. 2007
Diffing UML diagrams
“UMLDiff: An Algorithm for Object-Oriented Design Differencing”,
Xing et al. 2005
Recording changes in the IDE
“Mining Fine-grained Code Changes to Detect Unknown Change
Patterns”, Negara et al. 2014
18
ChangeDistiller improved -> gumtree
gumtree (sources available at GitHub)
“Fine-grained and accurate source code differencing”, Falleri et
al. 2014
19
Ratio of change type categories
Table 3: Relative frequencies of SCC categories per Eclipse
project, plus their mean and variance over all selected
projects.
Eclipse Project cDecl oState func mDecl stmt cond else
Compare 0.01 0.06 0.08 0.05 0.74 0.03 0.03
jFace 0.02 0.04 0.08 0.11 0.70 0.02 0.03
JDT Debug 0.02 0.06 0.08 0.10 0.70 0.02 0.02
Resource 0.01 0.04 0.02 0.11 0.77 0.03 0.02
Runtime 0.01 0.05 0.07 0.10 0.73 0.03 0.01
Team Core 0.05 0.04 0.13 0.17 0.57 0.02 0.02
CVS Core 0.01 0.04 0.10 0.07 0.73 0.02 0.03
Debug Core 0.04 0.07 0.02 0.13 0.69 0.02 0.03
jFace Text 0.04 0.03 0.06 0.11 0.70 0.03 0.03
Update Core 0.02 0.04 0.07 0.09 0.74 0.02 0.02
Debug UI 0.02 0.06 0.09 0.07 0.70 0.03 0.03
JDT Debug UI 0.01 0.07 0.07 0.05 0.75 0.02 0.03
Help 0.02 0.05 0.08 0.07 0.73 0.02 0.03
JDT Core 0.00 0.03 0.03 0.05 0.80 0.05 0.04
OSGI 0.03 0.04 0.06 0.11 0.71 0.03 0.02
Mean 0.02 0.05 0.07 0.09 0.72 0.03 0.03
Variance 0.000 0.000 0.001 0.001 0.003 0.000 0.000
20
Predicting bug-prone files
UC values of E 1 using logistic regression with
CC as predictors for bug-prone and a not bug-
Larger values are printed in bold.
Eclipse Project AUC LM AUC SCC
Compare 0.84 0.85
jFace 0.90 0.90
JDT Debug 0.83 0.95
Resource 0.87 0.93
Runtime 0.83 0.91
Team Core 0.62 0.87
CVS Core 0.80 0.90
Debug Core 0.86 0.94
jFace Text 0.87 0.87
Update Core 0.78 0.85
Debug UI 0.85 0.93
JDT Debug UI 0.90 0.91
Help 0.75 0.70
JDT Core 0.86 0.87
OSGI 0.88 0.88
Median 0.85 0.90
Overall 0.85 0.89
21
SCC outperforms LM
“Comparing Fine-Grained
Source Code Changes And
Code Churn For Bug
Prediction”, Giger et al. 2011
More info:
Predicting bug-prone methods
Large files are typically the most bug-prone files
Retrieving bug-prone methods saves manual inspection
effort and testing effort
11 methods on average
class 1 class 2 class 3 class n...class 2
4 methods are bug prone (ca. 36%)
22
Predicting bug-prone methods
Models computed with change metrics (CM) perform best
authors and methodHistories are the most important measures
More info
“Method-Level Bug Prediction”, Giger et al. 2012
23
Table 4: Median classification results over all pro-
jects per classifier and per model
CM SCM CM&SCM
AUC P R AUC P R AUC P R
RndFor .95 .84 .88 .72 .5 .64 .95 .85 .95
SVM .96 .83 .86 .7 .48 .63 .95 .8 .96
BN .96 .82 .86 .73 .46 .73 .96 .81 .96
J48 .95 .84 .82 .69 .56 .58 .91 .83 .89
values of the code metrics model are approximately 0.7 for
each classifier—what is defined by Lessman et al. as ”promis-
ing” [26]. However, the source code metrics suffer from con-
siderably low precision values. The highest median precision
value for the code metrics model is obtained in case of J48
Research opportunities
Extract details on statement changes (-> solved by
gumtree?)
Argument changes in method invocations
Nesting of statements
Expression changes
Extract context information
Consider call, access, inheritance, and type dependencies
Combine with task context - see, e.g., Mylyn [Kersten and
Murphy, 2005]
24
Research opportunities (cont.)
Support multiple programming languages
Currently only Java is supported
Extract changes from “other” source files
Configuration files, project and build files, etc.
Extract changes of whole software ecosystems
25
WSDLDiff
Evolution of service-oriented systems
Daniele Romano and Martin Pinzger
Service-oriented systems
Services as contracts -> they should be stable
Analyze changes to quantify the risk of using a service
27
WSDL example
28
<definitions name=“HelloService" targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl" …>
<message name="SayHelloRequest">
<part name="parameters" type=“ns:PersonName"/>
</message>
<portType name="Hello_PortType">
<operation name="sayHello">
<input message="tns:SayHelloRequest"/>
<output message="tns:SayHelloResponse"/>
</operation>
</portType>
<binding name="Hello_Binding" type="tns:Hello_PortType">
<soap:binding style=“rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sayHello">
<soap:operation soapAction="sayHello"/>
<input> … </input>
<output> … </output>
</operation>
</binding>
<service name="Hello_Service">
<documentation>WSDL File for HelloService</documentation>
<port binding="tns:Hello_Binding" name=“Hello_Port”> … </port>
</service>
</definitions>
WSDL-XSD example
29
… within the WSDL file …
<types>
<xs:schema targetNamespace="http://example.org/names"… >
<xs:complexType name="Name">
<xs:sequence>
<xs:element name="firstName" type="xs:string"/>
<xs:element name="lastName" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="PersonName" type="Name"/>
</xs:schema>
</types>
Extracting changes from WSDLs
30
Matching	
  Engine
Match	
  Model
Diff	
  Model
Differencing	
  Engine
XSD	
  Transformer XSD	
  Transformer
WSDL	
  Model1’ WSDL	
  Model2’
WSDL	
  Model1 WSDL	
  Model2
WSDL	
  Version1 WSDL	
  Version2
WSDL	
  Parser WSDL	
  Parser
Change types recorded by WSDLDiff
WSDL
Operations and BindingOperations
Messages and MessageParts
Message parameters
Data types
Attributes: name, minOccurs, maxOccurs, fixed
Referenced values
Enumerations
31
Changes in WSDLs
32
Change Type AmazonEC2 FedEx Rate FedEx Ship FedEx Pkg
OperationA 113 1 10 0
OperationC 0 1 0 0
OperationD 9 1 4 0
MessageA 218 2 16 0
MessageC 2 0 2 0
MessageD 10 2 2 0
PartA 27 0 2 0
PartC 34 0 0 0
PartD 27 0 2 0
Total 440 7 38 0
A .. Added C .. Changed D .. Deleted
Changes in data types (XSD)
33
Change Type AmazonEC2 FedEx Rate FedEx Ship FedEx Pkg
XSDTypeA 409 234 157 0
XSDTypeC 160 295 280 6
XSDTypeD 2 71 28 0
XSDElementA 208 2 25 0
XSDElementC 1 0 18 0
XSDElementD 0 2 0 0
XSDAttributeGroupA 6 0 0 0
XSDAttributeGroupC 5 0 0 0
Total 791 604 508 6
What we learned from WSDL evolution
Users of the AmazonEC2 service
New operations are continuously added
Data types change frequently adding new elements
Users of the FedEx service
Data types change frequently
Operations are more stable
More info
“Analyzing the Evolution of Web Services using Fine-Grained
Changes”, Romano and Pinzger 2012
34
Research opportunities
Perform the study with “real” industrial systems
Analyzing co-evolution
between WSDL interfaces
between WSDL interfaces and their implementation
Use changes for test selection/prioritization
Etc.
Major challenge is to find case studies of real/industrial
service-oriented systems that are available
35
FMDiff
Evolution of the linux kernel feature model
Nicolas Dintzner, Arie van Deursen, and Martin Pinzger
Linux feature
implementation
What is the impact of a
feature change?
Main motivation
Identify co-evolution patterns (common changes in the
different artifacts implementing a feature)
Local validation of changes to prevent inconsistencies
Facilitate test selection
Prevent variability related implementation bugs
Implementation of features is intermixed, leading to undesired
interactions
Interactions occur between features from different sub-systems
demanding cross-subsystem knowledge
More info: “42 variability bugs in the linux kernel: a qualitative
analysis”, Abal et al. 2014
38
Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner
A feature in a Kconfig file
Name
Type & Prompt
Default
Depends
Select
(help text)
Additional
structures
39
if ACPI
config ACPI_AC

tristate "AC Adapter"
default y if ACPI
depends X86

select POWER_SUPPLY
help
This driver supports the AC Adapter object ,(...).
endif
Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner
FMDiff: Extracting changes from Kconfig files
40
Linux repository
Feature model translation
X86
v1
X86
v2
X86
v…
Feature model reconstruction (EMF)
Feature model comparison (EMF Compare)
Feature change classification
Feature change repository
Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner
Feature model transl.: from Kconfig to Kdump
41
if ACPI
config ACPI_AC

tristate "AC Adapter"
default y if ACPI
depends X86

select POWER_SUPPLY
endif
config ACPI_AC

tristate "AC Adapter"
default y if ACPI
depends X86 && ACPI
select POWER_SUPPLY
1- Kconfig (original) 2- Hierarchy flattening
config ACPI_AC

tristate "AC Adapter"
default y if X86 && ACPI
depends X86 && ACPI
select POWER_SUPPLY if X86 && ACPI
3- Depends propagation
Item ACPI_AC tristate

Prompt ACPI_AC 1

Default ACPI_AC "y" "X86 && ACPI"

Depends ACPI_AC "X86 && ACPI"
ItemSelects ACPI_AC POWER_SUPPLY "X86 && ACPI”
4- Kdump format (what we use)
Credits to for Undertaker and the translation process
Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner
FMDiff meta model
42
Feature
Type (string)
Prompt (boolean)
Depends (string)
DependsReferences (list of strings)
Select Statement
Target (string)
Condition (string)
SelectConditionReferences (list of strings)
Default Statement
DefaultValue (string)
Condition (string)
DefaultValueReferences (list of strings)
DefaultValueConditionReferences (list of strings)
"contains"
"contains"
"contains"
FeatureModel
Architecture (string)
Revision (string)
0
*
0 *
0 *
Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner
Example
43
Item ACPI_AC tristate

Depends ACPI_AC "X86 && ACPI"
…
Item ACPI_AC tristate

Depends ACPI_AC “(X86 || AMD) && ACPI"
…
V1 V2
Feature Model
Architecture: X86
Revision: 1
Feature
Name: ACPI_AC
Depends: “X86 && ACPI”
Depends references:
[X86,ACPI]
Feature Model
Architecture: X86
Revision: 2
Feature
Name: ACPI_AC
Depends: “(AMD || X86) && ACPI”
Depends references:
[X86,ACPI,AMD]
Rev
.
Feature Change type Category Subcategory Old
value
New value
2 ACPI_AC Modification modify depends modify condition X86 X86||AMD
2 ACPI_AC Modification modify depends add depends ref. AMD
Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner
Change classification
44
Change operations: Add, Remove, Modify
Attribute Depends Default Select
Type
Prompt
Expression
References
Default Value
Condition
References
Target
Condition
References
Feature
Study with 14 releases of the linux kernel
45
Featurechangescategorydistribution
0%
25%
50%
75%
100%
Linux kernel releases
v2.6.39 v3.0 v3.1 v3.2 v3.3 v3.4 v3.5 v3.6 v3.7 v3.8
ADDED
REMOVED
MODIFIED
493 772 397 1740 612 493 750 609 1068 544
Impact on architectures
Which architectures are affected and need to be tested?
46
Release #changed features % aff. all architectures
2.6.39 1016 26.47
3.0 1020 58.43
3.2 2361 39.00
3.4 778 32.39
3.6 823 34.14
3.8 963 29.38
What we learned from feature evolution
Modification of existing features is done frequently
Should be considered when studying the linux kernel (existing
studies mainly focussed on addition and removal of features)
Changes affecting All architectures vary between 10-50%
Future studies should be clear about which architectures they
study
More info
“Analysing the Linux kernel feature model changes using FMDiff”,
Dintzner et al. 2015
47
Research opportunities
Link changes in the three implementation spaces
Kconfig, Kbuild, source code
Mine co-evolution patterns
Detail the level of changes
E.g., consider changes in the conditional statements
Study evolution of other systems
E.g., toybox, ecos, BusyBox
Consider frameworks and other highly-configurable systems
48
Conclusions
49
ChangeDistiller WSDLDiff
FMDiff
if ACPI
config ACPI_AC

tristate "AC Adapter"
default y if ACPI
depends X86

select POWER_SUPPLY
help
This driver supports the AC Adapter object
endif
Enrich changes
to comprehend them
Martin Pinzger
martin.pinzger@aau.at

Más contenido relacionado

La actualidad más candente

Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesThomas Zimmermann
 
CMPT470-usask-guest-lecture
CMPT470-usask-guest-lectureCMPT470-usask-guest-lecture
CMPT470-usask-guest-lectureMasud Rahman
 
Dissertation Defense
Dissertation DefenseDissertation Defense
Dissertation DefenseSung Kim
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSung Kim
 
Tools and techniques of code coverage testing
Tools and techniques of code coverage testingTools and techniques of code coverage testing
Tools and techniques of code coverage testingIAEME Publication
 
A preliminary study on using code smells to improve bug localization
A preliminary study on using code smells to improve bug localizationA preliminary study on using code smells to improve bug localization
A preliminary study on using code smells to improve bug localizationkrws
 
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 TechniquesSung Kim
 
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...SAIL_QU
 
maXbox Starter 43 Work with Code Metrics ISO Standard
maXbox Starter 43 Work with Code Metrics ISO StandardmaXbox Starter 43 Work with Code Metrics ISO Standard
maXbox Starter 43 Work with Code Metrics ISO StandardMax Kleiner
 
ACER-ASE2017-slides
ACER-ASE2017-slidesACER-ASE2017-slides
ACER-ASE2017-slidesMasud Rahman
 
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 LearningSung Kim
 
TBar: Revisiting Template-based Automated Program Repair
TBar: Revisiting Template-based Automated Program RepairTBar: Revisiting Template-based Automated Program Repair
TBar: Revisiting Template-based Automated Program RepairDongsun Kim
 
The relationship between test and production code quality (@ SIG)
The relationship between test and production code quality (@ SIG)The relationship between test and production code quality (@ SIG)
The relationship between test and production code quality (@ SIG)Maurício Aniche
 
Data collection for software defect prediction
Data collection for software defect predictionData collection for software defect prediction
Data collection for software defect predictionAmmAr mobark
 
Zikopis Evangelos Thesis Presentation
Zikopis Evangelos Thesis PresentationZikopis Evangelos Thesis Presentation
Zikopis Evangelos Thesis PresentationISSEL
 
Implementation of reducing features to improve code change based bug predicti...
Implementation of reducing features to improve code change based bug predicti...Implementation of reducing features to improve code change based bug predicti...
Implementation of reducing features to improve code change based bug predicti...eSAT Journals
 
The Use of Development History in Software Refactoring Using a Multi-Objectiv...
The Use of Development History in Software Refactoring Using a Multi-Objectiv...The Use of Development History in Software Refactoring Using a Multi-Objectiv...
The Use of Development History in Software Refactoring Using a Multi-Objectiv...Ali Ouni
 
ICSE2013
ICSE2013ICSE2013
ICSE2013swy351
 
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 ReproductionSung Kim
 
Accounting for uncertainty in species delineation during the analysis of envi...
Accounting for uncertainty in species delineation during the analysis of envi...Accounting for uncertainty in species delineation during the analysis of envi...
Accounting for uncertainty in species delineation during the analysis of envi...methodsecolevol
 

La actualidad más candente (20)

Changes and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development ActivitiesChanges and Bugs: Mining and Predicting Development Activities
Changes and Bugs: Mining and Predicting Development Activities
 
CMPT470-usask-guest-lecture
CMPT470-usask-guest-lectureCMPT470-usask-guest-lecture
CMPT470-usask-guest-lecture
 
Dissertation Defense
Dissertation DefenseDissertation Defense
Dissertation Defense
 
Software Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled DatasetsSoftware Defect Prediction on Unlabeled Datasets
Software Defect Prediction on Unlabeled Datasets
 
Tools and techniques of code coverage testing
Tools and techniques of code coverage testingTools and techniques of code coverage testing
Tools and techniques of code coverage testing
 
A preliminary study on using code smells to improve bug localization
A preliminary study on using code smells to improve bug localizationA preliminary study on using code smells to improve bug localization
A preliminary study on using code smells to improve bug localization
 
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
 
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
Threshold for Size and Complexity Metrics: A Case Study from the Perspective ...
 
maXbox Starter 43 Work with Code Metrics ISO Standard
maXbox Starter 43 Work with Code Metrics ISO StandardmaXbox Starter 43 Work with Code Metrics ISO Standard
maXbox Starter 43 Work with Code Metrics ISO Standard
 
ACER-ASE2017-slides
ACER-ASE2017-slidesACER-ASE2017-slides
ACER-ASE2017-slides
 
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
 
TBar: Revisiting Template-based Automated Program Repair
TBar: Revisiting Template-based Automated Program RepairTBar: Revisiting Template-based Automated Program Repair
TBar: Revisiting Template-based Automated Program Repair
 
The relationship between test and production code quality (@ SIG)
The relationship between test and production code quality (@ SIG)The relationship between test and production code quality (@ SIG)
The relationship between test and production code quality (@ SIG)
 
Data collection for software defect prediction
Data collection for software defect predictionData collection for software defect prediction
Data collection for software defect prediction
 
Zikopis Evangelos Thesis Presentation
Zikopis Evangelos Thesis PresentationZikopis Evangelos Thesis Presentation
Zikopis Evangelos Thesis Presentation
 
Implementation of reducing features to improve code change based bug predicti...
Implementation of reducing features to improve code change based bug predicti...Implementation of reducing features to improve code change based bug predicti...
Implementation of reducing features to improve code change based bug predicti...
 
The Use of Development History in Software Refactoring Using a Multi-Objectiv...
The Use of Development History in Software Refactoring Using a Multi-Objectiv...The Use of Development History in Software Refactoring Using a Multi-Objectiv...
The Use of Development History in Software Refactoring Using a Multi-Objectiv...
 
ICSE2013
ICSE2013ICSE2013
ICSE2013
 
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
 
Accounting for uncertainty in species delineation during the analysis of envi...
Accounting for uncertainty in species delineation during the analysis of envi...Accounting for uncertainty in species delineation during the analysis of envi...
Accounting for uncertainty in species delineation during the analysis of envi...
 

Similar a Analyzing Changes in Software Systems From ChangeDistiller to FMDiff

A tale of bug prediction in software development
A tale of bug prediction in software developmentA tale of bug prediction in software development
A tale of bug prediction in software developmentMartin Pinzger
 
Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)Martin Pinzger
 
Mining and Untangling Change Genealogies (PhD Defense Talk)
Mining and Untangling Change Genealogies (PhD Defense Talk)Mining and Untangling Change Genealogies (PhD Defense Talk)
Mining and Untangling Change Genealogies (PhD Defense Talk)Kim Herzig
 
CAiSE 2014 An adapter-based approach for M2T transformations
CAiSE 2014 An adapter-based approach for M2T transformationsCAiSE 2014 An adapter-based approach for M2T transformations
CAiSE 2014 An adapter-based approach for M2T transformationsJokin García Pérez
 
SQL Server 2008 for Developers
SQL Server 2008 for DevelopersSQL Server 2008 for Developers
SQL Server 2008 for Developersukdpe
 
Breaking down data silos with the open data protocol
Breaking down data silos with the open data protocolBreaking down data silos with the open data protocol
Breaking down data silos with the open data protocolWoodruff Solutions LLC
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicDavid Solivan
 
A tale of experiments on bug prediction
A tale of experiments on bug predictionA tale of experiments on bug prediction
A tale of experiments on bug predictionMartin Pinzger
 
Integration Patterns for Big Data Applications
Integration Patterns for Big Data ApplicationsIntegration Patterns for Big Data Applications
Integration Patterns for Big Data ApplicationsMichael Häusler
 
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...NLJUG
 
Servicehost Customization
Servicehost CustomizationServicehost Customization
Servicehost CustomizationEyal Vardi
 
Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...
Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...
Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...jsvetter
 
SystemVerilog-20041201165354.ppt
SystemVerilog-20041201165354.pptSystemVerilog-20041201165354.ppt
SystemVerilog-20041201165354.pptravi446393
 

Similar a Analyzing Changes in Software Systems From ChangeDistiller to FMDiff (20)

A tale of bug prediction in software development
A tale of bug prediction in software developmentA tale of bug prediction in software development
A tale of bug prediction in software development
 
Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)Populating a Release History Database (ICSM 2013 MIP)
Populating a Release History Database (ICSM 2013 MIP)
 
Application Hosting
Application HostingApplication Hosting
Application Hosting
 
poster_3.0
poster_3.0poster_3.0
poster_3.0
 
Patterns for distributed systems
Patterns for distributed systemsPatterns for distributed systems
Patterns for distributed systems
 
Of Changes and Their History
Of Changes and Their HistoryOf Changes and Their History
Of Changes and Their History
 
Mining and Untangling Change Genealogies (PhD Defense Talk)
Mining and Untangling Change Genealogies (PhD Defense Talk)Mining and Untangling Change Genealogies (PhD Defense Talk)
Mining and Untangling Change Genealogies (PhD Defense Talk)
 
Unit 1
Unit  1Unit  1
Unit 1
 
CAiSE 2014 An adapter-based approach for M2T transformations
CAiSE 2014 An adapter-based approach for M2T transformationsCAiSE 2014 An adapter-based approach for M2T transformations
CAiSE 2014 An adapter-based approach for M2T transformations
 
SQL Server 2008 for Developers
SQL Server 2008 for DevelopersSQL Server 2008 for Developers
SQL Server 2008 for Developers
 
Poles position
Poles positionPoles position
Poles position
 
Breaking down data silos with the open data protocol
Breaking down data silos with the open data protocolBreaking down data silos with the open data protocol
Breaking down data silos with the open data protocol
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
A tale of experiments on bug prediction
A tale of experiments on bug predictionA tale of experiments on bug prediction
A tale of experiments on bug prediction
 
Integration Patterns for Big Data Applications
Integration Patterns for Big Data ApplicationsIntegration Patterns for Big Data Applications
Integration Patterns for Big Data Applications
 
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...
 
COMPSAC 2008 Presentation
COMPSAC 2008 PresentationCOMPSAC 2008 Presentation
COMPSAC 2008 Presentation
 
Servicehost Customization
Servicehost CustomizationServicehost Customization
Servicehost Customization
 
Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...
Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...
Exploring Emerging Technologies in the Extreme Scale HPC Co-Design Space with...
 
SystemVerilog-20041201165354.ppt
SystemVerilog-20041201165354.pptSystemVerilog-20041201165354.ppt
SystemVerilog-20041201165354.ppt
 

Último

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 

Último (20)

Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 

Analyzing Changes in Software Systems From ChangeDistiller to FMDiff

  • 1. Analyzing Changes in Software Systems From ChangeDistiller to FMDiff Martin Pinzger Software Engineering Research Group University of Klagenfurt http://serg.aau.at/bin/view/MartinPinzger
  • 3. Software systems change [Lehman et al.] Views on Mozilla evolution 50% of files have been modified in last quarter of observation 3
  • 4.
  • 5. What did change in this revision? 5
  • 6. What is the impact of these changes? 6
  • 7. Do these changes affect my code? 7
  • 8. Understanding changes and their impact Current tools lack support for comprehending changes “How do software engineers understand code changes? - an exploratory study in industry”, Tao et al. 2012 Developers need to reconstruct the detailed context and impact of each change which is time consuming and error prone “An exploratory study of awareness interests about software modifications”, Kim 2011 8
  • 9. We need better support to analyze and comprehend changes and their impact
  • 10. Overview of (my) tools ChangeDistiller Fine-Grained Evolution of Java classes WSDLDiff Evolution of service-oriented systems FMDiff Evolution of feature models 10
  • 11. ChangeDistiller Fine-grained evolution of Java classes Beat Fluri, Martin Pinzger, and Harald Gall
  • 12. Extracting source code changes using ASTs Using tree differencing, we can determine public void method(D d) { if (d != null) { d.foo(); d.bar(); } } public void method(D d) { d.foo(); d.bar(); } 12
  • 13. Using tree differencing, we can determine Enclosing entity (root node) Extracting source code changes using ASTs public void method(D d) { if (d != null) { d.foo(); d.bar(); } } public void method(D d) { d.foo(); d.bar(); } 13
  • 14. Using tree differencing, we can determine Enclosing entity (root node) Kind of statement which changed (node information) public void method(D d) { d.foo(); d.bar(); } public void method(D d) { if (d != null) { d.foo(); d.bar(); } } Extracting source code changes using ASTs 14
  • 15. Using tree differencing, we can determine Enclosing entity (root node) Kind of statement which changed (node information) Kind of change (tree edit operation) public void method(D d) { if (d != null) { d.foo(); d.bar(); } } public void method(D d) { d.foo(); d.bar(); } Extracting source code changes using ASTs 15
  • 18. ChangeDistiller references “Change distilling: Tree differencing for fine-grained source code change extraction”, Fluri et al. 2007 Diffing UML diagrams “UMLDiff: An Algorithm for Object-Oriented Design Differencing”, Xing et al. 2005 Recording changes in the IDE “Mining Fine-grained Code Changes to Detect Unknown Change Patterns”, Negara et al. 2014 18
  • 19. ChangeDistiller improved -> gumtree gumtree (sources available at GitHub) “Fine-grained and accurate source code differencing”, Falleri et al. 2014 19
  • 20. Ratio of change type categories Table 3: Relative frequencies of SCC categories per Eclipse project, plus their mean and variance over all selected projects. Eclipse Project cDecl oState func mDecl stmt cond else Compare 0.01 0.06 0.08 0.05 0.74 0.03 0.03 jFace 0.02 0.04 0.08 0.11 0.70 0.02 0.03 JDT Debug 0.02 0.06 0.08 0.10 0.70 0.02 0.02 Resource 0.01 0.04 0.02 0.11 0.77 0.03 0.02 Runtime 0.01 0.05 0.07 0.10 0.73 0.03 0.01 Team Core 0.05 0.04 0.13 0.17 0.57 0.02 0.02 CVS Core 0.01 0.04 0.10 0.07 0.73 0.02 0.03 Debug Core 0.04 0.07 0.02 0.13 0.69 0.02 0.03 jFace Text 0.04 0.03 0.06 0.11 0.70 0.03 0.03 Update Core 0.02 0.04 0.07 0.09 0.74 0.02 0.02 Debug UI 0.02 0.06 0.09 0.07 0.70 0.03 0.03 JDT Debug UI 0.01 0.07 0.07 0.05 0.75 0.02 0.03 Help 0.02 0.05 0.08 0.07 0.73 0.02 0.03 JDT Core 0.00 0.03 0.03 0.05 0.80 0.05 0.04 OSGI 0.03 0.04 0.06 0.11 0.71 0.03 0.02 Mean 0.02 0.05 0.07 0.09 0.72 0.03 0.03 Variance 0.000 0.000 0.001 0.001 0.003 0.000 0.000 20
  • 21. Predicting bug-prone files UC values of E 1 using logistic regression with CC as predictors for bug-prone and a not bug- Larger values are printed in bold. Eclipse Project AUC LM AUC SCC Compare 0.84 0.85 jFace 0.90 0.90 JDT Debug 0.83 0.95 Resource 0.87 0.93 Runtime 0.83 0.91 Team Core 0.62 0.87 CVS Core 0.80 0.90 Debug Core 0.86 0.94 jFace Text 0.87 0.87 Update Core 0.78 0.85 Debug UI 0.85 0.93 JDT Debug UI 0.90 0.91 Help 0.75 0.70 JDT Core 0.86 0.87 OSGI 0.88 0.88 Median 0.85 0.90 Overall 0.85 0.89 21 SCC outperforms LM “Comparing Fine-Grained Source Code Changes And Code Churn For Bug Prediction”, Giger et al. 2011 More info:
  • 22. Predicting bug-prone methods Large files are typically the most bug-prone files Retrieving bug-prone methods saves manual inspection effort and testing effort 11 methods on average class 1 class 2 class 3 class n...class 2 4 methods are bug prone (ca. 36%) 22
  • 23. Predicting bug-prone methods Models computed with change metrics (CM) perform best authors and methodHistories are the most important measures More info “Method-Level Bug Prediction”, Giger et al. 2012 23 Table 4: Median classification results over all pro- jects per classifier and per model CM SCM CM&SCM AUC P R AUC P R AUC P R RndFor .95 .84 .88 .72 .5 .64 .95 .85 .95 SVM .96 .83 .86 .7 .48 .63 .95 .8 .96 BN .96 .82 .86 .73 .46 .73 .96 .81 .96 J48 .95 .84 .82 .69 .56 .58 .91 .83 .89 values of the code metrics model are approximately 0.7 for each classifier—what is defined by Lessman et al. as ”promis- ing” [26]. However, the source code metrics suffer from con- siderably low precision values. The highest median precision value for the code metrics model is obtained in case of J48
  • 24. Research opportunities Extract details on statement changes (-> solved by gumtree?) Argument changes in method invocations Nesting of statements Expression changes Extract context information Consider call, access, inheritance, and type dependencies Combine with task context - see, e.g., Mylyn [Kersten and Murphy, 2005] 24
  • 25. Research opportunities (cont.) Support multiple programming languages Currently only Java is supported Extract changes from “other” source files Configuration files, project and build files, etc. Extract changes of whole software ecosystems 25
  • 26. WSDLDiff Evolution of service-oriented systems Daniele Romano and Martin Pinzger
  • 27. Service-oriented systems Services as contracts -> they should be stable Analyze changes to quantify the risk of using a service 27
  • 28. WSDL example 28 <definitions name=“HelloService" targetNamespace="http://www.examples.com/wsdl/HelloService.wsdl" …> <message name="SayHelloRequest"> <part name="parameters" type=“ns:PersonName"/> </message> <portType name="Hello_PortType"> <operation name="sayHello"> <input message="tns:SayHelloRequest"/> <output message="tns:SayHelloResponse"/> </operation> </portType> <binding name="Hello_Binding" type="tns:Hello_PortType"> <soap:binding style=“rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello"> <soap:operation soapAction="sayHello"/> <input> … </input> <output> … </output> </operation> </binding> <service name="Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding="tns:Hello_Binding" name=“Hello_Port”> … </port> </service> </definitions>
  • 29. WSDL-XSD example 29 … within the WSDL file … <types> <xs:schema targetNamespace="http://example.org/names"… > <xs:complexType name="Name"> <xs:sequence> <xs:element name="firstName" type="xs:string"/> <xs:element name="lastName" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="PersonName" type="Name"/> </xs:schema> </types>
  • 30. Extracting changes from WSDLs 30 Matching  Engine Match  Model Diff  Model Differencing  Engine XSD  Transformer XSD  Transformer WSDL  Model1’ WSDL  Model2’ WSDL  Model1 WSDL  Model2 WSDL  Version1 WSDL  Version2 WSDL  Parser WSDL  Parser
  • 31. Change types recorded by WSDLDiff WSDL Operations and BindingOperations Messages and MessageParts Message parameters Data types Attributes: name, minOccurs, maxOccurs, fixed Referenced values Enumerations 31
  • 32. Changes in WSDLs 32 Change Type AmazonEC2 FedEx Rate FedEx Ship FedEx Pkg OperationA 113 1 10 0 OperationC 0 1 0 0 OperationD 9 1 4 0 MessageA 218 2 16 0 MessageC 2 0 2 0 MessageD 10 2 2 0 PartA 27 0 2 0 PartC 34 0 0 0 PartD 27 0 2 0 Total 440 7 38 0 A .. Added C .. Changed D .. Deleted
  • 33. Changes in data types (XSD) 33 Change Type AmazonEC2 FedEx Rate FedEx Ship FedEx Pkg XSDTypeA 409 234 157 0 XSDTypeC 160 295 280 6 XSDTypeD 2 71 28 0 XSDElementA 208 2 25 0 XSDElementC 1 0 18 0 XSDElementD 0 2 0 0 XSDAttributeGroupA 6 0 0 0 XSDAttributeGroupC 5 0 0 0 Total 791 604 508 6
  • 34. What we learned from WSDL evolution Users of the AmazonEC2 service New operations are continuously added Data types change frequently adding new elements Users of the FedEx service Data types change frequently Operations are more stable More info “Analyzing the Evolution of Web Services using Fine-Grained Changes”, Romano and Pinzger 2012 34
  • 35. Research opportunities Perform the study with “real” industrial systems Analyzing co-evolution between WSDL interfaces between WSDL interfaces and their implementation Use changes for test selection/prioritization Etc. Major challenge is to find case studies of real/industrial service-oriented systems that are available 35
  • 36. FMDiff Evolution of the linux kernel feature model Nicolas Dintzner, Arie van Deursen, and Martin Pinzger
  • 37. Linux feature implementation What is the impact of a feature change?
  • 38. Main motivation Identify co-evolution patterns (common changes in the different artifacts implementing a feature) Local validation of changes to prevent inconsistencies Facilitate test selection Prevent variability related implementation bugs Implementation of features is intermixed, leading to undesired interactions Interactions occur between features from different sub-systems demanding cross-subsystem knowledge More info: “42 variability bugs in the linux kernel: a qualitative analysis”, Abal et al. 2014 38
  • 39. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner A feature in a Kconfig file Name Type & Prompt Default Depends Select (help text) Additional structures 39 if ACPI config ACPI_AC
 tristate "AC Adapter" default y if ACPI depends X86
 select POWER_SUPPLY help This driver supports the AC Adapter object ,(...). endif
  • 40. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner FMDiff: Extracting changes from Kconfig files 40 Linux repository Feature model translation X86 v1 X86 v2 X86 v… Feature model reconstruction (EMF) Feature model comparison (EMF Compare) Feature change classification Feature change repository
  • 41. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Feature model transl.: from Kconfig to Kdump 41 if ACPI config ACPI_AC
 tristate "AC Adapter" default y if ACPI depends X86
 select POWER_SUPPLY endif config ACPI_AC
 tristate "AC Adapter" default y if ACPI depends X86 && ACPI select POWER_SUPPLY 1- Kconfig (original) 2- Hierarchy flattening config ACPI_AC
 tristate "AC Adapter" default y if X86 && ACPI depends X86 && ACPI select POWER_SUPPLY if X86 && ACPI 3- Depends propagation Item ACPI_AC tristate
 Prompt ACPI_AC 1
 Default ACPI_AC "y" "X86 && ACPI"
 Depends ACPI_AC "X86 && ACPI" ItemSelects ACPI_AC POWER_SUPPLY "X86 && ACPI” 4- Kdump format (what we use) Credits to for Undertaker and the translation process
  • 42. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner FMDiff meta model 42 Feature Type (string) Prompt (boolean) Depends (string) DependsReferences (list of strings) Select Statement Target (string) Condition (string) SelectConditionReferences (list of strings) Default Statement DefaultValue (string) Condition (string) DefaultValueReferences (list of strings) DefaultValueConditionReferences (list of strings) "contains" "contains" "contains" FeatureModel Architecture (string) Revision (string) 0 * 0 * 0 *
  • 43. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Example 43 Item ACPI_AC tristate
 Depends ACPI_AC "X86 && ACPI" … Item ACPI_AC tristate
 Depends ACPI_AC “(X86 || AMD) && ACPI" … V1 V2 Feature Model Architecture: X86 Revision: 1 Feature Name: ACPI_AC Depends: “X86 && ACPI” Depends references: [X86,ACPI] Feature Model Architecture: X86 Revision: 2 Feature Name: ACPI_AC Depends: “(AMD || X86) && ACPI” Depends references: [X86,ACPI,AMD] Rev . Feature Change type Category Subcategory Old value New value 2 ACPI_AC Modification modify depends modify condition X86 X86||AMD 2 ACPI_AC Modification modify depends add depends ref. AMD
  • 44. Extracting feature model changes from the Linux kernel with FMDiff - Nicolas Dintzner Change classification 44 Change operations: Add, Remove, Modify Attribute Depends Default Select Type Prompt Expression References Default Value Condition References Target Condition References Feature
  • 45. Study with 14 releases of the linux kernel 45 Featurechangescategorydistribution 0% 25% 50% 75% 100% Linux kernel releases v2.6.39 v3.0 v3.1 v3.2 v3.3 v3.4 v3.5 v3.6 v3.7 v3.8 ADDED REMOVED MODIFIED 493 772 397 1740 612 493 750 609 1068 544
  • 46. Impact on architectures Which architectures are affected and need to be tested? 46 Release #changed features % aff. all architectures 2.6.39 1016 26.47 3.0 1020 58.43 3.2 2361 39.00 3.4 778 32.39 3.6 823 34.14 3.8 963 29.38
  • 47. What we learned from feature evolution Modification of existing features is done frequently Should be considered when studying the linux kernel (existing studies mainly focussed on addition and removal of features) Changes affecting All architectures vary between 10-50% Future studies should be clear about which architectures they study More info “Analysing the Linux kernel feature model changes using FMDiff”, Dintzner et al. 2015 47
  • 48. Research opportunities Link changes in the three implementation spaces Kconfig, Kbuild, source code Mine co-evolution patterns Detail the level of changes E.g., consider changes in the conditional statements Study evolution of other systems E.g., toybox, ecos, BusyBox Consider frameworks and other highly-configurable systems 48
  • 49. Conclusions 49 ChangeDistiller WSDLDiff FMDiff if ACPI config ACPI_AC
 tristate "AC Adapter" default y if ACPI depends X86
 select POWER_SUPPLY help This driver supports the AC Adapter object endif Enrich changes to comprehend them Martin Pinzger martin.pinzger@aau.at