Upload
joao-brunet
View
455
Download
3
Tags:
Embed Size (px)
Citation preview
On the Evolutionary Nature of Architectural Violations
João Brunet*, Roberto A Bittencourt, Dalton Serey and Jorge AbrantesSoftware Practices Laboratory - SPLab
Federal University of Campina Grande (UFCG), Brazil*speaker: [email protected]
Oct 16, 2012 WCRE, Kingston, Canada.
Architectural Violation
Architectural decision
A B
C
Design phase
Architectural Violation
Architectural decision
A B
C
Design phase
Implementation phase
public class A {
public void m1(C c) {c.method1();
}
}
Architectural Violation: A.m1() calls C.method1()
Conformance Checking
A B
C
State-of-the-art
Reflexion Models
DesignFragments Design Tests Save Tool
ArchJava DCLCheck
A longitudinal and exploratory study
A longitudinal and exploratory study
● 20 bi-weekly versions (~9 months)● Architectural models from Systems'
documentation
A longitudinal and exploratory study
Software Evolution
V1 V2 V3 ... V20
A longitudinal and exploratory study
Software Evolution
V1 V2 V3 ... V20
A B
C
A B
CA B
C
A B
C
A longitudinal and exploratory study
Software Evolution
V1 V2 V3 ... V20
A B
C
A B
CA B
C
A B
C
List of violations
List of violations
List of violations
List of violations
Research Questions
How does the gap between code and architecture evolve over time?
RQ1
Research Questions
How does the gap between code and architecture evolve over time?
RQ1
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Research Questions
How does the gap between code and architecture evolve over time?
RQ1
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Once violations are solved in a given version,do they appear again in future versions?
RQ3
How does the gap between code and architecture evolve over time?
RQ1
How does the gap between code and architecture evolve over time?
RQ1
How does the gap between code and architecture evolve over time?
RQ1
Ant: Rollback
How does the gap between code and architecture evolve over time?
RQ1
ArgoUML: “ProgressMonitor does not belong in the GUI subsystem...Move the ProgressMonitor into its own subsystem.”
How does the gap between code and architecture evolve over time?
RQ1
How does the gap between code and architecture evolve over time?
RQ1
Implementation tends to increasingly diverge from the intended architecture.
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Heavy-tailed distribution. Few classes with many violations!
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Are the violations equally spread over the design entities or they concentrate on a few ones?
RQ2
Once violations are solved, do they appear again in future versions?
RQ3
Yes. And it is a meaningful number.
Violations' relevance
Why? What for?
Architectural erosion managment
Architectural changes suggestions
Next Steps
Distribution of violations among developers
Why are there recurring violations?
Why do developers break the rules?
That´s all Folks!
Backup Slides
SweetHome3D - Arch Model