IMPACT OF CODE OWNERSHIP IMPACT OF CODE OWNERSHIP ON ATIPATTERNS ON ATIPATTERNS Stéphane BUNOD Engineering school student at Polytech’Montpellier 3 month internship Supervisor : Foutse KHOMH
OUTLINE OUTLINE Context Goal Implementation Results Conclusion Personal experience
CONTEXT CONTEXT Foutse’s research interests Developping techniques and tools to assess the quality of systems Design patterns, design defects : their impact on the quality of systems and their evolution in systems Foutse “Antipatterns are more fault prone” . 2012 Christian Bird. Don’t Touch My Code! Examining the Effects of Ownership on Software Quality. 2011
GOAL GOAL
IMPLEMENTATION – IMPLEMENTATION – EXISTING WORK EXISTING WORK Previous work from Francis NAHM: List of AntiPatterns for each version of the Argouml project (APs example : ComplexClass, LongMethod, LongParameterList)
IMPLEMENTATION – IMPLEMENTATION – COLLECT COLLECT Collect information about the Argouml project: SVN log
IMPLEMENTATION – IMPLEMENTATION – WHAT IS INTERESTING IN WHAT IS INTERESTING IN « « SVN LOG SVN LOG » »
IMPLEMENTATION – IMPLEMENTATION – KEEP INTERESTING INFORMATION KEEP INTERESTING INFORMATION Get the list of contributors Get the date of commits Get the files/classes that had been modified
IMPLEMENTATION – IMPLEMENTATION – EVALUATE MAJOR CONTRIBUTOR RATE EVALUATE MAJOR CONTRIBUTOR RATE Major contributor: A developer who has made changes to a component and whose ownership is at or above X% is a major contributor to the component and a commit from such a developer is a major contribution. 3rd quartile of all contributors statistics on each classes : 71%
IMPLEMENTATION – IMPLEMENTATION – ADD INFORMATION OF MC ON EACH VERSION ADD INFORMATION OF MC ON EACH VERSION Know the kind of contributor for each version on each class. Add it beside the number of AntiPatterns on each version of each class.
IMPLEMENTATION – IMPLEMENTATION – WHAT THE CSV LOOKS LIKE WHAT THE CSV LOOKS LIKE
IMPLEMENTATION – IMPLEMENTATION – METHOD TO ESTIMATE THE EVOLUTION OF A CLASS METHOD TO ESTIMATE THE EVOLUTION OF A CLASS List of the occurrence of AntiPatterns for each class. Example: [5, 3, 4, 4, 1, 2, 5] [0]: A-A-A-A-A-S [1]: D-D-A-A-D [2]: S-A-A-D [3]: A-A-D [4]: D-D [5]: D A = 11 ; D = 8 ; S = 2 A > D > S This class is considered to have a global amelioration tendency
IMPLEMENTATION – IMPLEMENTATION – DIFFERENT CATEGORIES OF LIST DIFFERENT CATEGORIES OF LIST Classes with only Major Contributor (MC) on each version of the project. Classes without any MC. Classes with a MC, only on the first version. Classes with a developer who becomes MC after few versions without any. Classes where there is no longer MC after few versions with a MC.
RESULTS RESULTS Only MC on Only MC No MC the 1st Become MC No longer MC version Stable 58% 73,63% 74,40% 87,13% 79,18% Amelioration 24% 11,55% 7,76% 1,98% 14,46% Degradation 18% 14,82% 20,84% 10,89% 6,36%
CONCLUSION CONCLUSION Linus Law. “ Given a large enough developers, almost every problem will be characterized quickly and the fix will be obvious to someone “ AntiPatterns have the same characteristics of Bugs correlate with ownership. Of course, this work should be reproduced on other projects.
PERSONAL EXPERIENCE PERSONAL EXPERIENCE Lab experience Met new people Learnt Python language (enjoyed coding for once) Not sure I would be a good researcher ^^
Recommend
More recommend