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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
1
00:00:00,150 --> 00:00:02,790
And there are two important and related concepts that
2
00:00:02,790 --> 00:00:04,790
have to do with the way software architecture
3
00:00:04,790 --> 00:00:08,109
evolves. The first one is Architectural Drift, which is
4
00:00:08,109 --> 00:00:12,140
the introduction of architectural design decisions that are orthogonal to
5
00:00:12,140 --> 00:00:15,870
a system's prescriptive architecture. That is, they're not included
6
00:00:15,870 --> 00:00:20,080
in, encompassed by, or implied by the prescriptive architecture.
7
00:00:20,080 --> 00:00:22,300
And the result of Architectural Drift is that you
8
00:00:22,300 --> 00:00:25,220
start from a clean architecture, like the one that I'm
9
00:00:25,220 --> 00:00:28,830
showing here, and then you start adding pieces without following a clear plan.
10
00:00:28,830 --> 00:00:32,229
Like, for example, here, we add an additional room here, but we don't really
11
00:00:32,229 --> 00:00:34,380
do it in the right way so we need to add something else
12
00:00:34,380 --> 00:00:37,090
to keep it stable. And then maybe we want some more room so we
13
00:00:37,090 --> 00:00:40,310
add a tent. And then another side of the house, it doesn't really
14
00:00:40,310 --> 00:00:43,540
follow the same architecture but it doesn't matter, we just put it there because
15
00:00:43,540 --> 00:00:46,690
we want to expand. And maybe then we want to put something classic
16
00:00:46,690 --> 00:00:48,210
there, even though it doesn't really fit
17
00:00:48,210 --> 00:00:50,520
the overall design and the overall architecture.
18
00:00:50,520 --> 00:00:52,160
So I think you get my point, the fact
19
00:00:52,160 --> 00:00:56,210
that the architecture then becomes unnecessarily complex, hard to understand
20
00:00:56,210 --> 00:00:58,410
and ultimately awkward, just like the one that I'm
21
00:00:58,410 --> 00:01:00,880
showing here, that goes from the original building into this
22
00:01:00,880 --> 00:01:04,870
final monstrosity. The second concept is Architectural Erosion, which
23
00:01:04,870 --> 00:01:08,560
is the introduction of architectural design decisions that violate a
24
00:01:08,560 --> 00:01:12,070
system prescriptive architecture. So in this case, that we were
25
00:01:12,070 --> 00:01:14,070
introducing decisions that were orthogonal,
26
00:01:14,070 --> 00:01:15,580
here, were introducing this decisions
27
00:01:15,580 --> 00:01:17,410
that don't comply with the prescriptive
28
00:01:17,410 --> 00:01:20,140
architecture. And the result of Architectural Erosion
29
00:01:20,140 --> 00:01:22,590
is typically a poor architecture an
30
00:01:22,590 --> 00:01:24,550
architecture that is going to have problems in
31
00:01:24,550 --> 00:01:27,040
the future. So both Architectural Drift
32
00:01:27,040 --> 00:01:29,640
and Architectural Erosion take you away in
33
00:01:29,640 --> 00:01:32,940
different ways from what you think your software architecture is or should be.
|