Architectural Reasoning in ArchJava

Software architecture describes the structure of a system, enabling more effective design, program understanding, and formal analysis. However, existing approaches decouple implementation code from architecture, allowing inconsistencies that cause confusion, violate architectural properties, and inhibit software evolution. We are developing ArchJava, an extension to Java that seamlessly unifies software architecture with an object-oriented implementation. In this paper, we show how ArchJava's type system ensures that implementation code conforms to architectural constraints. A case study applying ArchJava to an Islamic tile design application demonstrates that ArchJava can express dynamically changing architectures effectively within implementation code, and suggests that the resulting program may be easier to understand and evolve.

[1]  Xiaolei Qian,et al.  Correct Architecture Refinement , 1995, IEEE Trans. Software Eng..

[2]  Matthias Felleisen,et al.  Units: cool modules for HOT languages , 1998, PLDI.

[3]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[4]  Bran Selic,et al.  Real-time object-oriented modeling , 1994, Wiley professional computing.

[5]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 2001, TOPL.

[6]  Mary Shaw,et al.  Abstractions for Software Architecture and Tools to Support Them , 1995, IEEE Trans. Software Eng..

[7]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[8]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[9]  David S. Rosenblum,et al.  Supporting architectural concerns in component interoperability standards , 2000, IEE Proc. Softw..

[10]  Bran Selic,et al.  Using UML for Modeling Complex Real-Time Systems , 1998, LCTES.

[11]  David Notkin,et al.  Software Reflexion Models: Bridging the Gap between Design and Implementation , 2001, IEEE Trans. Software Eng..

[12]  Vugranam C. Sreedhar,et al.  Mixin'Up components , 2002, ICSE '02.

[13]  Jeff Magee,et al.  Dynamic structure in software architectures , 1996, SIGSOFT '96.

[14]  David Notkin,et al.  ArchJava: connecting software architecture to implementation , 2002, ICSE '02.

[15]  David C. Luckham,et al.  An Event-Based Architecture Definition Language , 1995, IEEE Trans. Software Eng..

[16]  Mary Shaw,et al.  An Introduction to Software Architecture , 1993, Advances in Software Engineering and Knowledge Engineering.

[17]  GarlanDavid,et al.  A formal basis for architectural connection , 1997 .

[18]  Mourad Oussalah,et al.  Component-oriented KBS , 2002, SEKE '02.

[19]  Robin Milner,et al.  Definition of standard ML , 1990 .

[20]  허진호 [參觀記] European Conference on Object Oriented Programming 참관기 , 1988 .

[21]  Matthew Flatt,et al.  Jiazzi: new-age components for old-fasioned Java , 2001, OOPSLA '01.

[22]  Rubén Prieto-Díaz,et al.  Module interconnection languages , 1986, J. Syst. Softw..

[23]  Karl J. Lieberherr,et al.  Assuring good style for object-oriented programs , 1989, IEEE Software.

[24]  David Notkin,et al.  Component-Oriented Programming in ArchJava , 2001 .

[25]  S. Tax The Fox Project , 1958 .

[26]  Craig S. Kaplan,et al.  Computer Generated Islamic Star Patterns , 2000 .

[27]  André Spiegel,et al.  Barat - a front end for java , 1998 .

[28]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[29]  João Costa Seco,et al.  A Basic Model of Typed Components , 2000, ECOOP.

[30]  Philip Wadler,et al.  Featherweight Java: a minimal core calculus for Java and GJ , 1999, OOPSLA '99.

[31]  Kim Mens,et al.  Declaratively codifying software architectures using virtual software classifications , 1999, Proceedings Technology of Object-Oriented Languages and Systems. TOOLS 29 (Cat. No.PR00275).

[32]  Peyman Oreizy,et al.  Using object-oriented typing to support architectural design in the C2 style , 1996, SIGSOFT '96.

[33]  E PerryDewayne,et al.  Foundations for the study of software architecture , 1992 .

[34]  R.W. Schwanke,et al.  Industrial software architecture with Gestalt , 1996, Proceedings of the 8th International Workshop on Software Specification and Design.