We can look at the software architecture from two
main standpoints. There are prescriptive and descriptive software architectures.
So what does that mean? A prescriptive architecture captures
the design decisions that are made prior to the
system's construction. This is what we normally call the
as-conceived software architecture. Conversely,
a descriptive architecture describes how
the system has actually been built. So it's based
on observing the system as it is and extracting
the architecture from the observation. This is what we call
the as-implemented software architecture. And one key point here is
that often, these two architectures, the prescriptive and the descriptive
architectures end up being different. So let's see why that happens.