We view software architecture as an abstraction of the run-time elements of a
software system during some phase of its operation. A system may be
composed of many levels of abstraction and many phases of operation, each
with its own software architecture.
Thus our terminology follows that of Perry and Wolf [1, 22] in distinguishing
various type of processing elements. Processing elements are those software
elements that perform transformations on data. We call them components in
line with current service oriented terminology. Data elements contain
information that is used and transformed by components. Connecting elements,
which we call connectors, are the glue that holds the different pieces of the
architecture together. We now begin to follow Fielding’s definitions [8].
A component is an abstract unit of software instructions and internal
state that produces a transformation of data.
A connector is an abstract mechanism that mediates communication,
coordination, and cooperation among components.
Data is an element of information that is sent from a component or
received by a component via a connector.
A component is a unit of software instructions and internal state information
that transforms data. The behavior of each component is part of the
architecture insofar as that behavior can be observed or discerned by another
component. A component is defined by its interface and by the services it
provides to other components.
Connectors enable communication between components by transferring data
without changing the data7
. On the other hand, a component may, and usually
does, transform data in its actual operation8
.
Some definitions of software architecture ignore data. A datum is an element of
information that is transferred between components via connectors. Examples of
data are messages, parameters, and serialized objects. These data are not
hidden by services. Other information that is hidden by a service or which a
component “serves” is not included in this definition of data. As an example, it
is most likely that a “file name” could be passed from one component to another
as data. It is also possible that the file corresponding with the file name is