Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article

A recommendation system for repairing violations detected by static architecture conformance checking

Published: 01 March 2015 Publication History

Abstract

This paper describes a recommendation system that provides refactoring guidelines for maintainers when tackling architectural erosion. The paper formalizes 32refactoring 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.

References

[1]
Parnas DL. Software aging. 16th International Conference on Software Engineering ICSE, 1994; pp.279-287.
[2]
Perry DE, Wolf AL. Foundations for the study of software architecture. Software Engineering Notes 1992; Volume 17 Issue 4: pp.40-52.
[3]
deSilva L, Balasubramaniam D. Controlling software architecture erosion: a survey. Journal of Systems and Software 2012; Volume 85 Issue 1: pp.132-151.
[4]
<familyNamePrefix>van</familyNamePrefix>Gurp J, Bosch J. Design erosion: problems and causes. Journal of Systems and Software 2002; Volume 61: pp.105-119.
[5]
Knodel J, Muthig D, Naab M, Lindvall M. Static evaluation of software architectures. 10th European Conference on Software Maintenance and Reengineering CSMR, 2006; pp.279-294.
[6]
Lindvall M, Muthig D. Bridging the software architecture gap. Computer 2008; Volume 41 Issue 6: pp.98-101.
[7]
Sarkar S, Ramachandran S, Kumar G, Iyengar MK, Rangarajan K, Sivagnanam S. Modularization of a large-scale business application: a case study. IEEE Software 2009; Volume 26: pp.28-35.
[8]
Knodel J, Popescu D. A comparison of static architecture compliance checking approaches. 6th Working IEEE/IFIP Conference on Software Architecture WICSA, 2007; pp.12.
[9]
Passos L, Terra R, Diniz R, Valente MT, Mendonça N. Static architecture-conformance checking: an illustrative overview. IEEE Software 2010; Volume 27 Issue 5: pp.82-89.
[10]
Ducasse S, Pollet D. Software architecture reconstruction: a process-oriented taxonomy. IEEE Transactions on Software Engineering 2009; Volume 35 Issue 4: pp.573-591.
[11]
Murphy G, Notkin D, Sullivan K. Software reflexion models: bridging the gap between source and high-level models. 3rd Symposium on Foundations of Software Engineering FSE, 1995; pp.18-28.
[12]
Mens K, Kellens A, Pluquet F, Wuyts R. Co-evolving code and design with intensional views: a case study. Computer Languages, Systems & Structures 2006; Volume 32 Issue 2-3: pp.140-156.
[13]
ao Brunet J, Guerreiro D, Figueiredo J. Structural conformance checking with design tests: an evaluation of usability and scalability. 27th International Conference on Software Maintenance ICSM, 2011; pp.143-152.
[14]
Aldrich J, Chambers C, Notkin D. ArchJava: connecting software architecture to implementation. 22nd International Conference on Software Engineering ICSE, 2002; pp.187-197.
[15]
Hou D, Hoover H. Using SCL to specify and check design intent in source code. IEEE Transactions on Software Engineering 2006; Volume 32 Issue 6: pp.404-423.
[16]
Terra R, Valente MT. A dependency constraint language to manage object-oriented software architectures. Software: Practice and Experience 2009; Volume 32 Issue 12: pp.1073-1094.
[17]
Eichberg M, Kloppenburg S, Klose K, Mezini M. Defining and continuous checking of structural program dependencies. 30th International Conference on Software Engineering ICSE, 2008; pp.391-400.
[18]
Knodel J, Muthig D, Haury U, Meier G. Architecture compliance checking - experiences from successful technology transfer to industry. 12th European Conference on Software Maintenance and Reengineering CSMR, 2008; pp.43-52.
[19]
Steimann F, Thies A. From public to private to absent: refactoring Java programs under constrained accessibility. 23rd European Conference on Object-Oriented Programming ECOOP, 2009; pp.419-443.
[20]
Soares G, Gheyi R, Massoni T. Automated behavioral testing of refactoring engines. IEEE Transactions on Software Engineering 2013; Volume 39 Issue 2: pp.147-162.
[21]
Terra R, Valente MT, Czarnecki K, Bigonha R. Recommending refactorings to reverse software architecture erosion. 16th European Conference on Software Maintenance and Reengineering CSMR, early research achievements track, 2012; pp.335-340.
[22]
Robillard M, Walker R, Zimmermann T. Recommendation systems for software engineering. IEEE Software 2010; Volume 27 Issue 4: pp.80-86.
[23]
Resnick P, Varian HR. Recommender systems. Communications of the ACM 1997; Volume 40 Issue 3: pp.56-58.
[24]
Burke R. Hybrid web recommender systems. In The adaptive web, Vol.Volume 4321, <bookSeriesTitle>Lecture Notes in Computer Science</bookSeriesTitle>. Springer Berlin Heidelberg, 2007; pp.377-408.
[25]
Holmes R, Walker RJ, Murphy GC. Approximate structural context matching: an approach to recommend relevant examples. IEEE Transactions on Software Engineering 2006; Volume 32 Issue 12: pp.952-970.
[26]
Zimmermann T, Zeller A, Weissgerber P, Diehl S. Mining version histories to guide software changes. IEEE Transactions on Software Engineering 2005; Volume 31 Issue 6: pp.429-445.
[27]
Dagenais B, Robillard MP. Recommending adaptive changes for framework evolution. 30th International Conference on Software Engineering ICSE, 2008; pp.481-490.
[28]
Kruchten P. The 4+1 view model of architecture. IEEE Software 1995; Volume 12 Issue 6: pp.42-50.
[29]
Fowler M. Refactoring: Improving the Design of Existing Code. Addison-Wesley: Boston, 1999.
[30]
Romesburg H. Cluster Analysis for Researchers. Lulu Press: North Carolina, 2004.
[31]
Terra R, Valente MT. Towards a dependency constraint language to manage software architectures. 2nd European Conference on Software Architecture ECSA, 2008; pp.256-263.
[32]
Knodel J, Muthig D, Rost D. Constructive architecture compliance checking - an experiment on support by live feedback. 24th International Conference on Software Maintenance ICSM, 2008; pp.287-296.
[33]
Unphon H, Dittrich Y. Software architecture awareness in long-term software product evolution. Journal of Systems and Software 2010; Volume 83 Issue 11: pp.2211-2226.
[34]
Feilkas M, Ratiu D, Jurgens E. The loss of architectural knowledge during system evolution: an industrial case study. 17th IEEE International Conference on Program Comprehension ICPC, 2009; pp.188-197.
[35]
Murphy G, Notkin D, Sullivan K. Software reflexion models. IEEE Transactions on Software Engineering 2001; Volume 27 Issue 4: pp.364-380.
[36]
Koschke R, Simon D. Hierarchical reflexion models. 10th Working Conference on Reverse Engineering WCRE, 2003; pp.36-47.
[37]
Ackermann C, Lindvall M, Cleaveland R. Towards behavioral reflexion models. 20th International Symposium on Software Reliability Engineering ISSRE, 2009; pp.175-184.
[38]
Koschke R, Frenzel P, Breu APJ, Angstmann K. Extending the reflexion method for consolidating software variants into product lines. Software Quality Journal 2009; Volume 17: pp.331-366.
[39]
Frenzel P, Koschke R, Breu APJ, Angstmann K. Extending the reflexion method for consolidating software variants into product lines. 14th Working Conference on Reverse Engineering WCRE, 2007; pp.160-169.
[40]
Sullivan KJ, Griswold WG, Cai Y, Hallen B. The structure and value of modularity in software design. 9th International Symposium on Foundations of Software Engineering FSE, 2001; pp.99-108.
[41]
Sangal N, Jordan E, Sinha V, Jackson D. Using dependency models to manage complex software architecture. 20th Conference on Object-Oriented Programming, Systems, Languages, and Applications OOPSLA, 2005; pp.167-176.
[42]
Tsantalis N, Chatzigeorgiou A. Identification of move method refactoring opportunities. IEEE Transactions on Software Engineering 2009; Volume 99: pp.347-367.
[43]
Tsantalis N, Chatzigeorgiou A. Identification of extract method refactoring opportunities for the decomposition of methods. Journal of Systems and Software 2011; Volume 84 Issue 10: pp.1757-1782.
[44]
O'Keeffe MK, Cinnéide M. Search-based software maintenance. 10th European Conference on Software Maintenance and Reengineering CSMR, 2006; pp.249-260.
[45]
Borchers J. Invited talk: reengineering from a practitioner's view - a personal lesson's learned assessment. 15th European Conference on Software Maintenance and Reengineering CSMR, 2011; pp.1-2.
[46]
Hochstein L, Lindvall M. Combating architectural degeneration: a survey. Information and Software Technology 2005; Volume 47 Issue 10: pp.643-656.
[47]
Rama GM, Patel N. Software modularization operators. 26th International Conference on Software Maintenance ICSM, 2010; pp.1-10.
[48]
Anquetil N, Lethbridge T. Experiments with clustering as a software remodularization method. 6th Working Conference on Reverse Engineering WCRE, 1999; pp.235-255.
[49]
Mitchell BS, Mancoridis S. On the automatic modularization of software systems using the Bunch tool. IEEE Transactions on Software Engineering 2006; Volume 32 Issue 3: pp.193-208.
[50]
Anquetil N, Laval J. Legacy software restructuring: analyzing a concrete case. 15th European Conference on Software Maintenance and Reengineering CSMR, 2011; pp.279-286.
[51]
Ye Y, Fischer G. Reuse-conducive development environments. Automated Software Engineering 2005; Volume 12: pp.199-235.
[52]
Thummalapenta S, Xie T. PARSEWeb: a programmer assistant for reusing open source code on the web. 22nd International Conference on Automated Software Engineering ASE, 2007; pp.204-213.
[53]
Nagappan N, Ball T, Zeller A. Mining metrics to predict component failures. 28th International Conference on Software Engineering ICSE, 2006; pp.452-461.
[54]
Muşlu K, Brun Y, Holmes R, Ernst MD, Notkin D. Speculative analysis of integrated development environment recommendations. 27th Conference on Object-Oriented Programming, Systems, Languages, and Applications OOPSLA, 2012; pp.1-15.
[55]
Fowler M. Patterns of Enterprise Application Architecture. Addison-Wesley: Boston, 2002.

