-After this interesting conversation with Neno, let me start - -2
-the lesson by defining what a software architecture is. - -3
-And to do that, I'm going to use two - -4
-seminal definitions. The first one is from Dewayne Perry - -5
-and Alex Wolf. And they define a software architecture - -6
-as elements, form and rationale. In this definition, the - -7
-elements are the what, which means the processes, data, - -8
-and connectors that compose a software architecture. The form - -9
-is the how, the set of properties of - -10
-in relationships among these elements. And, finally, the rationale - -11
-is the why, the justification for the elements and - -12
-their relationships. The second definition I want to use - -13
-is from Mary Shaw and David Garland. And - -14
-they defined a software architecture as a level of - -15
-design that involves four main things, a description of - -16
-elements from which these systems are built, the interactions - -17
-among those elements, the patterns that guide their composition, and - -18
-finally, the constraints on these patterns. As you can see, these - -19
-definitions are fairly similar and there are many more alternative - -20
-definitions of software architecture. In fact, if we try to search - -21
-the term software architecture, we get over two million entries. - -22
-And if we look at the images in the results of - -23
-the search this is what we get. And I like this - -24
-sort of graphical depiction because it gives you a clear idea - -25
-the software architecture are prevalent concept, given the number of - -26
-results. But they also show you clearly, that software architecture are - -27
-complex entities, if you look at some of these pictures. - -28
-And ultimately, they show that software architecture are presented in all - -29
-kinds of ways including in 3D, if you look at this - -30
-picture. We cannot clearly cover all of these definitions in one - -31
-lesson. So what I will do instead, is to introduce - -32
-a very general definition that encompasses most of the existing ones. -- cgit 1.4.1