Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1109/ICSE.2019.00067acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Detection and repair of architectural inconsistencies in Java

Published: 25 May 2019 Publication History

Abstract

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.

References

[1]
R. Taylor, N. Medvidovic, and D. E.M., Software Architecture: Foundations, Theory, and Practice. John Wiley & Sons, 2009.
[2]
J. Aldrich, C. Chambers, and D. Notkin, "Archjava: Connecting software architecture to implementation," in Proceedings of the 24th International Conference on Software Engineering, ser. ICSE '02. New York, NY, USA: ACM, 2002, pp. 187--197. {Online}. Available
[3]
R. N. Taylor, N. Medvidovic, K. M. Anderson, E. J. Whitehead, Jr., and J. E. Robbins, "A component- and message-based architectural style for gui software," in Proceedings of the 17th International Conference on Software Engineering, ser. ICSE '95. New York, NY, USA: ACM, 1995, pp. 295--304. {Online}. Available
[4]
"Project Jigsaw," http://openjdk.java.net/projects/jigsaw/, 2017.
[5]
"Darcy web page {In accordance with the double-blind policy}," https://sites.google.com/view/darcy-project/home, 2018.
[6]
K. Sharan, "The module system," in Java 9 Revealed. Springer, 2017, pp. 7--30.
[7]
M. Reinhold, "JSR 376: Java Platform Module System," Technical report, Oracle Corporation. http://cr.openjdk.java.net/ mr/jigsaw/spec/, Tech. Rep., 2014.
[8]
P. Deitel, "Understanding Java 9 Modules," https://www.oracle.com/corporate/features/understanding-java-9-modules.html, 2017.
[9]
P. J. Deitel and H. M. Deitel, Java 9 for Programmers. Prentice Hall, 2017.
[10]
J. Gosling, B. Joy, G. Steele, G. Bracha, A. Buckley, and D. Smith, "The Java Language Specification Java SE 9 Edition," Technical report, Oracle Corporation. https:https://docs.oracle.com/javase/specs/jls/se9/html/index.html, Tech. Rep., 2017.
[11]
"Oracle Corporation. API specification for the Java Platform, Standard Edition: Class ServiceLoader," https://docs.oracle.com/javase/7/docs/api/java/util/ServiceLoader.html.
[12]
F.-J. Elmer, "Classycle: Analysing Tools for Java Class and Package Dependencies," How Classycle works, 2012.
[13]
J. Garcia, M. Hammad, and S. Malek, "Lightweight, obfuscation-resilient detection and family identification of android malware," ACM Transactions on Software Engineering and Methodology (TOSEM), vol. 26, no. 3, p. 11, 2018.
[14]
R. Vallée-Rai, P. Co, E. Gagnon, L. Hendren, P. Lam, and V. Sundaresan, "Soot: A Java bytecode optimization framework," in CASCON First Decade High Impact Papers. IBM Corp., 2010, pp. 214--224.
[15]
"ServiceLoader (Java SE 9 & JDK 9)," https://docs.oracle.com/javase/9/docs/api/java/util/ServiceLoader.html, 2018.
[16]
"ANTLR," http://www.antlr.org, 2018.
[17]
"GitHub," https://github.com, 2018.
[18]
P. Manadhata and J. M. Wing, "Measuring a system's attack surface," CARNEGIE-MELLON UNIV PITTSBURGH PA SCHOOL OF COMPUTER SCIENCE, Tech. Rep., 2004.
[19]
P. K. Manadhata, K. M. Tan, R. A. Maxion, and J. M. Wing, "An approach to measuring a system's attack surface," CARNEGIE-MELLON UNIV PITTSBURGH PA SCHOOL OF COMPUTER SCIENCE, Tech. Rep., 2007.
[20]
P. K. Manadhata and J. M. Wing, "An attack surface metric," IEEE Transactions on Software Engineering, no. 3, pp. 371--386, 2010.
[21]
E. Bouwers, A. van Deursen, and J. Visser, "Quantifying the encapsulation of implemented software architectures," in Software Maintenance and Evolution (ICSME), 2014 IEEE International Conference on. IEEE, 2014, pp. 211--220.
[22]
L. C. Briand, S. Morasca, and V. R. Basili, "Measuring and assessing maintainability at the end of high level design," in Software Maintenance, 1993. CSM-93, Proceedings., Conference on. IEEE, 1993, pp. 88--87.
[23]
J. Lakos, "Large-scale c++ software design," Reading, MA, vol. 173, pp. 217--271, 1996.
[24]
M. R. Shaheen and L. du Bousquet, "Quantitative analysis of testability antipatterns on open source java applications," QAOOSE 2008-Proceedings, p. 21, 2008.
[25]
R. Yokomori, N. Yoshida, M. Noro, and K. Inoue, "Extensions of component rank model by taking into account for clone relations," in Software Analysis, Evolution, and Reengineering (SANER), 2016 IEEE 23rd International Conference on, vol. 3. IEEE, 2016, pp. 30--36.
[26]
E. Constantinou, G. Kakarontzas, and I. Stamelos, "Towards open source software system architecture recovery using design metrics," in 2011 15th Panhellenic Conference on Informatics, Sept 2011, pp. 166--170.
[27]
D. M. Le, P. Behnamghader, J. Garcia, D. Link, A. Shahbazian, and N. Medvidovic, "An empirical study of architectural change in open-source software systems," in Mining Software Repositories (MSR), 2015 IEEE/ACM 12th Working Conference on. IEEE, 2015, pp. 235--245.
[28]
J. Garcia, I. Ivkovic, and N. Medvidovic, "A comparative analysis of software architecture recovery techniques," in Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering. IEEE Press, 2013, pp. 486--496.
[29]
T. Lutellier, D. Chollak, J. Garcia, L. Tan, D. Rayside, N. Medvidović, and R. Kroeger, "Comparing software architecture recovery techniques using accurate dependencies," in Proceedings of the 37th International Conference on Software Engineering-Volume 2. IEEE Press, 2015, pp. 69--78.
[30]
E. Constantinou, G. Kakarontzas, and I. Stamelos, "Open source software: How can design metrics facilitate architecture recovery?" arXiv preprint arXiv:1110.1992, 2011.
[31]
L. Hendren, "Uses of the Soot Framework," http://www.sable.mcgill.ca/~hendren/sootusers/, 2018.
[32]
P. Lam, E. Bodden, O. Lhoták, and L. Hendren, "The soot framework for java program analysis: a retrospective," in Cetus Users and Compiler Infastructure Workshop (CETUS 2011), vol. 15, 2011, p. 35.
[33]
"Soot GitHub Issue," https://github.com/Sable/soot/issues, 2018.
[34]
"TIOBE Index for August 2018," https://www.tiobe.com/tiobe-index/, 2018.
[35]
"The State of the Octoverse 2017," https://octoverse.github.com/, 2018.
[36]
R. van Ommering, F. van der Linden, J. Kramer, and J. Magee, "The koala component model for consumer electronics software," Computer, vol. 33, no. 3, pp. 78--85, March 2000.
[37]
N. Medvidovic and R. N. Taylor, "A classification and comparison framework for software architecture description languages," IEEE Transactions on Software Engineering, vol. 26, no. 1, pp. 70--93, Jan 2000.
[38]
K. Lau and Z. Wang, "Software component models," IEEE Transactions on Software Engineering, vol. 33, no. 10, pp. 709--724, Oct 2007.
[39]
S. Ducasse and D. Pollet, "Software architecture reconstruction: A process-oriented taxonomy," IEEE Transactions on Software Engineering, vol. 35, no. 4, pp. 573--591, 2009.
[40]
R. Koschke, "Architecture reconstruction," in Software Engineering. Springer, 2006, pp. 140--173.
[41]
I. Ivkovic and M. Godfrey, "Enhancing domain-specific software architecture recovery," in Program Comprehension, 2003. 11th IEEE International Workshop on. IEEE, 2003, pp. 266--273.
[42]
M. W. Godfrey and E. H. Lee, "Secrets from the monster: Extracting mozillas software architecture," in Proceedings of Second Symposium on Constructing Software Engineering Tools (CoSET00). Citeseer, 2000.
[43]
M. Mirakhorli, Y. Shin, J. Cleland-Huang, and M. Cinar, "A tactic-centric approach for automating traceability of quality concerns," in Software Engineering (ICSE), 2012 34th International Conference on. IEEE, 2012, pp. 639--649.
[44]
A. Shahbazian, Y. K. Lee, D. Le, Y. Brun, and N. Medvidovic, "Recovering architectural design decisions," in 2018 IEEE International Conference on Software Architecture (ICSA). IEEE, 2018.
[45]
E. Constantinou, G. Kakarontzas, and I. Stamelos, "An automated approach for noise identification to assist software architecture recovery techniques," Journal of Systems and Software, vol. 107, pp. 142--157, 2015.
[46]
D. Qiu, Q. Zhang, and S. Fang, "Reconstructing software high-level architecture by clustering weighted directed class graph," International Journal of Software Engineering and Knowledge Engineering, vol. 25, no. 04, pp. 701--726, 2015.
[47]
M. Shtern and V. Tzerpos, "Clustering Methodologies for Software Engineering," Adv. Soft. Eng., vol. 2012, pp. 1:1--1:1, Jan. 2012. {Online}. Available
[48]
O. Maqbool and H. Babri, "Hierarchical clustering for software architecture recovery," IEEE Transactions on Software Engineering, vol. 33, no. 11, 2007.
[49]
R. A. Bittencourt and D. D. S. Guerrero, "Comparison of graph clustering algorithms for recovering software architecture module views," in Software Maintenance and Reengineering, 2009. CSMR'09. 13th European Conference on. IEEE, 2009, pp. 251--254.
[50]
G. C. Murphy, D. Notkin, and K. J. Sullivan, "Software reflexion models: Bridging the gap between design and implementation," IEEE Transactions on Software Engineering, vol. 27, no. 4, pp. 364--380, 2001.
[51]
N. Medvidovic, A. Egyed, and P. Gruenbacher, "Stemming architectural erosion by coupling architectural discovery and recovery." in STRAW, vol. 3, 2003, pp. 61--68.
[52]
A. Van Deursen, C. Hofmeister, R. Koschke, L. Moonen, and C. Riva, "Symphony: View-driven software architecture reconstruction," in Software Architecture, 2004. WICSA 2004. Proceedings. Fourth Working IEEE/IFIP Conference on. IEEE, 2004, pp. 122--132.
[53]
L. O'Brien, D. Smith, and G. Lewis, "Supporting migration to services using software architecture reconstruction," in Software Technology and Engineering Practice, 2005. 13th IEEE International Workshop on. IEEE, 2005, pp. 81--91.
[54]
J. B. Tran, M. W. Godfrey, E. H. Lee, and R. C. Holt, "Architectural repair of open source software," in Program Comprehension, 2000. Proceedings. IWPC 2000. 8th International Workshop on. IEEE, 2000, pp. 48--59.
[55]
M. Abi-Antoun, J. Aldrich, D. Garlan, B. Schmerl, N. Nahas, and T. Tseng, "Improving system dependability by enforcing architectural intent," in ACM SIGSOFT Software Engineering Notes, vol. 30, no. 4. ACM, 2005, pp. 1--7.
[56]
H. Yan, D. Garlan, B. Schmerl, J. Aldrich, and R. Kazman, "DiscoTect: A System for Discovering Architectures from Running Systems," in Software Engineering, 2004. ICSE 2004. Proceedings. 26th International Conference on. IEEE, 2004, pp. 470--479.
[57]
N. Sangal, E. Jordan, V. Sinha, and D. Jackson, "Using dependency models to manage complex software architecture," in ACM Sigplan Notices, vol. 40, no. 10. ACM, 2005, pp. 167--176.
[58]
J. A. Diaz-Pace, J. P. Carlino, M. Blech, A. Soria, and M. R. Campo, "Assisting the synchronization of ucm-based architectural documentation with implementation," in 2009 Joint Working IEEE/IFIP Conference on Software Architecture (WICSA) & 3rd European Conference on Software Architecture (ECSA). IEEE, 2009, pp. 151--160.
[59]
M. Sefika, A. Sane, and R. H. Campbell, "Monitoring compliance of a software system with its high-level design models," in Proceedings of the 18th international conference on Software engineering. IEEE Computer Society, 1996, pp. 387--396.
[60]
R. Koschke and D. Simon, "Hierarchical reflexion models," in null. IEEE, 2003, p. 36.
[61]
A. Christl, R. Koschke, and M.-A. Storey, "Equipping the reflexion method with automated clustering," in Reverse Engineering, 12th Working Conference on. IEEE, 2005, pp. 10-pp.
[62]
R. Koschke, P. Frenzel, A. P. Breu, and K. Angstmann, "Extending the reflexion method for consolidating software variants into product lines," Software Quality Journal, vol. 17, no. 4, pp. 331--366, 2009.
[63]
A. Gurgel, I. Macia, A. Garcia, A. von Staa, M. Mezini, M. Eichberg, and R. Mitschke, "Blending and reusing rules for architectural degradation prevention," in Proceedings of the 13th international conference on Modularity. ACM, 2014, pp. 61--72.
[64]
M. Caporuscio, H. Muccini, P. Pelliccione, and E. Di Nisio, "Rapid system development via product line architecture implementation," in International Workshop on Rapid Integration of Software Engineering Techniques. Springer, 2005, pp. 18--33.
[65]
J. Grundy, "Multi-perspective specification, design and implementation of software components using aspects," International Journal of Software Engineering and Knowledge Engineering, vol. 10, no. 06, pp. 713--734, 2000.
[66]
S. Malek, M. Mikic-Rakic, and N. Medvidovic, "A style-aware architectural middleware for resource-constrained, distributed systems," IEEE Transactions on Software Engineering, vol. 31, no. 3, pp. 256--272, 2005.
[67]
J. Aldrich, C. Omar, A. Potanin, and D. Li, "Language-based architectural control," in Proceedings of the International Workshop on Aliasing, Capabilities and Ownership (IWACO), 2014, pp. 1--11.
[68]
A. Radjenovic and R. F. Paige, "The role of dependency links in ensuring architectural view consistency," in Seventh Working IEEE/IFIP Conference on Software Architecture. IEEE, 2008, pp. 199--208.
[69]
M. Shaw, R. DeLine, D. V. Klein, T. L. Ross, D. M. Young, and G. Zelesnik, "Abstractions for software architecture and tools to support them," IEEE transactions on software engineering, vol. 21, no. 4, pp. 314--335, 1995.
[70]
N. Ubayashi, J. Nomura, and T. Tamai, "Archface: a contract place where architectural design and code meet together," in Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering-Volume 1. ACM, 2010, pp. 75--84.
[71]
Y. Zheng and R. N. Taylor, "Enhancing architecture-implementation conformance with change management and support for behavioral mapping," in Proceedings of the 34th International Conference on Software Engineering. IEEE Press, 2012, pp. 628--638.
[72]
Y. Zheng, C. Cu, and R. N. Taylor, "Maintaining architecture-implementation conformance to support architecture centrality: From single system to product line development," ACM Transactions on Software Engineering and Methodology (TOSEM), vol. 27, no. 2, p. 8, 2018.
[73]
H. Song, G. Huang, F. Chauvel, Y. Xiong, Z. Hu, Y. Sun, and H. Mei, "Supporting runtime software architecture: A bidirectional-transformation-based approach," Journal of Systems and Software, vol. 84, no. 5, pp. 711--723, 2011.
[74]
"OSGI Alliance," https://www.osgi.org/developer/specifications/.