Cited By

View all
  • (2023)Software Architecture in Practice: Challenges and OpportunitiesProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616367(1457-1469)Online publication date: 30-Nov-2023
  • (2020)WarningsFIX: a Recommendation System for Prioritizing Warnings Generated by Automated Static AnalyzersProceedings of the XIX Brazilian Symposium on Software Quality10.1145/3439961.3439987(1-10)Online publication date: 1-Dec-2020
  • (2020)Applying a Multi-platform Architectural Conformance Solution in a Real-world Microservice-based SystemProceedings of the 14th Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3425269.3425270(41-50)Online publication date: 19-Oct-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Software—Practice & Experience
Software—Practice & Experience  Volume 45, Issue 3
March 2015
144 pages

Publisher

John Wiley & Sons, Inc.

United States

Publication History

Published: 01 March 2015

Author Tags

  1. recommendation system
  2. refactoring
  3. software architecture

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 06 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Software Architecture in Practice: Challenges and OpportunitiesProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616367(1457-1469)Online publication date: 30-Nov-2023
  • (2020)WarningsFIX: a Recommendation System for Prioritizing Warnings Generated by Automated Static AnalyzersProceedings of the XIX Brazilian Symposium on Software Quality10.1145/3439961.3439987(1-10)Online publication date: 1-Dec-2020
  • (2020)Applying a Multi-platform Architectural Conformance Solution in a Real-world Microservice-based SystemProceedings of the 14th Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3425269.3425270(41-50)Online publication date: 19-Oct-2020
  • (2020)ArchPythonProceedings of the XXXIV Brazilian Symposium on Software Engineering10.1145/3422392.3422505(772-777)Online publication date: 21-Oct-2020
  • (2018)Maintaining Architecture-Implementation Conformance to Support Architecture CentralityACM Transactions on Software Engineering and Methodology10.1145/322904827:2(1-52)Online publication date: 27-Jun-2018
  • (2016)Interactive and guided architectural refactoring with search-based recommendationProceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering10.1145/2950290.2950317(535-546)Online publication date: 1-Nov-2016
  • (2016)Preserving architectural styles in the search based design of software product line architecturesJournal of Systems and Software10.1016/j.jss.2016.01.039115:C(157-173)Online publication date: 1-May-2016
  • (2016)Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software EngineeringundefinedOnline publication date: 1-Nov-2016

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media