about summary refs log tree commit diff
path: root/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt
diff options
context:
space:
mode:
Diffstat (limited to 'usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt')
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt572
1 files changed, 572 insertions, 0 deletions
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt
new file mode 100644
index 0000000..858a75a
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt
@@ -0,0 +1,572 @@
+1
+00:00:00,150 --> 00:00:02,106
+First, let me start by asking a couple of very
+
+2
+00:00:02,106 --> 00:00:04,820
+natural questions that you might have when considering whether to take
+
+3
+00:00:04,820 --> 00:00:07,800
+this course. The first one is what is software engineering.
+
+4
+00:00:07,800 --> 00:00:10,050
+And the second, very related one, is why do we need
+
+5
+00:00:10,050 --> 00:00:12,430
+it? So what I did was actually to go out
+
+6
+00:00:12,430 --> 00:00:15,430
+and ask some of the main experts in the field, both
+
+7
+00:00:15,430 --> 00:00:18,290
+in academia and industry, these very questions and let's see what
+
+8
+00:00:18,290 --> 00:00:22,160
+they said. What is software engineering and why is it important?
+
+9
+00:00:23,170 --> 00:00:25,150
+>> Okay, can I start with another question?
+
+10
+00:00:25,150 --> 00:00:26,020
+>> Of course.
+
+11
+00:00:26,020 --> 00:00:31,290
+>> Okay, first what is a computer? It's a programmable device. So the essence
+
+12
+00:00:31,290 --> 00:00:34,730
+of computing is programming. So program development
+
+13
+00:00:34,730 --> 00:00:37,240
+is basically the most essential use of the
+
+14
+00:00:37,240 --> 00:00:41,010
+computer. So software engineering is the discipline
+
+15
+00:00:41,010 --> 00:00:44,850
+that investigates program development. So, how can it
+
+16
+00:00:44,850 --> 00:00:47,390
+been done more efficiently? What's the best
+
+17
+00:00:47,390 --> 00:00:50,170
+way of doing program development? And how can
+
+18
+00:00:50,170 --> 00:00:53,140
+you develop reliable programs? So that's how I would define
+
+19
+00:00:53,140 --> 00:00:55,060
+it. But I consider any
+
+20
+00:00:55,060 --> 00:00:57,345
+software development activity software engineering activity
+
+21
+00:00:58,825 --> 00:01:04,239
+>> Software engineering is the systematic application of methods to build
+
+22
+00:01:04,239 --> 00:01:07,884
+software in a rigorous way. And I think one of the
+
+23
+00:01:07,884 --> 00:01:11,196
+aspects that I like to bring into the notion of software
+
+24
+00:01:11,196 --> 00:01:15,228
+engineering is that it's something that involves not only kind of
+
+25
+00:01:15,228 --> 00:01:18,612
+technically building the system but understanding the
+
+26
+00:01:18,612 --> 00:01:22,317
+requirements, working with stake holders. Trying to
+
+27
+00:01:22,317 --> 00:01:28,232
+find a solution that balances all of the stakeholder needs in order to deliver
+
+28
+00:01:28,232 --> 00:01:34,338
+the software thats tested and its rigorous to meet the needs of a stakeholder.
+
+29
+00:01:34,338 --> 00:01:37,656
+Well, software engineering is the whole process
+
+30
+00:01:37,656 --> 00:01:41,460
+of creation of software using engineering principles.
+
+31
+00:01:41,460 --> 00:01:42,886
+>> My view is kind of a holistic
+
+32
+00:01:42,886 --> 00:01:45,490
+view and I think about it from the perspective
+
+33
+00:01:45,490 --> 00:01:49,440
+of how is software engineering different from programming.
+
+34
+00:01:49,440 --> 00:01:52,940
+So, I think that research about programming is all
+
+35
+00:01:52,940 --> 00:01:57,550
+about the create part of software. And that
+
+36
+00:01:57,550 --> 00:02:00,270
+software engineering is about the entire life cycle. So,
+
+37
+00:02:00,270 --> 00:02:03,070
+that's one aspect. And the other aspect of the
+
+38
+00:02:03,070 --> 00:02:07,350
+definition is it's about quality, the quality of software.
+
+39
+00:02:07,350 --> 00:02:12,330
+Software engineering even considers things long after you ship which we all know
+
+40
+00:02:12,330 --> 00:02:18,310
+is one of the, it is the largest economic piece of software development.
+
+41
+00:02:18,310 --> 00:02:22,990
+>> So, improve, software engineering process
+
+42
+00:02:22,990 --> 00:02:26,440
+for better software productivity and quality.
+
+43
+00:02:26,440 --> 00:02:32,472
+>> The set of activities that one engages in when building software
+
+44
+00:02:32,472 --> 00:02:39,634
+systems or software products. It's fundamentally a venue-creating
+
+45
+00:02:39,634 --> 00:02:45,492
+activity. It involves social processes.
+
+46
+00:02:45,492 --> 00:02:47,247
+>> Software engineering is the act
+
+47
+00:02:47,247 --> 00:02:49,652
+of many people working together and putting
+
+48
+00:02:49,652 --> 00:02:52,057
+together many versions of large and complex
+
+49
+00:02:52,057 --> 00:02:57,110
+systems. And our world depends on software,
+
+50
+00:02:57,110 --> 00:02:58,910
+software is immensely complex and we need
+
+51
+00:02:58,910 --> 00:03:01,700
+many, many smart people to build these things.
+
+52
+00:03:01,700 --> 00:03:05,610
+>> Well, engineering I think is the activity of envisioning and
+
+53
+00:03:05,610 --> 00:03:10,180
+realizing valuable new functions with sufficient
+
+54
+00:03:10,180 --> 00:03:13,500
+and justifiable confidence that the resulting
+
+55
+00:03:13,500 --> 00:03:18,190
+system will have all of the critical quality attributes that are necessary
+
+56
+00:03:18,190 --> 00:03:22,140
+for the system to be a success. And software engineering is the
+
+57
+00:03:22,140 --> 00:03:24,790
+activity of doing this not only for
+
+58
+00:03:24,790 --> 00:03:27,550
+the software components of engineering systems but
+
+59
+00:03:28,830 --> 00:03:31,740
+for the system overall, given that it's
+
+60
+00:03:31,740 --> 00:03:35,500
+so heavily reliant on it's underlying software technologies.
+
+61
+00:03:35,500 --> 00:03:40,440
+>> So, I would say software engineering is the
+
+62
+00:03:40,440 --> 00:03:44,070
+kind of art and practice of building software systems.
+
+63
+00:03:44,070 --> 00:03:47,610
+>> Software engineering, in a nutshell, is a set of
+
+64
+00:03:47,610 --> 00:03:52,140
+methods and principles and techniques that we have developed to enable us to
+
+65
+00:03:53,220 --> 00:03:57,830
+engineer, or build, large software systems that
+
+66
+00:03:59,090 --> 00:04:03,960
+outstrip or outpace one engineer's or even a small
+
+67
+00:04:03,960 --> 00:04:08,900
+team of engineer's ability or abilities to understand
+
+68
+00:04:08,900 --> 00:04:13,330
+and construct and maintain
+
+69
+00:04:13,330 --> 00:04:17,339
+over time. So it requires a lot of people, it requires a long,
+
+70
+00:04:17,339 --> 00:04:21,820
+term investment by an organization or a number of organizations, and often times
+
+71
+00:04:21,820 --> 00:04:28,040
+it requires support for systems that that are intended for one purpose but end
+
+72
+00:04:28,040 --> 00:04:33,930
+up getting used for many additional purposes in addition to the original one.
+
+73
+00:04:33,930 --> 00:04:38,656
+>> Software engineering is about building and constructing very large-scale
+
+74
+00:04:38,656 --> 00:04:42,800
+high-quality systems, so the high quality is the big issue.
+
+75
+00:04:42,800 --> 00:04:46,268
+>> Software engineering is engineering discipline of developing
+
+76
+00:04:46,268 --> 00:04:52,800
+software-based systems, usually embedded into larger systems composed of
+
+77
+00:04:52,800 --> 00:04:58,544
+hardware and and humans [LAUGH] and business
+
+78
+00:04:58,544 --> 00:05:04,943
+processes and processes in general. And why is that important?
+
+79
+00:05:04,943 --> 00:05:06,971
+Well, because software is pervasive in all industry sectors
+
+80
+00:05:06,971 --> 00:05:09,001
+and therefore systems must be reliable, safe and secure.
+
+81
+00:05:09,001 --> 00:05:13,232
+>> Why can't we just get that by sitting down and writing software?
+
+82
+00:05:13,232 --> 00:05:16,697
+>> Well, you could if software was small and
+
+83
+00:05:16,697 --> 00:05:20,162
+simple enough to be developed by one or two
+
+84
+00:05:20,162 --> 00:05:25,360
+people together in a room. But software development now
+
+85
+00:05:25,360 --> 00:05:31,550
+is distributed, involves teams of people with different backgrounds
+
+86
+00:05:31,550 --> 00:05:37,450
+who have to communicate with each other. It also involves customers,
+
+87
+00:05:37,450 --> 00:05:42,512
+clients, users. Software engineers have to work with
+
+88
+00:05:42,512 --> 00:05:47,462
+hardware engineers, with domain experts and therefore,
+
+89
+00:05:47,462 --> 00:05:52,233
+well, no, we can't simply sit down and start coding.
+
+90
+00:05:52,233 --> 00:05:57,380
+>> Software engineering is mostly being able
+
+91
+00:05:57,380 --> 00:06:02,775
+to program. And you need to be able to put big
+
+92
+00:06:02,775 --> 00:06:06,920
+systems together so that they actually work. That's my simple definition.
+
+93
+00:06:06,920 --> 00:06:09,210
+>> And if you don't use software engineering practices,
+
+94
+00:06:09,210 --> 00:06:10,670
+you're not going to be able to put them together?
+
+95
+00:06:10,670 --> 00:06:13,290
+>> Well, you're not going to be able to reliably
+
+96
+00:06:13,290 --> 00:06:16,160
+put them together. So basically, you could maybe hack something up,
+
+97
+00:06:16,160 --> 00:06:18,750
+but it's not going to necessarily stand the test of time.
+
+98
+00:06:18,750 --> 00:06:21,221
+If somebody wants to change it it's probably going to break.
+
+99
+00:06:21,221 --> 00:06:24,140
+>> It's important
+
+100
+00:06:24,140 --> 00:06:29,700
+because if you don't think about how you're building this system and
+
+101
+00:06:29,700 --> 00:06:31,600
+how you're trading off different aspects,
+
+102
+00:06:31,600 --> 00:06:35,580
+like performance and scalability and reliability, then
+
+103
+00:06:35,580 --> 00:06:39,900
+it's going to end up breaking or not lasting very long or not,
+
+104
+00:06:39,900 --> 00:06:42,900
+not doing everything that you want it to do, or being really expensive.
+
+105
+00:06:43,960 --> 00:06:45,800
+>> If it's not done in a principled way it will
+
+106
+00:06:45,800 --> 00:06:49,220
+be bad and every user will suffer. That's why we need
+
+107
+00:06:49,220 --> 00:06:49,970
+software engineering.
+
+108
+00:06:49,970 --> 00:06:56,252
+>> Why is it important? Because, I mean these two goal, productivity, faster,
+
+109
+00:06:56,252 --> 00:06:59,480
+in developing software. And higher quality
+
+110
+00:06:59,480 --> 00:07:03,551
+would be apparently important. Software is everywhere.
+
+111
+00:07:03,551 --> 00:07:08,260
+>> It's important because we use software in everyday life. Everything's
+
+112
+00:07:08,260 --> 00:07:14,120
+built on software systems. And these are ubiquitous across our society.
+
+113
+00:07:14,120 --> 00:07:14,300
+>> It's
+
+114
+00:07:14,300 --> 00:07:20,820
+important because software is everywhere around us and the way we build it,
+
+115
+00:07:20,820 --> 00:07:26,910
+and the way we maintain it, is something that determines almost a basic
+
+116
+00:07:26,910 --> 00:07:33,940
+quality of life nowadays. And getting that software right can make a difference,
+
+117
+00:07:33,940 --> 00:07:39,590
+oftentimes, between a really fun product and one that you won't like to use
+
+118
+00:07:40,640 --> 00:07:45,750
+a reasonably successful company, or one that fails. And in
+
+119
+00:07:45,750 --> 00:07:49,690
+more extreme cases even the difference between life and death,
+
+120
+00:07:49,690 --> 00:07:51,510
+if you think about the software that runs in the
+
+121
+00:07:51,510 --> 00:07:56,380
+airplane on which many of you fly on a regular basis.
+
+122
+00:07:56,380 --> 00:08:00,790
+>> There are programs out there that if they screw up we are all screwed.
+
+123
+00:08:00,790 --> 00:08:02,440
+>> Software engineering is crucially
+
+124
+00:08:02,440 --> 00:08:06,460
+important because it's the engineering discipline
+
+125
+00:08:06,460 --> 00:08:10,250
+that is uniquely capable of carrying out
+
+126
+00:08:10,250 --> 00:08:13,848
+the engineering mission for software reliant systems.
+
+127
+00:08:13,848 --> 00:08:17,620
+>> In the U.S we've all seen an unfortunate example with
+
+128
+00:08:17,620 --> 00:08:23,032
+a system that went badly wrong in healthcare.gov and that system wasn't
+
+129
+00:08:23,032 --> 00:08:26,740
+engineered correctly. And I think if we look at the reasons for
+
+130
+00:08:26,740 --> 00:08:32,350
+that, they stem back to somewhere at the intersection between requirements and
+
+131
+00:08:32,350 --> 00:08:37,470
+architecture and politics and project management, and all of these things are
+
+132
+00:08:37,470 --> 00:08:43,270
+important concepts that have to go into the software engineering mix.
+
+133
+00:08:43,270 --> 00:08:45,570
+>> It would end up in lots and lots of chaos because people
+
+134
+00:08:45,570 --> 00:08:47,220
+wouldn't know how to organize themselves and
+
+135
+00:08:47,220 --> 00:08:49,400
+wouldn't know how to organize software. Many
+
+136
+00:08:49,400 --> 00:08:53,830
+of software engineering has very simple rules that you need to apply properly in
+
+137
+00:08:53,830 --> 00:08:57,280
+order to get things done. And people who look at these rules and think,
+
+138
+00:08:57,280 --> 00:09:01,050
+these rules are so super simple. This is totally obvious. But once
+
+139
+00:09:01,050 --> 00:09:05,495
+you try to apply them, you'll find out they're not obvious at all.
+
+140
+00:09:05,495 --> 00:09:07,670
+>> Now that we've heard these experts, let me show you an
+
+141
+00:09:07,670 --> 00:09:10,080
+example that illustrates what can happen
+
+142
+00:09:10,080 --> 00:09:12,410
+when software engineering practices are not suitably
+
+143
+00:09:15,310 --> 00:09:24,010
+applied. [NOISE].
+