Discovery of architectural layers and measurement of layering violations in source code

The layers architectural pattern has been widely adopted by the developer community in order to build large software systems. In reality, as the system evolves over time, rarely does the system remain conformed to the intended layers pattern, causing a significant degradation of the system maintainability. As a part of re-factoring such a system, practitioners often undertake a mostly manual exercise to discover the intended layers and organize the modules into these layers. In this paper, we present a method for semi-automatically detecting layers in the system and propose a quantitative measurement to compute the amount of non-conformance of the system from the set of layered design principles. We have applied the layer detection method and the non-conformance measurement on a set of open source and proprietary enterprise applications.

[1]  Jan Bosch,et al.  Scenario-based software architecture reengineering , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[2]  Jan Bosch,et al.  Architecture level prediction of software maintenance , 1999, Proceedings of the Third European Conference on Software Maintenance and Reengineering (Cat. No. PR00090).

[3]  David Garlan SIGSOFT'96 : proceedings of the Fourth ACM SIGSOFT Symposium on the Foundations of Software Engineering, San Fransisco, CA, 16-18 October 1996 , 1996 .

[4]  Dewayne E. Perry,et al.  A Software Architecture for Cross-Layer Wireless Network Adaptations , 2008, Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008).

[5]  Leonard J. Bass,et al.  Scenario-Based Analysis of Software Architecture , 1996, IEEE Softw..

[6]  Richard C. Holt,et al.  MoJo: a distance metric for software clusterings , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[7]  James O. Coplien,et al.  Pattern languages of program design , 1995 .

[8]  Ian H. Witten,et al.  Data mining - practical machine learning tools and techniques, Second Edition , 2005, The Morgan Kaufmann series in data management systems.

[9]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[10]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[11]  Rick Kazman,et al.  The architecture tradeoff analysis method , 1998, Proceedings. Fourth IEEE International Conference on Engineering of Complex Computer Systems (Cat. No.98EX193).

[12]  Philippe Krutchen,et al.  Architectural blueprints--the '4+1' view model of software architecture , 1995 .

[13]  H. Zimmermann,et al.  OSI Reference Model - The ISO Model of Architecture for Open Systems Interconnection , 1980, IEEE Transactions on Communications.

[14]  J. MacQueen Some methods for classification and analysis of multivariate observations , 1967 .

[15]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[16]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[17]  Michel Dagenais,et al.  An analysis framework for understanding layered software architectures , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[18]  David Notkin,et al.  Software Reflexion Models: Bridging the Gap between Design and Implementation , 2001, IEEE Trans. Software Eng..

[19]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[20]  Anil K. Jain,et al.  Data clustering: a review , 1999, CSUR.

[21]  Richard N. Taylor,et al.  A comprehensive approach for the development of modular software architecture description languages , 2005, TSEM.

[22]  Bradley R. Schmerl,et al.  AcmeStudio: supporting style-centered architecture development , 2004, Proceedings. 26th International Conference on Software Engineering.

[23]  Juan Antonio de la Puente,et al.  A Software Architecture Evaluation Model , 1998, ESPRIT ARES Workshop.

[24]  Vineet Sinha,et al.  Using dependency models to manage complex software architecture , 2005, OOPSLA '05.

[25]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[26]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[27]  Susan Elliott Sim,et al.  On using a benchmark to evaluate C++ extractors , 2002, Proceedings 10th International Workshop on Program Comprehension.

[28]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[29]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[30]  Nicolas Anquetil,et al.  Recovering software architecture from the names of source files , 1999, J. Softw. Maintenance Res. Pract..

[31]  Darren C. Atkinson Accurate call graph extraction of programs with function pointers using type signatures , 2004, 11th Asia-Pacific Software Engineering Conference.

[32]  Ian H. Witten,et al.  Data mining: practical machine learning tools and techniques, 3rd Edition , 1999 .

[33]  Philippe Kruchten,et al.  The Rational Unified Process: An Introduction , 1998 .

