209 lines
4.9 KiB
Plaintext
209 lines
4.9 KiB
Plaintext
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.
|
|
|