Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness
During software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to promote software quality or as a possible cure for som...
Gespeichert in:
Veröffentlicht in: | Empirical software engineering : an international journal 2021-01, Vol.26 (1), Article 9 |
---|---|
Hauptverfasser: | , , , , |
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | |
---|---|
container_issue | 1 |
container_start_page | |
container_title | Empirical software engineering : an international journal |
container_volume | 26 |
creator | Kermansaravi, Zeinab Azadeh Rahman, Md Saidur Khomh, Foutse Jaafar, Fehmi Guéhéneuc, Yann-Gaël |
description | During software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to promote software quality or as a possible cure for some design anti-patterns. Thus, design patterns and design anti-patterns are introduced, removed, and mutated from one another by developers. Many studies investigated the evolution of design patterns and design anti-patterns and their impact on software development. However, they investigated design patterns or design anti-patterns in isolation and did not consider their mutations and the impact of these mutations on software quality. Therefore, we report our study of bidirectional mutations between design patterns and design anti-patterns and the impacts of these mutations on software change- and fault-proneness. We analyzed snapshots of seven Java software systems with diverse sizes, evolution histories, and application domains. We built Markov models to capture the probability of occurrences of the different design patterns and design anti-patterns mutations. Results from our study show that (1) design patterns and design anti-patterns mutate into other design patterns and–or design anti-patterns. They also show that (2) some change types primarily trigger mutations of design patterns and design anti-patterns (renaming and changes to comments, declarations, and operators), and (3) some mutations of design anti-patterns and design patterns are more faulty in specific contexts. These results provide important insights into the evolution of design patterns and design anti-patterns and its impact on the change- and fault-proneness of software systems. |
doi_str_mv | 10.1007/s10664-020-09900-0 |
format | Article |
fullrecord | <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_journals_2478168223</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>2478168223</sourcerecordid><originalsourceid>FETCH-LOGICAL-c319t-c5fd8d4a738432764f2f4100929907bc220c9be39df0c9c267293642395ebcba3</originalsourceid><addsrcrecordid>eNp9UE1PAyEQJUYTa_UPeGriGYWBheVoGj-aNPGiZ8Ky7Hablq3Amvjvpbs23rwMw5v3ZvIeQreU3FNC5EOkRAiOCRBMlCK5nqEZLSTDUlBxnntWAmZQiEt0FeOWEKIkL2aoXvkvF1PXmtT5dlG72LV-YXzq8MGk5MLxU5_wE7QfUub3Po7DtHFdWNiN8a3DI9KYYZfwIfTeeRfjNbpozC66m993jj6en96Xr3j99rJaPq6xZVQlbIumLmtuJCs5Ayl4Aw3P9hRkS7KyAMSqyjFVN7mxICQoJjgwVbjKVobN0d20N1_-HLItve2H4PNJDVyWVJQALLNgYtnQxxhcow-h25vwrSnRxzT1lKbOaeoxTU2yiE2imMnZZ_hb_Y_qByIgeEU</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2478168223</pqid></control><display><type>article</type><title>Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness</title><source>SpringerLink Journals - AutoHoldings</source><creator>Kermansaravi, Zeinab Azadeh ; Rahman, Md Saidur ; Khomh, Foutse ; Jaafar, Fehmi ; Guéhéneuc, Yann-Gaël</creator><creatorcontrib>Kermansaravi, Zeinab Azadeh ; Rahman, Md Saidur ; Khomh, Foutse ; Jaafar, Fehmi ; Guéhéneuc, Yann-Gaël</creatorcontrib><description>During software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to promote software quality or as a possible cure for some design anti-patterns. Thus, design patterns and design anti-patterns are introduced, removed, and mutated from one another by developers. Many studies investigated the evolution of design patterns and design anti-patterns and their impact on software development. However, they investigated design patterns or design anti-patterns in isolation and did not consider their mutations and the impact of these mutations on software quality. Therefore, we report our study of bidirectional mutations between design patterns and design anti-patterns and the impacts of these mutations on software change- and fault-proneness. We analyzed snapshots of seven Java software systems with diverse sizes, evolution histories, and application domains. We built Markov models to capture the probability of occurrences of the different design patterns and design anti-patterns mutations. Results from our study show that (1) design patterns and design anti-patterns mutate into other design patterns and–or design anti-patterns. They also show that (2) some change types primarily trigger mutations of design patterns and design anti-patterns (renaming and changes to comments, declarations, and operators), and (3) some mutations of design anti-patterns and design patterns are more faulty in specific contexts. These results provide important insights into the evolution of design patterns and design anti-patterns and its impact on the change- and fault-proneness of software systems.</description><identifier>ISSN: 1382-3256</identifier><identifier>EISSN: 1573-7616</identifier><identifier>DOI: 10.1007/s10664-020-09900-0</identifier><language>eng</language><publisher>New York: Springer US</publisher><subject>Compilers ; Computer Science ; Design modifications ; Evolution ; Interpreters ; Markov chains ; Mutation ; Programming Languages ; Software development ; Software Engineering/Programming and Operating Systems ; Software quality</subject><ispartof>Empirical software engineering : an international journal, 2021-01, Vol.26 (1), Article 9</ispartof><rights>The Author(s), under exclusive licence to Springer Science+Business Media, LLC part of Springer Nature 2021</rights><rights>The Author(s), under exclusive licence to Springer Science+Business Media, LLC part of Springer Nature 2021.</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c319t-c5fd8d4a738432764f2f4100929907bc220c9be39df0c9c267293642395ebcba3</citedby><cites>FETCH-LOGICAL-c319t-c5fd8d4a738432764f2f4100929907bc220c9be39df0c9c267293642395ebcba3</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/s10664-020-09900-0$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1007/s10664-020-09900-0$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>314,776,780,27901,27902,41464,42533,51294</link.rule.ids></links><search><creatorcontrib>Kermansaravi, Zeinab Azadeh</creatorcontrib><creatorcontrib>Rahman, Md Saidur</creatorcontrib><creatorcontrib>Khomh, Foutse</creatorcontrib><creatorcontrib>Jaafar, Fehmi</creatorcontrib><creatorcontrib>Guéhéneuc, Yann-Gaël</creatorcontrib><title>Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness</title><title>Empirical software engineering : an international journal</title><addtitle>Empir Software Eng</addtitle><description>During software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to promote software quality or as a possible cure for some design anti-patterns. Thus, design patterns and design anti-patterns are introduced, removed, and mutated from one another by developers. Many studies investigated the evolution of design patterns and design anti-patterns and their impact on software development. However, they investigated design patterns or design anti-patterns in isolation and did not consider their mutations and the impact of these mutations on software quality. Therefore, we report our study of bidirectional mutations between design patterns and design anti-patterns and the impacts of these mutations on software change- and fault-proneness. We analyzed snapshots of seven Java software systems with diverse sizes, evolution histories, and application domains. We built Markov models to capture the probability of occurrences of the different design patterns and design anti-patterns mutations. Results from our study show that (1) design patterns and design anti-patterns mutate into other design patterns and–or design anti-patterns. They also show that (2) some change types primarily trigger mutations of design patterns and design anti-patterns (renaming and changes to comments, declarations, and operators), and (3) some mutations of design anti-patterns and design patterns are more faulty in specific contexts. These results provide important insights into the evolution of design patterns and design anti-patterns and its impact on the change- and fault-proneness of software systems.</description><subject>Compilers</subject><subject>Computer Science</subject><subject>Design modifications</subject><subject>Evolution</subject><subject>Interpreters</subject><subject>Markov chains</subject><subject>Mutation</subject><subject>Programming Languages</subject><subject>Software development</subject><subject>Software Engineering/Programming and Operating Systems</subject><subject>Software quality</subject><issn>1382-3256</issn><issn>1573-7616</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2021</creationdate><recordtype>article</recordtype><sourceid>BENPR</sourceid><recordid>eNp9UE1PAyEQJUYTa_UPeGriGYWBheVoGj-aNPGiZ8Ky7Hablq3Amvjvpbs23rwMw5v3ZvIeQreU3FNC5EOkRAiOCRBMlCK5nqEZLSTDUlBxnntWAmZQiEt0FeOWEKIkL2aoXvkvF1PXmtT5dlG72LV-YXzq8MGk5MLxU5_wE7QfUub3Po7DtHFdWNiN8a3DI9KYYZfwIfTeeRfjNbpozC66m993jj6en96Xr3j99rJaPq6xZVQlbIumLmtuJCs5Ayl4Aw3P9hRkS7KyAMSqyjFVN7mxICQoJjgwVbjKVobN0d20N1_-HLItve2H4PNJDVyWVJQALLNgYtnQxxhcow-h25vwrSnRxzT1lKbOaeoxTU2yiE2imMnZZ_hb_Y_qByIgeEU</recordid><startdate>20210101</startdate><enddate>20210101</enddate><creator>Kermansaravi, Zeinab Azadeh</creator><creator>Rahman, Md Saidur</creator><creator>Khomh, Foutse</creator><creator>Jaafar, Fehmi</creator><creator>Guéhéneuc, Yann-Gaël</creator><general>Springer US</general><general>Springer Nature B.V</general><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>8FD</scope><scope>8FE</scope><scope>8FG</scope><scope>ABJCF</scope><scope>AFKRA</scope><scope>ARAPS</scope><scope>BENPR</scope><scope>BGLVJ</scope><scope>CCPQU</scope><scope>DWQXO</scope><scope>HCIFZ</scope><scope>JQ2</scope><scope>L6V</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope><scope>M7S</scope><scope>P5Z</scope><scope>P62</scope><scope>PQEST</scope><scope>PQQKQ</scope><scope>PQUKI</scope><scope>PRINS</scope><scope>PTHSS</scope><scope>S0W</scope></search><sort><creationdate>20210101</creationdate><title>Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness</title><author>Kermansaravi, Zeinab Azadeh ; Rahman, Md Saidur ; Khomh, Foutse ; Jaafar, Fehmi ; Guéhéneuc, Yann-Gaël</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c319t-c5fd8d4a738432764f2f4100929907bc220c9be39df0c9c267293642395ebcba3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2021</creationdate><topic>Compilers</topic><topic>Computer Science</topic><topic>Design modifications</topic><topic>Evolution</topic><topic>Interpreters</topic><topic>Markov chains</topic><topic>Mutation</topic><topic>Programming Languages</topic><topic>Software development</topic><topic>Software Engineering/Programming and Operating Systems</topic><topic>Software quality</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Kermansaravi, Zeinab Azadeh</creatorcontrib><creatorcontrib>Rahman, Md Saidur</creatorcontrib><creatorcontrib>Khomh, Foutse</creatorcontrib><creatorcontrib>Jaafar, Fehmi</creatorcontrib><creatorcontrib>Guéhéneuc, Yann-Gaël</creatorcontrib><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest SciTech Collection</collection><collection>ProQuest Technology Collection</collection><collection>Materials Science & Engineering Collection</collection><collection>ProQuest Central UK/Ireland</collection><collection>Advanced Technologies & Aerospace Collection</collection><collection>ProQuest Central</collection><collection>Technology Collection</collection><collection>ProQuest One Community College</collection><collection>ProQuest Central Korea</collection><collection>SciTech Premium Collection</collection><collection>ProQuest Computer Science Collection</collection><collection>ProQuest Engineering Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><collection>Engineering Database</collection><collection>Advanced Technologies & Aerospace Database</collection><collection>ProQuest Advanced Technologies & Aerospace Collection</collection><collection>ProQuest One Academic Eastern Edition (DO NOT USE)</collection><collection>ProQuest One Academic</collection><collection>ProQuest One Academic UKI Edition</collection><collection>ProQuest Central China</collection><collection>Engineering Collection</collection><collection>DELNET Engineering & Technology Collection</collection><jtitle>Empirical software engineering : an international journal</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Kermansaravi, Zeinab Azadeh</au><au>Rahman, Md Saidur</au><au>Khomh, Foutse</au><au>Jaafar, Fehmi</au><au>Guéhéneuc, Yann-Gaël</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness</atitle><jtitle>Empirical software engineering : an international journal</jtitle><stitle>Empir Software Eng</stitle><date>2021-01-01</date><risdate>2021</risdate><volume>26</volume><issue>1</issue><artnum>9</artnum><issn>1382-3256</issn><eissn>1573-7616</eissn><abstract>During software evolution, inexperienced developers may introduce design anti-patterns when they modify their software systems to fix bugs or to add new functionalities based on changes in requirements. Developers may also use design patterns to promote software quality or as a possible cure for some design anti-patterns. Thus, design patterns and design anti-patterns are introduced, removed, and mutated from one another by developers. Many studies investigated the evolution of design patterns and design anti-patterns and their impact on software development. However, they investigated design patterns or design anti-patterns in isolation and did not consider their mutations and the impact of these mutations on software quality. Therefore, we report our study of bidirectional mutations between design patterns and design anti-patterns and the impacts of these mutations on software change- and fault-proneness. We analyzed snapshots of seven Java software systems with diverse sizes, evolution histories, and application domains. We built Markov models to capture the probability of occurrences of the different design patterns and design anti-patterns mutations. Results from our study show that (1) design patterns and design anti-patterns mutate into other design patterns and–or design anti-patterns. They also show that (2) some change types primarily trigger mutations of design patterns and design anti-patterns (renaming and changes to comments, declarations, and operators), and (3) some mutations of design anti-patterns and design patterns are more faulty in specific contexts. These results provide important insights into the evolution of design patterns and design anti-patterns and its impact on the change- and fault-proneness of software systems.</abstract><cop>New York</cop><pub>Springer US</pub><doi>10.1007/s10664-020-09900-0</doi></addata></record> |
fulltext | fulltext |
identifier | ISSN: 1382-3256 |
ispartof | Empirical software engineering : an international journal, 2021-01, Vol.26 (1), Article 9 |
issn | 1382-3256 1573-7616 |
language | eng |
recordid | cdi_proquest_journals_2478168223 |
source | SpringerLink Journals - AutoHoldings |
subjects | Compilers Computer Science Design modifications Evolution Interpreters Markov chains Mutation Programming Languages Software development Software Engineering/Programming and Operating Systems Software quality |
title | Investigating design anti-pattern and design pattern mutations and their change- and fault-proneness |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-02-07T23%3A00%3A49IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Investigating%20design%20anti-pattern%20and%20design%20pattern%20mutations%20and%20their%20change-%20and%20fault-proneness&rft.jtitle=Empirical%20software%20engineering%20:%20an%20international%20journal&rft.au=Kermansaravi,%20Zeinab%20Azadeh&rft.date=2021-01-01&rft.volume=26&rft.issue=1&rft.artnum=9&rft.issn=1382-3256&rft.eissn=1573-7616&rft_id=info:doi/10.1007/s10664-020-09900-0&rft_dat=%3Cproquest_cross%3E2478168223%3C/proquest_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=2478168223&rft_id=info:pmid/&rfr_iscdi=true |