[34]  Oliver Sims,et al.  Business Component Factory : A Comprehensive Overview of Component-Based Development for the Enterprise , 1999 .

[35]  David Notkin,et al.  An empirical study of static call graph extractors , 1998, TSEM.

[36]  Nicolas Anquetil,et al.  Experiments with clustering as a software remodularization method , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[37]  Rainer Koschke,et al.  Equipping the reflexion method with automated clustering , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[38]  Paul Anderson,et al.  The CodeSurfer software understanding platform , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[39]  Richard C. Holt,et al.  Completeness of a fact extractor , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[40]  Kishor S. Trivedi,et al.  Evaluating performance attributes of layered software architecture , 2005, CBSE'05.

[41]  Periklis Andritsos,et al.  Information-theoretic software clustering , 2005, IEEE Transactions on Software Engineering.

[42]  Martin Fowler,et al.  Patterns of Enterprise Application Architecture , 2002 .

[43]  Paul Anderson,et al.  Design and Implementation of a Fine-Grained Software Inspection Tool , 2003, IEEE Trans. Software Eng..

[44]  Eila Niemelä,et al.  A Survey on Software Architecture Analysis Methods , 2002, IEEE Trans. Software Eng..

[45]  Walter F. Tichy,et al.  Proceedings 25th International Conference on Software Engineering , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[46]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[47]  Robert E. Tarjan,et al.  Depth-First Search and Linear Graph Algorithms , 1972, SIAM J. Comput..

[48]  Thomas M. Pigoski Practical Software Maintenance: Best Practices for Managing Your Software Investment , 1996 .

[49]  E. Gat On Three-Layer Architectures , 1997 .

[50]  Santonu Sarkar,et al.  A Method for Detecting and Measuring Architectural Layering Violations in Source Code , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

[51]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[52]  Jeff Magee,et al.  Dynamic structure in software architectures , 1996, SIGSOFT '96.

[53]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture , 1996 .

[54]  Philippe Kruchten,et al.  Architecture blueprints—the “4+1” view model of software architecture , 1995, TRI-Ada '95.

[55]  Robert W. Schwanke,et al.  Using Neural Networks to Modularize Software , 1994, Machine Learning.

[56]  Colleen Roe,et al.  Server-Side Design Principles for Scalable Internet Systems , 2002, IEEE Softw..

[57]  Paul Clements,et al.  Software Architecture in Practice: Addison-Wesley , 1998 .

[58]  Evans,et al.  Domain-driven design , 2003 .

[59]  Flávio Oquendo,et al.  Support for evolving software architectures in the ArchWare ADL , 2004, Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).

[60]  Michael I. Jordan,et al.  Latent Dirichlet Allocation , 2001, J. Mach. Learn. Res..

[61]  Emden R. Gansner,et al.  A C++ data model supporting reachability analysis and dead code detection , 1997, ESEC '97/FSE-5.

[62]  Santonu Sarkar,et al.  Mining business topics in source code using latent dirichlet allocation , 2008, ISEC '08.

[63]  Song C. Choi,et al.  Extracting and restructuring the design of large systems , 1990, IEEE Software.

[64]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[65]  Thomas W. Reps,et al.  Precise interprocedural chopping , 1995, SIGSOFT FSE.

[66]  C LuckhamDavid,et al.  Specification and Analysis of System Architecture Using Rapide , 1995 .

[67]  Yuanyuan Song,et al.  Automatic modularity conformance checking , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[68]  Wolfgang Keller,et al.  Three Layer Architecture , 1997 .

[69]  Maeve Paris Reuse-based layering: a strategy for architectural frameworks for learning technologies , 2004, IEEE International Conference on Advanced Learning Technologies, 2004. Proceedings..

[70]  Douglas C. Schmidt,et al.  Patterns for concurrent and networked objects , 2000 .

[71]  P. Krutchen,et al.  The Rational Unified Process: An Introduction , 2000 .

[72]  Ian Gorton Documenting a Software Architecture , 2011 .