about summary refs log tree commit diff
path: root/usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt
diff options
context:
space:
mode:
Diffstat (limited to 'usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt')
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt183
1 files changed, 183 insertions, 0 deletions
diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt
new file mode 100644
index 0000000..4e64d4a
--- /dev/null
+++ b/usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt
@@ -0,0 +1,183 @@
+1

+00:00:00,210 --> 00:00:02,770

+Now to drive home some of the points that I just

+

+2

+00:00:02,770 --> 00:00:05,920

+made, I would like to show you a few real world examples

+

+3

+00:00:05,920 --> 00:00:09,150

+of architectures that kind of went astray. The first example I

+

+4

+00:00:09,150 --> 00:00:11,970

+want to use is an example from the Linux kernel. Actually, from

+

+5

+00:00:11,970 --> 00:00:15,260

+an earlier version of the Linux kernel. A research group studied

+

+6

+00:00:15,260 --> 00:00:17,020

+the documentation of Linux, and also

+

+7

+00:00:17,020 --> 00:00:19,440

+interviewed several Linux developers. And by

+

+8

+00:00:19,440 --> 00:00:21,710

+doing that, they were able to come up with a software

+

+9

+00:00:21,710 --> 00:00:25,260

+architecture of Linux at different levels of obstruction. So the one that

+

+10

+00:00:25,260 --> 00:00:27,365

+I'm showing you here on the left, is the

+

+11

+00:00:27,365 --> 00:00:31,120

+software architecture at the level of Linux's main subsystems. So

+

+12

+00:00:31,120 --> 00:00:34,540

+this is the prescriptive architecture of Linux at the level

+

+13

+00:00:34,540 --> 00:00:38,060

+of Linux's main subsystems. So the researchers, after identifying this

+

+14

+00:00:38,060 --> 00:00:40,420

+architecture, they showed it to the developers, and the

+

+15

+00:00:40,420 --> 00:00:43,180

+developers agreed that, that was indeed the architecture of the

+

+16

+00:00:43,180 --> 00:00:46,540

+system. The researchers then studied the source code of Linux

+

+17

+00:00:46,540 --> 00:00:50,380

+and reverse engineered its actual architecture. So the architecture as

+

+18

+00:00:50,380 --> 00:00:54,020

+implemented, it's descriptive architecture. And this one here, on the

+

+19

+00:00:54,020 --> 00:00:56,610

+right, is the result. And as you can see, they found

+

+20

+00:00:56,610 --> 00:01:00,940

+a number of differences or violations between the prescriptive architecture and

+

+21

+00:01:00,940 --> 00:01:04,080

+the descriptive architecture. In particular, if we look at this architecture,

+

+22

+00:01:04,080 --> 00:01:06,820

+we can see that pretty much everything talks to everything else,

+

+23

+00:01:06,820 --> 00:01:09,010

+which is, in general, not a good thing. And in addition

+

+24

+00:01:09,010 --> 00:01:11,890

+to that, there are also several things that don't really make

+

+25

+00:01:11,890 --> 00:01:15,630

+much sense. For example the library calls the file system and

+

+26

+00:01:15,630 --> 00:01:19,290

+also the network interface which doesn't make much sense. Another thing

+

+27

+00:01:19,290 --> 00:01:21,850

+that is kind of weird is the fact that file system

+

+28

+00:01:21,850 --> 00:01:25,250

+calls the kernel initialization code. Which is also a little bit

+

+29

+00:01:25,250 --> 00:01:28,100

+weird. So basically, the bottom line here is that not even

+

+30

+00:01:28,100 --> 00:01:32,020

+the developers realized how the actual architecture of the system was,

+

+31

+00:01:32,020 --> 00:01:35,170

+and how it was different from the architecture they have conceived.

+

+32

+00:01:35,170 --> 00:01:37,870

+And in fact another interesting thing here is the reaction of

+

+33

+00:01:37,870 --> 00:01:41,020

+the developers when they were shown the actual architecture. So basically

+

+34

+00:01:41,020 --> 00:01:44,110

+they justified the differences by saying things such as, well you

+

+35

+00:01:44,110 --> 00:01:47,120

+know it had to be done fast, and therefore I changed it

+

+36

+00:01:47,120 --> 00:01:50,110

+and then I didn't have time to go back and update the documentation

+

+37

+00:01:50,110 --> 00:01:52,800

+and things of this sort. And by the way these are exactly some

+

+38

+00:01:52,800 --> 00:01:55,640

+of the reasons that we mentioned early on in the lesson for the

+

+39

+00:01:55,640 --> 00:01:58,410

+discrepancy between prescriptive and descriptive software

+

+40

+00:01:58,410 --> 00:01:59,990

+architecture. So one last thing that I

+

+41

+00:01:59,990 --> 00:02:02,840

+want to mention here as an aside and we can get back to

+

+42

+00:02:02,840 --> 00:02:06,495

+that later is the fact that you can probably clearly show how representing

+

+43

+00:02:06,495 --> 00:02:10,880

+software architectures graphically can be extremely useful, because it allows

+

+44

+00:02:10,880 --> 00:02:14,140

+for easily seeing the structure of the system. Look at different

+

+45

+00:02:14,140 --> 00:02:17,140

+views identify problematic points and so on. And we will see

+

+46

+00:02:17,140 --> 00:02:19,740

+how that can be useful in many cases also later on.