Detection and Repair of Architectural Inconsistencies in Java

Detection and Repair of Architectural Inconsistencies in Java
复制标题

DOI:
10.1109/icse.2019.00067
复制
发表时间:
2019-05
期刊:
2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)
影响因子:
--
通讯作者:
Negar Ghorbani;Joshua Garcia;S. Malek
Negar Ghorbani;Joshua Garcia;S. Malek
中科院分区:
其他
文献类型:
--
作者:
Negar Ghorbani;Joshua Garcia;S. Malek

文献摘要

相似文献

Java是使用最广泛的编程语言之一。然而,编程语言本身缺乏对架构构造(如软件组件)的显式支持,这阻碍了软件开发人员实现基于架构的开发带来的许多好处。为了解决这个问题,Java 9引入了Java平台模块系统(JPMS),这是第一个将具有丰富软件架构接口的模块封装到主流编程语言中的实例。JPMS的主要目标是高效地构建和维护大型应用程序,以及改进Java应用程序和JDK本身的封装性、安全性和可维护性。然而,一个挑战是模块声明不一定反映应用程序中模块的实际使用,这使得开发人员错误地指定模块之间不一致的依赖关系。在本文中,我们正式定义了8个不一致的模块依赖,可能会出现在Java-9应用程序。我们还提出了DARCY,一种利用这些定义和静态程序分析来自动(1)检测Java应用程序中指定的不一致依赖关系和(2)修复这些已识别的不一致的方法。我们的实验结果,进行了超过38个开源Java-9应用程序,表明架构的不一致性是普遍存在的,并证明了DARCY在自动检测和修复这些不一致性的好处。
Java is one of the most widely used programming languages. However, the absence of explicit support for architectural constructs, such as software components, in the programming language itself has prevented software developers from achieving the many benefits that come with architecture-based development. To address this issue, Java 9 has introduced the Java Platform Module System (JPMS), resulting in the first instance of encapsulation of modules with rich software architectural interfaces added to a mainstream programming language. The primary goal of JPMS is to construct and maintain large applications efficiently-as well as improve the encapsulation, security, and maintainability of Java applications in general and the JDK itself. A challenge, however, is that module declarations do not necessarily reflect actual usage of modules in an application, allowing developers to mistakenly specify inconsistent dependencies among the modules. In this paper, we formally define 8 inconsistent modular dependencies that may arise in Java-9 applications. We also present DARCY, an approach that leverages these definitions and static program analyses to automatically (1) detect the specified inconsistent dependencies within Java applications and (2) repair those identified inconsistencies. The results of our experiments, conducted over 38 open-source Java-9 applications, indicate that architectural inconsistencies are widespread and demonstrate the benefits of DARCY in automated detection and repair of these inconsistencies.