-I'm going to define a software systems architecture as - -2
-the set of principal design decisions about the system. Where - -3
-principal here, implies a degree of importance, that grants - -4
-a design decision architectural status. And the point here, as - -5
-we discussed with Neno early on, is that when - -6
-building a system, we make tons of design decisions, and - -7
-most of them do not affect the architecture of - -8
-the system. For example, the effect of choosing a for - -9
-loop, instead of a while loop, in the code, or the - -10
-fact of deciding that we are going to use data structure A - -11
-instead of data structure B. Some decisions however, do affect the - -12
-architecture of the system. And in some cases the distinction between these - -13
-two kinds of design decisions is clear. In some other cases - -14
-it is much fuzzier and it depends on the context. The - -15
-bottom line here, is that if you believe that something is - -16
-an important design decision, that becomes an architectural decision. That is a - -17
-decision that impacts a system's architecture. In this spirit, - -18
-we can see a software architecture as the blueprint - -19
-for a software system, that we can use to - -20
-construct and evolve the system. And the key point - -21
-about software architecture is that this blueprint encompasses every - -22
-facet of the system under development. It encompasses its - -23
-structure, of course, but not only. It also involves - -24
-the behavior of the system, the interactions within the system, - -25
-and the non-functional properties of the system. And we will see - -26
-how this happens in the rest of the lesson. Another important - -27
-point about software architecture is that there is a temporal aspect - -28
-to it. And the point here is that you don't build the - -29
-software architecture in a single shot, but you do it iteratively, - -30
-over time. So, basically, you go from having no architecture to - -31
-your final architecture. So, at any point in time, there is - -32
-a software architecture, but it will change over time. And this happens - -33
-because design decisions are made, unmade and changed over a system's lifetime. -- cgit 1.4.1