{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,7,28]],"date-time":"2024-07-28T00:09:49Z","timestamp":1722125389432},"reference-count":55,"publisher":"Wiley","issue":"3","license":[{"start":{"date-parts":[[2013,9,25]],"date-time":"2013-09-25T00:00:00Z","timestamp":1380067200000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[2015,3]]},"abstract":"Summary<\/jats:title>This paper describes a recommendation system that provides refactoring guidelines for maintainers when tackling architectural erosion. The paper formalizes 32\u2009refactoring recommendations to repair violations raised by static architecture conformance checking approaches; it describes a tool\u2014called ArchFix\u2014that triggers the proposed recommendations; and it evaluates the application of this tool in two industrial\u2010strength systems. For the first system\u2014a 21 KLOC open\u2010source strategic management system\u2014our approach has indicated correct refactoring recommendations for 31 out of 41 violations detected as the result of an architecture conformance process. For the second system\u2014a 728 KLOC customer care system used by a major telecommunication company\u2014our approach has triggered correct recommendations for 624 out of 787 violations, as asserted by the system's architect. Moreover, the architects have scored 82% of these recommendations as having moderate<\/jats:italic> or major<\/jats:italic> complexity. Copyright \u00a9 2013 John Wiley & Sons, Ltd.<\/jats:p>","DOI":"10.1002\/spe.2228","type":"journal-article","created":{"date-parts":[[2013,10,11]],"date-time":"2013-10-11T22:01:55Z","timestamp":1381528915000},"page":"315-342","source":"Crossref","is-referenced-by-count":18,"title":["A recommendation system for repairing violations detected by static architecture conformance checking"],"prefix":"10.1002","volume":"45","author":[{"given":"Ricardo","family":"Terra","sequence":"first","affiliation":[{"name":"Universidade Federal de Minas Gerais Brazil"},{"name":"University of Waterloo Canada"}]},{"given":"Marco Tulio","family":"Valente","sequence":"additional","affiliation":[{"name":"Universidade Federal de Minas Gerais Brazil"}]},{"given":"Krzysztof","family":"Czarnecki","sequence":"additional","affiliation":[{"name":"University of Waterloo Canada"}]},{"given":"Roberto S.","family":"Bigonha","sequence":"additional","affiliation":[{"name":"Universidade Federal de Minas Gerais Brazil"}]}],"member":"311","published-online":{"date-parts":[[2013,9,25]]},"reference":[{"key":"e_1_2_13_2_1","unstructured":"ParnasDL.Software aging.16th International Conference on Software Engineering (ICSE) 1994;279\u2013287."},{"key":"e_1_2_13_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/141874.141884"},{"key":"e_1_2_13_4_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2011.07.036"},{"key":"e_1_2_13_5_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0164-1212(01)00152-2"},{"key":"e_1_2_13_6_1","doi-asserted-by":"crossref","unstructured":"KnodelJ MuthigD NaabM LindvallM.Static evaluation of software architectures.10th European Conference on Software Maintenance and Reengineering (CSMR) 2006;279\u2013294.","DOI":"10.1109\/CSMR.2006.53"},{"key":"e_1_2_13_7_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2008.176"},{"key":"e_1_2_13_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2009.42"},{"key":"e_1_2_13_9_1","doi-asserted-by":"crossref","unstructured":"KnodelJ PopescuD.A comparison of static architecture compliance checking approaches.6th Working IEEE\/IFIP Conference on Software Architecture (WICSA) 2007;12.","DOI":"10.1109\/WICSA.2007.1"},{"key":"e_1_2_13_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2009.117"},{"key":"e_1_2_13_11_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2009.19"},{"key":"e_1_2_13_12_1","doi-asserted-by":"crossref","unstructured":"MurphyG NotkinD SullivanK.Software reflexion models: bridging the gap between source and high\u2010level models.3rd Symposium on Foundations of Software Engineering (FSE) 1995;18\u201328.","DOI":"10.1145\/222124.222136"},{"key":"e_1_2_13_13_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.cl.2005.09.002"},{"key":"e_1_2_13_14_1","doi-asserted-by":"crossref","unstructured":"ao BrunetJ GuerreiroD FigueiredoJ.Structural conformance checking with design tests: an evaluation of usability and scalability.27th International Conference on Software Maintenance (ICSM) 2011;143\u2013152.","DOI":"10.1109\/ICSM.2011.6080781"},{"key":"e_1_2_13_15_1","doi-asserted-by":"crossref","unstructured":"AldrichJ ChambersC NotkinD.ArchJava: connecting software architecture to implementation.22nd International Conference on Software Engineering (ICSE) 2002;187\u2013197.","DOI":"10.1145\/581339.581365"},{"key":"e_1_2_13_16_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2006.60"},{"issue":"12","key":"e_1_2_13_17_1","first-page":"1073","article-title":"A dependency constraint language to manage object\u2010oriented software architectures","volume":"32","author":"Terra R","year":"2009","journal-title":"Software: Practice and Experience"},{"key":"e_1_2_13_18_1","doi-asserted-by":"crossref","unstructured":"EichbergM KloppenburgS KloseK MeziniM.Defining and continuous checking of structural program dependencies.30th International Conference on Software Engineering (ICSE) 2008;391\u2013400.","DOI":"10.1145\/1368088.1368142"},{"key":"e_1_2_13_19_1","doi-asserted-by":"crossref","unstructured":"KnodelJ MuthigD HauryU MeierG.Architecture compliance checking \u2010 experiences from successful technology transfer to industry.12th European Conference on Software Maintenance and Reengineering (CSMR) 2008;43\u201352.","DOI":"10.1109\/CSMR.2008.4493299"},{"key":"e_1_2_13_20_1","doi-asserted-by":"crossref","unstructured":"SteimannF ThiesA.From public to private to absent: refactoring Java programs under constrained accessibility.23rd European Conference on Object\u2010Oriented Programming (ECOOP) 2009;419\u2013443.","DOI":"10.1007\/978-3-642-03013-0_19"},{"key":"e_1_2_13_21_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2012.19"},{"key":"e_1_2_13_22_1","doi-asserted-by":"crossref","unstructured":"TerraR ValenteMT CzarneckiK BigonhaR.Recommending refactorings to reverse software architecture erosion.16th European Conference on Software Maintenance and Reengineering (CSMR) early research achievements track 2012;335\u2013340.","DOI":"10.1109\/CSMR.2012.40"},{"key":"e_1_2_13_23_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2009.161"},{"key":"e_1_2_13_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/245108.245121"},{"key":"e_1_2_13_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-72079-9_12"},{"key":"e_1_2_13_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2006.117"},{"key":"e_1_2_13_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2005.72"},{"key":"e_1_2_13_28_1","doi-asserted-by":"crossref","unstructured":"DagenaisB RobillardMP.Recommending adaptive changes for framework evolution.30th International Conference on Software Engineering (ICSE) 2008;481\u2013490.","DOI":"10.1145\/1368088.1368154"},{"key":"e_1_2_13_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.469759"},{"key":"e_1_2_13_30_1","volume-title":"Refactoring: Improving the Design of Existing Code","author":"Fowler M","year":"1999"},{"key":"e_1_2_13_31_1","volume-title":"Cluster Analysis for Researchers","author":"Romesburg H","year":"2004"},{"key":"e_1_2_13_32_1","doi-asserted-by":"crossref","unstructured":"TerraR ValenteMT.Towards a dependency constraint language to manage software architectures.2nd European Conference on Software Architecture (ECSA) 2008;256\u2013263.","DOI":"10.1007\/978-3-540-88030-1_19"},{"key":"e_1_2_13_33_1","doi-asserted-by":"crossref","unstructured":"KnodelJ MuthigD RostD.Constructive architecture compliance checking \u2013 an experiment on support by live feedback.24th International Conference on Software Maintenance (ICSM) 2008;287\u2013296.","DOI":"10.1109\/ICSM.2008.4658077"},{"key":"e_1_2_13_34_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2010.06.043"},{"key":"e_1_2_13_35_1","doi-asserted-by":"crossref","unstructured":"FeilkasM RatiuD JurgensE.The loss of architectural knowledge during system evolution: an industrial case study.17th IEEE International Conference on Program Comprehension (ICPC) 2009;188\u2013197.","DOI":"10.1109\/ICPC.2009.5090042"},{"key":"e_1_2_13_36_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.917525"},{"key":"e_1_2_13_37_1","unstructured":"KoschkeR SimonD.Hierarchical reflexion models.10th Working Conference on Reverse Engineering (WCRE) 2003;36\u201347."},{"key":"e_1_2_13_38_1","doi-asserted-by":"crossref","unstructured":"AckermannC LindvallM CleavelandR.Towards behavioral reflexion models.20th International Symposium on Software Reliability Engineering (ISSRE) 2009;175\u2013184.","DOI":"10.1109\/ISSRE.2009.27"},{"key":"e_1_2_13_39_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11219-009-9077-8"},{"key":"e_1_2_13_40_1","doi-asserted-by":"crossref","unstructured":"FrenzelP KoschkeR BreuAPJ AngstmannK.Extending the reflexion method for consolidating software variants into product lines.14th Working Conference on Reverse Engineering (WCRE) 2007;160\u2013169.","DOI":"10.1109\/WCRE.2007.28"},{"key":"e_1_2_13_41_1","doi-asserted-by":"crossref","unstructured":"SullivanKJ GriswoldWG CaiY HallenB.The structure and value of modularity in software design.9th International Symposium on Foundations of Software Engineering (FSE) 2001;99\u2013108.","DOI":"10.1145\/503209.503224"},{"key":"e_1_2_13_42_1","doi-asserted-by":"crossref","unstructured":"SangalN JordanE SinhaV JacksonD.Using dependency models to manage complex software architecture.20th Conference on Object\u2010Oriented Programming Systems Languages and Applications (OOPSLA) 2005;167\u2013176.","DOI":"10.1145\/1094811.1094824"},{"key":"e_1_2_13_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2009.1"},{"key":"e_1_2_13_44_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2011.05.016"},{"key":"e_1_2_13_45_1","doi-asserted-by":"crossref","unstructured":"O'KeeffeMK Cinn\u00e9ideM.Search\u2010based software maintenance.10th European Conference on Software Maintenance and Reengineering (CSMR) 2006;249\u2013260.","DOI":"10.1109\/CSMR.2006.49"},{"key":"e_1_2_13_46_1","doi-asserted-by":"crossref","unstructured":"BorchersJ.Invited talk: reengineering from a practitioner's view \u2013 a personal lesson's learned assessment.15th European Conference on Software Maintenance and Reengineering (CSMR) 2011;1\u20132.","DOI":"10.1109\/CSMR.2011.63"},{"key":"e_1_2_13_47_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2004.11.005"},{"key":"e_1_2_13_48_1","doi-asserted-by":"crossref","unstructured":"RamaGM PatelN.Software modularization operators.26th International Conference on Software Maintenance (ICSM) 2010;1\u201310.","DOI":"10.1109\/ICSM.2010.5609546"},{"key":"e_1_2_13_49_1","unstructured":"AnquetilN LethbridgeT.Experiments with clustering as a software remodularization method.6th Working Conference on Reverse Engineering (WCRE) 1999;235\u2013255."},{"key":"e_1_2_13_50_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2006.31"},{"key":"e_1_2_13_51_1","doi-asserted-by":"crossref","unstructured":"AnquetilN LavalJ.Legacy software restructuring: analyzing a concrete case.15th European Conference on Software Maintenance and Reengineering (CSMR) 2011;279\u2013286.","DOI":"10.1109\/CSMR.2011.34"},{"key":"e_1_2_13_52_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10515-005-6206-x"},{"key":"e_1_2_13_53_1","doi-asserted-by":"crossref","unstructured":"ThummalapentaS XieT.PARSEWeb: a programmer assistant for reusing open source code on the web.22nd International Conference on Automated Software Engineering (ASE) 2007;204\u2013213.","DOI":"10.1145\/1321631.1321663"},{"key":"e_1_2_13_54_1","doi-asserted-by":"crossref","unstructured":"NagappanN BallT ZellerA.Mining metrics to predict component failures.28th International Conference on Software Engineering (ICSE) 2006;452\u2013461.","DOI":"10.1145\/1134285.1134349"},{"key":"e_1_2_13_55_1","doi-asserted-by":"crossref","unstructured":"Mu\u015fluK BrunY HolmesR ErnstMD NotkinD.Speculative analysis of integrated development environment recommendations.27th Conference on Object\u2010Oriented Programming Systems Languages and Applications (OOPSLA) 2012;1\u201315.","DOI":"10.1145\/2384616.2384665"},{"key":"e_1_2_13_56_1","volume-title":"Patterns of Enterprise Application Architecture","author":"Fowler M","year":"2002"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.2228","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.2228","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,5]],"date-time":"2023-10-05T12:06:53Z","timestamp":1696507613000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.2228"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2013,9,25]]},"references-count":55,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2015,3]]}},"alternative-id":["10.1002\/spe.2228"],"URL":"https:\/\/doi.org\/10.1002\/spe.2228","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2013,9,25]]}}}