On the Evolutionary Nature of Architectural Violations João Brunet*, Roberto A Bittencourt, Dalton Serey and Jorge Abrantes Software Practices Laboratory - SPLab Federal University of Campina Grande (UFCG), Brazil *speaker: [email protected]Oct 16, 2012 WCRE, Kingston, Canada.
31
Embed
On the evolutionary nature of architectural violations - WCRE 2012
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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?