about summary refs log tree commit diff
path: root/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/6 - The Software Crisis - lang_en.srt
blob: 41061a5f7b35106d15e433ee9ee20744a733fd39 (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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
1
00:00:00,072 --> 00:00:02,190
To do that we'll have to go back in time to

2
00:00:02,190 --> 00:00:05,280
the late 60s. So what was happening in the 60s? Well for

3
00:00:05,280 --> 00:00:08,410
example the first man landed on the moon. That was also

4
00:00:08,410 --> 00:00:11,720
time when Woodstock took place and also the time when the first

5
00:00:11,720 --> 00:00:16,149
60 second picture from Polaroid was created. Concurrently to these events,

6
00:00:16,149 --> 00:00:18,910
which you probably didn't witness in first person, that was also the

7
00:00:18,910 --> 00:00:22,280
time when people started to realize that they were not able

8
00:00:22,280 --> 00:00:25,610
to build the software they needed. This happened for several reasons and

9
00:00:25,610 --> 00:00:29,220
resulted in what we call the software crisis. So let's

10
00:00:29,220 --> 00:00:31,820
look at some of the most important reasons behind this

11
00:00:31,820 --> 00:00:35,760
crisis. The first cause was the rising demand for software.

12
00:00:35,760 --> 00:00:38,500
Now you're used to see software everywhere: in your phone,

13
00:00:38,500 --> 00:00:41,530
in your car, even your washing machine. Before the 60s,

14
00:00:41,530 --> 00:00:44,590
however, the size and complexity of software was very limited

15
00:00:44,590 --> 00:00:47,580
and hardware components were really dominating the scene. Then things

16
00:00:47,580 --> 00:00:51,490
started to change and software started to be increasingly prevalent.

17
00:00:51,490 --> 00:00:53,940
So we move from a situation where everything was mostly

18
00:00:53,940 --> 00:00:57,380
hardware to a situation in which software became more and more

19
00:00:57,380 --> 00:01:00,660
important. To give an example, I'm going to show you the growth

20
00:01:00,660 --> 00:01:04,080
in the software demand at NASA along those years. And in

21
00:01:04,080 --> 00:01:07,610
particular, from the 1950s to more or less 2000. And this

22
00:01:07,610 --> 00:01:10,350
is just a qualitative plot but that's more or less the

23
00:01:10,350 --> 00:01:13,880
ways things went. So the demand for software in NASA grow

24
00:01:13,880 --> 00:01:16,930
exponentially. And the same happened in a lot of other companies.

25
00:01:16,930 --> 00:01:19,020
For example, just to cite one, for Boeing. So the

26
00:01:19,020 --> 00:01:22,350
amount of software on airplanes became larger and larger. The

27
00:01:22,350 --> 00:01:26,170
second cause for the software crisis was the increasing amount

28
00:01:26,170 --> 00:01:30,210
of development effort needed due to the increase of product complexity.

29
00:01:30,210 --> 00:01:34,260
Unfortunately, software complexity does not increase linearly with size. It

30
00:01:34,260 --> 00:01:36,170
is not the same thing to write software for a

31
00:01:36,170 --> 00:01:39,410
class exercise or a small project, or a temp project,

32
00:01:39,410 --> 00:01:41,970
than it is to build a software for a word processor,

33
00:01:41,970 --> 00:01:45,950
an operating system, a distributed system, or even more complex and larger

34
00:01:45,950 --> 00:01:49,390
system. And what I'm giving here is just an indicative size for

35
00:01:49,390 --> 00:01:52,643
the software so the class exercise might be 100 lines of code,

36
00:01:52,643 --> 00:01:55,600
the small project might be 1000 lines of code, in the other thousand

37
00:01:55,600 --> 00:01:58,328
lines of code, and so on and so forth. For the former,

38
00:01:58,328 --> 00:02:01,510
the heroic effort of an individual developer can get the job done.

39
00:02:01,510 --> 00:02:03,850
So that's what we call a programming effort. If you're a good

40
00:02:03,850 --> 00:02:07,340
programmer, you can go sit down and do it, right. For the latter,

41
00:02:07,340 --> 00:02:09,330
this is not possible. This is what we called the

42
00:02:09,330 --> 00:02:13,810
software engineering effort. In fact, no matter how much programming languages,

43
00:02:13,810 --> 00:02:17,280
development environments, and software tools improve, developers could not keep

44
00:02:17,280 --> 00:02:20,220
up with increasing software size and complexity. Which leads us to

45
00:02:20,220 --> 00:02:22,280
the third problem that I want to mention and the

46
00:02:22,280 --> 00:02:25,020
third reason for the software crisis. And this cause is the

47
00:02:25,020 --> 00:02:28,790
slow developer's productivity growth. So let me show this again

48
00:02:28,790 --> 00:02:32,243
with a qualitative diagram. And this is taken from the IEEE

49
00:02:32,243 --> 00:02:35,550
Software Magazine. And what I'm showing here is the growth in

50
00:02:35,550 --> 00:02:39,930
software size and complexity over time, and how the developers' productivity

51
00:02:39,930 --> 00:02:43,800
really couldn't keep up with this additional software complexity, which resulted

52
00:02:43,800 --> 00:02:47,170
in this gap between what was needed and what was actually available.