Now that we have discussed a few foundational aspects
of software architectures, and we have looked at some real
world examples that help us to illustrate some of these
points, to discuss some of these aspects. I want to
introduce and define the different elements that compose a software
architecture and also talk about architectural styles. So let's start
by discussing a software architecture's
elements. A software system's architecture
typically is not, and should not be, a uniform monolith.
On the contrary, an architecture should be a
composition and interplay of different elements. In particular,
as we quickly mentioned at the beginning of
the lesson, there are three main types of elements
in an architecture. Processing elements, data elements, and
interaction elements. Processing elements are those elements that implement
the business logic and perform transformations on data.
Data elements, also called information or state, are those
elements that contain the information that is used
and transformed by the processing elements. And finally,
the interaction elements are the glue that holds
the different pieces of the architecture together. Now,
the processing elements and the data are contained
into the system components, whereas the interaction elements
are maintained and controlled by the system connectors.
And components and connectors get all cooked together
into a systems configuration, which models
components, connectors and their relationships. So
now, let's look at components, connectors
and configurations in a little more detail.