A recommendation system for repairing violations detected by static architecture conformance checking
Abstract
Summary: This paper describes a recommendation system that provides refactoring guidelines for maintainers when tackling architectural erosion. The paper formalizes 32 refactoring recommendations to repair violations raised by static architecture conformance checking approaches; it describes a tool—called ArchFix—that triggers the proposed recommendations; and it evaluates the application of this tool in two industrial‐strength systems. For the first system—a 21 KLOC open‐source strategic management system—our 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—a 728 KLOC customer care system used by a major telecommunication company—our 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 or major complexity. Copyright © 2013 John Wiley & Sons, Ltd.
Integrity signals
Registry
Cites
Statistics
Claims the paper makes
Cites
Refactoring: Improving the Design of Existing Code
Fowler, M. (2002) · Lecture notes in computer science · doi:10.1007/3-540-45672-4_31 · Cited by 5,615 · see citing works
Resnick, P., & Varian, H. R. (1997) · Communications of the ACM · doi:10.1145/245108.245121 · Cited by 3,772 · see citing works
The 4+1 View Model of architecture
Kruchten, P. B. (1995) · IEEE Software · doi:10.1109/52.469759 · Cited by 2,165 · see citing works
Foundations for the study of software architecture
Perry, D. E., & Wolf, A. L. (1992) · ACM SIGSOFT Software Engineering Notes · doi:10.1145/141874.141884 · Cited by 2,023 · see citing works
Cluster analysis for researchers
(1987) · Environmental Software · doi:10.1016/0266-9838(87)90010-4 · Cited by 1,850 · see citing works
Patterns of Enterprise Application Architecture
Fowler, M. (2002) · Cited by 1,809 · see citing works
Hybrid Web Recommender Systems
Burke, R. (2007) · Springer eBooks · doi:10.1007/978-3-540-72079-9_12 · Cited by 1,194 · see citing works
Cluster Analysis for Researchers
Milligan, G. W., & Romesburg, H. C. (1985) · Journal of Marketing Research · doi:10.2307/3151374 · Cited by 1,009 · see citing works
Mining version histories to guide software changes
Zimmermann, T., Zeller, A., Weißgerber, P., & Diehl, S. (2005) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2005.72 · Cited by 869 · see citing works
Mining metrics to predict component failures
Nagappan, N., Ball, T., & Zeller, A. (2006) · Proceedings/Proceedings - International Conference on Software Engineering · doi:10.1145/1134285.1134349 · Cited by 785 · see citing works
Parnas, D. L. (1994) · doi:10.5555/257734.257788 · Cited by 658 · see citing works
Murphy, G. C., Notkin, D. S., & Sullivan, K. (1995) · doi:10.1145/222124.222136 · Cited by 480 · see citing works
On the automatic modularization of software systems using the Bunch tool
Mitchell, B. S., & Mancoridis, S. (2006) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2006.31 · Cited by 479 · see citing works
Aldrich, J., Chambers, C., & Notkin, D. S. (2002) · Proceedings/Proceedings - International Conference on Software Engineering · doi:10.1145/581339.581365 · Cited by 449 · see citing works
Software reflexion models: bridging the gap between design and implementation
Murphy, G. C., Notkin, D. S., & Sullivan, K. (2001) · IEEE Transactions on Software Engineering · doi:10.1109/32.917525 · Cited by 400 · see citing works
Thummalapenta, S., & Xie, T. (2007) · doi:10.1145/1321631.1321663 · Cited by 394 · see citing works
Recommendation Systems for Software Engineering
Robillard, M. P., Walker, R. J., & Zimmermann, T. (2009) · IEEE Software · doi:10.1109/ms.2009.161 · Cited by 389 · see citing works
Using dependency models to manage complex software architecture
Sangal, N., Jordan, E., Sinha, V., & Jackson, D. N. (2005) · Conference on Object-Oriented Programming Systems, Languages, and Applications · doi:10.1145/1094811.1094824 · Cited by 371 · see citing works
Software Architecture Reconstruction: A Process-Oriented Taxonomy
Ducasse, S., & Pollet, D. (2009) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2009.19 · Cited by 360 · see citing works
Identification of Move Method Refactoring Opportunities
Tsantalis, N., & Chatzigeorgiou, A. (2009) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2009.1 · Cited by 342 · see citing works
Experiments with clustering as a software remodularization method
Anquetil, N., & Lethbridge, T. C. (2003) · Proceedings - Working Conference on Reverse Engineering · doi:10.1109/wcre.1999.806964 · Cited by 310 · see citing works
The structure and value of modularity in software design
Sullivan, K., Griswold, W. G., Cai, Y., & Hallen, B. (2001) · ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) · doi:10.1145/503209.503224 · Cited by 301 · see citing works
Design erosion: problems and causes
van Gurp, J., & Bosch, J. (2002) · Journal of Systems and Software · doi:10.1016/s0164-1212(01)00152-2 · Cited by 231 · see citing works
Controlling software architecture erosion: A survey
de Silva, L., & Balasubramaniam, D. (2012) · Journal of Systems and Software · doi:10.1016/j.jss.2011.07.036 · Cited by 184 · see citing works
Identification of extract method refactoring opportunities for the decomposition of methods
Tsantalis, N., & Chatzigeorgiou, A. (2011) · Journal of Systems and Software · doi:10.1016/j.jss.2011.05.016 · Cited by 171 · see citing works
Approximate Structural Context Matching: An Approach to Recommend Relevant Examples
Holmes, R., Walker, R. J., & Murphy, G. C. (2006) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2006.117 · Cited by 160 · see citing works
Recommending adaptive changes for framework evolution
Dagenais, B., & Robillard, M. P. (2008) · Proceedings/Proceedings - International Conference on Software Engineering · doi:10.1145/1368088.1368154 · Cited by 157 · see citing works
A Comparison of Static Architecture Compliance Checking Approaches
Knodel, J., & Popescu, D. (2007) · Working IEEE/IFIP Conference on Software Architecture (WICSA) · doi:10.1109/wicsa.2007.1 · Cited by 126 · see citing works
Search-based software maintenance
O’Keeffe, M., & Cinnéide, M. Ó. (2006) · doi:10.1109/csmr.2006.49 · Cited by 126 · see citing works
Automated Behavioral Testing of Refactoring Engines
Soares, G., Gheyi, R., & Massoni, T. L. (2012) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2012.19 · Cited by 117 · see citing works
Koschke, R., & Simon, D. (2004) · doi:10.1109/wcre.2003.1287235 · Cited by 110 · see citing works
Static Architecture-Conformance Checking: An Illustrative Overview
Passos, L. T., Terra, R., Valente, M. T., Diniz, R., & Mendonça, N. C. (2009) · IEEE Software · doi:10.1109/ms.2009.117 · Cited by 106 · see citing works
Self-citationStatic evaluation of software architectures
Knodel, J., Lindvall, M., Muthig, D., & Naab, M. (2006) · Euromicro Conference on Software Maintenance and Reengineering (CSMR) · doi:10.1109/csmr.2006.53 · Cited by 99 · see citing works
Combating architectural degeneration: a survey
Hochstein, L., & Lindvall, M. (2005) · Information and Software Technology · doi:10.1016/j.infsof.2004.11.005 · Cited by 94 · see citing works
Defining and continuous checking of structural program dependencies
Eichberg, M., Kloppenburg, S., Klose, K., & Mezini, M. (2008) · ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) · doi:10.1145/1368088.1368142 · Cited by 92 · see citing works
Reuse-Conducive Development Environments
Ye, Y., & Fischer, G. (2005) · Automated Software Engineering · doi:10.1007/s10515-005-6206-x · Cited by 89 · see citing works
Extending the reflexion method for consolidating software variants into product lines
Koschke, R., Frenzel, P., Breu, A. P. J., & Angstmann, K. (2009) · Software Quality Journal · doi:10.1007/s11219-009-9077-8 · Cited by 86 · see citing works
Using SCL to specify and check design intent in source code
Hou, D., & Hoover, H. J. (2006) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2006.60 · Cited by 84 · see citing works
From Public to Private to Absent: Refactoring Java Programs under Constrained Accessibility
Steimann, F., & Thies, A. (2009) · Lecture notes in computer science · doi:10.1007/978-3-642-03013-0_19 · Cited by 69 · see citing works
Co-evolving code and design with intensional views
Mens, K., Kellens, A., Pluquet, F., & Wuyts, R. (2005) · Computer Languages · doi:10.1016/j.cl.2005.09.002 · Cited by 64 · see citing works
A dependency constraint language to manage object‐oriented software architectures
Terra, R., & Valente, M. T. (2009) · Software Practice and Experience · doi:10.1002/spe.931 · Cited by 61 · see citing works
Self-citationSpeculative analysis of integrated development environment recommendations
Muşlu, K., Brun, Y., Holmes, R., Ernst, M. D., & Notkin, D. S. (2012) · Conference on Object-Oriented Programming Systems, Languages, and Applications · doi:10.1145/2384616.2384665 · Cited by 59 · see citing works
Recommending Refactorings to Reverse Software Architecture Erosion
Terra, R., Valente, M. T., Czarnecki, K., & Bigonha, R. S. (2012) · Euromicro Conference on Software Maintenance and Reengineering (CSMR) · doi:10.1109/csmr.2012.40 · Cited by 57 · see citing works
Self-citationModularization of a Large-Scale Business Application: A Case Study
Sarkar, S., Ramachandran, S., Kumar, G. S., Iyengar, M., Rangarajan, K., & Sivagnanam, S. (2009) · IEEE Software · doi:10.1109/ms.2009.42 · Cited by 57 · see citing works
Co-evolving Code and Design with Intensional Views - A Case Study.
Mens, K., Kellens, A., Pluquet, F., & Wuyts, R. (2005) · Cited by 51 · see citing works
Software architecture awareness in long-term software product evolution
Unphon, H., & Dittrich, Y. (2010) · Journal of Systems and Software · doi:10.1016/j.jss.2010.06.043 · Cited by 48 · see citing works
The loss of architectural knowledge during system evolution: An industrial case study
Feilkas, M., Ratiu, D., & Jürgens, E. (2009) · IEEE International Conference on Program Comprehension (ICPC) · doi:10.1109/icpc.2009.5090042 · Cited by 46 · see citing works
Extending the Reflexion Method for Consolidating Software Variants into Product Lines
Frenzel, P., Koschke, R., Breu, A. P. J., & Angstmann, K. (2007) · Working Conference on Reverse Engineering (WCRE) · doi:10.1109/wcre.2007.28 · Cited by 40 · see citing works
Legacy Software Restructuring: Analyzing a Concrete Case
Anquetil, N., & Laval, J. (2011) · Proceedings of the ... European Conference on Software Maintenance and Reengineering/Proceedings of the European Conference on Software Maintenance and Reengineering · doi:10.1109/csmr.2011.34 · Cited by 40 · see citing works
Bridging the Software Architecture Gap
Lindvall, M., & Muthig, D. (2008) · Computer · doi:10.1109/mc.2008.176 · Cited by 33 · see citing works
Constructive architecture compliance checking — an experiment on support by live feedback
Knodel, J., Muthig, D., & Rost, D. (2008) · Proceedings/Proceedings - Conference on Software Maintenance · doi:10.1109/icsm.2008.4658077 · Cited by 26 · see citing works
Architecture Compliance Checking - Experiences from Successful Technology Transfer to Industry
Knodel, J., Muthig, D., Haury, U., & Meier, G. (2008) · Euromicro Conference on Software Maintenance and Reengineering (CSMR) · doi:10.1109/csmr.2008.4493299 · Cited by 24 · see citing works
Towards a Dependency Constraint Language to Manage Software Architectures
Terra, R., & Valente, M. T. (2008) · Lecture notes in computer science · doi:10.1007/978-3-540-88030-1_19 · Cited by 18 · see citing works
Self-citationTowards Behavioral Reflexion Models
Ackermann, C., Lindvall, M., & Cleaveland, R. (2009) · Proceedings/Proceedings - International Symposium on Software Reliability Engineering · doi:10.1109/issre.2009.27 · Cited by 17 · see citing works
Structural conformance checking with design tests: An evaluation of usability and calability
Brunet, J., Serey, D., & de Figueiredo, J. C. A. (2011) · Proceedings/Proceedings - Conference on Software Maintenance · doi:10.1109/icsm.2011.6080781 · Cited by 17 · see citing works
Software modularization operators
Rama, G. M., & Patel, N. (2010) · Proceedings/Proceedings - Conference on Software Maintenance · doi:10.1109/icsm.2010.5609546 · Cited by 10 · see citing works
Invited Talk: Reengineering from a Practitioner's View -- A Personal Lesson's Learned Assessment
Borchers, J. (2011) · Proceedings of the ... European Conference on Software Maintenance and Reengineering/Proceedings of the European Conference on Software Maintenance and Reengineering · doi:10.1109/csmr.2011.63 · Cited by 8 · see citing works
Flagged first, then by citations
1 of the 58 references couldn’t be matched to a known paper.
Cited by
Sorted by citations
Interactive and guided architectural refactoring with search-based recommendation
Lin, Y., Peng, X., Cai, Y., Dig, D., Zheng, D., & Zhao, W. (2016) · ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) · doi:10.1145/2950290.2950317 · Cited by 90 · see citing works
Recommending automated extract method refactorings
Silva, D., Terra, R., & Valente, M. T. (2014) · International Conference on Program Comprehension · doi:10.1145/2597008.2597141 · Cited by 74 · see citing works
Self-citationJMove: A novel heuristic and tool to detect move method refactoring opportunities
Terra, R., Valente, M. T., Miranda, S., & Sales, V. (2017) · Journal of Systems and Software · doi:10.1016/j.jss.2017.11.073 · Cited by 69 · see citing works
Self-citationRecommending Move Method refactorings using dependency sets
Sales, V., Terra, R., Miranda, L. F., & Valente, M. T. (2013) · Working Conference on Reverse Engineering (WCRE) · doi:10.1109/wcre.2013.6671298 · Cited by 60 · see citing works
Self-citationWhy and how Java developers break APIs
Brito, A., Xavier, L., Hora, A., & Valente, M. T. (2018) · IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER) · doi:10.1109/saner.2018.8330214 · Cited by 59 · see citing works
Self-citationYou broke my code: understanding the motivations for breaking changes in APIs
Brito, A., Valente, M. T., Xavier, L., & Hora, A. (2019) · Empirical Software Engineering · doi:10.1007/s10664-019-09756-z · Cited by 52 · see citing works
Self-citationSoftware Architecture in Practice: Challenges and Opportunities
Wan, Z., Zhang, Y., Xia, X., Jiang, Y., & Lo, D. (2023) · Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering · doi:10.1145/3611643.3616367 · Cited by 30 · see citing works
“, [97]), and using various quality metrics (e.”
Mining architectural violations from version history
Maffort, C. A., Valente, M. T., Terra, R., Bigonha, M. A. S., Anquetil, N., & Hora, A. (2015) · Empirical Software Engineering · doi:10.1007/s10664-014-9348-2 · Cited by 21 · see citing works
Self-citationGlobal-Aware Recommendations for Repairing Violations in Exception Handling
Adachi, E., & Garcia, A. (2017) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2017.2716925 · Cited by 18 · see citing works
Heuristics for discovering architectural violations
Maffort, C. A., Valente, M. T., Bigonha, M. A. S., Anquetil, N., & Hora, A. (2013) · Working Conference on Reverse Engineering (WCRE) · doi:10.1109/wcre.2013.6671297 · Cited by 16 · see citing works
Self-citationReconciling software architecture and source code in support of software evolution
Haitzer, T., Navarro, E., & Zdun, U. (2016) · Journal of Systems and Software · doi:10.1016/j.jss.2016.10.012 · Cited by 14 · see citing works
Preserving architectural styles in the search based design of software product line architectures
Mariani, T., Colanzi, T. E., & Vergílio, S. R. (2016) · Journal of Systems and Software · doi:10.1016/j.jss.2016.01.039 · Cited by 11 · see citing works
Architecture Conformance Checking in Dynamically Typed Languages.
Miranda, S., Rodrigues, E., Valente, M. T., & Terra, R. (2016) · The Journal of Object Technology · doi:10.5381/jot.2016.15.3.a1 · Cited by 10 · see citing works
Self-citationArchitecture conformance analysis using model‐based testing: A case study approach
Uzun, B., & Teki̇nerdoğan, B. (2018) · Software Practice and Experience · doi:10.1002/spe.2667 · Cited by 10 · see citing works
Constantino, K. F., Belém, F. M., & Figueiredo, E. (2023) · Software Practice and Experience · doi:10.1002/spe.3194 · Cited by 10 · see citing works
Maintaining Architecture-Implementation Conformance to Support Architecture Centrality
Zheng, Y., Cu, C., & Taylor, R. N. (2018) · ACM Transactions on Software Engineering and Methodology · doi:10.1145/3229048 · Cited by 8 · see citing works
Warnings: Violation symptoms indicating architecture erosion
Li, R., Liang, P., & Avgeriou, P. (2023) · Information and Software Technology · doi:10.1016/j.infsof.2023.107319 · Cited by 8 · see citing works
DCL 2.0: modular and reusable specification of architectural constraints
Rocha, H., Durelli, R. S., Terra, R., Bessa, S. A. L., & Valente, M. T. (2017) · Journal of the Brazilian Computer Society · doi:10.1186/s13173-017-0061-z · Cited by 8 · see citing works
Self-citationIvers, J., Ghammam, A., Gaaloul, K., Özkaya, İ., Kessentini, M., & Aljedaani, W. (2024) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsme58944.2024.00023 · Cited by 4 · see citing works
Introducing an Architectural Conformance Process in Continuous Integration
Pinto, A. F., Guerra, E., Sabbas, F. S., & Terra, R. (2020) · Zenodo (CERN European Organization for Nuclear Research) · doi:10.3217/jucs-023-08-0769 · Cited by 3 · see citing works
Self-citationIdentifying Utility Functions Using Random Forests
Mendes, T., Valente, M. T., Hora, A., & Serebrenik, A. (2016) · IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER) · doi:10.1109/saner.2016.58 · Cited by 2 · see citing works
Self-citationde Lima, E. F., & Terra, R. (2020) · Brazilian Symposium on Software Engineering · doi:10.1145/3422392.3422505 · Cited by 2 · see citing works
Self-citationDetecting Architectural Violations Using Responsibility and Dependency Constraints of Components
Hayashi, S., Minami, F., & Saeki, M. (2018) · IEICE Transactions on Information and Systems · doi:10.1587/transinf.2017kbp0023 · Cited by 2 · see citing works
Sahlabadi, M., Muniyandi, R. C., Shukur, Z., Islam, M. R., SaberiKamarposhti, M., & Yim, K. (2024) · Heliyon · doi:10.1016/j.heliyon.2024.e26969 · Cited by 2 · see citing works
Araujo, E. A., Espíndola, Á. M., Garcia, V. C., & Terra, R. (2020) · Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS) · doi:10.1145/3425269.3425270 · Cited by 1 · see citing works
Self-citationDAEH: A Tool for Specifying and Monitoring the Exception Handling Policy
Abrantes, J., Coelho, R. D. S., & Bonifácio, R. (2015) · International Journal of Software Engineering and Knowledge Engineering · doi:10.1142/s0218194015400306 · Cited by 1 · see citing works
User Next Web Page Recommendation using Weight based Prediction
Verma, A., & Prajapat, B. (2016) · International Journal of Computer Applications · doi:10.5120/ijca2016909899 · Cited by 1 · see citing works
Herbold, S., Knieke, C., Rausch, A., & Schindler, C. (2025) · doi:10.1109/nse66660.2025.00008 · Cited by 1 · see citing works
Júnior, L. C., Belgamo, A., de Mendonça, V. R. L., & Vincenzi, A. M. R. (2020) · Brazilian Symposium on Software Quality (SBQS) · doi:10.1145/3439961.3439987 · Cited by 1 · see citing works
A Mixed-Method Approach to Recommend Corrections and Correct REST Antipatterns
Sabir, F., Guéhéneuc, Y., Palma, F., Moha, N., Rasool, G., & Akhtar, H. (2021) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2021.3117023 · Cited by 1 · see citing works
Archify: A Recommender System of Architectural Design DecisionsPreprint
Marinho, B. C., Bulcão-Neto, R. F., & Neto, V. V. G. (2021) · arXiv (Cornell University) · doi:10.48550/arxiv.2106.08115 · Cited by 1 · see citing works
GLOBAL-AWARE RECOMMENDATIONS FOR REPAIRING EXCEPTION HANDLING VIOLATIONS
BARBOSA, E. A. M. (2015) · doi:10.17771/pucrio.acad.26804
FluentArch: uma abordagem moderna para verificação de conformidade arquitetural em C#
Castro, A., & Terra, R. (2025) · Simpósio Brasileiro de Engenharia de Software (SBES) · doi:10.5753/sbes.2025.11078
Self-citationTan, F. G. (2026) · PeerJ Computer Science · doi:10.7717/peerj-cs.3939
- Authors
- Terra, R., Valente, M. T., Czarnecki, K., & Bigonha, R. S.
- Affiliations
- Universidade Federal de Minas Gerais (BR)
- Universidade Federal de Minas Gerais Brazil
- University of Waterloo (CA)
- Corresponding author
- Terra, Ricardo
- Venue
- Software: Practice and Experience
- Publisher
- Wiley
- Published
- 2013-09-25
- Volume
- 45
- Issue
- 3
- Pages
- 315-342
- ISSN
- 0038-0644 (ISSN-L)
- 1097-024X
- OpenAlex
- W1543881559
- Cited by
- 37
- References
- 58
- Citations by year
- 2026: 1 · 2025: 2 · 2024: 2 · 2023: 4 · 2021: 3 · 2020: 4 · 2019: 2 · 2018: 4 · 2017: 3 · 2016: 6 · 2015: 3 · 2014: 1 · 2013: 2
- FWCI
- 11.65
- Type
- journal article
- Language
- en
- Open access
- closed
- Locations
- Software Practice and Experience (publishedVersion)
- Topics
- Physical Sciences › Computer Science › Information Systems › Software Engineering Research
- Physical Sciences › Computer Science › Artificial Intelligence › Advanced Software Engineering Methodologies
- Physical Sciences › Computer Science › Software › Model-Driven Software Engineering Techniques
- Keywords
- refactoring recommendation, architectural erosion, software architecture, software maintainability
About these checks
Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.
Statistics and arithmetic are recomputed, not judged.
Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.
What counts as a claim ›How we measure confidence ›How we check this ›
Are you an author, or do you see a problem with this page? Request a review