about summary refs log tree commit diff
path: root/usth/ICT2.7/P3L1 Software Architecture Subtitles/6 - Architectural Evolution - lang_en_vs5.srt
blob: edcf77e911e9f012420f7476d48c34dc11d49ad1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
1
00:00:00,090 --> 00:00:02,810
To do that let's look at how architectural evolution

2
00:00:02,810 --> 00:00:06,880
occurs in practice. Ideally when a system evolves, its prescriptive

3
00:00:06,880 --> 00:00:09,340
architecture should be modified first. Just like when you

4
00:00:09,340 --> 00:00:12,170
modify a building. You change the blueprint and then you

5
00:00:12,170 --> 00:00:13,940
change the actual building. You don't go the other

6
00:00:13,940 --> 00:00:17,820
way around. In software, unfortunately this rarely ever happens in

7
00:00:17,820 --> 00:00:21,706
practice. In practice the system, and therefore it's descriptive

8
00:00:21,706 --> 00:00:25,150
architecture are often directly modified. Like in this case that

9
00:00:25,150 --> 00:00:27,870
I'm showing here. So what happens is that the architecture

10
00:00:27,870 --> 00:00:32,259
as conceived does not change. Whereas the architecture as implemented, does

11
00:00:32,259 --> 00:00:35,600
change. And therefore these two things start diverging. And this really

12
00:00:35,600 --> 00:00:38,720
happens for a number of reasons. So I'm just going to list

13
00:00:38,720 --> 00:00:41,740
a few of those reasons here. In some cases it

14
00:00:41,740 --> 00:00:45,620
just happens for plain sloppiness. I need to make this modification

15
00:00:45,620 --> 00:00:47,290
and I don't really want to go back and look at

16
00:00:47,290 --> 00:00:50,610
the prescriptive architecture modified. I'm just going to make the change, and

17
00:00:50,610 --> 00:00:53,800
maybe I'll fix the description later. And then you never really get

18
00:00:53,800 --> 00:00:56,950
to it. In other cases you do this because of the perception

19
00:00:56,950 --> 00:01:00,290
of short deadlines. If you have to do something by this afternoon,

20
00:01:00,290 --> 00:01:01,300
you're not going through a four

21
00:01:01,300 --> 00:01:03,410
month software architecture review, you normally just

22
00:01:03,410 --> 00:01:06,460
get to it, and do it. In some cases a prescriptive architecture

23
00:01:06,460 --> 00:01:09,510
is not even present, so there's a lack of documentation. So in these

24
00:01:09,510 --> 00:01:12,450
cases, clearly, you cannot go and modify something that does not even

25
00:01:12,450 --> 00:01:15,880
exist, and so you jump directly to the code and start modifying that.

26
00:01:15,880 --> 00:01:18,280
And as I said there's many, many more

27
00:01:18,280 --> 00:01:21,080
other reasons why that happen. But important point here is

28
00:01:21,080 --> 00:01:23,770
that it does happen and it does happen often

29
00:01:23,770 --> 00:01:27,250
and the result is that prescriptive and descriptive architectures diverge.