An architecture is a specification of the components of a system and the communication between them. Systems are constrained to conform to an architecture. An architecture should guarantee certain behavioral properties of a conforming system, i.e., one whose components are configured according to the architecture. An architecture should also be useful in various ways during the process of building a system. This paper presents three alternative concepts of architecture: object connection architecture, interface connection architecture, and plug and socket architecture. We describe different concepts of interface and connection that are needed for each of the three kinds of architecture, and different conformance requirements of each kind. Simple examples are used to compare the usefulness of each kind of architecture in guaranteeing properties of conforming systems, and in correctly modifying a conforming system. In comparing the three architecture concepts the principle of communication integrity becomes central, and two new architecture concepts, duality of sub-interfaces (services) and connections of dual services (service connection), are introduced to define plug and socket architecture. We describe how these concepts reduce the complexity of architecture definitions, and can in many cases help guarantee that the components of a conforming system communicate correctly. The paper is presented independently of any particular formalism, since the concepts can be represented in widely differing architecture definition formalisms, varying from graphical languages to event-based simulation languages.
[1]
David Luckham,et al.
SPARC-V9 Architecture Specification with Rapide
,
1995
.
[2]
J. J. Horning,et al.
Report on the programming language Euclid
,
1977,
SIGP.
[3]
Bjarne Stroustrup,et al.
The Annotated C++ Reference Manual
,
1990
.
[4]
D. L. Parnas,et al.
The influence of software structure on reliability
,
1975,
Reliable Software.
[5]
W. Wayt Gibbs,et al.
Software's Chronic Crisis
,
1994
.
[6]
Kristen Nygaard,et al.
SIMULA: an ALGOL-based simulation language
,
1966,
CACM.
[7]
C LuckhamDavid,et al.
Specification and Analysis of System Architecture Using Rapide
,
1995
.
[8]
Donald E. Thomas,et al.
The Verilog® Hardware Description Language
,
1990
.
[9]
David Garlan,et al.
Formalizing Architectural Connection
,
1994,
ICSE.
[10]
N. Falconer.
Structured Programming
,
1973,
Nature.
[11]
David C. Luckham,et al.
Partial orderings of event sets and their application to prototyping concurrent, timed systems
,
1993,
J. Syst. Softw..