130531 francis nahm - on the evolution of antipatterns genealogies

Post on 27-May-2015

75 views 2 download

Tags:

description

Anti-patterns, evolution, genealogies

Transcript of 130531 francis nahm - on the evolution of antipatterns genealogies

HOW ANTIPATTERNS ARE

INTODUCED IN THE CODE AND

WHAT LINKS THEY HAVE WITH THE

EVOLUTION OF THE CLASSES?

IMPACT OF ANTIPATTERNS ON SOFTWARES QUALITY

By Francis NAHM Date: 31 May 2013

Supervisor Professor: Foutse KHOMH

SUMMARY

I. Context of the study

II. Tools Used

III. First Results

IV. Remaining Work

Context of the study

The study of antipatterns and their impact is not a new concern for researchers.

However, many studies thus far did not link the evolution of classes to antipatterns

The goal of this study is to establish existing links between antipatterns and evolution of classes.

Context of the study

2 importants steps:

First step: How and When Antipatterns are introduced in

the code

Second step: Links between these antipatterns and the

classes evolution

Tools Used

SAD Tool:

Used to detects design patterns and anti patterns in classes

Example of programs aanalyzed : ArgoUML, Netbeans, Eclipse (In progress)

Very very long to detect Design Pattern; creation of the model is extremely expensive in time and resource

Results are stored in a database in two tables:

SAD Tool

Table for antipatterns detection

SAD Tool

Table for design patterns detection

SAD Tool

The two previous table are joined with table containing all the classes of the program to obtain this final table:

SAD Tool

This table contains all the information to generate three other useful tables:

A table containing characteristics of each class for each version

SAD Tool

o With this table, we can create a table containing for each class changement from one version to another

SAD Tool

This table allows us to organize classes in 4 groups: stable classes, stabilized classes; deteriorated classes and improved classes

SAD Tool

With this 3 tables, we can compute stats on programs: Average time for a default add/remove, Percent of classes added/removed at each version ….

SAD Tool

Tools Used

Evolizer

Used to extract changes between two subsequent files

Changes are stored in a database.

Used with a SVN repository, it gives all the evolution of the classes from one specified revision to another one

Still not able to use it on my computer

Evolizer and SAD

By crossing data from SAD and Evolizer, we will be able to detect which kind of changement in the class is more likely to introduce a specific default (antipattern or bugs) in the future

The main idea is to determine for the developers what are the way of coding which are risked.

RESULTS

ArgoUML results

Some general stats by version:

0.10.1

30/12/1899

0.18.1

30/12/1899

30/12/1899

30/12/1899

30/12/1899

0.30.2

0.32.1

30/12/1899

0

10

20

30

40

50

60

70

Percents of classes with APs

0.10.1

30/12/1899

0.18.1

30/12/1899

30/12/1899

30/12/1899

30/12/1899

0.30.2

0.32.1

30/12/1899

0

5

10

15

20

25

30

35

Percent of added classes

0.10.1

30/12/1899

0.18.1

30/12/1899

30/12/1899

30/12/1899

30/12/1899

0.30.2

0.32.1

30/12/1899

0

5

10

15

20

25

30

Percent of classes removed

0.10.1

30/12/1899

0.18.1

30/12/1899

30/12/1899

30/12/1899

30/12/1899

0.30.2

0.32.1

30/12/1899

0

10

20

30

40

50

60

Percent of APs added

0.10.1

30/12/1899

0.18.1

30/12/1899

30/12/1899

30/12/1899

30/12/1899

0.30.2

0.32.1

30/12/1899

0

5

10

15

20

25

30

Percent of APs removed

ArgoUML Results

ArgoUML results

Repartition of groups

Deteriorated classes percent: 18.11

Improved classes percent: 13.28

Stable classes percent: 61.12

Stabilized classes percent: 7.47

First Results

Only two programs has been analyzed by SAD tool until now: ArgoUML and Netbeans

According to the results, it seems like there’s no particular links between introduction of antipatterns and designpatterns evolution

Remaining work

Find a way to operate Evolizer and cross data with SAD results.

Check the SVN logs to get usefuls information like the modifiers, or the bugs and cross this data with SAD results.

Re-Organize the actual way it’s coded..

THANK YOU FOR YOUR ATTENTION