ABSTRACT
In order to recover software architecture, various clustering techniques have been created to automatically partition a software system into meaningful subsystems. While these techniques have demonstrated their effectiveness, we observe that a key feature within most software systems has not been fully exploited: most well-designed systems follow strong architectural design rules that split the overall system into modules. These design rules are often manifested as special program constructs, such as shared data structures or abstract interfaces, which should not belong to any of the subordinate modules. We contribute a new perspective of architecture recovery based on this rationale, which enables the combination of design-rule-based clustering with other clustering techniques, as well as enabling the splitting of a large system into subsystems. We evaluated our approach both quantitatively and qualitatively, using both open source and real industrial software projects.
- P. Andritsos and V. Tzerpos. Information-theoretic software clustering. IEEE Transactions on Software Engineering, 31(2):150--165, Feb. 2005. Google ScholarDigital Library
- N. Anquetil and T. Lethbridge. Recovering software architecture from the names of source files. Journal of Software Maintenance, 11(3):201--221, May 1999. Google ScholarDigital Library
- N. Anquetil and T. C. Lethbridge. Experiments with clustering as a software remodularization method. In Proc. 6th Working Conference on Reverse Engineering, pages 235--255, Oct. 1999. Google ScholarDigital Library
- C. Y. Baldwin and K. B. Clark. Design Rules, Vol. 1: The Power of Modularity. MIT Press, 2000. Google ScholarDigital Library
- Y. Cai, D. Iannuzzi, and S. Wong. Leveraging design structure matrices in software design education. In Proc. 24th Conference on Software Engineering Education and Training, pages 179--188, May 2011. Google ScholarDigital Library
- Y. Cai and K. J. Sullivan. Modularity analysis of logical design models. In Proc. 21st IEEE/ACM International Conference on Automated Software Engineering, pages 91--102, Sept. 2006. Google ScholarDigital Library
- S. Ducasse and D. Pollet. Software architecture reconstruction: A process-oriented taxonomy. IEEE Transactions on Software Engineering, 35(4):573--591, July 2009. Google ScholarDigital Library
- T. Eisenbarth, R. Koschke, and D. Simon. Derivation of feature component maps by means of concept analysis. In Proc. 5th European Conference on Software Maintenance and Reengineering, pages 176--179, Mar. 2001. Google ScholarDigital Library
- E. T. Freeman, E. Robson, B. Bates, and K. Sierra. Head First Design Patterns. O'Reilly Media, Oct. 2004. Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. M. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Nov. 1994. Google ScholarDigital Library
- Y.-G. Guéhéneuc and G. Antoniol. DeMIMA: A multilayered approach for design pattern identification. IEEE Transactions on Software Engineering, 34(5):667--684, May 2008. Google ScholarDigital Library
- M. Harman, S. Swift, and K. Mahdavi. An empirical study of the robustness of two module clustering fitness functions. In Proc. Genetic and Evolutionary Computation Conference, pages 1029--1036, June 2005. Google ScholarDigital Library
- D. H. Hutchens and V. R. Basili. System structure analysis: Clustering with data bindings. IEEE Transactions on Software Engineering, 11(8):749--757, Aug. 1985. Google ScholarDigital Library
- R. Koschke and T. Eisenbarth. A framework for experimental evaluation of clustering techniques. In Proc. 8th International Workshop on Program Comprehension, pages 201--210, June 2000. Google ScholarDigital Library
- J. I. Maletic and N. Valluri. Automatic software clustering via latent semantic analysis. In Proc. 14th IEEE/ACM International Conference on Automated Software Engineering, pages 251--254, Oct. 1999. Google ScholarDigital Library
- S. Mancoridis, B. S. Mitchell, Y.-F. Chen, and E. R. Gansner. Bunch: A clustering tool for the recovery and maintenance of software system structures. In Proc. 15th IEEE International Conference on Software Maintenance, pages 50--59, Aug. 1999. Google ScholarDigital Library
- O. Maqbool and H. A. Babri. The weighted combined algorithm: A linkage algorithm for software clustering. In Proc. 8th European Conference on Software Maintenance and Reengineering, pages 15--24, Mar. 2004. Google ScholarDigital Library
- O. Maqbool and H. A. Babri. Hierarchical clustering for software architecture recovery. IEEE Transactions on Software Engineering, 33(11):759--780, Nov. 2007. Google ScholarDigital Library
- B. S. Mitchell and S. Mancoridis. Comparing the cecompositions produced by software clustering algorithms using similarity measurements. In Proc. IEEE International Conference on Software Maintenance, pages 744--753, Nov. 2001. Google ScholarDigital Library
- B. S. Mitchell and S. Mancoridis. On the automatic modularization of software systems using the Bunch tool. IEEE Transactions on Software Engineering, 32(3):193--208, 2006. Google ScholarDigital Library
- D. L. Parnas. On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053--8, Dec. 1972. Google ScholarDigital Library
- D. Riehle. Framework Design: A Role Modeling Approach. PhD thesis, ETH Zurich, 2000.Google Scholar
- M. Saeed, O. Maqbool, H. A. Babri, S. Z. Hassan, and S. M. Sarwar. Software clustering techniques and the use of combined algorithm. In Proc. 7th European Conference on Software Maintenance and Reengineering, pages 301--306, Mar. 2003. Google ScholarDigital Library
- K. Sartipi, K. Kontogiannis, and F. Mavaddat. Architectural design recovery using data mining techniques. In Proc. 4th European Conference on Software Maintenance and Reengineering, pages 129--139, Feb. 2000. Google ScholarDigital Library
- M. Shtern and V. Tzerpos. Refining clustering evaluation using structure indicators. In Proc. 25th IEEE International Conference on Software Maintenance, pages 297--305, Sept. 2009.Google ScholarCross Ref
- C. Tjortjis, L. Sinos, and P. J. Layzell. Facilitating program comprehension by mining association rules from source code. In Proc. 11th International Workshop on Program Comprehension, pages 125--133, May 2003. Google ScholarDigital Library
- P. Tonella. Concept analysis for module restructuring. IEEE Transactions on Software Engineering, 27(4):351--363, Apr. 2001. Google ScholarDigital Library
- P. Tonella and G. Antoniol. Object oriented design mpattern inference. In Proc. IEEE International Conference on Software Maintenance, pages 230--238, Sept. 1999. Google ScholarDigital Library
- N. Tsantalis, A. Chatzigeorgiou, G. Stephanides, and S. T. Halkidis. Design pattern detection using similarity scoring. IEEE Transactions on Software Engineering, 32(11):896--909, Nov. 2006. Google ScholarDigital Library
- V. Tzerpos and R. C. Holt. ACDC: An algorithm for comprehension-driven clustering. In Proc. 7th Working Conference on Reverse Engineering, pages 258--267, Nov. 2000. Google ScholarDigital Library
- S. Wong. On the Interplay of Architecture and Collaboration on Software Evolution and Maintenance. PhD thesis, Drexel University, Dec. 2010. Google ScholarDigital Library
- S. Wong, Y. Cai, G. Valetto, G. Simeonov, and K. Sethi. Design rule hierarchies and parallelism in software development tasks. In Proc. 24th IEEE/ACM International Conference on Automated Software Engineering, pages 197--208, Nov. 2009. Google ScholarDigital Library
- J. Wu, A. E. Hassan, and R. C. Holt. Comparison of clustering algorithms in the context of software bevolution. In Proc. 21st IEEE International Conference on Software Maintenance, pages 525--535, Sept. 2005. Google ScholarDigital Library
Index Terms
- Leveraging design rules to improve software architecture recovery
Recommendations
The Value of Software Architecture Recovery for Maintenance
ISEC '19: Proceedings of the 12th Innovations in Software Engineering Conference (formerly known as India Software Engineering Conference)In order to maintain a system, it is beneficial to know its software architecture. In the common case that this architecture is unavailable, architecture recovery provides a way to recover an architectural view of the system. Many different methods and ...
Hierarchical Clustering for Software Architecture Recovery
Abstract-Gaining an architectural level understanding of a software system is important for many reasons. When the description of a system's architecture does not exist, attempts must be made to recover it. In recent years, researchers have explored the ...
A Systematic Method for Architecture Recovery
ENASE 2015: Proceedings of the 10th International Conference on Evaluation of Novel Approaches to Software EngineeringSoftware architecture recovery aims to reverse engineer a software architecture description from the system artifacts
(e.g. source code) in order to facilitate software architecture analysis, improvement and control. Whilst
there are a number of ...
Comments