about summary refs log tree commit diff
path: root/usth/ICT2.7/P1L1 Introduction and Overview Subtitles
diff options
context:
space:
mode:
Diffstat (limited to 'usth/ICT2.7/P1L1 Introduction and Overview Subtitles')
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/1 - Introduction - lang_en.srt40
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/10 - Software Development - lang_en.srt108
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/11 - Software Process - lang_en.srt96
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/12 - Preliminary Questions - lang_en.srt32
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/13 - Preliminary Questions Solution - lang_en.srt16
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/14 - Preliminary Questions - lang_en.srt24
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/15 - Preliminary Questions Solution - lang_en.srt32
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/16 - Software Phases - lang_en.srt100
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/17 - Tools of the Trade - lang_en.srt160
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/2 - Importance of Software Engineering - lang_en.srt572
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/3 - Software Failure Quiz - lang_en.srt32
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/4 - Software Failure Quiz Solution - lang_en.srt48
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/5 - Discipline of Software Engineering - lang_en.srt80
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/6 - The Software Crisis - lang_en.srt208
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/7 - The Software Crisis Quiz - lang_en.srt44
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/8 - The Software Crisis Quiz Solution - lang_en.srt52
-rw-r--r--usth/ICT2.7/P1L1 Introduction and Overview Subtitles/9 - Evidence of the Software Crisis - lang_en.srt116
17 files changed, 1760 insertions, 0 deletions
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/1 - Introduction - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/1 - Introduction - lang_en.srt
new file mode 100644
index 0000000..aea69ae
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/1 - Introduction - lang_en.srt
@@ -0,0 +1,40 @@
+1
+00:00:00,350 --> 00:00:03,570
+Hi, everybody, and welcome to the first lesson
+
+2
+00:00:03,570 --> 00:00:07,970
+of the Software Engineering Course. In this introductory lesson
+
+3
+00:00:07,970 --> 00:00:09,820
+I will first provide an overview of the
+
+4
+00:00:09,820 --> 00:00:13,100
+whole course and then try to answer two important
+
+5
+00:00:13,100 --> 00:00:16,630
+questions about software engineering, which are, what is
+
+6
+00:00:16,630 --> 00:00:20,310
+software engineering and why do we need it? And
+
+7
+00:00:20,310 --> 00:00:22,370
+to spice up the content a bit I
+
+8
+00:00:22,370 --> 00:00:25,480
+will also interview several experts in the software engineering
+
+9
+00:00:25,480 --> 00:00:30,080
+field from both academia and industry and ask them these
+
+10
+00:00:30,080 --> 00:00:34,410
+very questions. So without any further ado, let's begin the lesson.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/10 - Software Development - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/10 - Software Development - lang_en.srt
new file mode 100644
index 0000000..b1f822e
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/10 - Software Development - lang_en.srt
@@ -0,0 +1,108 @@
+1
+00:00:00,060 --> 00:00:01,970
+Now that we saw how software engineering was born and we
+
+2
+00:00:01,970 --> 00:00:04,580
+saw some of the problems that led to the birth of software
+
+3
+00:00:04,580 --> 00:00:07,020
+engineering. Let's see how we can do better. How can we
+
+4
+00:00:07,020 --> 00:00:10,580
+preform software development in a smarter, in a better way, a more
+
+5
+00:00:10,580 --> 00:00:13,150
+successful way? So what I'm going to show here is the
+
+6
+00:00:13,150 --> 00:00:14,730
+way I see software development. To
+
+7
+00:00:14,730 --> 00:00:17,080
+me software development is fundementally going
+
+8
+00:00:17,080 --> 00:00:21,150
+from an abstract idea in somebody's head, for example, the customer's head,
+
+9
+00:00:21,150 --> 00:00:25,300
+to a concrete system that actually implements that idea and hopefully it
+
+10
+00:00:25,300 --> 00:00:27,640
+does it in the right way. And this is a very
+
+11
+00:00:27,640 --> 00:00:31,290
+complex process. It can be overwhelming. So, unless we are talking about
+
+12
+00:00:31,290 --> 00:00:34,800
+the trivial system, it's very complex for us to keep in mind
+
+13
+00:00:34,800 --> 00:00:37,020
+all the different aspects of the systems, and to do all the
+
+14
+00:00:37,020 --> 00:00:40,270
+different steps required to build this system, automatically. So that's when
+
+15
+00:00:40,270 --> 00:00:43,630
+software processes come to the rescue. So what is a software process?
+
+16
+00:00:43,630 --> 00:00:46,380
+A software process is nothing else but a way of breaking down
+
+17
+00:00:46,380 --> 00:00:50,320
+this otherwise unmanageable task into smaller steps. In smaller steps that we
+
+18
+00:00:50,320 --> 00:00:53,270
+can handle. And that can be tackled individually. So having a
+
+19
+00:00:53,270 --> 00:00:56,580
+software process is of fundamental importance for several reasons. First of
+
+20
+00:00:56,580 --> 00:00:59,530
+all, for non-trivial systems, you can't just do it by getting
+
+21
+00:00:59,530 --> 00:01:01,680
+it, by just sitting down and developing. What you have to
+
+22
+00:01:01,680 --> 00:01:04,629
+do instead is to break down the complexity in a systematic
+
+23
+00:01:04,629 --> 00:01:08,250
+way. So software processes are normally systematic. And you need to
+
+24
+00:01:08,250 --> 00:01:11,370
+break down this complexity, in a more or less formal way.
+
+25
+00:01:11,370 --> 00:01:15,800
+So software processes are also a formal, or semiformal, way of
+
+26
+00:01:15,800 --> 00:01:19,120
+discussing, or describing, how software should be developed.
+
+27
+00:01:19,120 --> 00:01:21,370
+So what are the steps involved in developing software?
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/11 - Software Process - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/11 - Software Process - lang_en.srt
new file mode 100644
index 0000000..98592eb
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/11 - Software Process - lang_en.srt
@@ -0,0 +1,96 @@
+1
+00:00:00,200 --> 00:00:02,580
+One thing you need to know right away about software processes
+
+2
+00:00:02,580 --> 00:00:05,750
+is that there's not just one single process, but there are multiple,
+
+3
+00:00:05,750 --> 00:00:08,840
+possible processes, depending on your context, depending on the kind of
+
+4
+00:00:08,840 --> 00:00:11,535
+applications that you are developing. In this course, we are going to try
+
+5
+00:00:11,535 --> 00:00:14,760
+to cover the spectrum of the possible processes, as much as
+
+6
+00:00:14,760 --> 00:00:18,900
+possible, by focusing on four main software processes. The first one is
+
+7
+00:00:18,900 --> 00:00:22,480
+what we call normally the waterfall process. And, we call it waterfall
+
+8
+00:00:22,480 --> 00:00:25,490
+because in the process we go from one phase to the other
+
+9
+00:00:25,490 --> 00:00:28,300
+in the same way in which water follows the flow
+
+10
+00:00:28,300 --> 00:00:30,910
+in a waterfall. The second process that we consider is what
+
+11
+00:00:30,910 --> 00:00:34,580
+we call evolutionary prototyping, and in this case, instead of
+
+12
+00:00:34,580 --> 00:00:37,790
+following this set of rigid steps, all we're trying to do
+
+13
+00:00:37,790 --> 00:00:40,930
+is to start with an initial prototype and evolve it
+
+14
+00:00:40,930 --> 00:00:43,670
+based on the feedback from the customer. We will then move
+
+15
+00:00:43,670 --> 00:00:47,150
+towards a slightly more formal process, which is the rational unified
+
+16
+00:00:47,150 --> 00:00:50,590
+process or the unified software process. And this is a kind
+
+17
+00:00:50,590 --> 00:00:53,040
+of project heavily based on the use of UML, so we
+
+18
+00:00:53,040 --> 00:00:56,263
+will also cover UML when discussing this kind of project. Finally,
+
+19
+00:00:56,263 --> 00:00:58,680
+the fourth kind of process we will consider is the family
+
+20
+00:00:58,680 --> 00:01:01,670
+of agile software processes. And these are processes in which we
+
+21
+00:01:01,670 --> 00:01:04,280
+sacrifice the discipline a little bi,t in order to be more
+
+22
+00:01:04,280 --> 00:01:07,380
+flexible and be more able to account for changes and in
+
+23
+00:01:07,380 --> 00:01:10,760
+particular for changes in requirements. We are going to cover each
+
+24
+00:01:10,760 --> 00:01:14,620
+one of these four processes extensively in the rest of the class.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/12 - Preliminary Questions - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/12 - Preliminary Questions - lang_en.srt
new file mode 100644
index 0000000..20ef47f
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/12 - Preliminary Questions - lang_en.srt
@@ -0,0 +1,32 @@
+1
+00:00:00,110 --> 00:00:01,450
+So, now before we actually jump to the
+
+2
+00:00:01,450 --> 00:00:03,410
+discussion of software processes I want to ask you
+
+3
+00:00:03,410 --> 00:00:05,770
+a couple of preliminary questions. The first one is,
+
+4
+00:00:05,770 --> 00:00:08,140
+what is the largest software system on which you
+
+5
+00:00:08,140 --> 00:00:10,860
+had worked? And you should enter here the size.
+
+6
+00:00:10,860 --> 00:00:12,850
+And the second question I'm going to ask is how
+
+7
+00:00:12,850 --> 00:00:15,070
+many LOC or how many lines of code per
+
+8
+00:00:15,070 --> 00:00:17,380
+day you were producing when working on this system?
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/13 - Preliminary Questions Solution - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/13 - Preliminary Questions Solution - lang_en.srt
new file mode 100644
index 0000000..fe239c6
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/13 - Preliminary Questions Solution - lang_en.srt
@@ -0,0 +1,16 @@
+1
+00:00:00,110 --> 00:00:01,620
+We're going to go back to these two questions
+
+2
+00:00:01,620 --> 00:00:03,260
+and to your answers later. But I wanted to
+
+3
+00:00:03,260 --> 00:00:05,810
+gather this information beforehand, so that your answers are
+
+4
+00:00:05,810 --> 00:00:08,590
+not biased, they're not influenced by this subsequent discussion.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/14 - Preliminary Questions - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/14 - Preliminary Questions - lang_en.srt
new file mode 100644
index 0000000..936b50d
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/14 - Preliminary Questions - lang_en.srt
@@ -0,0 +1,24 @@
+1
+00:00:00,090 --> 00:00:03,200
+So now I want to ask you one additional question, which is how many lines
+
+2
+00:00:03,200 --> 00:00:05,030
+of code a day do you think professional
+
+3
+00:00:05,030 --> 00:00:07,370
+software engineers produce? Do you think they produce
+
+4
+00:00:07,370 --> 00:00:12,160
+25 lines of code? Between 25 and 50? Between 50 and 100? Between 100 and 1000?
+
+5
+00:00:12,160 --> 00:00:13,720
+Or more than 1000 a day? And remember
+
+6
+00:00:13,720 --> 00:00:16,379
+that here we're talking about professional software engineers.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/15 - Preliminary Questions Solution - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/15 - Preliminary Questions Solution - lang_en.srt
new file mode 100644
index 0000000..1a040e2
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/15 - Preliminary Questions Solution - lang_en.srt
@@ -0,0 +1,32 @@
+1
+00:00:00,180 --> 00:00:03,450
+Studies has shown that, on average, developers produce between
+
+2
+00:00:03,450 --> 00:00:07,030
+50 and 100 lines of code a day. And that
+
+3
+00:00:07,030 --> 00:00:09,530
+might not seem much. Why, why only 50 to
+
+4
+00:00:09,530 --> 00:00:11,580
+100 lines of code in a whole day? And the
+
+5
+00:00:11,580 --> 00:00:14,350
+answer is because coding is not everything. When you
+
+6
+00:00:14,350 --> 00:00:17,020
+develop a system writing code is not the only thing
+
+7
+00:00:17,020 --> 00:00:18,890
+you have to do. It's not the only activity that
+
+8
+00:00:18,890 --> 00:00:20,800
+you have to perform. And that's a very important point.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/16 - Software Phases - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/16 - Software Phases - lang_en.srt
new file mode 100644
index 0000000..7fc30ef
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/16 - Software Phases - lang_en.srt
@@ -0,0 +1,100 @@
+1
+00:00:00,110 --> 00:00:03,730
+In fact, software processes are normally characterized by several phases, what
+
+2
+00:00:03,730 --> 00:00:07,240
+we call the software phases, and only one of these phases is
+
+3
+00:00:07,240 --> 00:00:09,970
+mainly focused on coding. The other phases are meant to support
+
+4
+00:00:09,970 --> 00:00:13,440
+other parts of software development. The first of these phases is called
+
+5
+00:00:13,440 --> 00:00:16,110
+requirements engineering and that's the phase in which we talk to
+
+6
+00:00:16,110 --> 00:00:19,640
+the customer, to the stakeholders, whoever we are building the software for.
+
+7
+00:00:19,640 --> 00:00:22,120
+And we try to understand what kind of system we need
+
+8
+00:00:22,120 --> 00:00:25,650
+to build. Then we use this information to define our design and
+
+9
+00:00:25,650 --> 00:00:28,840
+the design is the high-level structure, that then can become more
+
+10
+00:00:28,840 --> 00:00:31,800
+and more detailed, of our software system. Once we've defined our
+
+11
+00:00:31,800 --> 00:00:34,180
+design we can actually move to the next phase, which is
+
+12
+00:00:34,180 --> 00:00:37,480
+the implementation, in which we write code that implements the design which
+
+13
+00:00:37,480 --> 00:00:40,630
+we just defined. After implementing the code, we need to verify
+
+14
+00:00:40,630 --> 00:00:43,510
+and validate the code. We need to make sure that the code
+
+15
+00:00:43,510 --> 00:00:46,930
+behaves as intended. And finally, we need to maintain the code.
+
+16
+00:00:46,930 --> 00:00:48,992
+And maintenance involves several activities like,
+
+17
+00:00:48,992 --> 00:00:50,980
+for example, adding new functionality or
+
+18
+00:00:50,980 --> 00:00:54,568
+eliminating bugs from the code or responding to problems that
+
+19
+00:00:54,568 --> 00:00:57,420
+were reported from the field after we released the software.
+
+20
+00:00:57,420 --> 00:00:59,020
+We will look at all of these activities and of
+
+21
+00:00:59,020 --> 00:01:01,670
+the software development process in detail, in the rest of the
+
+22
+00:01:01,670 --> 00:01:03,610
+class. And for each activity, we will look at the
+
+23
+00:01:03,610 --> 00:01:06,460
+fundamental principles and how it is done currently. And in
+
+24
+00:01:06,460 --> 00:01:08,780
+some cases, we will also look at some advance ways
+
+25
+00:01:08,780 --> 00:01:11,680
+to do it. For example, more research approaches for that activity.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/17 - Tools of the Trade - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/17 - Tools of the Trade - lang_en.srt
new file mode 100644
index 0000000..077c0f8
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/17 - Tools of the Trade - lang_en.srt
@@ -0,0 +1,160 @@
+1
+00:00:00,072 --> 00:00:02,960
+We will also look at how tools can improve software phases,
+
+2
+00:00:02,960 --> 00:00:06,660
+the software activities, and can support software development tasks in general.
+
+3
+00:00:06,660 --> 00:00:08,890
+And this is something that I will repeat over and over
+
+4
+00:00:08,890 --> 00:00:12,340
+in the class, tools and automation are fundamental, in software engineering.
+
+5
+00:00:12,340 --> 00:00:15,910
+And they're fundamental for improving productivity, not only efficiency but also
+
+6
+00:00:15,910 --> 00:00:19,820
+effectiveness of our activities in the software development process. So let
+
+7
+00:00:19,820 --> 00:00:22,110
+me go back to one of the diagrams that I showed
+
+8
+00:00:22,110 --> 00:00:25,170
+you before. If you remember we had this qualititive diagram in which
+
+9
+00:00:25,170 --> 00:00:27,170
+we were showing that one of the issues that led to the
+
+10
+00:00:27,170 --> 00:00:30,350
+software crisis was the fact that developers' productivity was not able to
+
+11
+00:00:30,350 --> 00:00:33,580
+keep up with the software size and complexity, with the growth in
+
+12
+00:00:33,580 --> 00:00:36,750
+the importance and the complexity of software. What tools can help us
+
+13
+00:00:36,750 --> 00:00:40,150
+to do is to change this and basically move this curve from
+
+14
+00:00:40,150 --> 00:00:43,950
+this original position up here. So that it gets closer and closer
+
+15
+00:00:43,950 --> 00:00:45,970
+to what we need to develop the software that we need to
+
+16
+00:00:45,970 --> 00:00:50,230
+build. So let me discuss examples on how tools can improve productivity.
+
+17
+00:00:50,230 --> 00:00:52,970
+For example, if we are talking about development, think about
+
+18
+00:00:52,970 --> 00:00:54,890
+what kind of improvement it was to go from punch
+
+19
+00:00:54,890 --> 00:00:58,440
+cards to modern IDEs. If we're talking about languages, think
+
+20
+00:00:58,440 --> 00:01:02,210
+about of how much more productive developers became when going from
+
+21
+00:01:02,210 --> 00:01:05,830
+writing machine code to writing code in high-level languages. And
+
+22
+00:01:05,830 --> 00:01:08,750
+finally, if we talk about debugging, which is a very important
+
+23
+00:01:08,750 --> 00:01:12,140
+and expensive activity, moving from the use of print lines
+
+24
+00:01:12,140 --> 00:01:16,060
+to the use of symbolic debuggers dramatically improve the effectiveness and
+
+25
+00:01:16,060 --> 00:01:18,810
+efficiency of development. And these are just some of the
+
+26
+00:01:18,810 --> 00:01:21,050
+tools that we will discuss in the rest of the class
+
+27
+00:01:21,050 --> 00:01:23,350
+and notice that we will also use the tools in practice.
+
+28
+00:01:23,350 --> 00:01:26,290
+So we will use the tools before projects and also during
+
+29
+00:01:26,290 --> 00:01:30,153
+the lessons and for assignments. In particular, we will use
+
+30
+00:01:30,153 --> 00:01:33,920
+three main kinds of tools. The first type is IDE's. And
+
+31
+00:01:33,920 --> 00:01:37,140
+I'm pretty sure you're familiar with IDE's. These are integrated development
+
+32
+00:01:37,140 --> 00:01:41,250
+environments. So, advanced editors in which you can write, compile, run,
+
+33
+00:01:41,250 --> 00:01:43,950
+and debug and even test your code. We'll also use a
+
+34
+00:01:43,950 --> 00:01:48,190
+version control system, systems that allow you to save, and restore, and
+
+35
+00:01:48,190 --> 00:01:51,750
+check the differences between different versions of the code, in particular
+
+36
+00:01:51,750 --> 00:01:53,950
+we will be working with git. We will also be looking at
+
+37
+00:01:53,950 --> 00:01:57,460
+other kinds of tools like coverage and verification tools. These are
+
+38
+00:01:57,460 --> 00:02:00,310
+tools that can help you during testing and I'm a big fan
+
+39
+00:02:00,310 --> 00:02:02,710
+of these tools, so I'm really going to stress the usefulness
+
+40
+00:02:02,710 --> 00:02:05,530
+of these tools and how you should use them in your development.
+
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].
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/3 - Software Failure Quiz - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/3 - Software Failure Quiz - lang_en.srt
new file mode 100644
index 0000000..f98f98f
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/3 - Software Failure Quiz - lang_en.srt
@@ -0,0 +1,32 @@
+1
+00:00:00,110 --> 00:00:01,940
+Now that you watched this small video, I like
+
+2
+00:00:01,940 --> 00:00:03,660
+to ask you, what is this? Do you think
+
+3
+00:00:03,660 --> 00:00:06,330
+it's fireworks for the 4th of July celebration, or
+
+4
+00:00:06,330 --> 00:00:08,280
+maybe it was a flare gun in action, or
+
+5
+00:00:08,280 --> 00:00:10,240
+maybe again it was the explosion of the Ariane
+
+6
+00:00:10,240 --> 00:00:12,280
+five rocket due to a software error. What do
+
+7
+00:00:12,280 --> 00:00:14,190
+you think? And in case it helps, I'm also
+
+8
+00:00:14,190 --> 00:00:16,450
+going to show you an actual picture of this event.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/4 - Software Failure Quiz Solution - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/4 - Software Failure Quiz Solution - lang_en.srt
new file mode 100644
index 0000000..db633e2
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/4 - Software Failure Quiz Solution - lang_en.srt
@@ -0,0 +1,48 @@
+1
+00:00:00,100 --> 00:00:02,600
+As you probably guessed, these are not fireworks for the 4th of
+
+2
+00:00:02,600 --> 00:00:06,670
+July but, rather, the explosion of the Ariane 5, which happened 30 seconds
+
+3
+00:00:06,670 --> 00:00:09,250
+or so after takeoff due to a software error. And this is
+
+4
+00:00:09,250 --> 00:00:12,020
+just an example of what can go wrong when we don't build software
+
+5
+00:00:12,020 --> 00:00:15,600
+and we don't test and verify and perform quality assurance of software
+
+6
+00:00:15,600 --> 00:00:18,540
+in the right way, and quite an expensive one. In fact, to develop
+
+7
+00:00:18,540 --> 00:00:21,250
+and to build the Ariane 5 it took 10 years. The cost
+
+8
+00:00:21,250 --> 00:00:25,240
+was around $7 billion and there were $500 million of cargo on board.
+
+9
+00:00:25,240 --> 00:00:27,280
+Luckily, at least there were no humans on the
+
+10
+00:00:27,280 --> 00:00:29,400
+rocket. And you can find more details in case
+
+11
+00:00:29,400 --> 00:00:31,610
+you're interested about the Ariane 5 accident in the
+
+12
+00:00:31,610 --> 00:00:33,230
+lesson notes. I put a couple of links there.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/5 - Discipline of Software Engineering - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/5 - Discipline of Software Engineering - lang_en.srt
new file mode 100644
index 0000000..6933222
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/5 - Discipline of Software Engineering - lang_en.srt
@@ -0,0 +1,80 @@
+1
+00:00:00,140 --> 00:00:02,469
+And even if we don't go to these extreme examples, I'm
+
+2
+00:00:02,469 --> 00:00:04,380
+sure that you have all experienced
+
+3
+00:00:04,380 --> 00:00:06,540
+software problems, typically manifested in what
+
+4
+00:00:06,540 --> 00:00:09,630
+we call a crash. And that crash might happen while you're
+
+5
+00:00:09,630 --> 00:00:13,230
+finishing your homework or that three-page long email that you were preparing
+
+6
+00:00:13,230 --> 00:00:15,900
+for the last two hours. But why's it so difficult to
+
+7
+00:00:15,900 --> 00:00:20,220
+build software, or better, why's it so difficult to build good software?
+
+8
+00:00:20,220 --> 00:00:22,200
+And how can we do it? This is exactly the topic
+
+9
+00:00:22,200 --> 00:00:25,190
+of this class. And the reason why software engineering is a fundamental
+
+10
+00:00:25,190 --> 00:00:28,330
+discipline in computer science. To motivate that, in this class, we
+
+11
+00:00:28,330 --> 00:00:32,259
+will study a set of methodologies, techniques, and tools, that will help
+
+12
+00:00:32,259 --> 00:00:35,150
+us build high quality software that does what it's supposed to
+
+13
+00:00:35,150 --> 00:00:38,540
+do. And therefore, makes our customers happy. And that does it within
+
+14
+00:00:38,540 --> 00:00:42,375
+the given time and money constraints. So within the budget that
+
+15
+00:00:42,375 --> 00:00:44,300
+is allocated for the software. Before
+
+16
+00:00:44,300 --> 00:00:46,222
+jumping into today's software engineering techniques
+
+17
+00:00:46,222 --> 00:00:48,010
+though, let me take a step back and look at how
+
+18
+00:00:48,010 --> 00:00:50,240
+we got here, as I believe it is very important to have
+
+19
+00:00:50,240 --> 00:00:52,690
+some historical perspective on how this discipline was
+
+20
+00:00:52,690 --> 00:00:54,840
+born and how it was developed over the years.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/6 - The Software Crisis - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/6 - The Software Crisis - lang_en.srt
new file mode 100644
index 0000000..41061a5
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/6 - The Software Crisis - lang_en.srt
@@ -0,0 +1,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.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/7 - The Software Crisis Quiz - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/7 - The Software Crisis Quiz - lang_en.srt
new file mode 100644
index 0000000..004a36c
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/7 - The Software Crisis Quiz - lang_en.srt
@@ -0,0 +1,44 @@
+1
+00:00:00,078 --> 00:00:02,480
+So now let's take a quick break and have a recap
+
+2
+00:00:02,480 --> 00:00:05,300
+of what we just discussed. I want you to think about what
+
+3
+00:00:05,300 --> 00:00:07,850
+are the major causes of the software crisis. I'm going to provide you
+
+4
+00:00:07,850 --> 00:00:10,250
+a set of possibilities and I would like for you to mark
+
+5
+00:00:10,250 --> 00:00:14,160
+all that apply. Was that increasing costs of computers? Was it increasing
+
+6
+00:00:14,160 --> 00:00:17,990
+product complexity, or maybe the lack of programmers? Or was it, instead,
+
+7
+00:00:17,990 --> 00:00:20,000
+this slow programmers productivity growth? The
+
+8
+00:00:20,000 --> 00:00:21,540
+lack of funding for software engineering
+
+9
+00:00:21,540 --> 00:00:25,210
+research? The rise in demand for software? And finally, was it maybe
+
+10
+00:00:25,210 --> 00:00:26,500
+the lack of caffeine in software
+
+11
+00:00:26,500 --> 00:00:29,570
+development organizations? Again, mark all that apply.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/8 - The Software Crisis Quiz Solution - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/8 - The Software Crisis Quiz Solution - lang_en.srt
new file mode 100644
index 0000000..33f5c6c
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/8 - The Software Crisis Quiz Solution - lang_en.srt
@@ -0,0 +1,52 @@
+1
+00:00:00,090 --> 00:00:02,440
+So, if you think about what we just discussed. Definitely one
+
+2
+00:00:02,440 --> 00:00:06,210
+of the causes was the increasing product complexity. Products were becoming more
+
+3
+00:00:06,210 --> 00:00:09,510
+and more complex and software was replacing more and more, what
+
+4
+00:00:09,510 --> 00:00:11,860
+was before, provided by hardware components.
+
+5
+00:00:11,860 --> 00:00:14,160
+Slow productivity growth was another problem,
+
+6
+00:00:14,160 --> 00:00:17,350
+because programmers could not keep up with the additional complexity of
+
+7
+00:00:17,350 --> 00:00:19,720
+the software that they had to develop. I would like to say
+
+8
+00:00:19,720 --> 00:00:22,480
+there was lack of funding for software engineering research because I'm
+
+9
+00:00:22,480 --> 00:00:25,230
+a software engineering researcher, but that was not one of the reasons
+
+10
+00:00:25,230 --> 00:00:27,200
+for the software crisis. Instead, it was
+
+11
+00:00:27,200 --> 00:00:30,140
+the rising demand for software. Again, more
+
+12
+00:00:30,140 --> 00:00:32,060
+and more software was being required and
+
+13
+00:00:32,060 --> 00:00:33,850
+more and more software was replacing hardware.
+
diff --git a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/9 - Evidence of the Software Crisis - lang_en.srt b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/9 - Evidence of the Software Crisis - lang_en.srt
new file mode 100644
index 0000000..0592078
--- /dev/null
+++ b/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/9 - Evidence of the Software Crisis - lang_en.srt
@@ -0,0 +1,116 @@
+1
+00:00:00,120 --> 00:00:03,220
+After recapping the three major issues that characterize a software crisis
+
+2
+00:00:03,220 --> 00:00:05,626
+let's see what was the evidence that there was indeed a
+
+3
+00:00:05,626 --> 00:00:07,900
+crisis. So what I want to discuss now is the result
+
+4
+00:00:07,900 --> 00:00:11,060
+of a study performed by Davis in 1990s. So in even
+
+5
+00:00:11,060 --> 00:00:13,670
+more recent times than the 60s and the 70s. And the
+
+6
+00:00:13,670 --> 00:00:17,280
+study was performed on nine software projects that were totaling a
+
+7
+00:00:17,280 --> 00:00:20,990
+cost around $7 million and I'm going to show you how this
+
+8
+00:00:20,990 --> 00:00:25,190
+projects went using this representation, this pi representation, in which I'm
+
+9
+00:00:25,190 --> 00:00:27,520
+going to discuss what each of the segment of the
+
+10
+00:00:27,520 --> 00:00:30,010
+pi represent. So let's start looking at the first one.
+
+11
+00:00:30,010 --> 00:00:32,920
+This is a software that was usable as delivered. Other
+
+12
+00:00:32,920 --> 00:00:36,590
+software was delivered, and usable, either after some changes or
+
+13
+00:00:36,590 --> 00:00:41,080
+after some major modifications, so within additional costs involved.
+
+14
+00:00:41,080 --> 00:00:43,530
+But the striking piece of information here is that the
+
+15
+00:00:43,530 --> 00:00:46,890
+vast majority of the software, so these two slices, were
+
+16
+00:00:46,890 --> 00:00:50,250
+software that was either delivered but never successfully used or
+
+17
+00:00:50,250 --> 00:00:53,730
+software that was not even delivered. And this corresponded
+
+18
+00:00:53,730 --> 00:00:57,500
+to five over the seven total million dollars for
+
+19
+00:00:57,500 --> 00:01:00,050
+all the projects. So clearly, this shows a pretty
+
+20
+00:01:00,050 --> 00:01:03,910
+grim picture for software development and its success. In short,
+
+21
+00:01:03,910 --> 00:01:06,410
+there was clear evidence the software was becoming to
+
+22
+00:01:06,410 --> 00:01:08,990
+difficult too build and that the software industry was facing
+
+23
+00:01:08,990 --> 00:01:11,190
+a crisis. And this is what led to the
+
+24
+00:01:11,190 --> 00:01:15,130
+NATO Software Engineering Conference that was held in January 1969,
+
+25
+00:01:15,130 --> 00:01:19,100
+which is what we can consider the birth of software engineering. And what
+
+26
+00:01:19,100 --> 00:01:23,080
+I'm showing here is a drawing of the proceedings for that conference. And if
+
+27
+00:01:23,080 --> 00:01:26,020
+you look at the class notes you can see a link to the actual
+
+28
+00:01:26,020 --> 00:01:27,640
+proceedings, in case you are interested in
+
+29
+00:01:27,640 --> 00:01:29,180
+looking at the issues that were discussed.
+