diff options
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.srt | 572 |
1 files changed, 0 insertions, 572 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 deleted file mode 100644 index 858a75a..0000000 --- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt +++ /dev/null @@ -1,572 +0,0 @@ -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]. - |