-Now to drive home some of the points that I just - -2
-made, I would like to show you a few real world examples - -3
-of architectures that kind of went astray. The first example I - -4
-want to use is an example from the Linux kernel. Actually, from - -5
-an earlier version of the Linux kernel. A research group studied - -6
-the documentation of Linux, and also - -7
-interviewed several Linux developers. And by - -8
-doing that, they were able to come up with a software - -9
-architecture of Linux at different levels of obstruction. So the one that - -10
-I'm showing you here on the left, is the - -11
-software architecture at the level of Linux's main subsystems. So - -12
-this is the prescriptive architecture of Linux at the level - -13
-of Linux's main subsystems. So the researchers, after identifying this - -14
-architecture, they showed it to the developers, and the - -15
-developers agreed that, that was indeed the architecture of the - -16
-system. The researchers then studied the source code of Linux - -17
-and reverse engineered its actual architecture. So the architecture as - -18
-implemented, it's descriptive architecture. And this one here, on the - -19
-right, is the result. And as you can see, they found - -20
-a number of differences or violations between the prescriptive architecture and - -21
-the descriptive architecture. In particular, if we look at this architecture, - -22
-we can see that pretty much everything talks to everything else, - -23
-which is, in general, not a good thing. And in addition - -24
-to that, there are also several things that don't really make - -25
-much sense. For example the library calls the file system and - -26
-also the network interface which doesn't make much sense. Another thing - -27
-that is kind of weird is the fact that file system - -28
-calls the kernel initialization code. Which is also a little bit - -29
-weird. So basically, the bottom line here is that not even - -30
-the developers realized how the actual architecture of the system was, - -31
-and how it was different from the architecture they have conceived. - -32
-And in fact another interesting thing here is the reaction of - -33
-the developers when they were shown the actual architecture. So basically - -34
-they justified the differences by saying things such as, well you - -35
-know it had to be done fast, and therefore I changed it - -36
-and then I didn't have time to go back and update the documentation - -37
-and things of this sort. And by the way these are exactly some - -38
-of the reasons that we mentioned early on in the lesson for the - -39
-discrepancy between prescriptive and descriptive software - -40
-architecture. So one last thing that I - -41
-want to mention here as an aside and we can get back to - -42
-that later is the fact that you can probably clearly show how representing - -43
-software architectures graphically can be extremely useful, because it allows - -44
-for easily seeing the structure of the system. Look at different - -45
-views identify problematic points and so on. And we will see - -46
-how that can be useful in many cases also later on. -- cgit 1.4.1