*Result*: Detection and Repair of Architectural Inconsistencies in Java

Title:
Detection and Repair of Architectural Inconsistencies in Java
Authors:
Contributors:
Malek, Sam
Publisher Information:
eScholarship, University of California
Publication Year:
2019
Collection:
University of California: eScholarship
Document Type:
*Dissertation/ Thesis* thesis
File Description:
application/pdf
Language:
English
Rights:
public
Accession Number:
edsbas.649F178F
Database:
BASE

*Further Information*

*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.*