Upload
andrzej-olszak
View
123
Download
0
Tags:
Embed Size (px)
Citation preview
Detection of Seed Methods for Quantification of Feature Confinement
Andrzej Olszak, Eric Bouwers,
Bo Nørregaard Jørgensen, Joost Visser
Agenda
I. Features in OO programsII. Feature-centric quality assessmentIII. Our approach
I. Seed methodsII. Automated detection of seed methods
IV. EvaluationV. Evolutionary applicationVI. Conclusion
— 2 —
Features
• Feature is a unit of user functionality– Bridges the problem and solution domains
– Unit of evolutionary change
Feature specs Source code
Features in OO programs
• Crosscutting inter-class collaborations• Implicit boundaries
Feature specs Source code
Features in OO programs
• Crosscutting inter-class collaborations• Implicit boundaries
Feature specs Source code
Features in OO programs
• Crosscutting inter-class collaborations• Implicit boundaries• More scattering = bigger scope of change
scattering
Feature specs Source code
Features in OO programs
• Crosscutting inter-class collaborations• Implicit boundaries• More scattering = bigger scope of change• More tangling = more change propagation
scattering
tangling
Feature-centric quality assessment
• Scaling quantification of feature confinement:– Hundreds of large-scale industrial systems
– Mixed availability of documentation, issue tracker tickets, full revision histories…
– System-level ratings
• Existing feature location approaches are insufficient and needlessly fine-grained
Pro
gra
m
Swin
g
Our approach – seed methods
• Features as user-triggered control flows
• Seed methods are the starting points of feature control graphs
…
Feature Seed MethodactionPerformed()
:ActionListener :Model:JButton
Our approach – automated detection of seed methods
• Automated detection of seeds for static slicing– Anonymous seed methods
• Rank methods Product of two simple heuristics:– Method with popular names
• Exploits regularity, i.e. polymorphism-based callbacks
– Methods that yield large static control-flow slices• Filters uninteresting shallow methods, e.g. toString, getID
• Take δ=10 best methods*
A more realistic example:JHotDraw 7.6
keyPressed
actionPerformed
getPresentationName
wrapViewComponent
Evaluation
• Hypothesis: – Traces produced by our approach cover the same
regions of source code as a ground truth
• Ground-truth slices based on manually constructed set of seed methods:– 14 medium and large Java programs
– Based on used interfacing technologies, e.g. Swing, SWT, Android, Spring
Results
• Average results:
• Interesting cases:
Intersection79%
Appr.-only6%
Non-covered13%
GT-only2%
k9mail Checkstyle Spring
process verify
invoke
Application: tracking evolution of feature confinement
• Checkstyle, 10 years, 27 releases: 1.0 – 5.4– Violation detectors are the features
• Scattering and tangling calibrated on 55 systems
Application: tracking evolution of feature confinement
• Checkstyle, 10 years, 27 releases: 1.0 – 5.4– Violation detectors are the features
• Scattering and tangling calibrated on 55 systems
Architectural restructuring
Application: tracking evolution of feature confinement
• Checkstyle, 10 years, 27 releases: 1.0 – 5.4– Violation detectors are the features
• Scattering and tangling calibrated on 55 systems
Architectural restructuring
No erosion despite 2x
growth in LOC
Application: tracking evolution of feature confinement
• Checkstyle, 10 years, 27 releases: 1.0 – 5.4– Violation detectors are the features
• Scattering and tangling calibrated on 55 systems
Architectural restructuring
No erosion despite 2x
growth in LOC
Removal of J2EE detectors,
refactorings
Conclusion
• Seed methods detection:– Detected approximate the ground truth
– We find solution-specific abstractions
• Interesting perspective on software evolution
• Persisting challenges:– Heuristic parameters and some design decisions
(δ=10, product, ranking)
– Comparative validation vs. traditional approaches