Mining Patterns from Change Logs to Support Reuse-Driven Evolution of Software Architectures
作者机构:College of Computer Science and Engineering University of Ha'il Ha'il 2440 Saudi Arabia Faculty of Computer Science Free University of Bozen-Bolzano Bozen-Bolzano 39100 Italy
出 版 物:《Journal of Computer Science & Technology》 (计算机科学技术学报(英文版))
年 卷 期:2018年第33卷第6期
页 面:1278-1306页
核心收录:
学科分类:12[管理学] 1201[管理学-管理科学与工程(可授管理学、工学学位)] 08[工学]
主 题:software architecture software maintenance and evolution evolution pattern repository mining
摘 要:Modern software systems are subject to a continuous evolution under frequently varying requirements andchanges in systems' operational environments. Lehman's law of continuing change demands for long-living and continuouslyevolving software to prolong its productive life and economic value by accommodating changes in existing software. Reusableknowledge and practices have proven to be successful for continuous development and evolution of the software effectivelyand efficiently. However, challenges such as empirical acquisition and systematic application of the reusable knowledge andpractices must be addressed to enable or enhance software evolution. We investigate architecture change logs -- mininghistories of architecture-centric software evolution -- to discover change patterns that 1) support reusability of architecturalchanges and 2) enhance the efficiency of the architecture evolution process. We model architecture change logs as a graphand apply graph-based formalism (i.e., graph mining techniques) to discover software architecture change patterns. Wehave developed a prototype that enables tool-driven automation and user decision support during software evolution. Wehave used the ISO-IEC-9126 model to qualitatively evaluate the proposed solution. The evaluation results suggest that theproposed solution 1) enables the reusability of frequent architectural changes and 2) enhances the efficiency of architecture-centric software evolution process. The proposed solution promotes research efforts to exploit the history of architecturalchanges to empirically discover knowledge that can guide architecture-centric software evolution.