Cited By

View all
  • (2024)ROSInfer: Statically Inferring Behavioral Component Models for ROS-based Robotics SystemsProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639206(1-13)Online publication date: 20-May-2024
  • (2024)Darcy: Automatic Architectural Inconsistency Resolution in JavaIEEE Transactions on Software Engineering10.1109/TSE.2024.339643350:6(1639-1657)Online publication date: 3-May-2024
  • (2021)Semantic Slicing of Architectural Change CommitsProceedings of the 15th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1145/3475716.3484487(1-6)Online publication date: 11-Oct-2021

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '19: Proceedings of the 41st International Conference on Software Engineering
May 2019
1318 pages

Sponsors

Publisher

IEEE Press

Publication History

Published: 25 May 2019

Check for updates

Badges

Qualifiers

  • Research-article

Conference

ICSE '19
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)1
Reflects downloads up to 30 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)ROSInfer: Statically Inferring Behavioral Component Models for ROS-based Robotics SystemsProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639206(1-13)Online publication date: 20-May-2024
  • (2024)Darcy: Automatic Architectural Inconsistency Resolution in JavaIEEE Transactions on Software Engineering10.1109/TSE.2024.339643350:6(1639-1657)Online publication date: 3-May-2024
  • (2021)Semantic Slicing of Architectural Change CommitsProceedings of the 15th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)10.1145/3475716.3484487(1-6)Online publication date: 11-Oct-2021
  • (2021)HeroProceedings of the 43rd International Conference on Software Engineering10.1109/ICSE43902.2021.00022(99-111)Online publication date: 22-May-2021

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media