Upload
ptidej-team
View
75
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Anti-patterns, evolution, genealogies
Citation preview
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