ArchJava : Related Work
Architecture Description Languages
Many architecture description languages (ADLs) have been defined to describe,
model, check, and implement software architectures. Many of these
languages support sophisticated analysis and reasoning or support
architecture-centric development. Some recent ADLs include:
- Wright
allows architects to specify temporal communication
protocols and check properties such as deadlock freedom.
- UniCon
is an architectural description language whose focus is on supporting the
variety of architectural parts and styles found in the real world and on
constructing systems from their architecture descriptions.
- Acme
is a simple, generic software architecture description
language (ADL) that can be used as a common interchange format for
architecture design tools and/or as a foundation for developing new
architectural design and analysis tools.
- Aesop provides a generic toolkit and communication infrastructure that users can customize with architectural style descriptions and a set of tools that they would like to use for architectural analysis.
- C2
is a general component- and message-based architectural style that is
well-suited for large-scale, heterogeneous, and distributed applications.
The C2 SADL is an
ADL for expressing architectures in the C2 style.
- Darwin
is to specify system architectures in terms of components and their
interconnections
- MetaH
specifies how software modules developed in a variety of styles are composed
together with hardware objects to form a complete system architecture
- The Rapide
language effort focuses on developing a new technology for building
large-scale, distributed multi-language systems
- SADL
formalizes architectures in terms of theories, shows how generic refinement operations can be proved correct, and describes a number of flexible refinement patterns.
- Weaves are networks of concurrently executing tool fragments that
communicate by passing objects. A reference to Weaves is
Using Weaves for Software Construction and Analysis
by Michael M. Gorlick and Rami R. Razouk.
Proceedings of the 13th Interational Conference on Software Engineering,
May 1991.
- xArch
is a standard, extensible XML-based representation for software architectures
An excellent overview and comparison of Architecture Description Languages
prior to 2000 is given in
A Classification and Comparison Framework for Software Architecture
Description Languages
by Nenad Medvidovic and Richard N. Taylor. IEEE Transactions on Software Engineering, January 2000
Aspect-Oriented Programming
Aspect-oriented programming (AOP) is a new
technology for separation of concerns (SOC) in software development.
The techniques of
AOP make it possible to modularize crosscutting aspects of a system.
ArchJava
can be thought of as an aspect-oriented
programming language with support for separating crosscutting
structural concerns from behavioral concerns. Other AOP languages support
separating behavioral concerns at a finer grain:
- AspectJ is
a seamless aspect-oriented extension to Java that enables the modular implementation of a wide range of crosscutting concerns.
- Hyper/J
supports "multi-dimensional" separation and integration of concerns in
standard Java software.
- The Law of Demeter
states "only talk to your immediate friends" in a system. It is closely
related to ArchJava's concept of communication integrity. The
DemeterJ and
DJ
languages facilitate the structure-shy encapsulation of traversal-related
behavioral concerns in pure Java.
- The ConcernBASE
project aims at providing a software
engineering approach that complements the abstractions and mechanisms found
in current ADLs, allows for simultaneous separation of overlapping concerns
in software architecture descriptions and provides flexible means of
supporting architecture-centered software development.
-
Composition Filters supports aspect-oriented programming with
filters on objects that can inspect and manipulate incoming messages.