Evaluating the Impact of Design Pattern and Anti-pattern Dependencies on Changes and Faults. Jaafar, F., Guéhéneuc, Y., Hamel, S., Khomh, F., & Zulkernine, M. Journal of Empirical Software Engineering (EMSE), 21(3):896–931, Springer, February, 2016. 35 pages.Paper abstract bibtex On the one hand, design patterns are solutions to recurring design problems, aimed at increasing reuse, flexibility, and maintainability. However, numerous previous work found that some patterns, such as the Observer and Singleton, are correlated with large code structures and argued that they are likely to be more fault prone. On the other hand, anti-patterns describe poor solutions to design and implementation problems that highlight weaknesses in the design of software systems and that may slow down maintenance and increase the risk of faults. They have been found to negatively impact change and fault-proneness. Classes participating in design patterns and anti-patterns have dependencies with other classes, \eg static and co-change dependencies, that may propagate problems to other classes. We investigate the impact of such dependencies in object-oriented systems by studying the relations between the presence of static and co-change dependencies and (1) the fault-proneness, (2) the types of changes, and (3) the types of faults that these classes undergo. We analyze six design patterns and 10 anti-patterns in 39 releases of ArgoUML, JFreeChart, and XercesJ, and investigate to what extent classes having dependencies with design patterns or anti-patterns have higher odds to faults than other classes. We show that in almost all releases of the three systems, classes having dependencies with anti-patterns are more fault-prone than others while it is not always true for classes with dependencies with design patterns. We also observe that structural changes are the most common changes impacting classes having dependencies with anti-patterns. Software developers could use this knowledge about the impact of design pattern and anti-pattern dependencies to better focus their testing and reviewing activities towards the most risky classes and to propagate changes adequately.
@ARTICLE{Jaafar14-EMSE-PatternDependencies,
author = {Fehmi Jaafar and Yann-Ga{\"e}l Gu{\'e}h{\'e}neuc and Sylvie Hamel and Foutse Khomh and Mohammad Zulkernine},
title = {Evaluating the Impact of Design Pattern and Anti-pattern Dependencies on Changes and Faults},
journal = {Journal of Empirical Software Engineering ({EMSE})},
year = {2016},
month = {February},
volume = {21},
number = {3},
pages = {896--931},
note = {35 pages.},
abstract = {On the one hand, design patterns are solutions to recurring design problems, aimed at increasing reuse, flexibility, and maintainability. However, numerous previous work found that some patterns, such as the Observer and Singleton, are correlated with large code structures and argued that they are likely to be more fault prone. On the other hand, anti-patterns describe poor solutions to design and implementation problems that highlight weaknesses in the design of software systems and that may slow down maintenance and increase the risk of faults. They have been found to negatively impact change and fault-proneness. Classes participating in design patterns and anti-patterns have dependencies with other classes, \eg{}
static and co-change dependencies, that may propagate problems to other classes. We investigate the
impact of such dependencies in object-oriented systems by studying the relations between the presence of
static and co-change dependencies and (1) the fault-proneness, (2) the types of changes, and (3) the
types of faults that these classes undergo. We analyze six design patterns and 10 anti-patterns in 39
releases of ArgoUML, JFreeChart, and XercesJ, and investigate to what extent classes having dependencies
with design patterns or anti-patterns have higher odds to faults than other classes. We show that in
almost all releases of the three systems, classes having dependencies with anti-patterns are more
fault-prone than others while it is not always true for classes with dependencies with design patterns.
We also observe that structural changes are the most common changes impacting classes having dependencies
with anti-patterns. Software developers could use this knowledge about the impact of design pattern and
anti-pattern dependencies to better focus their testing and reviewing activities towards the most risky
classes and to propagate changes adequately.},
editor = {Massimiliano {Di Penta} and Rocco Oliveto and Romain Robbes},
grant = {NSERC DG and CRC on Software Patterns},
keywords = {Code and design smells ; Design patterns ; EMSE},
kind = {RIAS},
language = {english},
publisher = {Springer},
url = {http://www.ptidej.net/publications/documents/EMSE16b.doc.pdf}
}
Downloads: 0
{"_id":"2svRn7jbFsSGfutre","bibbaseid":"jaafar-guhneuc-hamel-khomh-zulkernine-evaluatingtheimpactofdesignpatternandantipatterndependenciesonchangesandfaults-2016","downloads":0,"creationDate":"2018-01-17T20:29:42.179Z","title":"Evaluating the Impact of Design Pattern and Anti-pattern Dependencies on Changes and Faults","author_short":["Jaafar, F.","Guéhéneuc, Y.","Hamel, S.","Khomh, F.","Zulkernine, M."],"year":2016,"bibtype":"article","biburl":"http://www.yann-gael.gueheneuc.net/Work/BibBase/guehene (automatically cleaned).bib","bibdata":{"bibtype":"article","type":"article","author":[{"firstnames":["Fehmi"],"propositions":[],"lastnames":["Jaafar"],"suffixes":[]},{"firstnames":["Yann-Gaël"],"propositions":[],"lastnames":["Guéhéneuc"],"suffixes":[]},{"firstnames":["Sylvie"],"propositions":[],"lastnames":["Hamel"],"suffixes":[]},{"firstnames":["Foutse"],"propositions":[],"lastnames":["Khomh"],"suffixes":[]},{"firstnames":["Mohammad"],"propositions":[],"lastnames":["Zulkernine"],"suffixes":[]}],"title":"Evaluating the Impact of Design Pattern and Anti-pattern Dependencies on Changes and Faults","journal":"Journal of Empirical Software Engineering (EMSE)","year":"2016","month":"February","volume":"21","number":"3","pages":"896–931","note":"35 pages.","abstract":"On the one hand, design patterns are solutions to recurring design problems, aimed at increasing reuse, flexibility, and maintainability. However, numerous previous work found that some patterns, such as the Observer and Singleton, are correlated with large code structures and argued that they are likely to be more fault prone. On the other hand, anti-patterns describe poor solutions to design and implementation problems that highlight weaknesses in the design of software systems and that may slow down maintenance and increase the risk of faults. They have been found to negatively impact change and fault-proneness. Classes participating in design patterns and anti-patterns have dependencies with other classes, \\eg static and co-change dependencies, that may propagate problems to other classes. We investigate the impact of such dependencies in object-oriented systems by studying the relations between the presence of static and co-change dependencies and (1) the fault-proneness, (2) the types of changes, and (3) the types of faults that these classes undergo. We analyze six design patterns and 10 anti-patterns in 39 releases of ArgoUML, JFreeChart, and XercesJ, and investigate to what extent classes having dependencies with design patterns or anti-patterns have higher odds to faults than other classes. We show that in almost all releases of the three systems, classes having dependencies with anti-patterns are more fault-prone than others while it is not always true for classes with dependencies with design patterns. We also observe that structural changes are the most common changes impacting classes having dependencies with anti-patterns. Software developers could use this knowledge about the impact of design pattern and anti-pattern dependencies to better focus their testing and reviewing activities towards the most risky classes and to propagate changes adequately.","editor":[{"firstnames":["Massimiliano"],"propositions":[],"lastnames":["Di Penta"],"suffixes":[]},{"firstnames":["Rocco"],"propositions":[],"lastnames":["Oliveto"],"suffixes":[]},{"firstnames":["Romain"],"propositions":[],"lastnames":["Robbes"],"suffixes":[]}],"grant":"NSERC DG and CRC on Software Patterns","keywords":"Code and design smells ; Design patterns ; EMSE","kind":"RIAS","language":"english","publisher":"Springer","url":"http://www.ptidej.net/publications/documents/EMSE16b.doc.pdf","bibtex":"@ARTICLE{Jaafar14-EMSE-PatternDependencies,\n author = {Fehmi Jaafar and Yann-Ga{\\\"e}l Gu{\\'e}h{\\'e}neuc and Sylvie Hamel and Foutse Khomh and Mohammad Zulkernine},\n title = {Evaluating the Impact of Design Pattern and Anti-pattern Dependencies on Changes and Faults},\n journal = {Journal of Empirical Software Engineering ({EMSE})},\n year = {2016},\n month = {February},\n volume = {21},\n number = {3},\n pages = {896--931},\n note = {35 pages.},\n abstract = {On the one hand, design patterns are solutions to recurring design problems, aimed at increasing reuse, flexibility, and maintainability. However, numerous previous work found that some patterns, such as the Observer and Singleton, are correlated with large code structures and argued that they are likely to be more fault prone. On the other hand, anti-patterns describe poor solutions to design and implementation problems that highlight weaknesses in the design of software systems and that may slow down maintenance and increase the risk of faults. They have been found to negatively impact change and fault-proneness. Classes participating in design patterns and anti-patterns have dependencies with other classes, \\eg{}\nstatic and co-change dependencies, that may propagate problems to other classes. We investigate the\nimpact of such dependencies in object-oriented systems by studying the relations between the presence of\nstatic and co-change dependencies and (1) the fault-proneness, (2) the types of changes, and (3) the\ntypes of faults that these classes undergo. We analyze six design patterns and 10 anti-patterns in 39\nreleases of ArgoUML, JFreeChart, and XercesJ, and investigate to what extent classes having dependencies\nwith design patterns or anti-patterns have higher odds to faults than other classes. We show that in\nalmost all releases of the three systems, classes having dependencies with anti-patterns are more\nfault-prone than others while it is not always true for classes with dependencies with design patterns.\nWe also observe that structural changes are the most common changes impacting classes having dependencies\nwith anti-patterns. Software developers could use this knowledge about the impact of design pattern and\nanti-pattern dependencies to better focus their testing and reviewing activities towards the most risky\nclasses and to propagate changes adequately.},\n editor = {Massimiliano {Di Penta} and Rocco Oliveto and Romain Robbes},\n grant = {NSERC DG and CRC on Software Patterns},\n keywords = {Code and design smells ; Design patterns ; EMSE},\n kind = {RIAS},\n language = {english},\n publisher = {Springer},\n url = {http://www.ptidej.net/publications/documents/EMSE16b.doc.pdf}\n}\n\n","author_short":["Jaafar, F.","Guéhéneuc, Y.","Hamel, S.","Khomh, F.","Zulkernine, M."],"editor_short":["Di Penta, M.","Oliveto, R.","Robbes, R."],"key":"Jaafar14-EMSE-PatternDependencies","id":"Jaafar14-EMSE-PatternDependencies","bibbaseid":"jaafar-guhneuc-hamel-khomh-zulkernine-evaluatingtheimpactofdesignpatternandantipatterndependenciesonchangesandfaults-2016","role":"author","urls":{"Paper":"http://www.ptidej.net/publications/documents/EMSE16b.doc.pdf"},"keyword":["Code and design smells ; Design patterns ; EMSE"],"metadata":{"authorlinks":{"gu�h�neuc, y":"https://bibbase.org/show?bib=http%3A%2F%2Fwww.yann-gael.gueheneuc.net%2FWork%2FPublications%2FBiblio%2Fcomplete-bibliography.bib&msg=embed","guéhéneuc, y":"https://bibbase.org/show?bib=http://www.yann-gael.gueheneuc.net/Work/BibBase/guehene%20(automatically%20cleaned).bib"}},"downloads":0,"html":""},"search_terms":["evaluating","impact","design","pattern","anti","pattern","dependencies","changes","faults","jaafar","guéhéneuc","hamel","khomh","zulkernine"],"keywords":["code and design smells ; design patterns ; emse"],"authorIDs":["AfJhKcg96muyPdu7S","xkviMnkrGBneANvMr"],"dataSources":["Sed98LbBeGaXxenrM","8vn5MSGYWB4fAx9Z4"]}