on the evolutionary nature of architectural violations - wcre 2012

Post on 29-Jun-2015

459 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

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: jarthur@dsc.ufcg.edu.br

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

top related