about summary refs log tree commit diff
path: root/usth
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2020-07-19 20:34:40 +0700
committerNguyễn Gia Phong <mcsinyx@disroot.org>2020-07-19 20:34:40 +0700
commit8a7dfa0972c83fd811a4296e7373574bea4a28d0 (patch)
tree16d37247e8b909ce5f885affd2b2473faab891fd /usth
parentdc6f57c3af35f599abab2c4bac950654282cb519 (diff)
downloadcp-8a7dfa0972c83fd811a4296e7373574bea4a28d0.tar.gz
[usth/ICT2.7] Remove Udacity transcribes
Diffstat (limited to 'usth')
-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
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/1 - Introduction with Barry Boehm - lang_en_vs7.srt163
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/10 - Software Process Model Introduction - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/11 - Waterfall Process - lang_en_vs4.srt95
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/12 - Spiral Process - lang_en_vs4.srt191
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_en_vs4.srt167
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_pt_vs2.srt167
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_pt_vs1.srt111
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_en_vs3.srt123
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_pt_vs1.srt123
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/16 - Choosing a Model - lang_en_vs4.srt179
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/17 - Choosing a Model Quiz - lang_en_vs4.srt35
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/18 - Choosing a Model Quiz Solution - lang_en_vs5.srt47
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/19 - Choosing a Model Quiz - lang_en_vs5.srt11
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/2 - Traditional Software Phases - lang_en_vs4.srt75
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/20 - Choosing a Model Quiz Solution - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/21 - Lifecycle Documents - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/22 - Classic Mistakes: People - lang_en_vs4.srt163
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/23 - Classic Mistakes: Process - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/24 - Classic Mistakes: Product - lang_en_vs4.srt87
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/25 - Classic Mistakes: Technology - lang_en_vs4.srt95
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/26 - Classic Mistakes Quiz - lang_en_vs4.srt23
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/27 - Classic Mistakes Quiz Solution - lang_en_vs4.srt39
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/3 - Requirements Engineering - lang_en_vs4.srt175
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/4 - Design - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/5 - Implementation - lang_en_vs5.srt103
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/6 - Verification & Validation - lang_en_vs4.srt123
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/7 - Maintenance - lang_en_vs5.srt167
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/8 - Software Phases Quiz - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P1L2 Life Cycle Models Subtitles/9 - Software Phases Quiz Solution - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/1 - Lesson Overview - lang_en_vs5.srt39
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/2 - Eclipse Introduction - lang_en_vs5.srt91
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/3 - IDE Overview - lang_en_vs6.srt143
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/4 - Plug-Ins - lang_en_vs5.srt99
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/5 - Eclipse Demo: Create Java Project - lang_en_vs5.srt323
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/6 - Eclipse Demo: Create a Class - lang_en_vs6.srt135
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/7 - Eclipse Demo: Run Configuration - lang_en_vs6.srt115
-rw-r--r--usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/8 - Eclipse Demo: Debugging - lang_en_vs5.srt275
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt43
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt79
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt63
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt507
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt1095
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt307
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt239
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt35
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt163
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt59
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt15
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt19
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt435
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt207
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt11
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt79
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/8 - "Don'ts" in VCS - lang_en_vs5.srt175
-rw-r--r--usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt163
-rw-r--r--usth/ICT2.7/P1L5 Requirements Gathering Subtitles/1 - Gathering Requirements - lang_en_vs3.srt63
-rw-r--r--usth/ICT2.7/P1L5 Requirements Gathering Subtitles/2 - Choosing Good Questions - lang_en_vs3.srt15
-rw-r--r--usth/ICT2.7/P1L5 Requirements Gathering Subtitles/3 - Choosing Good Questions Solution - lang_en_vs3.srt55
-rw-r--r--usth/ICT2.7/P1L5 Requirements Gathering Subtitles/4 - Requirements Interview - lang_en_vs3.srt323
-rw-r--r--usth/ICT2.7/P1L5 Requirements Gathering Subtitles/5 - Average Sentence Length Requirements - lang_en_vs3.srt83
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/1 - Lesson Overview - lang_en_vs4.srt55
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/10 - Completeness Quiz - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/11 - Completeness Quiz Solution - lang_en_vs4.srt23
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/12 - Irrelevant Requirements Quiz - lang_en_vs4.srt43
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/13 - Irrelevant Requirements Quiz Solution - lang_en_vs5.srt63
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/14 - Best Practices - lang_en_vs5.srt83
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/15 - RE Definition Breakdown - lang_en_vs4.srt207
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/16 - Defining Requirements - lang_en_vs4.srt219
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/17 - Defining Requirements Quiz - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/18 - Defining Requirements Quiz Solution - lang_en_vs5.srt103
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/19 - Functional and Nonfunctional Requirements - lang_en_vs4.srt139
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/2 - Interview with Jane Cleland-Huang - lang_en_vs5.srt411
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/20 - User and System Requirements - lang_en_vs4.srt111
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/21 - Requirements Quiz - lang_en_vs4.srt43
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/22 - Requirements Quiz Solution - lang_en_vs4.srt63
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/23 - Requirement Origins - lang_en_vs4.srt71
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/24 - Elicitation Problems - lang_en_vs4.srt179
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/25 - Traditional Techniques - lang_en_vs5.srt207
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/26 - Other Techniques - lang_en_vs5.srt71
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/27 - Modeling Requirements - lang_en_vs4.srt223
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/28 - Analyzing Requirements - lang_en_vs4.srt155
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/29 - Requirements Prioritization - lang_en_vs5.srt59
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/3 - General RE Definition - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/30 - Requirements Prioritization Quiz - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/31 - Requirements Prioritization Quiz Solution - lang_en_vs5.srt119
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/32 - Requirements Engineering Process - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/33 - SRS - lang_en_vs5.srt183
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/4 - Software Intensive Systems - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/5 - Software Quality - lang_en_vs4.srt111
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/6 - Identifying Purpose - lang_en_vs4.srt107
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/7 - Completeness and Pertinence - lang_en_vs5.srt103
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/8 - Pertinence Quiz - lang_en_vs5.srt35
-rw-r--r--usth/ICT2.7/P2L1 Requirements Engineering Subtitles/9 - Pertinence Quiz Solution - lang_en_vs4.srt75
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/1 - Lesson Overview - lang_en_vs4.srt35
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/10 - Modeling Classes Quiz Solution - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/11 - Running Example Explanation - lang_en_vs5.srt115
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/12 - UML Structural Diagrams: Class Diagram - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/13 - Class Diagram: Class - lang_en_vs5.srt259
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/14 - Class Diagram: Attributes - lang_en_vs5.srt135
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/15 - Class Diagram: Operations - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/16 - Class Diagram: Relationships - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/17 - Class Diagram Relationships Quiz - lang_en_vs4.srt55
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/18 - Class Diagram Relationships Quiz Solution - lang_en_vs5.srt23
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/19 - Class Diagram: Dependency Relationship - lang_en_vs4.srt71
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt187
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/20 - Class Diagram: Association & Aggregation Relationships - lang_en_vs5.srt219
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/21 - Class Diagram: Generalization Relationship - lang_en_vs5.srt75
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/22 - Class Diagram: Creation Tips - lang_en_vs5.srt143
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/23 - UML Structural Diagrams: Component Diagram - lang_en_vs5.srt235
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/24 - UML Structural Diagrams: Deployment - lang_en_vs4.srt95
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/25 - UML Behavioral Diagrams: Use Case - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/26 - Use Case Diagram: Actors - lang_en_vs5.srt167
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/27 - Building a Use Case Diagram - lang_en_vs5.srt203
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/28 - Use Case Example - lang_en_vs5.srt243
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/29 - Role of Use Cases - lang_en_vs5.srt151
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/3 - Objects and Classes - lang_en_vs5.srt83
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/30 - Use Case Diagram: Creation Tips - lang_en_vs5.srt127
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/31 - UML Behavioral Diagrams: Sequence - lang_en_vs5.srt227
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/32 - UML Behavioral Diagrams: State Transition Diagram - lang_en_vs5.srt175
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/33 - State Transition Diagram Example - lang_en_vs5.srt227
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/34 - Recap Quiz - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/35 - Recap Quiz Solution - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/36 - Recap Quiz - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/37 - Recap Quiz Solution - lang_en_vs4.srt63
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/4 - Benefits of OO - lang_en_vs5.srt51
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/5 - OO Benefits Quiz - lang_en_vs4.srt43
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/6 - OO Benefits Quiz Solution - lang_en_vs4.srt71
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/7 - OO Analysis History - lang_en_vs4.srt175
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/8 - OO Analysis Overview - lang_en_vs4.srt147
-rw-r--r--usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/9 - Modeling Classes Quiz - lang_en_vs4.srt35
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/1 - Lesson Overview - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/10 - Architectural Recovery Quiz Solution - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt183
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/12 - More Examples - lang_en_vs6.srt107
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/13 - Final Example - lang_en_vs4.srt127
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/14 - Architectural Design Quiz - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/15 - Architectural Design Quiz Solution - lang_en_vs4.srt107
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/16 - Architectural Elements - lang_en_vs5.srt115
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/17 - Components, Connectors, and Configurations - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/18 - Configuration Example - lang_en_vs5.srt75
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/19 - Deployment Architectural Perspective - lang_en_vs5.srt103
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/2 - Interview with Nenad Medvidovic - lang_en_vs6.srt499
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/20 - Architectural Styles - lang_en_vs5.srt111
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/21 - Types of Architectural Styles - lang_en_vs5.srt239
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/22 - Architectural Styles Quiz - lang_en_vs4.srt27
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/23 - Architectural Styles Quiz Solution - lang_en_vs5.srt79
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/24 - P2P Architectures - lang_en_vs5.srt39
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/25 - Napster Example - lang_en_vs4.srt231
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/26 - Skype Example - lang_en_vs5.srt287
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/27 - Takeaway Message - lang_en_vs5.srt131
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/3 - What is Software Architecture? - lang_en_vs6.srt127
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/4 - General Definition of SWA - lang_en_vs6.srt131
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/5 - Prescriptive vs Descriptive Architecture - lang_en_vs5.srt51
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/6 - Architectural Evolution - lang_en_vs5.srt115
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/7 - Architectural Degradation - lang_en_vs6.srt131
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/8 - Architectural Recovery - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P3L1 Software Architecture Subtitles/9 - Architectural Recovery Quiz - lang_en_vs4.srt35
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt88
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt104
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt579
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt535
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt352
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt304
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt488
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt188
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt328
-rw-r--r--usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt196
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/1 - Lesson Overview - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/10 - Choosing a Pattern - lang_en_vs5.srt95
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/11 - Choosing a Pattern Quiz - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/12 - Choosing a Pattern Quiz Solution - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/13 - Negative Design Patterns - lang_en_vs4.srt51
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/2 - History of Design Patterns - lang_en_vs6.srt179
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/3 - Patterns Catalogue - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/4 - Pattern Format - lang_en_vs5.srt71
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt179
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/6 - Factory Method Pattern Example - lang_en_vs5.srt127
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt143
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/8 - Strategy Pattern Example & Demo - lang_en_vs5.srt511
-rw-r--r--usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt295
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/1 - Lesson Overview - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/10 - Iterative and Incremental - lang_en_vs6.srt147
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/11 - Cycle Example - lang_en_vs6.srt147
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/12 - Phases within a Cycle - lang_en_vs5.srt199
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/13 - Iterations - lang_en_vs5.srt95
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/14 - Iterative Approach Quiz - lang_en_vs5.srt43
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/15 - Iterative Approach Quiz Solution - lang_en_vs5.srt179
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/16 - Inception Phase - lang_en_vs4.srt323
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/17 - Elaboration Phase - lang_en_vs5.srt215
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/18 - Construction Phase - lang_en_vs5.srt247
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/19 - Transition Phase - lang_en_vs5.srt231
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/2 - History of RUP - lang_en_vs6.srt115
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/20 - Phases and Iterations - lang_en_vs4.srt107
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/3 - Key Features of RUP - lang_en_vs6.srt103
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/4 - UML Quiz - lang_en_vs5.srt47
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/5 - UML Quiz Solution - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/6 - UML Quiz - lang_en_vs6.srt39
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/7 - UML Quiz Solution - lang_en_vs6.srt143
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/8 - Use Case Driven - lang_en_vs5.srt71
-rw-r--r--usth/ICT2.7/P3L4 Unified Software Process Subtitles/9 - Architecture Centric - lang_en_vs5.srt131
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/1 - Lesson Overview - lang_en_vs5.srt91
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/10 - Verification Approaches - lang_en_vs4.srt239
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/11 - Pros and Cons of Approaches - lang_en_vs4.srt195
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/12 - Verification Approaches Quiz - lang_en_vs5.srt47
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/13 - Verification Approaches Quiz Solution - lang_en_vs4.srt11
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/14 - Testing Introduction - lang_en_vs4.srt119
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/15 - Testing Granularity Levels - lang_en_vs4.srt275
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/16 - Alpha and Beta Testing - lang_en_vs4.srt95
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/17 - Black and White Box Testing Introduction - lang_en_vs4.srt115
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/18 - Black Box Testing Example - lang_en_vs4.srt135
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/19 - White Box Testing Example - lang_en_vs4.srt143
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/2 - Introduction - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/3 - Failure, Fault, and Error - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/4 - Failure, Fault, and Error Quiz - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/5 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/6 - Failure, Fault, and Error Quiz - lang_en_vs4.srt19
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/7 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/8 - Failure, Fault, and Error Quiz - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P4L1 General Concepts Subtitles/9 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt39
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/10 - Test Data Selection Quiz Solution - lang_en_vs4.srt79
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/11 - Why Not Random Testing? - lang_en_vs4.srt143
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/12 - Partition Testing - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/13 - Partition Testing Example - lang_en_vs4.srt167
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/14 - Boundary Values - lang_en_vs4.srt55
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/15 - Boundary Values Example - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/16 - Deriving Test Case Specifications - lang_en_vs4.srt199
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/17 - Category Partition Method - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/18 - Identify Categories - lang_en_vs4.srt127
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/19 - Partition Categories into Choices - lang_en_vs4.srt151
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/20 - Identify Constraints Among Choices - lang_en_vs4.srt239
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/21 - Produce and Evaluate Test Case Specifications - lang_en_vs4.srt111
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/22 - Generate Test Cases from Test Case Specifications - lang_en_vs4.srt91
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/23 - Category Partition Demo - lang_en_vs4.srt867
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/24 - Model Based Testing - lang_en_vs4.srt83
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/25 - Finite State Machines - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/26 - Finite State Machines Example - lang_en_vs4.srt251
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/27 - Finite State Machines Considerations - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/28 - Summary - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/3 - Systematic Functional Testing Approach - lang_en_vs4.srt179
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/4 - Overview Quiz - lang_en_vs4.srt35
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/5 - Overview Quiz Solution - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/6 - Overview Quiz - lang_en_vs4.srt19
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/7 - Overview Quiz Solution - lang_en_vs4.srt71
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/8 - Test Data Selection - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P4L2 Black-Box Testing Subtitles/9 - Test Data Selection Quiz - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/10 - Statement Coverage Quiz Solution - lang_en_vs7.srt31
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/11 - Control Flow Graphs - lang_en_vs5.srt167
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/12 - Branch Coverage - lang_en_vs3.srt267
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/13 - Condition Coverage - lang_en_vs4.srt191
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/14 - Subsumption Quiz - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/15 - Subsumption Quiz Solution - lang_en_vs4.srt7
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/16 - Branch and Condition Coverage - lang_en_vs4.srt143
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/17 - Subsumption Quiz - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/18 - Subsumption Quiz Solution - lang_en_vs4.srt19
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/19 - Test Criteria Subsumption - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt167
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/20 - B&C Coverage Quiz - lang_en_vs4.srt35
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/21 - B&C Coverage Quiz Solution - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/22 - MC DC Coverage - lang_en_vs4.srt307
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt275
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/24 - Review Quiz - lang_en_vs4.srt63
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/25 - Review Quiz Solution - lang_en_vs4.srt7
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/26 - Review Quiz - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/27 - Review Quiz Solution - lang_en_vs4.srt55
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/28 - Review Quiz - lang_en_vs4.srt31
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/29 - Review Quiz Solution - lang_en_vs4.srt119
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/3 - Coverage Criteria Intro - lang_en_vs4.srt171
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/30 - Summary - lang_en_vs4.srt127
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/4 - Coverage Criteria Intro Quiz - lang_en_vs4.srt39
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/5 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/6 - Coverage Criteria Intro Quiz - lang_en_vs3.srt63
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/7 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt87
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/8 - Statement Coverage - lang_en_vs4.srt291
-rw-r--r--usth/ICT2.7/P4L3 White-Box Testing Subtitles/9 - Statement Coverage Quiz - lang_en_vs4.srt15
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/1 - Lesson Overview - lang_en_vs4.srt75
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/10 - Refactoring - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/11 - Pair Programming - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/12 - Continuous Integration - lang_en_vs4.srt111
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/13 - On Site Customer - lang_en_vs4.srt55
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/14 - Requirements Engineering - lang_en_vs4.srt139
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/15 - Testing Strategy - lang_en_vs4.srt147
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/16 - Testing Strategy Quiz - lang_en_vs4.srt47
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/17 - Testing Strategy Quiz Solution - lang_en_vs4.srt127
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/18 - Scrum Intro - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/19 - High Level Scrum Process - lang_en_vs4.srt215
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/2 - Cost of Change - lang_en_vs4.srt207
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/3 - Agile Software Development - lang_en_vs7.srt159
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/4 - Extreme Programming (XP) - lang_en_vs4.srt179
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/5 - XP's Values, Principles, and Practices - lang_en_vs4.srt151
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/6 - Incremental Planning - lang_en_vs4.srt71
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/7 - Small Releases - lang_en_vs4.srt95
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/8 - Simple Design - lang_en_vs4.srt63
-rw-r--r--usth/ICT2.7/P4L4 Agile Development Methods Subtitles/9 - Test First Development - lang_en_vs4.srt59
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/1 - Lesson Overview - lang_en_vs4.srt71
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/10 - Consolidate Conditional Expression Solution - lang_en_vs3.srt55
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en-us_vs2.srt263
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en_vs8.srt263
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/12 - Extract Class - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/13 - Inline Class - lang_en_vs4.srt75
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/14 - Extract Method - lang_en_vs4.srt163
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/15 - Refactoring Demo - lang_en_vs4.srt599
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/16 - Extract Method Refactoring Quiz - lang_en_vs5.srt31
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/17 - Extract Method Refactoring Quiz Solution - lang_en_vs4.srt83
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/18 - Refactoring Risks - lang_en_vs4.srt143
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/19 - Cost of Refactoring - lang_en_vs4.srt127
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/2 - Introduction - lang_en_vs4.srt127
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/20 - When Not To Refactor - lang_en_vs4.srt103
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/21 - Bad Smells - lang_en_vs4.srt99
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/22 - Bad Smell Examples - lang_en_vs4.srt263
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/23 - Bad Smell Quiz - lang_en_vs3.srt31
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/24 - Bad Smell Quiz Solution - lang_en_vs3.srt75
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/3 - Introduction - lang_en_vs4.srt27
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/4 - Introduction Solution - lang_en_vs4.srt39
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/5 - Reasons to Refactor - lang_en_vs4.srt131
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/6 - History of Refactoring - lang_en_vs4.srt171
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/7 - Types of Refactorings - lang_en_vs4.srt43
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/8 - Collapse Hierarchy - lang_en_vs4.srt67
-rw-r--r--usth/ICT2.7/P4L5 Software Refactoring Subtitles/9 - Consolidate Conditional Expression - lang_en_vs4.srt131
341 files changed, 0 insertions, 43428 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
deleted file mode 100644
index aea69ae..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/1 - Introduction - lang_en.srt
+++ /dev/null
@@ -1,40 +0,0 @@
-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
deleted file mode 100644
index b1f822e..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/10 - Software Development - lang_en.srt
+++ /dev/null
@@ -1,108 +0,0 @@
-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
deleted file mode 100644
index 98592eb..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/11 - Software Process - lang_en.srt
+++ /dev/null
@@ -1,96 +0,0 @@
-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
deleted file mode 100644
index 20ef47f..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/12 - Preliminary Questions - lang_en.srt
+++ /dev/null
@@ -1,32 +0,0 @@
-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
deleted file mode 100644
index fe239c6..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/13 - Preliminary Questions Solution - lang_en.srt
+++ /dev/null
@@ -1,16 +0,0 @@
-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
deleted file mode 100644
index 936b50d..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/14 - Preliminary Questions - lang_en.srt
+++ /dev/null
@@ -1,24 +0,0 @@
-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
deleted file mode 100644
index 1a040e2..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/15 - Preliminary Questions Solution - lang_en.srt
+++ /dev/null
@@ -1,32 +0,0 @@
-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
deleted file mode 100644
index 7fc30ef..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/16 - Software Phases - lang_en.srt
+++ /dev/null
@@ -1,100 +0,0 @@
-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
deleted file mode 100644
index 077c0f8..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/17 - Tools of the Trade - lang_en.srt
+++ /dev/null
@@ -1,160 +0,0 @@
-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
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].
-
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
deleted file mode 100644
index f98f98f..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/3 - Software Failure Quiz - lang_en.srt
+++ /dev/null
@@ -1,32 +0,0 @@
-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
deleted file mode 100644
index db633e2..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/4 - Software Failure Quiz Solution - lang_en.srt
+++ /dev/null
@@ -1,48 +0,0 @@
-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
deleted file mode 100644
index 6933222..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/5 - Discipline of Software Engineering - lang_en.srt
+++ /dev/null
@@ -1,80 +0,0 @@
-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
deleted file mode 100644
index 41061a5..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/6 - The Software Crisis - lang_en.srt
+++ /dev/null
@@ -1,208 +0,0 @@
-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
deleted file mode 100644
index 004a36c..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/7 - The Software Crisis Quiz - lang_en.srt
+++ /dev/null
@@ -1,44 +0,0 @@
-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
deleted file mode 100644
index 33f5c6c..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/8 - The Software Crisis Quiz Solution - lang_en.srt
+++ /dev/null
@@ -1,52 +0,0 @@
-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
deleted file mode 100644
index 0592078..0000000
--- a/usth/ICT2.7/P1L1 Introduction and Overview Subtitles/9 - Evidence of the Software Crisis - lang_en.srt
+++ /dev/null
@@ -1,116 +0,0 @@
-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.
-
diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/1 - Introduction with Barry Boehm - lang_en_vs7.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/1 - Introduction with Barry Boehm - lang_en_vs7.srt
deleted file mode 100644
index 954db98..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/1 - Introduction with Barry Boehm - lang_en_vs7.srt
+++ /dev/null
@@ -1,163 +0,0 @@
-1

-00:00:00,430 --> 00:00:06,300

-Hi, in the last lesson we provided an overview of the course and motivated the

-

-2

-00:00:06,300 --> 00:00:09,570

-need for software engineering. In this lesson,

-

-3

-00:00:09,570 --> 00:00:13,090

-we will present and start discussing several traditional

-

-4

-00:00:13,090 --> 00:00:16,090

-software engineering life cycle models. We will

-

-5

-00:00:16,090 --> 00:00:18,790

-talk about their main advantages, and also about

-

-6

-00:00:18,790 --> 00:00:21,840

-their shortcomings. We will also talk about

-

-7

-00:00:21,840 --> 00:00:25,720

-classic mistakes in software engineering that is well

-

-8

-00:00:25,720 --> 00:00:29,530

-known ineffective development practices, that when

-

-9

-00:00:29,530 --> 00:00:32,590

-followed, tend to lead to better results. And

-

-10

-00:00:32,590 --> 00:00:35,120

-covering those, will hopefully help us to avoid

-

-11

-00:00:35,120 --> 00:00:38,350

-them in the future. And because in this

-

-12

-00:00:38,350 --> 00:00:41,290

-lesson, I will discuss some fundamental aspects of

-

-13

-00:00:41,290 --> 00:00:44,730

-software engineering, to suitably introduce these topics, I

-

-14

-00:00:44,730 --> 00:00:47,110

-went to the University of Southern California, to

-

-15

-00:00:47,110 --> 00:00:50,300

-interview one of the fathers of software engineering;

-

-16

-00:00:50,300 --> 00:00:53,070

-Professor Barry Boehm.

-

-17

-00:00:53,070 --> 00:00:59,060

-&gt;&gt; A well, a software life cycle is a sequence of, of decisions that you

-

-18

-00:00:59,060 --> 00:01:01,895

-make, and it's fundamentally those decisions are

-

-19

-00:01:01,895 --> 00:01:05,280

-going to be part of the history of the

-

-20

-00:01:05,280 --> 00:01:09,500

-software that. You are going to build that other people are going to use, and

-

-21

-00:01:09,500 --> 00:01:15,330

-the process model is basically answering the question of what do I do next and

-

-22

-00:01:15,330 --> 00:01:20,550

-how long shall I do it for. And again, because there are a lot of different ways

-

-23

-00:01:20,550 --> 00:01:24,220

-you can make that decision, you need to

-

-24

-00:01:24,220 --> 00:01:27,640

-figure out which models are good for which particular

-

-25

-00:01:27,640 --> 00:01:31,475

-situations. So, for example, we've, written a book

-

-26

-00:01:31,475 --> 00:01:34,846

-that's called Balancing Agility and Discipline. It says under

-

-27

-00:01:34,846 --> 00:01:37,835

-what conditions should you use agile methods, under

-

-28

-00:01:37,835 --> 00:01:40,824

-which conditions should you invest more time in analyzing

-

-29

-00:01:40,824 --> 00:01:44,826

-the situation and planning what you're going to do and the like. And so,

-

-30

-00:01:44,826 --> 00:01:49,866

-typically if the project is, is small where it's three to ten

-

-31

-00:01:49,866 --> 00:01:55,271

-people, agile works pretty well. If it's 300

-

-32

-00:01:55,271 --> 00:02:00,545

-people, then I think we don't want to go that way. If the affect of

-

-33

-00:02:00,545 --> 00:02:05,960

-the defect is loss of comfort or limited funds, then agile is fine,

-

-34

-00:02:05,960 --> 00:02:11,184

-but if it is a loss of life, then you don't. On the other hand if, if

-

-35

-00:02:11,184 --> 00:02:13,776

-you have a situation where you have lot

-

-36

-00:02:13,776 --> 00:02:17,745

-of unpredictable change, you really don't want to spend

-

-37

-00:02:17,745 --> 00:02:23,439

-a lot of time writing plans and lots of documents. In some cases you may have a

-

-38

-00:02:23,439 --> 00:02:26,907

-project where you want to do waterfall in

-

-39

-00:02:26,907 --> 00:02:31,140

-some parts and agile in others. So, these are

-

-40

-00:02:31,140 --> 00:02:36,180

-the kind of things that, that make the choice of life cycle process

-

-41

-00:02:36,180 --> 00:02:41,409

-model very important and very interesting as a subject of research.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/10 - Software Process Model Introduction - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/10 - Software Process Model Introduction - lang_en_vs4.srt
deleted file mode 100644
index 39d418b..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/10 - Software Process Model Introduction - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,240 --> 00:00:02,600

-At this point, you know the possible activities, the

-

-2

-00:00:02,600 --> 00:00:06,520

-possible phases performed during the software development process. But there

-

-3

-00:00:06,520 --> 00:00:08,710

-this something that we still haven't discussed, which is

-

-4

-00:00:08,710 --> 00:00:11,910

-very important. And that is how should we put these

-

-5

-00:00:11,910 --> 00:00:14,990

-activities together to develop software? And this all comes

-

-6

-00:00:14,990 --> 00:00:18,360

-down to the concept of software process model. Also called

-

-7

-00:00:18,360 --> 00:00:21,520

-software lifecycle model. And what this is, is a

-

-8

-00:00:21,520 --> 00:00:25,470

-prescriptive model of what should happen from the very beginning

-

-9

-00:00:25,470 --> 00:00:28,960

-to the very end. Of a software development process. The

-

-10

-00:00:28,960 --> 00:00:31,360

-main function of the life cycle model is to determine

-

-11

-00:00:31,360 --> 00:00:34,290

-the order of the different activities so that we know

-

-12

-00:00:34,290 --> 00:00:37,920

-which activities should come first and which ones should follow. Another

-

-13

-00:00:37,920 --> 00:00:40,910

-important function of the life cycle model is to determine

-

-14

-00:00:40,910 --> 00:00:45,290

-the transition criteria between activities. So, when we can go from

-

-15

-00:00:45,290 --> 00:00:48,000

-one phase to the subsequent one. In other words, what

-

-16

-00:00:48,000 --> 00:00:50,840

-the model should describe is what should we do next and

-

-17

-00:00:50,840 --> 00:00:53,450

-how long should we continue to do it for each activity

-

-18

-00:00:53,450 --> 00:00:56,290

-in the model. Now lets see a few traditional software process

-

-19

-00:00:56,290 --> 00:00:58,920

-models. I will discuss them here at the high level and

-

-20

-00:00:58,920 --> 00:01:02,000

-then revisit some of these models in the different mini courses.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/11 - Waterfall Process - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/11 - Waterfall Process - lang_en_vs4.srt
deleted file mode 100644
index b3d7c07..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/11 - Waterfall Process - lang_en_vs4.srt
+++ /dev/null
@@ -1,95 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,830

-The first model we want to discuss is the grandfather of

-

-2

-00:00:02,830 --> 00:00:05,900

-all life cycle models. And it is the waterfall model. In

-

-3

-00:00:05,900 --> 00:00:08,890

-the waterfall model the project progresses to an orderly sequence of

-

-4

-00:00:08,890 --> 00:00:13,040

-steps. From the initial software concept, down until the final phase.

-

-5

-00:00:13,040 --> 00:00:16,110

-Which is system testing. And at the end of each phase

-

-6

-00:00:16,110 --> 00:00:18,510

-there will be a review to determine whether the project is

-

-7

-00:00:18,510 --> 00:00:22,120

-ready to advance to the next phase. The pure waterfall model

-

-8

-00:00:22,120 --> 00:00:25,340

-performs well for softer products in which there is a stable

-

-9

-00:00:25,340 --> 00:00:28,400

-product definition. The domain is well known and the technologies

-

-10

-00:00:28,400 --> 00:00:31,220

-involved are well understood. In these kind of domains, the

-

-11

-00:00:31,220 --> 00:00:34,350

-waterfall model helps you to find errors in the early,

-

-12

-00:00:34,350 --> 00:00:37,180

-local stages of the projects. If you remember what we discussed,

-

-13

-00:00:37,180 --> 00:00:39,950

-this is the place where we want to find errors,

-

-14

-00:00:39,950 --> 00:00:43,440

-not down here because finding them here will reduce the cost

-

-15

-00:00:43,440 --> 00:00:47,160

-of our overall software development. The main advantage of the

-

-16

-00:00:47,160 --> 00:00:50,930

-waterfall model is that it allows you to find errors early.

-

-17

-00:00:50,930 --> 00:00:53,910

-However, the main disadvantages of the waterfall model arise

-

-18

-00:00:53,910 --> 00:00:56,550

-from the fact that it is not flexible. Normally,

-

-19

-00:00:56,550 --> 00:00:59,520

-it is difficult to fully specify requirements at the

-

-20

-00:00:59,520 --> 00:01:02,470

-beginning of a project. And this lack of flexibility is

-

-21

-00:01:02,470 --> 00:01:04,800

-far from ideal when dealing with project in which

-

-22

-00:01:04,800 --> 00:01:07,310

-requirements change, the developers are not domain experts or

-

-23

-00:01:07,310 --> 00:01:11,130

-the technology used are new and evolving, that is

-

-24

-00:01:11,130 --> 00:01:14,440

-it is less than ideal for most real world projects.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/12 - Spiral Process - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/12 - Spiral Process - lang_en_vs4.srt
deleted file mode 100644
index 2d0cdf9..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/12 - Spiral Process - lang_en_vs4.srt
+++ /dev/null
@@ -1,191 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,600

-The next model that we will discuss is the spiral

-

-2

-00:00:02,600 --> 00:00:05,630

-model, which was first described by Barry Boehm, which is

-

-3

-00:00:05,630 --> 00:00:08,010

-the professor that we interviewed at the beginning of this

-

-4

-00:00:08,010 --> 00:00:12,240

-lesson. In his paper from 1986 that was entitled A Spiral

-

-5

-00:00:12,240 --> 00:00:15,730

-Model of Software Development and Enhancement. And one of the

-

-6

-00:00:15,730 --> 00:00:18,520

-main characteristics of that paper is that it was describing the

-

-7

-00:00:18,520 --> 00:00:21,670

-spiral model using a diagram, which is the one that

-

-8

-00:00:21,670 --> 00:00:25,130

-I'm showing you here, and this diagram has become very very

-

-9

-00:00:25,130 --> 00:00:27,950

-popular, and you probably saw it either in this

-

-10

-00:00:27,950 --> 00:00:30,400

-form or one of the many variations of the

-

-11

-00:00:30,400 --> 00:00:32,680

-diagram. So I'm not going to discuss all of

-

-12

-00:00:32,680 --> 00:00:34,770

-the details of the spiral model, but I just want to

-

-13

-00:00:34,770 --> 00:00:37,510

-give you an idea of its main characteristics. The

-

-14

-00:00:37,510 --> 00:00:41,580

-spiral model is an incremental risk-oriented lifecycle model that has

-

-15

-00:00:41,580 --> 00:00:46,330

-four main phases listed here: determine objectives, identify and

-

-16

-00:00:46,330 --> 00:00:51,180

-resolve risks, development and tests, and plan the next iteration.

-

-17

-00:00:51,180 --> 00:00:53,690

-A software project will go through these four phases in

-

-18

-00:00:53,690 --> 00:00:57,020

-an iterative way. In the first phase, the requirements will

-

-19

-00:00:57,020 --> 00:00:59,470

-be gathered. In the second phase, the risks and the

-

-20

-00:00:59,470 --> 00:01:04,010

-alternate solutions will be identified, and a prototype will be produced.

-

-21

-00:01:04,010 --> 00:01:06,190

-Software and tests for the software are produced in the

-

-22

-00:01:06,190 --> 00:01:09,210

-development and test phase, which is the third step of the

-

-23

-00:01:09,210 --> 00:01:12,830

-process. Finally, in the fourth phase, the output of the

-

-24

-00:01:12,830 --> 00:01:16,880

-project, so far, is evaluated, and the next iteration is planned.

-

-25

-00:01:16,880 --> 00:01:19,960

-So basically, what the spiral process prescribes is a

-

-26

-00:01:19,960 --> 00:01:23,262

-way of developing software by going through these phases in

-

-27

-00:01:23,262 --> 00:01:26,020

-an iterative way, in which we learn more and more

-

-28

-00:01:26,020 --> 00:01:29,420

-of the software, we identify more and more, and account

-

-29

-00:01:29,420 --> 00:01:32,250

-for, more and more risks and we go more

-

-30

-00:01:32,250 --> 00:01:36,000

-and more towards our final solution, our final release. There

-

-31

-00:01:36,000 --> 00:01:38,930

-are several advantages of using a spiral model. The first

-

-32

-00:01:38,930 --> 00:01:41,930

-one is that the extensive risk analysis does reduce the

-

-33

-00:01:41,930 --> 00:01:44,140

-chances of the project to fail. So there is a

-

-34

-00:01:44,140 --> 00:01:48,300

-risk reduction advantage. The second advantage is that functionality can be

-

-35

-00:01:48,300 --> 00:01:51,190

-added at a later phase because of the iterative nature of

-

-36

-00:01:51,190 --> 00:01:55,175

-the process. And finally, software is produced early in the software

-

-37

-00:01:55,175 --> 00:01:58,260

-lifecycle. So, at any iteration, we have something to show

-

-38

-00:01:58,260 --> 00:02:01,300

-for our development. We don't wait until the end before producing

-

-39

-00:02:01,300 --> 00:02:03,790

-something. And then of course there's also the advantage that we

-

-40

-00:02:03,790 --> 00:02:07,190

-can get early feedback from the customer about what we produced.

-

-41

-00:02:07,190 --> 00:02:09,000

-The main disadvantages on the other hand of

-

-42

-00:02:09,000 --> 00:02:11,870

-the spiral model, are that the risk analysis requires

-

-43

-00:02:11,870 --> 00:02:16,560

-a highly specific expertise. And unfortunately, the whole success

-

-44

-00:02:16,560 --> 00:02:19,260

-of the process is highly dependent on risk analysis.

-

-45

-00:02:19,260 --> 00:02:21,580

-So risk analysis has to be done right.

-

-46

-00:02:21,580 --> 00:02:24,510

-And finally the spiral model is way more complex

-

-47

-00:02:24,510 --> 00:02:27,180

-than other models, like for example, the water fall

-

-48

-00:02:27,180 --> 00:02:29,760

-model. And therefore it can be costly to implement.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_en_vs4.srt
deleted file mode 100644
index cf068c0..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_en_vs4.srt
+++ /dev/null
@@ -1,167 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,430

-The next process model I want to discuss is evolutionary

-

-2

-00:00:02,430 --> 00:00:05,786

-prototyping, which works in four main phases. We start

-

-3

-00:00:05,786 --> 00:00:08,393

-from an initial concept, then we design and implement

-

-4

-00:00:08,393 --> 00:00:11,509

-a prototype based on this initial concept, refine the prototype

-

-5

-00:00:11,509 --> 00:00:14,002

-until it is acceptable, and finally we complete and

-

-6

-00:00:14,002 --> 00:00:17,550

-release the prototype. Therefore, when developing a system using

-

-7

-00:00:17,550 --> 00:00:22,330

-evolutionary prototyping, the system is continually refined and rebuilt.

-

-8

-00:00:22,330 --> 00:00:25,340

-So it is an ideal process when not all requirements

-

-9

-00:00:25,340 --> 00:00:28,330

-are well understood. Which is a very common situation. So, looking

-

-10

-00:00:28,330 --> 00:00:30,370

-at this in a little more details, what happens is that

-

-11

-00:00:30,370 --> 00:00:33,760

-developers start by developing the parts of the system that they

-

-12

-00:00:33,760 --> 00:00:37,690

-understand, instead of working on developing a whole system, including parts

-

-13

-00:00:37,690 --> 00:00:40,520

-that might not be very clear at that stage. The partial

-

-14

-00:00:40,520 --> 00:00:43,900

-system is then shown to the customer and the customer feedback

-

-15

-00:00:43,900 --> 00:00:47,480

-is used to drive the next iteration, in which either changes

-

-16

-00:00:47,480 --> 00:00:50,340

-are made to the current features or new features are added.

-

-17

-00:00:50,340 --> 00:00:53,060

-So, either the current prototype is improved or the

-

-18

-00:00:53,060 --> 00:00:56,270

-prototype is extended. And finally, when the customer agrees that

-

-19

-00:00:56,270 --> 00:00:58,980

-the prototype is good enough, the developers will complete all

-

-20

-00:00:58,980 --> 00:01:01,410

-the remaining work on the system and release the prototype

-

-21

-00:01:01,410 --> 00:01:03,930

-as the final product. So let's discuss as we did

-

-22

-00:01:03,930 --> 00:01:06,780

-for the previous process models, what are the main advantages

-

-23

-00:01:06,780 --> 00:01:10,580

-and disadvantages of evolutionary prototyping. In this case, the main

-

-24

-00:01:10,580 --> 00:01:15,440

-advantage is the immediate feedback. Developers get feedback immediately as

-

-25

-00:01:15,440 --> 00:01:17,560

-soon as they produce a prototype and they show it to

-

-26

-00:01:17,560 --> 00:01:21,050

-the customer and therefore, the risk of implementing the wrong system is

-

-27

-00:01:21,050 --> 00:01:25,150

-minimized. The main negative is the fact that it's difficult to plan.

-

-28

-00:01:25,150 --> 00:01:29,070

-When using evolutionary prototype it is difficult to plan in advance how

-

-29

-00:01:29,070 --> 00:01:31,240

-long the development is going to take, because we don't know how

-

-30

-00:01:31,240 --> 00:01:34,550

-many iterations will be needed. And another drawback is that it can

-

-31

-00:01:34,550 --> 00:01:37,120

-easily become an excuse to do kind of do cut and fix

-

-32

-00:01:37,120 --> 00:01:40,530

-kind of approaches in which we hack something together, fix the main

-

-33

-00:01:40,530 --> 00:01:43,640

-issues when the customer gives us feedback, and then continue this

-

-34

-00:01:43,640 --> 00:01:46,780

-way, until the final product is something that is kind of

-

-35

-00:01:46,780 --> 00:01:49,830

-working, but it's not really a product of high quality. Something

-

-36

-00:01:49,830 --> 00:01:51,910

-else I want to point out before we move to the next

-

-37

-00:01:51,910 --> 00:01:54,490

-software process model is that there are many different kinds of

-

-38

-00:01:54,490 --> 00:01:56,700

-prototyping, so evolutionary prototyping is just

-

-39

-00:01:56,700 --> 00:01:58,010

-one of them. For example, throwaway

-

-40

-00:01:58,010 --> 00:02:02,100

-prototyping is another kind of prototyping in which the prototype is

-

-41

-00:02:02,100 --> 00:02:05,580

-just used to gather requirements, but is thrown away at the end

-

-42

-00:02:05,580 --> 00:02:08,710

-of the requirements gathering, instead of being evolved as it happens here.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_pt_vs2.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_pt_vs2.srt
deleted file mode 100644
index a1fefdc..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/13 - Evolutionary Prototyping Process - lang_pt_vs2.srt
+++ /dev/null
@@ -1,167 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,430

-O próximo modelo que eu quero discutir é prototipagem

-

-2

-00:00:02,430 --> 00:00:05,786

-evolutiva, que funciona em quatro fases principais. Nós começamos

-

-3

-00:00:05,786 --> 00:00:08,393

-por um conceito inicial, então nós desenhamos e criamos

-

-4

-00:00:08,393 --> 00:00:11,509

-um protótipo baseado neste conceito inicial, refinamos o protótipo

-

-5

-00:00:11,509 --> 00:00:14,002

-até que ele se torne aceitável e finalmente nós completamos e

-

-6

-00:00:14,002 --> 00:00:17,550

-liberamos o protótipo. Desta maneira, quando desenvolvemos um sistema usando

-

-7

-00:00:17,550 --> 00:00:22,330

-prototipagem evolutiva, o sistema é constantemente refinado e refeito.

-

-8

-00:00:22,330 --> 00:00:25,340

-Então este é o processo ideal quando nem todos os requisitos

-

-9

-00:00:25,340 --> 00:00:28,330

-estão bem compreendidos. O que é uma situação bastante usual. Então, olhando

-

-10

-00:00:28,330 --> 00:00:30,370

-para isso um pouco mais detalhadamente, o que ocorre é que

-

-11

-00:00:30,370 --> 00:00:33,760

-os desenvolvedores começam no desenvolvimento das partes do sistema que eles

-

-12

-00:00:33,760 --> 00:00:37,690

-compreendem, ao invés de trabalhar no desenvolvimento do sistema com um tido, incluindo as

-

-13

-00:00:37,690 --> 00:00:40,520

-parte que não estão ainda muito claras. O sistema

-

-14

-00:00:40,520 --> 00:00:43,900

-parcial é então mostrado ao cliente e a opinião do cliente

-

-15

-00:00:43,900 --> 00:00:47,480

-é usada para guiar a próxima iteração, na qual tanto modificações

-

-16

-00:00:47,480 --> 00:00:50,340

-são feitas nas atuais feições, como novas feições são adicionadas.

-

-17

-00:00:50,340 --> 00:00:53,060

-Assim, ou o protótipo atual é melhorado ou o

-

-18

-00:00:53,060 --> 00:00:56,270

-protótipo é aumentado. E finalmente, quando o cliente concorda de

-

-19

-00:00:56,270 --> 00:00:58,980

-que o protótipo está suficientemente bom, os desenvolvedores irão completar todo

-

-20

-00:00:58,980 --> 00:01:01,410

-o trabalho faltante no sistema e liberar o protótipo

-

-21

-00:01:01,410 --> 00:01:03,930

-como o produto final. Então vamos discutir como fizemos

-

-22

-00:01:03,930 --> 00:01:06,780

-para os modelos de processos anteriores, quais são as principais vantagens

-

-23

-00:01:06,780 --> 00:01:10,580

-e desvantagens de prototipagem evolutiva. Neste caso, a principal

-

-24

-00:01:10,580 --> 00:01:15,440

-vantagem é apreciação imediada. Os desenvolvedores recebem a opinião imediatamente,

-

-25

-00:01:15,440 --> 00:01:17,560

-tão logo eles produziram o protótipo e o mostraram para o

-

-26

-00:01:17,560 --> 00:01:21,050

-cliente e desta maneira, o risco de implementar erradamente o sistema é

-

-27

-00:01:21,050 --> 00:01:25,150

-minimizado. O principal ponto negativo é que isso é difícil de planejar.

-

-28

-00:01:25,150 --> 00:01:29,070

-Quando é usada a prototipagem evolutiva é difícil de antecipar por

-

-29

-00:01:29,070 --> 00:01:31,240

-quanto tempo o desenvolvimento irá levar, porquê nós não sabemos quantas

-

-30

-00:01:31,240 --> 00:01:34,550

-iterações serão necessárias. E outro inconveniente é que isso pode facilmente

-

-31

-00:01:34,550 --> 00:01:37,120

-se tornar uma desculpa para começar a fazer aquele tipo de abordagem de

-

-32

-00:01:37,120 --> 00:01:40,530

-"corte-e-correção" na qual nós começamos a enjambrar as coisas, corrigir os

-

-33

-00:01:40,530 --> 00:01:43,640

-principais defeitos quando o cliente nos dá sua opinião e então continuamos desta

-

-34

-00:01:43,640 --> 00:01:46,780

-maneira, até que o produto final se torne tipo algo que

-

-35

-00:01:46,780 --> 00:01:49,830

-funciona, mas que não é de fato um produto de alta qualidade. Outra coisa

-

-36

-00:01:49,830 --> 00:01:51,910

-que eu quero apontar antes de irmos ao próximo

-

-37

-00:01:51,910 --> 00:01:54,490

-modelo de criação de software é que existem diversas maneiras de

-

-38

-00:01:54,490 --> 00:01:56,700

-prototipagem, então a prototipagem evolutiva é apenas

-

-39

-00:01:56,700 --> 00:01:58,010

-uma delas. Por exemplo, prototipagem

-

-40

-00:01:58,010 --> 00:02:02,100

-descartável é outra maneira de prototipagem na qual o protótipo é

-

-41

-00:02:02,100 --> 00:02:05,580

-usado apenas para coletar requisitos, mas é descartado ao final

-

-42

-00:02:05,580 --> 00:02:08,710

-da coleta de requisitos, ao invés de ser evoluído, como ocorre aqui.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_en_vs5.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_en_vs5.srt
deleted file mode 100644
index 8bc6db8..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,969

-There are two more software process models that I want to cover, so

-

-2

-00:00:02,969 --> 00:00:06,120

-bear with me. The first one is the Rational Unified software Process

-

-3

-00:00:06,120 --> 00:00:09,500

-or IUP, which is s a very popular one based on UML.

-

-4

-00:00:09,500 --> 00:00:12,620

-RUP works in an iterative way, which means it that it performs different

-

-5

-00:00:12,620 --> 00:00:16,360

-iterations. And at each iteration, it performs four phases. So what I'm

-

-6

-00:00:16,360 --> 00:00:19,030

-showing you here, is a high level view of the process. And I

-

-7

-00:00:19,030 --> 00:00:21,630

-don't want you to focus on all the different details, because we

-

-8

-00:00:21,630 --> 00:00:25,170

-will discuss these details later on, in a lesson that is actually dedicated

-

-9

-00:00:25,170 --> 00:00:27,470

-to RUP. What I want to give you now, is just the

-

-10

-00:00:27,470 --> 00:00:31,020

-gist of how this works. So, in each one of these four

-

-11

-00:00:31,020 --> 00:00:34,680

-phases, which I'm going to describe in a second. We perform standard software

-

-12

-00:00:34,680 --> 00:00:38,060

-engineering activities, the ones that we just discussed. And we do them

-

-13

-00:00:38,060 --> 00:00:41,320

-to different extent, based on the phase in which we are.

-

-14

-00:00:41,320 --> 00:00:44,841

-In particular, in the inception phase the work is mostly to sculpt

-

-15

-00:00:44,841 --> 00:00:47,940

-the system. So basically figuring out what is the scope of the

-

-16

-00:00:47,940 --> 00:00:50,220

-work, what is the scope of the project, what is the domain.

-

-17

-00:00:50,220 --> 00:00:52,670

-So that we can be able to perform initial cost

-

-18

-00:00:52,670 --> 00:00:56,190

-and budget estimates. The operational phase is the phase in which

-

-19

-00:00:56,190 --> 00:00:59,910

-we focus on the domain analysis and define the basic architecture

-

-20

-00:00:59,910 --> 00:01:03,030

-for the system. So this is a phase in which analysis

-

-21

-00:01:03,030 --> 00:01:06,290

-and design are particularly paramount. Then there is a construction phase,

-

-22

-00:01:06,290 --> 00:01:09,250

-which is where the bulk of the development actually occurs. And

-

-23

-00:01:09,250 --> 00:01:11,640

-as you can see here, is where most of the implementation

-

-24

-00:01:11,640 --> 00:01:15,280

-happens. And finally, the transition phase is the phase in which

-

-25

-00:01:15,280 --> 00:01:18,090

-the system goes from development into production, so that

-

-26

-00:01:18,090 --> 00:01:20,380

-it becomes available to users. And of course, this is

-

-27

-00:01:20,380 --> 00:01:22,480

-the phase in which the other activities in software

-

-28

-00:01:22,480 --> 00:01:25,710

-development become less relevant and deployment becomes the main one.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_pt_vs1.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_pt_vs1.srt
deleted file mode 100644
index cb089cb..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/14 - Rational Unified Process - lang_pt_vs1.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,969

-Existem ainda dois outros processos de modelagem de software que eu gostaria de tratar, então

-

-2

-00:00:02,969 --> 00:00:06,120

-me acompanhem. O primeiro é o Processo Unificado Racional

-

-3

-00:00:06,120 --> 00:00:09,500

-ou RUP que é um dos mais populares baseados em UML.

-

-4

-00:00:09,500 --> 00:00:12,620

-RUP opera de uma maneira iterativa, o que significa que ocorrem diversas

-

-5

-00:00:12,620 --> 00:00:16,360

-iterações. E em cada iteração, são desenvolvidas quatro fases. Então o que eu

-

-6

-00:00:16,360 --> 00:00:19,030

-estou lhe mostrando aqui, é uma vista panorâmica do processo. E eu

-

-7

-00:00:19,030 --> 00:00:21,630

-não quero que você foque em todos os detalhes, porquê nós

-

-8

-00:00:21,630 --> 00:00:25,170

-iremos discutir estes detalhes mais tarde, numa lição que é de fato dedicada

-

-9

-00:00:25,170 --> 00:00:27,470

-ao RUP. O que eu quero lhe dar agora, é apenas a

-

-10

-00:00:27,470 --> 00:00:31,020

-essência de como isso funciona. Então, em cada um dessas quatro

-

-11

-00:00:31,020 --> 00:00:34,680

-fases, que eu irei descrever em breve... Nós desenvolvemos atividades

-

-12

-00:00:34,680 --> 00:00:38,060

-de engenharia de software padrões, as que nós já discutimos. E nós as fazemos

-

-13

-00:00:38,060 --> 00:00:41,320

-para diferentes amplitudes, baseadas na fase em que nos encontramos.

-

-14

-00:00:41,320 --> 00:00:44,841

-Em particular, na fase de Concepção (Iniciação) o trabalho será sobretudo de esculpir

-

-15

-00:00:44,841 --> 00:00:47,940

-o sistema. E basicamente ilustrando o escopo do

-

-16

-00:00:47,940 --> 00:00:50,220

-trabalho, qual será o escopo do projeto, qual é o domínio.

-

-17

-00:00:50,220 --> 00:00:52,670

-E então nós seremos capazes de saber o custo inicial

-

-18

-00:00:52,670 --> 00:00:56,190

-e fazer um orçamento. A fase de Elaboração é a fase na qual

-

-19

-00:00:56,190 --> 00:00:59,910

-nós focamos na análise de domínio e definimos a arquitetura de base

-

-20

-00:00:59,910 --> 00:01:03,030

-do sistema. Então esta é a fase na qual a análise

-

-21

-00:01:03,030 --> 00:01:06,290

-e o projeto se tornam proeminentes. E então ocorre a fase de Construção,

-

-22

-00:01:06,290 --> 00:01:09,250

-na qual o desenvolvimento massivo de fato ocorre. E

-

-23

-00:01:09,250 --> 00:01:11,640

-como você pode ver aqui, é onde a maior parte da implementação

-

-24

-00:01:11,640 --> 00:01:15,280

-ocorre. E finalmente, a fase de Transição é a fase na qual

-

-25

-00:01:15,280 --> 00:01:18,090

-o sistema passa do desenvolvimento para a produção, e então

-

-26

-00:01:18,090 --> 00:01:20,380

-ele se torna disponível aos usuários. E é claro, esta é

-

-27

-00:01:20,380 --> 00:01:22,480

-a fase na qual as outras atividades em desenvolvimento de

-

-28

-00:01:22,480 --> 00:01:25,710

-software se tornam menos relevantes e a entrega se torna a principal.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_en_vs3.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_en_vs3.srt
deleted file mode 100644
index 70ef200..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_en_vs3.srt
+++ /dev/null
@@ -1,123 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,300

-The next type of software process models that I

-

-2

-00:00:02,300 --> 00:00:06,300

-want to discuss are Agile Software Development Processes. And this

-

-3

-00:00:06,300 --> 00:00:08,470

-is a group of software development methods that are

-

-4

-00:00:08,470 --> 00:00:12,620

-based on highly iterative and incremental development. And in particular,

-

-5

-00:00:12,620 --> 00:00:16,000

-I'm going to discuss Test Driven Development or TDD. The

-

-6

-00:00:16,000 --> 00:00:18,490

-space on the iteration of three main phases. In

-

-7

-00:00:18,490 --> 00:00:20,970

-the first one that we mark as red, we

-

-8

-00:00:20,970 --> 00:00:25,350

-write test cases that encode our requirements, and for which

-

-9

-00:00:25,350 --> 00:00:29,180

-we haven't written code yet. And therefore, they will fail, obviously.

-

-10

-00:00:29,180 --> 00:00:31,800

-So we're in this sort of red or fail phase. From

-

-11

-00:00:31,800 --> 00:00:34,830

-this phase, we move to this phase, in which after we

-

-12

-00:00:34,830 --> 00:00:37,970

-write the just enough code to make the test cases pass.

-

-13

-00:00:37,970 --> 00:00:40,670

-We have a set of test cases that are all passing.

-

-14

-00:00:40,670 --> 00:00:43,810

-And therefore, we can consider this as the green phase. We

-

-15

-00:00:43,810 --> 00:00:46,930

-had enough code to make the test cases pass because the

-

-16

-00:00:46,930 --> 00:00:50,520

-test cases encode our requirements. We have just written enough code to

-

-17

-00:00:50,520 --> 00:00:53,940

-satisfy our requirements. When we do this over time though,

-

-18

-00:00:53,940 --> 00:00:57,080

-what happens is that the structure of the code deteriorates, because

-

-19

-00:00:57,080 --> 00:00:59,100

-we keep adding pieces. So that's why we have the

-

-20

-00:00:59,100 --> 00:01:02,540

-first step, which is refactoring. In this step, we modify the

-

-21

-00:01:02,540 --> 00:01:05,724

-code, and we will talk about refactoring extensively. We'll devote

-

-22

-00:01:05,724 --> 00:01:08,190

-one lesson to it. We modify the code to make it

-

-23

-00:01:08,190 --> 00:01:12,650

-more readable, more maintainable. In general, we modify to improve the

-

-24

-00:01:12,650 --> 00:01:15,560

-design of the code. And after this phase, we will go

-

-25

-00:01:15,560 --> 00:01:17,670

-back to writing more test cases for

-

-26

-00:01:17,670 --> 00:01:19,730

-new requirements, write code that makes these

-

-27

-00:01:19,730 --> 00:01:24,870

-test cases pass, and so on. So we'll continue to iterate among these phases. And

-

-28

-00:01:24,870 --> 00:01:26,500

-also, in this case, we will talk

-

-29

-00:01:26,500 --> 00:01:29,390

-about Agile Software Processes. And in particular,

-

-30

-00:01:29,390 --> 00:01:32,250

-about extreme programming, or XP, and Scrum

-

-31

-00:01:32,250 --> 00:01:35,349

-in more details, in minor course number four.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_pt_vs1.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_pt_vs1.srt
deleted file mode 100644
index b2224ea..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/15 - Agile Process - lang_pt_vs1.srt
+++ /dev/null
@@ -1,123 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,300

-O próximo tipo de modelos de processo para software que eu

-

-2

-00:00:02,300 --> 00:00:06,300

-gostaria de discutir são os Processos Ágil de Desenvolvimento de Software. E este

-

-3

-00:00:06,300 --> 00:00:08,470

-é um grupo de métodos de desenvolvimento de software que são

-

-4

-00:00:08,470 --> 00:00:12,620

-baseados em desenvolvimento incremental e altamente iterativo. E em particular,

-

-5

-00:00:12,620 --> 00:00:16,000

-eu irei discutir é o Desenvolvimento Orientado a Testes, ou TDD. O

-

-6

-00:00:16,000 --> 00:00:18,490

-espaço na interação de três fases principais. Na

-

-7

-00:00:18,490 --> 00:00:20,970

-primeira delas que iremos marcar em vermelho, nós

-

-8

-00:00:20,970 --> 00:00:25,350

-escrevemos casos de teste que codificam nossos requisitos, e para os quais

-

-9

-00:00:25,350 --> 00:00:29,180

-nós ainda não escrevemos o código. E obviamente, em seguida eles irão falhar.

-

-10

-00:00:29,180 --> 00:00:31,800

-E então nós iremos cair neste tipo de fase vermelha, ou de falha. Desta

-

-11

-00:00:31,800 --> 00:00:34,830

-fase, nós passamos para esta outra fase, a qual ocorre depois de nós

-

-12

-00:00:34,830 --> 00:00:37,970

-escrevermos código suficiente para que os casos de teste aprovem.

-

-13

-00:00:37,970 --> 00:00:40,670

-Nós temos um conjunto de casos de testes em que todos aprovaram.

-

-14

-00:00:40,670 --> 00:00:43,810

-E em segunda, nós podemos considerar isso como a fase verde. Nós

-

-15

-00:00:43,810 --> 00:00:46,930

-temos código suficiente para fazer os casos de teste aprovarem porquê os

-

-16

-00:00:46,930 --> 00:00:50,520

-casos de teste codificam nossos requisitos. Nós escrevemos código suficiente para

-

-17

-00:00:50,520 --> 00:00:53,940

-satisfazer nossos requisitos. Quando nós seguimos com isso ao longo do tempo,

-

-18

-00:00:53,940 --> 00:00:57,080

-o que ocorre é que a estrutura do código deteriora, porquê

-

-19

-00:00:57,080 --> 00:00:59,100

-nós continuamos adicionando partes! E esta é a razão de nós termos o

-

-20

-00:00:59,100 --> 00:01:02,540

-primeiro passo, que é a Refatoração. Neste passo, nós modificamos o

-

-21

-00:01:02,540 --> 00:01:05,724

-código, e nós iremos falar extensamente sobre refatoração. Nós iremos dedicar

-

-22

-00:01:05,724 --> 00:01:08,190

-uma aula para isso. Nós modificamos o código para o tornar mais

-

-23

-00:01:08,190 --> 00:01:12,650

-legível, mais fácil de dar manutenção. Em geral, nós modificamos para aprimorar a

-

-24

-00:01:12,650 --> 00:01:15,560

-concepção do código. E depois desta fase, nós iremos tornar a

-

-25

-00:01:15,560 --> 00:01:17,670

-escrever mais casos de teste para

-

-26

-00:01:17,670 --> 00:01:19,730

-novos requisitos... escrever código que faz com que

-

-27

-00:01:19,730 --> 00:01:24,870

-esses casos de teste aprovem e assim em diante. E então nós iremos continuar a iterar ao entre essas fases. E

-

-28

-00:01:24,870 --> 00:01:26,500

-também, neste caso, nós iremos falar

-

-29

-00:01:26,500 --> 00:01:29,390

-sobre Processos Ágil de Desenvolvimento de Software. E em particular, em

-

-30

-00:01:29,390 --> 00:01:32,250

-Programação Extrema, ou XP e SCRUM

-

-31

-00:01:32,250 --> 00:01:35,349

-mais detalhadamente, no subcurso número quatro.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/16 - Choosing a Model - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/16 - Choosing a Model - lang_en_vs4.srt
deleted file mode 100644
index d898337..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/16 - Choosing a Model - lang_en_vs4.srt
+++ /dev/null
@@ -1,179 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,860

-We just saw several software process models, and there

-

-2

-00:00:02,860 --> 00:00:06,330

-are many, many more. And because these process models define

-

-3

-00:00:06,330 --> 00:00:09,330

-the master plan for our project, the specific process

-

-4

-00:00:09,330 --> 00:00:12,220

-model that we choose has as much influence over a

-

-5

-00:00:12,220 --> 00:00:15,700

-project's success as any other major planning decision that

-

-6

-00:00:15,700 --> 00:00:18,610

-we make. Therefore, it is very important that we pick

-

-7

-00:00:18,610 --> 00:00:22,100

-the appropriate model for our development process. Picking an appropriate

-

-8

-00:00:22,100 --> 00:00:25,100

-model can ensure the success of a project. On the

-

-9

-00:00:25,100 --> 00:00:27,830

-contrary, if we choose the wrong model, that can be a

-

-10

-00:00:27,830 --> 00:00:31,010

-constant source of problems and ultimately, it can make the project

-

-11

-00:00:31,010 --> 00:00:33,830

-fail. So how can we choose the right model for a

-

-12

-00:00:33,830 --> 00:00:36,310

-project? To be able to do so, we have to take into

-

-13

-00:00:36,310 --> 00:00:40,490

-consideration many factors. In particular, we need to be aware of

-

-14

-00:00:40,490 --> 00:00:44,390

-what level of understanding we have of the requirements. Do we understand

-

-15

-00:00:44,390 --> 00:00:46,720

-all the requirements? Are we going to be able to collect all

-

-16

-00:00:46,720 --> 00:00:50,430

-the requirements in advance, or collecting requirements is going to be hard and

-

-17

-00:00:50,430 --> 00:00:53,460

-therefore, we might want to follow a process that is more flexible

-

-18

-00:00:53,460 --> 00:00:57,470

-with that respect. Another important point is the expected lifetime of the

-

-19

-00:00:57,470 --> 00:01:00,300

-project. Is this a quick project that we are putting together for

-

-20

-00:01:00,300 --> 00:01:03,100

-a specific purpose or something that's going to last for for a number

-

-21

-00:01:03,100 --> 00:01:05,910

-of years and that we're going to maintain over all those years?

-

-22

-00:01:05,910 --> 00:01:08,380

-That's going to make a difference in the way we decide to develop

-

-23

-00:01:08,380 --> 00:01:12,190

-that project. Also, what is the level of risk involved? Do we

-

-24

-00:01:12,190 --> 00:01:15,530

-know the domain very well? Do we know exactly the technologies involved?

-

-25

-00:01:15,530 --> 00:01:19,100

-Well, if so, we might go with a more traditional process. Otherwise,

-

-26

-00:01:19,100 --> 00:01:21,902

-we might want to be more agile, more flexible. It is also

-

-27

-00:01:21,902 --> 00:01:24,900

-very important to know the schedule constraints. How much time, how many

-

-28

-00:01:24,900 --> 00:01:28,640

-resources do we have for this project? What is the expected interaction

-

-29

-00:01:28,640 --> 00:01:31,870

-with the management and the customer? In particular for this ladder, there

-

-30

-00:01:31,870 --> 00:01:34,840

-are many processes that rely on the fact that there can be

-

-31

-00:01:34,840 --> 00:01:38,310

-a continuous interaction with the customer. If that interaction is not there,

-

-32

-00:01:38,310 --> 00:01:41,230

-there's no way we are going to be able to use these processes.

-

-33

-00:01:41,230 --> 00:01:44,580

-Conversely, there are processes that don't require the presence of the customer

-

-34

-00:01:44,580 --> 00:01:47,868

-at all, except for the initial phase and maybe some checking points and

-

-35

-00:01:47,868 --> 00:01:51,020

-so if the customer is very inaccessible, we might want to follow

-

-36

-00:01:51,020 --> 00:01:53,740

-one of those processes, instead of one of the more demanding ones in

-

-37

-00:01:53,740 --> 00:01:57,340

-terms of customer's time. Finally, it is important to take into account

-

-38

-00:01:57,340 --> 00:02:00,450

-the level of the expertise of the people involved. Do we have people

-

-39

-00:02:00,450 --> 00:02:02,730

-that know the technologies that we're using? Do we know people that

-

-40

-00:02:02,730 --> 00:02:04,590

-know a specific kind of process?

-

-41

-00:02:04,590 --> 00:02:06,930

-Some processes require some specific expertise and

-

-42

-00:02:06,930 --> 00:02:09,320

-we're not going to be able to follow that process if we don't

-

-43

-00:02:09,320 --> 00:02:12,410

-have the right expertise. So we need to take into account all of

-

-44

-00:02:12,410 --> 00:02:15,570

-these aspects, and sometimes more, in order to be able to make

-

-45

-00:02:15,570 --> 00:02:19,560

-the right decision and pick the right software process model for our project.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/17 - Choosing a Model Quiz - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/17 - Choosing a Model Quiz - lang_en_vs4.srt
deleted file mode 100644
index 9f733ac..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/17 - Choosing a Model Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,080

-Now before we move to the last part of the lesson, let's

-

-2

-00:00:02,080 --> 00:00:04,939

-have a quick quiz on software process models to make sure that

-

-3

-00:00:04,939 --> 00:00:06,640

-we are all on the same page. So I am going to

-

-4

-00:00:06,640 --> 00:00:10,320

-ask you two questions. The first question is which of the following models

-

-5

-00:00:10,320 --> 00:00:14,330

-is most suitable to develop a software control system? And when you

-

-6

-00:00:14,330 --> 00:00:17,700

-think about the software control system, you can think about for example

-

-7

-00:00:17,700 --> 00:00:21,150

-the control system for the software in an airplane. Would you rather

-

-8

-00:00:21,150 --> 00:00:22,860

-use a pure waterfall model? Test

-

-9

-00:00:22,860 --> 00:00:25,840

-driven development? Or an evolutionary prototyping approach?

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/18 - Choosing a Model Quiz Solution - lang_en_vs5.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/18 - Choosing a Model Quiz Solution - lang_en_vs5.srt
deleted file mode 100644
index 01a444c..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/18 - Choosing a Model Quiz Solution - lang_en_vs5.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,980

-This is the context in which, typically, a pure

-

-2

-00:00:02,980 --> 00:00:06,310

-waterfall process will work well. Why? Well, because it's a

-

-3

-00:00:06,310 --> 00:00:10,160

-context in which requirements are usually well understood. The

-

-4

-00:00:10,160 --> 00:00:13,020

-domain is well understood, so that kind of system has

-

-5

-00:00:13,020 --> 00:00:15,900

-been built many times before. And also, it's a

-

-6

-00:00:15,900 --> 00:00:19,510

-system in which we don't expect requirements to change dramatically

-

-7

-00:00:19,510 --> 00:00:23,180

-over time. Therefore, a waterfall model, in which we collect

-

-8

-00:00:23,180 --> 00:00:25,140

-all the requirements at the beginning and then we move

-

-9

-00:00:25,140 --> 00:00:28,280

-to the subsequent phases might be the most appropriate one. Probably

-

-10

-00:00:28,280 --> 00:00:30,800

-we don't want to do evolutionary prototyping in the case of

-

-11

-00:00:30,800 --> 00:00:34,130

-the control system for an airplane. Same thing holds for TDD,

-

-12

-00:00:34,130 --> 00:00:36,460

-so we want to be a little more rigorous in those cases.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/19 - Choosing a Model Quiz - lang_en_vs5.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/19 - Choosing a Model Quiz - lang_en_vs5.srt
deleted file mode 100644
index 570d146..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/19 - Choosing a Model Quiz - lang_en_vs5.srt
+++ /dev/null
@@ -1,11 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,580

-The second question I want to ask you is which model is the most suitable if you

-

-2

-00:00:03,580 --> 00:00:06,660

-expect mid-course corrections? Would you rather use a

-

-3

-00:00:06,660 --> 00:00:10,430

-pure waterfall model, a spiral model, or evolutionary prototyping?

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/2 - Traditional Software Phases - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/2 - Traditional Software Phases - lang_en_vs4.srt
deleted file mode 100644
index cc522f0..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/2 - Traditional Software Phases - lang_en_vs4.srt
+++ /dev/null
@@ -1,75 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,650

-As we just heard from Professor Bohem, software

-

-2

-00:00:02,650 --> 00:00:05,970

-engineering is an important and critical discipline, concerned

-

-3

-00:00:05,970 --> 00:00:09,100

-with cost effective software development. We also heard

-

-4

-00:00:09,100 --> 00:00:11,170

-that this is based on a systematic approach

-

-5

-00:00:11,170 --> 00:00:14,580

-that uses appropriate tools and techniques, operates under

-

-6

-00:00:14,580 --> 00:00:18,130

-specific development constraints. And most importantly, follows a

-

-7

-00:00:18,130 --> 00:00:20,890

-process. As we discussed in the previous lesson,

-

-8

-00:00:20,890 --> 00:00:25,770

-the software development process contains fundamental activities, or phases.

-

-9

-00:00:25,770 --> 00:00:28,480

-Since we will discuss several processes, I'm going to remind

-

-10

-00:00:28,480 --> 00:00:31,150

-you what these phases are. We start with requirements

-

-11

-00:00:31,150 --> 00:00:33,630

-engineering, followed by design,

-

-12

-00:00:33,630 --> 00:00:36,980

-implementation, verification and validation, and

-

-13

-00:00:36,980 --> 00:00:40,950

-finally maintenance. Note that we will revisit each of

-

-14

-00:00:40,950 --> 00:00:43,940

-these phases and devote an entire lesson or more

-

-15

-00:00:43,940 --> 00:00:46,160

-to each phase. So what I want to do next

-

-16

-00:00:46,160 --> 00:00:48,210

-is simply to give you a quick overview of

-

-17

-00:00:48,210 --> 00:00:51,020

-what these phases are. Note also that for now

-

-18

-00:00:51,020 --> 00:00:54,330

-I will follow a very traditional take on these topics. Later on in the

-

-19

-00:00:54,330 --> 00:00:58,260

-class we will see how things can change and did change over the years.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/20 - Choosing a Model Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/20 - Choosing a Model Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 7ea0e4f..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/20 - Choosing a Model Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,860

-In this case, I think about the spiral model,

-

-2

-00:00:02,860 --> 00:00:06,610

-and evolutionary prototyping model will work. Definitely you don't want to

-

-3

-00:00:06,610 --> 00:00:09,110

-have a pure water from water. Why? Well because it

-

-4

-00:00:09,110 --> 00:00:11,940

-is very expensive with a pure waterfall model to make

-

-5

-00:00:11,940 --> 00:00:15,460

-changes during the course of the project, especially changes

-

-6

-00:00:15,460 --> 00:00:17,860

-that involve requirements. Why? Because we saw that it can

-

-7

-00:00:17,860 --> 00:00:20,440

-be very expensive. Whereas with the spiral model, we saw

-

-8

-00:00:20,440 --> 00:00:25,220

-that being iterative, we can actually make correction throughout development.

-

-9

-00:00:25,220 --> 00:00:28,840

-Similarly, with evolutionary prototyping, we keep evolving our system

-

-10

-00:00:28,840 --> 00:00:32,170

-based on the customer feedback. And therefore, if something changes,

-

-11

-00:00:32,170 --> 00:00:33,810

-we will get feedback right away, and we will

-

-12

-00:00:33,810 --> 00:00:36,230

-be able to adapt. So the key thing here is

-

-13

-00:00:36,230 --> 00:00:39,060

-that anything that is iterative works better in the

-

-14

-00:00:39,060 --> 00:00:43,400

-case of changing environments. So, situations in which your requirements,

-

-15

-00:00:43,400 --> 00:00:46,720

-the situation, the project might change. Whereas waterfall is

-

-16

-00:00:46,720 --> 00:00:50,410

-more appropriate for situations in which the requirements are stable,

-

-17

-00:00:50,410 --> 00:00:53,760

-we know the domain, and possibly we also know the technologies involved.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/21 - Lifecycle Documents - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/21 - Lifecycle Documents - lang_en_vs4.srt
deleted file mode 100644
index 20e1102..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/21 - Lifecycle Documents - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,650

-Now that we discussed softer process models, there is

-

-2

-00:00:02,650 --> 00:00:05,100

-another important point I want to cover, because it's going to

-

-3

-00:00:05,100 --> 00:00:08,970

-be useful for your projects. Documenting the activities carried out

-

-4

-00:00:08,970 --> 00:00:11,660

-during the different phases of the softer lifecycle, is a

-

-5

-00:00:11,660 --> 00:00:14,960

-very important task. The documents that we produce are used

-

-6

-00:00:14,960 --> 00:00:18,270

-for different purposes, such as communicative details of the software

-

-7

-00:00:18,270 --> 00:00:21,650

-systems. To difference the colors, ensure the correct implementation of

-

-8

-00:00:21,650 --> 00:00:25,630

-the system, facilitate maintenance, and so on. There are standardized

-

-9

-00:00:25,630 --> 00:00:29,230

-document that are provided by IEEE that you can use

-

-10

-00:00:29,230 --> 00:00:32,680

-for this purpose. However, they're kind of heavyweight. So for the

-

-11

-00:00:32,680 --> 00:00:35,090

-project in this class, when we will need them, I will

-

-12

-00:00:35,090 --> 00:00:38,760

-rather use this lightweight documents. That we created by modifying the

-

-13

-00:00:38,760 --> 00:00:41,730

-original ones, and make them a little simpler. In this,

-

-14

-00:00:41,730 --> 00:00:44,700

-our documents are actually used, while teaching this class in the

-

-15

-00:00:44,700 --> 00:00:47,600

-past. So they're well tested and work well for the kind

-

-16

-00:00:47,600 --> 00:00:50,730

-of projects that we will perform. I provide information on how

-

-17

-00:00:50,730 --> 00:00:52,880

-to access these documents in the class notes.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/22 - Classic Mistakes: People - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/22 - Classic Mistakes: People - lang_en_vs4.srt
deleted file mode 100644
index 7edb042..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/22 - Classic Mistakes: People - lang_en_vs4.srt
+++ /dev/null
@@ -1,163 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,000

-Now we get to the final part of the lesson.

-

-2

-00:00:02,000 --> 00:00:04,810

-And in this part I want to talk about well known,

-

-3

-00:00:04,810 --> 00:00:09,230

-ineffective development practices. These practices, when followed, tend to lead

-

-4

-00:00:09,230 --> 00:00:13,245

-to predictably bad results. So let's look at some examples of

-

-5

-00:00:13,245 --> 00:00:17,130

-these classic mistakes. And we're going to start with mistakes

-

-6

-00:00:17,130 --> 00:00:20,660

-involving people. And notice that there is a long list. So

-

-7

-00:00:20,660 --> 00:00:23,100

-I'm going to discuss just a few of those mistakes.

-

-8

-00:00:23,100 --> 00:00:25,215

-And I'm going to point you to more information on this

-

-9

-00:00:25,215 --> 00:00:27,550

-topic in the class notes. And some of these mistakes are

-

-10

-00:00:27,550 --> 00:00:30,020

-actually kind of entertaining. So I'll recommend that you look at

-

-11

-00:00:30,020 --> 00:00:33,210

-the class notes and go in more depth in this list.

-

-12

-00:00:33,210 --> 00:00:35,550

-So the first people mistake I want to mention is the

-

-13

-00:00:35,550 --> 00:00:38,945

-one that I define, heroics. And this refers to too much

-

-14

-00:00:38,945 --> 00:00:43,480

-emphasis on can do attitudes, so this idea that one person

-

-15

-00:00:43,480 --> 00:00:46,330

-by himself or by herself can do everything and can make

-

-16

-00:00:46,330 --> 00:00:50,422

-the difference in the whole project. And unfortunately, this encourages extreme

-

-17

-00:00:50,422 --> 00:00:53,950

-risk taking and discourages cooperation, which is plain bad for

-

-18

-00:00:53,950 --> 00:00:56,610

-the project. For example, it might force people not to

-

-19

-00:00:56,610 --> 00:00:59,600

-report schedule slips. It might force people to take on

-

-20

-00:00:59,600 --> 00:01:02,210

-on too much responsibility. And normally, and I saw it

-

-21

-00:01:02,210 --> 00:01:05,600

-happen many times, the final result is a failure. So

-

-22

-00:01:05,600 --> 00:01:08,410

-what you want when you're developing a larger project, is

-

-23

-00:01:08,410 --> 00:01:11,710

-actually to apply soft engineering principles. Have teams, have team

-

-24

-00:01:11,710 --> 00:01:15,580

-work, and have cooperation among the different team members, without pointing

-

-25

-00:01:15,580 --> 00:01:18,830

-too much on single individuals. Another classic mistake

-

-26

-00:01:18,830 --> 00:01:22,140

-is to not create the right working environment. We

-

-27

-00:01:22,140 --> 00:01:24,900

-all like to work in nice environments. And there

-

-28

-00:01:24,900 --> 00:01:27,790

-is strong evidence that the working environments can play

-

-29

-00:01:27,790 --> 00:01:30,670

-a big role in productivity. There is evidence

-

-30

-00:01:30,670 --> 00:01:34,280

-that productivity increases when the workplace is nice, quiet,

-

-31

-00:01:34,280 --> 00:01:37,950

-warm, and welcoming. Finally, some of the most important

-

-32

-00:01:37,950 --> 00:01:41,480

-people relating mistakes are due to poor people management.

-

-33

-00:01:41,480 --> 00:01:44,540

-For example, lack of leaderships, or leadership that is

-

-34

-00:01:44,540 --> 00:01:47,920

-exercised using the wrong means in the wrong way, which

-

-35

-00:01:47,920 --> 00:01:50,280

-can lead to very unhappy personnel and therefore, low

-

-36

-00:01:50,280 --> 00:01:54,190

-productivity, or even people leaving teams. Another classic example of

-

-37

-00:01:54,190 --> 00:01:57,370

-poor management is adding people to a project that

-

-38

-00:01:57,370 --> 00:02:01,600

-is behind schedule, which never works. Why it doesn't work?

-

-39

-00:02:01,600 --> 00:02:03,440

-Because these new people need to be brought up to

-

-40

-00:02:03,440 --> 00:02:06,520

-speed, and that causes further delays rather than improving the

-

-41

-00:02:06,520 --> 00:02:08,280

-situation with the project schedule.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/23 - Classic Mistakes: Process - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/23 - Classic Mistakes: Process - lang_en_vs4.srt
deleted file mode 100644
index 83720a0..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/23 - Classic Mistakes: Process - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,080 --> 00:00:03,770

-Another type of classic mistakes are process-related mistakes. And also

-

-2

-00:00:03,770 --> 00:00:05,850

-in this case, these kind of mistakes can be due

-

-3

-00:00:05,850 --> 00:00:08,970

-to many reasons. And they are of many types. One

-

-4

-00:00:08,970 --> 00:00:12,310

-typical example are scheduling issues, which are due to the fact

-

-5

-00:00:12,310 --> 00:00:15,180

-of being unable to come up with a realistic schedule.

-

-6

-00:00:15,180 --> 00:00:17,750

-So to have an overly optimistic schedule. And this can be

-

-7

-00:00:17,750 --> 00:00:21,230

-because we underestimate the effort involved in different parts of

-

-8

-00:00:21,230 --> 00:00:25,010

-the project. Because we overestimate the ability of the people involved.

-

-9

-00:00:25,010 --> 00:00:27,600

-Because we overestimate the importance, for example, of the use

-

-10

-00:00:27,600 --> 00:00:29,640

-of tools. But no matter what the reason is, the

-

-11

-00:00:29,640 --> 00:00:32,840

-result is typically that the projects end up being late,

-

-12

-00:00:32,840 --> 00:00:35,580

-which is a very common situation. So this is somehow

-

-13

-00:00:35,580 --> 00:00:39,020

-related to planning. And in general, planning is a fundamental

-

-14

-00:00:39,020 --> 00:00:42,720

-factor in software processes and in software development. Mistakes in

-

-15

-00:00:42,720 --> 00:00:46,120

-planning, such as insufficient planning or abandoning planning due to

-

-16

-00:00:46,120 --> 00:00:50,190

-pressure, usually lead inexorably to failure. And speaking of failures,

-

-17

-00:00:50,190 --> 00:00:53,040

-often there are unforeseen failures. Such as

-

-18

-00:00:53,040 --> 00:00:55,410

-failures on the constructor's end, for example,

-

-19

-00:00:55,410 --> 00:00:56,920

-that might lead to low quality or

-

-20

-00:00:56,920 --> 00:01:00,580

-late deliverables, which ultimately affects the downstream activities.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/24 - Classic Mistakes: Product - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/24 - Classic Mistakes: Product - lang_en_vs4.srt
deleted file mode 100644
index 24972d9..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/24 - Classic Mistakes: Product - lang_en_vs4.srt
+++ /dev/null
@@ -1,87 +0,0 @@
-1

-00:00:00,090 --> 00:00:01,970

-The third category of mistakes that I want to

-

-2

-00:00:01,970 --> 00:00:04,970

-mention is product-related mistakes. A

-

-3

-00:00:04,970 --> 00:00:07,360

-typical example of product-related mistake

-

-4

-00:00:07,360 --> 00:00:11,010

-is gold plating of requirements. And what that means is

-

-5

-00:00:11,010 --> 00:00:13,710

-basically is that it's very common for projects to have

-

-6

-00:00:13,710 --> 00:00:17,230

-more requirements than they actually need. For example, marketing might

-

-7

-00:00:17,230 --> 00:00:19,090

-want to add more features than the ones that are

-

-8

-00:00:19,090 --> 00:00:21,460

-actually needed by the users. And of course having more

-

-9

-00:00:21,460 --> 00:00:25,720

-requirements lengthens the project's schedule in a totally unnecessary way.

-

-10

-00:00:25,720 --> 00:00:29,250

-Feature creep is another common mistake and consists in

-

-11

-00:00:29,250 --> 00:00:32,140

-adding more and more features to a product that were

-

-12

-00:00:32,140 --> 00:00:34,650

-not initially planned and are not really needed in most

-

-13

-00:00:34,650 --> 00:00:38,360

-cases. And here there is evidence that the average project

-

-14

-00:00:38,360 --> 00:00:41,180

-experiences about a 25% growth in the number of

-

-15

-00:00:41,180 --> 00:00:44,330

-features over its lifetime which can clearly highly effect The

-

-16

-00:00:44,330 --> 00:00:47,580

-project schedule. Finally, if you're working on a project that

-

-17

-00:00:47,580 --> 00:00:50,760

-strains the limits of computer science. For example, because you

-

-18

-00:00:50,760 --> 00:00:53,350

-need to develop new algorithms for the project, or you have

-

-19

-00:00:53,350 --> 00:00:56,670

-to use new techniques. Then that project might be more research than

-

-20

-00:00:56,670 --> 00:00:58,450

-actual development. And therefore, it

-

-21

-00:00:58,450 --> 00:01:00,600

-should be managed accordingly. For example,

-

-22

-00:01:00,600 --> 00:01:03,910

-by taking into account that you will have a highly unpredictable schedule.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/25 - Classic Mistakes: Technology - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/25 - Classic Mistakes: Technology - lang_en_vs4.srt
deleted file mode 100644
index 16810ac..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/25 - Classic Mistakes: Technology - lang_en_vs4.srt
+++ /dev/null
@@ -1,95 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,360

-The final type of classic mistakes that I want

-

-2

-00:00:02,360 --> 00:00:06,470

-to mention are technology related mistakes. One typical mistake

-

-3

-00:00:06,470 --> 00:00:09,990

-in this context is the silver-bullet syndrome. What does

-

-4

-00:00:09,990 --> 00:00:13,340

-that mean? Well, the silver-bullet syndrome refers to situations

-

-5

-00:00:13,340 --> 00:00:15,900

-in which there is too much reliance on the

-

-6

-00:00:15,900 --> 00:00:19,950

-advertised benefits of some previously unused technology. For example,

-

-7

-00:00:19,950 --> 00:00:21,980

-a new technology. And the problem here is that

-

-8

-00:00:21,980 --> 00:00:25,140

-we cannot expect technology alone to solve our software

-

-9

-00:00:25,140 --> 00:00:27,810

-development issues. So we should not rely too

-

-10

-00:00:27,810 --> 00:00:31,020

-much on technology alone. Another typical mistake is to

-

-11

-00:00:31,020 --> 00:00:33,700

-switch or add tools in the middle of

-

-12

-00:00:33,700 --> 00:00:36,010

-a project. And sometimes it can make sense to

-

-13

-00:00:36,010 --> 00:00:38,620

-upgrade a tool, but introducing new tools, which

-

-14

-00:00:38,620 --> 00:00:41,650

-can have a steep learning curve, has almost always

-

-15

-00:00:41,650 --> 00:00:46,290

-negative effects. Finally, a common unforgivable mistake is

-

-16

-00:00:46,290 --> 00:00:50,230

-the lack of an automated version control system for

-

-17

-00:00:50,230 --> 00:00:53,480

-your code and for your various artifacts. Manual and

-

-18

-00:00:53,480 --> 00:00:56,700

-ad hoc solutions are just not an option. It is

-

-19

-00:00:56,700 --> 00:00:59,270

-way too easy to make mistakes, use out of

-

-20

-00:00:59,270 --> 00:01:02,600

-date versions, be unable to find a previous working version,

-

-21

-00:01:02,600 --> 00:01:05,030

-and so on. I saw that happening many times,

-

-22

-00:01:05,030 --> 00:01:08,640

-and it always results in a disaster. So be warned,

-

-23

-00:01:08,640 --> 00:01:11,650

-use a version control system and an automated one. And

-

-24

-00:01:11,650 --> 00:01:14,750

-actually we will use version control systems in our projects.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/26 - Classic Mistakes Quiz - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/26 - Classic Mistakes Quiz - lang_en_vs4.srt
deleted file mode 100644
index 2b4263f..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/26 - Classic Mistakes Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,23 +0,0 @@
-1

-00:00:00,060 --> 00:00:01,650

-To conclude this lesson, I'm going to have a

-

-2

-00:00:01,650 --> 00:00:03,650

-simple quiz and what I'm going to ask you

-

-3

-00:00:03,650 --> 00:00:07,950

-is, which kind of mistake adding people to a late project is? And you can pick

-

-4

-00:00:07,950 --> 00:00:10,540

-between a people mistake, a product mistake, a

-

-5

-00:00:10,540 --> 00:00:12,830

-technology mistake, or maybe this is not a

-

-6

-00:00:12,830 --> 00:00:16,800

-mistake at all, it is actually okay to add people to a project that is late.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/27 - Classic Mistakes Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/27 - Classic Mistakes Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 53c2485..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/27 - Classic Mistakes Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,39 +0,0 @@
-1

-00:00:00,060 --> 00:00:02,719

-You probably got this one right. The right answer is that

-

-2

-00:00:02,719 --> 00:00:05,330

-this is a people mistake. And despite the fact that this is

-

-3

-00:00:05,330 --> 00:00:07,550

-an easy answer, I just want to make sure to stress

-

-4

-00:00:07,550 --> 00:00:10,800

-once more. Because this is a very classic mistake. And one that

-

-5

-00:00:10,800 --> 00:00:14,070

-can have dire consequences. You should never add people, to a

-

-6

-00:00:14,070 --> 00:00:18,430

-late project. Because in 99.9% of the cases, that's only going to make

-

-7

-00:00:18,430 --> 00:00:21,390

-things worse. Why? Because these people have to be brought up to

-

-8

-00:00:21,390 --> 00:00:25,590

-speed, and also because having more also makes the communication more difficult,

-

-9

-00:00:25,590 --> 00:00:27,690

-the meetings more difficult and so on. So in

-

-10

-00:00:27,690 --> 00:00:29,980

-short, do not add people to a late project.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/3 - Requirements Engineering - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/3 - Requirements Engineering - lang_en_vs4.srt
deleted file mode 100644
index c541e70..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/3 - Requirements Engineering - lang_en_vs4.srt
+++ /dev/null
@@ -1,175 +0,0 @@
-1

-00:00:00,230 --> 00:00:03,200

-So, let's start with requirements engineering, which is the

-

-2

-00:00:03,200 --> 00:00:06,560

-field within software engineering that deals with establishing the

-

-3

-00:00:06,560 --> 00:00:09,400

-needs of stakeholders that are to be solved by

-

-4

-00:00:09,400 --> 00:00:13,480

-the software. So why is this phase so important?

-

-5

-00:00:13,480 --> 00:00:16,350

-In general, the cost of correcting an error depends

-

-6

-00:00:16,350 --> 00:00:19,060

-on the number of subsequent decisions that are based

-

-7

-00:00:19,060 --> 00:00:22,160

-on it. Therefore, errors made in understanding requirements have

-

-8

-00:00:22,160 --> 00:00:25,670

-the potential for greatest cost because many other design decisions

-

-9

-00:00:25,670 --> 00:00:29,020

-depend on them and many other follow up decisions depend on them.

-

-10

-00:00:29,020 --> 00:00:31,510

-In fact, if we look at this diagram, which is again a

-

-11

-00:00:31,510 --> 00:00:35,210

-qualitative diagram, where we have the cost of error correction over the

-

-12

-00:00:35,210 --> 00:00:38,780

-phase in which the error is discovered. We can see that if we

-

-13

-00:00:38,780 --> 00:00:42,420

-discover an error in requirements it's going to cost us one. If

-

-14

-00:00:42,420 --> 00:00:45,020

-we find it in in design it's going to cost us five and

-

-15

-00:00:45,020 --> 00:00:47,410

-so on and so forth. And the cost grows dramatically as we

-

-16

-00:00:47,410 --> 00:00:50,960

-go from the requirements phase to the maintenance phase. Why? Because of course

-

-17

-00:00:50,960 --> 00:00:53,092

-if we discover a problem here we're left to undo a

-

-18

-00:00:53,092 --> 00:00:55,536

-lot of the decision that we had made before to correct the

-

-19

-00:00:55,536 --> 00:00:58,019

-error. Whereas if we find an error here we can correct it

-

-20

-00:00:58,019 --> 00:01:01,380

-right away and we don't affect the subsequent phases. So how can

-

-21

-00:01:01,380 --> 00:01:03,540

-we collect the right requirements. Traditional

-

-22

-00:01:03,540 --> 00:01:05,310

-requirements in engineering does so through

-

-23

-00:01:05,310 --> 00:01:08,930

-a set of steps. The first step is elicitation which is the

-

-24

-00:01:08,930 --> 00:01:12,840

-collection of requirements from stake holders and other sources and can be

-

-25

-00:01:12,840 --> 00:01:15,890

-done in a variety of ways, we will discuss some of them.

-

-26

-00:01:15,890 --> 00:01:19,280

-The second is requirement analysis which involved the study and

-

-27

-00:01:19,280 --> 00:01:23,200

-deeper understanding of the collective requirements. The third step is this

-

-28

-00:01:23,200 --> 00:01:26,760

-specification of requirements, in which the collective requirements are suitably

-

-29

-00:01:26,760 --> 00:01:30,730

-represented, organized and save so that they can be shared. Also

-

-30

-00:01:30,730 --> 00:01:32,530

-in his case, there are many ways to do this,

-

-31

-00:01:32,530 --> 00:01:34,350

-and we will see some of this ways when we talk

-

-32

-00:01:34,350 --> 00:01:37,550

-about the requirements engineering in the dedicated lesson. Once the

-

-33

-00:01:37,550 --> 00:01:40,970

-requirements have been specified, they can be validated to make sure

-

-34

-00:01:40,970 --> 00:01:44,420

-that they're complete, consistent, no redundant and so on. So

-

-35

-00:01:44,420 --> 00:01:48,460

-that they've satisfied a set of importance properties, for requirements.

-

-36

-00:01:48,460 --> 00:01:52,410

-Finally, the fifth step is requirements management which accounts for

-

-37

-00:01:52,410 --> 00:01:56,100

-changes to requirements during the lifetime of the project. And here

-

-38

-00:01:56,100 --> 00:01:58,330

-I talked about steps, kind of giving the impression that

-

-39

-00:01:58,330 --> 00:02:01,310

-we're just going from the first step to the fifth one

-

-40

-00:02:01,310 --> 00:02:03,300

-and that this is sort of a linear process. In

-

-41

-00:02:03,300 --> 00:02:05,990

-reality, as we will see, this is more of an iterative

-

-42

-00:02:05,990 --> 00:02:09,690

-process in which will go and cover the different phases in an

-

-43

-00:02:09,690 --> 00:02:12,560

-iterative fashion. We will discuss extensively

-

-44

-00:02:12,560 --> 00:02:15,453

-requirements engineering in our second mini-course.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/4 - Design - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/4 - Design - lang_en_vs4.srt
deleted file mode 100644
index 5ddb4d1..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/4 - Design - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,290 --> 00:00:02,900

-Now let's discuss the next phase of software development,

-

-2

-00:00:02,900 --> 00:00:06,080

-which is software design. Software design is the phase

-

-3

-00:00:06,080 --> 00:00:09,030

-where software requirements are analyzed in order to produce

-

-4

-00:00:09,030 --> 00:00:11,500

-a description of the internal structure and organization of

-

-5

-00:00:11,500 --> 00:00:13,900

-the system. And this description will serve as the

-

-6

-00:00:13,900 --> 00:00:17,550

-basis for the construction of the actual system. Traditionally,

-

-7

-00:00:17,550 --> 00:00:20,020

-the software design phase consists of a series of

-

-8

-00:00:20,020 --> 00:00:25,360

-design activities. Which normally consists of the architectural design phase,

-

-9

-00:00:25,360 --> 00:00:27,880

-the abstract specification, interface design,

-

-10

-00:00:27,880 --> 00:00:30,010

-component design, data structure and

-

-11

-00:00:30,010 --> 00:00:33,230

-algorithm design. And notice that this is just a possible list

-

-12

-00:00:33,230 --> 00:00:35,820

-of activities. But you can also characterize design activities in

-

-13

-00:00:35,820 --> 00:00:38,550

-many different ways. And if you're looking at different books, and

-

-14

-00:00:38,550 --> 00:00:41,800

-different sources, you might find different activities described. But the

-

-15

-00:00:41,800 --> 00:00:44,500

-core idea, the important point is that we go from sort

-

-16

-00:00:44,500 --> 00:00:46,940

-of a high-level view of the system, which is the

-

-17

-00:00:46,940 --> 00:00:50,770

-architectural design, to a low-level view, which is the algorithm design.

-

-18

-00:00:50,770 --> 00:00:53,100

-And these activities result in a set of design

-

-19

-00:00:53,100 --> 00:00:56,810

-products, which describe various characteristics of the system. For

-

-20

-00:00:56,810 --> 00:00:59,770

-example, they describe the architecture of the system, so

-

-21

-00:00:59,770 --> 00:01:02,890

-how the system is decomposed and organized into components, the

-

-22

-00:01:02,890 --> 00:01:06,630

-interfaces between these components. They also describe these components

-

-23

-00:01:06,630 --> 00:01:09,030

-into a level of details that is suitable for

-

-24

-00:01:09,030 --> 00:01:12,470

-allowing their construction. We will discuss the details of

-

-25

-00:01:12,470 --> 00:01:16,130

-software design and talk extensively about these different actives and

-

-26

-00:01:16,130 --> 00:01:19,200

-these different products in the third mini course of this class.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/5 - Implementation - lang_en_vs5.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/5 - Implementation - lang_en_vs5.srt
deleted file mode 100644
index 465ae1b..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/5 - Implementation - lang_en_vs5.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,719

-After we have designed our system we can implement

-

-2

-00:00:02,719 --> 00:00:05,900

-it. In the implementation phase what we do is basically

-

-3

-00:00:05,900 --> 00:00:08,410

-taking care of realizing the design of the system

-

-4

-00:00:08,410 --> 00:00:11,920

-that we just created and create an actual software system.

-

-5

-00:00:11,920 --> 00:00:15,530

-There are four fundamental principles, four pillars that can

-

-6

-00:00:15,530 --> 00:00:18,470

-affect the way in which software is constructed. The first

-

-7

-00:00:18,470 --> 00:00:21,900

-one is the reduction of complexity. This aims to build

-

-8

-00:00:21,900 --> 00:00:25,160

-software that is easier to understand and use. The second

-

-9

-00:00:25,160 --> 00:00:28,400

-pillar is the anticipation of diversity. Which takes into

-

-10

-00:00:28,400 --> 00:00:31,720

-account that software construction might change in various way over

-

-11

-00:00:31,720 --> 00:00:35,220

-time. That is that software evolves. In many cases,

-

-12

-00:00:35,220 --> 00:00:38,270

-it evolves in unexpected ways. And therefore, we have to

-

-13

-00:00:38,270 --> 00:00:41,680

-be able to anticipate some of these changes. The

-

-14

-00:00:41,680 --> 00:00:45,390

-third pillar is the structuring for validation. Also called design

-

-15

-00:00:45,390 --> 00:00:47,550

-for testability. And what this means is that we

-

-16

-00:00:47,550 --> 00:00:50,760

-want to build software so that it is easily testable

-

-17

-00:00:50,760 --> 00:00:54,890

-during the subsequent validation and verification activities. Finally, and

-

-18

-00:00:54,890 --> 00:00:58,040

-this is especially true within specific organizations and or

-

-19

-00:00:58,040 --> 00:01:00,770

-domains. It is important that the software conforms to

-

-20

-00:01:00,770 --> 00:01:04,330

-a set of internal or external standards. And some examples

-

-21

-00:01:04,330 --> 00:01:06,730

-of this might be, for example, for internal standards,

-

-22

-00:01:06,730 --> 00:01:10,680

-coding standards within an organization, or naming standards within an

-

-23

-00:01:10,680 --> 00:01:13,320

-organization. As for external standards, if for example you

-

-24

-00:01:13,320 --> 00:01:15,780

-are developing some medical software. There are some regulations and

-

-25

-00:01:15,780 --> 00:01:17,930

-some standards that you have to adhere to in

-

-26

-00:01:17,930 --> 00:01:20,060

-order for your software to be valid in that domain.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/6 - Verification & Validation - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/6 - Verification & Validation - lang_en_vs4.srt
deleted file mode 100644
index df504a2..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/6 - Verification & Validation - lang_en_vs4.srt
+++ /dev/null
@@ -1,123 +0,0 @@
-1

-00:00:00,120 --> 00:00:03,550

-After we have built our system, verification and validation

-

-2

-00:00:03,550 --> 00:00:05,970

-is that phase of software development that aims to

-

-3

-00:00:05,970 --> 00:00:09,000

-check that the software system meets its specification and

-

-4

-00:00:09,000 --> 00:00:12,800

-fulfills its intended purpose. More precisely, we can look

-

-5

-00:00:12,800 --> 00:00:16,250

-at verification and validation independently. And validation is the

-

-6

-00:00:16,250 --> 00:00:19,100

-activity that answers the question did we build the

-

-7

-00:00:19,100 --> 00:00:21,420

-right system. Did we build the system that the

-

-8

-00:00:21,420 --> 00:00:26,030

-customer wants? That will make the customer happy. Whereas verification

-

-9

-00:00:26,030 --> 00:00:28,730

-answers a different question which is did we build the system

-

-10

-00:00:28,730 --> 00:00:31,410

-right. So given a description of the system that is the one

-

-11

-00:00:31,410 --> 00:00:34,280

-that we derived from the customer through the collection of requirements

-

-12

-00:00:34,280 --> 00:00:37,130

-and then design and so on, did we build a system that

-

-13

-00:00:37,130 --> 00:00:41,150

-actually implements the specification that we defined? And when we look

-

-14

-00:00:41,150 --> 00:00:44,600

-at verification there's many, many ways of doing verification and in fact

-

-15

-00:00:44,600 --> 00:00:48,430

-in the mini course number four we will cover verification extensively. The

-

-16

-00:00:48,430 --> 00:00:51,100

-only thing I want to mention here is the fact that verification

-

-17

-00:00:51,100 --> 00:00:54,110

-can be performed at different levels. In particular, it can be

-

-18

-00:00:54,110 --> 00:00:57,810

-performed at the unit level in which we test that the individual

-

-19

-00:00:57,810 --> 00:01:01,520

-units work as a expected. Can be performed in the integration level

-

-20

-00:01:01,520 --> 00:01:05,525

-in which what we test is the interaction between the different units.

-

-21

-00:01:05,525 --> 00:01:07,630

-So we want to make sure that the different modules talk

-

-22

-00:01:07,630 --> 00:01:10,720

-to each other in the right way. And finally, there is system

-

-23

-00:01:10,720 --> 00:01:13,440

-testing in which we test the system as a whole and we

-

-24

-00:01:13,440 --> 00:01:16,170

-want to make sure that all the system, all the different pieces

-

-25

-00:01:16,170 --> 00:01:18,010

-of the system work together in the right

-

-26

-00:01:18,010 --> 00:01:20,160

-way. And this is also the level at which

-

-27

-00:01:20,160 --> 00:01:22,360

-then we will apply validation and some other

-

-28

-00:01:22,360 --> 00:01:25,770

-testing techniques like stress testing or robustness testing and

-

-29

-00:01:25,770 --> 00:01:29,890

-so on. And as I said I'm not going to say anything more on this topic because

-

-30

-00:01:29,890 --> 00:01:32,760

-we will cover verification, and validation, and testing in

-

-31

-00:01:32,760 --> 00:01:35,667

-particular in great details in mini course number four.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/7 - Maintenance - lang_en_vs5.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/7 - Maintenance - lang_en_vs5.srt
deleted file mode 100644
index e3d95bf..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/7 - Maintenance - lang_en_vs5.srt
+++ /dev/null
@@ -1,167 +0,0 @@
-1

-00:00:00,012 --> 00:00:03,482

-As we discussed before software development efforts normally result

-

-2

-00:00:03,482 --> 00:00:06,127

-in the delivery of a software product that satisfies

-

-3

-00:00:06,127 --> 00:00:09,879

-the user requirements. So normally our software development organization

-

-4

-00:00:09,879 --> 00:00:13,127

-will release this application to its final users, however, once

-

-5

-00:00:13,127 --> 00:00:16,090

-the software is in operation many things can happen.

-

-6

-00:00:16,090 --> 00:00:18,950

-So, for example, the environment might change. There might be

-

-7

-00:00:18,950 --> 00:00:21,940

-new libraries. There might be new systems in which

-

-8

-00:00:21,940 --> 00:00:25,070

-our software has to operate. Or they may be future

-

-9

-00:00:25,070 --> 00:00:27,950

-requests, so the users may find out that, guess what,

-

-10

-00:00:27,950 --> 00:00:30,370

-they want to do something different with the problem that

-

-11

-00:00:30,370 --> 00:00:32,835

-we gave them. Or, again, and this is one of

-

-12

-00:00:32,835 --> 00:00:35,970

-the most common occurrences, users might find problems with the

-

-13

-00:00:35,970 --> 00:00:38,307

-software and may file bug reports and send the bug

-

-14

-00:00:38,307 --> 00:00:42,090

-reports back to the software developer. These are the reasons

-

-15

-00:00:42,090 --> 00:00:46,420

-why software maintenance is a necessary phase in software development.

-

-16

-00:00:46,420 --> 00:00:50,190

-Software maintenance is the activity that sustains the software product

-

-17

-00:00:50,190 --> 00:00:53,780

-as it evolves throughout its life cycle, specifically

-

-18

-00:00:53,780 --> 00:00:57,350

-in response to bug reports, feature requests and

-

-19

-00:00:57,350 --> 00:01:00,890

-environment changes. Development organisations perform three kinds of

-

-20

-00:01:00,890 --> 00:01:04,450

-maintenance activities: corrective maintenance to eliminate problems with the

-

-21

-00:01:04,450 --> 00:01:07,740

-code, perfective maintenance to accommodate feature request, and

-

-22

-00:01:07,740 --> 00:01:09,730

-in some cases just to improve the software, for

-

-23

-00:01:09,730 --> 00:01:12,230

-example, to make it more efficient, and finally,

-

-24

-00:01:12,230 --> 00:01:15,650

-adaptive maintenance, to take care of the environment changes.

-

-25

-00:01:15,650 --> 00:01:18,470

-And after this activities have been performed, the software developer

-

-26

-00:01:18,470 --> 00:01:21,540

-will produce a new version of the application, will release it

-

-27

-00:01:21,540 --> 00:01:24,150

-and the cycle will continue through out the lifetime of

-

-28

-00:01:24,150 --> 00:01:27,440

-the software. That's why maintenance is a fundamental activity and a

-

-29

-00:01:27,440 --> 00:01:30,420

-very expensive one. And one of the reasons why maintenance

-

-30

-00:01:30,420 --> 00:01:34,080

-is expensive, that I want to mention now, is regression testing.

-

-31

-00:01:34,080 --> 00:01:37,180

-During maintenance every time you modify your application you have

-

-32

-00:01:37,180 --> 00:01:41,120

-to regression test the application, where regression testing is the activity

-

-33

-00:01:41,120 --> 00:01:44,010

-of retesting software after it has been modified to make sure

-

-34

-00:01:44,010 --> 00:01:47,320

-that the changes you perform to the software work as expected,

-

-35

-00:01:47,320 --> 00:01:51,540

-and that your changes did not introduce any unforseen effect. I'm

-

-36

-00:01:51,540 --> 00:01:53,630

-pretty sure that you're familiar with the case of a new

-

-37

-00:01:53,630 --> 00:01:56,000

-version of the software being released and just a couple of

-

-38

-00:01:56,000 --> 00:01:59,260

-days later another version being released to fix some problems that

-

-39

-00:01:59,260 --> 00:02:02,000

-occor with the new version. These problems is what we call

-

-40

-00:02:02,000 --> 00:02:04,640

-regression errors and they're what regression

-

-41

-00:02:04,640 --> 00:02:06,560

-testing targets and tries to eliminate

-

-42

-00:02:06,560 --> 00:02:09,240

-before the new version of the software is released into the world.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/8 - Software Phases Quiz - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/8 - Software Phases Quiz - lang_en_vs4.srt
deleted file mode 100644
index e3fe74b..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/8 - Software Phases Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,590

-Okay. Now before we jump into the next

-

-2

-00:00:02,590 --> 00:00:04,780

-topic, I just want to take a very quick and

-

-3

-00:00:04,780 --> 00:00:06,630

-simple quiz just to make sure that you

-

-4

-00:00:06,630 --> 00:00:09,236

-guys paid attention to what I just discussed. So

-

-5

-00:00:09,236 --> 00:00:10,820

-I want to ask you what are the traditional

-

-6

-00:00:10,820 --> 00:00:13,200

-software phases. Requirements engineering,

-

-7

-00:00:13,200 --> 00:00:16,079

-design, abstraction, implementation, verification and

-

-8

-00:00:16,079 --> 00:00:18,020

-validation. Or maybe design,

-

-9

-00:00:18,020 --> 00:00:20,830

-optimization, implementation verification and validation

-

-10

-00:00:20,830 --> 00:00:22,448

-and maintenance. Or requirements

-

-11

-00:00:22,448 --> 00:00:24,892

-engineering, design, implementation, verification and

-

-12

-00:00:24,892 --> 00:00:26,290

-validation, and maintenance.

diff --git a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/9 - Software Phases Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/9 - Software Phases Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index ecb7a35..0000000
--- a/usth/ICT2.7/P1L2 Life Cycle Models Subtitles/9 - Software Phases Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,190 --> 00:00:04,000

-And the answer is the third one. The traditional software phases which are the

-

-2

-00:00:04,000 --> 00:00:05,960

-ones that we just discussed are requirements

-

-3

-00:00:05,960 --> 00:00:08,820

-engineering, design, implementation, verification

-

-4

-00:00:08,820 --> 00:00:10,630

-and validation, and maintenance.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/1 - Lesson Overview - lang_en_vs5.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/1 - Lesson Overview - lang_en_vs5.srt
deleted file mode 100644
index afc573d..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/1 - Lesson Overview - lang_en_vs5.srt
+++ /dev/null
@@ -1,39 +0,0 @@
-1

-00:00:00,650 --> 00:00:07,470

-Hi, and welcome to the first of several lessons on tools of the trade. I'm

-

-2

-00:00:07,470 --> 00:00:12,200

-very excited about these lessons, because I believe that tools are a cornerstone

-

-3

-00:00:12,200 --> 00:00:14,390

-of the software engineering discipline, and it

-

-4

-00:00:14,390 --> 00:00:17,570

-is of paramount importance to know and

-

-5

-00:00:17,570 --> 00:00:20,330

-use them. In this lesson, we will

-

-6

-00:00:20,330 --> 00:00:25,530

-talk about integrated development environments, normally called IDEs.

-

-7

-00:00:25,530 --> 00:00:29,780

-And these are software applications that support developers in many of their

-

-8

-00:00:29,780 --> 00:00:36,870

-everyday tasks, such as writing, compiling, and debugging code. And to make the

-

-9

-00:00:36,870 --> 00:00:42,470

-discussion more concrete we will focus on a specific IDE, Eclipse. We will

-

-10

-00:00:42,470 --> 00:00:47,250

-first present Eclipse, and then get some hands-on experience through a demo.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/2 - Eclipse Introduction - lang_en_vs5.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/2 - Eclipse Introduction - lang_en_vs5.srt
deleted file mode 100644
index 1d0ff56..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/2 - Eclipse Introduction - lang_en_vs5.srt
+++ /dev/null
@@ -1,91 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,750

-As I just told you, tools are fundamental in

-

-2

-00:00:02,750 --> 00:00:06,050

-software engineering. And I will stress this concept over and

-

-3

-00:00:06,050 --> 00:00:08,240

-over, throughout the class. And today we're going to talk

-

-4

-00:00:08,240 --> 00:00:11,310

-about a tool that is especially important, which is integrated

-

-5

-00:00:11,310 --> 00:00:15,060

-development environments, or IDEs. And you're probably familiar with

-

-6

-00:00:15,060 --> 00:00:18,060

-IDEs. So IDEs are environments that give you support for

-

-7

-00:00:18,060 --> 00:00:21,580

-your development activities. For example, for writing code, editing code,

-

-8

-00:00:21,580 --> 00:00:25,320

-compiling code, and so on. And we will focus specifically

-

-9

-00:00:25,320 --> 00:00:28,890

-on one particular IDE, which is called Eclipse. And

-

-10

-00:00:28,890 --> 00:00:31,450

-what I'm showing here is the two splash screens for

-

-11

-00:00:31,450 --> 00:00:35,350

-two versions of eclipse, Helios and Kepler. Eclipse is an

-

-12

-00:00:35,350 --> 00:00:39,200

-open, extensible development environment that was initially created by IBM

-

-13

-00:00:39,200 --> 00:00:41,510

-and is now managed by the Eclipse Foundation. And of

-

-14

-00:00:41,510 --> 00:00:43,840

-course, there are many other great IDEs such as for

-

-15

-00:00:43,840 --> 00:00:47,310

-example, Microsoft Visual Studio or Netbeans. We will be using

-

-16

-00:00:47,310 --> 00:00:50,830

-Eclipse because it is open and because it is multi-platform,

-

-17

-00:00:50,830 --> 00:00:52,390

-which means that you can use Eclipse

-

-18

-00:00:52,390 --> 00:00:55,140

-no matter what operating system we're using.

-

-19

-00:00:55,140 --> 00:00:59,030

-So if we consider the most commonly used operating system, such as Mac

-

-20

-00:00:59,030 --> 00:01:02,780

-OS, Windows, Linux, Eclipse runs on any

-

-21

-00:01:02,780 --> 00:01:04,769

-of these environments. Therefore, no matter what

-

-22

-00:01:04,769 --> 00:01:06,490

-you're using, you'll be able to install

-

-23

-00:01:06,490 --> 00:01:08,560

-Eclipse, run Eclipse, and follow the class.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/3 - IDE Overview - lang_en_vs6.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/3 - IDE Overview - lang_en_vs6.srt
deleted file mode 100644
index e2b63b3..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/3 - IDE Overview - lang_en_vs6.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,130 --> 00:00:05,680

-So, now let's look in a little more detail to what is an IDE. An IDE is a

-

-2

-00:00:05,680 --> 00:00:09,790

-software application that supports software developers in many of

-

-3

-00:00:09,790 --> 00:00:13,840

-their everyday tasks. It has many useful features. Most IDEs

-

-4

-00:00:13,840 --> 00:00:16,790

-provide views that can be used to navigate, project

-

-5

-00:00:16,790 --> 00:00:20,140

-resources from different perspectives. For example, you might want to

-

-6

-00:00:20,140 --> 00:00:22,390

-look at your code differently when you're writing code,

-

-7

-00:00:22,390 --> 00:00:25,950

-and when you're debugging. They also normally provide an intelligent

-

-8

-00:00:25,950 --> 00:00:29,380

-source code editor. For example, an editor that will allow you

-

-9

-00:00:29,380 --> 00:00:32,110

-to browse the documentation when you're writing a code that

-

-10

-00:00:32,110 --> 00:00:35,780

-uses a specific method, or that will give you autocompletion when

-

-11

-00:00:35,780 --> 00:00:37,990

-you start writing the name of an object and you want to

-

-12

-00:00:37,990 --> 00:00:40,820

-get the methods for that object. And all of these things

-

-13

-00:00:40,820 --> 00:00:43,420

-can be very useful while you're developing and can save you a

-

-14

-00:00:43,420 --> 00:00:47,750

-lot of time. Modern IDE's will also normally give you support for

-

-15

-00:00:47,750 --> 00:00:49,540

-version control systems that then you

-

-16

-00:00:49,540 --> 00:00:52,490

-can use for softer configuration management.

-

-17

-00:00:52,490 --> 00:00:55,720

-And we're going to discuss in detail version control systems in

-

-18

-00:00:55,720 --> 00:00:58,380

-the next tools of the trade lesson, and we're also

-

-19

-00:00:58,380 --> 00:01:01,135

-going to see how it can be integrated within an IDE.

-

-20

-00:01:01,135 --> 00:01:04,730

-IDEs also give you builders so they give you build automation

-

-21

-00:01:04,730 --> 00:01:08,070

-tools, they give you runtime support. So that you can

-

-22

-00:01:08,070 --> 00:01:10,960

-run your projects from within the IDE and, for example,

-

-23

-00:01:10,960 --> 00:01:14,550

-observe some aspects of the execution. In addition to giving

-

-24

-00:01:14,550 --> 00:01:17,562

-you support for the runtime, they give you support for testing.

-

-25

-00:01:17,562 --> 00:01:21,267

-Many IDEs allow you to run tests from within

-

-26

-00:01:21,267 --> 00:01:23,520

-the IDE and to check the results of the tests

-

-27

-00:01:23,520 --> 00:01:26,300

-from within the IDE. Not only that. Normally, after you

-

-28

-00:01:26,300 --> 00:01:28,210

-run your tests, if there are some test cases that

-

-29

-00:01:28,210 --> 00:01:31,500

-fail, you can also use your IDEs to do debugging.

-

-30

-00:01:31,500 --> 00:01:35,620

-Many IDEs include graphical debuggers. Debuggers will allow you to

-

-31

-00:01:35,620 --> 00:01:39,400

-navigate through the code, set which points, stop and restart

-

-32

-00:01:39,400 --> 00:01:43,160

-the execution. Inspect variables, and do all of the activities

-

-33

-00:01:43,160 --> 00:01:46,320

-that help debugging. And, to help you be more efficient

-

-34

-00:01:46,320 --> 00:01:49,440

-and more effective when you do debugging. And into addition to

-

-35

-00:01:49,440 --> 00:01:52,760

-all these features that are listed here IDEs can normally provide

-

-36

-00:01:52,760 --> 00:01:56,650

-you even more features through a mechanishm that is called plugins.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/4 - Plug-Ins - lang_en_vs5.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/4 - Plug-Ins - lang_en_vs5.srt
deleted file mode 100644
index 040293e..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/4 - Plug-Ins - lang_en_vs5.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,134

-In fact most IDEs are extensible through the use of

-

-2

-00:00:03,134 --> 00:00:06,158

-plug-ins. And by the way, note that plug-ins might be

-

-3

-00:00:06,158 --> 00:00:09,326

-called differently on different platforms. For example, if you're using

-

-4

-00:00:09,326 --> 00:00:12,970

-a Microsoft Visual Studio, plug-ins are normally called add-ins, but

-

-5

-00:00:12,970 --> 00:00:15,598

-the concept is more or less the same. So, what

-

-6

-00:00:15,598 --> 00:00:18,555

-is a plug-in? Well, let's imagine our IDE to be

-

-7

-00:00:18,555 --> 00:00:22,320

-this box. A plug-in is additional functionality that you can

-

-8

-00:00:22,320 --> 00:00:25,430

-actually plug into this box so that this box starts

-

-9

-00:00:25,430 --> 00:00:28,830

-offering more features to the user. For example, you

-

-10

-00:00:28,830 --> 00:00:32,850

-can add to Eclipse the Checkstyle plug-in. Which, paraphrasing the

-

-11

-00:00:32,850 --> 00:00:35,950

-Checkstyle website, helps you ensure that your Java code

-

-12

-00:00:35,950 --> 00:00:38,890

-complies with a set of coding standards by inspecting the

-

-13

-00:00:38,890 --> 00:00:41,690

-code and pointing out items that deviate from a

-

-14

-00:00:41,690 --> 00:00:44,870

-defined set of coding rules. Again, this is a functionality

-

-15

-00:00:44,870 --> 00:00:47,330

-the core of Eclipse doesn't have. You can add

-

-16

-00:00:47,330 --> 00:00:50,600

-the Checkstyle plug-in, and this functionality will become available in

-

-17

-00:00:50,600 --> 00:00:54,840

-the IDE. Another example of plug-in is the EGit plug-in which

-

-18

-00:00:54,840 --> 00:00:58,660

-adds support for the Git version control system in Eclipse. And

-

-19

-00:00:58,660 --> 00:01:01,290

-actually this is something that we'll cover in detail, we'll have

-

-20

-00:01:01,290 --> 00:01:04,150

-a demo, and we will actually use it throughout the class, so

-

-21

-00:01:04,150 --> 00:01:07,018

-I'm not going to say anything more about the EGit plug-in for

-

-22

-00:01:07,018 --> 00:01:09,300

-now. But again, what the plug-in will do is to add

-

-23

-00:01:09,300 --> 00:01:13,220

-the Git functionality to Eclipse. A functionality that is not in

-

-24

-00:01:13,220 --> 00:01:16,110

-the core of Eclipse and that is available to the user after

-

-25

-00:01:16,110 --> 00:01:17,181

-you add the plug-in.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/5 - Eclipse Demo: Create Java Project - lang_en_vs5.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/5 - Eclipse Demo: Create Java Project - lang_en_vs5.srt
deleted file mode 100644
index 8788858..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/5 - Eclipse Demo: Create Java Project - lang_en_vs5.srt
+++ /dev/null
@@ -1,323 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,550

-In the rest of this lesson we're going to look at eclipse and

-

-2

-00:00:02,550 --> 00:00:05,290

-try to get more familiar with eclipse in a hands on manner

-

-3

-00:00:05,290 --> 00:00:07,550

-through a demo. In the demo we will cover some of the

-

-4

-00:00:07,550 --> 00:00:11,040

-basic aspects of eclipse like how to run eclipse, how to select

-

-5

-00:00:11,040 --> 00:00:14,400

-their workspace, how to create a project, how to create the class

-

-6

-00:00:14,400 --> 00:00:18,240

-within the project and so on. I'll also cover some more advanced

-

-7

-00:00:18,240 --> 00:00:21,610

-aspects, like how to create builders, run your project within Eclipse, and

-

-8

-00:00:21,610 --> 00:00:25,800

-how to use their Eclipse debugger. So let's get to the demo.

-

-9

-00:00:25,800 --> 00:00:28,220

-So let's start Eclipse. Eclipse is going to ask me

-

-10

-00:00:28,220 --> 00:00:31,600

-for the location of my workspace and in this

-

-11

-00:00:31,600 --> 00:00:34,530

-case, I selected a suitable directory and you can

-

-12

-00:00:34,530 --> 00:00:38,480

-also use that checkbox on the left to avoid Eclipse

-

-13

-00:00:38,480 --> 00:00:40,640

-for asking you again about where to put the

-

-14

-00:00:40,640 --> 00:00:43,860

-workspace. And the workspace is basically the place the

-

-15

-00:00:43,860 --> 00:00:48,310

-directory. Where, Eclipse will place all of your projects.

-

-16

-00:00:48,310 --> 00:00:50,830

-So, now when you start Eclipse, if it's the first

-

-17

-00:00:50,830 --> 00:00:53,480

-time you might get this Welcome screen. It's not going to happen

-

-18

-00:00:53,480 --> 00:00:57,500

-again on subsequent executions, but I just wanted to make sure

-

-19

-00:00:57,500 --> 00:01:00,210

-that I covered all the bases. And so, whatcha want to

-

-20

-00:01:00,210 --> 00:01:03,360

-do here is to basically go to the java perspective

-

-21

-00:01:03,360 --> 00:01:06,760

-which you can do by clicking over there or you can

-

-22

-00:01:06,760 --> 00:01:09,240

-also use the menus. So in this case we will have

-

-23

-00:01:09,240 --> 00:01:12,810

-to go to Window, open Perspective, and if the Perspective is

-

-24

-00:01:12,810 --> 00:01:15,660

-not here, you'll have to click on Other. And at this point,

-

-25

-00:01:15,660 --> 00:01:18,030

-that you can click on Java Perspective, then you

-

-26

-00:01:18,030 --> 00:01:21,680

-click okay. And the perspective is basically, the visual work

-

-27

-00:01:21,680 --> 00:01:24,810

-space where you will be operating. So, after we selected

-

-28

-00:01:24,810 --> 00:01:29,350

-perspective, we can actually close the welcome screen. And here,

-

-29

-00:01:29,350 --> 00:01:32,000

-you see that you have this different areas and on

-

-30

-00:01:32,000 --> 00:01:34,930

-the left You have the package explorer. This is the

-

-31

-00:01:34,930 --> 00:01:37,650

-area where your packages will be, you've got a task list,

-

-32

-00:01:37,650 --> 00:01:41,280

-and an outline on the right which we'll cover later.

-

-33

-00:01:41,280 --> 00:01:44,870

-And then you have underneath, the bottom, a problems, java

-

-34

-00:01:44,870 --> 00:01:48,330

-doc and declaration views and we will see some of

-

-35

-00:01:48,330 --> 00:01:51,320

-these views in actions later. And here in the center

-

-36

-00:01:51,320 --> 00:01:54,290

-you have the area. Which is called a code editor,

-

-37

-00:01:54,290 --> 00:01:58,360

-which is where you'll be writing, editing, and modifying, basically,

-

-38

-00:01:58,360 --> 00:02:00,440

-your code. This is where most of the action takes

-

-39

-00:02:00,440 --> 00:02:03,140

-place. So let's start by creating a Java project. And

-

-40

-00:02:03,140 --> 00:02:06,950

-to do that we can use either the context menu, or

-

-41

-00:02:06,950 --> 00:02:09,560

-you can just use the menu, select new Java project.

-

-42

-00:02:09,560 --> 00:02:12,390

-You'll be greeted by this, wizard, and. And at this

-

-43

-00:02:12,390 --> 00:02:15,500

-point in the wizard, you can select the name of

-

-44

-00:02:15,500 --> 00:02:19,100

-your project. I'm just going to call it a very simple way

-

-45

-00:02:19,100 --> 00:02:21,990

-my project. And I going to use the default location for

-

-46

-00:02:21,990 --> 00:02:24,070

-the project, as you can see it will be placed

-

-47

-00:02:24,070 --> 00:02:27,440

-in the work space that I selected before. I'm going to

-

-48

-00:02:27,440 --> 00:02:32,080

-also use the default. Java Runtime Environment, which is Java 1.7

-

-49

-00:02:32,080 --> 00:02:36,250

-in this case. I'm going to keep the selected default layout

-

-50

-00:02:36,250 --> 00:02:39,120

-and the, then I'm going to go to the next step. Here,

-

-51

-00:02:39,120 --> 00:02:42,380

-we're first presented with the location of the source code for

-

-52

-00:02:42,380 --> 00:02:46,840

-our project. The default is a directory SRC in my project

-

-53

-00:02:46,840 --> 00:02:49,320

-and for the output file, the directory bin. So repeat, we're now

-

-54

-00:02:49,320 --> 00:02:52,410

-going to change that. Here in case you need other projects to

-

-55

-00:02:52,410 --> 00:02:55,240

-build your own, then you can specify them here. Here we

-

-56

-00:02:55,240 --> 00:02:57,570

-are building a simple project, so there's no need for that.

-

-57

-00:02:57,570 --> 00:03:00,890

-And here we can specify which libraries our project requires. As

-

-58

-00:03:00,890 --> 00:03:03,880

-you can see, the Java library's already specified. And you can

-

-59

-00:03:03,880 --> 00:03:07,840

-also add other jars, which can even be External jars. And

-

-60

-00:03:07,840 --> 00:03:11,840

-finally this is the tab that allows you to specify which

-

-61

-00:03:11,840 --> 00:03:14,300

-part of you project. So how your project will be exported,

-

-62

-00:03:14,300 --> 00:03:16,760

-so lets not worry about that for now. Lets click finish.

-

-63

-00:03:16,760 --> 00:03:19,300

-And as you can see here on the package explorer, my

-

-64

-00:03:19,300 --> 00:03:22,920

-project appeared. So now we can open the project by clicking

-

-65

-00:03:22,920 --> 00:03:24,920

-on the triangle right next to it, and as you can

-

-66

-00:03:24,920 --> 00:03:28,250

-see there is the SRC directory, where my source code will go,

-

-67

-00:03:28,250 --> 00:03:31,760

-and there's also an indication that we're using the JRE, so that's

-

-68

-00:03:31,760 --> 00:03:35,800

-the Java system directory within our project. And this is just for people

-

-69

-00:03:35,800 --> 00:03:38,860

-who are interested in what happens you know, under the hood. So

-

-70

-00:03:38,860 --> 00:03:41,840

-if you don't care about that, you can just skip this part. So

-

-71

-00:03:41,840 --> 00:03:45,200

-basically here I'm showing you how we can go to the directory

-

-72

-00:03:45,200 --> 00:03:49,250

-where the project was created. We can see the bin and src directories.

-

-73

-00:03:49,250 --> 00:03:52,020

-And there's also some other files here that you can

-

-74

-00:03:52,020 --> 00:03:54,780

-see these 'dot' files that you will not normally, see. And

-

-75

-00:03:54,780 --> 00:03:57,870

-those are kind of bookkeeping files. So these are files that

-

-76

-00:03:57,870 --> 00:04:02,280

-contain information about your project and that are created automatically by

-

-77

-00:04:02,280 --> 00:04:05,860

-Eclipse. And, for example, will have various indication about the

-

-78

-00:04:05,860 --> 00:04:09,580

-configuration of the project, some settings and the class path for

-

-79

-00:04:09,580 --> 00:04:11,880

-the project. And, as I said, you don't have to worry

-

-80

-00:04:11,880 --> 00:04:14,490

-about this if you just want to go Eclipse as you're never

-

-81

-00:04:14,490 --> 00:04:16,551

-going to mess with the command line.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/6 - Eclipse Demo: Create a Class - lang_en_vs6.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/6 - Eclipse Demo: Create a Class - lang_en_vs6.srt
deleted file mode 100644
index 3bd4f11..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/6 - Eclipse Demo: Create a Class - lang_en_vs6.srt
+++ /dev/null
@@ -1,135 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,420

-So now that we know, we saw what happens under

-

-2

-00:00:02,420 --> 00:00:04,570

-the hood, and as I said, don't worry about it if

-

-3

-00:00:04,570 --> 00:00:06,689

-you don't care about that part. Now we can go back

-

-4

-00:00:06,689 --> 00:00:09,850

-to Eclipse, and we can start creating a package. A package

-

-5

-00:00:09,850 --> 00:00:13,125

-is basically a way of organizing your classes into a

-

-6

-00:00:13,125 --> 00:00:17,015

-hierarchy. In this case, I'm going to specify the package name as

-

-7

-00:00:17,015 --> 00:00:21,350

-edu.gatech, which means that I'm creating really two packages, a package

-

-8

-00:00:21,350 --> 00:00:25,480

-gatech inside package edu. And I can start creating classes inside

-

-9

-00:00:25,480 --> 00:00:28,770

-my packages. So here, I can use the contextual menu, select

-

-10

-00:00:28,770 --> 00:00:32,055

-New&gt;Class, and I'll get another wizard that will allow me to

-

-11

-00:00:32,055 --> 00:00:35,160

-specify the name of the class. I'm not very creative here,

-

-12

-00:00:35,160 --> 00:00:38,250

-so I'm just going to call it Hello World. There's many other parameters

-

-13

-00:00:38,250 --> 00:00:41,710

-you can set, and in particular, you can define whether you

-

-14

-00:00:41,710 --> 00:00:45,450

-want a main method in your class. Where having a main

-

-15

-00:00:45,450 --> 00:00:48,460

-method means that your class can be the main class in

-

-16

-00:00:48,460 --> 00:00:50,850

-your project, can be the one that is run when you run

-

-17

-00:00:50,850 --> 00:00:54,340

-your project. After we click the button, the Finish button, we,

-

-18

-00:00:54,340 --> 00:00:56,859

-we get the class. So we also get template code for the

-

-19

-00:00:56,859 --> 00:00:59,604

-class, as you can see here, so we go to the editor

-

-20

-00:00:59,604 --> 00:01:02,120

-function, you can see that there is a to do. Where you

-

-21

-00:01:02,120 --> 00:01:05,019

-have to put your code, and here we are simply, basically printing,

-

-22

-00:01:05,019 --> 00:01:08,370

-you know, the typical first program. We just going to print Hello World

-

-23

-00:01:08,370 --> 00:01:11,180

-in Java. And something you can note is that as we are

-

-24

-00:01:11,180 --> 00:01:16,370

-typing, Eclipse gives us a auto complete suggestions, which is very helpful.

-

-25

-00:01:16,370 --> 00:01:19,650

-For example, in case you don't remember the exact syntax,

-

-26

-00:01:19,650 --> 00:01:22,190

-or the method, or you don't remember the parameters of the

-

-27

-00:01:22,190 --> 00:01:24,470

-method. Which is, you know, often the case especially where you

-

-28

-00:01:24,470 --> 00:01:27,590

-work with large libraries. So having that feature can really, really

-

-29

-00:01:27,590 --> 00:01:30,050

-help you. So now if we want to run our code

-

-30

-00:01:30,050 --> 00:01:33,380

-we can either click on the button up here, or we

-

-31

-00:01:33,380 --> 00:01:37,960

-can right-click in the Call window and select Run As Java

-

-32

-00:01:37,960 --> 00:01:41,370

-Application. And if we do that, Eclipse will run our tool,

-

-33

-00:01:41,370 --> 00:01:45,650

-and it will create, as you can see here, a console view that basically contains

-

-34

-00:01:45,650 --> 00:01:49,790

-the textual output of my program. And as expected, the output is Hello World.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/7 - Eclipse Demo: Run Configuration - lang_en_vs6.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/7 - Eclipse Demo: Run Configuration - lang_en_vs6.srt
deleted file mode 100644
index ad54f06..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/7 - Eclipse Demo: Run Configuration - lang_en_vs6.srt
+++ /dev/null
@@ -1,115 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,660

-So now that we have run our program, let's see what

-

-2

-00:00:02,660 --> 00:00:05,660

-happens exactly when you run a program within Eclipse. And to

-

-3

-00:00:05,660 --> 00:00:08,410

-do that I'm going to use the menu over here which is

-

-4

-00:00:08,410 --> 00:00:12,500

-the Run menu and I'm going to select Run Configurations, and this

-

-5

-00:00:12,500 --> 00:00:15,190

-brings up a window where you can change or run configurations.

-

-6

-00:00:15,190 --> 00:00:17,200

-Well first of all, you can see that here on the

-

-7

-00:00:17,200 --> 00:00:22,260

-left under Java application. Eclipse automatically created a Hello World run

-

-8

-00:00:22,260 --> 00:00:25,300

-configuration for our program. And this is where you can configure

-

-9

-00:00:25,300 --> 00:00:28,370

-the different parameters for your execution. For example,

-

-10

-00:00:28,370 --> 00:00:30,520

-you can select the main class. So here

-

-11

-00:00:30,520 --> 00:00:34,745

-it's, obviously, edu.gatech.HelloWorld. You can define different program

-

-12

-00:00:34,745 --> 00:00:36,920

-arguments. We don't have any for now. You can

-

-13

-00:00:36,920 --> 00:00:39,480

-also pass arguments to the virtual machine. You

-

-14

-00:00:39,480 --> 00:00:41,960

-can define which Java runtime environment you want to

-

-15

-00:00:41,960 --> 00:00:47,720

-use, Classpath and other environmental options. So let's

-

-16

-00:00:47,720 --> 00:00:50,650

-now try to pass some arguments to our program.

-

-17

-00:00:50,650 --> 00:00:54,390

-So for example here, I am just going to write George as

-

-18

-00:00:54,390 --> 00:00:58,450

-a possible parameter. I say Apply so that modify the configuration and

-

-19

-00:00:58,450 --> 00:01:01,510

-if i run the program of course, the output is not changing

-

-20

-00:01:01,510 --> 00:01:04,440

-because my program does not use the argument. But, let's see if

-

-21

-00:01:04,440 --> 00:01:07,060

-we do use the argument, what happens. So I'm going to slightly

-

-22

-00:01:07,060 --> 00:01:10,030

-modify the final program so that now, instead of printing hello

-

-23

-00:01:10,030 --> 00:01:13,420

-world, it will print hello followed by the first argument that I

-

-24

-00:01:13,420 --> 00:01:15,700

-will pass to the program. And if I do that, and I

-

-25

-00:01:15,700 --> 00:01:19,420

-go and I run the program, what I get is exactly what I

-

-26

-00:01:19,420 --> 00:01:23,420

-was expecting, which is Hello George. So this is the way in which you

-

-27

-00:01:23,420 --> 00:01:26,120

-can pass arguments to your execution, which

-

-28

-00:01:26,120 --> 00:01:27,640

-is something that might come in handy

-

-29

-00:01:27,640 --> 00:01:30,390

-for some other projects. When you need to run some code with an argument.

diff --git a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/8 - Eclipse Demo: Debugging - lang_en_vs5.srt b/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/8 - Eclipse Demo: Debugging - lang_en_vs5.srt
deleted file mode 100644
index 025c2ba..0000000
--- a/usth/ICT2.7/P1L3 Integrated Development Environment Subtitles/8 - Eclipse Demo: Debugging - lang_en_vs5.srt
+++ /dev/null
@@ -1,275 +0,0 @@
-1

-00:00:00,160 --> 00:00:03,090

-Now let's look at how we can do debugging within

-

-2

-00:00:03,090 --> 00:00:06,240

-Eclipse. I created a new file called AddNumbers which I'm

-

-3

-00:00:06,240 --> 00:00:10,770

-showing here. It takes two numbers, parses them into integers,

-

-4

-00:00:10,770 --> 00:00:14,870

-adds them and prints the sum, supposedly, of the two numbers.

-

-5

-00:00:14,870 --> 00:00:17,450

-Now we look at the run configuration for this program,

-

-6

-00:00:17,450 --> 00:00:19,670

-and here you can see that we're passing two arguments,

-

-7

-00:00:19,670 --> 00:00:22,060

-two and five, to the program. So now let's run

-

-8

-00:00:22,060 --> 00:00:25,468

-our program and see what happens. And the result says that

-

-9

-00:00:25,468 --> 00:00:28,150

-2 plus 5 is equal to 10, which is not

-

-10

-00:00:28,150 --> 00:00:31,030

-exactly correct. So we need to debug our program. We

-

-11

-00:00:31,030 --> 00:00:33,310

-need to figure out what's wrong with the program, why

-

-12

-00:00:33,310 --> 00:00:37,140

-the wrong result was, produced. So we're going to add a break

-

-13

-00:00:37,140 --> 00:00:40,260

-point here by double-clicking here on the side of the

-

-14

-00:00:40,260 --> 00:00:42,940

-code. And the break point is basically a place where I'm

-

-15

-00:00:42,940 --> 00:00:46,240

-telling my debugger to stop during the execution because I

-

-16

-00:00:46,240 --> 00:00:50,750

-want to inspect the state of the program. So to start

-

-17

-00:00:50,750 --> 00:00:54,690

-debugging, we select Debug as Java Application from the Context

-

-18

-00:00:54,690 --> 00:00:58,170

-menu, similar to what we were doing for running the program.

-

-19

-00:00:58,170 --> 00:01:00,190

-And as you can see, this asks us whether we want

-

-20

-00:01:00,190 --> 00:01:03,720

-to pass to the debug perspective, which is a, a perspective

-

-21

-00:01:03,720 --> 00:01:07,110

-specifically designed for debugging. We say yes. And as you

-

-22

-00:01:07,110 --> 00:01:10,750

-see here, it shows us, it's like a different, set of

-

-23

-00:01:10,750 --> 00:01:13,310

-views, so we can see the code down here with an

-

-24

-00:01:13,310 --> 00:01:16,100

-indication of where the execution is. And of course the execution

-

-25

-00:01:16,100 --> 00:01:18,610

-stopped at the break point, which is exactly where

-

-26

-00:01:18,610 --> 00:01:21,850

-we told the debugger to stop. So let's look at

-

-27

-00:01:21,850 --> 00:01:24,400

-some of the other views in this perspective. The view

-

-28

-00:01:24,400 --> 00:01:27,370

-here on the right-hand side, for example, shows the variables

-

-29

-00:01:27,370 --> 00:01:30,720

-in scope and the break points that are currently active

-

-30

-00:01:30,720 --> 00:01:33,240

-for the debugging session. This is where the editor is

-

-31

-00:01:33,240 --> 00:01:36,710

-at. The outline of the program and the console at

-

-32

-00:01:36,710 --> 00:01:41,520

-the bottom. So now let's execute one line by clicking

-

-33

-00:01:41,520 --> 00:01:45,400

-on the Step Over button here at the top, and this will

-

-34

-00:01:45,400 --> 00:01:49,150

-execute the line that is currently highlighted and therefore it will move to

-

-35

-00:01:49,150 --> 00:01:51,500

-the next line. And as you can see, one nice feature is that

-

-36

-00:01:51,500 --> 00:01:54,760

-if I move the mouse over a variable, I can see the value

-

-37

-00:01:54,760 --> 00:01:57,710

-of the variable. And the same thing I can do if I look

-

-38

-00:01:57,710 --> 00:02:00,690

-at the variables windows here on the right. If I click it, it

-

-39

-00:02:00,690 --> 00:02:03,960

-will tell me what is the value of the variable, and in case

-

-40

-00:02:03,960 --> 00:02:07,410

-of more complex variables you can even expand it and get more details.

-

-41

-00:02:07,410 --> 00:02:10,870

-So now let's step over another line by clicking again this button,

-

-42

-00:02:10,870 --> 00:02:13,180

-and as you can see now we get to the line that

-

-43

-00:02:13,180 --> 00:02:16,410

-is actually performing the sum, supposedly, so now let's do the same

-

-44

-00:02:16,410 --> 00:02:19,100

-thing that we did before, and let's mouse over b, and we can

-

-45

-00:02:19,100 --> 00:02:22,150

-see that the value of b is five, as expected. So now

-

-46

-00:02:22,150 --> 00:02:27,080

-let's step over this line as well, and execute the actual sum. And

-

-47

-00:02:27,080 --> 00:02:29,730

-doing the mouseover thing, we can see that the value of sum

-

-48

-00:02:29,730 --> 00:02:33,000

-is ten, which is not right, of course. In fact, if we check

-

-49

-00:02:33,000 --> 00:02:35,590

-a gain we can see that value of A is two. The

-

-50

-00:02:35,590 --> 00:02:39,130

-value of B is five and therefore it's clear that there's something

-

-51

-00:02:39,130 --> 00:02:41,780

-wrong going on here, and at this point we can notice that

-

-52

-00:02:41,780 --> 00:02:44,030

-here we are doing multiplication instead

-

-53

-00:02:44,030 --> 00:02:46,010

-of addition. And therefore that's what the

-

-54

-00:02:46,010 --> 00:02:49,260

-error is. And this is clearly a very simple case. Right? A

-

-55

-00:02:49,260 --> 00:02:51,440

-case in which probably you just needed to look at the code and

-

-56

-00:02:51,440 --> 00:02:54,150

-you didn't need the debugger. But you probably got the idea right?

-

-57

-00:02:54,150 --> 00:02:58,055

-So this can be extremely useful when you're debugging, when you're studying more

-

-58

-00:02:58,055 --> 00:03:01,533

-complex programs. If you want to stop the debugger because you're

-

-59

-00:03:01,533 --> 00:03:04,557

-done with your debugging session as in this case, you can

-

-60

-00:03:04,557 --> 00:03:07,518

-either click here on the Terminate button or you can also

-

-61

-00:03:07,518 --> 00:03:11,109

-just simply tell the debugger to continue the execution, to resume

-

-62

-00:03:11,109 --> 00:03:15,140

-the execution until the program terminates naturally. So, in this case,

-

-63

-00:03:15,140 --> 00:03:17,520

-we're going to click here just to show what happens. And what

-

-64

-00:03:17,520 --> 00:03:20,230

-happens is that, you know, the execution will just continue until

-

-65

-00:03:20,230 --> 00:03:23,690

-the program exits. So now let's say that we want to fix

-

-66

-00:03:23,690 --> 00:03:27,740

-this problem that we just discovered. So we replace the multiplication

-

-67

-00:03:27,740 --> 00:03:30,600

-with an addition, we save the program, and we execute the

-

-68

-00:03:30,600 --> 00:03:33,860

-program again by clicking on this button. And at this point,

-

-69

-00:03:33,860 --> 00:03:37,320

-unsurprisingly, we get the right result as shown in the console.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt
deleted file mode 100644
index 936e3db..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/1 - Lesson Overview - lang_en_vs5.srt
+++ /dev/null
@@ -1,43 +0,0 @@
-1

-00:00:00,440 --> 00:00:06,190

-Hi and welcome to the second lesson on tools of the trade. In the

-

-2

-00:00:06,190 --> 00:00:09,710

-previous lesson we talked about IDEs. Integrated

-

-3

-00:00:09,710 --> 00:00:13,300

-Development Environments and in particular we discussed

-

-4

-00:00:13,300 --> 00:00:16,460

-the eclipse ID. Today we're going to

-

-5

-00:00:16,460 --> 00:00:19,780

-talk about another fundamental type of tools

-

-6

-00:00:19,780 --> 00:00:22,840

-in the software engineering arena. Version control

-

-7

-00:00:22,840 --> 00:00:26,140

-systems. And these are also called, revision

-

-8

-00:00:26,140 --> 00:00:30,620

-or source control systems. In particular, we will focus on a

-

-9

-00:00:30,620 --> 00:00:36,320

-specific version control system called git. And as we did for eclipse,

-

-10

-00:00:36,320 --> 00:00:40,510

-we will first present git from a conceptual standpoint. And then

-

-11

-00:00:40,510 --> 00:00:44,200

-we will do a demo. To get some hands-on experience with GIT.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt
deleted file mode 100644
index 201c7a5..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/10 - Introduction to GIT - lang_en_vs6.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,240 --> 00:00:04,160

-One good representative of distributed version control systems, is

-

-2

-00:00:04,160 --> 00:00:08,320

-GIT. A distributed version control system that was initially designed

-

-3

-00:00:08,320 --> 00:00:11,297

-and developed by Linus Torvalds. I'm pretty sure you

-

-4

-00:00:11,297 --> 00:00:14,140

-know who Linus Torvalds is. He's basically this guy who

-

-5

-00:00:14,140 --> 00:00:17,070

-started and created the Linux operating system. And Linus

-

-6

-00:00:17,070 --> 00:00:20,140

-was unhappy with the existing version control systems, and wanted

-

-7

-00:00:20,140 --> 00:00:22,610

-a different one. He wanted to use it for maintaining

-

-8

-00:00:22,610 --> 00:00:25,330

-the Linux kernel. In particular, he wanted one with some

-

-9

-00:00:25,330 --> 00:00:28,550

-key characteristics. For example, the fact that it was distributed. He

-

-10

-00:00:28,550 --> 00:00:30,470

-wanted it to be fast. He wanted it to have a

-

-11

-00:00:30,470 --> 00:00:33,660

-simple design. And he wanted to have a strong support for

-

-12

-00:00:33,660 --> 00:00:37,370

-parallel branches, because many people were contributing to the kernel at the

-

-13

-00:00:37,370 --> 00:00:41,620

-same time. And therefore there many different branches of development. And

-

-14

-00:00:41,620 --> 00:00:45,120

-finally, he wanted for the virtual control system to be able to

-

-15

-00:00:45,120 --> 00:00:48,070

-handle large projects. As the Linux kernel is, and to do

-

-16

-00:00:48,070 --> 00:00:50,480

-it in an efficient way. So if you want to get an idea

-

-17

-00:00:50,480 --> 00:00:54,210

-of how popular GIT is today, there was a survey performed across the

-

-18

-00:00:54,210 --> 00:00:58,330

-Eclipse IDE users, and it showed that in 2013 GIT was used by

-

-19

-00:00:58,330 --> 00:01:02,950

-about 30% of the developers. So the, it had a 30% adoption rate.

-

-20

-00:01:02,950 --> 00:01:06,430

-So we will use a GIT as a version control system for the class.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt
deleted file mode 100644
index 38eedc0..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/11 - Installing GIT - lang_en_vs5.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,120 --> 00:00:03,020

-As we did for Eclipse, and IDEs in general, we want

-

-2

-00:00:03,020 --> 00:00:05,133

-to start a GIT in a hands on way. So we're going

-

-3

-00:00:05,133 --> 00:00:08,425

-to start by seeing how to install GIT. And GIT is also

-

-4

-00:00:08,425 --> 00:00:12,440

-multiplatform, so you can install it no matter what operating system you

-

-5

-00:00:12,440 --> 00:00:15,980

-are using, unless of course you are using some arcane operating system.

-

-6

-00:00:15,980 --> 00:00:18,530

-But if you are using Linux, for instance, there should be a

-

-7

-00:00:18,530 --> 00:00:22,608

-package available that can install GIT for your specific distribution. If you're

-

-8

-00:00:22,608 --> 00:00:25,460

-using Mac OS, GIT is also available as part of XCode and

-

-9

-00:00:25,460 --> 00:00:29,270

-also as an independent package. Finally, if you're using Windows, GIT is

-

-10

-00:00:29,270 --> 00:00:33,090

-available as a package with an installer. In general, you can go

-

-11

-00:00:33,090 --> 00:00:37,290

-here to get information about how to get GIT, where to download

-

-12

-00:00:37,290 --> 00:00:39,975

-it, how to install it, and so on. So, now what I'd

-

-13

-00:00:39,975 --> 00:00:42,312

-like for you to do is to go, get GIT, install it,

-

-14

-00:00:42,312 --> 00:00:45,469

-in case you don't have it installed already on your machine. And

-

-15

-00:00:45,469 --> 00:00:48,253

-after that, you should be able to run GIT from the command

-

-16

-00:00:48,253 --> 00:00:51,120

-line. And, that's exactly what we're going to do through a demo.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt
deleted file mode 100644
index 84f0f2e..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/12 - GIT Workflow - lang_en_vs5.srt
+++ /dev/null
@@ -1,507 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,100

-But before jumping into the demo I would like

-

-2

-00:00:02,100 --> 00:00:05,370

-to give a high level overview of the GIT workflow,

-

-3

-00:00:05,370 --> 00:00:08,420

-which will help you better, following the demo. So let

-

-4

-00:00:08,420 --> 00:00:12,480

-me start by representing four fundamental elements in the GIT

-

-5

-00:00:12,480 --> 00:00:15,640

-workflow which are these four: the workspace which is your

-

-6

-00:00:15,640 --> 00:00:19,980

-local directory. The index, also called the stage, and we'll

-

-7

-00:00:19,980 --> 00:00:22,470

-see in a minute what the index is. Then, we

-

-8

-00:00:22,470 --> 00:00:25,380

-have the local repository. We'll also refer to this as

-

-9

-00:00:25,380 --> 00:00:27,910

-HEAD in the, when we explain the different commands

-

-10

-00:00:27,910 --> 00:00:31,340

-and then, the word flow. And finally, the remote repository.

-

-11

-00:00:31,340 --> 00:00:34,600

-If you consider a file in your work space it

-

-12

-00:00:34,600 --> 00:00:37,860

-can be in three possible states. It can be committed

-

-13

-00:00:37,860 --> 00:00:40,170

-which means that the data, the latest changes to the

-

-14

-00:00:40,170 --> 00:00:45,030

-file are safely stored here. It could be modified, which

-

-15

-00:00:45,030 --> 00:00:47,840

-is the case of the file being changed and no,

-

-16

-00:00:47,840 --> 00:00:50,710

-none of these changes being saved to the local repository

-

-17

-00:00:50,710 --> 00:00:54,440

-so locally modified or it can be staged. And

-

-18

-00:00:54,440 --> 00:00:58,270

-stage means that the file is basically part of this

-

-19

-00:00:58,270 --> 00:01:01,620

-index. And what that means, that it's been tagged

-

-20

-00:01:01,620 --> 00:01:04,890

-to be considered in the next commit. And I know

-

-21

-00:01:04,890 --> 00:01:08,070

-that this is not all 100% intuitive, so let's

-

-22

-00:01:08,070 --> 00:01:10,860

-look at that again by considering the actual workflow and

-

-23

-00:01:10,860 --> 00:01:12,680

-let's see what happens when you issue the different

-

-24

-00:01:12,680 --> 00:01:16,060

-commands in git. So the first command that you normally

-

-25

-00:01:16,060 --> 00:01:18,520

-run in case you, you're getting access to a remote

-

-26

-00:01:18,520 --> 00:01:21,940

-repository, is the git clone command. And the git clone,

-

-27

-00:01:21,940 --> 00:01:24,880

-followed by the url for that repository, will create a

-

-28

-00:01:24,880 --> 00:01:28,580

-local copy of the repository in your workspace. And of

-

-29

-00:01:28,580 --> 00:01:30,310

-course, you don't have to do this step if you're

-

-30

-00:01:30,310 --> 00:01:34,380

-creating the repository yourself. The next command that we already

-

-31

-00:01:34,380 --> 00:01:38,170

-saw is the command add. And what the command add

-

-32

-00:01:38,170 --> 00:01:41,130

-does is to add a file that is in the

-

-33

-00:01:41,130 --> 00:01:44,630

-workspace to this index. And we say that after that, the

-

-34

-00:01:44,630 --> 00:01:48,700

-file is staged. So it's marked to be committed, but not

-

-35

-00:01:48,700 --> 00:01:53,350

-yet committed. And here I'm just mentioning this minus u option.

-

-36

-00:01:53,350 --> 00:01:56,330

-If you specify the minus u option, you will also consider deleted

-

-37

-00:01:56,330 --> 00:01:58,820

-files File, but let's not get there for now, we'll talk

-

-38

-00:01:58,820 --> 00:02:01,240

-about that when we do the demo. As I said, if you

-

-39

-00:02:01,240 --> 00:02:03,720

-add the file, it just gets added to this index but

-

-40

-00:02:03,720 --> 00:02:06,430

-is not actually committed, so what you need to do, is to

-

-41

-00:02:06,430 --> 00:02:10,389

-commit the file, so when you execute git commit, all the

-

-42

-00:02:10,389 --> 00:02:13,970

-files that are staged, that are released it here, their changes

-

-43

-00:02:13,970 --> 00:02:17,080

-will be committed to the local repository. So your files, as

-

-44

-00:02:17,080 --> 00:02:18,970

-I was saying, they can be in three states. They will

-

-45

-00:02:18,970 --> 00:02:21,820

-go from the modified state to the stage state when you

-

-46

-00:02:21,820 --> 00:02:24,200

-execute the app. And then from the stage state to the

-

-47

-00:02:24,200 --> 00:02:27,510

-committed state when you perform a GIT Commit. Okay, so at

-

-48

-00:02:27,510 --> 00:02:31,780

-this point your changes are safely stored in the local repository.

-

-49

-00:02:31,780 --> 00:02:34,370

-Notice that you can also perform these two steps at

-

-50

-00:02:34,370 --> 00:02:38,150

-once by executing a Commit -a. So if you have

-

-51

-00:02:38,150 --> 00:02:40,920

-a set of modified files, and all these files are

-

-52

-00:02:40,920 --> 00:02:44,550

-already part of the repository, so they're already known to diversion

-

-53

-00:02:44,550 --> 00:02:47,540

-control system, you can simply execute a commit -a.

-

-54

-00:02:47,540 --> 00:02:50,040

-And what the commit -a command will do, it

-

-55

-00:02:50,040 --> 00:02:53,080

-will stage your file and then commit them. All at

-

-56

-00:02:53,080 --> 00:02:56,650

-once. So it's a convenient shortcut. Of course, as I said,

-

-57

-00:02:56,650 --> 00:02:58,710

-this will not work if the file is a new file.

-

-58

-00:02:58,710 --> 00:03:00,730

-So if a file is a new file, you have to manually add

-

-59

-00:03:00,730 --> 00:03:04,620

-it. Otherwise commit -a will just stage and commit at once.

-

-60

-00:03:04,620 --> 00:03:07,400

-As we discussed when we looked at the diffence between centralized

-

-61

-00:03:07,400 --> 00:03:10,520

-and decentralized version console system. We saw that in the case

-

-62

-00:03:10,520 --> 00:03:13,930

-of the decentralized, there is a local repository which is this one.

-

-63

-00:03:13,930 --> 00:03:17,190

-And then you have to explicitly push your changes to a remote

-

-64

-00:03:17,190 --> 00:03:21,850

-repository, and this is exactly what the git push command does. It pushes

-

-65

-00:03:21,850 --> 00:03:25,930

-your changes that are in the local repository to the remote repository

-

-66

-00:03:25,930 --> 00:03:28,160

-so at this point all of your changes will be

-

-67

-00:03:28,160 --> 00:03:31,680

-visible to anyone who has access to the remote repository.

-

-68

-00:03:31,680 --> 00:03:33,710

-Now, let's see the opposite flow so how does it

-

-69

-00:03:33,710 --> 00:03:36,640

-work when you're actually getting files from the repository instead

-

-70

-00:03:36,640 --> 00:03:39,650

-of committing files to the repository. So the first command

-

-71

-00:03:39,650 --> 00:03:43,280

-I want to mention is the get fetch command and

-

-72

-00:03:43,280 --> 00:03:46,900

-what the get fetch command does is to get files from

-

-73

-00:03:46,900 --> 00:03:50,680

-the remote repositories to your local repository, but not yet to

-

-74

-00:03:50,680 --> 00:03:53,890

-your working directory. And we will see what is the usefullness of

-

-75

-00:03:53,890 --> 00:03:56,900

-doing this operation. Of having the files all in the local respository,

-

-76

-00:03:56,900 --> 00:03:59,380

-but not in your local directory. So, what that means, just to

-

-77

-00:03:59,380 --> 00:04:01,360

-make sure that we're on the same page. Is that you

-

-78

-00:04:01,360 --> 00:04:05,620

-will not see these files when you workspace. You will still have

-

-79

-00:04:05,620 --> 00:04:09,030

-your local files here. So this is sort of a physical distinction.

-

-80

-00:04:09,030 --> 00:04:12,060

-In order to get your data files from the local repositories to

-

-81

-00:04:12,060 --> 00:04:14,470

-your workspace you have to issue another command. Which is

-

-82

-00:04:14,470 --> 00:04:18,250

-the command git merge. Git merge will take the changes in

-

-83

-00:04:18,250 --> 00:04:21,870

-local repository and get them to your local workspace. So at

-

-84

-00:04:21,870 --> 00:04:25,460

-this point your files will be updated. To what is in

-

-85

-00:04:25,460 --> 00:04:27,730

-the remote reposity. Or at least what was in the

-

-86

-00:04:27,730 --> 00:04:30,810

-remote reposity at the time of the fetch. SImilarly to what

-

-87

-00:04:30,810 --> 00:04:34,340

-happened for the add and commit. There's a shortcut which is

-

-88

-00:04:34,340 --> 00:04:37,230

-the command git pull. So in case you want to get

-

-89

-00:04:37,230 --> 00:04:40,590

-the changes directly. To your work space with a single

-

-90

-00:04:40,590 --> 00:04:44,120

-command, you can issue a git pull command and what will

-

-91

-00:04:44,120 --> 00:04:46,560

-happen, is that the changes will get collected from the

-

-92

-00:04:46,560 --> 00:04:49,810

-remote repository and they will go to your local repository and

-

-93

-00:04:49,810 --> 00:04:51,990

-to your work space, at once. So this has the

-

-94

-00:04:51,990 --> 00:04:55,820

-same affect as performing a git fetch and a git merge.

-

-95

-00:04:55,820 --> 00:04:59,160

-So if we can do everything in one command, why,

-

-96

-00:04:59,160 --> 00:05:03,290

-why we want to fetch and berch as two separate operations?

-

-97

-00:05:03,290 --> 00:05:05,920

-So one of the reason is because this allows us

-

-98

-00:05:05,920 --> 00:05:09,410

-to compare files before we actually get the latest version

-

-99

-00:05:09,410 --> 00:05:12,600

-of the files. In particular, I can run the command

-

-100

-00:05:12,600 --> 00:05:17,310

-git diff head to get the difference between my local files,

-

-101

-00:05:17,310 --> 00:05:20,330

-the files in my working directory, and the files in

-

-102

-00:05:20,330 --> 00:05:22,800

-my local repository. So what I can do, I can

-

-103

-00:05:22,800 --> 00:05:25,550

-fetch the files from the remote repository, and once I

-

-104

-00:05:25,550 --> 00:05:29,260

-fetch these files. I can run a git diff head and

-

-105

-00:05:29,260 --> 00:05:32,620

-check what the differences are. And based on the differences decide

-

-106

-00:05:32,620 --> 00:05:35,554

-whether I want to merge or not. So while we are talking about

-

-107

-00:05:35,554 --> 00:05:37,890

-git diff, there is something else that you can use with the

-

-108

-00:05:37,890 --> 00:05:41,060

-diff command. So what you can do, you can run git diff

-

-109

-00:05:41,060 --> 00:05:44,930

-without further specifying head. In this case, what the command tell you

-

-110

-00:05:44,930 --> 00:05:48,310

-is the difference between the files that you have in your work

-

-111

-00:05:48,310 --> 00:05:51,780

-space and the ones that are staged for a commit. So basically,

-

-112

-00:05:51,780 --> 00:05:54,630

-what it will be telling you, is that what you could still

-

-113

-00:05:54,630 --> 00:05:58,300

-add to the stage for the further commit, and that you

-

-114

-00:05:58,300 --> 00:06:01,230

-haven't already. So what local changes will not make it to the

-

-115

-00:06:01,230 --> 00:06:04,440

-next commit, basically. And this you can use, for example, as

-

-116

-00:06:04,440 --> 00:06:07,450

-a sanity check before doing a commit to make sure all the

-

-117

-00:06:07,450 --> 00:06:09,980

-local changes that you have, and that you want to commit,

-

-118

-00:06:09,980 --> 00:06:13,230

-are actually staged and therefore will be considered. So now we will

-

-119

-00:06:13,230 --> 00:06:16,930

-cover all of the commands that we saw here. In our practical

-

-120

-00:06:16,930 --> 00:06:20,560

-demo. But please feel free to refer back to this Git Workflow

-

-121

-00:06:20,560 --> 00:06:23,570

-to get a kind of a high level vision. Or maybe you want to keep it next to

-

-122

-00:06:23,570 --> 00:06:26,110

-you, because this really gives you the overall structure

-

-123

-00:06:26,110 --> 00:06:28,450

-and the overall view of what happens when you

-

-124

-00:06:28,450 --> 00:06:31,160

-run the different commands. And it also helps you

-

-125

-00:06:31,160 --> 00:06:34,840

-visualize The different elements that are relevant when you're

-

-126

-00:06:34,840 --> 00:06:37,970

-using GIT. So the workspace, once more, the index

-

-127

-00:06:37,970 --> 00:06:40,790

-or stage, the local repository, and the remote repository.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt
deleted file mode 100644
index d3b3a24..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/13 - GIT Demo: Intro to Git - lang_en_vs5.srt
+++ /dev/null
@@ -1,1095 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,170

-In this first part of the git demo, we will

-

-2

-00:00:02,170 --> 00:00:05,080

-call it the basics of git. So for example, how to

-

-3

-00:00:05,080 --> 00:00:08,280

-introduce yourself to git, how to create a repository, how to

-

-4

-00:00:08,280 --> 00:00:12,450

-commit changes and get changes from the repository, and so on.

-

-5

-00:00:12,450 --> 00:00:15,140

-So after you installed git you should have the git tool

-

-6

-00:00:15,140 --> 00:00:18,150

-available on the command line, so you can run the command

-

-7

-00:00:18,150 --> 00:00:21,110

-git and, if you just execute git you will get the

-

-8

-00:00:21,110 --> 00:00:25,930

-usage information for git, with the most commonly used git commands.

-

-9

-00:00:25,930 --> 00:00:28,940

-And to find information on any command, you can simply

-

-10

-00:00:28,940 --> 00:00:32,310

-type git help and the name of the command. For

-

-11

-00:00:32,310 --> 00:00:35,240

-example, lets try to write git help init. And that

-

-12

-00:00:35,240 --> 00:00:38,960

-brings up the git manual page for git init, which describes

-

-13

-00:00:38,960 --> 00:00:41,590

-the command, the synopsis, and so on. Now, lets get

-

-14

-00:00:41,590 --> 00:00:45,970

-started with using git by introducing ourselves to git, which is

-

-15

-00:00:45,970 --> 00:00:47,830

-the first thing we need to do. To do that

-

-16

-00:00:47,830 --> 00:00:51,310

-we use the git config command, in particular we are going to

-

-17

-00:00:51,310 --> 00:00:54,170

-write to the git config minus, minus global

-

-18

-00:00:54,170 --> 00:00:56,440

-user dot name. Which means we are telling it

-

-19

-00:00:56,440 --> 00:00:59,900

-our user name. We'll specify our user name which

-

-20

-00:00:59,900 --> 00:01:02,970

-in this case is George P. Burdell. You could

-

-21

-00:01:02,970 --> 00:01:04,970

-also provide your email address in the same

-

-22

-00:01:04,970 --> 00:01:09,370

-way. So you still use the git config --global

-

-23

-00:01:09,370 --> 00:01:12,750

-command. But in this case you will write user.email

-

-24

-00:01:12,750 --> 00:01:16,580

-as the property. And then you'll specify a suitable

-

-25

-00:01:16,580 --> 00:01:19,670

-email address. In this case, the email address of George P.

-

-26

-00:01:19,670 --> 00:01:23,780

-Burdell. We will now look at some commonly used commands that to

-

-27

-00:01:23,780 --> 00:01:27,210

-create and maintain a local repository. Let's first create a

-

-28

-00:01:27,210 --> 00:01:30,510

-new project and call it my project. So, to do that we

-

-29

-00:01:30,510 --> 00:01:32,790

-are simply going to create a directory and then we're going

-

-30

-00:01:32,790 --> 00:01:35,520

-to move into that directory. Now, if we try to call the

-

-31

-00:01:35,520 --> 00:01:39,000

-git status command at this point to see what's the state of

-

-32

-00:01:39,000 --> 00:01:41,990

-my project, of course git doesn't know anything about this project, right?

-

-33

-00:01:41,990 --> 00:01:44,360

-So, you will get an error. It will tell you that, basically,

-

-34

-00:01:44,360 --> 00:01:47,080

-we're not in a git repository. So how do we create a git

-

-35

-00:01:47,080 --> 00:01:50,090

-repository? How do we make this? A Git repository, but we do it

-

-36

-00:01:50,090 --> 00:01:53,560

-by calling git init and the output will tell you that the

-

-37

-00:01:53,560 --> 00:01:56,580

-repository was initialized. If we check the status again, you will see

-

-38

-00:01:56,580 --> 00:01:59,790

-that now Git recognizes the repository and will tell you that there is

-

-39

-00:01:59,790 --> 00:02:01,160

-nothing to commit because, of course,

-

-40

-00:02:01,160 --> 00:02:03,190

-the repository is completely empty. So let's

-

-41

-00:02:03,190 --> 00:02:07,380

-just create a new, empty file. Which we're going to call REAME. So

-

-42

-00:02:07,380 --> 00:02:10,008

-now if you run git status, as you can see, git will

-

-43

-00:02:10,008 --> 00:02:13,250

-tell you there is a file that's called README, but it's untracked.

-

-44

-00:02:13,250 --> 00:02:15,600

-Now what that means is that the file not staged, if you

-

-45

-00:02:15,600 --> 00:02:18,710

-remember our lesson. So what we need to do, we first need

-

-46

-00:02:18,710 --> 00:02:22,040

-to tell git that, you know, this needs to be considered. And

-

-47

-00:02:22,040 --> 00:02:25,690

-the way we do that, is by calling the git at command

-

-48

-00:02:25,690 --> 00:02:28,880

-and then we specify README as the argument for the command. If

-

-49

-00:02:28,880 --> 00:02:33,090

-we call again, Git status. Now, as you can see, Git knows

-

-50

-00:02:33,090 --> 00:02:35,780

-that there is a new file called README, because the file

-

-51

-00:02:35,780 --> 00:02:38,390

-is staged. So Git is aware of the fact that this

-

-52

-00:02:38,390 --> 00:02:41,490

-file has to be committed. So, to commit a file,

-

-53

-00:02:41,490 --> 00:02:45,410

-we simply execute git commit, which will open a text editor, which

-

-54

-00:02:45,410 --> 00:02:48,500

-can be different, depending on what is your environment, and here

-

-55

-00:02:48,500 --> 00:02:50,980

-we need to add a comment to be added to the commit.

-

-56

-00:02:50,980 --> 00:02:54,760

-So here we simply write in Added README file, then we

-

-57

-00:02:54,760 --> 00:02:58,170

-can close and save And this will add the file to the

-

-58

-00:02:58,170 --> 00:03:01,310

-Git repository. The local Git repository of course. At this

-

-59

-00:03:01,310 --> 00:03:04,220

-point, if we ran Git status again to see where we are.

-

-60

-00:03:04,220 --> 00:03:06,400

-You can see that Git tells you that there is nothing

-

-61

-00:03:06,400 --> 00:03:08,660

-to commit. Because of course the only file that we have, is

-

-62

-00:03:08,660 --> 00:03:13,070

-committed to the repository. Now, let's make some changes to our

-

-63

-00:03:13,070 --> 00:03:17,270

-README file. I'm just going to add some text here. Once more, we

-

-64

-00:03:17,270 --> 00:03:20,050

-can run git status, and at this point, git knows about

-

-65

-00:03:20,050 --> 00:03:23,430

-this file. So, it will know that README file has been modified.

-

-66

-00:03:23,430 --> 00:03:25,280

-Remember that before, it was telling you that it was a new

-

-67

-00:03:25,280 --> 00:03:28,310

-file, now it knows that there was a different version in the

-

-68

-00:03:28,310 --> 00:03:31,430

-repository. So something we can do, at this point, for example, is

-

-69

-00:03:31,430 --> 00:03:34,820

-to check the differences. Between this file and the committed one by

-

-70

-00:03:34,820 --> 00:03:38,040

-executing get diff readme and if you look at the output of

-

-71

-00:03:38,040 --> 00:03:42,320

-the get diff command here, you can see that this line, readme

-

-72

-00:03:42,320 --> 00:03:45,170

-file content was added and you'll see that it was added because

-

-73

-00:03:45,170 --> 00:03:48,610

-there's a plus sign before that line. In case of deletion of lines,

-

-74

-00:03:48,610 --> 00:03:51,460

-you'll see a minusm sign there. So at this point, if we

-

-75

-00:03:51,460 --> 00:03:54,950

-want to commit our file, remember that we'll always have to tell git

-

-76

-00:03:54,950 --> 00:03:58,070

-that we want to stage the file before committing it. Otherwise, it

-

-77

-00:03:58,070 --> 00:04:01,420

-will be ignored by the commit operation. So to tell git, that the

-

-78

-00:04:01,420 --> 00:04:04,140

-file has to be staged, we will, can use the usual git

-

-79

-00:04:04,140 --> 00:04:07,140

-add command. But if you remember the lesson, we can also use a

-

-80

-00:04:07,140 --> 00:04:10,150

-shortcut. So you, we don't really have to do this in two steps.

-

-81

-00:04:10,150 --> 00:04:13,730

-We can simply say, git commit -a, and this will tell git to

-

-82

-00:04:13,730 --> 00:04:17,120

-commit all of the files that git knows about, which in this

-

-83

-00:04:17,120 --> 00:04:19,959

-case is only the written file of course. Something else that we can

-

-84

-00:04:19,959 --> 00:04:22,950

-do, is that we can also provide the right away message for

-

-85

-00:04:22,950 --> 00:04:26,140

-the commit, without having to open an editor. So, to do that we

-

-86

-00:04:26,140 --> 00:04:29,760

-can specify the -n option. And at this point a we can

-

-87

-00:04:29,760 --> 00:04:34,050

-just put a in double quotes our content we press enter and as

-

-88

-00:04:34,050 --> 00:04:36,690

-you can see it will notify us that one file was changed

-

-89

-00:04:36,690 --> 00:04:38,850

-and in particular it will also tell you that there was an a

-

-90

-00:04:38,850 --> 00:04:41,470

-insertion again if we run git status you will see that

-

-91

-00:04:41,470 --> 00:04:44,800

-there is nothing else to commit. So now lets imagine that

-

-92

-00:04:44,800 --> 00:04:48,390

-you want to see the version history for your repository. You

-

-93

-00:04:48,390 --> 00:04:51,760

-can do that by running the git log command. So if

-

-94

-00:04:51,760 --> 00:04:54,560

-you run that, it will show you all the different commits

-

-95

-00:04:54,560 --> 00:04:57,990

-For your repository. And each commit has got a commit ID, as

-

-96

-00:04:57,990 --> 00:05:01,010

-you can see here and the one down here is

-

-97

-00:05:01,010 --> 00:05:04,740

-the first commit, where as the one above is the second commit.

-

-98

-00:05:04,740 --> 00:05:07,670

-And as you can see, we'll also show you the comments associated

-

-99

-00:05:07,670 --> 00:05:11,070

-with each commit. And in case you wanted to see the changes introduced

-

-100

-00:05:11,070 --> 00:05:14,500

-by a commit. You can use that git show command, and you

-

-101

-00:05:14,500 --> 00:05:18,220

-can provide the commit ID for the commit that you're interested in.

-

-102

-00:05:18,220 --> 00:05:20,600

-And you don't really need to provide the whole ID, you can

-

-103

-00:05:20,600 --> 00:05:23,600

-provide the first four or more characters. So that's what we're going to

-

-104

-00:05:23,600 --> 00:05:26,540

-do here. So we're going to specify the second commit, and when we

-

-105

-00:05:26,540 --> 00:05:31,120

-execute the command it will show use the changes introduced by that commit.

-

-106

-00:05:31,120 --> 00:05:33,550

-To fetch a repository from a remote server, you can

-

-107

-00:05:33,550 --> 00:05:36,350

-use the git clone command. So you will write git clone

-

-108

-00:05:36,350 --> 00:05:39,140

-and then specify the URL. For the remote repository. Here

-

-109

-00:05:39,140 --> 00:05:44,260

-we are using the SSH protocal and there are different protocals

-

-110

-00:05:44,260 --> 00:05:46,680

-that can be used, so the remote repository can be

-

-111

-00:05:46,680 --> 00:05:49,800

-made available in different ways. As you can see, when you

-

-112

-00:05:49,800 --> 00:05:54,050

-clone the project, the project is cloned into the local directory.

-

-113

-00:05:54,050 --> 00:05:57,180

-If you wanted to import the project under a different name.

-

-114

-00:05:57,180 --> 00:05:59,790

-You could just specify the name that you want for the

-

-115

-00:05:59,790 --> 00:06:03,110

-Local Directory. For example, in this case, myproject2. And,

-

-116

-00:06:03,110 --> 00:06:06,630

-so here you'll get the project in my local work space

-

-117

-00:06:06,630 --> 00:06:09,530

-with the name that I specified. So, let's go inside one

-

-118

-00:06:09,530 --> 00:06:12,020

-of these two projects that have the same content because they're

-

-119

-00:06:12,020 --> 00:06:14,930

-coming from the repository. If you want to see the details

-

-120

-00:06:14,930 --> 00:06:18,550

-of the server you can use the remote command and specify

-

-121

-00:06:18,550 --> 00:06:22,230

-the flag -v. And here we'll show you what is the remote

-

-122

-00:06:22,230 --> 00:06:25,560

-repository now let's go ahead to make some changes to the project

-

-123

-00:06:25,560 --> 00:06:28,820

-for example let's add a file. So I'm just going to create this

-

-124

-00:06:28,820 --> 00:06:31,230

-empty file which I am going to call new file I'm going to

-

-125

-00:06:31,230 --> 00:06:34,890

-add it to my index so that it gets committed. Later on and

-

-126

-00:06:34,890 --> 00:06:37,650

-then I'm going to run git commit to actually commit it to the

-

-127

-00:06:37,650 --> 00:06:41,570

-local repository. And I'm going to specify the comment for the commit right

-

-128

-00:06:41,570 --> 00:06:44,120

-away here from the command line. So when we do that the

-

-129

-00:06:44,120 --> 00:06:47,680

-file gets added to my local repository. And if we want to double

-

-130

-00:06:47,680 --> 00:06:50,690

-check that, we can run git log. And if you look at

-

-131

-00:06:50,690 --> 00:06:53,360

-the last commit at the top, you can see that it's telling

-

-132

-00:06:53,360 --> 00:06:56,980

-me that the new file was added to the repository, showing the

-

-133

-00:06:56,980 --> 00:06:59,940

-comment that I added. But this is just for the local repository,

-

-134

-00:06:59,940 --> 00:07:03,100

-so I need to use the git push command to push it

-

-135

-00:07:03,100 --> 00:07:06,250

-to the remote repository. And at this point, when I run that,

-

-136

-00:07:06,250 --> 00:07:09,890

-my local changes will be committed. To the remote repository. So now

-

-137

-00:07:09,890 --> 00:07:13,110

-let's go to the other copy of the project that we created.

-

-138

-00:07:13,110 --> 00:07:16,660

-The one under directory myproject2. If you remember this project was

-

-139

-00:07:16,660 --> 00:07:19,610

-linked up to the same remote project. But of course, if we run

-

-140

-00:07:19,610 --> 00:07:22,720

-get log here, we don't see this latest change that we made, because

-

-141

-00:07:22,720 --> 00:07:25,970

-we didn't synchronize this local copy with the remote copy. And so we

-

-142

-00:07:25,970 --> 00:07:28,530

-just have these files, the README and ,Five that worked there before.

-

-143

-00:07:28,530 --> 00:07:30,720

-So what we need to do is that we need to pull the

-

-144

-00:07:30,720 --> 00:07:34,180

-changes from the remote repository using git pull, and when we do that,

-

-145

-00:07:34,180 --> 00:07:38,130

-that will actually pull these changes and therefore, create the new files that

-

-146

-00:07:38,130 --> 00:07:41,340

-we created in the other directory. And if we run git log now,

-

-147

-00:07:41,340 --> 00:07:43,790

-you can see that now we have the new entry. The comment at

-

-148

-00:07:43,790 --> 00:07:46,920

-the top, that says this new file was added and of course, this

-

-149

-00:07:46,920 --> 00:07:49,880

-is just an example, so we had two copies of the project on the

-

-150

-00:07:49,880 --> 00:07:52,990

-same machine and for the same user, so the normal users scenario for

-

-151

-00:07:52,990 --> 00:07:56,230

-this, it will be that, each user will have their local copy, but this

-

-152

-00:07:56,230 --> 00:07:59,220

-should have given you the idea of how, git allows you to work

-

-153

-00:07:59,220 --> 00:08:03,210

-on some local file. Commit them and push them to a remote repository and

-

-154

-00:08:03,210 --> 00:08:06,680

-other users to get your changes, do further changes push

-

-155

-00:08:06,680 --> 00:08:08,860

-them as well and then, you know, they will allow you

-

-156

-00:08:08,860 --> 00:08:10,890

-to get their changes, and so on and so forth. So

-

-157

-00:08:10,890 --> 00:08:15,540

-really allows this collaboration between different users and keeping track

-

-158

-00:08:15,540 --> 00:08:18,730

-of all the changes made by the different users. So now

-

-159

-00:08:18,730 --> 00:08:21,860

-let's look at some more advanced concept, which are the concept

-

-160

-00:08:21,860 --> 00:08:25,600

-of branching, and merging. So what branching means is basically is

-

-161

-00:08:25,600 --> 00:08:28,540

-to make a copy, to create a branch of the current

-

-162

-00:08:28,540 --> 00:08:32,070

-project so that we can work on that copy indpendently from the

-

-163

-00:08:32,070 --> 00:08:34,740

-other copy, from the other branch. And then we can decide whether

-

-164

-00:08:34,740 --> 00:08:37,190

-we want to keep, both branches, or we want to merge them at

-

-165

-00:08:37,190 --> 00:08:40,510

-some point. And you can of course have multiple branches, not just two.

-

-166

-00:08:40,510 --> 00:08:43,558

-And the reason why this is particularly useful is because in many

-

-167

-00:08:43,558 --> 00:08:46,790

-cases if you think, about the way we develop software in general,

-

-168

-00:08:46,790 --> 00:08:50,030

-we work with artifacts. We might have the need to create kind

-

-169

-00:08:50,030 --> 00:08:53,910

-of a separate copy of your work space. To do some experiments for example.

-

-170

-00:08:53,910 --> 00:08:54,940

-So you want to change something in

-

-171

-00:08:54,940 --> 00:08:56,250

-the code, you're not really sure it's going to

-

-172

-00:08:56,250 --> 00:08:57,650

-work and you don't want to touch

-

-173

-00:08:57,650 --> 00:08:59,500

-your main copy. So that's the perfect application

-

-174

-00:08:59,500 --> 00:09:00,830

-for branching. If you want to do

-

-175

-00:09:00,830 --> 00:09:02,710

-something like that...you want to experiment or do

-

-176

-00:09:02,710 --> 00:09:04,800

-some modifications that you're not sure about,

-

-177

-00:09:04,800 --> 00:09:06,820

-you will branch your code, you will do

-

-178

-00:09:06,820 --> 00:09:08,230

-the changes...and then if you're happy with

-

-179

-00:09:08,230 --> 00:09:09,890

-the changes, you will merge that branch

-

-180

-00:09:09,890 --> 00:09:13,250

-with the original one, or worse if you're not happy with the changes you will

-

-181

-00:09:13,250 --> 00:09:16,680

-just throw away that branch. So this is just one possible use of branch but

-

-182

-00:09:16,680 --> 00:09:18,950

-it's one of the main uses of that. So in all let's see how that

-

-183

-00:09:18,950 --> 00:09:21,070

-can be done with git. So first of all if you

-

-184

-00:09:21,070 --> 00:09:24,740

-want to see which branches are currently present in your project, you can

-

-185

-00:09:24,740 --> 00:09:28,260

-simply execute git branch, and in this case, you can see

-

-186

-00:09:28,260 --> 00:09:31,090

-that there's only one branch, which is called master, and the star

-

-187

-00:09:31,090 --> 00:09:33,940

-there indicates that this is our current branch. So how do

-

-188

-00:09:33,940 --> 00:09:37,210

-we create a new branch? So we simply run the command

-

-189

-00:09:37,210 --> 00:09:41,010

-git branch and specify a name for the new branch, for example we'll

-

-190

-00:09:41,010 --> 00:09:44,110

-call it newBranch, to make it very explicit. At this point,

-

-191

-00:09:44,110 --> 00:09:46,940

-if we run git branch of course, we will have

-

-192

-00:09:46,940 --> 00:09:50,410

-a new branch plus master will still be our current branch. So

-

-193

-00:09:50,410 --> 00:09:52,780

-if you want to switch to the new branch, we will use

-

-194

-00:09:52,780 --> 00:09:56,510

-the git checkout command and specify the name of the branch that

-

-195

-00:09:56,510 --> 00:10:00,220

-we want to become our current branch. So when we run that,

-

-196

-00:10:00,220 --> 00:10:02,780

-git will tell us that we switched to the new branch. And

-

-197

-00:10:02,780 --> 00:10:05,920

-if we run git branch you will see that now the star

-

-198

-00:10:05,920 --> 00:10:09,130

-is next to newBranch because that's our current branch. There is a

-

-199

-00:10:09,130 --> 00:10:12,834

-shortcut for these two commands. If you run the command git

-

-200

-00:10:12,834 --> 00:10:17,240

-checkout specify the -b flag and then the name of

-

-201

-00:10:17,240 --> 00:10:19,790

-the new branch it will do both things at the same

-

-202

-00:10:19,790 --> 00:10:22,910

-time. It will create the new branch called testing in this

-

-203

-00:10:22,910 --> 00:10:25,760

-case, and then it will switch to new branch and then

-

-204

-00:10:25,760 --> 00:10:28,860

-it will tell you after executing the command. So now if

-

-205

-00:10:28,860 --> 00:10:31,290

-we look at the git branch output, you can see that

-

-206

-00:10:31,290 --> 00:10:35,090

-there is three branches and we are currently on the testing branch.

-

-207

-00:10:35,090 --> 00:10:37,300

-So now let's create a new file and just call it test

-

-208

-00:10:37,300 --> 00:10:41,180

-file, put some content in there, save it, we edit and commit it.

-

-209

-00:10:47,380 --> 00:10:50,280

-And as you can see, now in this current branch, we have our

-

-210

-00:10:50,280 --> 00:10:53,430

-testFile. So now let's switch to a different branch. So let's go back

-

-211

-00:10:53,430 --> 00:10:57,550

-to the master branch using the usual git checkout command. So now if

-

-212

-00:10:57,550 --> 00:11:00,310

-we do an ls, if we check the content of the current directory,

-

-213

-00:11:00,310 --> 00:11:03,140

-we can see that the testFile is not there, because of course, it's

-

-214

-00:11:03,140 --> 00:11:06,070

-not in this branch. so now let's assume that we are happy with

-

-215

-00:11:06,070 --> 00:11:09,260

-the testFile that we created, with the modification that we made on the

-

-216

-00:11:09,260 --> 00:11:13,080

-branch. And so we want to merge that branch with our master branch.

-

-217

-00:11:13,080 --> 00:11:16,180

-To do that we can call the git merge command and

-

-218

-00:11:16,180 --> 00:11:19,260

-we'll specify the branch that we want to merge with the current

-

-219

-00:11:19,260 --> 00:11:23,030

-one. So we will specify testing in this case. That will merge

-

-220

-00:11:23,030 --> 00:11:26,260

-the testing branch with the current branch, which is the master. Which

-

-221

-00:11:26,260 --> 00:11:29,200

-means that now the testfile is in my current working directory,

-

-222

-00:11:29,200 --> 00:11:32,180

-is in my current, Current branch. And if I run the branch,

-

-223

-00:11:32,180 --> 00:11:35,590

-you'll see that the testing branch is obviously still there, so let's

-

-224

-00:11:35,590 --> 00:11:38,370

-assume that we want to delete the testing branch at this point

-

-225

-00:11:38,370 --> 00:11:41,220

-because we don't need it anymore. We could simply execute

-

-226

-00:11:41,220 --> 00:11:44,940

-the branch -d which stands for -delete, specify

-

-227

-00:11:44,940 --> 00:11:47,670

-the name of the branch and this will eliminate that

-

-228

-00:11:47,670 --> 00:11:51,670

-branch as confirmed by running the command git branch or the

-

-229

-00:11:51,670 --> 00:11:55,030

-testing branch no longer shows up. So, something that might

-

-230

-00:11:55,030 --> 00:11:57,200

-happen when you merge a branch is, is that you

-

-231

-00:11:57,200 --> 00:12:00,000

-might have conflicts For example, in case you change the,

-

-232

-00:12:00,000 --> 00:12:03,600

-the same file into different branches. So, let's see an example

-

-233

-00:12:03,600 --> 00:12:06,730

-of that. So, we're going to check which branches we have,

-

-234

-00:12:06,730 --> 00:12:09,260

-so we have two branches, in this case, master and newBranch

-

-235

-00:12:09,260 --> 00:12:14,040

-Our current branch is master. Let's open this file called new

-

-236

-00:12:14,040 --> 00:12:19,310

-file and, add some content there. So now let's commit

-

-237

-00:12:19,310 --> 00:12:21,890

-this changes to the get to the local repository. Now

-

-238

-00:12:21,890 --> 00:12:24,600

-let's switch to the other branch and if you remember we

-

-239

-00:12:24,600 --> 00:12:26,900

-do this by running git checkout and the name of the

-

-240

-00:12:26,900 --> 00:12:29,150

-branch. And at this point we do the same operation here.

-

-241

-00:12:29,150 --> 00:12:32,090

-So we take this file and we change it here to. In this

-

-242

-00:12:32,090 --> 00:12:34,740

-case we have content that reflects the fact that we are. In the

-

-243

-00:12:34,740 --> 00:12:38,790

-new branch just for convenience. At this point, we also can move the

-

-244

-00:12:38,790 --> 00:12:41,870

-file here. The comment here is, of course, that this is the new

-

-245

-00:12:41,870 --> 00:12:44,800

-file in the new branch. So, at this point, what we have here

-

-246

-00:12:44,800 --> 00:12:47,980

-is that we have this file called newfile that has been modified

-

-247

-00:12:47,980 --> 00:12:51,320

-independently both in the master branch and in the new branch. So we

-

-248

-00:12:51,320 --> 00:12:55,090

-have a conflict. Right? So, now, let's switch back to the master branch.

-

-249

-00:12:55,090 --> 00:12:57,720

-So now, let's say we want to merge the two branches. So

-

-250

-00:12:57,720 --> 00:13:00,490

-since we are in master, we want to say that when I

-

-251

-00:13:00,490 --> 00:13:03,970

-merge the new branch into the current one. And when we run

-

-252

-00:13:03,970 --> 00:13:07,540

-that, we get an auto merging conflict. So at this point what

-

-253

-00:13:07,540 --> 00:13:10,390

-we can do, is that we can manually fix the conflict by

-

-254

-00:13:10,390 --> 00:13:13,910

-opening the new file. So the file that was showing the conflict.

-

-255

-00:13:13,910 --> 00:13:16,860

-So here you can see the kind of of information that you get

-

-256

-00:13:16,860 --> 00:13:20,340

-in the conflicted file. So it's telling you basically that there is

-

-257

-00:13:20,340 --> 00:13:23,760

-in the head which is the, the master this conflict. Which is new

-

-258

-00:13:23,760 --> 00:13:26,830

-file in master. Which is the content that we added of course. And

-

-259

-00:13:26,830 --> 00:13:30,190

-then you know, under, you know, the separator you can see the content

-

-260

-00:13:30,190 --> 00:13:32,650

-that was added in the new branch. Which is the contents in new

-

-261

-00:13:32,650 --> 00:13:35,990

-file, in new branch. So basically, what this is showing you is the

-

-262

-00:13:35,990 --> 00:13:39,150

-parts of the file that are conflicting. In this case, we only have

-

-263

-00:13:39,150 --> 00:13:41,990

-one line, is basically the whole file into two versions and you can

-

-264

-00:13:41,990 --> 00:13:45,460

-decide which version you want to keep or how you want to merge in

-

-265

-00:13:45,460 --> 00:13:48,260

-general, the two pieces. So here, let's assume that we

-

-266

-00:13:48,260 --> 00:13:52,140

-want to keep the content from the master. So what we're

-

-267

-00:13:52,140 --> 00:13:54,510

-going to do is we're going to elimate the annotations

-

-268

-00:13:54,510 --> 00:13:57,500

-and we're going to eliminate the additional content. We save this

-

-269

-00:13:57,500 --> 00:13:59,680

-file. So at this point what we need to do

-

-270

-00:13:59,680 --> 00:14:04,040

-is simply to commit the modified file (the merge file) and we

-

-271

-00:14:04,040 --> 00:14:07,440

-do that in the normal way. We call git add, specifying

-

-272

-00:14:07,440 --> 00:14:11,180

-the file, so git add newfile. Then we run git commit

-

-273

-00:14:11,180 --> 00:14:15,630

-newfile, and we specify in the comment for clarity that this is the merged file,

-

-274

-00:14:15,630 --> 00:14:19,530

-so that we performed a merge. And at this point we are done with our merge.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt
deleted file mode 100644
index b95877b..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/14 - GIT Demo: Git + Eclipse - lang_en_vs5.srt
+++ /dev/null
@@ -1,307 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,580

-Now that we saw some of the git basic

-

-2

-00:00:02,580 --> 00:00:05,689

-functionalities in practice, let's go a step further. If

-

-3

-00:00:05,689 --> 00:00:08,420

-you remember I mentioned before that many of these

-

-4

-00:00:08,420 --> 00:00:12,250

-version control systems are actually integrated into IDE's. So

-

-5

-00:00:12,250 --> 00:00:14,540

-what were going to look at next is what happens

-

-6

-00:00:14,540 --> 00:00:17,500

-if we put together git and eclipse. And the

-

-7

-00:00:17,500 --> 00:00:20,960

-result is egit, or EGit is a plug in

-

-8

-00:00:20,960 --> 00:00:25,520

-for the eclipse IDE that adds git functionality to eclipse.

-

-9

-00:00:25,520 --> 00:00:27,880

-So let's see how that works in practice. So

-

-10

-00:00:27,880 --> 00:00:31,400

-support for git is available in many IDE's including

-

-11

-00:00:31,400 --> 00:00:33,920

-Eclipse. And if you want to get github

-

-12

-00:00:33,920 --> 00:00:38,620

-for Eclipse, you should go to eclipse.github.com and you can

-

-13

-00:00:38,620 --> 00:00:41,445

-download the plugin. So this bring us to the

-

-14

-00:00:41,445 --> 00:00:44,530

-plugin page and you can use the provided URL

-

-15

-00:00:44,530 --> 00:00:47,060

-and directions to install the plugin. In this case

-

-16

-00:00:47,060 --> 00:00:49,945

-we're going to copy this address. So we're going to

-

-17

-00:00:49,945 --> 00:00:54,110

-Eclipse, Help, Install new software. We can click on Add

-

-18

-00:00:54,110 --> 00:00:56,810

-to add a new site from which to get software. We

-

-19

-00:00:56,810 --> 00:00:59,110

-paste the location that we just copied here. And we

-

-20

-00:00:59,110 --> 00:01:02,842

-can give it a descriptive name. In this case I'll just

-

-21

-00:01:02,842 --> 00:01:06,645

-call it Eclipse Git plugin. Then when I click okay,

-

-22

-00:01:06,645 --> 00:01:09,720

-Eclipse will go, and look for plugins. And as you can

-

-23

-00:01:09,720 --> 00:01:12,510

-see, there are two options. We can select both of them,

-

-24

-00:01:12,510 --> 00:01:15,180

-and click on next. You can see that the Eclipse identified

-

-25

-00:01:15,180 --> 00:01:18,330

-a few dependencies. You can click next and accept them. You can

-

-26

-00:01:18,330 --> 00:01:21,540

-accept the terms and conditions for the plug in, and then just

-

-27

-00:01:21,540 --> 00:01:25,730

-finish. And at this point, Eclipse will install the plugin, which might

-

-28

-00:01:25,730 --> 00:01:28,610

-take a little bit of time. So we're just going to speed it up.

-

-29

-00:01:28,610 --> 00:01:31,110

-And when Eclipse is done, you will get this prompt that will

-

-30

-00:01:31,110 --> 00:01:33,670

-tell you that you need to restart Eclipse for the plugin to

-

-31

-00:01:33,670 --> 00:01:36,990

-be actually installed. And at this point, you want to click yes. And

-

-32

-00:01:36,990 --> 00:01:40,550

-when Eclipse restarts. You'll have your plugin. We're going to go to the git

-

-33

-00:01:40,550 --> 00:01:44,030

-repository perspective that we can select here. And when we click

-

-34

-00:01:44,030 --> 00:01:47,160

-OK, you can see that our display will change. And since

-

-35

-00:01:47,160 --> 00:01:49,360

-we don't have any repository yet, we are provided with the

-

-36

-00:01:49,360 --> 00:01:53,620

-possibility of adding an existing local git repository, cloning a git repository

-

-37

-00:01:53,620 --> 00:01:56,330

-or creating a new local git repository. We're going to add an

-

-38

-00:01:56,330 --> 00:01:59,800

-existing local repository. This is the one that we created earlier,

-

-39

-00:01:59,800 --> 00:02:02,170

-so we'll select it and click finish, and you can see

-

-40

-00:02:02,170 --> 00:02:05,660

-that my project is now added to this set of git repositories.

-

-41

-00:02:05,660 --> 00:02:09,240

-Now let's check out the project from the repository by selecting import

-

-42

-00:02:09,240 --> 00:02:12,530

-project. And here you can import something as an existing project, you

-

-43

-00:02:12,530 --> 00:02:15,300

-can use a new project wizard, and in this case I chose

-

-44

-00:02:15,300 --> 00:02:18,680

-the option of importing as a general project. Then I click Next and

-

-45

-00:02:18,680 --> 00:02:20,870

-as you can see, I have the project name up there and

-

-46

-00:02:20,870 --> 00:02:24,630

-I can click Finish. So now, if I go to the resource perspective

-

-47

-00:02:24,630 --> 00:02:27,740

-by clicking here, I can see that the project has been added

-

-48

-00:02:27,740 --> 00:02:30,760

-to my set of projects. And I can see all the files within

-

-49

-00:02:30,760 --> 00:02:33,440

-the project, particularly, if I click on the README, you can see

-

-50

-00:02:33,440 --> 00:02:36,190

-that we have the Readme file that we created before. Same thing for

-

-51

-00:02:36,190 --> 00:02:38,930

-the test file. One thing I can do at this point, it

-

-52

-00:02:38,930 --> 00:02:41,070

-to execute different git commands, perform

-

-53

-00:02:41,070 --> 00:02:43,430

-different git operations by using the team

-

-54

-00:02:43,430 --> 00:02:47,010

-submenu in the contactual menu. And here there are several things

-

-55

-00:02:47,010 --> 00:02:50,650

-I can do including some advanced commands. And just to give it a

-

-56

-00:02:50,650 --> 00:02:53,200

-shot, I am going to try to click show local history, and this

-

-57

-00:02:53,200 --> 00:02:56,180

-shows the history of the file. For example it shows the author and

-

-58

-00:02:56,180 --> 00:02:59,200

-it shows when he was created, when he was authored. Lets make

-

-59

-00:02:59,200 --> 00:03:02,810

-some changes to this file by adding some new content. Okay. I saved

-

-60

-00:03:02,810 --> 00:03:05,160

-the file and now I can see that error that indicates that my

-

-61

-00:03:05,160 --> 00:03:08,620

-file was locally changed. So now if I go to the team menu,

-

-62

-00:03:08,620 --> 00:03:11,380

-you can see that I have the option to add to the index,

-

-63

-00:03:11,380 --> 00:03:14,686

-to stage the file. And now I got this new label that star

-

-64

-00:03:14,686 --> 00:03:17,980

-that shows the files added to the index. And now at this point,

-

-65

-00:03:17,980 --> 00:03:21,270

-I can go to the team menu again and I can actually commit

-

-66

-00:03:21,270 --> 00:03:25,480

-the file by selecting the corresponding entry. This allows me to enter

-

-67

-00:03:25,480 --> 00:03:28,390

-the commit message, exactly in the same way which I could do

-

-68

-00:03:28,390 --> 00:03:31,250

-that from the command line with the textual editor. And after I

-

-69

-00:03:31,250 --> 00:03:34,050

-put the comment there, I can actually commit. And now if we

-

-70

-00:03:34,050 --> 00:03:36,320

-look at the history view, we can see here that we have

-

-71

-00:03:36,320 --> 00:03:38,960

-a new version for the file that we just modified. And we

-

-72

-00:03:38,960 --> 00:03:42,250

-can also see the commit comment. And, at this point, if we

-

-73

-00:03:42,250 --> 00:03:46,450

-had remote repository we could push our changes to that remote repository

-

-74

-00:03:46,450 --> 00:03:49,330

-as well. Again, using the team submenu and

-

-75

-00:03:49,330 --> 00:03:52,170

-the contextual menu. And, speaking of remote repositories, what we

-

-76

-00:03:52,170 --> 00:03:55,230

-are going to see next is how to use GitHub

-

-77

-00:03:55,230 --> 00:03:58,640

-repositories which are remote repositories that are hosted on GitHub.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt
deleted file mode 100644
index 5e842d7..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/15 - GIT Demo: Github - lang_en_vs3.srt
+++ /dev/null
@@ -1,239 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,820

-In the interview that we did at the beginning of the class,

-

-2

-00:00:02,820 --> 00:00:08,430

-we talked with John about GitHub, where GitHub is a Git hosting website, and

-

-3

-00:00:08,430 --> 00:00:11,390

-John told you all about it. For this class, we will be

-

-4

-00:00:11,390 --> 00:00:16,350

-using GitHub as our Git hosting. Let's see how GitHub works in practice and

-

-5

-00:00:16,350 --> 00:00:19,450

-let's see some of the common features offered by GitHub.

-

-6

-00:00:19,450 --> 00:00:24,010

-This is what we'll do in the third part of this Git demo. What I'm showing here

-

-7

-00:00:24,010 --> 00:00:28,550

-is the GitHub website and as I said, GitHub is a Git hosting website and

-

-8

-00:00:28,550 --> 00:00:32,950

-you can create an account on GitHub by simply signing up on the website. And

-

-9

-00:00:32,950 --> 00:00:36,100

-because we already have an account that we're simply going to sign in

-

-10

-00:00:36,100 --> 00:00:40,570

-to see what kind of functionality GitHub offers. And we're going to specify our

-

-11

-00:00:40,570 --> 00:00:44,190

-username and password. And as you can see on the GitHub website,

-

-12

-00:00:44,190 --> 00:00:47,695

-you can use this menu up on the right to create a new repository or

-

-13

-00:00:47,695 --> 00:00:51,500

-change the account settings. Let's click on our user profile. And

-

-14

-00:00:51,500 --> 00:00:54,270

-here we can see some statistics for our user. For

-

-15

-00:00:54,270 --> 00:00:59,190

-example, we can see statistic about our contributions and our repositories. So

-

-16

-00:00:59,190 --> 00:01:02,560

-now if we go to the Repositories view, we can create a new repository.

-

-17

-00:01:02,560 --> 00:01:07,117

-We give it a name. Let's call it myrepo. We can provide the description for

-

-18

-00:01:07,117 --> 00:01:11,680

-the repository. If we want, we can initialize the repository by adding a README

-

-19

-00:01:11,680 --> 00:01:15,860

-file. And even though we are not doing it right now, if you can see up here,

-

-20

-00:01:15,860 --> 00:01:19,820

-you can also add a license here on the right and it allows you

-

-21

-00:01:19,820 --> 00:01:24,831

-to choose from a set of predefined licenses. And you can also a .gitignore file,

-

-22

-00:01:24,831 --> 00:01:28,410

-which, in case you don't know what that is, it's a very convenient file that

-

-23

-00:01:28,410 --> 00:01:32,740

-will automatically exclude from the repositories file that should not be added.

-

-24

-00:01:32,740 --> 00:01:35,690

-So if you remember in the lesson we said there are things that you should not

-

-25

-00:01:35,690 --> 00:01:39,263

-add to the repositories. For example, derived files. So

-

-26

-00:01:39,263 --> 00:01:42,360

-here, using this menu, you can pick the type of project that you have.

-

-27

-00:01:42,360 --> 00:01:47,740

-For example, Java project or PHP project or many other kinds of projects. And

-

-28

-00:01:47,740 --> 00:01:50,510

-the GitHub will automatically add that file for you.

-

-29

-00:01:50,510 --> 00:01:53,680

-But let's skip that for now and simply create our repository. And

-

-30

-00:01:53,680 --> 00:01:58,000

-that creates a repository that contains the README file because that's what we

-

-31

-00:01:58,000 --> 00:02:02,580

-decided to do. And it also allows you to edit the README file by clicking on it.

-

-32

-00:02:02,580 --> 00:02:05,560

-It will bring up an editor and here you can write, you know,

-

-33

-00:02:05,560 --> 00:02:08,949

-for example, initial readme for your project. Then you can add your

-

-34

-00:02:08,949 --> 00:02:13,070

-commit message up there and then you can commit the changes to your README file.

-

-35

-00:02:13,070 --> 00:02:18,212

-The site also provides many other features, like, for example, creating issues,

-

-36

-00:02:18,212 --> 00:02:22,030

-pull requests, adding and editing a wiki, and also, you know,

-

-37

-00:02:22,030 --> 00:02:25,740

-defining other characteristics and settings for the repository. Now, if we go to

-

-38

-00:02:25,740 --> 00:02:30,500

-the repository, you can see that we also get the HTTPS link for the repository.

-

-39

-00:02:30,500 --> 00:02:35,870

-So this is the URL that you can use to clone your repository. If you remember,

-

-40

-00:02:35,870 --> 00:02:39,250

-with a git clone command, that's the URL that you can specify. So

-

-41

-00:02:39,250 --> 00:02:43,480

-let's try to do that and clone that repository. So we're going to copy this URL.

-

-42

-00:02:43,480 --> 00:02:48,300

-To do that, we're going to execute git clone and specify the URL that we

-

-43

-00:02:48,300 --> 00:02:52,310

-just copied. And you can see that the project was created, was cloned locally.

-

-44

-00:02:52,310 --> 00:02:55,760

-And if we go under myrepo, which is the name of the repository, you can see that

-

-45

-00:02:55,760 --> 00:02:59,570

-the README file that we created on GitHub is here. So if we create a new file,

-

-46

-00:02:59,570 --> 00:03:03,340

-which we're going to call again, newFile just to be clear. And then we

-

-47

-00:03:03,340 --> 00:03:07,920

-can add it, commit it, specifying as usual a commit message. So at this point,

-

-48

-00:03:07,920 --> 00:03:11,940

-we can push our locked out changes to the remote GitHub repository. And

-

-49

-00:03:11,940 --> 00:03:14,340

-because the GitHub repository is password protected,

-

-50

-00:03:14,340 --> 00:03:17,660

-we have to specify our login and password. And of course, if you

-

-51

-00:03:17,660 --> 00:03:21,770

-pass the wrong password, GitHub is not going to let you in. So let's try again.

-

-52

-00:03:21,770 --> 00:03:25,110

-Let's try to get the password right this time. I'm going to specify again,

-

-53

-00:03:25,110 --> 00:03:31,130

-my login and my password. At this point, the push is successful and

-

-54

-00:03:31,130 --> 00:03:35,220

-my changes are actually pushed to the master, which is the GitHub repository.

-

-55

-00:03:35,220 --> 00:03:39,020

-To double check that, let's go back to the GitHub repository and as you can see,

-

-56

-00:03:39,020 --> 00:03:42,470

-that the file that we added, newFile, is there as expected. And of course,

-

-57

-00:03:42,470 --> 00:03:45,880

-there's many more things that you can do on the GitHub website, so

-

-58

-00:03:45,880 --> 00:03:48,410

-I strongly encourage you to go and try out things. But

-

-59

-00:03:48,410 --> 00:03:51,980

-the key message here is that the GitHub is a Git hosting website where you

-

-60

-00:03:51,980 --> 00:03:54,990

-can get an account and create your remote repositories.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt
deleted file mode 100644
index b35fc59..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/16 - GIT Recap - lang_en_vs5.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,212

-Now that we are done with our demo, I just want

-

-2

-00:00:02,212 --> 00:00:05,910

-to go through a quick GIT recap to remind you of the

-

-3

-00:00:05,910 --> 00:00:08,720

-main commands that we saw, and what they do. And you can

-

-4

-00:00:08,720 --> 00:00:11,290

-also use these as sort of a reference when you work with

-

-5

-00:00:11,290 --> 00:00:13,940

-GIT. And by the way, if you look around and you do

-

-6

-00:00:13,940 --> 00:00:16,960

-a search, you can see that there's tons of examples on the

-

-7

-00:00:16,960 --> 00:00:22,170

-web of GitHub tutorials, videos, examples, manuals. So feel free to

-

-8

-00:00:22,170 --> 00:00:25,910

-explore. And I'm actually going to put some references to tutorials and

-

-9

-00:00:25,910 --> 00:00:29,100

-videos that I found particularly useful in the notes for the class.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt
deleted file mode 100644
index c29fae8..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/17 - GIT Recap: Local Repositories - lang_en_vs5.srt
+++ /dev/null
@@ -1,163 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,460

-So, let me start by recapping some of the operations that

-

-2

-00:00:02,460 --> 00:00:06,000

-we can perform on local repositories. I'm just going to list them

-

-3

-00:00:06,000 --> 00:00:09,240

-here and go through them by separating them into three main

-

-4

-00:00:09,240 --> 00:00:12,930

-categories. The first one is commands that, to create a repository and

-

-5

-00:00:12,930 --> 00:00:15,470

-notice that not all of these are git commands, that for

-

-6

-00:00:15,470 --> 00:00:18,710

-example, to create the repository, we would normally want to. Create a

-

-7

-00:00:18,710 --> 00:00:21,560

-directory, which is exactly what we did in our demo. We want

-

-8

-00:00:21,560 --> 00:00:25,310

-to go to that directory and then execute the git init statement,

-

-9

-00:00:25,310 --> 00:00:29,110

-which initializes that directory as a git repository. The second

-

-10

-00:00:29,110 --> 00:00:32,530

-category includes commands that we'll use to modify the content of

-

-11

-00:00:32,530 --> 00:00:35,280

-the repository. We saw that we can use git add

-

-12

-00:00:35,280 --> 00:00:39,190

-to add a specific file or a complete directory to our

-

-13

-00:00:39,190 --> 00:00:41,650

-index. So to the list of files that will be

-

-14

-00:00:41,650 --> 00:00:44,510

-committed, that will be considered in the next commit. Then we

-

-15

-00:00:44,510 --> 00:00:47,620

-can use commit to actually commit the changes that we

-

-16

-00:00:47,620 --> 00:00:50,374

-made to those files to our local repository, and we can

-

-17

-00:00:50,374 --> 00:00:54,030

-also use git move and git rm or git remove

-

-18

-00:00:54,030 --> 00:00:57,420

-to move files around and to remove files. Finally, the

-

-19

-00:00:57,420 --> 00:01:00,270

-third category is the category of commands that we can

-

-20

-00:01:00,270 --> 00:01:04,950

-use to inspect the concrete repository. And this set includes git

-

-21

-00:01:04,950 --> 00:01:06,960

-log, that we can use to see the log of

-

-22

-00:01:06,960 --> 00:01:09,970

-the repository, git status, that can give us important information

-

-23

-00:01:09,970 --> 00:01:12,810

-about the status of the file center repository. Git diff,

-

-24

-00:01:12,810 --> 00:01:15,500

-that we can use to see the differences between for example,

-

-25

-00:01:15,500 --> 00:01:19,160

-our local files. And the remote files. And finally git

-

-26

-00:01:19,160 --> 00:01:23,270

-show, that will show us information about our last commit. What

-

-27

-00:01:23,270 --> 00:01:25,940

-we committed, what were the changes and so on. And again,

-

-28

-00:01:25,940 --> 00:01:29,290

-we saw most or all of these commands in our demo.

-

-29

-00:01:29,290 --> 00:01:31,920

-So let me also remind you of a possible workflow. Which

-

-30

-00:01:31,920 --> 00:01:34,350

-again, we already saw but it's always good to go through

-

-31

-00:01:34,350 --> 00:01:37,670

-it once more. And remember that this is just an example.

-

-32

-00:01:37,670 --> 00:01:40,520

-It's just a possible workflow. You can do many different things,

-

-33

-00:01:40,520 --> 00:01:43,210

-you can have many different workflows with git. This is just

-

-34

-00:01:43,210 --> 00:01:45,980

-up to illustrate some of the things that you can do. So,

-

-35

-00:01:45,980 --> 00:01:49,430

-you might do some local editing. Execute git status to see what

-

-36

-00:01:49,430 --> 00:01:53,020

-files you changed. Then you might run a git diff on the

-

-37

-00:01:53,020 --> 00:01:56,230

-files to see what are these changes. And then you can run

-

-38

-00:01:56,230 --> 00:01:59,460

-git commit -a to commit your changes. And in case you

-

-39

-00:01:59,460 --> 00:02:02,520

-want to specify the commit message right away without having to go

-

-40

-00:02:02,520 --> 00:02:06,040

-through an editor, you can also add the -m parameter and

-

-41

-00:02:06,040 --> 00:02:08,110

-specify the message here on the same line.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt
deleted file mode 100644
index 9afccc9..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/18 - GIT Recap: Remote Repositories - lang_en_vs3.srt
+++ /dev/null
@@ -1,59 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,960

-SImilarly, let's go through some commands that you can run on

-

-2

-00:00:02,960 --> 00:00:07,150

-remote repositories. First command is the command to copy a repository,

-

-3

-00:00:07,150 --> 00:00:10,840

-which is git clone in which you get a remote repository and you make a lot of

-

-4

-00:00:10,840 --> 00:00:14,850

-copy in your working directory. The repository can be specified as a URL.

-

-5

-00:00:14,850 --> 00:00:18,230

-It can be a local file, it can be specified using the HTTP or

-

-6

-00:00:18,230 --> 00:00:21,070

-the SSH protocol, and there's also other ways to do it.

-

-7

-00:00:21,070 --> 00:00:25,300

-This creates a complete local copy of the repository, as it says, and links it

-

-8

-00:00:25,300 --> 00:00:29,030

-to the remote repository, which is what is called the origin. And if you want,

-

-9

-00:00:29,030 --> 00:00:33,400

-you could also actually link to the repository, later. Then the normal way of

-

-10

-00:00:33,400 --> 00:00:37,800

-receiving changes from a repository is to perform a git pull command. And we saw

-

-11

-00:00:37,800 --> 00:00:42,345

-that you can also perform the same operation through two commands, get fetch and

-

-12

-00:00:42,345 --> 00:00:47,210

-git merge. In case you want to inspect the changes before actually merging them,

-

-13

-00:00:47,210 --> 00:00:49,550

-before actually getting them in your local copy. And

-

-14

-00:00:49,550 --> 00:00:52,940

-if you want to send changes that you have in your local repository to

-

-15

-00:00:52,940 --> 00:00:55,680

-a remote repository, you will use the git push command.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt
deleted file mode 100644
index 9dec29b..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_en_vs2.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,160 --> 00:00:03,095

-This is ultimately pretty simple. All you need to do is visit

-

-2

-00:00:03,095 --> 00:00:08,720

-github.com/join and set up a free GitHub account. If you already have a GitHub,

-

-3

-00:00:08,720 --> 00:00:11,870

-account you can sign in using your existing account. If you want to

-

-4

-00:00:11,870 --> 00:00:14,550

-use a separate identity for the class, feel free to set up a second one.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt
deleted file mode 100644
index 6dc6f48..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/19 - GitHub Setup Assignment - lang_pt_vs1.srt
+++ /dev/null
@@ -1,19 +0,0 @@
-1

-00:00:00,160 --> 00:00:03,095

-Na verdade é muito simples. 

-Só tens que ir a

-

-2

-00:00:03,095 --> 00:00:08,720

-github.com/join e criar uma conta grátis

-no GitHub. Se já tiveres uma conta GitHub,

-

-3

-00:00:08,720 --> 00:00:11,870

-podes entrar com a tua conta.

-Se quiseres

-

-4

-00:00:11,870 --> 00:00:14,550

-criar uma diferente para o curso,

-podes criar uma segunda sem problemas.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt
deleted file mode 100644
index 999833f..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/2 - Interview with John Britton - lang_en_vs5.srt
+++ /dev/null
@@ -1,435 +0,0 @@
-1

-00:00:00,170 --> 00:00:02,630

-&gt;&gt; And I thought that the best way to break the ice on version

-

-2

-00:00:02,630 --> 00:00:04,970

-control systems and Git and some other

-

-3

-00:00:04,970 --> 00:00:07,939

-related concepts was to interview John Britton who

-

-4

-00:00:07,939 --> 00:00:11,840

-works with GitHub. So let's go and see what John has to say about

-

-5

-00:00:11,840 --> 00:00:14,120

-Git, about version control systems in general,

-

-6

-00:00:14,120 --> 00:00:17,809

-and about GitHub. John is in Tapei, if I'm not wrong.

-

-7

-00:00:17,809 --> 00:00:18,610

-&gt;&gt; That's correct.

-

-8

-00:00:18,610 --> 00:00:20,320

-&gt;&gt; Okay so we're, you know we couldn't

-

-9

-00:00:20,320 --> 00:00:22,570

-go there so we're interviewing him remotely. And I

-

-10

-00:00:22,570 --> 00:00:25,490

-want, I just want to thank you so much and John for agreeing to talk to us.

-

-11

-00:00:25,490 --> 00:00:27,940

-&gt;&gt; Thank you very much for having me it was my pleasure.

-

-12

-00:00:27,940 --> 00:00:30,560

-&gt;&gt; And, I'm just going to ask, a few

-

-13

-00:00:30,560 --> 00:00:32,938

-general questions because John is an expert on,

-

-14

-00:00:32,938 --> 00:00:36,270

-Git and GitHub. John is a developer and

-

-15

-00:00:36,270 --> 00:00:38,550

-a community builder is active in both the

-

-16

-00:00:38,550 --> 00:00:42,200

-open source and the open education areas. And

-

-17

-00:00:42,200 --> 00:00:44,860

-as an educational liaison we have, is working

-

-18

-00:00:44,860 --> 00:00:47,580

-to improve Computer Science education by bringing the

-

-19

-00:00:47,580 --> 00:00:51,460

-principles of open source into the classroom. And

-

-20

-00:00:51,460 --> 00:00:53,160

-I'm going to start with an general question,

-

-21

-00:00:53,160 --> 00:00:55,320

-which is what is a version control system?

-

-22

-00:00:55,320 --> 00:00:57,960

-&gt;&gt; So, a version control system is

-

-23

-00:00:57,960 --> 00:01:00,360

-a tool that software developers use. Anybody

-

-24

-00:01:00,360 --> 00:01:02,560

-who's doing you know, working with digital

-

-25

-00:01:02,560 --> 00:01:06,540

-assets, digital projects can also use for

-

-26

-00:01:06,540 --> 00:01:11,320

-keeping track of, you know, revisions of your project, and when I say revisions, I

-

-27

-00:01:11,320 --> 00:01:16,850

-mean essentially snapshots of your project over time. So you can imagine doing

-

-28

-00:01:16,850 --> 00:01:19,720

-some work and then every so often, be it, every couple of

-

-29

-00:01:19,720 --> 00:01:23,799

-hours, every couple of days, saving a permanent snapshot of your project.

-

-30

-00:01:24,880 --> 00:01:26,650

-&gt;&gt; Why is this useful? I understand that

-

-31

-00:01:26,650 --> 00:01:28,720

-it is nice to take a snapshot of your

-

-32

-00:01:28,720 --> 00:01:30,070

-project, but what did you do with the

-

-33

-00:01:30,070 --> 00:01:33,420

-snapshot afterwards? I think the most immediately obvious benefit

-

-34

-00:01:33,420 --> 00:01:36,340

-to having snapshots of your project to keeping

-

-35

-00:01:36,340 --> 00:01:38,280

-revisions is that you can go back. If you

-

-36

-00:01:38,280 --> 00:01:40,190

-have ever worked on a project and got to

-

-37

-00:01:40,190 --> 00:01:41,940

-a point where you solved a bunch of your

-

-38

-00:01:41,940 --> 00:01:45,330

-problems, and there is just one more step to do. And

-

-39

-00:01:45,330 --> 00:01:47,640

-you start working on trying to solve that last step, and

-

-40

-00:01:47,640 --> 00:01:51,350

-you break things, you make it worse then it was an

-

-41

-00:01:51,350 --> 00:01:54,420

-hour ago. At that point its easier to just go back

-

-42

-00:01:54,420 --> 00:01:56,780

-to what you had then trying to figure out what you

-

-43

-00:01:56,780 --> 00:01:59,320

-broke. So you can always go back in time, and the

-

-44

-00:01:59,320 --> 00:02:02,660

-other big one is being able to collaborate with multiple people,

-

-45

-00:02:02,660 --> 00:02:07,450

-so its pretty seldom these days that you. Work on a production

-

-46

-00:02:07,450 --> 00:02:09,860

-totally on your own. It's most common to work in, you

-

-47

-00:02:09,860 --> 00:02:12,993

-know, in teams and small groups. And so, using a revision

-

-48

-00:02:12,993 --> 00:02:16,340

-control system allows you to collaborate with other people. And make

-

-49

-00:02:16,340 --> 00:02:19,060

-sure that you don't step on each other's toes as you're working.

-

-50

-00:02:19,060 --> 00:02:21,310

-&gt;&gt; Alright, that's great, because those are exactly some of the

-

-51

-00:02:21,310 --> 00:02:25,250

-topics that we're going to cover in the lesson. And so since we're

-

-52

-00:02:25,250 --> 00:02:28,470

-going to talk about the specifics of version control system which is

-

-53

-00:02:28,470 --> 00:02:32,660

-Git and you're definitely an expert in, in Git. So what would

-

-54

-00:02:32,660 --> 00:02:36,510

-you say is specifically special about Git? What characterizes it

-

-55

-00:02:36,510 --> 00:02:39,940

-and how does it compare to other version control systems.

-

-56

-00:02:39,940 --> 00:02:43,140

-&gt;&gt; So if any of you have used version control systems before, you

-

-57

-00:02:43,140 --> 00:02:47,850

-may have heard of something like subversion, CVS, or maybe a commercial solution

-

-58

-00:02:47,850 --> 00:02:53,550

-like ProForce. I think the main important characteristics of Git are first that

-

-59

-00:02:53,550 --> 00:02:56,050

-it's open source. And the second,

-

-60

-00:02:56,050 --> 00:02:59,030

-that it's a distributed version control system.

-

-61

-00:02:59,030 --> 00:03:00,430

-So what that means, the distributed version

-

-62

-00:03:00,430 --> 00:03:04,260

-control system is essentially a system for tracking

-

-63

-00:03:04,260 --> 00:03:07,700

-revisions of your software that doesn't have any

-

-64

-00:03:07,700 --> 00:03:11,730

-central repository. So the biggest characteristic is that

-

-65

-00:03:11,730 --> 00:03:14,520

-I can do my work and you can also work on the same project at

-

-66

-00:03:14,520 --> 00:03:16,900

-the same time without communicating with each other

-

-67

-00:03:16,900 --> 00:03:19,650

-and without communicating to a central system.

-

-68

-00:03:19,650 --> 00:03:24,190

-&gt;&gt; Okay, great. And so now that we saw what Git is, what is

-

-69

-00:03:24,190 --> 00:03:26,050

-GitHub and how does it fit into

-

-70

-00:03:26,050 --> 00:03:29,320

-this picture of the distributed, revision control system?

-

-71

-00:03:29,320 --> 00:03:34,800

-&gt;&gt; So GitHub is, the world's largest code host, and we essentially have a

-

-72

-00:03:34,800 --> 00:03:36,940

-website where you can collaborate with people

-

-73

-00:03:36,940 --> 00:03:39,950

-when you're writing code. There's two ways you

-

-74

-00:03:39,950 --> 00:03:43,650

-can use GitHub. You can use it publicly for open source and you can use

-

-75

-00:03:43,650 --> 00:03:49,660

-it in private within your team, or your company, or within your class. And, Git

-

-76

-00:03:49,660 --> 00:03:53,960

-Hub started out just as a way to host your Git repositories. But it's

-

-77

-00:03:53,960 --> 00:03:56,000

-actually grown into quite a bit more. It's

-

-78

-00:03:56,000 --> 00:03:59,820

-an entire collaboration system around your code.

-

-79

-00:03:59,820 --> 00:04:00,580

-&gt;&gt; How many users do you have?

-

-80

-00:04:00,580 --> 00:04:03,620

-&gt;&gt; I would say that we're approaching five million.

-

-81

-00:04:03,620 --> 00:04:05,570

-I don't know the exact number. We're definitely more

-

-82

-00:04:05,570 --> 00:04:08,080

-than four million right now. But yeah, I'd say

-

-83

-00:04:08,080 --> 00:04:10,330

-somewhere, somewhere close to between four and five million.

-

-84

-00:04:10,330 --> 00:04:14,750

-&gt;&gt; So that's a lot space I'd guess. Terabytes of disk

-

-85

-00:04:14,750 --> 00:04:15,840

-space, I would imagine.

-

-86

-00:04:15,840 --> 00:04:19,170

-&gt;&gt; There are a lot of GIT repositories on, on our servers.

-

-87

-00:04:19,170 --> 00:04:21,180

-&gt;&gt; Something else you want to say? I

-

-88

-00:04:21,180 --> 00:04:23,920

-guess that the when taking about GitHub there's one

-

-89

-00:04:23,920 --> 00:04:26,110

-thing that you kind of can't leave out and

-

-90

-00:04:26,110 --> 00:04:28,670

-that's that's a feature that's called a pull request.

-

-91

-00:04:28,670 --> 00:04:31,090

-So when you're using GitHub, you can share

-

-92

-00:04:31,090 --> 00:04:34,940

-your Git repository, do some work, and actually do

-

-93

-00:04:34,940 --> 00:04:37,880

-do a code review. Of proposed changes which

-

-94

-00:04:37,880 --> 00:04:39,770

-is what we call a pull request on github.com.

-

-95

-00:04:39,770 --> 00:04:42,790

-Essentially what it lets you do is have a discussion

-

-96

-00:04:42,790 --> 00:04:46,320

-about a set of proposed changes and leave feedback in

-

-97

-00:04:46,320 --> 00:04:48,870

-line with the code. You could say for example, this

-

-98

-00:04:48,870 --> 00:04:51,670

-method needs to be re-factored or I think I found if

-

-99

-00:04:51,670 --> 00:04:54,830

-off by one error here, just different kinds of feedback

-

-100

-00:04:54,830 --> 00:04:59,120

-so that before you totally integrate some proposed changes. You have,

-

-101

-00:04:59,120 --> 00:05:01,180

-kind of a conversation about what your code. And I

-

-102

-00:05:01,180 --> 00:05:03,050

-think that's really valuable when you are working in a team.

-

-103

-00:05:03,050 --> 00:05:05,510

-&gt;&gt; Thank you, John, that was very informative and

-

-104

-00:05:05,510 --> 00:05:07,440

-thanks again for taking the time to talk to us.

-

-105

-00:05:07,440 --> 00:05:10,160

-&gt;&gt; No problem, thanks for having me. I'll talk to you soon.

-

-106

-00:05:10,160 --> 00:05:13,990

-&gt;&gt; Let's thank again John for enlightening us

-

-107

-00:05:13,990 --> 00:05:17,350

-on some aspects of version control systems, Git and

-

-108

-00:05:17,350 --> 00:05:19,410

-GitHub. And now, let's go over some of the

-

-109

-00:05:19,410 --> 00:05:21,650

-topics that we discussed with John to recap them.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt
deleted file mode 100644
index be0515b..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/3 - Version Control System Introduction - lang_en_vs5.srt
+++ /dev/null
@@ -1,207 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,080

-So first of all, what is a version

-

-2

-00:00:02,080 --> 00:00:05,550

-control system? A version control system or VCS,

-

-3

-00:00:05,550 --> 00:00:07,670

-is a system that allows you to manage

-

-4

-00:00:07,670 --> 00:00:11,180

-multiple revisions of the same unit of information. For

-

-5

-00:00:11,180 --> 00:00:14,330

-example of documents, of source files or any

-

-6

-00:00:14,330 --> 00:00:17,380

-other item of that sort. And as the graphical

-

-7

-00:00:17,380 --> 00:00:21,240

-depiction shows, a VCS allows a multiple actors.

-

-8

-00:00:21,240 --> 00:00:25,020

-Here we have four, to cooperate and share files.

-

-9

-00:00:25,020 --> 00:00:26,980

-Now, let's drill into this concept in a little

-

-10

-00:00:26,980 --> 00:00:29,720

-more detail. And let's do that by discussing why

-

-11

-00:00:29,720 --> 00:00:32,870

-is VCS useful, especially in the context of software

-

-12

-00:00:32,870 --> 00:00:35,790

-engineering and of software development. So first of all,

-

-13

-00:00:35,790 --> 00:00:39,570

-using a version control system enforces discipline, because it

-

-14

-00:00:39,570 --> 00:00:43,030

-manages the process by which the control of items

-

-15

-00:00:43,030 --> 00:00:46,720

-passes from one person to another. Another important aspect

-

-16

-00:00:46,720 --> 00:00:51,170

-of VCS is that it allows you for archiving versions.

-

-17

-00:00:51,170 --> 00:00:54,330

-So you can store subsequent versions of source controlled

-

-18

-00:00:54,330 --> 00:00:57,450

-items into a VCS. And not only you can

-

-19

-00:00:57,450 --> 00:01:00,450

-store versions, you can also maintain a lot of

-

-20

-00:01:00,450 --> 00:01:03,480

-interesting and important historical information

-

-21

-00:01:03,480 --> 00:01:05,810

-about these versions. For example,

-

-22

-00:01:05,810 --> 00:01:08,070

-a VCL will store information such as, who is

-

-23

-00:01:08,070 --> 00:01:11,270

-the author for this specific version stored in the system.

-

-24

-00:01:11,270 --> 00:01:13,820

-Or, for another example, on what day and what

-

-25

-00:01:13,820 --> 00:01:16,260

-time that version was stored. And a lot of other

-

-26

-00:01:16,260 --> 00:01:19,240

-interesting information about the specific version of the

-

-27

-00:01:19,240 --> 00:01:21,600

-item. Information that you can then retrieve and for

-

-28

-00:01:21,600 --> 00:01:25,040

-example, use to compare versions. Obviously, the fact of

-

-29

-00:01:25,040 --> 00:01:27,970

-having a central repository in which all these items

-

-30

-00:01:27,970 --> 00:01:31,350

-are stored enables collaboration, so people can more easily

-

-31

-00:01:31,350 --> 00:01:35,510

-share data, share files, share documents through the use

-

-32

-00:01:35,510 --> 00:01:37,950

-of VCS. And I'm sure that you all had

-

-33

-00:01:37,950 --> 00:01:41,320

-the experience of deleting a file by mistake or

-

-34

-00:01:41,320 --> 00:01:43,860

-modifying a file in the wrong way, or in the

-

-35

-00:01:43,860 --> 00:01:47,830

-most common case of changing something in your code for instance.

-

-36

-00:01:47,830 --> 00:01:50,490

-And breaking something and not being able to go back

-

-37

-00:01:50,490 --> 00:01:53,630

-to a version that was working. Not remembering, for example, what

-

-38

-00:01:53,630 --> 00:01:56,130

-is that you changed that broke the code. In all

-

-39

-00:01:56,130 --> 00:01:59,850

-these cases a version control system can be extremely useful because

-

-40

-00:01:59,850 --> 00:02:03,330

-it will allow you to recover from this accidental deletions

-

-41

-00:02:03,330 --> 00:02:06,690

-or edits. And for example, to go back of yesterdays version

-

-42

-00:02:06,690 --> 00:02:09,949

-that was working perfectly, and also to compare, for example, yesterdays

-

-43

-00:02:09,949 --> 00:02:12,920

-version with today version and see what is that you changed.

-

-44

-00:02:12,920 --> 00:02:16,000

-Finally, a version control system will normally also allow you to

-

-45

-00:02:16,000 --> 00:02:20,460

-conserve and save disk space on both the source control client

-

-46

-00:02:20,460 --> 00:02:23,880

-and on the server. Why? Well, for instance because it's centralizing

-

-47

-00:02:23,880 --> 00:02:26,570

-the management of the version. So instead of having many copies

-

-48

-00:02:26,570 --> 00:02:29,480

-spread around, you'll have only one central point where these copies

-

-49

-00:02:29,480 --> 00:02:32,240

-are stored or a few points where these copies are stored.

-

-50

-00:02:32,240 --> 00:02:34,330

-In addition, version control system often

-

-51

-00:02:34,330 --> 00:02:37,470

-uses efficient algorithms to store these changes.

-

-52

-00:02:37,470 --> 00:02:41,310

-And therefore, you can keep many versions without taking up too much space.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt
deleted file mode 100644
index 26d9c55..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/4 - VCS Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,430

-Now before we continue, and we look at more details

-

-2

-00:00:02,430 --> 00:00:04,400

-of version control systems, I want to ask you a

-

-3

-00:00:04,400 --> 00:00:07,230

-quick question about VCS. I want to know whether you

-

-4

-00:00:07,230 --> 00:00:10,190

-have used a version control system before, and if so,

-

-5

-00:00:10,190 --> 00:00:12,090

-which one or which ones. I'm going to list in

-

-6

-00:00:12,090 --> 00:00:15,260

-here some of the most commonly used version control systems,

-

-7

-00:00:15,260 --> 00:00:18,840

-like CVS, Subversion, GIT, and I'm also allowing you to

-

-8

-00:00:18,840 --> 00:00:22,640

-specify other VCS in case you have used different ones.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt
deleted file mode 100644
index 1a380a5..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/5 - VCS Quiz Solution - lang_en_vs7.srt
+++ /dev/null
@@ -1,11 +0,0 @@
-1

-00:00:00,130 --> 00:00:03,030

-And of course there's no right answer for this. I just wanted to collect some

-

-2

-00:00:03,030 --> 00:00:05,020

-statistics. To see what kind of previous

-

-3

-00:00:05,020 --> 00:00:07,100

-experience you have with this kind of systems.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt
deleted file mode 100644
index 5159d9b..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/6 - Essential Actions - lang_en_vs5.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,220

-What I want to do next, is to look at how

-

-2

-00:00:02,220 --> 00:00:05,780

-version control systems actually work. We saw what they are. We

-

-3

-00:00:05,780 --> 00:00:08,130

-saw why they are useful. But how do they actually work?

-

-4

-00:00:08,130 --> 00:00:11,460

-And we're going to do that by starting from some essential

-

-5

-00:00:11,460 --> 00:00:15,400

-actions that version control systems perform. The first one is the

-

-6

-00:00:15,400 --> 00:00:18,920

-addition of files. So, when you use a version control system,

-

-7

-00:00:18,920 --> 00:00:22,280

-you can add a file to the repository. And at that

-

-8

-00:00:22,280 --> 00:00:25,400

-point the file will be accessible to other people who have access

-

-9

-00:00:25,400 --> 00:00:28,640

-to the repository. And now the fundamental action is commit.

-

-10

-00:00:28,640 --> 00:00:31,230

-When you change a file, a file that is already in

-

-11

-00:00:31,230 --> 00:00:33,610

-the repository, when you make some local changes to a

-

-12

-00:00:33,610 --> 00:00:36,430

-file that is already in the repository, you want then to

-

-13

-00:00:36,430 --> 00:00:39,460

-commit your changes to the central repository, so they can

-

-14

-00:00:39,460 --> 00:00:43,990

-become visible to all of the other users on the repository. Finally,

-

-15

-00:00:43,990 --> 00:00:47,770

-another fundamental action is the action of updating a file. If

-

-16

-00:00:47,770 --> 00:00:50,650

-we have a repository and someone else can modify the files

-

-17

-00:00:50,650 --> 00:00:52,800

-in the repository, I want to be able to get

-

-18

-00:00:52,800 --> 00:00:55,550

-the changes that other people made to the files in the

-

-19

-00:00:55,550 --> 00:00:58,980

-repository. And these are just three of the basic actions, but

-

-20

-00:00:58,980 --> 00:01:01,870

-there are many, many more. And we'll see several of those.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt
deleted file mode 100644
index c2f58df..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/7 - Example Workflow - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,830

-Before looking at additional actions, though, I would like to

-

-2

-00:00:02,830 --> 00:00:06,770

-see what is the basic workflow in a version control system

-

-3

-00:00:06,770 --> 00:00:09,370

-using the three actions that we just saw. And to

-

-4

-00:00:09,370 --> 00:00:11,760

-do that I'm going to use two of our friends, Brad

-

-5

-00:00:11,760 --> 00:00:14,590

-and Janet. So we have Janet here, Brad, and a

-

-6

-00:00:14,590 --> 00:00:18,440

-VCS that they are using. Now imagine that Janet creates a

-

-7

-00:00:18,440 --> 00:00:23,020

-file called foo.txt and puts some information in the file.

-

-8

-00:00:23,020 --> 00:00:25,250

-At that point she might want to add the file to

-

-9

-00:00:25,250 --> 00:00:28,340

-the repository and to commit it so that her changes

-

-10

-00:00:28,340 --> 00:00:31,210

-and the file get to the central repository. And when she

-

-11

-00:00:31,210 --> 00:00:33,900

-adds and commit, that's exactly what will happen, in foo

-

-12

-00:00:33,900 --> 00:00:36,870

-will be come available here, and will be accessible to the

-

-13

-00:00:36,870 --> 00:00:40,330

-other users. In this case it'll be accessible to Brad.

-

-14

-00:00:40,330 --> 00:00:44,190

-If Brett were to run an update command, what will happen

-

-15

-00:00:44,190 --> 00:00:47,800

-is that the file foo.txt will be copied on the local

-

-16

-00:00:47,800 --> 00:00:50,460

-work space of Brad and Brad will be able to access

-

-17

-00:00:50,460 --> 00:00:52,980

-the file. At this point Brad might want to modify

-

-18

-00:00:52,980 --> 00:00:57,110

-the file, for example add something to this existing file.

-

-19

-00:00:57,110 --> 00:00:59,410

-After doing that, he also may want to share the

-

-20

-00:00:59,410 --> 00:01:02,900

-updated file with Janet. To do that, he will commit the

-

-21

-00:01:02,900 --> 00:01:06,070

-file and the result will be exactly the same of

-

-22

-00:01:06,070 --> 00:01:09,470

-when Janet committed her file. That the updated file will

-

-23

-00:01:09,470 --> 00:01:11,890

-be sent to the repository and the repository will store

-

-24

-00:01:11,890 --> 00:01:15,570

-that information and make it available for other users. So now,

-

-25

-00:01:15,570 --> 00:01:18,290

-if Janet performs an update, she will get the

-

-26

-00:01:18,290 --> 00:01:21,860

-new version of foo.txt with the additional information that was

-

-27

-00:01:21,860 --> 00:01:24,950

-added by Brad. And we will see all of this

-

-28

-00:01:24,950 --> 00:01:27,350

-in action in our next demo in a few minutes.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/8 - "Don'ts" in VCS - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/8 - "Don'ts" in VCS - lang_en_vs5.srt
deleted file mode 100644
index f5d27fb..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/8 - "Don'ts" in VCS - lang_en_vs5.srt
+++ /dev/null
@@ -1,175 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,020

-Before getting to the demo, I want to say a few

-

-2

-00:00:02,020 --> 00:00:06,550

-more things. In particular, I discuss the main don'ts in VCS. So,

-

-3

-00:00:06,550 --> 00:00:09,110

-what are some things that you don't want to do, and

-

-4

-00:00:09,110 --> 00:00:12,687

-you should not do, when you're using a version control system? And

-

-5

-00:00:12,687 --> 00:00:15,382

-I'm going to mention two, in particular, because these are two

-

-6

-00:00:15,382 --> 00:00:18,028

-that I witnessed several times when I was teaching this class and

-

-7

-00:00:18,028 --> 00:00:21,820

-also when collaborating with other people. So, there are two kinds

-

-8

-00:00:21,820 --> 00:00:25,460

-of resources that you don't want to add to a VCS normally.

-

-9

-00:00:25,460 --> 00:00:29,070

-One is derived files. For example an executable that is

-

-10

-00:00:29,070 --> 00:00:31,930

-derived by compiling a set of source files, where the

-

-11

-00:00:31,930 --> 00:00:34,480

-source files all already in the repository. At that point,

-

-12

-00:00:34,480 --> 00:00:37,680

-there is no reason to also add the executable file in

-

-13

-00:00:37,680 --> 00:00:41,150

-the repository. So in general, any executable file should not

-

-14

-00:00:41,150 --> 00:00:44,570

-be added to repository. The second class of files that I

-

-15

-00:00:44,570 --> 00:00:47,760

-want to mention is these bulky binary files. If you

-

-16

-00:00:47,760 --> 00:00:50,600

-have one such file, it is normally not a good idea

-

-17

-00:00:50,600 --> 00:00:53,430

-to store them under a version control system, to store them

-

-18

-00:00:53,430 --> 00:00:56,670

-in the repository. There might be exceptions to these rules, but in

-

-19

-00:00:56,670 --> 00:00:59,070

-general, these are the kind of files that you want to

-

-20

-00:00:59,070 --> 00:01:02,540

-keep local, and you don't want to put in the VCS repository.

-

-21

-00:01:02,540 --> 00:01:06,500

-Another typical mistake, and that happens all the time, especially to

-

-22

-00:01:06,500 --> 00:01:10,650

-novice users of VCS. Is that you get your file from VCS

-

-23

-00:01:10,650 --> 00:01:13,120

-and so you get your local copy of the file that

-

-24

-00:01:13,120 --> 00:01:16,270

-was in the VCS, and you want to make some changes, and

-

-25

-00:01:16,270 --> 00:01:20,090

-before making the changes you decided, no, no let me actually save

-

-26

-00:01:20,090 --> 00:01:22,410

-a local copy of the file, and I'm going to work on

-

-27

-00:01:22,410 --> 00:01:24,950

-that one. Or let me save it before I modify it, or

-

-28

-00:01:24,950 --> 00:01:28,350

-let take a snap shot of a whole tree of files. Just because

-

-29

-00:01:28,350 --> 00:01:30,830

-I don't really trust the fact that VCS is going to be

-

-30

-00:01:30,830 --> 00:01:33,170

-able to help and is going to be able to recover from possible

-

-31

-00:01:33,170 --> 00:01:36,980

-mistakes. Never ever do that. I have seen that done many times,

-

-32

-00:01:36,980 --> 00:01:41,570

-and it always leads to disasters. First of all it is useless, and

-

-33

-00:01:41,570 --> 00:01:44,000

-second it's risky. Because then what happens is that at

-

-34

-00:01:44,000 --> 00:01:46,610

-the time in which you have to turn in your assignment,

-

-35

-00:01:46,610 --> 00:01:48,330

-in the case you are doing an assignment, but even in

-

-36

-00:01:48,330 --> 00:01:50,740

-more serious situation, when you have to turn in your code,

-

-37

-00:01:50,740 --> 00:01:54,620

-for example to your colleagues. You always end up being confused

-

-38

-00:01:54,620 --> 00:01:59,010

-about which is the version that you're really using. So absolutely

-

-39

-00:01:59,010 --> 00:02:03,262

-no local copies. No local redundancy when you're using a version

-

-40

-00:02:03,262 --> 00:02:06,798

-control system. Trust the version control system, and trust the version

-

-41

-00:02:06,798 --> 00:02:09,280

-control system to be able to manage your versions. You

-

-42

-00:02:09,280 --> 00:02:13,350

-can always save it, commit it, retrieve previous versions, and you'll

-

-43

-00:02:13,350 --> 00:02:15,530

-be able to do everything that you can do by copying

-

-44

-00:02:15,530 --> 00:02:19,240

-the file yourself, and even more. So again, try the VCS.

diff --git a/usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt b/usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt
deleted file mode 100644
index 3c6eba4..0000000
--- a/usth/ICT2.7/P1L4 Version Control Subtitles/9 - Two Main Types of VCS - lang_en_vs5.srt
+++ /dev/null
@@ -1,163 +0,0 @@
-1

-00:00:00,160 --> 00:00:01,970

-Something else I want to mention is that there

-

-2

-00:00:01,970 --> 00:00:05,460

-are many different version control systems but we can classify

-

-3

-00:00:05,460 --> 00:00:09,250

-them normally in two main types: centralized VCS's and

-

-4

-00:00:09,250 --> 00:00:13,230

-decentralized VCS's. So what is the difference between these two?

-

-5

-00:00:13,230 --> 00:00:16,750

-Let's use again our friends Janet and Brett.

-

-6

-00:00:16,750 --> 00:00:19,510

-In the case of a centralized version control system

-

-7

-00:00:19,510 --> 00:00:22,290

-there is a single centralized, as the name says,

-

-8

-00:00:22,290 --> 00:00:25,230

-repository. On which they are commiting their files. So when

-

-9

-00:00:25,230 --> 00:00:27,290

-Janet commits a file. The file will go from

-

-10

-00:00:27,290 --> 00:00:30,390

-her local working directory to the repository, and the same

-

-11

-00:00:30,390 --> 00:00:33,520

-will happen to Brett. The decentralized system is a little

-

-12

-00:00:33,520 --> 00:00:37,310

-more interesting because in this case, they will both have

-

-13

-00:00:37,310 --> 00:00:40,790

-sort of a local repository in which they can commit

-

-14

-00:00:40,790 --> 00:00:43,970

-their changes. So they can commit changes without the other

-

-15

-00:00:43,970 --> 00:00:47,940

-users of the VCS being able to see these changes.

-

-16

-00:00:47,940 --> 00:00:50,300

-And when they're happy with the version. And when they're

-

-17

-00:00:50,300 --> 00:00:53,900

-ready to release the version, they can push it to a central

-

-18

-00:00:53,900 --> 00:00:56,840

-repository. And at that point, it will become available to the other

-

-19

-00:00:56,840 --> 00:01:01,100

-users of the repository. To the other users of the VCS. There

-

-20

-00:01:01,100 --> 00:01:02,870

-are several advantages in a distributive

-

-21

-00:01:02,870 --> 00:01:04,300

-system. I'm just going to mention a few,

-

-22

-00:01:04,300 --> 00:01:07,520

-because there are really many. One is the fact of having this

-

-23

-00:01:07,520 --> 00:01:10,570

-local version. If you used VCS before, I'm sure you've been in

-

-24

-00:01:10,570 --> 00:01:13,280

-the situation in which you want to kind of take a snapshot

-

-25

-00:01:13,280 --> 00:01:15,820

-of what you have. But you don't want that snapshot to be available

-

-26

-00:01:15,820 --> 00:01:18,200

-to the other users. Because it's still not ready to be

-

-27

-00:01:18,200 --> 00:01:21,240

-released, to be looked up. If you're using a centralized system,

-

-28

-00:01:21,240 --> 00:01:23,140

-there's really no way you can do that, unless you make

-

-29

-00:01:23,140 --> 00:01:25,150

-a local copy, which is something we said you don't want

-

-30

-00:01:25,150 --> 00:01:28,625

-to do. With a distributor, with a decentralized VCS you can

-

-31

-00:01:28,625 --> 00:01:32,444

-commit your local changes here, in your local repository, and you

-

-32

-00:01:32,444 --> 00:01:37,030

-can push them to the central repository only when you're ready.

-

-33

-00:01:37,030 --> 00:01:40,870

-Another big advantage, is that you can use multiple remote repository.

-

-34

-00:01:40,870 --> 00:01:43,210

-In fact, centralized is not the right name for this

-

-35

-00:01:43,210 --> 00:01:45,980

-one. This is just a remote repository, and I can have

-

-36

-00:01:45,980 --> 00:01:48,910

-more than one. For example, Brad might want to push

-

-37

-00:01:48,910 --> 00:01:52,150

-to another remote repository. As well. For instance, this could be

-

-38

-00:01:52,150 --> 00:01:55,940

-a repository where the files are accessible for wider distribution.

-

-39

-00:01:55,940 --> 00:01:59,620

-Imagine developing a software system in which a team is sharing

-

-40

-00:01:59,620 --> 00:02:02,930

-internal versions, and then only some of these versions are actually

-

-41

-00:02:02,930 --> 00:02:06,080

-pushed to the repository that is seeable to the whole world.

diff --git a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/1 - Gathering Requirements - lang_en_vs3.srt b/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/1 - Gathering Requirements - lang_en_vs3.srt
deleted file mode 100644
index c01c859..0000000
--- a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/1 - Gathering Requirements - lang_en_vs3.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,270 --> 00:00:02,969

-Gathering requirements is one of the most difficult tasks a software

-

-2

-00:00:02,969 --> 00:00:07,010

-engineer faces. In industry, you may gather requirements from end users,

-

-3

-00:00:07,010 --> 00:00:09,580

-external clients, or from co-workers in other areas of your own

-

-4

-00:00:09,580 --> 00:00:14,320

-company. Occasionally, you may receive a well documented set of requirements.

-

-5

-00:00:14,320 --> 00:00:16,970

-However, in most cases, you will need to glean the requirements

-

-6

-00:00:16,970 --> 00:00:20,230

-from conversations with the prospective clients, and distill them down into

-

-7

-00:00:20,230 --> 00:00:23,150

-something actionable on your own. Suppose a teacher came to you

-

-8

-00:00:23,150 --> 00:00:25,310

-with a request for a piece of software their students could

-

-9

-00:00:25,310 --> 00:00:28,500

-use to find out the average length of the sentences in

-

-10

-00:00:28,500 --> 00:00:31,390

-their essays. What questions come into mind to help you figure

-

-11

-00:00:31,390 --> 00:00:34,620

-out the full requirements for this project. Write down a list

-

-12

-00:00:34,620 --> 00:00:37,630

-of at least ten questions that might help you determine them.

-

-13

-00:00:37,630 --> 00:00:40,240

-Please take the time to do this before moving on. There's

-

-14

-00:00:40,240 --> 00:00:42,670

-no penalty for looking ahead, but if you skip this exercise

-

-15

-00:00:42,670 --> 00:00:44,920

-you'll cheat yourself out of the benefits of brainstorming and getting

-

-16

-00:00:44,920 --> 00:00:48,190

-your mind around the project before being bombarded by more information.

diff --git a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/2 - Choosing Good Questions - lang_en_vs3.srt b/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/2 - Choosing Good Questions - lang_en_vs3.srt
deleted file mode 100644
index a834b21..0000000
--- a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/2 - Choosing Good Questions - lang_en_vs3.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,150 --> 00:00:03,400

-Now that you've written some of your own questions, consider the following

-

-2

-00:00:03,400 --> 00:00:07,120

-three. Which is the most likely to be useful for determining the detailed

-

-3

-00:00:07,120 --> 00:00:11,730

-requirements? Maybe, what OSes should it run on? Or maybe, how will the

-

-4

-00:00:11,730 --> 00:00:16,210

-user specify input? Or finally, how many lines of code should it take?

diff --git a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/3 - Choosing Good Questions Solution - lang_en_vs3.srt b/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/3 - Choosing Good Questions Solution - lang_en_vs3.srt
deleted file mode 100644
index 3c29d6b..0000000
--- a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/3 - Choosing Good Questions Solution - lang_en_vs3.srt
+++ /dev/null
@@ -1,55 +0,0 @@
-1

-00:00:00,450 --> 00:00:03,260

-The last question is almost never a reasonable one. For one

-

-2

-00:00:03,260 --> 00:00:05,660

-thing, the client should not need to know or care about

-

-3

-00:00:05,660 --> 00:00:08,412

-how many lines of code make up the program's source code.

-

-4

-00:00:08,412 --> 00:00:09,910

-In forming requirements, you should avoid

-

-5

-00:00:09,910 --> 00:00:11,940

-implementation specific questions that do not

-

-6

-00:00:11,940 --> 00:00:15,290

-directly interface with the user. The first question is very relevant

-

-7

-00:00:15,290 --> 00:00:18,830

-in some situations. For example, a graphic sentence with video game or

-

-8

-00:00:18,830 --> 00:00:21,630

-performance is key. However, you should not write any operating system

-

-9

-00:00:21,630 --> 00:00:25,620

-specific code unless absolutely needed, and should strive to make your code

-

-10

-00:00:25,620 --> 00:00:28,070

-platform independent whenever possible. The

-

-11

-00:00:28,070 --> 00:00:30,990

-second question, however, is very relevant.

-

-12

-00:00:30,990 --> 00:00:32,870

-Now that you've thought a bit about what you might ask of

-

-13

-00:00:32,870 --> 00:00:35,810

-the client requesting this program, let's watch Alvin, one of Udasea's

-

-14

-00:00:35,810 --> 00:00:39,850

-engineers, asking his own questions. He'll be speaking with Lauren, the client.

diff --git a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/4 - Requirements Interview - lang_en_vs3.srt b/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/4 - Requirements Interview - lang_en_vs3.srt
deleted file mode 100644
index 74a0b79..0000000
--- a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/4 - Requirements Interview - lang_en_vs3.srt
+++ /dev/null
@@ -1,323 +0,0 @@
-1

-00:00:00,430 --> 00:00:01,050

-Hi, I'm Lauren.

-

-2

-00:00:01,050 --> 00:00:01,990

-&gt;&gt; Hi, I'm Alvin.

-

-3

-00:00:01,990 --> 00:00:06,470

-&gt;&gt; I'm an instructor at a university nearby and I've been noticing that when

-

-4

-00:00:06,470 --> 00:00:09,700

-my students write their essays, they have

-

-5

-00:00:09,700 --> 00:00:13,100

-very long, very wordy sentences and I would

-

-6

-00:00:13,100 --> 00:00:17,600

-like to develop some kind of tool that they can use to keep track of

-

-7

-00:00:17,600 --> 00:00:20,440

-this and maybe perfect their writing style.

-

-8

-00:00:20,440 --> 00:00:21,410

-Do you think that's something you could do?

-

-9

-00:00:21,410 --> 00:00:25,850

-&gt;&gt; I think so. Let's start by helping me get acquainted with the students

-

-10

-00:00:25,850 --> 00:00:29,620

-in the class. So how many students do we have in this class typically?

-

-11

-00:00:29,620 --> 00:00:34,000

-&gt;&gt; Usually about 45 per unit, but I can have up to six units a semester.

-

-12

-00:00:34,000 --> 00:00:36,420

-&gt;&gt; 45 students, and six sections per

-

-13

-00:00:36,420 --> 00:00:39,220

-semester. That's a farily reasonable size. So,

-

-14

-00:00:39,220 --> 00:00:42,790

-do you know anything about what the students are using as far as computers go?

-

-15

-00:00:42,790 --> 00:00:46,640

-&gt;&gt; I don't know what kind of computers they're using. And they

-

-16

-00:00:46,640 --> 00:00:50,960

-could be, I don't know, anywhere from having no tech experience to

-

-17

-00:00:50,960 --> 00:00:52,200

-being pretty proficient.

-

-18

-00:00:52,200 --> 00:00:54,930

-&gt;&gt; Do you know anything about how

-

-19

-00:00:54,930 --> 00:00:57,350

-familiar the students are with computers in general?

-

-20

-00:00:57,350 --> 00:00:59,540

-&gt;&gt; I'm sure we have some people on the low end that have

-

-21

-00:00:59,540 --> 00:01:01,430

-never done any type of programming, and

-

-22

-00:01:01,430 --> 00:01:03,680

-then some people who are pretty self-sufficient.

-

-23

-00:01:03,680 --> 00:01:07,210

-&gt;&gt; Okay, and I guess my last question related to

-

-24

-00:01:07,210 --> 00:01:10,170

-the students is, what is the students actually submitting to you.

-

-25

-00:01:10,170 --> 00:01:14,080

-&gt;&gt; They've been sending just raw text files via email to me.

-

-26

-00:01:14,080 --> 00:01:16,660

-&gt;&gt; So from the sounds of things

-

-27

-00:01:16,660 --> 00:01:19,140

-we have a fairly broad, I guess base

-

-28

-00:01:19,140 --> 00:01:23,100

-of students to work with, both in technical proficiency

-

-29

-00:01:23,100 --> 00:01:27,180

-as well as their operating system environments potentially.

-

-30

-00:01:27,180 --> 00:01:29,420

-So I think what we'll probably do to start

-

-31

-00:01:29,420 --> 00:01:33,270

-off with is make a command line, Java

-

-32

-00:01:33,270 --> 00:01:36,760

-based tool. That the students can run and we'll

-

-33

-00:01:36,760 --> 00:01:39,910

-give them a fair amount of you know, documentation

-

-34

-00:01:39,910 --> 00:01:41,690

-on how to use the tool. And I expect

-

-35

-00:01:41,690 --> 00:01:45,090

-that there will be a lot of little error conditions that may happen

-

-36

-00:01:45,090 --> 00:01:49,320

-that we want to produce a reasonably friendly message were anything to go wrong.

-

-37

-00:01:49,320 --> 00:01:50,480

-&gt;&gt; Yeah. That'd be great.

-

-38

-00:01:50,480 --> 00:01:54,750

-&gt;&gt; So, a little bit more, I guess about

-

-39

-00:01:54,750 --> 00:01:58,539

-the actual essay itself, its submission, what constitutes a word?

-

-40

-00:01:59,820 --> 00:02:03,190

-&gt;&gt; I really only care about the longer words, so, is there a

-

-41

-00:02:03,190 --> 00:02:06,140

-way that we can only count words that are maybe above three letters?

-

-42

-00:02:06,140 --> 00:02:06,830

-&gt;&gt; I think

-

-43

-00:02:06,830 --> 00:02:08,508

-that's something we can do. And I think

-

-44

-00:02:08,508 --> 00:02:10,030

-that because you seem a little bit unsure

-

-45

-00:02:10,030 --> 00:02:11,540

-we might be able to have that be

-

-46

-00:02:11,540 --> 00:02:13,820

-a little bit more flexible than we otherwise would.

-

-47

-00:02:13,820 --> 00:02:14,500

-&gt;&gt; Great.

-

-48

-00:02:14,500 --> 00:02:18,330

-&gt;&gt; What does a sentence mean to you? Is it kind of flexible?

-

-49

-00:02:18,330 --> 00:02:21,280

-&gt;&gt; I would say anything that ends in a period or

-

-50

-00:02:21,280 --> 00:02:25,870

-even a question mark. Maybe even an exclamation mark. or, something

-

-51

-00:02:25,870 --> 00:02:28,760

-even, maybe even with a comma or semi-colon. I really only

-

-52

-00:02:28,760 --> 00:02:32,370

-care about the sentences that aren't gramatically correct and are too long.

-

-53

-00:02:32,370 --> 00:02:35,180

-&gt;&gt; I think we can probably make that a little bit more flexible too

-

-54

-00:02:35,180 --> 00:02:37,520

-so that way, you can kind of say we're going to, or you want to include them.

-

-55

-00:02:37,520 --> 00:02:38,020

-&gt;&gt; Mm-hm.

-

-56

-00:02:38,020 --> 00:02:41,786

-&gt;&gt; So maybe, sounds like you are little bit on the fence

-

-57

-00:02:41,786 --> 00:02:45,100

-about whether or not say, a comma should be considered a sentence.

-

-58

-00:02:45,100 --> 00:02:45,130

-&gt;&gt; Mm.

-

-59

-00:02:45,130 --> 00:02:46,370

-&gt;&gt; Entirely on its own or not. So we

-

-60

-00:02:46,370 --> 00:02:49,830

-can probably make that a little bit configurable as well.

-

-61

-00:02:51,880 --> 00:02:56,510

-And so, just to confirm the actual end result to

-

-62

-00:02:56,510 --> 00:02:59,870

-the student is the average number of words per sentence?

-

-63

-00:02:59,870 --> 00:03:01,610

-&gt;&gt; Yeah, yeah that'd be fine.

-

-64

-00:03:01,610 --> 00:03:07,430

-&gt;&gt; Okay, overall to start off with, looks like we have some

-

-65

-00:03:07,430 --> 00:03:10,280

-sort of customization of the word length that we want to look for.

-

-66

-00:03:10,280 --> 00:03:10,780

-&gt;&gt; Mm-hm. Yeah.

-

-67

-00:03:12,000 --> 00:03:14,650

-&gt;&gt; We have some kind of variability in

-

-68

-00:03:14,650 --> 00:03:17,880

-what we want to have as acceptable sentence structure.

-

-69

-00:03:17,880 --> 00:03:24,570

-So, periods, question marks, semicolons, things like that. And, the end result

-

-70

-00:03:24,570 --> 00:03:27,260

-to the student is if we're successful, they'll get the average number of

-

-71

-00:03:27,260 --> 00:03:31,060

-words per sentence. Otherwise we tell them something a little bit helpful to

-

-72

-00:03:31,060 --> 00:03:33,240

-kind of put them on the right track to use the tool correctly.

-

-73

-00:03:33,240 --> 00:03:34,620

-&gt;&gt; Yeah that's the error codes right?

-

-74

-00:03:35,850 --> 00:03:38,150

-&gt;&gt; Hopefully not error codes but something a little bit nicer.

-

-75

-00:03:38,150 --> 00:03:39,800

-&gt;&gt; [LAUGH] Okay.

-

-76

-00:03:39,800 --> 00:03:41,150

-&gt;&gt; So I think I have enough to

-

-77

-00:03:41,150 --> 00:03:43,440

-get started and produce something that's you know,

-

-78

-00:03:43,440 --> 00:03:47,150

-a reasonable I guess, rough draft. Of something

-

-79

-00:03:47,150 --> 00:03:48,700

-that you can use to help your class out.

-

-80

-00:03:48,700 --> 00:03:49,590

-&gt;&gt; Great. Thank you.

-

-81

-00:03:49,590 --> 00:03:50,240

-&gt;&gt; Thank you.

diff --git a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/5 - Average Sentence Length Requirements - lang_en_vs3.srt b/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/5 - Average Sentence Length Requirements - lang_en_vs3.srt
deleted file mode 100644
index afd49e1..0000000
--- a/usth/ICT2.7/P1L5 Requirements Gathering Subtitles/5 - Average Sentence Length Requirements - lang_en_vs3.srt
+++ /dev/null
@@ -1,83 +0,0 @@
-1

-00:00:00,340 --> 00:00:02,300

-You've heard Alvin come up with several conclusions for how to

-

-2

-00:00:02,300 --> 00:00:04,510

-set up the program. And we're going to ask that you follow his

-

-3

-00:00:04,510 --> 00:00:07,590

-instincts. We'll spell that out here in a little more technical details

-

-4

-00:00:07,590 --> 00:00:11,030

-so that everyone is working from the same basic starting point. The

-

-5

-00:00:11,030 --> 00:00:13,770

-program must be written in Java and must not make you any

-

-6

-00:00:13,770 --> 00:00:16,730

-nonstandard Java libraries. You will be tested on a machine with the

-

-7

-00:00:16,730 --> 00:00:21,060

-vanilla installation of Java 1.6. Your program must compile on the command

-

-8

-00:00:21,060 --> 00:00:25,360

-line using the Java C command without any additional options. All code

-

-9

-00:00:25,360 --> 00:00:27,530

-required to execute the program that is not part of the

-

-10

-00:00:27,530 --> 00:00:31,950

-standard JDK, must be included as source code with your program.

-

-11

-00:00:31,950 --> 00:00:34,380

-Your program should be an application. That is, it should have

-

-12

-00:00:34,380 --> 00:00:37,160

-a main method and should be executable from the command line using

-

-13

-00:00:37,160 --> 00:00:40,100

-the Java command. The user should be able to provide a

-

-14

-00:00:40,100 --> 00:00:42,450

-file path to the file they wish to be analyzed as a

-

-15

-00:00:42,450 --> 00:00:45,880

-command line argument. User should be able to specify which delimiters

-

-16

-00:00:45,880 --> 00:00:50,570

-count as sentence separators, using the flag -d, defaulting to Lauren's initial

-

-17

-00:00:50,570 --> 00:00:53,930

-thoughts on what should be used as delimiters. The user should be

-

-18

-00:00:53,930 --> 00:00:58,170

-able to specify a lower limit for word length, using the flag -l,

-

-19

-00:00:58,170 --> 00:01:02,100

-defaulting to Lauren's guess at what value might be good. Finally, the program's

-

-20

-00:01:02,100 --> 00:01:03,710

-output should be the average sentence

-

-21

-00:01:03,710 --> 00:01:05,720

-length. Rounded down to the nearest integer.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 27581a6..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,55 +0,0 @@
-1

-00:00:00,340 --> 00:00:05,670

-Hello and welcome to the second part of our software engineering course. In the

-

-2

-00:00:05,670 --> 00:00:09,030

-previous mini-course, we discussed some basic principles

-

-3

-00:00:09,030 --> 00:00:12,430

-behind software engineering. We provided an overview of

-

-4

-00:00:12,430 --> 00:00:15,790

-several software process models and we introduced

-

-5

-00:00:15,790 --> 00:00:18,530

-some important tools that can help developers

-

-6

-00:00:18,530 --> 00:00:21,363

-increase their productivity. In this mini-course, we

-

-7

-00:00:21,363 --> 00:00:25,740

-will focus on requirement and prototyping. More precisely,

-

-8

-00:00:25,740 --> 00:00:28,840

-we will discuss in depth requirements

-

-9

-00:00:28,840 --> 00:00:32,400

-engineering activities. We will also discuss

-

-10

-00:00:32,400 --> 00:00:34,950

-techniques to perform a system analysis

-

-11

-00:00:34,950 --> 00:00:38,720

-and design in an object-oriented fashion. So,

-

-12

-00:00:38,720 --> 00:00:42,250

-let's start the first lesson of this mini-course, which is about the use

-

-13

-00:00:42,250 --> 00:00:45,230

-of engineering techniques to understand and

-

-14

-00:00:45,230 --> 00:00:48,450

-specify the purpose of a software system.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/10 - Completeness Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/10 - Completeness Quiz - lang_en_vs4.srt
deleted file mode 100644
index 1ab5b4a..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/10 - Completeness Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,130 --> 00:00:03,060

-So now that we saw which of these requirements are pertinent and

-

-2

-00:00:03,060 --> 00:00:06,520

-which ones are not, can we consider the above list of requirements

-

-3

-00:00:06,520 --> 00:00:09,710

-of the list of these requirements marked here as a complete list

-

-4

-00:00:09,710 --> 00:00:13,254

-of requirements for a gym? And you have two options, yes or no.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/11 - Completeness Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/11 - Completeness Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 2ddc7e9..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/11 - Completeness Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,23 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,060

-And the answer is clearly no.

-

-2

-00:00:02,060 --> 00:00:05,060

-Obviously, there are many missing requirements here.

-

-3

-00:00:05,060 --> 00:00:07,910

-For example, requirements about registration for the

-

-4

-00:00:07,910 --> 00:00:11,560

-customers, requirements about fitness program creation, membership

-

-5

-00:00:11,560 --> 00:00:15,481

-types, and so on. Plus, we are also missing all of the nonfunctional

-

-6

-00:00:15,481 --> 00:00:19,270

-requirements, which we haven't seen yet, but that we will discuss in a bit.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/12 - Irrelevant Requirements Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/12 - Irrelevant Requirements Quiz - lang_en_vs4.srt
deleted file mode 100644
index 5b5fe86..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/12 - Irrelevant Requirements Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,43 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,400

-In the previous quiz, we saw that some of the requirements

-

-2

-00:00:02,400 --> 00:00:04,920

-that they put in the list were not pertinent. They were

-

-3

-00:00:04,920 --> 00:00:08,590

-irrelevant. So let me ask you. Why can irrelevant requirements be

-

-4

-00:00:08,590 --> 00:00:12,170

-harmful? Why is that a problem to have irrelevant requirements? So

-

-5

-00:00:12,170 --> 00:00:15,060

-here, I'm giving you four possible answers. And I'd like for

-

-6

-00:00:15,060 --> 00:00:18,150

-you to mark all that apply. Can irrelevant requirements be harmful

-

-7

-00:00:18,150 --> 00:00:21,210

-because they may lead to missing functionality in the final product.

-

-8

-00:00:21,210 --> 00:00:23,390

-Because they can introduce inconsistency. Because

-

-9

-00:00:23,390 --> 00:00:25,410

-they can waste the project resources.

-

-10

-00:00:25,410 --> 00:00:28,170

-Or because they may introduce bugs in the software system. And

-

-11

-00:00:28,170 --> 00:00:30,680

-as I said, more than one can be a valid reason.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/13 - Irrelevant Requirements Quiz Solution - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/13 - Irrelevant Requirements Quiz Solution - lang_en_vs5.srt
deleted file mode 100644
index f1c51c1..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/13 - Irrelevant Requirements Quiz Solution - lang_en_vs5.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,200 --> 00:00:02,920

-So let's go through the list. Definitely irrelevant requirements

-

-2

-00:00:02,920 --> 00:00:06,370

-cannot lead to missing functionality in the final product, because

-

-3

-00:00:06,370 --> 00:00:10,730

-irrelevant requirements actually refer to unneeded functionality in the system.

-

-4

-00:00:10,730 --> 00:00:13,030

-So functionality that is put in the requirements, but it

-

-5

-00:00:13,030 --> 00:00:15,120

-is not really needed. So we're not going to mark

-

-6

-00:00:15,120 --> 00:00:19,400

-this one. Indeed, irrelevant requirements can introduce inconsistencies. So they

-

-7

-00:00:19,400 --> 00:00:22,490

-could be irrelevant requirements that not only are not pertinent

-

-8

-00:00:22,490 --> 00:00:25,620

-but they are inconsistent with some of the pertinent requirements.

-

-9

-00:00:25,620 --> 00:00:29,220

-They can also waste project resources, because if we spend time

-

-10

-00:00:29,220 --> 00:00:31,920

-designing and then implementing the parts of the system that we

-

-11

-00:00:31,920 --> 00:00:35,410

-refer to these irrelevant requirements, of course, we are wasting project

-

-12

-00:00:35,410 --> 00:00:38,570

-resources. And I will not mark the last one because there's really

-

-13

-00:00:38,570 --> 00:00:42,220

-no correlation between any irrelevant requirements and bugs in the software

-

-14

-00:00:42,220 --> 00:00:45,350

-system. Of course, by implementing the part of the system that refers

-

-15

-00:00:45,350 --> 00:00:47,960

-to an irrelevant requirement you might introduce a bug. But that's

-

-16

-00:00:47,960 --> 00:00:51,020

-not necessarily the case, and there really no correlation between the two.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/14 - Best Practices - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/14 - Best Practices - lang_en_vs5.srt
deleted file mode 100644
index 7497280..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/14 - Best Practices - lang_en_vs5.srt
+++ /dev/null
@@ -1,83 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,290

-But we collect requirements all the time, right? Every

-

-2

-00:00:02,290 --> 00:00:04,960

-time we build a software system. So how do people

-

-3

-00:00:04,960 --> 00:00:08,320

-cope with these difficulties? What are the best practices?

-

-4

-00:00:08,320 --> 00:00:12,950

-In practice, developers or analysts usually identify a whole bunch

-

-5

-00:00:12,950 --> 00:00:16,590

-of requirements. Sometimes the easiest and most obvious ones. They

-

-6

-00:00:16,590 --> 00:00:19,370

-bring those to the stakeholders, and the stakeholders have to

-

-7

-00:00:19,370 --> 00:00:23,100

-read the requirements, understand them, and if they agree, sign

-

-8

-00:00:23,100 --> 00:00:25,580

-off on them. And the problem is that in general,

-

-9

-00:00:25,580 --> 00:00:28,910

-these requirements documents are difficult to read. They are long, they

-

-10

-00:00:28,910 --> 00:00:32,470

-are often unstructured. They typically contain a lot of information. And

-

-11

-00:00:32,470 --> 00:00:35,310

-in general, they are not exactly a pleasant read. So what

-

-12

-00:00:35,310 --> 00:00:39,710

-happens is that often the stakeholders are short on time, overwhelmed

-

-13

-00:00:39,710 --> 00:00:42,380

-by the amount of information they're given and so they give

-

-14

-00:00:42,380 --> 00:00:44,800

-in to the pressure and sign. And this is a bit

-

-15

-00:00:44,800 --> 00:00:47,300

-of a dramatization clearly but it's clear that what we are

-

-16

-00:00:47,300 --> 00:00:50,640

-looking at is not an ideal scenario. Clearly this is not

-

-17

-00:00:50,640 --> 00:00:53,810

-the way to identify the real purpose of a software system to

-

-18

-00:00:53,810 --> 00:00:57,920

-collect good requirements. And since one of the major causes for project

-

-19

-00:00:57,920 --> 00:01:02,130

-failure is the inadequacy of requirements, we should really avoid this kind

-

-20

-00:01:02,130 --> 00:01:03,590

-of scenario. We should follow a

-

-21

-00:01:03,590 --> 00:01:06,810

-rigorous and effective requirements engineering process instead.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/15 - RE Definition Breakdown - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/15 - RE Definition Breakdown - lang_en_vs4.srt
deleted file mode 100644
index bcc06a5..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/15 - RE Definition Breakdown - lang_en_vs4.srt
+++ /dev/null
@@ -1,207 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,540

-But how can we do that? How can we identify the purpose

-

-2

-00:00:02,540 --> 00:00:06,080

-of the system and collect good requirements? To answer that question, let me

-

-3

-00:00:06,080 --> 00:00:07,800

-give you another definition of requirements

-

-4

-00:00:07,800 --> 00:00:09,590

-engineering. And this one is a classical

-

-5

-00:00:09,590 --> 00:00:13,010

-one, one that summarizes what we discussed so far, and then we can

-

-6

-00:00:13,010 --> 00:00:16,180

-use as some sort of reference. And it is a little long.

-

-7

-00:00:16,180 --> 00:00:18,710

-Definitely longer than the one that we saw at the beginning. But it's

-

-8

-00:00:18,710 --> 00:00:21,840

-an important one and it contains a lot of very relevant points. So,

-

-9

-00:00:21,840 --> 00:00:25,210

-we're going to go through it and highlight these points. So the definition says,

-

-10

-00:00:25,210 --> 00:00:28,970

-that the requirements engineering is a set of activities concerned

-

-11

-00:00:28,970 --> 00:00:32,990

-with identifying and communicating the purpose of a software intensive

-

-12

-00:00:32,990 --> 00:00:35,770

-system and the context in which it will be used.

-

-13

-00:00:35,770 --> 00:00:38,570

-And this is exactly what we said at the beginning. But

-

-14

-00:00:38,570 --> 00:00:40,940

-something we can highlight in here, is the fact that

-

-15

-00:00:40,940 --> 00:00:44,210

-we're talking about a set of activities. So, what that means

-

-16

-00:00:44,210 --> 00:00:46,800

-is that requirements engineering is not just a phase or

-

-17

-00:00:46,800 --> 00:00:51,050

-a stage. It also says that it's about identifying and communicating.

-

-18

-00:00:51,050 --> 00:00:53,720

-And what that is telling us is that communication is

-

-19

-00:00:53,720 --> 00:00:56,670

-as important as the analysis. So, it's important to be

-

-20

-00:00:56,670 --> 00:00:59,990

-able to communicate these requirements not only to collect them.

-

-21

-00:00:59,990 --> 00:01:02,018

-And we will discuss many reasons why that is the

-

-22

-00:01:02,018 --> 00:01:05,880

-case. It explicitly talks about purpose. So that allows me

-

-23

-00:01:05,880 --> 00:01:10,310

-to stress, once more, that quality means fitness-for-purpose. We cannot

-

-24

-00:01:10,310 --> 00:01:14,410

-say anything about quality unless we understand the purpose. And

-

-25

-00:01:14,410 --> 00:01:16,210

-the last thing I want to point out in this first

-

-26

-00:01:16,210 --> 00:01:18,420

-part of the definition is the use of the term

-

-27

-00:01:18,420 --> 00:01:21,060

-context. This is also something else that we mentioned at

-

-28

-00:01:21,060 --> 00:01:24,890

-the beginning, that designers, analysts, need to know how and

-

-29

-00:01:24,890 --> 00:01:28,015

-where the system will be used. Without this information, you

-

-30

-00:01:28,015 --> 00:01:30,455

-cannot really understand what the system should do and you

-

-31

-00:01:30,455 --> 00:01:33,280

-cannot really build the system. So now, let's continue and

-

-32

-00:01:33,280 --> 00:01:35,755

-read the second part of the definition that says, hence.

-

-33

-00:01:35,755 --> 00:01:41,550

-Requirements engineering acts as the bridge between the real-world needs of

-

-34

-00:01:41,550 --> 00:01:45,315

-users, customers, and other constituencies affected by a

-

-35

-00:01:45,315 --> 00:01:49,440

-software system and the capabilities and opportunities afforded

-

-36

-00:01:49,440 --> 00:01:52,870

-by software-intensive technologies. This is a long sentence,

-

-37

-00:01:52,870 --> 00:01:55,030

-but also here, we can point out a

-

-38

-00:01:55,030 --> 00:01:57,670

-few interesting and relevant points. Let me start

-

-39

-00:01:57,670 --> 00:02:00,612

-by highlighting two parts. Real-world needs, and the

-

-40

-00:02:00,612 --> 00:02:04,150

-capabilities, and opportunities. So, what are these two

-

-41

-00:02:04,150 --> 00:02:07,000

-parts telling us? They are telling us that requirements

-

-42

-00:02:07,000 --> 00:02:09,949

-are partly about what is needed, the real-world needs

-

-43

-00:02:09,949 --> 00:02:13,520

-of all these stakeholders. But they're also partly about what

-

-44

-00:02:13,520 --> 00:02:16,100

-is possible, what we can actually build. We need

-

-45

-00:02:16,100 --> 00:02:19,260

-to compromise between these two things. And, finally, I would

-

-46

-00:02:19,260 --> 00:02:23,000

-like to point out this term constituencies, which indicates

-

-47

-00:02:23,000 --> 00:02:26,220

-that we need to identify all of the stakeholders, not

-

-48

-00:02:26,220 --> 00:02:29,130

-just the customer and the users, so anybody who is

-

-49

-00:02:29,130 --> 00:02:32,040

-affected by a software system. It is very important to

-

-50

-00:02:32,040 --> 00:02:35,130

-consider all of these actors. Otherwise, again,

-

-51

-00:02:35,130 --> 00:02:37,530

-we'll be missing requirements, we'll be missing

-

-52

-00:02:37,530 --> 00:02:41,120

-part of the purpose of the system and we will build a suboptimal system.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/16 - Defining Requirements - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/16 - Defining Requirements - lang_en_vs4.srt
deleted file mode 100644
index 2c8dde2..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/16 - Defining Requirements - lang_en_vs4.srt
+++ /dev/null
@@ -1,219 +0,0 @@
-1

-00:00:00,220 --> 00:00:02,120

-So at this point, we have talked quite a bit about

-

-2

-00:00:02,120 --> 00:00:03,800

-requirements engineering, but we haven't

-

-3

-00:00:03,800 --> 00:00:06,450

-really discussed what are requirements exactly.

-

-4

-00:00:06,450 --> 00:00:08,880

-So what is a requirement? To define that I am going

-

-5

-00:00:08,880 --> 00:00:11,860

-to use this diagram which is a classical one. So you might

-

-6

-00:00:11,860 --> 00:00:14,980

-have seen it before. So, discussing this diagram allows me to

-

-7

-00:00:14,980 --> 00:00:18,720

-point out a few interesting things about requirements and define them

-

-8

-00:00:18,720 --> 00:00:21,660

-in a better way. At a high level this diagram contains

-

-9

-00:00:21,660 --> 00:00:24,780

-two main parts, the domain of the machine, which is the hardware,

-

-10

-00:00:24,780 --> 00:00:27,670

-operating system, libraries and so on, on which the

-

-11

-00:00:27,670 --> 00:00:30,860

-software will run. And the domain of the application, which

-

-12

-00:00:30,860 --> 00:00:33,510

-is a world in which the software will operate.

-

-13

-00:00:33,510 --> 00:00:36,690

-And the machine domain is characterized by computers, which are

-

-14

-00:00:36,690 --> 00:00:39,980

-the hardware devices, and programs, which is the software

-

-15

-00:00:39,980 --> 00:00:43,430

-that runs on these devices. The application domain, conversely, is

-

-16

-00:00:43,430 --> 00:00:47,370

-characterized by domain properties, which are things that are true

-

-17

-00:00:47,370 --> 00:00:50,330

-of the world anyways, whether I'm building my system or

-

-18

-00:00:50,330 --> 00:00:53,510

-not, and requirements, which are things in the world we

-

-19

-00:00:53,510 --> 00:00:56,220

-would like to achieve by delivering the system that we are

-

-20

-00:00:56,220 --> 00:00:59,400

-building. Basically, to put it in a different way, the former,

-

-21

-00:00:59,400 --> 00:01:02,950

-the domain properties, represents the assumptions that we make on the

-

-22

-00:01:02,950 --> 00:01:06,740

-domain. And the latter, the requirements, are the actual requirements

-

-23

-00:01:06,740 --> 00:01:09,660

-that we aim to collect. So we have something here, right,

-

-24

-00:01:09,660 --> 00:01:13,380

-at the intersection of this application domain and this machine domain.

-

-25

-00:01:13,380 --> 00:01:15,570

-And what is that? And this is what we normally call

-

-26

-00:01:15,570 --> 00:01:19,225

-the specification, which is a description, often a formal description,

-

-27

-00:01:19,225 --> 00:01:22,120

-of what the system that we are building should do to

-

-28

-00:01:22,120 --> 00:01:25,520

-meet the requirements. So this is a bridge between these two

-

-29

-00:01:25,520 --> 00:01:29,380

-domains. And as the graphical depiction shows, the specification is written

-

-30

-00:01:29,380 --> 00:01:33,220

-in terms of shared phenomena. Things that are observable in both

-

-31

-00:01:33,220 --> 00:01:35,980

-the machine domain and the application domain. And just to make

-

-32

-00:01:35,980 --> 00:01:37,540

-things a little more concrete, I want to give you a

-

-33

-00:01:37,540 --> 00:01:41,180

-couple of examples of what these phenomena, these shared phenomena, are.

-

-34

-00:01:41,180 --> 00:01:43,350

-And we can think about two main kinds of phenomena.

-

-35

-00:01:43,350 --> 00:01:46,080

-The first one are events in the real world that the

-

-36

-00:01:46,080 --> 00:01:50,140

-machine can directly sense. For example, a button being pushed or

-

-37

-00:01:50,140 --> 00:01:53,910

-a sensor being activated. These are events that happen here, but

-

-38

-00:01:53,910 --> 00:01:56,500

-that the machine can detect. So they're events that can

-

-39

-00:01:56,500 --> 00:01:59,650

-be used to define the specification. And the second type of

-

-40

-00:01:59,650 --> 00:02:02,890

-phenomena are actions in the real world that the machine can

-

-41

-00:02:02,890 --> 00:02:06,380

-directly cause. For example, an image appearing on a screen or

-

-42

-00:02:06,380 --> 00:02:09,300

-a device being turned on and off. Again, this is something

-

-43

-00:02:09,300 --> 00:02:12,460

-that the machine can make happen and then can have manifestation in

-

-44

-00:02:12,460 --> 00:02:15,520

-the real world. And again this is therefore something on which

-

-45

-00:02:15,520 --> 00:02:17,720

-the specification can predicate, something that

-

-46

-00:02:17,720 --> 00:02:19,750

-we can describe in our specification.

-

-47

-00:02:19,750 --> 00:02:22,860

-And this is sort of a philosophical discussion, but even if

-

-48

-00:02:22,860 --> 00:02:26,210

-you don't care about the philosophical discussion, the one take away point

-

-49

-00:02:26,210 --> 00:02:28,800

-that I would like for you to get from this discussion is

-

-50

-00:02:28,800 --> 00:02:31,392

-the fact that when writing a specification you have to be aware

-

-51

-00:02:31,392 --> 00:02:34,860

-of the fact that you're talking about shared phenomena. Events in the real

-

-52

-00:02:34,860 --> 00:02:39,100

-world that the machine can sense and actions in the real world that the

-

-53

-00:02:39,100 --> 00:02:43,048

-machine can cause. So this is what the specification is about, a bridge between

-

-54

-00:02:43,048 --> 00:02:44,760

-these two worlds that define what the

-

-55

-00:02:44,760 --> 00:02:47,170

-system should do to satisfy the requirements.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/17 - Defining Requirements Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/17 - Defining Requirements Quiz - lang_en_vs4.srt
deleted file mode 100644
index 343e3cb..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/17 - Defining Requirements Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,180 --> 00:00:01,780

-Since we just discussed application

-

-2

-00:00:01,780 --> 00:00:04,770

-domain, machine domain, and the specificiation,

-

-3

-00:00:04,770 --> 00:00:07,760

-let's make sure that these concepts are well understood. To do that,

-

-4

-00:00:07,760 --> 00:00:09,740

-I'm going to use a quiz, and I would like for you

-

-5

-00:00:09,740 --> 00:00:12,590

-to refer to the figure that we just discussed that I'm also

-

-6

-00:00:12,590 --> 00:00:16,050

-reproducing here on a small scale on the right. And then

-

-7

-00:00:16,050 --> 00:00:19,080

-referring to the figure, you should indicate for each of the items

-

-8

-00:00:19,080 --> 00:00:22,140

-that I'm going to show you here shortly. Whether they belong to

-

-9

-00:00:22,140 --> 00:00:25,360

-the machine domain. In this case, we're going to put a one next

-

-10

-00:00:25,360 --> 00:00:28,150

-to the icon. The application domain, in this case you should

-

-11

-00:00:28,150 --> 00:00:31,410

-put two. Or their intersection, and in this case you should

-

-12

-00:00:31,410 --> 00:00:34,100

-put three. So this is the lists of items. So let

-

-13

-00:00:34,100 --> 00:00:37,750

-me read it. An algorithm sorts a list of books in alphabetical

-

-14

-00:00:37,750 --> 00:00:41,070

-order by the first author's name. A notification of the arrival

-

-15

-00:00:41,070 --> 00:00:44,380

-of a message appears on a smart watch. An employee wants to

-

-16

-00:00:44,380 --> 00:00:47,150

-organize a meeting with a set of colleagues. And finally, a

-

-17

-00:00:47,150 --> 00:00:50,690

-user clicks a link on a web page. So again, put 1,

-

-18

-00:00:50,690 --> 00:00:55,740

-2, or 3 here in these lots, depending on whether you think that these items

-

-19

-00:00:55,740 --> 00:00:57,840

-belong to the machine domain, the application

-

-20

-00:00:57,840 --> 00:01:00,910

-domain, or their intersection. So, their specification, here.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/18 - Defining Requirements Quiz Solution - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/18 - Defining Requirements Quiz Solution - lang_en_vs5.srt
deleted file mode 100644
index 7fcbd53..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/18 - Defining Requirements Quiz Solution - lang_en_vs5.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,200 --> 00:00:03,460

-So let's look at each one of these items individually, starting from

-

-2

-00:00:03,460 --> 00:00:06,260

-the first one. And here this item has to do with how

-

-3

-00:00:06,260 --> 00:00:08,250

-the machine stores the information and

-

-4

-00:00:08,250 --> 00:00:10,240

-how the corresponding algorithm is written.

-

-5

-00:00:10,240 --> 00:00:12,920

-But it has no bearing in the real world. That is, in

-

-6

-00:00:12,920 --> 00:00:15,720

-the application domain. Therefore this. Definitely

-

-7

-00:00:15,720 --> 00:00:17,200

-belongs to the machine domain, and

-

-8

-00:00:17,200 --> 00:00:19,610

-we're going to put a one here. What about a notification of

-

-9

-00:00:19,610 --> 00:00:21,980

-the arrival of a message on a smart watch? This is an

-

-10

-00:00:21,980 --> 00:00:25,170

-event that is generated within the machine, but it has an effect,

-

-11

-00:00:25,170 --> 00:00:28,480

-an observable effect, in this case, in the real world as well.

-

-12

-00:00:28,480 --> 00:00:31,780

-Therefore, we're going to mark this as three. So this is an

-

-13

-00:00:31,780 --> 00:00:33,460

-event. This is something that belongs

-

-14

-00:00:33,460 --> 00:00:35,160

-to the intersection between the application

-

-15

-00:00:35,160 --> 00:00:37,480

-domain and the machine domain. So it's something that could be in

-

-16

-00:00:37,480 --> 00:00:40,730

-the specification. Now what about an employee that wants to organize a

-

-17

-00:00:40,730 --> 00:00:43,850

-meeting with a set of colleagues? This is an event that belongs

-

-18

-00:00:43,850 --> 00:00:46,460

-to the application domain because it is a fact that it's true

-

-19

-00:00:46,460 --> 00:00:50,290

-that exists. In the real world independently from the existence of a machine.

-

-20

-00:00:50,290 --> 00:00:52,380

-Therefore, we're going to mark this as two.

-

-21

-00:00:52,380 --> 00:00:54,890

-Finally, the event of a user clicking on a

-

-22

-00:00:54,890 --> 00:00:58,950

-link on a web page is an event that occurs in the real world but that has an

-

-23

-00:00:58,950 --> 00:01:01,932

-effect also within the machine and, therefore, we're

-

-24

-00:01:01,932 --> 00:01:04,920

-going to mark this as three, something that happens

-

-25

-00:01:04,920 --> 00:01:07,730

-at the intersection. between these two domains, and once

-

-26

-00:01:07,730 --> 00:01:10,060

-more, something that could be in a specification.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/19 - Functional and Nonfunctional Requirements - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/19 - Functional and Nonfunctional Requirements - lang_en_vs4.srt
deleted file mode 100644
index 1cff519..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/19 - Functional and Nonfunctional Requirements - lang_en_vs4.srt
+++ /dev/null
@@ -1,139 +0,0 @@
-1

-00:00:00,188 --> 00:00:02,360

-Among the requirement that we can collect from the application

-

-2

-00:00:02,360 --> 00:00:05,030

-domain, we need to distinguish between two main types. And you've

-

-3

-00:00:05,030 --> 00:00:06,540

-probably heard about these ones.

-

-4

-00:00:06,540 --> 00:00:09,650

-Functional requirments and non-functional requiremnts. Functional

-

-5

-00:00:09,650 --> 00:00:13,020

-requiremetns have to do with the functionality of the system, with

-

-6

-00:00:13,020 --> 00:00:16,660

-what the system does with the computation. For example the elevator

-

-7

-00:00:16,660 --> 00:00:19,660

-shall take people to the floor they select. That's a functional

-

-8

-00:00:19,660 --> 00:00:22,650

-requirement, that has to do with the functionality of the system.

-

-9

-00:00:22,650 --> 00:00:25,550

-Or for a very simple one, the system has to output

-

-10

-00:00:25,550 --> 00:00:27,620

-the square root of the number past as

-

-11

-00:00:27,620 --> 00:00:29,910

-an input. So these kind of requirements have in

-

-12

-00:00:29,910 --> 00:00:33,630

-general well defined satisfaction criteria. So, for example, if

-

-13

-00:00:33,630 --> 00:00:35,420

-for the latter one that we mentioned it is

-

-14

-00:00:35,420 --> 00:00:37,560

-pretty clear how to check whether the output

-

-15

-00:00:37,560 --> 00:00:39,784

-is actually the square root of the number passed

-

-16

-00:00:39,784 --> 00:00:43,535

-in input. Non-functional requirements, conversely, refer to a system's

-

-17

-00:00:43,535 --> 00:00:46,800

-non-functional properties, systems qualities.

-

-18

-00:00:46,800 --> 00:00:50,120

-Such as security, accuracy, performance,

-

-19

-00:00:50,120 --> 00:00:52,220

-cost. Or, you know, usability,

-

-20

-00:00:52,220 --> 00:00:55,910

-adaptability, interoperability, reusability and so

-

-21

-00:00:55,910 --> 00:00:58,850

-on. So, all these qualities the don't necessarily have to

-

-22

-00:00:58,850 --> 00:01:02,520

-do with the functionality. And, unlike functional requirements, non functional

-

-23

-00:01:02,520 --> 00:01:06,060

-requirements Do not always have clear satisfaction criteria. For example,

-

-24

-00:01:06,060 --> 00:01:08,670

-if we say that the elevator must be fast, that's

-

-25

-00:01:08,670 --> 00:01:10,640

-a non-functional requrement. Right? It has to do with the

-

-26

-00:01:10,640 --> 00:01:13,030

-speed of the elevator, which is a quality of the

-

-27

-00:01:13,030 --> 00:01:15,535

-elevator. But, it, it's not clear how such a requirement

-

-28

-00:01:15,535 --> 00:01:17,980

-could be satisfied. How could we tell whether the elevator

-

-29

-00:01:17,980 --> 00:01:20,000

-is fast or not. So, what we need to do

-

-30

-00:01:20,000 --> 00:01:22,390

-in these cases Is that we need to refine these

-

-31

-00:01:22,390 --> 00:01:25,300

-requirements so that they become verifiable. For the example that

-

-32

-00:01:25,300 --> 00:01:27,360

-I just mentioned, for instance, we might say that the

-

-33

-00:01:27,360 --> 00:01:30,730

-elevator must reach the requested floor in less than 30

-

-34

-00:01:30,730 --> 00:01:33,190

-seconds from the moment when the floor button is pushed.

-

-35

-00:01:33,190 --> 00:01:36,030

-This is still a non-functional requirment, but is a verifiable one.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/2 - Interview with Jane Cleland-Huang - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/2 - Interview with Jane Cleland-Huang - lang_en_vs5.srt
deleted file mode 100644
index 2a1bc1c..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/2 - Interview with Jane Cleland-Huang - lang_en_vs5.srt
+++ /dev/null
@@ -1,411 +0,0 @@
-1

-00:00:00,270 --> 00:00:02,800

-As we did for other lessons, before starting this

-

-2

-00:00:02,800 --> 00:00:06,150

-lesson on requirements engineering, I want to ask a world

-

-3

-00:00:06,150 --> 00:00:10,210

-expert on this topic a few questions. I'm here with

-

-4

-00:00:10,210 --> 00:00:14,150

-Jane Cleland-Huang, a professor at the DePaul University. And Jane

-

-5

-00:00:14,150 --> 00:00:16,500

-is a world expert in the area of requirements

-

-6

-00:00:16,500 --> 00:00:19,830

-engineering, which is the theme of this lesson. So I'm

-

-7

-00:00:19,830 --> 00:00:22,220

-talking to Jane who is currently in Chicago and I

-

-8

-00:00:22,220 --> 00:00:25,380

-want to. Ask her a few questions about requirements engineering.

-

-9

-00:00:25,380 --> 00:00:26,530

-So hi Jane how are you?

-

-10

-00:00:26,530 --> 00:00:27,990

-&gt;&gt; Fine. Thank you Alex.

-

-11

-00:00:27,990 --> 00:00:29,480

-&gt;&gt; And thank you so much for agreeing to

-

-12

-00:00:29,480 --> 00:00:31,960

-be interviewed for our course, I'm sure the students

-

-13

-00:00:31,960 --> 00:00:34,080

-will really benefit from this. And let me start

-

-14

-00:00:34,080 --> 00:00:37,240

-with the first question which is what are software requirements?

-

-15

-00:00:37,240 --> 00:00:40,900

-&gt;&gt; That's an interesting question. And software requirements

-

-16

-00:00:40,900 --> 00:00:44,220

-basically provide us a description of what a

-

-17

-00:00:44,220 --> 00:00:47,520

-system has to do. So, typically they describe

-

-18

-00:00:47,520 --> 00:00:50,550

-the functionality of the features. That the system has

-

-19

-00:00:50,550 --> 00:00:54,420

-to deliver in order to satisfy its stakeholders.

-

-20

-00:00:54,420 --> 00:00:59,010

-And we usually talk about the requirement specification

-

-21

-00:00:59,010 --> 00:01:01,050

-in terms of what the system's going to

-

-22

-00:01:01,050 --> 00:01:04,010

-do. And we describe it sometimes formally in

-

-23

-00:01:04,010 --> 00:01:07,300

-terms of set of shall statements, that the

-

-24

-00:01:07,300 --> 00:01:09,110

-system shall do this or shall do that.

-

-25

-00:01:09,110 --> 00:01:12,330

-Or we can use various templates to specify

-

-26

-00:01:12,330 --> 00:01:16,120

-both textural requirements. But requirements can also be represented

-

-27

-00:01:16,120 --> 00:01:20,790

-informally in, in the form of user stories, or use cases, or more

-

-28

-00:01:20,790 --> 00:01:26,180

-formally in the form of state transition diagrams and even in kind of

-

-29

-00:01:26,180 --> 00:01:32,260

-formal specifications. Especially for critical parts of safety critical systems.

-

-30

-00:01:32,260 --> 00:01:34,180

-&gt;&gt; And another should discuss what the

-

-31

-00:01:34,180 --> 00:01:37,230

-requirements are. What is the requirements engineering?

-

-32

-00:01:37,230 --> 00:01:41,180

-&gt;&gt; So, that's also an interesting question because if you notice

-

-33

-00:01:41,180 --> 00:01:45,330

-it's it's engineering and I'm sure in the

-

-34

-00:01:45,330 --> 00:01:47,750

-other parts of the software engineering process that

-

-35

-00:01:47,750 --> 00:01:51,130

-you're discussing in your course. Parts such as

-

-36

-00:01:51,130 --> 00:01:55,200

-testing or coding. They don't have the word engineering

-

-37

-00:01:55,200 --> 00:01:56,930

-there and I think one of the reasons

-

-38

-00:01:56,930 --> 00:02:00,310

-requirements engineering has that term is because it covers

-

-39

-00:02:00,310 --> 00:02:03,570

-a number of different activities. So it includes

-

-40

-00:02:03,570 --> 00:02:07,390

-things such as working with stakeholders to elicit or

-

-41

-00:02:07,390 --> 00:02:10,620

-to proactively discover what their requirements of the

-

-42

-00:02:10,620 --> 00:02:14,440

-system are. Analyzing those requirements so that we

-

-43

-00:02:14,440 --> 00:02:17,380

-understand the tradeoffs. So you might have different

-

-44

-00:02:17,380 --> 00:02:21,170

-stakeholders that care about different things, and it

-

-45

-00:02:21,170 --> 00:02:26,086

-might not be possible to deliver all of those things, so we have to analyze the

-

-46

-00:02:26,086 --> 00:02:29,140

-feasibility of the requirements, explore the tradeoffs, emerge

-

-47

-00:02:29,140 --> 00:02:32,550

-conflicts. And then of course the specification part,

-

-48

-00:02:32,550 --> 00:02:34,930

-which we talked about a little bit already,

-

-49

-00:02:34,930 --> 00:02:37,340

-and the validation, so did we in fact get

-

-50

-00:02:37,340 --> 00:02:40,480

-the requirements right? Did we build a system

-

-51

-00:02:40,480 --> 00:02:43,490

-that actually matches our, our requirements. And then on

-

-52

-00:02:43,490 --> 00:02:46,960

-into the requirements management process. And the requirements

-

-53

-00:02:46,960 --> 00:02:50,860

-management process. Kind of like goes through things like

-

-54

-00:02:50,860 --> 00:02:55,010

-change management. So what if customer or stakeholders

-

-55

-00:02:55,010 --> 00:02:57,630

-need the system to change? How do we manage

-

-56

-00:02:57,630 --> 00:03:00,180

-changing requirements? And I think this is one of

-

-57

-00:03:00,180 --> 00:03:03,230

-the reasons that we've coined the term engineering because

-

-58

-00:03:03,230 --> 00:03:06,490

-that it's, has to be a systematic process which

-

-59

-00:03:06,490 --> 00:03:09,550

-extends across. The whole of this is life cycle.

-

-60

-00:03:09,550 --> 00:03:12,890

-&gt;&gt; And I guess my last question here is

-

-61

-00:03:12,890 --> 00:03:15,100

-so now that we heard about software requirements and

-

-62

-00:03:15,100 --> 00:03:18,790

-about software requirements engineering, why is requirements engineering so

-

-63

-00:03:18,790 --> 00:03:20,770

-important? So what happens if we don't do it right?

-

-64

-00:03:20,770 --> 00:03:22,620

-&gt;&gt; Well, I'm sure that, you know,

-

-65

-00:03:22,620 --> 00:03:24,880

-many people have probably read the kind of

-

-66

-00:03:24,880 --> 00:03:28,560

-report like Spanish report, and other reports of failed

-

-67

-00:03:28,560 --> 00:03:31,900

-project, and things like that, and are aware that

-

-68

-00:03:31,900 --> 00:03:35,280

-one of the major reasons for projects failing

-

-69

-00:03:35,280 --> 00:03:37,360

-is because we didn't get the requirements right

-

-70

-00:03:37,360 --> 00:03:40,110

-in the first place. So if we don't understand

-

-71

-00:03:40,110 --> 00:03:42,970

-the requirements then we're simply going to build the

-

-72

-00:03:42,970 --> 00:03:47,960

-wrong system. Getting requirements right includes all sorts of

-

-73

-00:03:47,960 --> 00:03:52,900

-things such as finding the right group of stakeholders so we don't exclude major

-

-74

-00:03:52,900 --> 00:03:56,940

-groups of stakeholders. Understanding the requirements correctly.

-

-75

-00:03:56,940 --> 00:03:59,910

-There will be many, many different examples of

-

-76

-00:03:59,910 --> 00:04:02,310

-projects that have failed. For example, in

-

-77

-00:04:02,310 --> 00:04:06,500

-America the healthcare.gov failure, and while we cannot

-

-78

-00:04:06,500 --> 00:04:09,540

-put the blame squarely in the area

-

-79

-00:04:09,540 --> 00:04:13,040

-of requirements, because obviously the project was challenged

-

-80

-00:04:13,040 --> 00:04:15,650

-for a number of different reasons. But

-

-81

-00:04:15,650 --> 00:04:21,070

-clearly it underperformed in many respects related to

-

-82

-00:04:21,070 --> 00:04:25,740

-security, performance, and reliability and these are all

-

-83

-00:04:25,740 --> 00:04:28,300

-parts of the requirements process. Things that should

-

-84

-00:04:28,300 --> 00:04:30,000

-have been discovered and the system should have

-

-85

-00:04:30,000 --> 00:04:32,914

-been built in order to meet those requirements,

-

-86

-00:04:32,914 --> 00:04:36,240

-getting the requirements right in the first place.

-

-87

-00:04:36,240 --> 00:04:38,110

-Puts us, a project on the right foot.

-

-88

-00:04:38,110 --> 00:04:41,430

-And so that gives us a much better chance

-

-89

-00:04:41,430 --> 00:04:44,940

-of delivering to the customer what they need. And

-

-90

-00:04:44,940 --> 00:04:49,130

-designing a solution that really meets those requirements. So,

-

-91

-00:04:49,130 --> 00:04:52,800

-it's a critical part of the overall software engineering success.

-

-92

-00:04:52,800 --> 00:04:56,441

-&gt;&gt; Okay. So that's critical. I mean, we better get our requirements right.

-

-93

-00:04:56,441 --> 00:04:56,987

-&gt;&gt; Yeah.

-

-94

-00:04:56,987 --> 00:04:57,733

-&gt;&gt; That's, that's the message.

-

-95

-00:04:57,733 --> 00:04:57,743

-&gt;&gt; Yeah.

-

-96

-00:04:57,743 --> 00:05:00,822

-&gt;&gt; Okay. Well, thank you so much Jane, for taking

-

-97

-00:05:00,822 --> 00:05:03,435

-the time off your busy schedule to speak with us.

-

-98

-00:05:03,435 --> 00:05:07,150

-I'm sure. The students really appreciate this, and we'll talk to you soon.

-

-99

-00:05:07,150 --> 00:05:08,480

-&gt;&gt; Bye Alex, thank you.

-

-100

-00:05:08,480 --> 00:05:10,890

-&gt;&gt; Bye, Jane, bye bye. Jane gave

-

-101

-00:05:10,890 --> 00:05:13,410

-us an interesting perspective on requirements engineering

-

-102

-00:05:13,410 --> 00:05:15,410

-and its importance. Let's now start our

-

-103

-00:05:15,410 --> 00:05:18,050

-lesson with a general definition of requirements engineering.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/20 - User and System Requirements - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/20 - User and System Requirements - lang_en_vs4.srt
deleted file mode 100644
index 2da3f58..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/20 - User and System Requirements - lang_en_vs4.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,180 --> 00:00:03,170

-Another important distinction, when talking about requirements, is that

-

-2

-00:00:03,170 --> 00:00:07,220

-between user and system requirements. So, let's start with defining

-

-3

-00:00:07,220 --> 00:00:10,540

-user requirements. Those are requirements that are written for the

-

-4

-00:00:10,540 --> 00:00:13,400

-customers and they're often in natural language and they don't

-

-5

-00:00:13,400 --> 00:00:16,190

-contain technical details. And the reason for that is

-

-6

-00:00:16,190 --> 00:00:19,740

-that their purpose is to allow customers, stakeholders, to check

-

-7

-00:00:19,740 --> 00:00:22,210

-that the system will do what they intended. So it's

-

-8

-00:00:22,210 --> 00:00:25,470

-a way for the analyst, the developers, to communicate with

-

-9

-00:00:25,470 --> 00:00:28,460

-the customers, with the stakeholders. System requirements, on the

-

-10

-00:00:28,460 --> 00:00:32,560

-other hand, are written for developers. Contain detailed functional and

-

-11

-00:00:32,560 --> 00:00:35,330

-non functional requirements. Which we just discussed, and which

-

-12

-00:00:35,330 --> 00:00:39,860

-are clearly and more rigourously specified than the user requirements.

-

-13

-00:00:39,860 --> 00:00:42,130

-And the reason for this difference is that the

-

-14

-00:00:42,130 --> 00:00:45,410

-purpose of the system requirements is to tell developers what

-

-15

-00:00:45,410 --> 00:00:47,870

-to build. They must contain enough details so the

-

-16

-00:00:47,870 --> 00:00:50,480

-developers can take them and use them to design and

-

-17

-00:00:50,480 --> 00:00:52,530

-then develop a system. Just to give you a concrete

-

-18

-00:00:52,530 --> 00:00:55,750

-example, here I'm showing you a user requirement that just says

-

-19

-00:00:55,750 --> 00:00:59,510

-that the software must provide a means of representing and accessing

-

-20

-00:00:59,510 --> 00:01:03,940

-external files created by other tools, and the corresponding system requirement.

-

-21

-00:01:03,940 --> 00:01:05,700

-And as you can see, even if we don't read the

-

-22

-00:01:05,700 --> 00:01:09,380

-whole requirements. The former is an informal and high level description

-

-23

-00:01:09,380 --> 00:01:12,210

-of a piece of functionality, whereas the latter describes the same

-

-24

-00:01:12,210 --> 00:01:15,940

-functionality but in a much more extensive and rigorous way. As

-

-25

-00:01:15,940 --> 00:01:18,760

-I said, this is something that the developers can use to

-

-26

-00:01:18,760 --> 00:01:21,820

-design and then build a system whereas this is something that

-

-27

-00:01:21,820 --> 00:01:25,590

-can be used to communicate. With the stakeholders, with a non-technical

-

-28

-00:01:25,590 --> 00:01:29,490

-audience. And we need to define both because they serve different purposes.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/21 - Requirements Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/21 - Requirements Quiz - lang_en_vs4.srt
deleted file mode 100644
index 4b416e8..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/21 - Requirements Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,43 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,940

-After all these talking about requirements, let's have a small quiz, I

-

-2

-00:00:02,940 --> 00:00:04,019

-want to ask you which of the

-

-3

-00:00:04,019 --> 00:00:07,840

-following requirements are non-functional requirements? And here

-

-4

-00:00:07,840 --> 00:00:10,860

-I'm listing the requirements, the first one says at the BowlingAlley program

-

-5

-00:00:10,860 --> 00:00:13,420

-keeps track of the score during a game, the second one is that

-

-6

-00:00:13,420 --> 00:00:16,720

-the WordCount program should be able to process large files. The third

-

-7

-00:00:16,720 --> 00:00:19,580

-one is that the Login program for a website. Should be secure, and

-

-8

-00:00:19,580 --> 00:00:22,880

-finally the last one says that the vending machine program should take coins

-

-9

-00:00:22,880 --> 00:00:25,430

-as an input from the user. So, I want you to mark all

-

-10

-00:00:25,430 --> 00:00:27,590

-the ones that are non-functional requirements, that

-

-11

-00:00:27,590 --> 00:00:29,640

-don't refer to the functionality of the system.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/22 - Requirements Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/22 - Requirements Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index e957484..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/22 - Requirements Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,120 --> 00:00:03,710

-So, the first requirement clearly refers to some specific functionality of

-

-2

-00:00:03,710 --> 00:00:07,230

-the Bowling Alley system, because it talks about what the system has

-

-3

-00:00:07,230 --> 00:00:10,420

-to do from a functional standpoint. So, it's definitely not a non-functional

-

-4

-00:00:10,420 --> 00:00:13,400

-requirement. On the other hand, the fact that the Word Count system

-

-5

-00:00:13,400 --> 00:00:16,320

-should be able to process large files, is telling us something not

-

-6

-00:00:16,320 --> 00:00:19,580

-about the functionality of the system, but rather about its qualities. The

-

-7

-00:00:19,580 --> 00:00:21,600

-fact that it has to be scalable, that it has to be

-

-8

-00:00:21,600 --> 00:00:25,190

-efficient and so we can consider this to be a non-functional requirement.

-

-9

-00:00:25,190 --> 00:00:27,010

-Similarly, the fact that the Login program for a

-

-10

-00:00:27,010 --> 00:00:29,390

-website should be secure is definitely telling us something

-

-11

-00:00:29,390 --> 00:00:31,800

-about the quality of the system that has little

-

-12

-00:00:31,800 --> 00:00:34,026

-to do with its functionality. And so this is

-

-13

-00:00:34,026 --> 00:00:36,680

-also a non-functional requirement. Finally, the fact that the

-

-14

-00:00:36,680 --> 00:00:38,980

-Vending Machine program should take coins as an input

-

-15

-00:00:38,980 --> 00:00:41,010

-from the user is telling us something about the

-

-16

-00:00:41,010 --> 00:00:44,100

-functionality of the program and therefore, is a functional requirement.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/23 - Requirement Origins - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/23 - Requirement Origins - lang_en_vs4.srt
deleted file mode 100644
index 6fe4931..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/23 - Requirement Origins - lang_en_vs4.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,130 --> 00:00:01,880

-Now that we know what the requirements are and

-

-2

-00:00:01,880 --> 00:00:05,520

-their main types, let's discuss where requirements come from and

-

-3

-00:00:05,520 --> 00:00:08,610

-there are many possible sources for requirements so I'm

-

-4

-00:00:08,610 --> 00:00:10,610

-going to list here the main ones. The first one are

-

-5

-00:00:10,610 --> 00:00:14,440

-clearly stakeholders, anybody who is effected by the system

-

-6

-00:00:14,440 --> 00:00:18,830

-and its functionality. Customers, users, and so on. The second

-

-7

-00:00:18,830 --> 00:00:22,610

-typical social requirement is the application domain. For example,

-

-8

-00:00:22,610 --> 00:00:25,380

-the fact that my software is running within a bank,

-

-9

-00:00:25,380 --> 00:00:27,930

-or within a school. Why is the application domain a

-

-10

-00:00:27,930 --> 00:00:31,410

-social requirement? Well, because there are constraints that are characteristics

-

-11

-00:00:31,410 --> 00:00:34,140

-of the application domain that will affect the functionality of

-

-12

-00:00:34,140 --> 00:00:37,130

-the system. For a simple example, just think about regulations.

-

-13

-00:00:37,130 --> 00:00:40,400

-So banking regulations and school regulations in these cases. Those

-

-14

-00:00:40,400 --> 00:00:43,120

-are things that might affect the functionality of my system

-

-15

-00:00:43,120 --> 00:00:45,570

-and, therefore, that may become part of my requirements. And,

-

-16

-00:00:45,570 --> 00:00:50,120

-finally, documentation can be an additional source of requirements. For example,

-

-17

-00:00:50,120 --> 00:00:54,110

-notes, papers, manuals, books. So everything that refers to

-

-18

-00:00:54,110 --> 00:00:56,610

-the functionality of the system that we're going to build.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/24 - Elicitation Problems - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/24 - Elicitation Problems - lang_en_vs4.srt
deleted file mode 100644
index 2d81db7..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/24 - Elicitation Problems - lang_en_vs4.srt
+++ /dev/null
@@ -1,179 +0,0 @@
-1

-00:00:00,190 --> 00:00:03,440

-Unfortunately, extracting requirements from these sources is not

-

-2

-00:00:03,440 --> 00:00:06,220

-a straightforward task, as there are many issues involved

-

-3

-00:00:06,220 --> 00:00:09,470

-with the requirements elicitation. One first problem is the

-

-4

-00:00:09,470 --> 00:00:13,930

-thin spread of domain knowledge. Knowledge is rarely available

-

-5

-00:00:13,930 --> 00:00:15,970

-in an explicit form, that is, it is

-

-6

-00:00:15,970 --> 00:00:20,310

-almost never written down. Moreover, knowledge is often distributed

-

-7

-00:00:20,310 --> 00:00:23,410

-across many sources. For example, in the graphical depiction

-

-8

-00:00:23,410 --> 00:00:25,590

-here, to find out that this is the purpose

-

-9

-00:00:25,590 --> 00:00:28,240

-of the project. The developer, the analyist, needs to talk

-

-10

-00:00:28,240 --> 00:00:30,870

-to a lot of different people. And, to make things even

-

-11

-00:00:30,870 --> 00:00:34,400

-worse. There are often conflicts between the knowledge gathered from

-

-12

-00:00:34,400 --> 00:00:37,610

-different sources. A second issue is the fact that the knowledge

-

-13

-00:00:37,610 --> 00:00:41,090

-is often tacit. What is also called the say, do

-

-14

-00:00:41,090 --> 00:00:44,052

-problem. In the example shown here. For instance. We have a

-

-15

-00:00:44,052 --> 00:00:47,650

-customer that is describing to the analyst. The way in which

-

-16

-00:00:47,650 --> 00:00:51,060

-he accomplishes a task. So it performs these three steps and

-

-17

-00:00:51,060 --> 00:00:54,300

-reaches the goal. Whereas in practice, the actual way in

-

-18

-00:00:54,300 --> 00:00:57,530

-which this task accomplished is by going through a larger number

-

-19

-00:00:57,530 --> 00:00:59,880

-of steps to get to the same goal. So the point

-

-20

-00:00:59,880 --> 00:01:02,650

-here is that, even if the knowledge were more concentrated, so

-

-21

-00:01:02,650 --> 00:01:05,660

-not as spread as in this example. People simply find

-

-22

-00:01:05,660 --> 00:01:08,680

-it hard to describe knowledge that they regularly use. So it

-

-23

-00:01:08,680 --> 00:01:11,740

-is hard to make this knowledge explicit, to pass this knowledge

-

-24

-00:01:11,740 --> 00:01:13,130

-to someone else. Yet another

-

-25

-00:01:13,130 --> 00:01:16,690

-problem is limited observability. Identifying requirements

-

-26

-00:01:16,690 --> 00:01:20,570

-through observation is often difficult as the problem owners might be

-

-27

-00:01:20,570 --> 00:01:23,550

-too busy to perform the task that we need to observe.

-

-28

-00:01:23,550 --> 00:01:25,750

-Or they might be doing a lot of other things together

-

-29

-00:01:25,750 --> 00:01:27,980

-with the task that we need to observe, so that becomes

-

-30

-00:01:27,980 --> 00:01:31,530

-confusing. That introduces noise. Moreover, even when this is not the

-

-31

-00:01:31,530 --> 00:01:34,460

-case, the presence of an observer might change their problem. It

-

-32

-00:01:34,460 --> 00:01:38,020

-is very typical for human subjects to improve or modify an

-

-33

-00:01:38,020 --> 00:01:41,760

-aspect of their behavior, which is being experimentally measured in response

-

-34

-00:01:41,760 --> 00:01:44,110

-to the fact that they know that they're being studied. You know

-

-35

-00:01:44,110 --> 00:01:47,110

-that somebody's studying you and you change the way in which you behave.

-

-36

-00:01:47,110 --> 00:01:50,910

-A typical issue. Finally, the information that we collect might be biased.

-

-37

-00:01:50,910 --> 00:01:54,270

-For several reasons. People might not feel free to tell you what you

-

-38

-00:01:54,270 --> 00:01:57,030

-need to know. Or, people might not want to tell you what

-

-39

-00:01:57,030 --> 00:02:00,240

-you need to know. For example, in all the common cases in which

-

-40

-00:02:00,240 --> 00:02:03,870

-the outcome might effect them, people might provide you a different picture

-

-41

-00:02:03,870 --> 00:02:06,770

-from the real one. In order to influence you. So, they might have

-

-42

-00:02:06,770 --> 00:02:08,820

-a hidden agenda, and mislead you, either

-

-43

-00:02:08,820 --> 00:02:11,860

-consciously or unconsciously. So, all these issues

-

-44

-00:02:11,860 --> 00:02:14,370

-add to the complexity of collecting requirements,

-

-45

-00:02:14,370 --> 00:02:16,522

-of identifying the purpose of a system.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/25 - Traditional Techniques - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/25 - Traditional Techniques - lang_en_vs5.srt
deleted file mode 100644
index cc58665..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/25 - Traditional Techniques - lang_en_vs5.srt
+++ /dev/null
@@ -1,207 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,930

-To cover the intrinsic problem of eliciting requirements,

-

-2

-00:00:02,930 --> 00:00:05,670

-many different techniques have been proposed. So here

-

-3

-00:00:05,670 --> 00:00:08,260

-I list some of most traditional techniques for

-

-4

-00:00:08,260 --> 00:00:11,290

-requirement elicitation and as I present those, please keep

-

-5

-00:00:11,290 --> 00:00:13,140

-in mind that these techniques can be used

-

-6

-00:00:13,140 --> 00:00:17,230

-separately or combined. A first technique is called background

-

-7

-00:00:17,230 --> 00:00:20,740

-reading. And, this technique involves collecting information by

-

-8

-00:00:20,740 --> 00:00:24,840

-reading existing documents such as company reports, organizational charts,

-

-9

-00:00:24,840 --> 00:00:29,280

-policy manuals, job descriptions, documentation of existing systems and so

-

-10

-00:00:29,280 --> 00:00:32,400

-on. And, this technique is especially appropriate when one Is

-

-11

-00:00:32,400 --> 00:00:35,370

-not familiar with your organization for which the requirements are

-

-12

-00:00:35,370 --> 00:00:38,950

-being collected. So you want to get some background before interviewing

-

-13

-00:00:38,950 --> 00:00:41,240

-actual people. And one of the main imitations of these

-

-14

-00:00:41,240 --> 00:00:43,930

-kinds of approaches is that written documents might be out

-

-15

-00:00:43,930 --> 00:00:46,320

-of sync and they often are out of sync with

-

-16

-00:00:46,320 --> 00:00:49,970

-reality. Tend to be long winded. It may contain many irrelevant

-

-17

-00:00:49,970 --> 00:00:51,850

-details, so you may have to look at a lot

-

-18

-00:00:51,850 --> 00:00:54,810

-of materials to extract enough information. The hard data and

-

-19

-00:00:54,810 --> 00:00:58,650

-samples techniques consist in deciding which hard data we want

-

-20

-00:00:58,650 --> 00:01:01,680

-to collect and choosing the sample of the population for which

-

-21

-00:01:01,680 --> 00:01:04,750

-to collect such data and hard data includes facts and

-

-22

-00:01:04,750 --> 00:01:09,790

-figures such as forms, invoices, financial information, survey results, marketing

-

-23

-00:01:09,790 --> 00:01:12,300

-data, and so on. And the sampling of this data

-

-24

-00:01:12,300 --> 00:01:15,170

-can be done in different ways. For example, the typical ways

-

-25

-00:01:15,170 --> 00:01:19,200

-to do random selection. Interviews are another typical approach for

-

-26

-00:01:19,200 --> 00:01:21,870

-requirement solicitation, and this is the approach that we use for

-

-27

-00:01:21,870 --> 00:01:24,910

-the first project in this course, for instance. Interviews can be

-

-28

-00:01:24,910 --> 00:01:27,720

-structured in which case there is an agenda of fairly open

-

-29

-00:01:27,720 --> 00:01:30,450

-questions or they can be open ended in which case there

-

-30

-00:01:30,450 --> 00:01:32,770

-is no preset agenda and the interview is more of a

-

-31

-00:01:32,770 --> 00:01:36,500

-conversation. On the positive side, interviews can collect a rich set

-

-32

-00:01:36,500 --> 00:01:40,260

-of information because they allow for uncovering opinions as well as

-

-33

-00:01:40,260 --> 00:01:43,230

-hard facts. Moreover, they can probe in depth through follow

-

-34

-00:01:43,230 --> 00:01:46,790

-up questions. On the more negative side, interviewing requires special

-

-35

-00:01:46,790 --> 00:01:50,400

-skills that are difficult to master and require experience. And

-

-36

-00:01:50,400 --> 00:01:52,890

-it is not enough to collect a lot of information. If

-

-37

-00:01:52,890 --> 00:01:55,520

-this information is hard to analyze or even irrelevant, it

-

-38

-00:01:55,520 --> 00:01:58,250

-might become useless. So you need to know how to conduct

-

-39

-00:01:58,250 --> 00:02:01,180

-an interview in order to take advantage of these techniques.

-

-40

-00:02:01,180 --> 00:02:05,440

-Surveys can also be extremely useful for gathering new requirements because

-

-41

-00:02:05,440 --> 00:02:08,550

-they can quickly collect information from a large number

-

-42

-00:02:08,550 --> 00:02:11,520

-of people. Moreover, they can be administered remotely. For

-

-43

-00:02:11,520 --> 00:02:13,610

-example, by email, through the web. On the other

-

-44

-00:02:13,610 --> 00:02:16,750

-hand, surveys tend to severely constrain the information that

-

-45

-00:02:16,750 --> 00:02:19,430

-the user can provide and might miss opportunities to

-

-46

-00:02:19,430 --> 00:02:24,460

-collect unforeseen, relevant information. Finally, meetings are generally used

-

-47

-00:02:24,460 --> 00:02:27,690

-for summarization of findings and collection of feedback, so as

-

-48

-00:02:27,690 --> 00:02:30,500

-to confirm or refute what has been learned. So the

-

-49

-00:02:30,500 --> 00:02:32,660

-only additional thing I want to mention about meetings

-

-50

-00:02:32,660 --> 00:02:34,920

-is the fact that it is fundamental that have clearly

-

-51

-00:02:34,920 --> 00:02:37,970

-stated objectives and are planned carefully. This is something that

-

-52

-00:02:37,970 --> 00:02:40,730

-should be quite obvious, but doesn't always happen in practice.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/26 - Other Techniques - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/26 - Other Techniques - lang_en_vs5.srt
deleted file mode 100644
index f29fb9c..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/26 - Other Techniques - lang_en_vs5.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,070 --> 00:00:02,370

-So just for completeness, I want to mention some other

-

-2

-00:00:02,370 --> 00:00:05,340

-techniques besides the traditional ones that we just saw that

-

-3

-00:00:05,340 --> 00:00:07,880

-can be used for requirements solicitation. And these other

-

-4

-00:00:07,880 --> 00:00:10,740

-techniques can be divided in three main groups. There are

-

-5

-00:00:10,740 --> 00:00:14,820

-collaborative techniques that were created to support incremental development

-

-6

-00:00:14,820 --> 00:00:18,850

-of complex systems with large diverse user populations. An example

-

-7

-00:00:18,850 --> 00:00:21,130

-of such techniques which is widely used and you

-

-8

-00:00:21,130 --> 00:00:25,120

-might know is brainstorming. There are also social approaches and

-

-9

-00:00:25,120 --> 00:00:28,140

-these are approaches, techniques that exploit the social

-

-10

-00:00:28,140 --> 00:00:31,520

-sciences to better collect information from the stakeholders and

-

-11

-00:00:31,520 --> 00:00:34,310

-the environment. And among those I just want to mention

-

-12

-00:00:34,310 --> 00:00:36,730

-ethnographic techniques which are based on the idea of

-

-13

-00:00:36,730 --> 00:00:40,100

-collecting information on the participants by observing them

-

-14

-00:00:40,100 --> 00:00:44,660

-in their original environment. Finally cognitive techniques, leverage cognitive

-

-15

-00:00:44,660 --> 00:00:48,490

-science approaches to discover expert knowledge for example they

-

-16

-00:00:48,490 --> 00:00:51,260

-can be used to understand the problem solving methods.

-

-17

-00:00:51,260 --> 00:00:54,000

-And in case you're interested in finding out more about this and

-

-18

-00:00:54,000 --> 00:00:57,580

-other techniques, I'm providing some references in the notes for the lesson.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/27 - Modeling Requirements - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/27 - Modeling Requirements - lang_en_vs4.srt
deleted file mode 100644
index d4ade17..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/27 - Modeling Requirements - lang_en_vs4.srt
+++ /dev/null
@@ -1,223 +0,0 @@
-1

-00:00:00,220 --> 00:00:03,550

-Once we collected the required knowledge on the requirements for

-

-2

-00:00:03,550 --> 00:00:06,120

-the system that we're developing, we need to model it in

-

-3

-00:00:06,120 --> 00:00:08,430

-a structured and clear way, so that it can be

-

-4

-00:00:08,430 --> 00:00:12,100

-analyzed and refined. And there are really tons of ways to

-

-5

-00:00:12,100 --> 00:00:15,840

-do that, depending on your focus and objectives. More specifically,

-

-6

-00:00:15,840 --> 00:00:18,940

-when modeling requirements you need to decide what you want to

-

-7

-00:00:18,940 --> 00:00:21,710

-model and how you want to model it. So let's look

-

-8

-00:00:21,710 --> 00:00:25,390

-at these two aspects independently. What you decide to model depends

-

-9

-00:00:25,390 --> 00:00:28,270

-on where your emphasis is. That is on which

-

-10

-00:00:28,270 --> 00:00:31,390

-aspects of the requirements you want to focus. For

-

-11

-00:00:31,390 --> 00:00:34,880

-example if your emphasis is on the characteristics of

-

-12

-00:00:34,880 --> 00:00:37,970

-the enterprise of the company that you are analyzing you

-

-13

-00:00:37,970 --> 00:00:40,240

-may want to model goals and objectives of the

-

-14

-00:00:40,240 --> 00:00:44,380

-company, or its organizational structure, its task and dependencies

-

-15

-00:00:44,380 --> 00:00:47,040

-and so on. Conversely, if your focus is on

-

-16

-00:00:47,040 --> 00:00:50,500

-information and behaviors, you might want to concentrate on aspects

-

-17

-00:00:50,500 --> 00:00:53,800

-such as the structure of information, various behavioral views

-

-18

-00:00:53,800 --> 00:00:55,480

-some of which we will see in the next

-

-19

-00:00:55,480 --> 00:00:59,650

-lesson, or maybe time or sequencing requirements. Finally, if

-

-20

-00:00:59,650 --> 00:01:02,750

-you're mostly interested in the quality aspects of your

-

-21

-00:01:02,750 --> 00:01:06,790

-system, you will focus on the various non-functional properties

-

-22

-00:01:06,790 --> 00:01:09,070

-of the software that are relevant in the context

-

-23

-00:01:09,070 --> 00:01:13,570

-considered. For example reliability, robustness, security, and so on.

-

-24

-00:01:13,570 --> 00:01:15,550

-You will just pick the ones that are relevant for

-

-25

-00:01:15,550 --> 00:01:18,540

-your context. And as we said, there's a second dimension.

-

-26

-00:01:18,540 --> 00:01:21,050

-After you have decided what to model in your system,

-

-27

-00:01:21,050 --> 00:01:23,480

-you have to decide how you want to model it.

-

-28

-00:01:23,480 --> 00:01:25,860

-So I want to show here some options for modeling

-

-29

-00:01:25,860 --> 00:01:30,380

-enterprises, information, and quality aspects. And as you can see

-

-30

-00:01:30,380 --> 00:01:34,100

-here for each type of information there are many possible

-

-31

-00:01:34,100 --> 00:01:36,840

-models that we can use to represent it. And all

-

-32

-00:01:36,840 --> 00:01:38,750

-these models have advantages and

-

-33

-00:01:38,750 --> 00:01:41,400

-disadvantages, different levels of formality and

-

-34

-00:01:41,400 --> 00:01:44,000

-different focus. Something else that I want to point out

-

-35

-00:01:44,000 --> 00:01:47,145

-about these models is the fact that these models are often

-

-36

-00:01:47,145 --> 00:01:50,980

-orthogonal to one another, especially if we consider models in different

-

-37

-00:01:50,980 --> 00:01:54,620

-categories. So what that means is that they're complimentary rather than

-

-38

-00:01:54,620 --> 00:01:58,310

-mutually exclusive. Different models can be used to provide views

-

-39

-00:01:58,310 --> 00:02:01,290

-of the requirements from different perspectives, and we will not see

-

-40

-00:02:01,290 --> 00:02:03,700

-most of these models in this course, but I wanted to

-

-41

-00:02:03,700 --> 00:02:06,550

-list them anyways to give you an idea of how many

-

-42

-00:02:06,550 --> 00:02:09,490

-there are and how vast is this area. As far

-

-43

-00:02:09,490 --> 00:02:11,540

-as we are concerned in the course and for the

-

-44

-00:02:11,540 --> 00:02:14,660

-projects we will express requirements using one of two main

-

-45

-00:02:14,660 --> 00:02:19,010

-ways. Using natural language, that is informal specifications and using

-

-46

-00:02:19,010 --> 00:02:22,600

-UML diagrams, which is graphical models. And we will introduce

-

-47

-00:02:22,600 --> 00:02:25,840

-UML and the most important diagrams in the next lesson.

-

-48

-00:02:25,840 --> 00:02:27,330

-And the only other type of models that I want

-

-49

-00:02:27,330 --> 00:02:31,610

-to mentions explicitly are goal models because they're extremely popular.

-

-50

-00:02:31,610 --> 00:02:34,930

-So the main idea with goal models is it start with the main goal of

-

-51

-00:02:34,930 --> 00:02:36,990

-the system and then keep refining it

-

-52

-00:02:36,990 --> 00:02:39,654

-by decomposing it in sub-goals. So it's kind

-

-53

-00:02:39,654 --> 00:02:41,610

-of a very natural way of progressing.

-

-54

-00:02:41,610 --> 00:02:44,210

-And you continue this refinement until you get

-

-55

-00:02:44,210 --> 00:02:47,150

-to goals that can be operationalized, and represent

-

-56

-00:02:47,150 --> 00:02:49,380

-the basic units of functionality of the system.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/28 - Analyzing Requirements - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/28 - Analyzing Requirements - lang_en_vs4.srt
deleted file mode 100644
index c7d4899..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/28 - Analyzing Requirements - lang_en_vs4.srt
+++ /dev/null
@@ -1,155 +0,0 @@
-1

-00:00:00,250 --> 00:00:01,940

-Now we are at the point in which we

-

-2

-00:00:01,940 --> 00:00:05,590

-have collected and modeled our requirements. So the next thing

-

-3

-00:00:05,590 --> 00:00:08,310

-that we can do is to analyze the requirements to

-

-4

-00:00:08,310 --> 00:00:11,720

-identify possible problems, and specifically there are three types of

-

-5

-00:00:11,720 --> 00:00:14,646

-analysis that we can perform. The first type of analysis

-

-6

-00:00:14,646 --> 00:00:16,820

-is verification. So in this case we're talking about the

-

-7

-00:00:16,820 --> 00:00:19,700

-requirements verification. And in verification

-

-8

-00:00:19,700 --> 00:00:21,990

-developers will study the requirements

-

-9

-00:00:21,990 --> 00:00:25,270

-to check whether they're correct, whether they accurately reflect the

-

-10

-00:00:25,270 --> 00:00:28,710

-customer needs as perceived by the developer. Developers can

-

-11

-00:00:28,710 --> 00:00:32,170

-also check the completeness of the requirements, check whether there

-

-12

-00:00:32,170 --> 00:00:34,510

-are any missing pieces in the requirements as we

-

-13

-00:00:34,510 --> 00:00:37,710

-discussed earlier. They can check whether the requirements are pertinent,

-

-14

-00:00:37,710 --> 00:00:41,260

-or contain irrelevant information, like the one shown here.

-

-15

-00:00:41,260 --> 00:00:44,670

-And they can also check whether they're consistent, unambiguous, testable

-

-16

-00:00:44,670 --> 00:00:46,920

-and so on, so all those properties that should

-

-17

-00:00:46,920 --> 00:00:50,380

-be satisfied for the requirements. A second type of analysis

-

-18

-00:00:50,380 --> 00:00:53,670

-that is typically performed on requirements is validation. And

-

-19

-00:00:53,670 --> 00:00:56,290

-the goal of validation is to assess whether the collected

-

-20

-00:00:56,290 --> 00:00:59,870

-requirements define the system that the stakeholders really want.

-

-21

-00:00:59,870 --> 00:01:02,330

-So the focus here is on the stakeholders. And in

-

-22

-00:01:02,330 --> 00:01:05,670

-some cases, stakeholders can check the requirements directly if

-

-23

-00:01:05,670 --> 00:01:08,910

-the requirements are expressed in a notation that they understand.

-

-24

-00:01:08,910 --> 00:01:11,120

-Or they might check them by discussing them with the

-

-25

-00:01:11,120 --> 00:01:15,490

-developers. Another possibility is that stakeholders asses the requirements by

-

-26

-00:01:15,490 --> 00:01:18,400

-interacting with a prototype of the system, in case

-

-27

-00:01:18,400 --> 00:01:21,690

-the requirements engineering process that is being used involves

-

-28

-00:01:21,690 --> 00:01:25,300

-early prototyping. And finally surveys, testing, and other techniques

-

-29

-00:01:25,300 --> 00:01:28,400

-can also be used to validate requirements. A final type

-

-30

-00:01:28,400 --> 00:01:30,780

-of analysis that we can perform on requirements is

-

-31

-00:01:30,780 --> 00:01:34,430

-risk analysis. And risk analysis aims to identify and

-

-32

-00:01:34,430 --> 00:01:37,680

-analyze the main risks involved with the development of

-

-33

-00:01:37,680 --> 00:01:40,560

-the system being considered. And if some requirements are deemed

-

-34

-00:01:40,560 --> 00:01:43,320

-to be too risky, like in this case, this might result in

-

-35

-00:01:43,320 --> 00:01:47,880

-changes in the requirements model to eliminate or address those risks. And note

-

-36

-00:01:47,880 --> 00:01:49,950

-that all these analysis activities can

-

-37

-00:01:49,950 --> 00:01:52,390

-be performed in many different ways depending

-

-38

-00:01:52,390 --> 00:01:53,990

-on the modeling languages chosen to

-

-39

-00:01:53,990 --> 00:01:56,150

-represent the requirements and on the context.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/29 - Requirements Prioritization - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/29 - Requirements Prioritization - lang_en_vs5.srt
deleted file mode 100644
index 09978d7..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/29 - Requirements Prioritization - lang_en_vs5.srt
+++ /dev/null
@@ -1,59 +0,0 @@
-1

-00:00:00,140 --> 00:00:04,010

-Why collecting, modeling, and analyzing requirements? We might realize

-

-2

-00:00:04,010 --> 00:00:07,310

-that the resources available for the project are not enough

-

-3

-00:00:07,310 --> 00:00:10,000

-to satisfy all of them. For example, there's not

-

-4

-00:00:10,000 --> 00:00:13,450

-enough time, not enough money, not enough manpower. And therefore,

-

-5

-00:00:13,450 --> 00:00:15,590

-there are some requirements that we won't be able

-

-6

-00:00:15,590 --> 00:00:19,760

-to satisfy. In these cases, we must prioritize our requirements,

-

-7

-00:00:19,760 --> 00:00:22,310

-by classifying them in one of three classes. The

-

-8

-00:00:22,310 --> 00:00:25,270

-first class is mandatory requirements, and these are the requirements

-

-9

-00:00:25,270 --> 00:00:29,770

-we must satisfy. Then there are the nice to have requirements that are the

-

-10

-00:00:29,770 --> 00:00:32,170

-ones that we will satisfy if resources

-

-11

-00:00:32,170 --> 00:00:34,740

-allow. And finally, there are the superfluous

-

-12

-00:00:34,740 --> 00:00:36,440

-requirements, and those are the requirements that

-

-13

-00:00:36,440 --> 00:00:37,770

-we're going to keep around, but that we're

-

-14

-00:00:37,770 --> 00:00:40,010

-going to postpone. For example, we might decide

-

-15

-00:00:40,010 --> 00:00:41,770

-to satisfy them in the next release.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/3 - General RE Definition - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/3 - General RE Definition - lang_en_vs4.srt
deleted file mode 100644
index 34ec511..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/3 - General RE Definition - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,360 --> 00:00:03,900

-Basically, and roughly speaking, requirements engineering, which is

-

-2

-00:00:03,900 --> 00:00:06,630

-also called in short, RE, is the process

-

-3

-00:00:06,630 --> 00:00:10,520

-of establishing the services that the customer requires

-

-4

-00:00:10,520 --> 00:00:13,530

-from the software system. In addition to that, requirements

-

-5

-00:00:13,530 --> 00:00:16,360

-engineering also has to do with the constraints

-

-6

-00:00:16,360 --> 00:00:19,900

-under which the system operates and is developed. Requirements

-

-7

-00:00:19,900 --> 00:00:22,770

-engineering is a very important activity for several

-

-8

-00:00:22,770 --> 00:00:25,450

-reasons. In particular, as we also saw in earlier

-

-9

-00:00:25,450 --> 00:00:29,860

-lessons, many errors are made in requirement specifications. So many

-

-10

-00:00:29,860 --> 00:00:33,100

-errors are made because we don't do requirements engineering in

-

-11

-00:00:33,100 --> 00:00:35,670

-the right way. And many of these errors are not

-

-12

-00:00:35,670 --> 00:00:38,340

-being detected early. But they could be if we were

-

-13

-00:00:38,340 --> 00:00:41,350

-to do RE in the right way. And, unfortunately, not

-

-14

-00:00:41,350 --> 00:00:45,510

-detecting these errors can dramatically increase software costs. So that's

-

-15

-00:00:45,510 --> 00:00:48,250

-the reason why requirements engineering is important, and why it

-

-16

-00:00:48,250 --> 00:00:50,730

-is important to do it in the right way. The final

-

-17

-00:00:50,730 --> 00:00:53,660

-result of the requirements engineering process is a software

-

-18

-00:00:53,660 --> 00:00:58,230

-requirements specification that we also called SRS. We will discuss

-

-19

-00:00:58,230 --> 00:01:01,060

-SRS later in more details and also when we talk

-

-20

-00:01:01,060 --> 00:01:03,740

-about the projects for the course. For now, it is

-

-21

-00:01:03,740 --> 00:01:07,040

-enough to say that the software requirements specification and

-

-22

-00:01:07,040 --> 00:01:10,280

-the requirements engineering, in general, should focus on what the

-

-23

-00:01:10,280 --> 00:01:13,290

-proposed system is intended to do, and not on the

-

-24

-00:01:13,290 --> 00:01:16,280

-how it will do it. In fact, how the system

-

-25

-00:01:16,280 --> 00:01:18,450

-will do what it is required to do is something that we

-

-26

-00:01:18,450 --> 00:01:22,170

-will discuss when we talk about design of a system in later phases.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/30 - Requirements Prioritization Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/30 - Requirements Prioritization Quiz - lang_en_vs4.srt
deleted file mode 100644
index 9415793..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/30 - Requirements Prioritization Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,090

-Now that we talked about requirements prioritization, let's try to see

-

-2

-00:00:03,090 --> 00:00:06,110

-how this might work in practice. Imagine that you have collected the

-

-3

-00:00:06,110 --> 00:00:09,560

-folowing set of five requirements for an ATM system, but only

-

-4

-00:00:09,560 --> 00:00:12,680

-have resources to satisfy two of them. Possibly three. I would like

-

-5

-00:00:12,680 --> 00:00:15,550

-for you to look at this list and suitablely prioritize the

-

-6

-00:00:15,550 --> 00:00:19,220

-requirements by marking them as mandatory, in this case you're going to put

-

-7

-00:00:19,220 --> 00:00:21,840

-an M in the space. Nice to have, in this case you're

-

-8

-00:00:21,840 --> 00:00:25,350

-going to put an N. Or superfluous, in this case you're going to put

-

-9

-00:00:25,350 --> 00:00:28,005

-an S. This is the set of requirements, the first one

-

-10

-00:00:28,005 --> 00:00:30,342

-says that the system shall check the PIN of the ATM

-

-11

-00:00:30,342 --> 00:00:33,863

-card before allowing the customer to perform an operation. The second

-

-12

-00:00:33,863 --> 00:00:37,575

-says that the system shall perform an additional biometric verification of

-

-13

-00:00:37,575 --> 00:00:40,881

-the customer identity for example a check of the customer's finger

-

-14

-00:00:40,881 --> 00:00:44,294

-prints before it allows the customer to perform an operation. Then

-

-15

-00:00:44,294 --> 00:00:47,466

-we have that the system shall allow customers to withdraw cash

-

-16

-00:00:47,466 --> 00:00:50,580

-using an ATM card. The system shall allow customer to deposit

-

-17

-00:00:50,580 --> 00:00:53,350

-money using an ATM card. And the system shall allow

-

-18

-00:00:53,350 --> 00:00:56,330

-customers to change the pin of their ATM card. So again,

-

-19

-00:00:56,330 --> 00:01:00,600

-mark those as mandatory, nice to have, or superfluous considering the

-

-20

-00:01:00,600 --> 00:01:04,170

-fact that you can satisfy only two, possibly three of them.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/31 - Requirements Prioritization Quiz Solution - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/31 - Requirements Prioritization Quiz Solution - lang_en_vs5.srt
deleted file mode 100644
index e2fd768..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/31 - Requirements Prioritization Quiz Solution - lang_en_vs5.srt
+++ /dev/null
@@ -1,119 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,640

-Looking at the requirements, and knowing that we have only two

-

-2

-00:00:02,640 --> 00:00:05,630

-that we can satisfy for sure, it makes sense to first mark

-

-3

-00:00:05,630 --> 00:00:09,080

-as mandatory the ability to withdraw cash, which is the most typical

-

-4

-00:00:09,080 --> 00:00:12,650

-use of an ATM machine. We are therefore going to mark this requirement

-

-5

-00:00:12,650 --> 00:00:15,260

-with an M, for mandatory. It also makes sense to mark as

-

-6

-00:00:15,260 --> 00:00:18,390

-mandatory the fact that the ATM system checks the PIN of the

-

-7

-00:00:18,390 --> 00:00:21,480

-card being used by the customer, as that's the typical level of

-

-8

-00:00:21,480 --> 00:00:23,680

-security that the customer would expect,

-

-9

-00:00:23,680 --> 00:00:25,760

-therefore we're going to mark as mandatory

-

-10

-00:00:25,760 --> 00:00:28,320

-also the first requirement here. And of course we

-

-11

-00:00:28,320 --> 00:00:31,930

-could also perform biometric verification, but based on our knowledge

-

-12

-00:00:31,930 --> 00:00:33,640

-of the domain, it seems like that should be

-

-13

-00:00:33,640 --> 00:00:37,410

-an additional verification, rather than the main and only verification

-

-14

-00:00:37,410 --> 00:00:40,170

-for the system. We will therefore mark it superfluous.

-

-15

-00:00:40,170 --> 00:00:42,720

-That is something that we can postpone until a later

-

-16

-00:00:42,720 --> 00:00:45,100

-release, the second requirement. Finally,

-

-17

-00:00:45,100 --> 00:00:46,740

-another typical operation that customers

-

-18

-00:00:46,740 --> 00:00:51,070

-perform at ATM machines is depositing. Whereas changing an ATM

-

-19

-00:00:51,070 --> 00:00:53,850

-card's PIN is not such a common operation. We'll therefore mark

-

-20

-00:00:53,850 --> 00:00:57,710

-it nice to have this fourth requirement and as superfluous, the

-

-21

-00:00:57,710 --> 00:01:00,420

-last one. So at the end, what we have is that

-

-22

-00:01:00,420 --> 00:01:03,540

-we have two mandatory requirements which are the two that we can

-

-23

-00:01:03,540 --> 00:01:06,280

-satisfy for sure. One, nice to have the requirement, which is

-

-24

-00:01:06,280 --> 00:01:09,960

-the possible third requirement which we might have time to satisfy. And

-

-25

-00:01:09,960 --> 00:01:12,980

-the other two that are marked as superfluous, as something that

-

-26

-00:01:12,980 --> 00:01:16,100

-we might do later, for example in a subsequent release. And of

-

-27

-00:01:16,100 --> 00:01:19,060

-course there is something subjective in these answers. But

-

-28

-00:01:19,060 --> 00:01:22,020

-again, based on our knowledge on our understanding of

-

-29

-00:01:22,020 --> 00:01:23,910

-the domain, these are the one that makes more

-

-30

-00:01:23,910 --> 00:01:26,640

-sense for an ATM system as we know it.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/32 - Requirements Engineering Process - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/32 - Requirements Engineering Process - lang_en_vs4.srt
deleted file mode 100644
index aa1ab28..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/32 - Requirements Engineering Process - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,180 --> 00:00:02,580

-Let's now put together all that we have discussed

-

-2

-00:00:02,580 --> 00:00:06,340

-and see how a requirements engineering process actually works.

-

-3

-00:00:06,340 --> 00:00:08,450

-So, first of all, we saw that requirements engineering

-

-4

-00:00:08,450 --> 00:00:12,080

-consists of three main steps. Elicitation of the requirements,

-

-5

-00:00:12,080 --> 00:00:15,450

-in which we extract requirements from various sources. Modeling

-

-6

-00:00:15,450 --> 00:00:17,880

-in which we represent the requirements using one or

-

-7

-00:00:17,880 --> 00:00:21,650

-more notations or formal reasons and analysis, in which

-

-8

-00:00:21,650 --> 00:00:25,230

-we identify possible issues with our requirements and there is

-

-9

-00:00:25,230 --> 00:00:27,870

-actually a 4th step that we kind of mention

-

-10

-00:00:27,870 --> 00:00:30,670

-but not explicitly. And this is the negotiation that can

-

-11

-00:00:30,670 --> 00:00:34,320

-happen between the stakeholders and the developers, during which

-

-12

-00:00:34,320 --> 00:00:38,400

-requirements are discussed and modified until an agreement is reached.

-

-13

-00:00:38,400 --> 00:00:40,000

-So if you want to think of this as a

-

-14

-00:00:40,000 --> 00:00:43,030

-process, so as a sequence of steps, we can see

-

-15

-00:00:43,030 --> 00:00:46,000

-that we start from elicitation. So we start by eliciting

-

-16

-00:00:46,000 --> 00:00:50,450

-an initial setup requirements. We negotiate and refine this set,

-

-17

-00:00:50,450 --> 00:00:53,820

-then we model the resulting requirements. And finally, we

-

-18

-00:00:53,820 --> 00:00:58,190

-analyze such requirements. However, the process doesn't really stop here.

-

-19

-00:00:58,190 --> 00:01:00,620

-Why? Well, because as a result of the analysis,

-

-20

-00:01:00,620 --> 00:01:03,230

-we might have to perform further elicitation. And so this

-

-21

-00:01:03,230 --> 00:01:05,850

-process is not really a sequential one, but rather

-

-22

-00:01:05,850 --> 00:01:09,340

-an iterative process. So, in practice, we continue to iterate

-

-23

-00:01:09,340 --> 00:01:12,700

-over these four steps gathering a better and better understanding

-

-24

-00:01:12,700 --> 00:01:15,560

-of the requirements at every iteration until we are happy

-

-25

-00:01:15,560 --> 00:01:18,080

-with the settle requirement that we gather and stop the process.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/33 - SRS - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/33 - SRS - lang_en_vs5.srt
deleted file mode 100644
index 44076db..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/33 - SRS - lang_en_vs5.srt
+++ /dev/null
@@ -1,183 +0,0 @@
-1

-00:00:00,120 --> 00:00:01,800

-Before I conclude this lesson, I want to say

-

-2

-00:00:01,800 --> 00:00:06,150

-a few additional things about the Software Requirement Specification document

-

-3

-00:00:06,150 --> 00:00:08,510

-or the SRS. And I want to do that because this

-

-4

-00:00:08,510 --> 00:00:10,900

-is a very important document and some of the projects

-

-5

-00:00:10,900 --> 00:00:13,160

-actually require you to produce one. So why is

-

-6

-00:00:13,160 --> 00:00:16,760

-the Requirement Specification such an important document? That's because a

-

-7

-00:00:16,760 --> 00:00:20,840

-Software Requirement Specification document is an important fundamental way to

-

-8

-00:00:20,840 --> 00:00:25,310

-communicate. Requirements to others. For example they represent a common

-

-9

-00:00:25,310 --> 00:00:29,490

-ground between analysts and stakeholders. Note however, that different

-

-10

-00:00:29,490 --> 00:00:32,810

-projects might require different software requirement specifications so you

-

-11

-00:00:32,810 --> 00:00:35,560

-need to know your context. For example, the SRS

-

-12

-00:00:35,560 --> 00:00:38,140

-document that you have to create for a small project

-

-13

-00:00:38,140 --> 00:00:40,690

-performed by a few developers can in most cases.

-

-14

-00:00:40,690 --> 00:00:43,570

-Be a concise and informal one. Conversely the software

-

-15

-00:00:43,570 --> 00:00:47,000

-requirement specification for a multi-year project, involving a number

-

-16

-00:00:47,000 --> 00:00:50,480

-of developers can be a fairly complex and extensive document.

-

-17

-00:00:50,480 --> 00:00:52,000

-So again you have to be aware of your

-

-18

-00:00:52,000 --> 00:00:55,520

-context and build your software requirement specification accordingly. In

-

-19

-00:00:55,520 --> 00:00:58,536

-order to have a common format for the SRS

-

-20

-00:00:58,536 --> 00:01:01,380

-document, IEEE defined a standard that divides the document in

-

-21

-00:01:01,380 --> 00:01:04,349

-predefined sections. And in the context of this course,

-

-22

-00:01:04,349 --> 00:01:07,530

-we will use a simplified version of the IEEE

-

-23

-00:01:07,530 --> 00:01:11,400

-SRS format that includes three main sections. An introduction,

-

-24

-00:01:11,400 --> 00:01:15,540

-which discusses the purpose, context, and objectives of the project.

-

-25

-00:01:15,540 --> 00:01:18,500

-A user requirements definition, which contains the user

-

-26

-00:01:18,500 --> 00:01:22,690

-requirements. And the system requirements specification, which includes both

-

-27

-00:01:22,690 --> 00:01:26,800

-functional and non-functional requirements. And we provide more information

-

-28

-00:01:26,800 --> 00:01:29,430

-about this format when we discuss the projects. So

-

-29

-00:01:29,430 --> 00:01:31,140

-to conclude the lesson, I want to point

-

-30

-00:01:31,140 --> 00:01:33,670

-out and in some cases recap a few important

-

-31

-00:01:33,670 --> 00:01:37,150

-characteristics that requirements should have. First of all, requirements

-

-32

-00:01:37,150 --> 00:01:40,740

-should be simple. Not compound. Each requirement should express

-

-33

-00:01:40,740 --> 00:01:43,710

-one specific piece of functionality that the system

-

-34

-00:01:43,710 --> 00:01:47,000

-should provide. Requirements should be testable. We mentioned

-

-35

-00:01:47,000 --> 00:01:48,660

-this before, but I want to stress it

-

-36

-00:01:48,660 --> 00:01:51,820

-because it is a very important point. Untestable requirements

-

-37

-00:01:51,820 --> 00:01:53,850

-such as the system should be fast, are

-

-38

-00:01:53,850 --> 00:01:58,180

-useless. Requirements should be organized. Related requirements should be

-

-39

-00:01:58,180 --> 00:02:01,220

-grouped, more abstract requirements should contain more detailed

-

-40

-00:02:01,220 --> 00:02:05,400

-requirements, and priorities should be clearly indicated when present.

-

-41

-00:02:05,400 --> 00:02:07,532

-Finally, requirements should be numbered, so

-

-42

-00:02:07,532 --> 00:02:09,538

-that they can be traced. For example,

-

-43

-00:02:09,538 --> 00:02:11,430

-numbered requirements will allow you to trace

-

-44

-00:02:11,430 --> 00:02:14,510

-them to design. Implementation and testing elements

-

-45

-00:02:14,510 --> 00:02:17,350

-and items, which is something that you might have to do for one of

-

-46

-00:02:17,350 --> 00:02:20,680

-the projects. And that we will discuss in more detail in a later class.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/4 - Software Intensive Systems - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/4 - Software Intensive Systems - lang_en_vs5.srt
deleted file mode 100644
index 28c70ad..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/4 - Software Intensive Systems - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,100 --> 00:00:03,100

-In our initial definition of requirements engineering, we talked about

-

-2

-00:00:03,100 --> 00:00:06,130

-software systems. But what do we really mean when we

-

-3

-00:00:06,130 --> 00:00:09,980

-use the term software? Software is an abstract description of

-

-4

-00:00:09,980 --> 00:00:13,920

-a set of computations that becomes concrete, and therefore useful, only

-

-5

-00:00:13,920 --> 00:00:16,600

-when we run the software on some hardware, and that,

-

-6

-00:00:16,600 --> 00:00:19,310

-in the context of some human activity that it can

-

-7

-00:00:19,310 --> 00:00:22,530

-support. So what does that mean exactly? What that means

-

-8

-00:00:22,530 --> 00:00:25,235

-is that when we say software, what we really mean is

-

-9

-00:00:25,235 --> 00:00:28,790

-a software intensive system. That is, the combination

-

-10

-00:00:28,790 --> 00:00:31,930

-of 3 things, the software, the hardware on which

-

-11

-00:00:31,930 --> 00:00:34,610

-the software runs, and the context in which the

-

-12

-00:00:34,610 --> 00:00:37,470

-software is used. Just to illustrate, let me show

-

-13

-00:00:37,470 --> 00:00:40,010

-you this through a picture. What I'm showing here

-

-14

-00:00:40,010 --> 00:00:42,830

-is a customer, a user, that is using, is

-

-15

-00:00:42,830 --> 00:00:47,000

-accessing, an ATM machine. And this action involves several

-

-16

-00:00:47,000 --> 00:00:50,650

-things. There is the software that drives the logic

-

-17

-00:00:50,650 --> 00:00:53,410

-of the ATM machine. There is the hardware on

-

-18

-00:00:53,410 --> 00:00:57,280

-which the software runs. And there is the context

-

-19

-00:00:57,280 --> 00:00:59,850

-In which the software is used. And in this

-

-20

-00:00:59,850 --> 00:01:02,660

-case, the context is the bank. And only by

-

-21

-00:01:02,660 --> 00:01:06,105

-considering these 3 things together can we really understand

-

-22

-00:01:06,105 --> 00:01:09,510

-the functionality that is represented here. So the bottom

-

-23

-00:01:09,510 --> 00:01:12,690

-line here is that we usually take hardware and

-

-24

-00:01:12,690 --> 00:01:15,750

-context for granted in this equation. But they actually

-

-25

-00:01:15,750 --> 00:01:18,210

-need to be explicitly considered when building a

-

-26

-00:01:18,210 --> 00:01:20,770

-system. Otherwise, we might forget this is all

-

-27

-00:01:20,770 --> 00:01:23,850

-the functionality, and ultimately of the requirements. And

-

-28

-00:01:23,850 --> 00:01:25,640

-we might end up with the wrong system.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/5 - Software Quality - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/5 - Software Quality - lang_en_vs4.srt
deleted file mode 100644
index 86db606..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/5 - Software Quality - lang_en_vs4.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,170 --> 00:00:02,920

-So, let's see how this affects the concept of software

-

-2

-00:00:02,920 --> 00:00:05,620

-quality. Another way to express what we just said is

-

-3

-00:00:05,620 --> 00:00:08,220

-to say that the software runs on some hardware and

-

-4

-00:00:08,220 --> 00:00:11,750

-is developed for a purpose that is related to human

-

-5

-00:00:11,750 --> 00:00:14,870

-activities. And given this perspective, we can define what we

-

-6

-00:00:14,870 --> 00:00:18,440

-mean by software quality in this light. Software quality is

-

-7

-00:00:18,440 --> 00:00:22,290

-not just a function of the software. So, the software

-

-8

-00:00:22,290 --> 00:00:25,610

-itself does not define the quality of the overall system.

-

-9

-00:00:25,610 --> 00:00:28,880

-Rather, software quality is a function of both the

-

-10

-00:00:28,880 --> 00:00:32,259

-software and its purpose. Where purpose has to do with

-

-11

-00:00:32,259 --> 00:00:34,840

-the way in which the software will be used. So

-

-12

-00:00:34,840 --> 00:00:37,950

-a software system can be of low quality not only

-

-13

-00:00:37,950 --> 00:00:40,580

-because it does not work well. So, for example, not

-

-14

-00:00:40,580 --> 00:00:43,620

-only because it crashes. Of course, that's an issue. But

-

-15

-00:00:43,620 --> 00:00:47,000

-just as importantly, a software can also be of low

-

-16

-00:00:47,000 --> 00:00:50,720

-quality because it does not fulfill its purpose, and this

-

-17

-00:00:50,720 --> 00:00:53,960

-happens quite often. It is unfortunately not rare for

-

-18

-00:00:53,960 --> 00:00:57,310

-the software producers to have an inadequate understanding, or even

-

-19

-00:00:57,310 --> 00:01:00,450

-a complete misunderstanding of the purpose of the software,

-

-20

-00:01:00,450 --> 00:01:03,200

-of what the users want to do and will do

-

-21

-00:01:03,200 --> 00:01:05,770

-with it. Turning these around, we can therefore define

-

-22

-00:01:05,770 --> 00:01:09,890

-the quality of software in terms of fitness for purpose.

-

-23

-00:01:09,890 --> 00:01:12,990

-The more the software fulfills its purpose, the more

-

-24

-00:01:12,990 --> 00:01:16,040

-the software is on target, the higher is its quality.

-

-25

-00:01:16,040 --> 00:01:19,600

-And identifying the purpose of the software, so hitting

-

-26

-00:01:19,600 --> 00:01:23,550

-this target, is exactly the goal of requirements engineering.

-

-27

-00:01:23,550 --> 00:01:25,970

-And it is the reason why requirements engineering is

-

-28

-00:01:25,970 --> 00:01:29,370

-such a fundamental activity in the context of software engineering.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/6 - Identifying Purpose - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/6 - Identifying Purpose - lang_en_vs4.srt
deleted file mode 100644
index 0accc39..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/6 - Identifying Purpose - lang_en_vs4.srt
+++ /dev/null
@@ -1,107 +0,0 @@
-1

-00:00:00,050 --> 00:00:03,480

-And identifying the purpose of a softer system means

-

-2

-00:00:03,480 --> 00:00:06,980

-defining the requirements for the system. And if you have

-

-3

-00:00:06,980 --> 00:00:09,540

-ever done anything like that, for example, we did

-

-4

-00:00:09,540 --> 00:00:12,060

-it for the first project in the previous mini course,

-

-5

-00:00:12,060 --> 00:00:14,720

-you will know that it is an extremely hard

-

-6

-00:00:14,720 --> 00:00:17,760

-task. Identifying the purpose of the software and defining its

-

-7

-00:00:17,760 --> 00:00:21,600

-requirements is very, very hard. Why is it so hard?

-

-8

-00:00:21,600 --> 00:00:25,560

-First of all, the purpose of most systems is inherently,

-

-9

-00:00:25,560 --> 00:00:27,920

-extremely complex, so this has to do with the

-

-10

-00:00:27,920 --> 00:00:31,330

-sheer complexity of the purpose of the requirements. Just think

-

-11

-00:00:31,330 --> 00:00:34,810

-of how complex is the functionality provided by most systems.

-

-12

-00:00:34,810 --> 00:00:38,790

-Second, it is hard, very hard to extract from humans

-

-13

-00:00:38,790 --> 00:00:41,780

-this purpose and make it explicit. So, paraphrasing a

-

-14

-00:00:41,780 --> 00:00:45,130

-famous quote from the late Steve Jobs, often people don't

-

-15

-00:00:45,130 --> 00:00:47,475

-know what they want until you show it to them.

-

-16

-00:00:47,475 --> 00:00:50,490

-It's hard to figure out what people really want. Third,

-

-17

-00:00:50,490 --> 00:00:54,260

-requirements often change over time. Customers change their

-

-18

-00:00:54,260 --> 00:00:57,490

-mind. Designing and building a system raises new requirements.

-

-19

-00:00:57,490 --> 00:01:00,270

-So for many reasons requirements tend not to

-

-20

-00:01:00,270 --> 00:01:02,760

-be stable, tend to evolve. And that, of course,

-

-21

-00:01:02,760 --> 00:01:05,440

-makes it harder to collect them. Finally, for

-

-22

-00:01:05,440 --> 00:01:09,600

-any realistic system, there are many stakeholders and they

-

-23

-00:01:09,600 --> 00:01:12,990

-often have conflicting goals and requirements. And it

-

-24

-00:01:12,990 --> 00:01:15,900

-can be very hard to reconcile the possibly conflicting

-

-25

-00:01:15,900 --> 00:01:19,630

-requirements that might emerge in these cases. So for all these reasons,

-

-26

-00:01:19,630 --> 00:01:21,230

-it is very, very difficult to

-

-27

-00:01:21,230 --> 00:01:23,930

-perform requirements engineering in an effective way.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/7 - Completeness and Pertinence - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/7 - Completeness and Pertinence - lang_en_vs5.srt
deleted file mode 100644
index c0ce159..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/7 - Completeness and Pertinence - lang_en_vs5.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,350 --> 00:00:03,610

-These issues and difficulties can result in requirements

-

-2

-00:00:03,610 --> 00:00:06,780

-that show various problems. Two particularly relevant and

-

-3

-00:00:06,780 --> 00:00:10,880

-common problems are completeness and pertinence. Or better,

-

-4

-00:00:10,880 --> 00:00:14,750

-the lack of completeness and pertinence. Completeness refers to

-

-5

-00:00:14,750 --> 00:00:17,560

-the fact that it is often extremely difficult

-

-6

-00:00:17,560 --> 00:00:20,370

-to identify all of the requirements. That is it

-

-7

-00:00:20,370 --> 00:00:22,890

-is very difficult to have a complete picture

-

-8

-00:00:22,890 --> 00:00:25,780

-of the purpose of the software. So what happens

-

-9

-00:00:25,780 --> 00:00:28,540

-is that incomplete requirements are collected and the software

-

-10

-00:00:28,540 --> 00:00:32,500

-is missing functionality that is important for the user. Pertinence

-

-11

-00:00:32,500 --> 00:00:34,720

-conversely has to do with the relevance of the

-

-12

-00:00:34,720 --> 00:00:38,770

-requirements. To avoid completeness problems developers often end up collecting

-

-13

-00:00:38,770 --> 00:00:42,640

-a lot of irrelevant when not conflicting requirements. In

-

-14

-00:00:42,640 --> 00:00:45,060

-these cases what can happen is that the software could

-

-15

-00:00:45,060 --> 00:00:47,120

-either end up being bloated that is it might

-

-16

-00:00:47,120 --> 00:00:51,290

-contain a needed functionality. The functionality represented by these extra

-

-17

-00:00:51,290 --> 00:00:54,120

-requirements or it might even be impossible to build the

-

-18

-00:00:54,120 --> 00:00:57,480

-software due to the conflicting additional requirements. And to make

-

-19

-00:00:57,480 --> 00:01:00,920

-things even worse collecting all of these requirements sometimes doesn't

-

-20

-00:01:00,920 --> 00:01:03,390

-even solve the completeness issue. So you might end up

-

-21

-00:01:03,390 --> 00:01:05,800

-with a set of requirements that is not only incomplete

-

-22

-00:01:05,800 --> 00:01:08,740

-but it also contains extra information that can be harmful

-

-23

-00:01:08,740 --> 00:01:11,450

-to the system. So again the bottom line is that

-

-24

-00:01:11,450 --> 00:01:14,310

-gathering an adequate, accurate, complete,

-

-25

-00:01:14,310 --> 00:01:16,500

-and pertinent set of requirements that

-

-26

-00:01:16,500 --> 00:01:20,100

-identify the purpose of a software system is an arduous task.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/8 - Pertinence Quiz - lang_en_vs5.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/8 - Pertinence Quiz - lang_en_vs5.srt
deleted file mode 100644
index a04a9a9..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/8 - Pertinence Quiz - lang_en_vs5.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,100 --> 00:00:03,530

-Now that we talked about completeness and pertinence, let's consider an

-

-2

-00:00:03,530 --> 00:00:06,200

-information system for a gym. I'm going to give you a

-

-3

-00:00:06,200 --> 00:00:09,580

-list of possible requirements and I want you to mark in

-

-4

-00:00:09,580 --> 00:00:13,530

-that list all the requirements that you believe are pertinent. So let

-

-5

-00:00:13,530 --> 00:00:16,030

-me read the list. Members of the gym shall be able

-

-6

-00:00:16,030 --> 00:00:18,770

-to access their training programs. The system shall be able to

-

-7

-00:00:18,770 --> 00:00:21,894

-read member cards. The system shall be able to store members'

-

-8

-00:00:21,894 --> 00:00:25,150

-commute time. Personal trainers shall be able to add clients. And the

-

-9

-00:00:25,150 --> 00:00:27,570

-list of members shall be stored as a linked list.

diff --git a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/9 - Pertinence Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/9 - Pertinence Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index ee4f04f..0000000
--- a/usth/ICT2.7/P2L1 Requirements Engineering Subtitles/9 - Pertinence Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,75 +0,0 @@
-1

-00:00:00,190 --> 00:00:03,620

-So the first requirement is definitely pertinent. Members of the gym shall

-

-2

-00:00:03,620 --> 00:00:06,740

-be able to access their training programs. It's pretty normal for members of

-

-3

-00:00:06,740 --> 00:00:09,710

-the gym to have a training program. And therefore, the system should allow

-

-4

-00:00:09,710 --> 00:00:12,900

-them to access them. Similarly for the second one. The system shall be

-

-5

-00:00:12,900 --> 00:00:15,450

-able to read member cards. Normally when you get into a gym

-

-6

-00:00:15,450 --> 00:00:17,420

-if you have a member card, you'll have to either show it to

-

-7

-00:00:17,420 --> 00:00:21,010

-somebody, or nowadays swipe it, and so the system should be able to

-

-8

-00:00:21,010 --> 00:00:23,410

-recognize the customer given the card.

-

-9

-00:00:23,410 --> 00:00:25,710

-The third requirement is probably not pertinent,

-

-10

-00:00:25,710 --> 00:00:29,090

-because I cannot think of any meaningful case in which the system

-

-11

-00:00:29,090 --> 00:00:32,729

-should know what is the members' commute time. The fourth requirement, personal

-

-12

-00:00:32,729 --> 00:00:36,750

-trainers shall be able to add clients, is also probably pertinent. Assuming

-

-13

-00:00:36,750 --> 00:00:38,870

-that we have personal trainers in the gym, and they should be

-

-14

-00:00:38,870 --> 00:00:41,710

-able to get clients, to work with the clients of the gym,

-

-15

-00:00:41,710 --> 00:00:44,140

-and therefore, they should be able to add them as their clients

-

-16

-00:00:44,140 --> 00:00:47,620

-to the system. And finally, the last requirement, the list of members

-

-17

-00:00:47,620 --> 00:00:50,800

-shall be stores as a linked list. This is really something about

-

-18

-00:00:50,800 --> 00:00:54,130

-the how, more than the what. And therefore, for what we say before

-

-19

-00:00:54,130 --> 00:00:57,720

-is probably not a pertinent requirement, so we're not going to mark this one.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 3cc0326..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,460 --> 00:00:03,770

-Hi. In the last lesson we discussed

-

-2

-00:00:03,770 --> 00:00:08,370

-requirements engineering. This lesson is about object orientation

-

-3

-00:00:08,370 --> 00:00:11,958

-and other related concepts. The lesson is split

-

-4

-00:00:11,958 --> 00:00:14,720

-in two main parts. In the first part,

-

-5

-00:00:14,720 --> 00:00:16,870

-we will provide a quick introduction to

-

-6

-00:00:16,870 --> 00:00:20,890

-object orientation and object oriented analysis and design.

-

-7

-00:00:20,890 --> 00:00:22,750

-In the second part, we will cover the

-

-8

-00:00:22,750 --> 00:00:25,710

-essential of UML, which is the notation that

-

-9

-00:00:25,710 --> 00:00:29,190

-we will use in the rest of the course and also in our projects.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/10 - Modeling Classes Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/10 - Modeling Classes Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 4dd6994..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/10 - Modeling Classes Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,120 --> 00:00:03,110

-Looking at the requirements, item is definitely a relevant element

-

-2

-00:00:03,110 --> 00:00:07,060

-for my system, so it is appropriate to model item as

-

-3

-00:00:07,060 --> 00:00:09,300

-a class. Sale, on the other hand, is more of

-

-4

-00:00:09,300 --> 00:00:12,610

-a characteristic of an item, an attribute of an item, rather

-

-5

-00:00:12,610 --> 00:00:14,960

-than a class in itself. So, we're not going to mark

-

-6

-00:00:14,960 --> 00:00:18,460

-this one. Shopping cart sounds, as well, as an important element

-

-7

-00:00:18,460 --> 00:00:21,550

-for my system. Time can be an important system in some

-

-8

-00:00:21,550 --> 00:00:25,420

-contexts, but in this case we're measuring time just because more

-

-9

-00:00:25,420 --> 00:00:28,430

-than one item at a time can be added to the shopping cart.

-

-10

-00:00:28,430 --> 00:00:32,770

-So, time really doesn't have any reason for being modeled as a class.

-

-11

-00:00:32,770 --> 00:00:36,550

-And finally, user also seems to also have an important role to play

-

-12

-00:00:36,550 --> 00:00:40,260

-in the system, and therefore we will model user as a class as well.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/11 - Running Example Explanation - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/11 - Running Example Explanation - lang_en_vs5.srt
deleted file mode 100644
index 6d86101..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/11 - Running Example Explanation - lang_en_vs5.srt
+++ /dev/null
@@ -1,115 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,700

-This concludes the first part of this lesson in which

-

-2

-00:00:02,700 --> 00:00:06,080

-we discussed the basic object-oriented concepts. And, we started to

-

-3

-00:00:06,080 --> 00:00:09,830

-look at how to perform object-oriented analysis. In the second

-

-4

-00:00:09,830 --> 00:00:12,630

-part of the lesson, I will introduce UML, and we will

-

-5

-00:00:12,630 --> 00:00:15,990

-perform the object-oriented analysis steps that we just saw using

-

-6

-00:00:15,990 --> 00:00:19,240

-an example. A course management system so before getting to

-

-7

-00:00:19,240 --> 00:00:22,380

-the second part, let me introduce the example. As we

-

-8

-00:00:22,380 --> 00:00:25,420

-mentioned before, the first step is to start from a textual

-

-9

-00:00:25,420 --> 00:00:27,800

-description of the system the we need to analyze and

-

-10

-00:00:27,800 --> 00:00:30,080

-that we need to build. So that's exactly what I'm going

-

-11

-00:00:30,080 --> 00:00:33,272

-to do. I'm just going to read through this description then we'll

-

-12

-00:00:33,272 --> 00:00:36,590

-reuse throughout the rest of the lesson. The registration manager sets

-

-13

-00:00:36,590 --> 00:00:40,090

-up the curriculum for a semester using a scheduling algorithm and

-

-14

-00:00:40,090 --> 00:00:43,600

-the registration manager here is the registrar. So we will refer

-

-15

-00:00:43,600 --> 00:00:47,510

-to the registration manager both as registration manager and as registrar

-

-16

-00:00:47,510 --> 00:00:50,500

-in the rest of the lesson. One course may have multiple

-

-17

-00:00:50,500 --> 00:00:52,860

-course offerings, which is pretty standard. Each

-

-18

-00:00:52,860 --> 00:00:55,490

-course offering has a number, location, and a

-

-19

-00:00:55,490 --> 00:00:59,160

-time associated with it. Students select four primary

-

-20

-00:00:59,160 --> 00:01:02,410

-courses and two alternative courses by submitting a

-

-21

-00:01:02,410 --> 00:01:05,860

-registration form. Students might use the course management

-

-22

-00:01:05,860 --> 00:01:08,460

-system to add or drop courses for a

-

-23

-00:01:08,460 --> 00:01:11,660

-period of time after registration. Professors use the

-

-24

-00:01:11,660 --> 00:01:15,250

-system to receive their course offering rosters. Finally,

-

-25

-00:01:15,250 --> 00:01:19,280

-users of the registration system are assigned passwords which are used for

-

-26

-00:01:19,280 --> 00:01:21,882

-login validation. So, as you can see, this is a kind of a

-

-27

-00:01:21,882 --> 00:01:25,440

-high-level description of a standard course management system. So, if you ever

-

-28

-00:01:25,440 --> 00:01:27,160

-used a course management system, you'll

-

-29

-00:01:27,160 --> 00:01:29,836

-recognize some of the functionality described here.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/12 - UML Structural Diagrams:  Class Diagram - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/12 - UML Structural Diagrams:  Class Diagram - lang_en_vs4.srt
deleted file mode 100644
index b2c9579..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/12 - UML Structural Diagrams:  Class Diagram - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,200 --> 00:00:04,410

-Let's now start talking about UML, the Unified Modeling Language.

-

-2

-00:00:04,410 --> 00:00:06,530

-And we are going to start by looking at UML

-

-3

-00:00:06,530 --> 00:00:11,390

-structural diagrams. This are the diagrams that represent static characteristics

-

-4

-00:00:11,390 --> 00:00:13,430

-of the system that we need to model. This is

-

-5

-00:00:13,430 --> 00:00:17,170

-in contrast with dynamic models which instead behaviors of the

-

-6

-00:00:17,170 --> 00:00:19,200

-system that we need to model. And we will also

-

-7

-00:00:19,200 --> 00:00:22,424

-discuss dynamic models, later on in the lesson. We're going

-

-8

-00:00:22,424 --> 00:00:25,670

-to discuss several kinds of diagrams, starting from the class

-

-9

-00:00:25,670 --> 00:00:28,228

-diagram, which is a fundamental one in UML.

-

-10

-00:00:28,228 --> 00:00:31,390

-The class diagram represents a static, structural view of

-

-11

-00:00:31,390 --> 00:00:34,190

-the system, and it describes the classes and their

-

-12

-00:00:34,190 --> 00:00:37,630

-structure, and the relationships among classes in the system.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/13 - Class Diagram: Class - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/13 - Class Diagram: Class - lang_en_vs5.srt
deleted file mode 100644
index b02e6ea..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/13 - Class Diagram: Class - lang_en_vs5.srt
+++ /dev/null
@@ -1,259 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,370

-So how do we represent a class in a class

-

-2

-00:00:02,370 --> 00:00:06,140

-diagram? Class is represented as a rectangle with three parts. The

-

-3

-00:00:06,140 --> 00:00:09,290

-first part is the class name. Classes should be named using

-

-4

-00:00:09,290 --> 00:00:12,160

-the vocabulary of the domain, so we should pick names that

-

-5

-00:00:12,160 --> 00:00:16,059

-make sense. And the normal naming standard requires that the classes

-

-6

-00:00:16,059 --> 00:00:19,720

-are singular nouns starting with a capital letter. The second part

-

-7

-00:00:19,720 --> 00:00:22,840

-of the class are the attributes of the class, where the

-

-8

-00:00:22,840 --> 00:00:25,310

-set of attribute for the class, we find the state for

-

-9

-00:00:25,310 --> 00:00:27,940

-the class. And, we can list an attribute simply by

-

-10

-00:00:27,940 --> 00:00:31,060

-name, or we can provide the additional information. For example,

-

-11

-00:00:31,060 --> 00:00:33,520

-we might define the title of the attribute, and we

-

-12

-00:00:33,520 --> 00:00:37,450

-might also define the initial. Value for the attribute. Finally, the

-

-13

-00:00:37,450 --> 00:00:40,850

-third part of the class consist of the operations of

-

-14

-00:00:40,850 --> 00:00:44,050

-the class. And normally, the operations of the class are represented

-

-15

-00:00:44,050 --> 00:00:47,090

-by name, with a list of arguments. That the operation

-

-16

-00:00:47,090 --> 00:00:50,340

-will take as input, and with a result type. So the

-

-17

-00:00:50,340 --> 00:00:53,750

-type of the result produced by the operation. Something

-

-18

-00:00:53,750 --> 00:00:55,940

-else you can notice in this representation is the

-

-19

-00:00:55,940 --> 00:00:58,450

-fact that there is a minus before these attributes

-

-20

-00:00:58,450 --> 00:01:01,810

-and a plus before this operation. This indicates what is

-

-21

-00:01:01,810 --> 00:01:04,739

-called the visibility of these class members. So the

-

-22

-00:01:04,739 --> 00:01:08,950

-minus indicates that the attributes are private to the class.

-

-23

-00:01:08,950 --> 00:01:12,600

-So only instances of this class, roughly speaking, can

-

-24

-00:01:12,600 --> 00:01:15,340

-access these attributes. And notice that this is what allows

-

-25

-00:01:15,340 --> 00:01:19,030

-to enforce the information hiding principle, because clients of

-

-26

-00:01:19,030 --> 00:01:22,000

-the class cannot see what's inside this box, what are

-

-27

-00:01:22,000 --> 00:01:25,360

-these attributes. The plus conversely indicates that this is a

-

-28

-00:01:25,360 --> 00:01:28,850

-public operation. So something that is visible outside the class.

-

-29

-00:01:28,850 --> 00:01:30,790

-And, in fact, normally, this is what we use to

-

-30

-00:01:30,790 --> 00:01:35,110

-define the interface for my class. So we encapsulate the

-

-31

-00:01:35,110 --> 00:01:37,730

-state of the class and we make it accessible to

-

-32

-00:01:37,730 --> 00:01:40,370

-the extent that we want and that is needed through

-

-33

-00:01:40,370 --> 00:01:43,850

-a set of public operations. Last thing I want to

-

-34

-00:01:43,850 --> 00:01:46,730

-note is the use of these ellipses that we can

-

-35

-00:01:46,730 --> 00:01:49,520

-utilize if we want to indicate that there are more

-

-36

-00:01:49,520 --> 00:01:52,400

-attributes for example, or more operations. But we just don't

-

-37

-00:01:52,400 --> 00:01:55,160

-want to list them now. Okay now that we know what

-

-38

-00:01:55,160 --> 00:01:58,020

-a class is, and how it is represented, let's start

-

-39

-00:01:58,020 --> 00:02:02,150

-our analysis of our course management system. By identifying the

-

-40

-00:02:02,150 --> 00:02:05,530

-relevant classes in the system, we need to bring back the

-

-41

-00:02:05,530 --> 00:02:08,270

-description of our system. And what we want to

-

-42

-00:02:08,270 --> 00:02:10,389

-do, is that we want to go through the description

-

-43

-00:02:10,389 --> 00:02:14,840

-and underline the relevant nouns in the description. And here

-

-44

-00:02:14,840 --> 00:02:17,020

-I encourage you to stop the video and to do

-

-45

-00:02:17,020 --> 00:02:20,450

-the exercise of underlying such nouns yourself before listening to

-

-46

-00:02:20,450 --> 00:02:23,910

-my explanation into how I do it. For example in

-

-47

-00:02:23,910 --> 00:02:28,030

-this case I might want to underlined the registration manager which

-

-48

-00:02:28,030 --> 00:02:30,820

-is a noun and probably a relevant one. The scheduling

-

-49

-00:02:30,820 --> 00:02:33,800

-algorithm, also seems like a relevant concept, so

-

-50

-00:02:33,800 --> 00:02:37,890

-is the course. The course offerings, again, course offerings

-

-51

-00:02:37,890 --> 00:02:40,930

-over here. Definitely, the students seem to be a

-

-52

-00:02:40,930 --> 00:02:44,750

-relevant noun and so is probably the registration form

-

-53

-00:02:44,750 --> 00:02:47,140

-and the professors. Okay, so, at this point, I

-

-54

-00:02:47,140 --> 00:02:50,630

-identified seven possible classes for my system. So, what

-

-55

-00:02:50,630 --> 00:02:53,340

-I'm going to do is simply to create classes for

-

-56

-00:02:53,340 --> 00:02:55,980

-each one of these nouns. So my initial class

-

-57

-00:02:55,980 --> 00:03:00,100

-diagram looks exactly like this, with the seven classes where

-

-58

-00:03:00,100 --> 00:03:03,140

-for each class, I picked the name that is representative of

-

-59

-00:03:03,140 --> 00:03:05,680

-the domain. So, in this case, it's pretty straightforward. The

-

-60

-00:03:05,680 --> 00:03:08,950

-registration form is called registration form, the student is called student

-

-61

-00:03:08,950 --> 00:03:10,780

-and so on and so forth. But you can already

-

-62

-00:03:10,780 --> 00:03:14,490

-see how this analysis method is starting from a description of

-

-63

-00:03:14,490 --> 00:03:17,950

-the real world and it's just identifying objects or classes

-

-64

-00:03:17,950 --> 00:03:21,240

-in the real world and transforming them into entities in my

-

-65

-00:03:21,240 --> 00:03:22,260

-analysis document.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/14 - Class Diagram: Attributes - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/14 - Class Diagram: Attributes - lang_en_vs5.srt
deleted file mode 100644
index e1230c9..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/14 - Class Diagram: Attributes - lang_en_vs5.srt
+++ /dev/null
@@ -1,135 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,435

-Now that we identify the classes in my system,

-

-2

-00:00:02,435 --> 00:00:04,930

-let's see how we can identify the attributes for

-

-3

-00:00:04,930 --> 00:00:08,680

-these classes. First of all let's recall what attributes

-

-4

-00:00:08,680 --> 00:00:12,355

-are. Attributes represent the structure of a class the individual

-

-5

-00:00:12,355 --> 00:00:15,530

-data items that compose the state of the class.

-

-6

-00:00:15,530 --> 00:00:18,530

-So how do we identify these attributes? Attributes may be

-

-7

-00:00:18,530 --> 00:00:21,070

-found in one of three ways. By examining class

-

-8

-00:00:21,070 --> 00:00:25,330

-definitions, by studying the requirements, and by applying domain knowledge.

-

-9

-00:00:25,330 --> 00:00:28,400

-And notice that I want to stress, that this is always

-

-10

-00:00:28,400 --> 00:00:31,800

-a very important aspect. No matter what kind of system you're

-

-11

-00:00:31,800 --> 00:00:35,670

-developing. Domain knowledge tends to be fairly important to identify things

-

-12

-00:00:35,670 --> 00:00:38,200

-Which might not be provided in the descriptions of the system

-

-13

-00:00:38,200 --> 00:00:41,070

-that tend to be incomplete. And that you can derive by

-

-14

-00:00:41,070 --> 00:00:44,390

-the fact that you are familiar with the domain. So always

-

-15

-00:00:44,390 --> 00:00:47,340

-keep in mind the domain knowledge is important for analysis, for

-

-16

-00:00:47,340 --> 00:00:50,430

-design, for requirements gathering and so on. So now let's go

-

-17

-00:00:50,430 --> 00:00:53,530

-back to our description of the system. As I said,

-

-18

-00:00:53,530 --> 00:00:55,450

-I will bring you back for each step of our

-

-19

-00:00:55,450 --> 00:00:58,200

-analysis. And in this case, we're going to focus on

-

-20

-00:00:58,200 --> 00:01:01,550

-course offering. And we can say that the course offering, according

-

-21

-00:01:01,550 --> 00:01:04,610

-to the description, has a number, a location, and a

-

-22

-00:01:04,610 --> 00:01:08,140

-time. So this is a pretty clear indication that these are

-

-23

-00:01:08,140 --> 00:01:11,650

-important aspects of the course offering. So they probably should

-

-24

-00:01:11,650 --> 00:01:15,600

-become attributes of the course offering class. So now if we

-

-25

-00:01:15,600 --> 00:01:19,400

-report here that sentence, and once more, we underline

-

-26

-00:01:19,400 --> 00:01:22,330

-the information that we underlined in the description. We can

-

-27

-00:01:22,330 --> 00:01:25,540

-clearly see how this can be mapped into the definition

-

-28

-00:01:25,540 --> 00:01:28,730

-of the class. So our class course offering after this

-

-29

-00:01:28,730 --> 00:01:32,900

-step the analysis will have 3 attributes: number, location, and

-

-30

-00:01:32,900 --> 00:01:35,270

-time. And as you can see here, I'm not specifying

-

-31

-00:01:35,270 --> 00:01:37,540

-the type or any other additional information. So in this

-

-32

-00:01:37,540 --> 00:01:40,640

-first step I'm just interested in having a first draft.

-

-33

-00:01:40,640 --> 00:01:42,170

-of the class diagram, that I can then

-

-34

-00:01:42,170 --> 00:01:44,440

-refine in the next iterations of my analysis.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/15 - Class Diagram: Operations - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/15 - Class Diagram: Operations - lang_en_vs5.srt
deleted file mode 100644
index 8943fca..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/15 - Class Diagram: Operations - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,920

-At this point we have our classes, our attributes,

-

-2

-00:00:02,920 --> 00:00:05,740

-what we're missing is the operations for the class.

-

-3

-00:00:05,740 --> 00:00:08,340

-Let me remind you that operations represent the behavior

-

-4

-00:00:08,340 --> 00:00:10,370

-of a class, and that they may be found by

-

-5

-00:00:10,370 --> 00:00:14,310

-examining interactions among entities in the description of my

-

-6

-00:00:14,310 --> 00:00:18,480

-system. So once more, let's bring back our description, and

-

-7

-00:00:18,480 --> 00:00:22,090

-let's in this case focus on this specific item.

-

-8

-00:00:22,090 --> 00:00:25,330

-That says that the students may use the system to

-

-9

-00:00:25,330 --> 00:00:29,800

-add courses. So this is clearly indicating an action

-

-10

-00:00:29,800 --> 00:00:32,320

-that the students should be able to perform. But notice

-

-11

-00:00:32,320 --> 00:00:35,100

-that this doesn't mean that this is an operation that

-

-12

-00:00:35,100 --> 00:00:38,370

-should be provided by the student's class. It rather means

-

-13

-00:00:38,370 --> 00:00:41,860

-that there should be, somewhere in the system, the possibility

-

-14

-00:00:41,860 --> 00:00:45,080

-of performing this operation. So let's see what this means

-

-15

-00:00:45,080 --> 00:00:47,920

-for our example. This might mean, for example, if we

-

-16

-00:00:47,920 --> 00:00:50,400

-focus on the RegistrationManager, so that there should be an

-

-17

-00:00:50,400 --> 00:00:53,520

-operation in the RegistrationManager that allows me to add

-

-18

-00:00:53,520 --> 00:00:56,300

-a student to a course. And this, in turn, means

-

-19

-00:00:56,300 --> 00:01:00,270

-that both Course and CourseOffering should provide a way to

-

-20

-00:01:00,270 --> 00:01:04,140

-add a student. And therefore, I add this corresponding operation

-

-21

-00:01:04,140 --> 00:01:07,790

-to the RegistrationManager, to the Course, and to the CourseOffering.

-

-22

-00:01:07,790 --> 00:01:10,020

-So after doing that we will continue and populate in

-

-23

-00:01:10,020 --> 00:01:13,080

-a similar way, the other classes in the system. So

-

-24

-00:01:13,080 --> 00:01:16,040

-let me recap. Now we saw how to identify classes.

-

-25

-00:01:16,040 --> 00:01:18,300

-How to identify members of the classes, and

-

-26

-00:01:18,300 --> 00:01:21,910

-particular attributes, and operations. There is one thing that

-

-27

-00:01:21,910 --> 00:01:24,060

-we're missing, a very important aspect of the

-

-28

-00:01:24,060 --> 00:01:28,140

-class diagram which is the relationships between these classes.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/16 - Class Diagram: Relationships - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/16 - Class Diagram: Relationships - lang_en_vs5.srt
deleted file mode 100644
index ef6550d..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/16 - Class Diagram: Relationships - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,620

-And that's exactly what we're going to look at next,

-

-2

-00:00:02,620 --> 00:00:05,630

-relationships in the class diagram, how they're represented and

-

-3

-00:00:05,630 --> 00:00:08,010

-what they mean. First of all relationships as the

-

-4

-00:00:08,010 --> 00:00:12,550

-name says, describe interactions between classes or between objects in

-

-5

-00:00:12,550 --> 00:00:15,510

-my system. And we will describe three main types

-

-6

-00:00:15,510 --> 00:00:19,060

-of relationships. The first one is called a Dependency

-

-7

-00:00:19,060 --> 00:00:22,450

-relationship. And we can express that as X uses

-

-8

-00:00:22,450 --> 00:00:25,840

-Y and we represent it with a dashed directed line.

-

-9

-00:00:25,840 --> 00:00:28,170

-So when we have such a line between two classes

-

-10

-00:00:28,170 --> 00:00:31,020

-that means that the first class uses the second one. And

-

-11

-00:00:31,020 --> 00:00:33,520

-we're going to provide an example of a dependency in a

-

-12

-00:00:33,520 --> 00:00:37,960

-minute. The second type of relationship is an association that can

-

-13

-00:00:37,960 --> 00:00:40,880

-also be an aggregation. We'll see what the distinction is.

-

-14

-00:00:40,880 --> 00:00:43,470

-But basically, what this means is that we can express that

-

-15

-00:00:43,470 --> 00:00:47,640

-as a X has a y. So x contains a

-

-16

-00:00:47,640 --> 00:00:50,950

-y. And if it is in association, we indicate it with

-

-17

-00:00:50,950 --> 00:00:53,570

-a solid undirected line. If it's an aggregation,

-

-18

-00:00:53,570 --> 00:00:55,740

-we indicate it in the same way, but with

-

-19

-00:00:55,740 --> 00:00:58,510

-a diamond at one of the ends. Finally, the

-

-20

-00:00:58,510 --> 00:01:02,740

-third type of relationship is what is called Generalization.

-

-21

-00:01:02,740 --> 00:01:05,300

-And this can be expressed as x is a

-

-22

-00:01:05,300 --> 00:01:09,620

-y. So this is the relationship that expresses inheritance.

-

-23

-00:01:09,620 --> 00:01:13,600

-Specialization between two classes. It's represented with a solid

-

-24

-00:01:13,600 --> 00:01:16,190

-directed line with a large open arrow head at

-

-25

-00:01:16,190 --> 00:01:19,030

-the end. Going from the more specialized class to

-

-26

-00:01:19,030 --> 00:01:21,770

-the less specialized class. So going from the subclass to

-

-27

-00:01:21,770 --> 00:01:24,740

-the super class. So now let's look at each relationship

-

-28

-00:01:24,740 --> 00:01:28,360

-in more detail using our example, our course management system.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/17 - Class Diagram Relationships Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/17 - Class Diagram Relationships Quiz - lang_en_vs4.srt
deleted file mode 100644
index 90ffe63..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/17 - Class Diagram Relationships Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,55 +0,0 @@
-1

-00:00:00,200 --> 00:00:02,840

-Before doing that, though, now that we discuss the different kinds

-

-2

-00:00:02,840 --> 00:00:05,510

-of relationships among classes in the class diagram. I would like

-

-3

-00:00:05,510 --> 00:00:08,230

-to ask you to look at a list of relationships that

-

-4

-00:00:08,230 --> 00:00:11,920

-I'm providing here and mark the relationships that you think actually

-

-5

-00:00:11,920 --> 00:00:15,120

-hold for the classes in the system that we are modeling.

-

-6

-00:00:15,120 --> 00:00:18,260

-So here I have a list of possible relationships for each

-

-7

-00:00:18,260 --> 00:00:22,070

-relationship. I'm first defining what the relationship is and then what

-

-8

-00:00:22,070 --> 00:00:25,270

-kind of relationship that is, for example, for the first one I'm

-

-9

-00:00:25,270 --> 00:00:27,500

-saying that the registration manager uses

-

-10

-00:00:27,500 --> 00:00:30,090

-the scheduling algorithm, which is a dependency

-

-11

-00:00:30,090 --> 00:00:33,860

-relationship. And similarly for the other ones. So like for you to go back

-

-12

-00:00:33,860 --> 00:00:37,070

-to the example, look at the classes that we defined, think about the

-

-13

-00:00:37,070 --> 00:00:40,360

-requirements, and identify which ones of this

-

-14

-00:00:40,360 --> 00:00:42,610

-relationships you think hold in the system.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/18 - Class Diagram Relationships Quiz Solution - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/18 - Class Diagram Relationships Quiz Solution - lang_en_vs5.srt
deleted file mode 100644
index ca674bf..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/18 - Class Diagram Relationships Quiz Solution - lang_en_vs5.srt
+++ /dev/null
@@ -1,23 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,130

-So, I'm going to start by marking the

-

-2

-00:00:02,130 --> 00:00:04,920

-relationships that actually hold in the system.

-

-3

-00:00:04,920 --> 00:00:08,860

-Which are these ones. And then what I'm going to do, I'm going to explain this

-

-4

-00:00:08,860 --> 00:00:12,480

-answers. Not here but in the next part of this lesson. By looking at the

-

-5

-00:00:12,480 --> 00:00:14,860

-different relationships in the context of our

-

-6

-00:00:14,860 --> 00:00:17,240

-example. Which will make the explanation much clearer.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/19 - Class Diagram: Dependency Relationship - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/19 - Class Diagram: Dependency Relationship - lang_en_vs4.srt
deleted file mode 100644
index 54c7da3..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/19 - Class Diagram: Dependency Relationship - lang_en_vs4.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,040

-So let's start with the dependency example. A dependency,

-

-2

-00:00:03,040 --> 00:00:06,720

-as we said, expresses the relationship between a supplier

-

-3

-00:00:06,720 --> 00:00:09,290

-and a client that relies on it. There is

-

-4

-00:00:09,290 --> 00:00:12,490

-a dependency because changes in the supplier can affect the

-

-5

-00:00:12,490 --> 00:00:14,770

-client. Here in this example I am showing that

-

-6

-00:00:14,770 --> 00:00:18,510

-a dependency example involving the registration manager and the

-

-7

-00:00:18,510 --> 00:00:21,590

-scheduling algorithm. As you can see the, the dependency

-

-8

-00:00:21,590 --> 00:00:25,710

-is indicated with a dashed line pointing from the client

-

-9

-00:00:25,710 --> 00:00:28,520

-to the supplier. And here it's pretty clear why

-

-10

-00:00:28,520 --> 00:00:31,820

-the RegistrationManager is dependent on the Scheduling Algorithm. It's

-

-11

-00:00:31,820 --> 00:00:35,710

-because the RegistrationManager uses this Scheduling Algorithm. And therefore,

-

-12

-00:00:35,710 --> 00:00:39,130

-if the Scheduling Algorithm changes, the RegistrationManager might be

-

-13

-00:00:39,130 --> 00:00:42,210

-affected by that change. Another less obvious example is

-

-14

-00:00:42,210 --> 00:00:45,600

-the dependency between the Registration Manager and the Student.

-

-15

-00:00:45,600 --> 00:00:48,040

-In this case, because the Registration Manager gets a

-

-16

-00:00:48,040 --> 00:00:51,620

-Student object as a parameter here there is a dependency

-

-17

-00:00:51,620 --> 00:00:55,740

-between the two. Again, if the Student class were to change the Registration

-

-18

-00:00:55,740 --> 00:01:00,270

-Manager might be affected because it's relying on the Student for it's behavior.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt
deleted file mode 100644
index 44fdd74..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/2 - Object Orientation Introduction - lang_en_vs5.srt
+++ /dev/null
@@ -1,187 +0,0 @@
-1

-00:00:00,390 --> 00:00:03,750

-Let's start with a quick introduction to object orientation and

-

-2

-00:00:03,750 --> 00:00:07,920

-the fundamental concepts behind it. And let's start by discussing what

-

-3

-00:00:07,920 --> 00:00:11,100

-exactly is object orientation? If you're younger than me, it

-

-4

-00:00:11,100 --> 00:00:13,700

-could be that the first programming language you learned was already

-

-5

-00:00:13,700 --> 00:00:17,030

-an object-oriented language. But things were not always like this.

-

-6

-00:00:17,030 --> 00:00:20,660

-Before object orientation became prevalent, people were not used to thinking

-

-7

-00:00:20,660 --> 00:00:23,447

-in terms of objects. So what happened afterwards? And what does

-

-8

-00:00:23,447 --> 00:00:25,727

-it mean to think in terms of objects and to follow

-

-9

-00:00:25,727 --> 00:00:28,583

-an object-oriented approach? First of all, it

-

-10

-00:00:28,583 --> 00:00:32,203

-means to give precedence of data over function.

-

-11

-00:00:32,203 --> 00:00:35,377

-Did items rather than functionality become the center

-

-12

-00:00:35,377 --> 00:00:39,020

-of development activities. This also allows for enforcing

-

-13

-00:00:39,020 --> 00:00:42,200

-the very important concept of information hiding,

-

-14

-00:00:42,200 --> 00:00:45,460

-which is the encapsulation and segregation of data

-

-15

-00:00:45,460 --> 00:00:49,710

-behind well-defined and ideally stable interfaces. In order

-

-16

-00:00:49,710 --> 00:00:51,490

-to be able to hide the design and

-

-17

-00:00:51,490 --> 00:00:54,130

-also implementation decisions. And note that the terms

-

-18

-00:00:54,130 --> 00:00:58,580

-encapsulation and information hiding are often used interchangeably, although

-

-19

-00:00:58,580 --> 00:01:01,270

-some people prefer to think of information hiding

-

-20

-00:01:01,270 --> 00:01:04,709

-as being the principle and encapsulation being the technique

-

-21

-00:01:04,709 --> 00:01:07,990

-to achieve information hiding. The key concept though,

-

-22

-00:01:07,990 --> 00:01:10,110

-no matter which term you use, is really to

-

-23

-00:01:10,110 --> 00:01:13,460

-gather, to seclude this data behind sort of

-

-24

-00:01:13,460 --> 00:01:16,610

-a wall and give access to the data only

-

-25

-00:01:16,610 --> 00:01:20,270

-through interfaces that you, the developer define. And why is

-

-26

-00:01:20,270 --> 00:01:22,800

-that important? Oh, for many reasons, and one of the main

-

-27

-00:01:22,800 --> 00:01:26,690

-ones is that it makes code more maintainable. Because the

-

-28

-00:01:26,690 --> 00:01:28,860

-rest of the code, the rest of the system doesn't have

-

-29

-00:01:28,860 --> 00:01:32,370

-to be concerned on how the implementation details or the

-

-30

-00:01:32,370 --> 00:01:37,220

-design are defined. And therefore, any change that happens behind this

-

-31

-00:01:37,220 --> 00:01:39,580

-wall doesn't concern the rest of the system. And, doesn't

-

-32

-00:01:39,580 --> 00:01:41,820

-affect the rest of the system, as long as you keep

-

-33

-00:01:41,820 --> 00:01:45,730

-your interfaces consistent. Another advantage of focusing on

-

-34

-00:01:45,730 --> 00:01:49,230

-objects and encapsulating the information into cohesive entities is

-

-35

-00:01:49,230 --> 00:01:52,130

-that it allows the reuse of object definitions

-

-36

-00:01:52,130 --> 00:01:55,000

-by incremental refinement. Which is what we normally call

-

-37

-00:01:55,000 --> 00:01:58,830

-inheritance. And inheritance is definitely a fundamental concept

-

-38

-00:01:58,830 --> 00:02:01,560

-in object orientation. For example, we can define a

-

-39

-00:02:01,560 --> 00:02:04,030

-car as a refinement of the vehicle. That there's

-

-40

-00:02:04,030 --> 00:02:06,850

-some additional characteristics with respect to a generic vehicle.

-

-41

-00:02:06,850 --> 00:02:11,220

-And then we can use the car wherever a vehicle can be used, which is what we

-

-42

-00:02:11,220 --> 00:02:14,200

-call polymorphism. And we'll continue this discussion for a

-

-43

-00:02:14,200 --> 00:02:16,440

-very long time. Because there's so many things that

-

-44

-00:02:16,440 --> 00:02:18,860

-could be discussed when we talk about object orientation,

-

-45

-00:02:18,860 --> 00:02:21,890

-its characteristics and its advantages. But in the interest

-

-46

-00:02:21,890 --> 00:02:24,000

-of time, let's for now just stop here. And

-

-47

-00:02:24,000 --> 00:02:27,020

-start talking about two key concepts in object orientation.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/20 - Class Diagram: Association & Aggregation Relationships - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/20 - Class Diagram: Association & Aggregation Relationships - lang_en_vs5.srt
deleted file mode 100644
index 8770928..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/20 - Class Diagram: Association & Aggregation Relationships - lang_en_vs5.srt
+++ /dev/null
@@ -1,219 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,469

-The next example of relationship we're going to look at is

-

-2

-00:00:02,469 --> 00:00:06,740

-the association relationship. This is a relationship in which objects of

-

-3

-00:00:06,740 --> 00:00:09,570

-one class are connected to objects of another. And it's

-

-4

-00:00:09,570 --> 00:00:12,480

-called an has a relationship. So it means that objects of

-

-5

-00:00:12,480 --> 00:00:15,930

-one class have objects of another class. So let's see

-

-6

-00:00:15,930 --> 00:00:18,750

-what that means. Let's do it by considering two classes in

-

-7

-00:00:18,750 --> 00:00:22,370

-our example system. The student class and the course offering class.

-

-8

-00:00:22,370 --> 00:00:25,300

-In this case, there is an association between the student and

-

-9

-00:00:25,300 --> 00:00:28,010

-the course offering, because the student is registering for the

-

-10

-00:00:28,010 --> 00:00:31,750

-course offering. So, in a sense, the course offering has students.

-

-11

-00:00:31,750 --> 00:00:35,360

-Contains students, to indicate this fact we add a solid

-

-12

-00:00:35,360 --> 00:00:38,750

-line between the student class and the course offering. And the

-

-13

-00:00:38,750 --> 00:00:40,540

-fact that having a solid line doesn't really tell us

-

-14

-00:00:40,540 --> 00:00:44,780

-much about the nature of the relationship, so to clarify such

-

-15

-00:00:44,780 --> 00:00:47,550

-nature we can use what we call adornments that we

-

-16

-00:00:47,550 --> 00:00:51,010

-can apply to associations we can add to associations to clarify

-

-17

-00:00:51,010 --> 00:00:53,850

-their meaning. In particular we can add a label to

-

-18

-00:00:53,850 --> 00:00:57,550

-an association and the label describes the nature of the relationship.

-

-19

-00:00:57,550 --> 00:01:00,440

-In this case, for example, it clarifies that the student

-

-20

-00:01:00,440 --> 00:01:03,970

-registers for CourseOffering. We can also add a triangle to

-

-21

-00:01:03,970 --> 00:01:07,050

-further clarify the direction of the relationship. So in this

-

-22

-00:01:07,050 --> 00:01:10,240

-case, the triangle will indicate that it's the student That registers

-

-23

-00:01:10,240 --> 00:01:13,120

-for the course offering, and not the other way around. Another

-

-24

-00:01:13,120 --> 00:01:16,650

-important adornment or limitation that we can put on an association,

-

-25

-00:01:16,650 --> 00:01:20,800

-is multiplicity. Multiplicity defines the number of instances of one

-

-26

-00:01:20,800 --> 00:01:23,540

-class that are related to one instance of the other

-

-27

-00:01:23,540 --> 00:01:26,900

-class. We can define multiplicity at either end of the

-

-28

-00:01:26,900 --> 00:01:29,620

-relationship. In this case, for instance, we can say that

-

-29

-00:01:29,620 --> 00:01:31,890

-if we look at the student, the student can register

-

-30

-00:01:31,890 --> 00:01:35,410

-for two or more course offerings. Whereas, if we look

-

-31

-00:01:35,410 --> 00:01:37,560

-at the course offering, we can say that each course

-

-32

-00:01:37,560 --> 00:01:42,260

-offering can have or can enroll between 1 and 50 students.

-

-33

-00:01:42,260 --> 00:01:45,120

-So as you can see by adding a label, a direction,

-

-34

-00:01:45,120 --> 00:01:49,590

-and multiplicity, we make it much clearer what the relationship is

-

-35

-00:01:49,590 --> 00:01:52,170

-and what it means and what are its characteristics. As we

-

-36

-00:01:52,170 --> 00:01:55,130

-saw when we introduced relationships, there is a different kind of

-

-37

-00:01:55,130 --> 00:01:58,860

-association, kind of a specialized one, which we call aggregation. So

-

-38

-00:01:58,860 --> 00:02:01,130

-here we're going to look at an example of an aggregation. So

-

-39

-00:02:01,130 --> 00:02:03,490

-first of all what is an aggregation? An aggregation is a

-

-40

-00:02:03,490 --> 00:02:07,580

-relationship between 2 classes in which 1 represents a larger class

-

-41

-00:02:07,580 --> 00:02:10,610

-like a whole which consists of smaller classes which are

-

-42

-00:02:10,610 --> 00:02:13,430

-the parts of this whole. So lets look at an example

-

-43

-00:02:13,430 --> 00:02:16,960

-in the context of our system. Let's consider a Course

-

-44

-00:02:16,960 --> 00:02:19,160

-and the CourseOffering. And in this case, we can see

-

-45

-00:02:19,160 --> 00:02:23,000

-that the Course consists of multiple CourseOfferings. So in

-

-46

-00:02:23,000 --> 00:02:26,520

-a sense, a course is a whole and the course offerings

-

-47

-00:02:26,520 --> 00:02:29,430

-are the parts of this whole. So this a perfect case

-

-48

-00:02:29,430 --> 00:02:32,620

-in which we will use an aggregation to express this relationship.

-

-49

-00:02:32,620 --> 00:02:37,630

-So we will add a solid line with a diamond on the side of the whole class

-

-50

-00:02:37,630 --> 00:02:42,380

-to indicate that the course consists of multiple course offerings.

-

-51

-00:02:42,380 --> 00:02:44,670

-And as we did for associations even though we

-

-52

-00:02:44,670 --> 00:02:46,010

-are not going to do it for this specific

-

-53

-00:02:46,010 --> 00:02:49,540

-example, we could also in this case add multiplicity

-

-54

-00:02:49,540 --> 00:02:52,830

-information on the aggregation to indicate how many classes

-

-55

-00:02:52,830 --> 00:02:55,310

-of the two types are involved in the relationships.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/21 - Class Diagram: Generalization Relationship - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/21 - Class Diagram: Generalization Relationship - lang_en_vs5.srt
deleted file mode 100644
index 513413b..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/21 - Class Diagram: Generalization Relationship - lang_en_vs5.srt
+++ /dev/null
@@ -1,75 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,420

-The third type of relationship that we saw, is

-

-2

-00:00:02,420 --> 00:00:07,060

-Generalization. Generalization is a relationship, between a general class,

-

-3

-00:00:07,060 --> 00:00:10,150

-which we normally call super-class and the more specific

-

-4

-00:00:10,150 --> 00:00:13,510

-class, a class the refines the super-class and that

-

-5

-00:00:13,510 --> 00:00:16,950

-we normally call sub-class. It's also known as a

-

-6

-00:00:16,950 --> 00:00:19,690

-kind of or is a relationship because we can

-

-7

-00:00:19,690 --> 00:00:22,850

-say that the subclass is a super class and

-

-8

-00:00:22,850 --> 00:00:25,450

-it's expressed with a solid line with a big arrow

-

-9

-00:00:25,450 --> 00:00:27,580

-head at the end. So let's see an example of

-

-10

-00:00:27,580 --> 00:00:30,160

-that. In this case I'm going to indicate. Two of this kind

-

-11

-00:00:30,160 --> 00:00:33,950

-of relationships. The first one involving the RegistrationUser and

-

-12

-00:00:33,950 --> 00:00:37,000

-a student. And the second one, a RegistrationUser and the

-

-13

-00:00:37,000 --> 00:00:39,960

-professor. So, basically what we're showing here is a

-

-14

-00:00:39,960 --> 00:00:43,170

-typical case in which the registration user is a more general

-

-15

-00:00:43,170 --> 00:00:46,630

-concept then the Student and the Professor. So both the student

-

-16

-00:00:46,630 --> 00:00:50,710

-and the professor are RegistrationUsers. So there is a relationship,

-

-17

-00:00:50,710 --> 00:00:54,360

-the Professor is a registration user and the Student is a RegistrationUser.

-

-18

-00:00:54,360 --> 00:00:56,780

-And therefore we can indicate that using

-

-19

-00:00:56,780 --> 00:01:00,040

-the generalization relationship in our class diagram.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/22 - Class Diagram: Creation Tips - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/22 - Class Diagram: Creation Tips - lang_en_vs5.srt
deleted file mode 100644
index 8aa0204..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/22 - Class Diagram: Creation Tips - lang_en_vs5.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,320

-The last thing that I want to mention about class diagrams is

-

-2

-00:00:02,320 --> 00:00:05,830

-some creation tips. So something I know based on my experience and the

-

-3

-00:00:05,830 --> 00:00:09,300

-experience of others, I can recommend to do when creating a class

-

-4

-00:00:09,300 --> 00:00:12,780

-diagram. So the first tip is to understand the problem. So take the

-

-5

-00:00:12,780 --> 00:00:15,070

-time to look at the description of the system that you have

-

-6

-00:00:15,070 --> 00:00:18,500

-to build, to make sure that you understand the domain. That you understand

-

-7

-00:00:18,500 --> 00:00:21,230

-what you are supposed to build. Because that is going to save you

-

-8

-00:00:21,230 --> 00:00:25,550

-time later. It's going to help you identify from the beginning, a more relevant

-

-9

-00:00:25,550 --> 00:00:28,370

-set of entities in the description of the system. This

-

-10

-00:00:28,370 --> 00:00:30,730

-one might seem trivial but is very important to choose

-

-11

-00:00:30,730 --> 00:00:34,910

-good class names. Why? Because class names communicate the intent

-

-12

-00:00:34,910 --> 00:00:37,770

-of the class, and clarify what the class refers to. So

-

-13

-00:00:37,770 --> 00:00:40,510

-having a good class name allows you, makes it easier, to

-

-14

-00:00:40,510 --> 00:00:44,390

-create the mapping between the real-world object and the entities in

-

-15

-00:00:44,390 --> 00:00:46,610

-your model. And of course, it also makes it easier

-

-16

-00:00:46,610 --> 00:00:50,100

-to understand the system, after the system is built. Third tip,

-

-17

-00:00:50,100 --> 00:00:53,480

-concentrate on the what. So here, in the class diagram,

-

-18

-00:00:53,480 --> 00:00:57,390

-we're just representing the structure of the system. We're representing

-

-19

-00:00:57,390 --> 00:01:00,150

-what is in the system. What are the entities? What

-

-20

-00:01:00,150 --> 00:01:03,140

-are the characteristics of the entities? We are not focusing

-

-21

-00:01:03,140 --> 00:01:06,850

-at all, on how things are done. So, be careful.

-

-22

-00:01:06,850 --> 00:01:09,430

-Don’t think about the how, just think about the what.

-

-23

-00:01:09,430 --> 00:01:12,150

-Proceed in an itinerary way. So, start with a simple

-

-24

-00:01:12,150 --> 00:01:14,910

-diagram and refine it. There is no need to identify,

-

-25

-00:01:14,910 --> 00:01:17,650

-right away, all of the details of the system you need to

-

-26

-00:01:17,650 --> 00:01:21,570

-build. It is much easier to look at the description, identify an initial

-

-27

-00:01:21,570 --> 00:01:24,670

-rough class diagram and then refine it, because in this way, you'll

-

-28

-00:01:24,670 --> 00:01:27,650

-also gather more understanding of the system as you build it, and you'll

-

-29

-00:01:27,650 --> 00:01:30,670

-most likely end up with a better product at the end. And

-

-30

-00:01:30,670 --> 00:01:33,360

-if you proceed in this way, then make sure to refine until you

-

-31

-00:01:33,360 --> 00:01:36,920

-feel the class diagram is complete, until you feel that you represent

-

-32

-00:01:36,920 --> 00:01:39,960

-the system that you're supposed to build. So your final goal should be

-

-33

-00:01:39,960 --> 00:01:41,820

-to have a class diagram that is complete.

-

-34

-00:01:41,820 --> 00:01:43,870

-So it represents all of the relevant entities

-

-35

-00:01:43,870 --> 00:01:45,870

-in the system and their characteristics, and it's

-

-36

-00:01:45,870 --> 00:01:48,170

-correct so it represents them in the right way

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/23 - UML Structural Diagrams: Component Diagram - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/23 - UML Structural Diagrams: Component Diagram - lang_en_vs5.srt
deleted file mode 100644
index 8ce2080..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/23 - UML Structural Diagrams: Component Diagram - lang_en_vs5.srt
+++ /dev/null
@@ -1,235 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,160

-There's two more structural diagrams that I want to

-

-2

-00:00:02,160 --> 00:00:04,670

-mention before we move to the behavioral ones. The

-

-3

-00:00:04,670 --> 00:00:07,420

-first one's the component diagram. A component diagram is

-

-4

-00:00:07,420 --> 00:00:09,690

-a static view of components in a system and of

-

-5

-00:00:09,690 --> 00:00:13,010

-their relationships. More precisely, a node in a component

-

-6

-00:00:13,010 --> 00:00:16,700

-diagram represents a component where a component consists of one

-

-7

-00:00:16,700 --> 00:00:21,090

-or more classes with a well-defined interface. Edges conversely

-

-8

-00:00:21,090 --> 00:00:25,290

-indicate relationships between the components. You can read this relationship

-

-9

-00:00:25,290 --> 00:00:29,600

-as component A uses services of component B. And notice that the

-

-10

-00:00:29,600 --> 00:00:32,990

-component diagrams can be used to represent an architecture, which is

-

-11

-00:00:32,990 --> 00:00:36,110

-a topic that we will cover extensively in the next mini-course.

-

-12

-00:00:36,110 --> 00:00:39,540

-So let's illustrate this with an example. So, what I'm representing

-

-13

-00:00:39,540 --> 00:00:43,160

-here is a component diagram for our example system, the course

-

-14

-00:00:43,160 --> 00:00:46,220

-management system. And as you can see, it's slightly more complex

-

-15

-00:00:46,220 --> 00:00:48,390

-than the other diagrams that we saw. But there's really no

-

-16

-00:00:48,390 --> 00:00:50,700

-need to go through all the steps and all the details.

-

-17

-00:00:50,700 --> 00:00:53,470

-Important thing is to point out some key aspects of

-

-18

-00:00:53,470 --> 00:00:56,370

-this diagram. So the first one is that these rectangular

-

-19

-00:00:56,370 --> 00:00:58,560

-nodes are the nodes in the system, so are my

-

-20

-00:00:58,560 --> 00:01:02,960

-components. For example, student is a component, schedule is a component,

-

-21

-00:01:02,960 --> 00:01:05,069

-and so on. And as far as edges are concerned,

-

-22

-00:01:05,069 --> 00:01:08,580

-I'm representing two kinds of edges. The first kind of dashed

-

-23

-00:01:08,580 --> 00:01:12,060

-edges which were part of the original uml definition and

-

-24

-00:01:12,060 --> 00:01:16,120

-indicate use. So an edge, for example, between this compnent and

-

-25

-00:01:16,120 --> 00:01:19,570

-this compnent indicated that the seminar management uses the

-

-26

-00:01:19,570 --> 00:01:23,890

-facilities component. More recently, in UML two, a richer representation

-

-27

-00:01:23,890 --> 00:01:26,240

-was introduced, which is the one that I'm also showing

-

-28

-00:01:26,240 --> 00:01:27,860

-here. So if we look at this part of the

-

-29

-00:01:27,860 --> 00:01:29,540

-diagram, you can see this sort of you now,

-

-30

-00:01:29,540 --> 00:01:34,080

-lollipop socket representation. And in this case, what this represents,

-

-31

-00:01:34,080 --> 00:01:37,920

-is that a lollipop indicates a provided interface. So an

-

-32

-00:01:37,920 --> 00:01:41,500

-interface that is provided by the component. So, for example,

-

-33

-00:01:41,500 --> 00:01:45,940

-this security component provides encryption capabilities. The socket,

-

-34

-00:01:45,940 --> 00:01:49,190

-conversely, indicates a required interface. So, for example, in

-

-35

-00:01:49,190 --> 00:01:52,270

-this case, it's saying that the facilities component

-

-36

-00:01:52,270 --> 00:01:55,920

-is needing access control capabilities, which, by the way,

-

-37

-00:01:55,920 --> 00:01:58,660

-is provided by the security component. So in

-

-38

-00:01:58,660 --> 00:02:02,240

-a sense these sockets and lollipop indicate interfaces between

-

-39

-00:02:02,240 --> 00:02:04,770

-a provider of some of functionality, and the client

-

-40

-00:02:04,770 --> 00:02:06,630

-of that functionality and you can look at those

-

-41

-00:02:06,630 --> 00:02:09,740

-as basically APIs. So sets of methods that

-

-42

-00:02:09,740 --> 00:02:12,160

-provide a given functionality. To give you another

-

-43

-00:02:12,160 --> 00:02:14,760

-example, if we look at the persistence components

-

-44

-00:02:14,760 --> 00:02:19,110

-the persistence component provides, unsurprisingly, persistent services. And

-

-45

-00:02:19,110 --> 00:02:21,650

-those persistent services are required by several other

-

-46

-00:02:21,650 --> 00:02:24,520

-components in the system. And in turn, the persistent

-

-47

-00:02:24,520 --> 00:02:28,320

-components relies on the University database component to

-

-48

-00:02:28,320 --> 00:02:31,740

-provide such services. So, there's the University DB components

-

-49

-00:02:31,740 --> 00:02:34,700

-provide these sort of low-level database services that are used

-

-50

-00:02:34,700 --> 00:02:38,150

-by the persistence component To in turn provided services. Last thing

-

-51

-00:02:38,150 --> 00:02:41,080

-I want to note is that components or relationships can be

-

-52

-00:02:41,080 --> 00:02:44,450

-annotated, so, for example if we look at the seminar management

-

-53

-00:02:44,450 --> 00:02:47,090

-and the student administration components you can see that they

-

-54

-00:02:47,090 --> 00:02:51,360

-are annotated here to indicate that they are user inferfaces. So

-

-55

-00:02:51,360 --> 00:02:53,600

-that's all I wanted to say on the component diagrams, but

-

-56

-00:02:53,600 --> 00:02:56,750

-again the key piece of information is that they represent components

-

-57

-00:02:56,750 --> 00:03:00,250

-in the system where a component consists of one or more classes indicate the

-

-58

-00:03:00,250 --> 00:03:03,540

-interfaces that these components provide or require.

-

-59

-00:03:03,540 --> 00:03:06,210

-and describe the interactions between these components.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/24 - UML Structural Diagrams: Deployment - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/24 - UML Structural Diagrams: Deployment - lang_en_vs4.srt
deleted file mode 100644
index 07c9a3e..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/24 - UML Structural Diagrams: Deployment - lang_en_vs4.srt
+++ /dev/null
@@ -1,95 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,980

-The last UML structural diagram I want to discuss

-

-2

-00:00:02,980 --> 00:00:06,750

-is the deployment diagram. The deployment diagram provides a static

-

-3

-00:00:06,750 --> 00:00:10,220

-deployment view of a system, and unlike previous diagram,

-

-4

-00:00:10,220 --> 00:00:13,980

-it is about the physical allocation of components to computational

-

-5

-00:00:13,980 --> 00:00:16,950

-units. Think, for example, of a client-server system in

-

-6

-00:00:16,950 --> 00:00:19,130

-which you'll have to define which components will go on

-

-7

-00:00:19,130 --> 00:00:20,880

-the server and which component will go on the

-

-8

-00:00:20,880 --> 00:00:25,200

-client. For deployment diagram, the nodes correspond to computation unit;

-

-9

-00:00:25,200 --> 00:00:29,090

-for example, a specific device. And the edges indicate communication

-

-10

-00:00:29,090 --> 00:00:32,880

-between these units. Also in this case, I'm going to illustrate deployment

-

-11

-00:00:32,880 --> 00:00:36,720

-diagrams using an example for our course management system. And

-

-12

-00:00:36,720 --> 00:00:39,820

-also in this case, I'm going to use a slightly more complex

-

-13

-00:00:39,820 --> 00:00:41,910

-diagram than usual. But I don't want you to look

-

-14

-00:00:41,910 --> 00:00:45,170

-at all the individual details. Instead, I would like to focus

-

-15

-00:00:45,170 --> 00:00:47,530

-on a few main aspects. So, if you look at

-

-16

-00:00:47,530 --> 00:00:50,700

-this diagram, there are three things that you should clearly see.

-

-17

-00:00:50,700 --> 00:00:53,555

-First, you should see how the system involves four

-

-18

-00:00:53,555 --> 00:00:56,590

-nodes, a web server, an application server, a DB

-

-19

-00:00:56,590 --> 00:00:59,740

-server, and a mainframe. Second, you should see which

-

-20

-00:00:59,740 --> 00:01:03,500

-components are deployed on which nodes. For example, the student

-

-21

-00:01:03,500 --> 00:01:07,400

-component is deployed on the application server. And finally,

-

-22

-00:01:07,400 --> 00:01:09,570

-you should see how the nodes communicate with one

-

-23

-00:01:09,570 --> 00:01:11,880

-another. For example, you can see that the application

-

-24

-00:01:11,880 --> 00:01:17,030

-server and the university database communicate using a JDBC protocol.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/25 - UML Behavioral Diagrams: Use Case - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/25 - UML Behavioral Diagrams: Use Case - lang_en_vs5.srt
deleted file mode 100644
index bdfe33a..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/25 - UML Behavioral Diagrams: Use Case - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,110 --> 00:00:04,700

-We now discuss UML's behavioral diagrams. Those diagrams that

-

-2

-00:00:04,700 --> 00:00:07,490

-have to do with the behavior, the dynamic aspects

-

-3

-00:00:07,490 --> 00:00:09,940

-of the system, rather than the static ones. The

-

-4

-00:00:09,940 --> 00:00:12,670

-first behavioral diagram I want to discuss is a very

-

-5

-00:00:12,670 --> 00:00:15,590

-fundamental one, the Use Case Diagram. So, let's start

-

-6

-00:00:15,590 --> 00:00:18,370

-by seeing what a Use Case is. A Use Case

-

-7

-00:00:18,370 --> 00:00:21,800

-represents two main things. First the sequence of interactions

-

-8

-00:00:21,800 --> 00:00:25,250

-of outside entities which is what we normally call actors

-

-9

-00:00:25,250 --> 00:00:27,990

-with the system that we're modelling and the second thing

-

-10

-00:00:27,990 --> 00:00:32,290

-is the system actions that yield an observable result of values

-

-11

-00:00:32,290 --> 00:00:35,380

-to the actors. And basically these two things, and nothing else

-

-12

-00:00:35,380 --> 00:00:38,010

-that the outside view of the system. So the view of

-

-13

-00:00:38,010 --> 00:00:41,060

-the system in which we look at the interaction between

-

-14

-00:00:41,060 --> 00:00:44,170

-this system, and the outside world. If you want to parallel, think

-

-15

-00:00:44,170 --> 00:00:48,070

-about designing a house. Considering how you would use the house.

-

-16

-00:00:48,070 --> 00:00:50,550

-And you might have seen use cases called with different names.

-

-17

-00:00:50,550 --> 00:00:54,820

-So for example, they're also called scenarios, scripts or user stories,

-

-18

-00:00:54,820 --> 00:00:58,220

-but in the context of UML, we'll call the use cases.

-

-19

-00:00:58,220 --> 00:01:00,650

-Now let's look at the basic notation for a use case,

-

-20

-00:01:00,650 --> 00:01:03,910

-which is fairly simple. We have a use case which is represented

-

-21

-00:01:03,910 --> 00:01:05,760

-by an oval, with a name, which is the name of

-

-22

-00:01:05,760 --> 00:01:08,520

-the use case. We have an actor, which is represented by

-

-23

-00:01:08,520 --> 00:01:12,330

-this icon and is normally identified by a role name. And

-

-24

-00:01:12,330 --> 00:01:15,820

-finally we have an edge which is a solid line that connects

-

-25

-00:01:15,820 --> 00:01:18,970

-actors and use cases and indicates that an actor

-

-26

-00:01:18,970 --> 00:01:21,270

-is the actor of a given use case. And just

-

-27

-00:01:21,270 --> 00:01:24,360

-for completeness let me note there are some additional notational

-

-28

-00:01:24,360 --> 00:01:27,750

-elements but now for simplicity we'll just use these ones.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/26 - Use Case Diagram: Actors - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/26 - Use Case Diagram: Actors - lang_en_vs5.srt
deleted file mode 100644
index 4d80c61..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/26 - Use Case Diagram: Actors - lang_en_vs5.srt
+++ /dev/null
@@ -1,167 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,320

-Now, let's look at use cases in a little more detail.

-

-2

-00:00:02,320 --> 00:00:05,480

-And start by defining exactly what an actor is. An actor

-

-3

-00:00:05,480 --> 00:00:08,710

-represents an entity, which can be a human or a device,

-

-4

-00:00:08,710 --> 00:00:12,750

-that plays a role within my system, so that interacts with my

-

-5

-00:00:12,750 --> 00:00:15,660

-system. It's some entity from the outside world, with respect to

-

-6

-00:00:15,660 --> 00:00:18,510

-my system, that interacts with my system. It is important to

-

-7

-00:00:18,510 --> 00:00:21,750

-clarify that an entity can play more than one role. For

-

-8

-00:00:21,750 --> 00:00:25,240

-example, you might have somebody working in a bank that can be

-

-9

-00:00:25,240 --> 00:00:28,400

-both an employee of the bank, or a customer of

-

-10

-00:00:28,400 --> 00:00:31,280

-the bank, depending on how it interacts with the banking

-

-11

-00:00:31,280 --> 00:00:34,360

-system. And, obviously, more than one entity can play the

-

-12

-00:00:34,360 --> 00:00:37,570

-same role. Using the same example, we can have both an

-

-13

-00:00:37,570 --> 00:00:40,350

-employee of the bank and just a regular customer, playing

-

-14

-00:00:40,350 --> 00:00:43,280

-the role of the customer. So again, it all depends on

-

-15

-00:00:43,280 --> 00:00:46,120

-what the entity does, how the entity interacts with the

-

-16

-00:00:46,120 --> 00:00:50,150

-system, what kind of functionality of the system the entity uses.

-

-17

-00:00:50,150 --> 00:00:53,270

-And finally, actors may appear in more than one use case.

-

-18

-00:00:53,270 --> 00:00:55,930

-So it's fairly normal for the same actor to interact with

-

-19

-00:00:55,930 --> 00:00:58,540

-the system in different ways. And therefore, to appear in more

-

-20

-00:00:58,540 --> 00:01:00,710

-than one use case. Just think about the use cases in

-

-21

-00:01:00,710 --> 00:01:04,230

-scenarios of usage. If the same actor can interact with the

-

-22

-00:01:04,230 --> 00:01:07,440

-system in different ways, that actor will appear in multiple use

-

-23

-00:01:07,440 --> 00:01:11,210

-cases. Now let's go back to the description of our course

-

-24

-00:01:11,210 --> 00:01:15,140

-management system, and see how we can identify actors in the system.

-

-25

-00:01:15,140 --> 00:01:17,500

-And as we did for the class diagram before, I encourage

-

-26

-00:01:17,500 --> 00:01:20,160

-you to stop the video and try to identify the actors

-

-27

-00:01:20,160 --> 00:01:22,301

-in the system yourself, before I do it.

-

-28

-00:01:23,475 --> 00:01:27,250

-If we look at the description, we can see that, for example, the Registration

-

-29

-00:01:27,250 --> 00:01:30,890

-Manager is clearly an actor for the system. Students are actors

-

-30

-00:01:30,890 --> 00:01:34,400

-for the system. Professors are actors for the system. And notice

-

-31

-00:01:34,400 --> 00:01:36,060

-that we're not doing the same thing that we were doing

-

-32

-00:01:36,060 --> 00:01:38,360

-when identifying classes. Here we're identifying

-

-33

-00:01:38,360 --> 00:01:40,460

-entities that are from the outside

-

-34

-00:01:40,460 --> 00:01:43,090

-world, and have an active role in interacting with my

-

-35

-00:01:43,090 --> 00:01:46,830

-system. Again, Registration Manager, that we will just call registrar for

-

-36

-00:01:46,830 --> 00:01:50,660

-simplicity, students, and professors. So once we have identified the

-

-37

-00:01:50,660 --> 00:01:53,760

-actors for our example, we can simply draw them, using the

-

-38

-00:01:53,760 --> 00:01:56,550

-notation that we just introduced. So we have the registrar,

-

-39

-00:01:56,550 --> 00:01:59,830

-and notice how for every actor we clarify the role that

-

-40

-00:01:59,830 --> 00:02:02,450

-the actor plays. We have the professor, and we have

-

-41

-00:02:02,450 --> 00:02:05,480

-the student. So here, these are the three actors that we

-

-42

-00:02:05,480 --> 00:02:07,000

-identified for our system.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/27 - Building a Use Case Diagram - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/27 - Building a Use Case Diagram - lang_en_vs5.srt
deleted file mode 100644
index 4c62396..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/27 - Building a Use Case Diagram - lang_en_vs5.srt
+++ /dev/null
@@ -1,203 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,120

-Now if you want to build a use case diagram for

-

-2

-00:00:02,120 --> 00:00:04,520

-our example, we have to add the use cases for

-

-3

-00:00:04,520 --> 00:00:07,710

-these different actors. For instance, if we consider the student

-

-4

-00:00:07,710 --> 00:00:10,810

-and the registrar, they might be both interacting with the maintain

-

-5

-00:00:10,810 --> 00:00:14,950

-schedule system, the registrar by updating the schedule and the

-

-6

-00:00:14,950 --> 00:00:18,125

-students by using the schedule that has been updated by the

-

-7

-00:00:18,125 --> 00:00:20,860

-registrar. As you can see, different roles for the same

-

-8

-00:00:20,860 --> 00:00:24,962

-use case. Another possible use case is the request course roster.

-

-9

-00:00:24,962 --> 00:00:28,520

-And on this case, the professor will request the roster

-

-10

-00:00:28,520 --> 00:00:31,960

-by interacting with the system. We will continue in this way

-

-11

-00:00:31,960 --> 00:00:35,270

-by further refining and by further adding use cases as we

-

-12

-00:00:35,270 --> 00:00:39,240

-identify possible interactions of the actors that we identified with our

-

-13

-00:00:39,240 --> 00:00:42,380

-system. So in summary, what the use case diagram is doing

-

-14

-00:00:42,380 --> 00:00:45,370

-is to show the actors and their interaction with the system

-

-15

-00:00:45,370 --> 00:00:47,680

-through a set of use cases. At this point, it should

-

-16

-00:00:47,680 --> 00:00:49,990

-be pretty clear that sure, this gives us an idea of

-

-17

-00:00:49,990 --> 00:00:53,630

-the interactions but we don't really know how these interactions occur.

-

-18

-00:00:53,630 --> 00:00:55,870

-So there is one piece that is missing, which is how

-

-19

-00:00:55,870 --> 00:00:58,850

-do we document the use cases, how do we describe what

-

-20

-00:00:58,850 --> 00:01:02,010

-happens and what these interactions actually are. And that's exactly what

-

-21

-00:01:02,010 --> 00:01:05,410

-we're going to discuss now, how to document use cases. So the

-

-22

-00:01:05,410 --> 00:01:09,000

-behavior of a use case can be specified by describing its

-

-23

-00:01:09,000 --> 00:01:11,650

-flow of events. And it is important to note that the

-

-24

-00:01:11,650 --> 00:01:15,190

-flow of events should be described from an actor's point of view,

-

-25

-00:01:15,190 --> 00:01:17,690

-so from the point of view of the external entity that

-

-26

-00:01:17,690 --> 00:01:22,070

-is interacting with my system. So the description should detail what

-

-27

-00:01:22,070 --> 00:01:24,480

-the system must provide to the actor when the use case

-

-28

-00:01:24,480 --> 00:01:28,170

-is executed. In particular, it should describe how the use case

-

-29

-00:01:28,170 --> 00:01:31,670

-starts and ends. It should describe the normal flow of events,

-

-30

-00:01:31,670 --> 00:01:34,280

-what is the normal interaction. And in addition to the normal

-

-31

-00:01:34,280 --> 00:01:37,720

-flow of events, it should also describe possibly alternative flows of

-

-32

-00:01:37,720 --> 00:01:40,240

-events. For example, in the case in which there are multiple

-

-33

-00:01:40,240 --> 00:01:44,450

-ways of accomplishing one action or performing a task. And finally,

-

-34

-00:01:44,450 --> 00:01:47,880

-it should also describe exceptional flow of events. For example, assume that

-

-35

-00:01:47,880 --> 00:01:50,910

-you are describing a use case for withdrawing money from an

-

-36

-00:01:50,910 --> 00:01:54,230

-ATM. You may want to describe the normal flow of events in which

-

-37

-00:01:54,230 --> 00:01:56,590

-I insert my card, I provide my pin and so on.

-

-38

-00:01:56,590 --> 00:01:59,750

-An alternative one in which, in addition to withdrawing cash, maybe I'll

-

-39

-00:01:59,750 --> 00:02:02,550

-also first ask for some information about how much money is

-

-40

-00:02:02,550 --> 00:02:05,390

-in my account. And finally, I may want to also describe an exceptional

-

-41

-00:02:05,390 --> 00:02:07,900

-flow of events in which I get my pin wrong and,

-

-42

-00:02:07,900 --> 00:02:11,140

-therefore, I'm not able to perform the operation. One more thing I

-

-43

-00:02:11,140 --> 00:02:14,140

-want to mention, when we talk about documenting use cases, is

-

-44

-00:02:14,140 --> 00:02:17,770

-the fact that the description of this information can be provided in

-

-45

-00:02:17,770 --> 00:02:20,650

-two main ways, in an informal way or in a formal

-

-46

-00:02:20,650 --> 00:02:23,330

-way. In the case of an informal description, we could just have

-

-47

-00:02:23,330 --> 00:02:27,540

-a textual description of the flow of events in natural language.

-

-48

-00:02:27,540 --> 00:02:30,250

-In the case of a formal or structured description, we may use,

-

-49

-00:02:30,250 --> 00:02:32,610

-for example, pre and post conditions, pseudo

-

-50

-00:02:32,610 --> 00:02:34,680

-code to indicate the steps. We could

-

-51

-00:02:34,680 --> 00:02:38,010

-also use the sequence diagrams, which is something that we will see in a minute.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/28 - Use Case Example - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/28 - Use Case Example - lang_en_vs5.srt
deleted file mode 100644
index 8f8bead..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/28 - Use Case Example - lang_en_vs5.srt
+++ /dev/null
@@ -1,243 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,310

-So, as we did for the previous cases, now let's look

-

-2

-00:00:02,310 --> 00:00:06,890

-at an example. Let's consider a specific use case, maintain curriculum, in

-

-3

-00:00:06,890 --> 00:00:10,570

-which we have the registrar that interacts with the system to do

-

-4

-00:00:10,570 --> 00:00:14,320

-operations for maintaining the curriculum. And, let's define the flow of events

-

-5

-00:00:14,320 --> 00:00:17,040

-for this use case. To do this, we're going to go back, as

-

-6

-00:00:17,040 --> 00:00:20,380

-usual, to the description of our system. So this is the one

-

-7

-00:00:20,380 --> 00:00:22,670

-that you already saw several times, but I would like for you

-

-8

-00:00:22,670 --> 00:00:25,080

-to do something. I would like for you to stop the video,

-

-9

-00:00:25,080 --> 00:00:27,890

-look back at the spec, the one that is shown here.

-

-10

-00:00:27,890 --> 00:00:30,850

-And write on your own, what you think is the informal flow

-

-11

-00:00:30,850 --> 00:00:35,060

-of events that categorizes the interaction of the registration manager with

-

-12

-00:00:35,060 --> 00:00:37,500

-the system. And it is very important that you keep in mind

-

-13

-00:00:37,500 --> 00:00:40,140

-something as you're doing that. You should keep in mind that,

-

-14

-00:00:40,140 --> 00:00:41,940

-as it always happens, when extracting

-

-15

-00:00:41,940 --> 00:00:44,270

-requirements from an initial specification, in

-

-16

-00:00:44,270 --> 00:00:47,570

-particular an informal one like this one, a high-level one, you

-

-17

-00:00:47,570 --> 00:00:50,130

-will have to be able to read between the lines and fill

-

-18

-00:00:50,130 --> 00:00:52,690

-in the blanks. That is, you have to provide the information

-

-19

-00:00:52,690 --> 00:00:55,770

-for the missing parts using your domain knowledge. So try to

-

-20

-00:00:55,770 --> 00:00:58,820

-do that exercise. Read the description, and see how you will

-

-21

-00:00:58,820 --> 00:01:02,470

-define the steps, the flow of events for the maintain curriculum use

-

-22

-00:01:02,470 --> 00:01:06,230

-case. If you're done with that, now let's see the possible

-

-23

-00:01:06,230 --> 00:01:09,080

-informal paragraph that describes that flow of events. And the one

-

-24

-00:01:09,080 --> 00:01:12,070

-I'm providing now is just one possibility, based on my experience

-

-25

-00:01:12,070 --> 00:01:15,040

-and based on the way I see this possible flow of events.

-

-26

-00:01:15,040 --> 00:01:17,950

-So yours might look different, of course. In my case, because

-

-27

-00:01:17,950 --> 00:01:20,880

-the description was measuring the fact that every user has got

-

-28

-00:01:20,880 --> 00:01:23,590

-a log-in and a password. I decided that the first step

-

-29

-00:01:23,590 --> 00:01:27,120

-should be that the registrar logs onto the system and enters his

-

-30

-00:01:27,120 --> 00:01:30,390

-or her password. As it normally happens with password protected systems,

-

-31

-00:01:30,390 --> 00:01:32,660

-if the password is valid, the registrar will get into the

-

-32

-00:01:32,660 --> 00:01:35,870

-system. And the system at this point should ask to specify

-

-33

-00:01:35,870 --> 00:01:40,810

-a semester for which the maintain curriculum activity has to be performed.

-

-34

-00:01:40,810 --> 00:01:44,290

-The registrar will therefor enter the desired semester. The interface

-

-35

-00:01:44,290 --> 00:01:46,740

-I envisioned is one in which the system will prompt

-

-36

-00:01:46,740 --> 00:01:50,690

-the registrar to select the desired activity. Add, delete, review,

-

-37

-00:01:50,690 --> 00:01:53,560

-or quit. And if the registrar selects add, the system

-

-38

-00:01:53,560 --> 00:01:56,060

-will allow the registrar to add a course to the

-

-39

-00:01:56,060 --> 00:01:59,660

-course list for the selected semester. Similarly, if the registrar

-

-40

-00:01:59,660 --> 00:02:02,550

-selects delete, the system will let the registrar delete a

-

-41

-00:02:02,550 --> 00:02:05,840

-course from the course list for the selected semester. And again

-

-42

-00:02:05,840 --> 00:02:08,660

-similarly, if the registrar selects review, the system will

-

-43

-00:02:08,660 --> 00:02:12,030

-simply display the course information in the course list for

-

-44

-00:02:12,030 --> 00:02:15,230

-the selected semester. And finally, if the registrar selects quit,

-

-45

-00:02:15,230 --> 00:02:18,110

-the system will simply exit and our use case will

-

-46

-00:02:18,110 --> 00:02:21,150

-end. So, again, there's the main knowledge that goes into

-

-47

-00:02:21,150 --> 00:02:23,620

-this. But this is a good example of how you

-

-48

-00:02:23,620 --> 00:02:27,960

-can refine the initial description to identify these scenarios that

-

-49

-00:02:27,960 --> 00:02:30,830

-then you will use to specify and implement your system.

-

-50

-00:02:30,830 --> 00:02:33,770

-And as we discussed a few minutes ago, we provided the information

-

-51

-00:02:33,770 --> 00:02:37,420

-that is requested for the use case, how the use case starts,

-

-52

-00:02:37,420 --> 00:02:40,620

-by logging into the system. And how it ends, by selecting quit.

-

-53

-00:02:40,620 --> 00:02:43,294

-We described the normal flow of events. And, of course, these flow

-

-54

-00:02:43,294 --> 00:02:46,580

-of events could be improved, because right now even though we described

-

-55

-00:02:46,580 --> 00:02:50,020

-how the use case starts and ends, we just described one possible

-

-56

-00:02:50,020 --> 00:02:53,340

-flow of events. But there's many alternative ways we could provide and

-

-57

-00:02:53,340 --> 00:02:55,890

-we do not describe any exception of flow of events. So this could

-

-58

-00:02:55,890 --> 00:02:58,540

-be the starting point for multiple use cases, or

-

-59

-00:02:58,540 --> 00:03:02,092

-for use cases just richer and contains more information, more

-

-60

-00:03:02,092 --> 00:03:04,474

-steps to a richer flow. But you should have

-

-61

-00:03:04,474 --> 00:03:06,510

-gotten the idea of what a use case should be.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/29 - Role of Use Cases - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/29 - Role of Use Cases - lang_en_vs5.srt
deleted file mode 100644
index 11c0187..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/29 - Role of Use Cases - lang_en_vs5.srt
+++ /dev/null
@@ -1,151 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,510

-As I mentioned when we started talking about use cases, use

-

-2

-00:00:02,510 --> 00:00:06,040

-cases are fundamental in UML, and in general. So, now I

-

-3

-00:00:06,040 --> 00:00:08,510

-would like to discuss why they're so important and what are

-

-4

-00:00:08,510 --> 00:00:11,900

-the different roles that use cases can play. The first obvious one

-

-5

-00:00:11,900 --> 00:00:15,510

-is for requirements elicitation. It is much easier to describe what

-

-6

-00:00:15,510 --> 00:00:17,650

-the system should do if we think about the system in

-

-7

-00:00:17,650 --> 00:00:21,070

-terms of scenarios of usage. Rather than trying to describe the

-

-8

-00:00:21,070 --> 00:00:25,450

-whole functionality of the system at once. So, use cases can help

-

-9

-00:00:25,450 --> 00:00:28,890

-performing a more effective requirement solicitation. As we will

-

-10

-00:00:28,890 --> 00:00:31,700

-see when we discuss the unified software process, they can

-

-11

-00:00:31,700 --> 00:00:34,980

-be used for architectural analysis. So, use cases are the

-

-12

-00:00:34,980 --> 00:00:38,165

-starting point for the analysis of the architecture of the

-

-13

-00:00:38,165 --> 00:00:40,765

-system that can help identify the main blocks of

-

-14

-00:00:40,765 --> 00:00:44,016

-the system. And therefore, can help define in the initial

-

-15

-00:00:44,016 --> 00:00:47,360

-architecture. And as I said, we'll talk more extensively about

-

-16

-00:00:47,360 --> 00:00:50,460

-that. They can be used for user prioritization. For example,

-

-17

-00:00:50,460 --> 00:00:53,230

-imagine to have multiple actors in the system, and you

-

-18

-00:00:53,230 --> 00:00:56,160

-might want to prioritize some of them. For instance, using

-

-19

-00:00:56,160 --> 00:00:59,810

-again the banking system example, we might want to first

-

-20

-00:00:59,810 --> 00:01:03,477

-provide functionality for the administrators of the bank. And only

-

-21

-00:01:03,477 --> 00:01:06,384

-in a second time provide functionality for the customers, because

-

-22

-00:01:06,384 --> 00:01:09,342

-of course, if the administrator cannot perform any operation, the

-

-23

-00:01:09,342 --> 00:01:12,030

-customers cannot use the system. So again, they can be

-

-24

-00:01:12,030 --> 00:01:15,980

-used to prioritize the users. Or the actors, and therefore

-

-25

-00:01:15,980 --> 00:01:19,390

-define which part of the system should be built in which order.

-

-26

-00:01:19,390 --> 00:01:22,120

-Related to this point, they can be used for planning. If I

-

-27

-00:01:22,120 --> 00:01:25,000

-know which pieces of functionality I need to build and in which

-

-28

-00:01:25,000 --> 00:01:27,980

-order, I can better plan the development of my system. And again,

-

-29

-00:01:27,980 --> 00:01:31,280

-we will see how this becomes very important in many different software

-

-30

-00:01:31,280 --> 00:01:35,037

-life cycles. So, both in the unified software process, for instance, but

-

-31

-00:01:35,037 --> 00:01:38,570

-also in more agile development processes. And finally, use cases can be

-

-32

-00:01:38,570 --> 00:01:40,980

-used for testing. If I have an early description of what the

-

-33

-00:01:40,980 --> 00:01:44,290

-system should do, what are the main pieces of functionality of the system. And I

-

-34

-00:01:44,290 --> 00:01:46,700

-know how the interaction between the actors and

-

-35

-00:01:46,700 --> 00:01:49,510

-the system is, I can easily define test

-

-36

-00:01:49,510 --> 00:01:52,010

-cases, even before writing the code, even before

-

-37

-00:01:52,010 --> 00:01:54,180

-defining my system. And when we discuss testing,

-

-38

-00:01:54,180 --> 00:01:57,590

-we will get back to this and talk a little more extensively about this, as well.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/3 - Objects and Classes - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/3 - Objects and Classes - lang_en_vs5.srt
deleted file mode 100644
index 85bb32f..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/3 - Objects and Classes - lang_en_vs5.srt
+++ /dev/null
@@ -1,83 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,770

-Let's start with objects. An object is a

-

-2

-00:00:02,770 --> 00:00:06,330

-computing unit organized around a collection of state

-

-3

-00:00:06,330 --> 00:00:09,350

-or instance variables that define the state of

-

-4

-00:00:09,350 --> 00:00:12,390

-the object. In addition, each object has associated

-

-5

-00:00:12,390 --> 00:00:15,150

-with it a set operations or methods that

-

-6

-00:00:15,150 --> 00:00:17,850

-operate on such state. So what that means

-

-7

-00:00:17,850 --> 00:00:21,420

-is that operations and methods read and write

-

-8

-00:00:21,420 --> 00:00:25,210

-instance variables. And in traditional object orientation, we say

-

-9

-00:00:25,210 --> 00:00:28,240

-that operations are invoked by sending a message

-

-10

-00:00:28,240 --> 00:00:30,520

-to the appropriate object, which is what we call

-

-11

-00:00:30,520 --> 00:00:33,660

-normally a method implication. So now that we define

-

-12

-00:00:33,660 --> 00:00:37,590

-what an object is, state variables, or attributes, and

-

-13

-00:00:37,590 --> 00:00:41,440

-operations or methods, let's see what a class is.

-

-14

-00:00:41,440 --> 00:00:44,900

-A class is basically a template. A blueprint, if

-

-15

-00:00:44,900 --> 00:00:47,700

-you wish, from which new objects, which is what

-

-16

-00:00:47,700 --> 00:00:50,655

-we call instances of the class can be created.

-

-17

-00:00:50,655 --> 00:00:52,800

-And notice that the fact of having a blueprint for

-

-18

-00:00:52,800 --> 00:00:55,610

-objects that allows us to create as many objects as

-

-19

-00:00:55,610 --> 00:00:58,390

-we want can further reuse, and also contribute to make

-

-20

-00:00:58,390 --> 00:01:00,300

-the code more readable, understandable,

-

-21

-00:01:00,300 --> 00:01:02,270

-and therefore ultimately more maintainable.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/30 - Use Case Diagram: Creation Tips - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/30 - Use Case Diagram: Creation Tips - lang_en_vs5.srt
deleted file mode 100644
index ccf7d0e..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/30 - Use Case Diagram: Creation Tips - lang_en_vs5.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,190

-Now, as we did for the class diagram, let's look at

-

-2

-00:00:02,190 --> 00:00:05,440

-some creation tips for use case diagrams. The first tip is that

-

-3

-00:00:05,440 --> 00:00:09,050

-when you define a use case, use a name that communicates purpose.

-

-4

-00:00:09,050 --> 00:00:12,080

-It should be clear what the use case refers to by just

-

-5

-00:00:12,080 --> 00:00:14,320

-looking at the name of the use case. Second tip is

-

-6

-00:00:14,320 --> 00:00:17,700

-to define one atomic behavior per use case. So try not to

-

-7

-00:00:17,700 --> 00:00:21,900

-put more than one specific scenario into a use case. Why? Because

-

-8

-00:00:21,900 --> 00:00:25,380

-these will make the use cases easier to understand and better suited

-

-9

-00:00:25,380 --> 00:00:28,940

-for their roles that we just discussed to define test cases,

-

-10

-00:00:28,940 --> 00:00:31,370

-to do planning, to define an architecture and so on and

-

-11

-00:00:31,370 --> 00:00:34,790

-so forth. Define the flow of events clearly. So again, do

-

-12

-00:00:34,790 --> 00:00:37,820

-it from the perspective of an outsider. An outsider should be able

-

-13

-00:00:37,820 --> 00:00:40,390

-to read the description of the flow of events and understand

-

-14

-00:00:40,390 --> 00:00:43,770

-exactly how the system works or how that specific piece of

-

-15

-00:00:43,770 --> 00:00:47,572

-functionality works. As we suggested for the class diagram, provide only

-

-16

-00:00:47,572 --> 00:00:50,450

-essential details. So there is no need to provide all the nitty

-

-17

-00:00:50,450 --> 00:00:53,720

-gritty details about the use case, just provide enough details so

-

-18

-00:00:53,720 --> 00:00:57,540

-that the use case is complete and understandable. And finally, even

-

-19

-00:00:57,540 --> 00:00:59,960

-though we didn't cover that, there is a way to factor

-

-20

-00:00:59,960 --> 00:01:03,890

-common behaviors and factor variants when defining use cases. So I will

-

-21

-00:01:03,890 --> 00:01:06,580

-encourage you to look at how to do that. For example,

-

-22

-00:01:06,580 --> 00:01:09,290

-by looking at the additional UML documentation and to try to

-

-23

-00:01:09,290 --> 00:01:12,875

-factor out this common behaviors and variants. Typical example would be

-

-24

-00:01:12,875 --> 00:01:15,550

-a system that requires login, like the one that we just discussed,

-

-25

-00:01:15,550 --> 00:01:18,350

-will probably require an initial login step for each use

-

-26

-00:01:18,350 --> 00:01:22,080

-case. It is possible that instead of describing the same steps,

-

-27

-00:01:22,080 --> 00:01:24,600

-or same sub-steps, for each use case, you can factor

-

-28

-00:01:24,600 --> 00:01:26,740

-that out. And create a use case that you should then

-

-29

-00:01:26,740 --> 00:01:29,180

-include in your own use cases. As I said, we

-

-30

-00:01:29,180 --> 00:01:32,790

-didn't cover this for simplicity, but feel free to further read

-

-31

-00:01:32,790 --> 00:01:35,450

-about UML and to see how you can actually factor out

-

-32

-00:01:35,450 --> 00:01:38,890

-behaviors and factor variants. Which can be very useful in practice.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/31 - UML Behavioral Diagrams: Sequence - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/31 - UML Behavioral Diagrams: Sequence - lang_en_vs5.srt
deleted file mode 100644
index cbeb4d8..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/31 - UML Behavioral Diagrams: Sequence - lang_en_vs5.srt
+++ /dev/null
@@ -1,227 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,400

-Now that we have seen use cases, the next behavioral

-

-2

-00:00:02,400 --> 00:00:05,540

-diagram I want to discuss is the sequence diagram. So

-

-3

-00:00:05,540 --> 00:00:08,070

-what is a sequence diagram? It is an interaction diagram

-

-4

-00:00:08,070 --> 00:00:12,710

-that emphasizes how objects communicate and the time ordering of

-

-5

-00:00:12,710 --> 00:00:15,940

-the messages between objects. To illustrate sequence diagrams in a

-

-6

-00:00:15,940 --> 00:00:18,600

-practical way, and hopefully in a clear way, I will

-

-7

-00:00:18,600 --> 00:00:21,960

-introduce them by creating an actual sequence diagram using an

-

-8

-00:00:21,960 --> 00:00:25,160

-example taken from our course management system. So let's see what

-

-9

-00:00:25,160 --> 00:00:28,050

-are the steps needed to build such a sequence diagram. The first

-

-10

-00:00:28,050 --> 00:00:30,900

-thing we want to do is place the objects that participate in

-

-11

-00:00:30,900 --> 00:00:34,460

-the interaction at the top of the diagram along the x-axis, and

-

-12

-00:00:34,460 --> 00:00:36,410

-you also want to place them in a specific way. You want

-

-13

-00:00:36,410 --> 00:00:39,770

-to place objects that initiate the interaction at the left, and place

-

-14

-00:00:39,770 --> 00:00:42,260

-increasingly more subordinate objects to the

-

-15

-00:00:42,260 --> 00:00:44,430

-right. So basically, this should reflect

-

-16

-00:00:44,430 --> 00:00:47,660

-the way the events will flow for the majority of the interactions

-

-17

-00:00:47,660 --> 00:00:50,202

-in the system. Next thing you want to do is to add

-

-18

-00:00:50,202 --> 00:00:53,910

-what is called the object lifeline. It's a vertical line that

-

-19

-00:00:53,910 --> 00:00:57,300

-shows the existence of objects over a period of time. And

-

-20

-00:00:57,300 --> 00:01:00,660

-it's normally represented with a dashed line, except for the outermost

-

-21

-00:01:00,660 --> 00:01:03,190

-object for which it is a solid line. Now that you

-

-22

-00:01:03,190 --> 00:01:06,450

-have your object lifeline you can start placing messages that these

-

-23

-00:01:06,450 --> 00:01:09,285

-objects send and receive. You want to put them along the

-

-24

-00:01:09,285 --> 00:01:12,860

-y-axis in order of increasing time, from top to bottom. And

-

-25

-00:01:12,860 --> 00:01:15,550

-you can also put a number on the message to further

-

-26

-00:01:15,550 --> 00:01:18,230

-clarify the sequence. So in this case what we're showing

-

-27

-00:01:18,230 --> 00:01:21,550

-is that the student will send the fill in info

-

-28

-00:01:21,550 --> 00:01:24,330

-message to the registration form. And this is the first

-

-29

-00:01:24,330 --> 00:01:27,960

-message in the sequence diagram, the first interaction. Then the student

-

-30

-00:01:27,960 --> 00:01:30,900

-might submit the form and this is also a message

-

-31

-00:01:30,900 --> 00:01:33,370

-that goes to the registration form. At this point, when

-

-32

-00:01:33,370 --> 00:01:36,440

-the submission takes place, the registration form will send the

-

-33

-00:01:36,440 --> 00:01:39,990

-message, so it will invoke some functionality in the registration manager.

-

-34

-00:01:39,990 --> 00:01:43,560

-Specifically you will invoke the add course functionality

-

-35

-00:01:43,560 --> 00:01:46,400

-and pass Joe, the name of the student and

-

-36

-00:01:46,400 --> 00:01:49,410

-Math 101 which is the specific course for which

-

-37

-00:01:49,410 --> 00:01:53,180

-Joe is registering. Then the registration manager will ask

-

-38

-00:01:53,180 --> 00:01:56,780

-the Math 101 course whether it accepts registrations,

-

-39

-00:01:56,780 --> 00:01:59,780

-and the interaction will continue. So that Math 101

-

-40

-00:01:59,780 --> 00:02:02,820

-will actually check for a specific offering, if everything

-

-41

-00:02:02,820 --> 00:02:05,070

-goes fine, you will receive an ack, you'll send

-

-42

-00:02:05,070 --> 00:02:07,180

-back the act to the registration manager and so

-

-43

-00:02:07,180 --> 00:02:10,650

-on. Until at the end, Joe will be registered for

-

-44

-00:02:10,650 --> 00:02:13,390

-Math 101. As you can see, it is very

-

-45

-00:02:13,390 --> 00:02:17,600

-easy to see how the interaction occurs between these different

-

-46

-00:02:17,600 --> 00:02:21,010

-objects at run time, dynamically. So what the behavior

-

-47

-00:02:21,010 --> 00:02:24,070

-of the system is for this specific scenario. So the

-

-48

-00:02:24,070 --> 00:02:26,780

-last notational element that I want to add to this

-

-49

-00:02:26,780 --> 00:02:30,350

-diagram is the focus of control. Which is this tall

-

-50

-00:02:30,350 --> 00:02:32,880

-thin rectangle, that shows the period of time

-

-51

-00:02:32,880 --> 00:02:35,190

-that an object is performing an action, either

-

-52

-00:02:35,190 --> 00:02:37,270

-directly or indirectly. So if we look at

-

-53

-00:02:37,270 --> 00:02:39,240

-the registration form, this is telling us that

-

-54

-00:02:39,240 --> 00:02:41,670

-the registration form is active for this amount

-

-55

-00:02:41,670 --> 00:02:43,170

-of time. And the same thing we can

-

-56

-00:02:43,170 --> 00:02:45,520

-do for the registration manager, the Math 101

-

-57

-00:02:45,520 --> 00:02:49,170

-course offering, and the Math 101 specific section.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/32 - UML Behavioral Diagrams: State Transition Diagram - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/32 - UML Behavioral Diagrams: State Transition Diagram - lang_en_vs5.srt
deleted file mode 100644
index ab1bd6a..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/32 - UML Behavioral Diagrams: State Transition Diagram - lang_en_vs5.srt
+++ /dev/null
@@ -1,175 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,430

-The very last diagram that I want to discuss is

-

-2

-00:00:02,430 --> 00:00:05,900

-the state transition diagram. The state transition diagram is defined for

-

-3

-00:00:05,900 --> 00:00:09,270

-each relevant class in the system and basically shows the

-

-4

-00:00:09,270 --> 00:00:12,880

-possible live history of a given class or object. So what

-

-5

-00:00:12,880 --> 00:00:15,090

-does it mean to describe the life history? It means

-

-6

-00:00:15,090 --> 00:00:18,630

-that it describes the possible states of the class as defined

-

-7

-00:00:18,630 --> 00:00:21,910

-by the values of the class attributes. And it also describes

-

-8

-00:00:21,910 --> 00:00:25,710

-the events that cause a transition from one state to another.

-

-9

-00:00:25,710 --> 00:00:28,800

-Finally, it describes the actions that result from a state

-

-10

-00:00:28,800 --> 00:00:31,050

-change. So if you put all of this together you

-

-11

-00:00:31,050 --> 00:00:33,760

-can see how this can represent the whole history of

-

-12

-00:00:33,760 --> 00:00:36,860

-the class, from its creation to its destruction. So let me

-

-13

-00:00:36,860 --> 00:00:40,610

-discuss the transition diagram in more detail, and also provide

-

-14

-00:00:40,610 --> 00:00:43,550

-information about the notation used to represent them. We have

-

-15

-00:00:43,550 --> 00:00:46,770

-states, that are represented by ovals with a name. And

-

-16

-00:00:46,770 --> 00:00:51,820

-we have transitions marked by the event that triggers the transition.

-

-17

-00:00:51,820 --> 00:00:55,500

-What transitions indicate is the passage from one state to

-

-18

-00:00:55,500 --> 00:00:59,430

-another state as the consequence of some external stimuli. Notice

-

-19

-00:00:59,430 --> 00:01:01,930

-that not all events will cause a state transition. So

-

-20

-00:01:01,930 --> 00:01:04,930

-for example, some events might be consumed within a single state.

-

-21

-00:01:04,930 --> 00:01:06,500

-And we'll get to that in a second. But in

-

-22

-00:01:06,500 --> 00:01:10,200

-most cases, an event will trigger some state transition. Events

-

-23

-00:01:10,200 --> 00:01:13,480

-may also produce actions and they may also have attributes

-

-24

-00:01:13,480 --> 00:01:17,100

-which are analogous to parameters in a method call. And Boolean

-

-25

-00:01:17,100 --> 00:01:20,830

-conditions that guard the state transition that is prevented

-

-26

-00:01:20,830 --> 00:01:22,860

-from happening in the case the conditions are not

-

-27

-00:01:22,860 --> 00:01:26,630

-satisfied. States may also be associated with activities and

-

-28

-00:01:26,630 --> 00:01:31,450

-actions. Specifically, activities are operations performed by an object

-

-29

-00:01:31,450 --> 00:01:33,410

-when it is in a given state and that

-

-30

-00:01:33,410 --> 00:01:36,690

-takes time to complete. Actions, conversely, just like the

-

-31

-00:01:36,690 --> 00:01:40,270

-actions corresponding to an event are instantaneous operations that

-

-32

-00:01:40,270 --> 00:01:42,420

-are performed by an object. And can be triggered

-

-33

-00:01:42,420 --> 00:01:46,050

-on entry. So, when the object reaches a given state,

-

-34

-00:01:46,050 --> 00:01:48,970

-when the object exits that state, and also when a

-

-35

-00:01:48,970 --> 00:01:53,240

-specific event occurs. And in this case, this notation is

-

-36

-00:01:53,240 --> 00:01:55,930

-basically a shortcut for any event that will cause a

-

-37

-00:01:55,930 --> 00:01:58,840

-state transition that will bring the object back into the

-

-38

-00:01:58,840 --> 00:02:01,696

-same state. Since we have several actions and activities, it

-

-39

-00:02:01,696 --> 00:02:04,480

-is probably worthwhile clarifyinig the ordering of such actions and

-

-40

-00:02:04,480 --> 00:02:07,559

-activities. So the way in which these actions and activities

-

-41

-00:02:07,559 --> 00:02:10,079

-occur is, first of all, we have the actions on the

-

-42

-00:02:10,079 --> 00:02:13,737

-incoming transition, so this is performed first. Then if there is an

-

-43

-00:02:13,737 --> 00:02:17,321

-entry action that is the next action that would be performed, then

-

-44

-00:02:17,321 --> 00:02:22,370

-we have activity and event actions as appropriate. And finally exit actions.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/33 - State Transition Diagram Example - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/33 - State Transition Diagram Example - lang_en_vs5.srt
deleted file mode 100644
index 6c4c1bf..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/33 - State Transition Diagram Example - lang_en_vs5.srt
+++ /dev/null
@@ -1,227 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,850

-As usual were going to illustrate these kind of diagrams by

-

-2

-00:00:02,850 --> 00:00:06,050

-using an example. In particular we are going to describe the state

-

-3

-00:00:06,050 --> 00:00:09,330

-transition diagram for part of our example, for part of

-

-4

-00:00:09,330 --> 00:00:12,640

-our course management system. And we're going to focus on the course

-

-5

-00:00:12,640 --> 00:00:15,540

-offering class. When the class is created, it enters the

-

-6

-00:00:15,540 --> 00:00:19,490

-initialization state, in which the activity performed is to initialize the

-

-7

-00:00:19,490 --> 00:00:22,580

-course. At this point, a simple case is the case in

-

-8

-00:00:22,580 --> 00:00:25,550

-which the class is cancelled, so there is a cancelled event.

-

-9

-00:00:25,550 --> 00:00:28,700

-And if that happens, the class is simply cancelled. So it

-

-10

-00:00:28,700 --> 00:00:31,720

-gets into this final state, which is the state cancelled. And

-

-11

-00:00:31,720 --> 00:00:35,500

-the activity in this case is to notify the registered students.

-

-12

-00:00:35,500 --> 00:00:38,580

-Obviously if this is the flow there will be no registered students.

-

-13

-00:00:38,580 --> 00:00:41,110

-However something else can happen when we are in this initial

-

-14

-00:00:41,110 --> 00:00:43,930

-state. So what can happen is that a student can register, so

-

-15

-00:00:43,930 --> 00:00:47,260

-in this case the add student event is triggered. And the

-

-16

-00:00:47,260 --> 00:00:50,620

-corresponding action is to set the count, in this case it would

-

-17

-00:00:50,620 --> 00:00:53,270

-be the count of students for the course offering, to one. And

-

-18

-00:00:53,270 --> 00:00:55,570

-there will be a change of state and the course offering will

-

-19

-00:00:55,570 --> 00:00:58,870

-get into this open state. And the action that will be performed

-

-20

-00:00:58,870 --> 00:01:02,260

-on entry will be to register the student. At this point more

-

-21

-00:01:02,260 --> 00:01:06,920

-students may register. So other student events might occur and notice that we

-

-22

-00:01:06,920 --> 00:01:10,630

-have a curve here that tells us this event will trigger this

-

-23

-00:01:10,630 --> 00:01:13,790

-transition only if the count is less than 10. So we're assuming

-

-24

-00:01:13,790 --> 00:01:16,120

-that we're not going to have more than 10 students just for lack

-

-25

-00:01:16,120 --> 00:01:19,010

-of a better number in our course offering. So if that

-

-26

-00:01:19,010 --> 00:01:21,960

-happens, if the count is less than ten so then the count

-

-27

-00:01:21,960 --> 00:01:25,880

-is incremented so the increment count action takes place. And the

-

-28

-00:01:25,880 --> 00:01:28,910

-system goes back into the open state, and the new student

-

-29

-00:01:28,910 --> 00:01:32,100

-is registered. Now here we have an interesting transition, because there's

-

-30

-00:01:32,100 --> 00:01:35,380

-no event triggering the transition, but simply the fact that the

-

-31

-00:01:35,380 --> 00:01:37,780

-count is equal to 10. So you can imagine this as

-

-32

-00:01:37,780 --> 00:01:40,930

-being a transition that is always enabled so can always be triggered,

-

-33

-00:01:40,930 --> 00:01:43,410

-but will be guarded. By the fact that the count has

-

-34

-00:01:43,410 --> 00:01:46,750

-to be exactly ten. So basically this transition will take place

-

-35

-00:01:46,750 --> 00:01:49,800

-only when enough students are added, such we get to count

-

-36

-00:01:49,800 --> 00:01:52,900

-them. Being incremented and being equal to ten and then the transition

-

-37

-00:01:52,900 --> 00:01:55,590

-will occur. And we will get into the closed state, in

-

-38

-00:01:55,590 --> 00:01:59,025

-which the class is no longer open because there are enough students

-

-39

-00:01:59,025 --> 00:02:01,730

-registered. And at this point, what will happen is that the

-

-40

-00:02:01,730 --> 00:02:06,320

-course will be finalized. So there will be this activity which performs

-

-41

-00:02:06,320 --> 00:02:09,699

-some operation that is needed to finalize the course. Another possibility

-

-42

-00:02:09,699 --> 00:02:12,150

-is that when we are in the open state, the course

-

-43

-00:02:12,150 --> 00:02:14,680

-is cancelled. And if the course is cancelled, in this case,

-

-44

-00:02:14,680 --> 00:02:18,320

-we go again to the cancel state. But here, the activity

-

-45

-00:02:18,320 --> 00:02:21,850

-of notifying registered students makes more sense. Because we will have

-

-46

-00:02:21,850 --> 00:02:24,960

-at least one registered student in this state, and therefore we'll

-

-47

-00:02:24,960 --> 00:02:28,190

-need to notify such student that the course offering has been

-

-48

-00:02:28,190 --> 00:02:31,470

-cancelled. Finally, is it also possible also to cancel a course

-

-49

-00:02:31,470 --> 00:02:34,050

-after it has been closed? And in this case again, the

-

-50

-00:02:34,050 --> 00:02:38,040

-same thing will happen. The class will reach the cancelled state and

-

-51

-00:02:38,040 --> 00:02:40,850

-all the students, in this case ten students, that are registered

-

-52

-00:02:40,850 --> 00:02:43,730

-for the course will be notified that the course has been cancelled.

-

-53

-00:02:43,730 --> 00:02:46,100

-So, if we look at this state transition diagram, you can

-

-54

-00:02:46,100 --> 00:02:49,860

-see that it's pretty easy to see what the evolution of objects

-

-55

-00:02:49,860 --> 00:02:52,590

-of this class can be. How they can go from their initial

-

-56

-00:02:52,590 --> 00:02:56,660

-state to various final states depending on what are the external events

-

-57

-00:02:56,660 --> 00:02:57,750

-that reach the system.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/34 - Recap Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/34 - Recap Quiz - lang_en_vs4.srt
deleted file mode 100644
index 458137f..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/34 - Recap Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,190 --> 00:00:02,260

-I'd like to conclude this lesson with a couple of

-

-2

-00:00:02,260 --> 00:00:05,350

-quizzes. Just to recap what we saw. And, make sure that

-

-3

-00:00:05,350 --> 00:00:08,000

-everybody's on the same page. In the first quiz, I want to

-

-4

-00:00:08,000 --> 00:00:11,930

-know whether an UML state transition diagram specifies a set of

-

-5

-00:00:11,930 --> 00:00:15,320

-objects that work together to perform some action. The events that

-

-6

-00:00:15,320 --> 00:00:17,870

-cause an object to move from one state to another. The

-

-7

-00:00:17,870 --> 00:00:20,840

-set of components in a system, or the effects of a

-

-8

-00:00:20,840 --> 00:00:24,270

-state change. And as usual, you should mark all that apply.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/35 - Recap Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/35 - Recap Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 1172c26..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/35 - Recap Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,095 --> 00:00:03,320

-A UML state transition diagram does not specify a set

-

-2

-00:00:03,320 --> 00:00:05,960

-of object that work together to perform some action, because

-

-3

-00:00:05,960 --> 00:00:09,270

-this is what a sequence diagram does instead. Conversely, the

-

-4

-00:00:09,270 --> 00:00:12,530

-second one is correct. As we said, a state transition diagram

-

-5

-00:00:12,530 --> 00:00:15,790

-describes the events that cause a transition from one state

-

-6

-00:00:15,790 --> 00:00:19,300

-to another. Again, a UML state transition diagram does not

-

-7

-00:00:19,300 --> 00:00:22,270

-specify the set of components in a system, because this

-

-8

-00:00:22,270 --> 00:00:25,700

-is what a component diagram does, not a state transition diagram.

-

-9

-00:00:25,700 --> 00:00:27,620

-As for the last one, this is correct,

-

-10

-00:00:27,620 --> 00:00:30,510

-because, as we also discussed, a state transition diagram

-

-11

-00:00:30,510 --> 00:00:33,000

-describes the actions that result from a state

-

-12

-00:00:33,000 --> 00:00:35,890

-change, that is, the effects of such state change.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/36 - Recap Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/36 - Recap Quiz - lang_en_vs4.srt
deleted file mode 100644
index bdc7298..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/36 - Recap Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,140 --> 00:00:01,580

-And for the last quiz, I want to know

-

-2

-00:00:01,580 --> 00:00:05,250

-which of the following diagrams are UML Structural

-

-3

-00:00:05,250 --> 00:00:08,790

-Diagrams? Use case diagram, class diagram, deployment diagram

-

-4

-00:00:08,790 --> 00:00:11,580

-and sequence diagram. Again, mark all that apply.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/37 - Recap Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/37 - Recap Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 7f8f313..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/37 - Recap Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,580

-And in this case, the correct answer is that class

-

-2

-00:00:02,580 --> 00:00:06,870

-diagram and deployment diagrams are the only two UML structural

-

-3

-00:00:06,870 --> 00:00:09,950

-diagrams among these four. So the answer to this quiz

-

-4

-00:00:09,950 --> 00:00:12,250

-was probably pretty obvious, but I wanted to use it

-

-5

-00:00:12,250 --> 00:00:15,840

-also to stress, once more, the difference between structural and

-

-6

-00:00:15,840 --> 00:00:19,560

-behavioral diagrams. Structural diagrams provide the static picture of the

-

-7

-00:00:19,560 --> 00:00:23,100

-system being modeled, presented from different perspective. For example, from

-

-8

-00:00:23,100 --> 00:00:26,630

-the perspective of the class diagram and of the deployment diagram.

-

-9

-00:00:26,630 --> 00:00:29,760

-Behavioral diagrams, on the other hand, provide information on

-

-10

-00:00:29,760 --> 00:00:32,460

-the dynamic behavior of the system being modeled, also

-

-11

-00:00:32,460 --> 00:00:35,020

-presented from different perspective. So it's important to be

-

-12

-00:00:35,020 --> 00:00:38,020

-able to distinguish between these two types of diagrams. This

-

-13

-00:00:38,020 --> 00:00:41,450

-concludes this lesson on object orientation and UML. But

-

-14

-00:00:41,450 --> 00:00:43,960

-I encourage you to look at the references provided

-

-15

-00:00:43,960 --> 00:00:45,390

-in the class notes, in case you want to

-

-16

-00:00:45,390 --> 00:00:49,440

-know more about object orientation, object oriented analysis, and UML.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/4 - Benefits of OO - lang_en_vs5.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/4 - Benefits of OO - lang_en_vs5.srt
deleted file mode 100644
index 2650d6e..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/4 - Benefits of OO - lang_en_vs5.srt
+++ /dev/null
@@ -1,51 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,110

-So in more general terms, why do we want to

-

-2

-00:00:02,110 --> 00:00:05,330

-use object orientation? The first reason is that object

-

-3

-00:00:05,330 --> 00:00:10,530

-orientation can help reduce long-term maintenance costs by limiting

-

-4

-00:00:10,530 --> 00:00:12,700

-the effects of changes. As we saw, the effect

-

-5

-00:00:12,700 --> 00:00:15,990

-of using encapsulation and information hiding makes it easier

-

-6

-00:00:15,990 --> 00:00:18,700

-to modify parts of the system without affecting the

-

-7

-00:00:18,700 --> 00:00:21,590

-rest of the system. Object orientation can also improve

-

-8

-00:00:21,590 --> 00:00:25,870

-the developing process by favoring code and design reuse.

-

-9

-00:00:25,870 --> 00:00:27,840

-In general, object orientation helps

-

-10

-00:00:27,840 --> 00:00:31,750

-enforcing good design principles. Principles such

-

-11

-00:00:31,750 --> 00:00:34,880

-as the ones that we saw in encapuslation, information hiding, high

-

-12

-00:00:34,880 --> 00:00:39,470

-cohesion, low coupling and we will discuss these aspects more extensively

-

-13

-00:00:39,470 --> 00:00:42,750

-in the next mini course which is centered around design concepts.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/5 - OO Benefits Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/5 - OO Benefits Quiz - lang_en_vs4.srt
deleted file mode 100644
index 5942254..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/5 - OO Benefits Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,43 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,600

-Now let's make sure that we understand the benefits of

-

-2

-00:00:02,600 --> 00:00:06,270

-object orientation through a quiz. Imagine that acme corporation decided

-

-3

-00:00:06,270 --> 00:00:09,180

-to use an objetory entered approach in its software development

-

-4

-00:00:09,180 --> 00:00:12,230

-process. If this is the case what benefits can they expect

-

-5

-00:00:12,230 --> 00:00:14,640

-to receive from this decision. And here I'm listing some

-

-6

-00:00:14,640 --> 00:00:18,120

-possible benefits. Increased reuse because of the modular cooling style.

-

-7

-00:00:18,120 --> 00:00:21,450

-Increased maintainability because the system design can accommodate changes more

-

-8

-00:00:21,450 --> 00:00:25,530

-easily. Increased speed because object oriented systems tend to run faster.

-

-9

-00:00:25,530 --> 00:00:27,770

-And increased understandability because the

-

-10

-00:00:27,770 --> 00:00:30,680

-design models real world entities. So,

-

-11

-00:00:30,680 --> 00:00:33,310

-I would like, as usual, for you to mark all that apply.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/6 - OO Benefits Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/6 - OO Benefits Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index c97c453..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/6 - OO Benefits Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,080 --> 00:00:01,280

-So, now let's see which ones of these

-

-2

-00:00:01,280 --> 00:00:04,410

-benefits can actually be expected. Definitely, the first one.

-

-3

-00:00:04,410 --> 00:00:07,720

-The modular coding style typical of object-oriented approaches can,

-

-4

-00:00:07,720 --> 00:00:11,280

-and normally does, increase reuse. Similarly, because of the

-

-5

-00:00:11,280 --> 00:00:15,830

-characteristics of typical object-oriented systems, these systems are normally

-

-6

-00:00:15,830 --> 00:00:18,390

-easier to change. Because they're more modular, they're more

-

-7

-00:00:18,390 --> 00:00:21,890

-cohesive, they're more decoupled. And therefore, all of this

-

-8

-00:00:21,890 --> 00:00:25,520

-contributes to increase the maintainability of the resulting systems.

-

-9

-00:00:25,520 --> 00:00:27,810

-So we're going to mark this benefit as well.

-

-10

-00:00:27,810 --> 00:00:31,500

-There's really nothing about object-oriented systems. That make them

-

-11

-00:00:31,500 --> 00:00:34,550

-run faster and, therefore, this is not a benefit

-

-12

-00:00:34,550 --> 00:00:36,432

-that we can expect from the use of an

-

-13

-00:00:36,432 --> 00:00:39,910

-object-oriented approach. Conversely, the last one is an expected

-

-14

-00:00:39,910 --> 00:00:43,950

-benefit because normally, the fact of designing real-world entities,

-

-15

-00:00:43,950 --> 00:00:46,120

-which is one of the characteristics of the object

-

-16

-00:00:46,120 --> 00:00:50,530

-oriented approaches, does increase understandability. It's easier to understand

-

-17

-00:00:50,530 --> 00:00:54,370

-the system because we can relate. To the system because we can recognize in

-

-18

-00:00:54,370 --> 00:00:58,000

-the systems, real world entities that we are used to see and that we understand.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/7 - OO Analysis History - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/7 - OO Analysis History - lang_en_vs4.srt
deleted file mode 100644
index 843126e..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/7 - OO Analysis History - lang_en_vs4.srt
+++ /dev/null
@@ -1,175 +0,0 @@
-1

-00:00:00,060 --> 00:00:02,160

-The use of object orientation and object oriented

-

-2

-00:00:02,160 --> 00:00:06,430

-concepts led to what we call OOAD, object oriented

-

-3

-00:00:06,430 --> 00:00:10,650

-analysis and design. OOAD is a software engineering approach

-

-4

-00:00:10,650 --> 00:00:13,790

-whose main characteristics is to model a software system

-

-5

-00:00:13,790 --> 00:00:16,600

-as a group of interacting objects, and we'll

-

-6

-00:00:16,600 --> 00:00:19,160

-see what that means. In particular, in this lesson

-

-7

-00:00:19,160 --> 00:00:21,590

-we will specifically focus on the first part of

-

-8

-00:00:21,590 --> 00:00:25,360

-this, object oriented analysis, which is a requirements analysis

-

-9

-00:00:25,360 --> 00:00:29,650

-technique that concentrates on modeling real world objects. And

-

-10

-00:00:29,650 --> 00:00:31,340

-as I usually like to do, I would like

-

-11

-00:00:31,340 --> 00:00:34,812

-to start by providing some historical perspective on object

-

-12

-00:00:34,812 --> 00:00:37,472

-oriented analysis to better understand how we went from a

-

-13

-00:00:37,472 --> 00:00:40,990

-function-centric world to a data-centric world. And several people

-

-14

-00:00:40,990 --> 00:00:43,800

-contributed to this shift in perspective, but I'd like

-

-15

-00:00:43,800 --> 00:00:46,960

-to mention a few that were particularly influential. Starting

-

-16

-00:00:46,960 --> 00:00:50,540

-from James Rumbaugh, which in the 90s developed an integrated

-

-17

-00:00:50,540 --> 00:00:53,900

-approach to object oriented modelling with three main aspects.

-

-18

-00:00:53,900 --> 00:00:56,680

-A data aspect, so the modelling was based on

-

-19

-00:00:56,680 --> 00:01:00,390

-using an extended version of entity relationship diagrams to

-

-20

-00:01:00,390 --> 00:01:03,680

-describe classes and inheritance. So that's what was called

-

-21

-00:01:03,680 --> 00:01:06,770

-the object model. And the second aspect has to

-

-22

-00:01:06,770 --> 00:01:09,770

-do with functions. So data flow diagrams were used

-

-23

-00:01:09,770 --> 00:01:12,850

-to represent the functional aspects of the system, where

-

-24

-00:01:12,850 --> 00:01:16,070

-each function was then becoming a method in a class.

-

-25

-00:01:16,070 --> 00:01:18,500

-So this is what is called the functional model.

-

-26

-00:01:18,500 --> 00:01:22,120

-So object model and functional model. The third model

-

-27

-00:01:22,120 --> 00:01:25,120

-in Rumbaugh's methodology had to do with control. So

-

-28

-00:01:25,120 --> 00:01:29,301

-it was representing the dynamic aspects of a system. And

-

-29

-00:01:29,301 --> 00:01:31,880

-it uses state machines, which we'll cover in more

-

-30

-00:01:31,880 --> 00:01:35,730

-detail, to represent how a system would evolve going from

-

-31

-00:01:35,730 --> 00:01:37,650

-one state to the other based on what happened

-

-32

-00:01:37,650 --> 00:01:41,260

-to the system. These three models together represented what was

-

-33

-00:01:41,260 --> 00:01:44,950

-called the Object Modeling Technique, or OMT. And

-

-34

-00:01:44,950 --> 00:01:47,860

-OMT combined with contributions from several people, and in

-

-35

-00:01:47,860 --> 00:01:51,290

-particular Jacobson and Booch, evolved into what we call

-

-36

-00:01:51,290 --> 00:01:54,910

-the Unified Modeling Language, which is UML, which is

-

-37

-00:01:54,910 --> 00:01:56,910

-probably the modeling language that most of you

-

-38

-00:01:56,910 --> 00:02:00,480

-are familiar with. UML extends OMT by providing more

-

-39

-00:02:00,480 --> 00:02:03,460

-diagrams and a broader view of a system from

-

-40

-00:02:03,460 --> 00:02:06,270

-multiple perspectives. So, in the second part of the

-

-41

-00:02:06,270 --> 00:02:07,850

-lesson, we will cover some of these

-

-42

-00:02:07,850 --> 00:02:10,530

-diagrams in details, but before that, I'd like

-

-43

-00:02:10,530 --> 00:02:12,215

-to talk a little bit more about object

-

-44

-00:02:12,215 --> 00:02:14,540

-oriented analysis, and how we can perform it.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/8 - OO Analysis Overview - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/8 - OO Analysis Overview - lang_en_vs4.srt
deleted file mode 100644
index fccd722..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/8 - OO Analysis Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,147 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,540

-So let's look at the object-oriented analysis in a

-

-2

-00:00:02,540 --> 00:00:05,540

-little more detail. As I said earlier, traditional analysis

-

-3

-00:00:05,540 --> 00:00:08,890

-and design techniques were functionally oriented. What that means

-

-4

-00:00:08,890 --> 00:00:11,980

-is that they concentrated on the functions to be performed,

-

-5

-00:00:11,980 --> 00:00:14,510

-whereas the data upon which the functions operated were

-

-6

-00:00:14,510 --> 00:00:18,900

-secondary to the functions themselves. Conversely, object oriented analysis, is

-

-7

-00:00:18,900 --> 00:00:22,100

-primarily concerned that with a data objects, so we

-

-8

-00:00:22,100 --> 00:00:25,500

-went from a functional oriented view to a data oriented

-

-9

-00:00:25,500 --> 00:00:28,070

-view, what that means is that during the analysis phase,

-

-10

-00:00:28,070 --> 00:00:30,770

-we define a system first in terms of the data

-

-11

-00:00:30,770 --> 00:00:34,380

-types and their relationships, and the functions or methods are

-

-12

-00:00:34,380 --> 00:00:38,130

-defined only later and associated with specific objects which are sets

-

-13

-00:00:38,130 --> 00:00:40,380

-of data. So let's see how we can perform object

-

-14

-00:00:40,380 --> 00:00:44,040

-orientated analysis in practice, so the basic idea is to be

-

-15

-00:00:44,040 --> 00:00:47,060

-focused on the objects of the real world. So to

-

-16

-00:00:47,060 --> 00:00:51,310

-go from a real world objects to a set of requirements.

-

-17

-00:00:51,310 --> 00:00:55,340

-And we can describe this as a four-step process. The first

-

-18

-00:00:55,340 --> 00:00:57,790

-step is to obtain or prepare a textual description of the

-

-19

-00:00:57,790 --> 00:01:00,400

-problem to be solved. So obviously, we need to start from

-

-20

-00:01:00,400 --> 00:01:03,300

-some description of the system that we need to build. And

-

-21

-00:01:03,300 --> 00:01:06,120

-this is a very practical oriented approach, so that the next

-

-22

-00:01:06,120 --> 00:01:08,390

-thing we do is that we take the description and we

-

-23

-00:01:08,390 --> 00:01:12,670

-underline nouns. In this description. And the nouns that we underline

-

-24

-00:01:12,670 --> 00:01:16,710

-will become classes in my analysis. We then look at adjectives in

-

-25

-00:01:16,710 --> 00:01:19,530

-the document. We underline those, and we use that

-

-26

-00:01:19,530 --> 00:01:23,130

-information to identify the attributes of the classes that we've

-

-27

-00:01:23,130 --> 00:01:26,370

-previously identified. At this point we focus on active

-

-28

-00:01:26,370 --> 00:01:29,610

-verbs in the description, and the analysis of the active

-

-29

-00:01:29,610 --> 00:01:32,710

-verbs will give us the operations that we'll need

-

-30

-00:01:32,710 --> 00:01:36,830

-to define for our classes. So, again, underline nouns, and

-

-31

-00:01:36,830 --> 00:01:38,950

-those will become the classes in my system. Then,

-

-32

-00:01:38,950 --> 00:01:42,150

-objectives. And, those will be the attributes of the classes.

-

-33

-00:01:42,150 --> 00:01:46,650

-And, finally, active verbs that will become the operations of my classes. And

-

-34

-00:01:46,650 --> 00:01:48,840

-of course, this is a high level view to take this with a

-

-35

-00:01:48,840 --> 00:01:51,790

-grain of salt. But we will see that it's a very good pragmatic

-

-36

-00:01:51,790 --> 00:01:54,760

-approach to identifying requirements, starting from a

-

-37

-00:01:54,760 --> 00:01:56,570

-description of the system to be built.

diff --git a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/9 - Modeling Classes Quiz - lang_en_vs4.srt b/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/9 - Modeling Classes Quiz - lang_en_vs4.srt
deleted file mode 100644
index 6c3c61b..0000000
--- a/usth/ICT2.7/P2L2 OO Software Engineering and UML Subtitles/9 - Modeling Classes Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,190 --> 00:00:02,890

-Now let's see how object oriented analysis might work

-

-2

-00:00:02,890 --> 00:00:06,640

-in practice by considering the following requirement for an online

-

-3

-00:00:06,640 --> 00:00:10,230

-shopping website. The requirement says that users can add

-

-4

-00:00:10,230 --> 00:00:12,890

-more than one item on sale at a time to

-

-5

-00:00:12,890 --> 00:00:15,590

-a shopping cart. So, looking at this requirement I

-

-6

-00:00:15,590 --> 00:00:18,180

-would like you to tell me which of the following

-

-7

-00:00:18,180 --> 00:00:21,285

-elements should be modeled as classes. And the elements

-

-8

-00:00:21,285 --> 00:00:25,650

-are: item, sale, shopping cart, time and user. So mark

-

-9

-00:00:25,650 --> 00:00:26,370

-all that apply.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 89008af..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,360 --> 00:00:02,910

-Hello, and welcome to the third part

-

-2

-00:00:02,910 --> 00:00:06,426

-of our software engineering course. In this mini-course,

-

-3

-00:00:06,426 --> 00:00:09,250

-we will discuss software design. We will

-

-4

-00:00:09,250 --> 00:00:13,170

-also introduce the Unified Software Process. And we

-

-5

-00:00:13,170 --> 00:00:15,730

-will work on a more complex project,

-

-6

-00:00:15,730 --> 00:00:18,330

-in which we will develop a distributed software

-

-7

-00:00:18,330 --> 00:00:22,960

-system that involves multiple different platforms. In

-

-8

-00:00:22,960 --> 00:00:25,730

-our first lesson of this mini-course, in particular,

-

-9

-00:00:25,730 --> 00:00:28,150

-we will talk about software architecture. A

-

-10

-00:00:28,150 --> 00:00:31,650

-software engineering discipline whose goal is to lay

-

-11

-00:00:31,650 --> 00:00:34,980

-the foundation on which to build successful

-

-12

-00:00:34,980 --> 00:00:38,130

-and long lasting software systems. So let's begin.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/10 - Architectural Recovery Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/10 - Architectural Recovery Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index bd45907..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/10 - Architectural Recovery Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,120 --> 00:00:03,210

-The first sentence is definitely false. Prescriptive architecture

-

-2

-00:00:03,210 --> 00:00:06,530

-and descriptive architecture tend to diverge as systems evolve,

-

-3

-00:00:06,530 --> 00:00:08,960

-and sometimes, even when the system is first developed,

-

-4

-00:00:08,960 --> 00:00:10,680

-as we will see in some of the upcoming

-

-5

-00:00:10,680 --> 00:00:14,340

-examples. Conversely, the second sentence is true. By

-

-6

-00:00:14,340 --> 00:00:18,150

-adding unnecessary elements to the architecture, architectural drift can

-

-7

-00:00:18,150 --> 00:00:22,470

-transform an otherwise clean architecture into a complex sub-optimal,

-

-8

-00:00:22,470 --> 00:00:25,960

-and often ugly, architecture. The third sentence is false.

-

-9

-00:00:25,960 --> 00:00:30,540

-Architectural erosion and architectural drift are, indeed, different phenomena.

-

-10

-00:00:30,540 --> 00:00:32,940

-But they both result in a less than ideal, and

-

-11

-00:00:32,940 --> 00:00:36,160

-in some cases, highly degraded architecture. And the fourth

-

-12

-00:00:36,160 --> 00:00:39,600

-sentence is also false, as we discussed a minute ago.

-

-13

-00:00:39,600 --> 00:00:42,050

-Just tweaking at the code is very unlikely to

-

-14

-00:00:42,050 --> 00:00:44,930

-improve the code. Quite the opposite, actually. The best way

-

-15

-00:00:44,930 --> 00:00:48,420

-to repair a degraded architectural design is to first, understand

-

-16

-00:00:48,420 --> 00:00:51,110

-the current architecture, and then, try to fix it in

-

-17

-00:00:51,110 --> 00:00:52,280

-a more principled way.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt
deleted file mode 100644
index 4e64d4a..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/11 - Real World Example - lang_en_vs6.srt
+++ /dev/null
@@ -1,183 +0,0 @@
-1

-00:00:00,210 --> 00:00:02,770

-Now to drive home some of the points that I just

-

-2

-00:00:02,770 --> 00:00:05,920

-made, I would like to show you a few real world examples

-

-3

-00:00:05,920 --> 00:00:09,150

-of architectures that kind of went astray. The first example I

-

-4

-00:00:09,150 --> 00:00:11,970

-want to use is an example from the Linux kernel. Actually, from

-

-5

-00:00:11,970 --> 00:00:15,260

-an earlier version of the Linux kernel. A research group studied

-

-6

-00:00:15,260 --> 00:00:17,020

-the documentation of Linux, and also

-

-7

-00:00:17,020 --> 00:00:19,440

-interviewed several Linux developers. And by

-

-8

-00:00:19,440 --> 00:00:21,710

-doing that, they were able to come up with a software

-

-9

-00:00:21,710 --> 00:00:25,260

-architecture of Linux at different levels of obstruction. So the one that

-

-10

-00:00:25,260 --> 00:00:27,365

-I'm showing you here on the left, is the

-

-11

-00:00:27,365 --> 00:00:31,120

-software architecture at the level of Linux's main subsystems. So

-

-12

-00:00:31,120 --> 00:00:34,540

-this is the prescriptive architecture of Linux at the level

-

-13

-00:00:34,540 --> 00:00:38,060

-of Linux's main subsystems. So the researchers, after identifying this

-

-14

-00:00:38,060 --> 00:00:40,420

-architecture, they showed it to the developers, and the

-

-15

-00:00:40,420 --> 00:00:43,180

-developers agreed that, that was indeed the architecture of the

-

-16

-00:00:43,180 --> 00:00:46,540

-system. The researchers then studied the source code of Linux

-

-17

-00:00:46,540 --> 00:00:50,380

-and reverse engineered its actual architecture. So the architecture as

-

-18

-00:00:50,380 --> 00:00:54,020

-implemented, it's descriptive architecture. And this one here, on the

-

-19

-00:00:54,020 --> 00:00:56,610

-right, is the result. And as you can see, they found

-

-20

-00:00:56,610 --> 00:01:00,940

-a number of differences or violations between the prescriptive architecture and

-

-21

-00:01:00,940 --> 00:01:04,080

-the descriptive architecture. In particular, if we look at this architecture,

-

-22

-00:01:04,080 --> 00:01:06,820

-we can see that pretty much everything talks to everything else,

-

-23

-00:01:06,820 --> 00:01:09,010

-which is, in general, not a good thing. And in addition

-

-24

-00:01:09,010 --> 00:01:11,890

-to that, there are also several things that don't really make

-

-25

-00:01:11,890 --> 00:01:15,630

-much sense. For example the library calls the file system and

-

-26

-00:01:15,630 --> 00:01:19,290

-also the network interface which doesn't make much sense. Another thing

-

-27

-00:01:19,290 --> 00:01:21,850

-that is kind of weird is the fact that file system

-

-28

-00:01:21,850 --> 00:01:25,250

-calls the kernel initialization code. Which is also a little bit

-

-29

-00:01:25,250 --> 00:01:28,100

-weird. So basically, the bottom line here is that not even

-

-30

-00:01:28,100 --> 00:01:32,020

-the developers realized how the actual architecture of the system was,

-

-31

-00:01:32,020 --> 00:01:35,170

-and how it was different from the architecture they have conceived.

-

-32

-00:01:35,170 --> 00:01:37,870

-And in fact another interesting thing here is the reaction of

-

-33

-00:01:37,870 --> 00:01:41,020

-the developers when they were shown the actual architecture. So basically

-

-34

-00:01:41,020 --> 00:01:44,110

-they justified the differences by saying things such as, well you

-

-35

-00:01:44,110 --> 00:01:47,120

-know it had to be done fast, and therefore I changed it

-

-36

-00:01:47,120 --> 00:01:50,110

-and then I didn't have time to go back and update the documentation

-

-37

-00:01:50,110 --> 00:01:52,800

-and things of this sort. And by the way these are exactly some

-

-38

-00:01:52,800 --> 00:01:55,640

-of the reasons that we mentioned early on in the lesson for the

-

-39

-00:01:55,640 --> 00:01:58,410

-discrepancy between prescriptive and descriptive software

-

-40

-00:01:58,410 --> 00:01:59,990

-architecture. So one last thing that I

-

-41

-00:01:59,990 --> 00:02:02,840

-want to mention here as an aside and we can get back to

-

-42

-00:02:02,840 --> 00:02:06,495

-that later is the fact that you can probably clearly show how representing

-

-43

-00:02:06,495 --> 00:02:10,880

-software architectures graphically can be extremely useful, because it allows

-

-44

-00:02:10,880 --> 00:02:14,140

-for easily seeing the structure of the system. Look at different

-

-45

-00:02:14,140 --> 00:02:17,140

-views identify problematic points and so on. And we will see

-

-46

-00:02:17,140 --> 00:02:19,740

-how that can be useful in many cases also later on.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/12 - More Examples - lang_en_vs6.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/12 - More Examples - lang_en_vs6.srt
deleted file mode 100644
index 6f929eb..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/12 - More Examples - lang_en_vs6.srt
+++ /dev/null
@@ -1,107 +0,0 @@
-1

-00:00:00,180 --> 00:00:03,090

-As another example, I want to show you the architecture of the

-

-2

-00:00:03,090 --> 00:00:06,290

-iRods system. This is a data grid system that was built by

-

-3

-00:00:06,290 --> 00:00:09,720

-a biologist. And it's a system for storing and accessing big

-

-4

-00:00:09,720 --> 00:00:11,910

-data. So what I'm going to do, I'm going to do the same thing

-

-5

-00:00:11,910 --> 00:00:14,010

-that I did for the Linux system. I'm going to show you

-

-6

-00:00:14,010 --> 00:00:18,080

-here, on the left hand side, this clean prescriptive architecture for the

-

-7

-00:00:18,080 --> 00:00:21,000

-iRODS system. And I'm going to show you here on the right the

-

-8

-00:00:21,000 --> 00:00:22,660

-actual architecture of the system. The

-

-9

-00:00:22,660 --> 00:00:25,780

-descriptive architecture of iRODS. So here,

-

-10

-00:00:25,780 --> 00:00:27,640

-even if we don't go in and look at the details, you

-

-11

-00:00:27,640 --> 00:00:31,800

-can see very easily that the system is badly drifted and eroded

-

-12

-00:00:31,800 --> 00:00:34,500

-with respect to the way it was supposed to be. Continuing

-

-13

-00:00:34,500 --> 00:00:36,500

-with the examples. What I want to show you now is the

-

-14

-00:00:36,500 --> 00:00:39,980

-view of the complete architecture of HADOOP. As many of you probably

-

-15

-00:00:39,980 --> 00:00:44,210

-already know, HADOOP is an open source software framework for storage and

-

-16

-00:00:44,210 --> 00:00:47,990

-large scale processing of data sets. It's very broadly used. And here

-

-17

-00:00:47,990 --> 00:00:50,820

-is a picture of the architecture, and I hope you can see it

-

-18

-00:00:50,820 --> 00:00:54,290

-because the architecture is so complex and so broad and so

-

-19

-00:00:54,290 --> 00:00:57,050

-intertwined, and in order to be able to represent it here

-

-20

-00:00:57,050 --> 00:00:59,690

-in one page, I had to zoom out quite a bit.

-

-21

-00:00:59,690 --> 00:01:02,120

-But also in this case, you don't really have to look

-

-22

-00:01:02,120 --> 00:01:05,640

-at details. The important point here is that in this software architecture

-

-23

-00:01:05,640 --> 00:01:09,540

-61 out of the 67 components in the system have circular

-

-24

-00:01:09,540 --> 00:01:12,570

-dependencies. Which means that they depend on each other in a

-

-25

-00:01:12,570 --> 00:01:15,820

-circular way and this is normally not a good thing and also

-

-26

-00:01:15,820 --> 00:01:18,790

-in this case a few developers when shown the diagram had no

-

-27

-00:01:18,790 --> 00:01:22,120

-idea that the structure of the system was so complex and messy.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/13 - Final Example - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/13 - Final Example - lang_en_vs4.srt
deleted file mode 100644
index 4fab0c6..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/13 - Final Example - lang_en_vs4.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,220 --> 00:00:02,130

-I'm going to conclude this set of examples with

-

-2

-00:00:02,130 --> 00:00:04,750

-a system that you might also know, Bash. And in

-

-3

-00:00:04,750 --> 00:00:08,000

-case you don't, Bash is a Unix shell written as

-

-4

-00:00:08,000 --> 00:00:11,000

-a free software replacement for the traditional Bourne shell, also

-

-5

-00:00:11,000 --> 00:00:13,690

-called sh. So what I'm showing here is the

-

-6

-00:00:13,690 --> 00:00:17,950

-descriptive architecture of the command component of Bash. So, is

-

-7

-00:00:17,950 --> 00:00:22,170

-the architecture, as implemented, of the command component of Bash.

-

-8

-00:00:22,170 --> 00:00:25,390

-And the component is the one here sort of highlighted

-

-9

-00:00:25,390 --> 00:00:28,120

-in gray. And what you can see here, these names are

-

-10

-00:00:28,120 --> 00:00:31,640

-the sub components of the command component. And if we look at

-

-11

-00:00:31,640 --> 00:00:35,000

-this architecture, two design problems of the component can kind of jump

-

-12

-00:00:35,000 --> 00:00:37,870

-at us. The first one is the lack of cohesion within the

-

-13

-00:00:37,870 --> 00:00:40,830

-component. So, if you look here, you can see that only

-

-14

-00:00:40,830 --> 00:00:44,820

-a few connections exist between the sub-components. And having a low cohesion

-

-15

-00:00:44,820 --> 00:00:47,430

-is normally not a good thing for a design. The second thing

-

-16

-00:00:47,430 --> 00:00:50,860

-that we can note is the high coupling. The component has tons

-

-17

-00:00:50,860 --> 00:00:54,200

-of connections with other components. They're, these edges that are

-

-18

-00:00:54,200 --> 00:00:57,890

-leaving the components and going towards other parts of the system.

-

-19

-00:00:57,890 --> 00:01:01,190

-So basically, this component has low cohesion and high coupling, which

-

-20

-00:01:01,190 --> 00:01:04,730

-is exactly the opposite of how a good design should be.

-

-21

-00:01:04,730 --> 00:01:07,410

-Given the structure, it is clear that anytime you change

-

-22

-00:01:07,410 --> 00:01:09,970

-this component you might need to change a bunch of other

-

-23

-00:01:09,970 --> 00:01:13,440

-components in the system. And of course, when changing other components

-

-24

-00:01:13,440 --> 00:01:15,910

-in the system, you might also need to chance the command

-

-25

-00:01:15,910 --> 00:01:19,060

-component as well. And along similar lines, to understand this

-

-26

-00:01:19,060 --> 00:01:21,890

-component you probably need to look at many other parts of

-

-27

-00:01:21,890 --> 00:01:24,690

-the system, which is also less than ideal. And one

-

-28

-00:01:24,690 --> 00:01:27,580

-important point here is that with all these examples, I'm not

-

-29

-00:01:27,580 --> 00:01:30,500

-really trying to criticize any specific system, what I'm trying

-

-30

-00:01:30,500 --> 00:01:34,380

-to show instead, is how complex software architectures can be, and

-

-31

-00:01:34,380 --> 00:01:37,040

-how much they can degrade over time. And this is true

-

-32

-00:01:37,040 --> 00:01:39,660

-for most systems, not just the ones that I showed you.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/14 - Architectural Design Quiz - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/14 - Architectural Design Quiz - lang_en_vs4.srt
deleted file mode 100644
index e1e95e6..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/14 - Architectural Design Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,330

-At this point, we have seen some examples of

-

-2

-00:00:02,330 --> 00:00:05,070

-things that might go wrong with the software architecture. So

-

-3

-00:00:05,070 --> 00:00:07,220

-I'd like to ask you also to recap some of

-

-4

-00:00:07,220 --> 00:00:10,800

-the concepts that we've touched upon. What are ideal characteristics

-

-5

-00:00:10,800 --> 00:00:13,526

-of an architectural design? And I'm showing you three possibilities

-

-6

-00:00:13,526 --> 00:00:16,970

-here: scalability, low cohesion, and low coupling. And some of

-

-7

-00:00:16,970 --> 00:00:20,260

-these concepts we did not explicitly define, but we talked

-

-8

-00:00:20,260 --> 00:00:22,400

-about it when discussing the examples that we just saw.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/15 - Architectural Design Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/15 - Architectural Design Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 465687c..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/15 - Architectural Design Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,107 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,540

-So, let's look at these three characteristics one by

-

-2

-00:00:02,540 --> 00:00:06,660

-one. Scalability for software architecture is its ability to handle

-

-3

-00:00:06,660 --> 00:00:09,320

-the growth of the software system. For example, for a

-

-4

-00:00:09,320 --> 00:00:12,610

-web based system, scalability could be the ability to handle

-

-5

-00:00:12,610 --> 00:00:15,620

-a larger workload by adding new servers to the system.

-

-6

-00:00:15,620 --> 00:00:19,508

-Scalability is therefore an important characteristic of a software architecture,

-

-7

-00:00:19,508 --> 00:00:21,938

-especially for the kinds of systems that can grow over

-

-8

-00:00:21,938 --> 00:00:24,990

-time. So, we're going to mark it as an ideal characteristic.

-

-9

-00:00:24,990 --> 00:00:27,901

-Cohesion is a measure of how strongly related are

-

-10

-00:00:27,901 --> 00:00:30,920

-the elements of a module. Clearly, we should shoot

-

-11

-00:00:30,920 --> 00:00:33,760

-for high and not low cohesion when developing a

-

-12

-00:00:33,760 --> 00:00:37,100

-system. We want to develop modules whose elements cooperate to

-

-13

-00:00:37,100 --> 00:00:40,480

-provide the specific piece of functionality rather than modules

-

-14

-00:00:40,480 --> 00:00:43,410

-consisting of a bunch of elements that provide different

-

-15

-00:00:43,410 --> 00:00:47,040

-unrelated pieces of functionality. Therefor, low cohesion is definitely

-

-16

-00:00:47,040 --> 00:00:49,980

-not something that we want. We want high cohesion instead.

-

-17

-00:00:49,980 --> 00:00:53,040

-As for coupling, coupling is a concept related to cohesion

-

-18

-00:00:53,040 --> 00:00:55,070

-and is also a measure. In this case though, it

-

-19

-00:00:55,070 --> 00:00:58,130

-is a measure of how strongly related are the different

-

-20

-00:00:58,130 --> 00:01:01,830

-modules in a system. Low coupling, which is often correlated with

-

-21

-00:01:01,830 --> 00:01:05,570

-high cohesion, is an important and ideal characteristic of a

-

-22

-00:01:05,570 --> 00:01:08,660

-software architecture as it indicates that the different modules in

-

-23

-00:01:08,660 --> 00:01:12,220

-the system are independent from one another. Each module provides

-

-24

-00:01:12,220 --> 00:01:15,300

-a specific piece of functionality and it can provide it without

-

-25

-00:01:15,300 --> 00:01:17,530

-relying too much on other modules.

-

-26

-00:01:17,530 --> 00:01:19,960

-Basically, systems characterized by low coupling

-

-27

-00:01:19,960 --> 00:01:23,330

-and high cohesion, are systems that are easier to understand, and to maintain.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/16 - Architectural Elements - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/16 - Architectural Elements - lang_en_vs5.srt
deleted file mode 100644
index c8de83f..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/16 - Architectural Elements - lang_en_vs5.srt
+++ /dev/null
@@ -1,115 +0,0 @@
-1

-00:00:00,170 --> 00:00:02,770

-Now that we have discussed a few foundational aspects

-

-2

-00:00:02,770 --> 00:00:05,410

-of software architectures, and we have looked at some real

-

-3

-00:00:05,410 --> 00:00:07,900

-world examples that help us to illustrate some of these

-

-4

-00:00:07,900 --> 00:00:10,560

-points, to discuss some of these aspects. I want to

-

-5

-00:00:10,560 --> 00:00:13,730

-introduce and define the different elements that compose a software

-

-6

-00:00:13,730 --> 00:00:17,700

-architecture and also talk about architectural styles. So let's start

-

-7

-00:00:17,700 --> 00:00:20,190

-by discussing a software architecture's

-

-8

-00:00:20,190 --> 00:00:22,880

-elements. A software system's architecture

-

-9

-00:00:22,880 --> 00:00:26,690

-typically is not, and should not be, a uniform monolith.

-

-10

-00:00:26,690 --> 00:00:28,770

-On the contrary, an architecture should be a

-

-11

-00:00:28,770 --> 00:00:32,910

-composition and interplay of different elements. In particular,

-

-12

-00:00:32,910 --> 00:00:34,510

-as we quickly mentioned at the beginning of

-

-13

-00:00:34,510 --> 00:00:36,970

-the lesson, there are three main types of elements

-

-14

-00:00:36,970 --> 00:00:40,160

-in an architecture. Processing elements, data elements, and

-

-15

-00:00:40,160 --> 00:00:44,580

-interaction elements. Processing elements are those elements that implement

-

-16

-00:00:44,580 --> 00:00:48,260

-the business logic and perform transformations on data.

-

-17

-00:00:48,260 --> 00:00:51,760

-Data elements, also called information or state, are those

-

-18

-00:00:51,760 --> 00:00:54,180

-elements that contain the information that is used

-

-19

-00:00:54,180 --> 00:00:57,440

-and transformed by the processing elements. And finally,

-

-20

-00:00:57,440 --> 00:01:00,030

-the interaction elements are the glue that holds

-

-21

-00:01:00,030 --> 00:01:02,760

-the different pieces of the architecture together. Now,

-

-22

-00:01:02,760 --> 00:01:06,030

-the processing elements and the data are contained

-

-23

-00:01:06,030 --> 00:01:10,350

-into the system components, whereas the interaction elements

-

-24

-00:01:10,350 --> 00:01:13,900

-are maintained and controlled by the system connectors.

-

-25

-00:01:13,900 --> 00:01:17,100

-And components and connectors get all cooked together

-

-26

-00:01:17,100 --> 00:01:19,980

-into a systems configuration, which models

-

-27

-00:01:19,980 --> 00:01:22,940

-components, connectors and their relationships. So

-

-28

-00:01:22,940 --> 00:01:24,850

-now, let's look at components, connectors

-

-29

-00:01:24,850 --> 00:01:26,770

-and configurations in a little more detail.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/17 - Components, Connectors, and Configurations - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/17 - Components, Connectors, and Configurations - lang_en_vs5.srt
deleted file mode 100644
index 5fc4df3..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/17 - Components, Connectors, and Configurations - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,250 --> 00:00:02,350

-And let's start with software components. A

-

-2

-00:00:02,350 --> 00:00:06,700

-software component is an architectural entity that encapsulates

-

-3

-00:00:06,700 --> 00:00:09,940

-a subset of the system's functionality and or

-

-4

-00:00:09,940 --> 00:00:13,180

-the system's data. So basically components typically provide

-

-5

-00:00:13,180 --> 00:00:16,100

-application specific services. In addition to that, a

-

-6

-00:00:16,100 --> 00:00:19,650

-software component also restricts access to that subset

-

-7

-00:00:19,650 --> 00:00:23,570

-via an explicitly defined interface. And, in addition,

-

-8

-00:00:23,570 --> 00:00:25,610

-which I'm not showing here, a component

-

-9

-00:00:25,610 --> 00:00:28,010

-can also have explicitly defined dependencies

-

-10

-00:00:28,010 --> 00:00:30,990

-on its required execution environment. In complex

-

-11

-00:00:30,990 --> 00:00:33,680

-systems, interactions might become more important and

-

-12

-00:00:33,680 --> 00:00:36,220

-challenging than functionality. And this is why

-

-13

-00:00:36,220 --> 00:00:40,000

-connectors are very important architectural elements. A

-

-14

-00:00:40,000 --> 00:00:42,935

-software connector is an architectural building block

-

-15

-00:00:42,935 --> 00:00:46,990

-tasked with effecting and regulating interactions among

-

-16

-00:00:46,990 --> 00:00:50,980

-components. So basically, connectors typically provide application

-

-17

-00:00:50,980 --> 00:00:54,610

-independent interaction facilities. And it's worth noting here

-

-18

-00:00:54,610 --> 00:00:57,530

-that in many software systems, connectors might simply be

-

-19

-00:00:57,530 --> 00:01:01,140

-procedure calls or shared data accesses. So all constants

-

-20

-00:01:01,140 --> 00:01:03,589

-that we're familiar with. But consider that much more

-

-21

-00:01:03,589 --> 00:01:06,690

-sophisticated and complex connectors are also possible. And

-

-22

-00:01:06,690 --> 00:01:10,310

-components and connectors are composed in a specific way

-

-23

-00:01:10,310 --> 00:01:13,510

-in a given system architecture to accomplish that system's

-

-24

-00:01:13,510 --> 00:01:17,400

-objective And this is expressed through an architectural configuration.

-

-25

-00:01:17,400 --> 00:01:21,070

-More precisely, an architectural configuration, or topology, is a

-

-26

-00:01:21,070 --> 00:01:25,630

-set of specific associations between the components and connectors

-

-27

-00:01:25,630 --> 00:01:28,380

-of a software system's architecture. So now, let's look

-

-28

-00:01:28,380 --> 00:01:30,880

-at an example that brings all of this together.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/18 - Configuration Example - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/18 - Configuration Example - lang_en_vs5.srt
deleted file mode 100644
index 775f11c..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/18 - Configuration Example - lang_en_vs5.srt
+++ /dev/null
@@ -1,75 +0,0 @@
-1

-00:00:00,180 --> 00:00:02,880

-What I'm showing here is what an architectural configuration of

-

-2

-00:00:02,880 --> 00:00:05,460

-a system might look like in practice. And as you

-

-3

-00:00:05,460 --> 00:00:08,560

-can see, the configuration includes a set of components, which

-

-4

-00:00:08,560 --> 00:00:12,200

-are these rectangles over here. The components have various kinds of

-

-5

-00:00:12,200 --> 00:00:15,460

-ports, which are the ones marked here on the components

-

-6

-00:00:15,460 --> 00:00:17,760

-with different graphical representations. And

-

-7

-00:00:17,760 --> 00:00:19,760

-the components communicate through various

-

-8

-00:00:19,760 --> 00:00:22,860

-types of connectors, which are the grey elements here which

-

-9

-00:00:22,860 --> 00:00:25,570

-as you can see are used to connect the different components.

-

-10

-00:00:25,570 --> 00:00:28,180

-And something else that you can notice by looking at

-

-11

-00:00:28,180 --> 00:00:30,720

-this configuration is the fact that you can also have

-

-12

-00:00:30,720 --> 00:00:34,980

-hierarchically decomposable components. For example, if you look at the strategy

-

-13

-00:00:34,980 --> 00:00:39,250

-analyzer component, you can see that it has three subcomponents: one,

-

-14

-00:00:39,250 --> 00:00:42,110

-two, and three and two internal connectors as part of

-

-15

-00:00:42,110 --> 00:00:44,832

-it. And it is worth recalling here that a component

-

-16

-00:00:44,832 --> 00:00:47,152

-diagram as we said when first discussed in UML in

-

-17

-00:00:47,152 --> 00:00:51,230

-the course, can also be used to represent an architectural configuration.

-

-18

-00:00:51,230 --> 00:00:52,920

-So sometimes you will see architectural

-

-19

-00:00:52,920 --> 00:00:56,250

-configurations represented as UML component diagrams.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/19 - Deployment Architectural Perspective - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/19 - Deployment Architectural Perspective - lang_en_vs5.srt
deleted file mode 100644
index 1cc7d89..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/19 - Deployment Architectural Perspective - lang_en_vs5.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,180 --> 00:00:03,100

-A system cannot fulfill its purpose until it is

-

-2

-00:00:03,100 --> 00:00:06,727

-deployed. And deploying a system involves physically placing the

-

-3

-00:00:06,727 --> 00:00:09,960

-system's executable modules on the hardware devices on which

-

-4

-00:00:09,960 --> 00:00:12,490

-they are supposed to run. So when you do that,

-

-5

-00:00:12,490 --> 00:00:16,132

-you're basically mapping your components and connectors to specific

-

-6

-00:00:16,132 --> 00:00:19,810

-hardware elements. Here in this diagram, for instance, I'm

-

-7

-00:00:19,810 --> 00:00:22,160

-showing the same components that we saw in the

-

-8

-00:00:22,160 --> 00:00:25,400

-previous diagram, but we see them deployed on a laptop,

-

-9

-00:00:25,400 --> 00:00:28,620

-which is depicted here in this way, and on two

-

-10

-00:00:28,620 --> 00:00:32,820

-smartphones that are represented here, or PDAs, if you wish.

-

-11

-00:00:32,820 --> 00:00:34,730

-So why do we this, why do we create

-

-12

-00:00:34,730 --> 00:00:38,540

-a deployment perspective for our architecture? Well, because the deployment

-

-13

-00:00:38,540 --> 00:00:41,710

-view of an architecture can be critical in assessing whether

-

-14

-00:00:41,710 --> 00:00:44,920

-the system will be able to satisfy its requirement. Because

-

-15

-00:00:44,920 --> 00:00:47,860

-doing this mapping allows you to discover and assess other

-

-16

-00:00:47,860 --> 00:00:50,840

-characteristics of your system that you might not have considered

-

-17

-00:00:50,840 --> 00:00:53,440

-up to now. For instance, using a deployment view like this

-

-18

-00:00:53,440 --> 00:00:57,030

-one and knowing the characteristics of the hardware devices, one might

-

-19

-00:00:57,030 --> 00:01:00,056

-be able to assess the system in terms of available memory.

-

-20

-00:01:00,056 --> 00:01:02,610

-Is there going to be enough memory available to run the system,

-

-21

-00:01:02,610 --> 00:01:06,140

-for example, on this device? Power consumption. Is the power consumption

-

-22

-00:01:06,140 --> 00:01:09,270

-profile going to be larger than what the device can handle?

-

-23

-00:01:09,270 --> 00:01:12,580

-Or again the required network bandwidth. Does the system have enough

-

-24

-00:01:12,580 --> 00:01:16,170

-network bandwidth to enable the required interactions? And so on. So all

-

-25

-00:01:16,170 --> 00:01:19,140

-of these characteristics, all of these qualities, you can assess when

-

-26

-00:01:19,140 --> 00:01:22,730

-you do this final mapping of the components to the hardware elements.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/2 - Interview with Nenad Medvidovic - lang_en_vs6.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/2 - Interview with Nenad Medvidovic - lang_en_vs6.srt
deleted file mode 100644
index 40fa57c..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/2 - Interview with Nenad Medvidovic - lang_en_vs6.srt
+++ /dev/null
@@ -1,499 +0,0 @@
-1

-00:00:00,220 --> 00:00:02,900

-Because the topic of today's lecture is software architecture,

-

-2

-00:00:02,900 --> 00:00:05,390

-it seemed appropriate to start the lesson by asking a

-

-3

-00:00:05,390 --> 00:00:08,960

-world expert on this topic, what is software architecture, and

-

-4

-00:00:08,960 --> 00:00:11,570

-why it is important. To do that, let's fly to

-

-5

-00:00:11,570 --> 00:00:14,910

-California, and more precisely, Los Angeles, and visit Professor

-

-6

-00:00:14,910 --> 00:00:19,540

-Nenad Medvidovic. Hi, I'm here visiting Professor Nenad Medvidovic from

-

-7

-00:00:19,540 --> 00:00:22,310

-the University of Southern California. And Neno is one of

-

-8

-00:00:22,310 --> 00:00:25,250

-the world experts in software architecture, actually one of the

-

-9

-00:00:25,250 --> 00:00:28,300

-authors of, of a recent book which is, sort of the

-

-10

-00:00:28,300 --> 00:00:31,660

-book in software architecture. What I would like to discuss with

-

-11

-00:00:31,660 --> 00:00:34,500

-Neno is the concept of software architecture and its importance. Because

-

-12

-00:00:34,500 --> 00:00:37,520

-people are very familiar with the idea and the cost of the

-

-13

-00:00:37,520 --> 00:00:41,240

-design. And software architecture is something is very related to that,

-

-14

-00:00:41,240 --> 00:00:43,690

-but is less known. So I would like for Nenad to

-

-15

-00:00:43,690 --> 00:00:46,350

-elaborate on that, and tell us why is it important to

-

-16

-00:00:46,350 --> 00:00:49,880

-focus also on this specific you know, architectural aspects of the software.

-

-17

-00:00:49,880 --> 00:00:50,380

-&gt;&gt; When you

-

-18

-00:00:50,380 --> 00:00:53,220

-build any software system, even a simple, relatively simple

-

-19

-00:00:53,220 --> 00:00:56,840

-one. You're going to go through, a process of making

-

-20

-00:00:56,840 --> 00:01:00,070

-many, many design decisions. Hundreds or thousands sometimes even tens

-

-21

-00:01:00,070 --> 00:01:03,140

-of thousands of design decisions, so any program that you

-

-22

-00:01:03,140 --> 00:01:06,090

-write at some point you get to deciding what

-

-23

-00:01:06,090 --> 00:01:09,385

-the interface of a particular method is going to be.

-

-24

-00:01:09,385 --> 00:01:12,170

-Are you're going to put in a parameter that is

-

-25

-00:01:12,170 --> 00:01:15,530

-an integer or a float. When you're writing your routine

-

-26

-00:01:15,530 --> 00:01:17,400

-about some sort you have to decide whether you're

-

-27

-00:01:17,400 --> 00:01:18,900

-going to use a static data structure or a

-

-28

-00:01:18,900 --> 00:01:22,410

-dynamic data structure. All these things are design decisions.

-

-29

-00:01:22,410 --> 00:01:25,770

-Many of them however, will typically, in the average

-

-30

-00:01:25,770 --> 00:01:29,030

-case, not really impact the success of your system

-

-31

-00:01:29,030 --> 00:01:31,640

-and the long term well-being of your system. But

-

-32

-00:01:31,640 --> 00:01:35,390

-typically the things that software engineers start struggling with

-

-33

-00:01:35,390 --> 00:01:40,760

-are other design decisions. Design decisions that are the equivalent

-

-34

-00:01:40,760 --> 00:01:42,080

-of load baring walls in a building

-

-35

-00:01:42,080 --> 00:01:42,660

-&gt;&gt; Mm hm

-

-36

-00:01:42,660 --> 00:01:43,950

-&gt;&gt; These are the things that, if you

-

-37

-00:01:43,950 --> 00:01:45,960

-don't get them right, or if you compromise

-

-38

-00:01:45,960 --> 00:01:50,190

-them, will in fact potentially impact how the

-

-39

-00:01:50,190 --> 00:01:54,300

-system operates. They might result in failures of different

-

-40

-00:01:54,300 --> 00:01:56,780

-kinds. They may result in a system that

-

-41

-00:01:56,780 --> 00:01:59,460

-is not easily maintainable and so forth. In

-

-42

-00:01:59,460 --> 00:02:01,680

-a sense, to make a long story short,

-

-43

-00:02:01,680 --> 00:02:05,888

-architectural design decisions are really the principle design decisions

-

-44

-00:02:05,888 --> 00:02:07,900

-in your system. These are the things that are

-

-45

-00:02:07,900 --> 00:02:10,550

-very important. All of the other design decisions you

-

-46

-00:02:10,550 --> 00:02:13,520

-could sort of tag with being important, but they're

-

-47

-00:02:13,520 --> 00:02:17,730

-sort of below this very important or highly important threshold.

-

-48

-00:02:17,730 --> 00:02:21,400

-&gt;&gt; So if you need to change a low level design decision, sometimes

-

-49

-00:02:21,400 --> 00:02:23,970

-it's kind of easy to do. It might change a little structure. Is it

-

-50

-00:02:23,970 --> 00:02:27,140

-the case that you know, being the architecture is sort of the pillar of

-

-51

-00:02:27,140 --> 00:02:29,020

-the software, is that going to be much

-

-52

-00:02:29,020 --> 00:02:32,380

-more difficult to change an architectural decision?

-

-53

-00:02:32,380 --> 00:02:34,400

-And architecture is deemed to be you know,

-

-54

-00:02:34,400 --> 00:02:36,120

-say if you start with the wrong architecture the

-

-55

-00:02:36,120 --> 00:02:39,510

-software is going to, you know, necessarily be unsuccessful.

-

-56

-00:02:39,510 --> 00:02:41,320

-Or you can also do something that is better.

-

-57

-00:02:41,320 --> 00:02:46,070

-&gt;&gt; A system could be successful and very poorly architected. Just

-

-58

-00:02:46,070 --> 00:02:50,630

-like a building or an airplane or a car, any other

-

-59

-00:02:50,630 --> 00:02:54,700

-engineering artifact could be successful but poorly architected. So success we

-

-60

-00:02:54,700 --> 00:02:57,440

-can separated from this, but the, the point that you make in

-

-61

-00:02:57,440 --> 00:03:00,530

-asking this question is an important one. The

-

-62

-00:03:00,530 --> 00:03:04,260

-non-architectural design decisions, should be on the

-

-63

-00:03:04,260 --> 00:03:06,250

-average, there are exceptions and we need to

-

-64

-00:03:06,250 --> 00:03:09,580

-acknowledge that there is no one size fits all

-

-65

-00:03:09,580 --> 00:03:11,640

-type of solution for anything in software engineering

-

-66

-00:03:11,640 --> 00:03:15,060

-really. But on the average, the non-architectural design decisions,

-

-67

-00:03:15,060 --> 00:03:17,650

-should be much easier to make. So the

-

-68

-00:03:17,650 --> 00:03:22,600

-scale of the consequences of making such a change.

-

-69

-00:03:22,600 --> 00:03:25,880

-Really can vary from very minor, highly localized

-

-70

-00:03:25,880 --> 00:03:29,670

-to very important and sometimes, even system wide.

-

-71

-00:03:29,670 --> 00:03:33,570

-&gt;&gt; To conclude, I just like to ask you about some concept that is

-

-72

-00:03:33,570 --> 00:03:35,110

-we here about a lot. Which is

-

-73

-00:03:35,110 --> 00:03:37,430

-architectural erosion. Since, we're talking about in with

-

-74

-00:03:37,430 --> 00:03:39,760

-fine architecture and software evolution. So, what is,

-

-75

-00:03:39,760 --> 00:03:42,090

-exactly, an architectural erosion and why does that

-

-76

-00:03:42,090 --> 00:03:47,600

-happen? So, to go back to our non software metaphors. Imagine you buy a car.

-

-77

-00:03:47,600 --> 00:03:49,810

-And your car has four wheels, it has a steering wheel, it has

-

-78

-00:03:49,810 --> 00:03:53,700

-a nice chassis, it looks pretty nice. At one point, you end up

-

-79

-00:03:53,700 --> 00:03:54,950

-replacing its 150 horsepower engine with

-

-80

-00:03:54,950 --> 00:03:56,800

-a 250 horsepower engine because that's what

-

-81

-00:03:56,800 --> 00:04:01,510

-you want. And you start putting a spoiler on the back of the car

-

-82

-00:04:01,510 --> 00:04:04,680

-and then you replace the headlights. And then you replace the side view

-

-83

-00:04:04,680 --> 00:04:08,000

-mirrors with smaller ones because you want your car to be more aerodynamic.

-

-84

-00:04:08,000 --> 00:04:10,620

-And then you start tinkering with other things, like you cut the, maybe

-

-85

-00:04:10,620 --> 00:04:13,380

-the roof of the car because you want to turn it into a convertible,

-

-86

-00:04:13,380 --> 00:04:15,990

-et cetera. And in the end, what you have is

-

-87

-00:04:15,990 --> 00:04:19,810

-a car that is still your car. Looks very different, It's

-

-88

-00:04:19,810 --> 00:04:23,650

-structural and behavioral properties are very different And, what you

-

-89

-00:04:23,650 --> 00:04:27,260

-might find is that the car doesn't handle nearly as well.

-

-90

-00:04:27,260 --> 00:04:29,670

-For example, in a very sharp turn it might not

-

-91

-00:04:29,670 --> 00:04:31,910

-be able to negotiate a steep hill as well. Because you

-

-92

-00:04:31,910 --> 00:04:35,760

-pretty much changed it all along the way. Architectural erosion in

-

-93

-00:04:35,760 --> 00:04:38,620

-the case of a software system is the exact same thing

-

-94

-00:04:38,620 --> 00:04:41,480

-with one huge caveat. Very few, if any of us,

-

-95

-00:04:41,480 --> 00:04:44,970

-will ever put a new engine into our car or tinker

-

-96

-00:04:44,970 --> 00:04:47,390

-with the structural soundness of the car by cutting off the

-

-97

-00:04:47,390 --> 00:04:50,260

-roof etc. In a software system we do it all the

-

-98

-00:04:50,260 --> 00:04:53,530

-time. We'll add a feature. We'll change one bit of the

-

-99

-00:04:53,530 --> 00:04:57,088

-user interface here. We'll port it to a new platform, some

-

-100

-00:04:57,088 --> 00:05:00,990

-kind of a, a mobile platform, for example. And pretty soon,

-

-101

-00:05:00,990 --> 00:05:03,750

-what you end up with is really a software system that,

-

-102

-00:05:03,750 --> 00:05:06,990

-that is maybe a distant relative of your original

-

-103

-00:05:06,990 --> 00:05:10,500

-system. It is a mutant in many ways, because often

-

-104

-00:05:10,500 --> 00:05:12,986

-times these little tinkerings happen on a one off

-

-105

-00:05:12,986 --> 00:05:15,610

-basis. There is no over-arching vision of how you should

-

-106

-00:05:15,610 --> 00:05:19,060

-do this. So, you are basically going through a

-

-107

-00:05:19,060 --> 00:05:21,980

-subsequent set of steps where you are making locally optimal

-

-108

-00:05:21,980 --> 00:05:25,240

-decisions for any one of these changes and what

-

-109

-00:05:25,240 --> 00:05:29,140

-you might end up finding is that the globally optimal

-

-110

-00:05:29,140 --> 00:05:32,100

-behavior of the system is badly compromised. The structural

-

-111

-00:05:32,100 --> 00:05:34,952

-soundness in a sense of the system badly compromised.

-

-112

-00:05:34,952 --> 00:05:38,510

-The non-functional properties of the system could be seriously

-

-113

-00:05:38,510 --> 00:05:42,390

-affected. This is how security flaws creep into systems. This

-

-114

-00:05:42,390 --> 00:05:44,250

-is how reliability flaws. This is how we use

-

-115

-00:05:44,250 --> 00:05:48,420

-the usability of a system often times suffers. And most

-

-116

-00:05:48,420 --> 00:05:50,920

-importantly for software engineers, the people who actually build the

-

-117

-00:05:50,920 --> 00:05:54,950

-software, the maintainability of the system becomes a huge problem.

-

-118

-00:05:54,950 --> 00:05:59,130

-Because now you're looking at this thing, it's got all these various appendages,

-

-119

-00:05:59,130 --> 00:06:03,170

-its original design has pretty badly eroded and yet somehow you have to

-

-120

-00:06:03,170 --> 00:06:06,850

-figure out how to keep fixing it. Making sure that it operates in

-

-121

-00:06:06,850 --> 00:06:11,380

-a continuous fashion because many of these systems live for 20, 30, 40 years.

-

-122

-00:06:11,380 --> 00:06:13,840

-&gt;&gt; Thank you so much for your insight; it is a perfect

-

-123

-00:06:13,840 --> 00:06:16,500

-introduction for our lesson. So we'll get to the lesson now. And.

-

-124

-00:06:16,500 --> 00:06:17,920

-&gt;&gt; Thank you very much.

-

-125

-00:06:17,920 --> 00:06:18,300

-&gt;&gt; Thank you.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/20 - Architectural Styles - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/20 - Architectural Styles - lang_en_vs5.srt
deleted file mode 100644
index b4ee115..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/20 - Architectural Styles - lang_en_vs5.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,210 --> 00:00:01,569

-The last topic I want to cover in

-

-2

-00:00:01,569 --> 00:00:04,939

-this lesson is architectural styles. So, let's see

-

-3

-00:00:04,939 --> 00:00:07,400

-what those architectural styles are. There are certain

-

-4

-00:00:07,400 --> 00:00:10,240

-design choices that when applied in a given context

-

-5

-00:00:10,240 --> 00:00:14,420

-regularly result in solutions with superior properties. What

-

-6

-00:00:14,420 --> 00:00:17,290

-this means is that, compared to other possible alternatives,

-

-7

-00:00:17,290 --> 00:00:20,952

-these solutions are more elegant, effective, efficient, dependable,

-

-8

-00:00:20,952 --> 00:00:25,560

-evolve-able, scale-able, and so on. Architectural styles capture exactly

-

-9

-00:00:25,560 --> 00:00:28,490

-these solutions. They capture idioms that we can

-

-10

-00:00:28,490 --> 00:00:30,870

-use when designing a system. For a more formal

-

-11

-00:00:30,870 --> 00:00:34,160

-definition, let's look how Mary Shaw and David Garlan

-

-12

-00:00:34,160 --> 00:00:37,480

-define a architectural style. They say that an architectural

-

-13

-00:00:37,480 --> 00:00:40,000

-style defines a family of systems in terms

-

-14

-00:00:40,000 --> 00:00:43,550

-of a pattern of structural organization; a vocabulary of

-

-15

-00:00:43,550 --> 00:00:47,880

-components and connectors and constraints on how these components

-

-16

-00:00:47,880 --> 00:00:50,620

-and connectors can be combined. So in summary we

-

-17

-00:00:50,620 --> 00:00:53,650

-can say that an architectural style is a named collection

-

-18

-00:00:53,650 --> 00:00:57,680

-of architectural design decisions applicable in a given context. And I

-

-19

-00:00:57,680 --> 00:01:00,100

-want to stress that it is important to study and

-

-20

-00:01:00,100 --> 00:01:04,670

-know these architectural styles for several reasons. Because knowing them allows

-

-21

-00:01:04,670 --> 00:01:07,660

-us to avoid reinventing the wheel. It also allows us

-

-22

-00:01:07,660 --> 00:01:10,330

-to choose the right solution to a known problem and in

-

-23

-00:01:10,330 --> 00:01:12,910

-some cases it even allows us to move on and

-

-24

-00:01:12,910 --> 00:01:16,400

-discover even more advanced styles if we know the basic ones.

-

-25

-00:01:16,400 --> 00:01:19,340

-So we should be familiar with architectural styles, what

-

-26

-00:01:19,340 --> 00:01:22,000

-they are, and in which context they work, and

-

-27

-00:01:22,000 --> 00:01:23,800

-in which context they do not work. So as

-

-28

-00:01:23,800 --> 00:01:26,090

-to be able to apply them in the right situations.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/21 - Types of Architectural Styles - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/21 - Types of Architectural Styles - lang_en_vs5.srt
deleted file mode 100644
index 05011c7..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/21 - Types of Architectural Styles - lang_en_vs5.srt
+++ /dev/null
@@ -1,239 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,410

-So what does it mean to know architectural styles? There

-

-2

-00:00:02,410 --> 00:00:06,390

-are many many, many architectural styles. So we cannot cover them

-

-3

-00:00:06,390 --> 00:00:08,730

-all here. What I want to do instead is, I want to

-

-4

-00:00:08,730 --> 00:00:10,960

-mention a few of those. And then I want to go in

-

-5

-00:00:10,960 --> 00:00:13,300

-more depth, on one of them. So the first item I

-

-6

-00:00:13,300 --> 00:00:17,420

-want to mention is pipes and filters. And pipes and filters indicate

-

-7

-00:00:17,420 --> 00:00:21,110

-an architectural style in which a chain of processing elements, which

-

-8

-00:00:21,110 --> 00:00:25,410

-can be processes, threads, co-routines, is arranged so that the output

-

-9

-00:00:25,410 --> 00:00:28,420

-of each element is the input of the next one

-

-10

-00:00:28,420 --> 00:00:31,840

-and usually with some buffering in between consecutive elements. A

-

-11

-00:00:31,840 --> 00:00:34,120

-typical example of this, if you're familiar with Unix are

-

-12

-00:00:34,120 --> 00:00:37,900

-Unix pipes, that you can use to concatenate Unix commands.

-

-13

-00:00:37,900 --> 00:00:40,310

-Another style I want to mention is the event driven

-

-14

-00:00:40,310 --> 00:00:43,540

-one. An event driven system typically consists of event

-

-15

-00:00:43,540 --> 00:00:46,590

-emittors, like the alarm over here, and event consumers, like

-

-16

-00:00:46,590 --> 00:00:50,720

-the fire truck, down here, and consumers are notified when events

-

-17

-00:00:50,720 --> 00:00:53,810

-of interest occurr and have the responsibility of reacting

-

-18

-00:00:53,810 --> 00:00:56,676

-to those events. A typical example will be a GUI,

-

-19

-00:00:56,676 --> 00:00:59,950

-in which widgets generate events and listeners listen to those

-

-20

-00:00:59,950 --> 00:01:02,550

-events and react to them. For example, they react to

-

-21

-00:01:02,550 --> 00:01:05,060

-the push of a button. A very commonly used

-

-22

-00:01:05,060 --> 00:01:09,250

-architectural style is Publish-subscribe, represented by the paper boy. Over

-

-23

-00:01:09,250 --> 00:01:12,420

-here. And this is an architectural style in which senders

-

-24

-00:01:12,420 --> 00:01:15,870

-of messages, they're called publishers, do not send messages directly

-

-25

-00:01:15,870 --> 00:01:19,330

-to specific recievers. Instead, they publish messages with one

-

-26

-00:01:19,330 --> 00:01:22,530

-or more associated texts without knowledge of who will

-

-27

-00:01:22,530 --> 00:01:26,810

-receive such messages. Similarly subscribers will express interest in

-

-28

-00:01:26,810 --> 00:01:29,340

-one or more tags. And will only receive messages of

-

-29

-00:01:29,340 --> 00:01:32,095

-interest according to such tags. A typical example of

-

-30

-00:01:32,095 --> 00:01:35,240

-a publish-subscribe system, will be Twitter. And I'm pretty

-

-31

-00:01:35,240 --> 00:01:36,835

-sure that most of you are familiar with the

-

-32

-00:01:36,835 --> 00:01:41,170

-client-server architecture. In which computers in a network, assume one

-

-33

-00:01:41,170 --> 00:01:43,930

-of two roles. The server provides the resources and

-

-34

-00:01:43,930 --> 00:01:47,630

-functionality. And the client initiates contact with the server,

-

-35

-00:01:47,630 --> 00:01:50,920

-and requests the use of those resources and functionality.

-

-36

-00:01:50,920 --> 00:01:53,340

-Also in this case, a typical example would be

-

-37

-00:01:53,340 --> 00:01:56,470

-email, in which an email server provides email storage

-

-38

-00:01:56,470 --> 00:01:59,390

-and management capabilities, and an email client will use

-

-39

-00:01:59,390 --> 00:02:02,580

-those capabilities. You may also be familiar with peer-to-peer,

-

-40

-00:02:02,580 --> 00:02:06,530

-or P2P, systems. A P2P system is a type

-

-41

-00:02:06,530 --> 00:02:10,850

-of decentralized and distributed network system in which individual nodes

-

-42

-00:02:10,850 --> 00:02:14,220

-in the network, that are called peers, act as independent

-

-43

-00:02:14,220 --> 00:02:17,940

-agents that are both suppliers and consumers of resources. This

-

-44

-00:02:17,940 --> 00:02:20,700

-is in contrast to the centralized client-server model, where client

-

-45

-00:02:20,700 --> 00:02:23,660

-nodes interact with the central authority. And I'm not going to

-

-46

-00:02:23,660 --> 00:02:26,030

-say anything more about peer-to-peer, because I'm going to show you

-

-47

-00:02:26,030 --> 00:02:28,940

-two examples, of peer-to-peer systems in the rest of the

-

-48

-00:02:28,940 --> 00:02:32,040

-lesson. And you probably have at least heard of rest.

-

-49

-00:02:32,040 --> 00:02:33,990

-Which in this case is not an invitation to

-

-50

-00:02:33,990 --> 00:02:36,970

-relax as the graphic might indicate. But rather stands for

-

-51

-00:02:36,970 --> 00:02:41,400

-Representational State Transfer. REST is a hybrid architectural style

-

-52

-00:02:41,400 --> 00:02:45,150

-for distributed hypermedia systems, that is derived from several other

-

-53

-00:02:45,150 --> 00:02:48,210

-network based architectural styles. And that is characterized by

-

-54

-00:02:48,210 --> 00:02:51,970

-uniform connector interface, and even if I'm not going to say

-

-55

-00:02:51,970 --> 00:02:54,230

-anything else about the rest, I wanted to mention

-

-56

-00:02:54,230 --> 00:02:57,440

-it, because it is an extremely well known architectural style.

-

-57

-00:02:57,440 --> 00:02:59,300

-And the reason for this is that REST is

-

-58

-00:02:59,300 --> 00:03:03,310

-very widely used, because it is basically the architectural style

-

-59

-00:03:03,310 --> 00:03:06,050

-that governs the world wide web. So we use it

-

-60

-00:03:06,050 --> 00:03:08,330

-all the time when we browse the internet, for instance.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/22 - Architectural Styles Quiz - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/22 - Architectural Styles Quiz - lang_en_vs4.srt
deleted file mode 100644
index 2e8c051..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/22 - Architectural Styles Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,27 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,630

-Consider now the following architectural styles

-

-2

-00:00:02,630 --> 00:00:04,356

-that we just saw: pipes and filters,

-

-3

-00:00:04,356 --> 00:00:09,310

-event-driven, publish-subscribe, client-server, peer-to-peer, and rest.

-

-4

-00:00:09,310 --> 00:00:11,150

-I'm showing you here, a list of

-

-5

-00:00:11,150 --> 00:00:15,220

-four different systems, and I would like for you to mark here which

-

-6

-00:00:15,220 --> 00:00:18,750

-architectural style, or styles, characterize Each of

-

-7

-00:00:18,750 --> 00:00:21,510

-these systems. Again, mark all that apply.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/23 - Architectural Styles Quiz Solution - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/23 - Architectural Styles Quiz Solution - lang_en_vs5.srt
deleted file mode 100644
index d48320b..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/23 - Architectural Styles Quiz Solution - lang_en_vs5.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,680

-Okay, let's start with the Android Operating System. The Android

-

-2

-00:00:02,680 --> 00:00:07,170

-system, heavily based on the generation and handling of events,

-

-3

-00:00:07,170 --> 00:00:10,640

-so it is mostly an event driven system. However, it

-

-4

-00:00:10,640 --> 00:00:13,870

-also has some elements of publish, subscribe, in the way

-

-5

-00:00:13,870 --> 00:00:17,480

-elements in the system can register for elements of interest.

-

-6

-00:00:17,480 --> 00:00:20,570

-So we can mark both styles here. So what about

-

-7

-00:00:20,570 --> 00:00:23,449

-Skype? We haven't discussed Skype yet. So here we probably

-

-8

-00:00:23,449 --> 00:00:25,019

-had to take a little bit of a wild guess.

-

-9

-00:00:25,019 --> 00:00:27,068

-But as we will see in more detail in the

-

-10

-00:00:27,068 --> 00:00:29,736

-rest of the lesson. Skype is mainly a peer to

-

-11

-00:00:29,736 --> 00:00:34,035

-peer architecture, with some minimal elements of a client server

-

-12

-00:00:34,035 --> 00:00:37,770

-architecture. For example, when you start Skype and sign in

-

-13

-00:00:37,770 --> 00:00:40,420

-to a conceptually centralized server. So let's move to the

-

-14

-00:00:40,420 --> 00:00:42,930

-World Wide Web. As we just discussed, the Word Wide

-

-15

-00:00:42,930 --> 00:00:46,255

-Web is based on a rest architecture. And because rest

-

-16

-00:00:46,255 --> 00:00:50,170

-style, is a hybrid derived from other architectural styles, including the

-

-17

-00:00:50,170 --> 00:00:53,960

-client server architectural styles. Both of those styles apply here.

-

-18

-00:00:53,960 --> 00:00:57,465

-And finally Dropbox is by and large, a client server

-

-19

-00:00:57,465 --> 00:01:01,904

-architecture. As conceptually, we upload our documents to a Dropbox

-

-20

-00:01:01,904 --> 00:01:05,370

-central server, and get the files from the same server.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/24 - P2P Architectures - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/24 - P2P Architectures - lang_en_vs5.srt
deleted file mode 100644
index 927c773..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/24 - P2P Architectures - lang_en_vs5.srt
+++ /dev/null
@@ -1,39 +0,0 @@
-1

-00:00:00,170 --> 00:00:02,110

-We're not going to be able to study indepth

-

-2

-00:00:02,110 --> 00:00:05,590

-any of the architectural styles that we just discussed. However, I

-

-3

-00:00:05,590 --> 00:00:08,790

-want to at least discuss two representative examples of P2P

-

-4

-00:00:08,790 --> 00:00:12,100

-architectures. Because, these are systems that you probably used, or at

-

-5

-00:00:12,100 --> 00:00:14,090

-least, you used one of them. And, they will allow

-

-6

-00:00:14,090 --> 00:00:17,590

-me to highlight some interesting points. So, as we just mentioned,

-

-7

-00:00:17,590 --> 00:00:22,450

-P2P systems are decentralized resource sharing and discovery systems. And the

-

-8

-00:00:22,450 --> 00:00:25,370

-two systems that I want to discuss, and that are representative

-

-9

-00:00:25,370 --> 00:00:29,630

-of this kind of architectures, are Napster and Skype. And you may or

-

-10

-00:00:29,630 --> 00:00:32,920

-may not be familiar with Napster, but I'm pretty sure that you know Skype.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/25 - Napster Example - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/25 - Napster Example - lang_en_vs4.srt
deleted file mode 100644
index d3ab75b..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/25 - Napster Example - lang_en_vs4.srt
+++ /dev/null
@@ -1,231 +0,0 @@
-1

-00:00:00,160 --> 00:00:03,160

-So let's start by considering Napster. In it's first

-

-2

-00:00:03,160 --> 00:00:07,210

-incarnation, Napster was a peer-to-peer file sharing system. And

-

-3

-00:00:07,210 --> 00:00:10,200

-it was mostly used, actually, to illegally share mp3s.

-

-4

-00:00:10,200 --> 00:00:12,630

-Which is also why it got sued and later

-

-5

-00:00:12,630 --> 00:00:16,129

-on, it basically ceased operations. But nevertheless, I think

-

-6

-00:00:16,129 --> 00:00:19,710

-Napster is an interesting example of mixed architecture. And

-

-7

-00:00:19,710 --> 00:00:22,020

-I'm going to illustrate the way Napster works by showing

-

-8

-00:00:22,020 --> 00:00:25,820

-you, here, the basic configuration of Napster and the interactions

-

-9

-00:00:25,820 --> 00:00:28,950

-between its elements. So let's look at how such interaction

-

-10

-00:00:28,950 --> 00:00:32,250

-can take place for the three peers shown here. And

-

-11

-00:00:32,250 --> 00:00:34,430

-in this case Peer A and B are the only

-

-12

-00:00:34,430 --> 00:00:37,290

-ones really involved in the action. So let's look at

-

-13

-00:00:37,290 --> 00:00:40,700

-a typical sequence of events for the Napster system. We

-

-14

-00:00:40,700 --> 00:00:44,340

-have Peer A that will start by registering, here, with

-

-15

-00:00:44,340 --> 00:00:47,530

-the content directory. Peer B will also register with the

-

-16

-00:00:47,530 --> 00:00:50,970

-content directory. And when these two peers register, the content directory

-

-17

-00:00:50,970 --> 00:00:54,370

-will know what kind of content they can provide. Later on,

-

-18

-00:00:54,370 --> 00:00:57,660

-Peer A will request a song. And one first observation that

-

-19

-00:00:57,660 --> 00:01:00,550

-we can make, based on this interaction, is the fact that,

-

-20

-00:01:00,550 --> 00:01:03,900

-up to now, this is a purely client-server system. This is

-

-21

-00:01:03,900 --> 00:01:06,530

-the client. This is the client. And this is the server.

-

-22

-00:01:06,530 --> 00:01:10,320

-And the interaction is a typical client-server interaction. But now we're

-

-23

-00:01:10,320 --> 00:01:12,410

-at the point in which things start to change a little

-

-24

-00:01:12,410 --> 00:01:16,008

-bit. At this point, after Peer A has requested the song,

-

-25

-00:01:16,008 --> 00:01:18,820

-the peer and content directory will look up its

-

-26

-00:01:18,820 --> 00:01:22,730

-gigantic index and will see that Peer B actually has

-

-27

-00:01:22,730 --> 00:01:24,850

-the song that Peer A requested. So it will

-

-28

-00:01:24,850 --> 00:01:27,690

-send to Peer A a handle that Peer A can

-

-29

-00:01:27,690 --> 00:01:31,052

-use to connect directly to Peer B. So this

-

-30

-00:01:31,052 --> 00:01:34,540

-is where the system is no longer a client-server system.

-

-31

-00:01:34,540 --> 00:01:37,890

-Because at this point, the two peers are connected directly.

-

-32

-00:01:37,890 --> 00:01:41,000

-So at this point, we have a peer-to-peer interaction. And,

-

-33

-00:01:41,000 --> 00:01:43,770

-after getting the request from Peer A, then Peer B

-

-34

-00:01:43,770 --> 00:01:47,170

-will start sending the content to Peer A. And I said

-

-35

-00:01:47,170 --> 00:01:50,660

-earlier that one of the useful things about representing an

-

-36

-00:01:50,660 --> 00:01:52,440

-architecture and interaction within an

-

-37

-00:01:52,440 --> 00:01:54,580

-architecture graphically, is the fact that

-

-38

-00:01:54,580 --> 00:01:57,550

-it allows you to spot possible problems. And in this

-

-39

-00:01:57,550 --> 00:02:00,666

-case, by representing the Napster architecture in this way, and by

-

-40

-00:02:00,666 --> 00:02:03,300

-studying how things work, we can see that there's an

-

-41

-00:02:03,300 --> 00:02:06,010

-issue with the architecture of Napster that will not make this

-

-42

-00:02:06,010 --> 00:02:10,020

-architecture scale. As some of you might have already noticed, this peer

-

-43

-00:02:10,020 --> 00:02:13,720

-and content directory is a single point of failure, and is very

-

-44

-00:02:13,720 --> 00:02:17,230

-likely to cause problems when the number of peers grows too large.

-

-45

-00:02:17,230 --> 00:02:19,890

-Because at that point, there are going to be too many requests to

-

-46

-00:02:19,890 --> 00:02:22,840

-the peer and content directory, and the peer and content directory is

-

-47

-00:02:22,840 --> 00:02:25,460

-unlikely to be able to keep up with all the requests. So

-

-48

-00:02:25,460 --> 00:02:27,840

-some changes in the architecture will have to be made. In the

-

-49

-00:02:27,840 --> 00:02:31,310

-case of Napster, we didn't see this problem occurring because, as I said

-

-50

-00:02:31,310 --> 00:02:34,420

-earlier, Napster got sued and ceased operation before the problem

-

-51

-00:02:34,420 --> 00:02:37,650

-actually manifested. Now looking at the system for an architecture-style

-

-52

-00:02:37,650 --> 00:02:40,560

-perspective, we can see that Napster was a hybrid architecture

-

-53

-00:02:40,560 --> 00:02:43,920

-with both client-server and peer-to-peer elements. And something I would

-

-54

-00:02:43,920 --> 00:02:45,870

-like to stress here, is that this is not at

-

-55

-00:02:45,870 --> 00:02:49,400

-all uncommon. So in real world nontrivial architectures, it is

-

-56

-00:02:49,400 --> 00:02:52,470

-very common to see multiple styles used in the same

-

-57

-00:02:52,470 --> 00:02:56,209

-system. The next system that we will consider, Skype, is instead,

-

-58

-00:02:56,209 --> 00:02:59,885

-an example of a well-designed, almost purely peer-to-peer system.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/26 - Skype Example - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/26 - Skype Example - lang_en_vs5.srt
deleted file mode 100644
index 2118c73..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/26 - Skype Example - lang_en_vs5.srt
+++ /dev/null
@@ -1,287 +0,0 @@
-1

-00:00:00,220 --> 00:00:03,040

-So even if you're too young to have used Napster,

-

-2

-00:00:03,040 --> 00:00:06,150

-I'm pretty sure that most of you know and use Skype,

-

-3

-00:00:06,150 --> 00:00:10,180

-a Voice Over IP and instant messaging service. Many of

-

-4

-00:00:10,180 --> 00:00:13,790

-you, however, probably don't know how Skype works. To understand that,

-

-5

-00:00:13,790 --> 00:00:16,360

-let's have a look at Skype's architecture, which I'm sketching

-

-6

-00:00:16,360 --> 00:00:19,890

-here, and which is a peer-to-peer architecture with a small twist.

-

-7

-00:00:19,890 --> 00:00:22,300

-So first of all, by looking at the architecture we can

-

-8

-00:00:22,300 --> 00:00:25,600

-see that whereas Napster was a client-server system with an element

-

-9

-00:00:25,600 --> 00:00:29,960

-of peer-to-peer, Skype is a much more decentralized system. Why

-

-10

-00:00:29,960 --> 00:00:31,940

-is that? Well, if we look here, we can see

-

-11

-00:00:31,940 --> 00:00:34,720

-that there is a login server -- this node over

-

-12

-00:00:34,720 --> 00:00:38,670

-here -- and that means that every Skype user has to register

-

-13

-00:00:38,670 --> 00:00:42,000

-with this centralized service. But that's the only interaction of

-

-14

-00:00:42,000 --> 00:00:44,930

-this kind within Skype. After you log in, all you

-

-15

-00:00:44,930 --> 00:00:47,580

-get is a connection through a super node like this

-

-16

-00:00:47,580 --> 00:00:50,760

-one. So, what are super nodes? Super nodes are highly reliable

-

-17

-00:00:50,760 --> 00:00:54,680

-nodes with high bandwidth that are not behind a firewall

-

-18

-00:00:54,680 --> 00:00:58,180

-and that runs Skype regularly, which means that nodes that shut

-

-19

-00:00:58,180 --> 00:01:01,540

-down Skype occasionally will not qualify as super nodes. And one

-

-20

-00:01:01,540 --> 00:01:04,239

-interesting thing about super nodes is that they're not owned by

-

-21

-00:01:04,239 --> 00:01:07,990

-Skype. They're just regular nodes that get promoted by Skype to

-

-22

-00:01:07,990 --> 00:01:11,500

-super nodes, and that know about each other. So basically Skype

-

-23

-00:01:11,500 --> 00:01:13,710

-has an algorithm that looks at the nodes in the system

-

-24

-00:01:13,710 --> 00:01:15,880

-and decides whether a node can be a super node or

-

-25

-00:01:15,880 --> 00:01:18,932

-not based on its characteristics. So now that we've discussed

-

-26

-00:01:18,932 --> 00:01:22,040

-super nodes, let's see what will happen if peer two wanted

-

-27

-00:01:22,040 --> 00:01:25,091

-to communicate with peer three. So let's represent this by

-

-28

-00:01:25,091 --> 00:01:27,956

-creating a dashed line between peer two and peer three. In

-

-29

-00:01:27,956 --> 00:01:30,980

-this case, peer two will contact this super node, which

-

-30

-00:01:30,980 --> 00:01:33,750

-is super node A. And super node A, based on its

-

-31

-00:01:33,750 --> 00:01:36,570

-knowledge of the Skype network and the position of the super

-

-32

-00:01:36,570 --> 00:01:40,930

-nodes, will contact and route the communication through super node C,

-

-33

-00:01:40,930 --> 00:01:44,100

-which will in turn route the communication to peer three.

-

-34

-00:01:44,100 --> 00:01:46,620

-And in that way peer two and peer three will be

-

-35

-00:01:46,620 --> 00:01:50,740

-able to communicate with each other. And this will happen just

-

-36

-00:01:50,740 --> 00:01:53,970

-as if peer two and peer three were connected directly, as

-

-37

-00:01:53,970 --> 00:01:57,760

-peers, even though the communication goes through two super nodes. Another

-

-38

-00:01:57,760 --> 00:02:00,470

-thing that is important to know about the behavior of Skype

-

-39

-00:02:00,470 --> 00:02:03,760

-is that, if the link between super nodes A and C

-

-40

-00:02:03,760 --> 00:02:05,950

-were to go down. So let's assume that there is a

-

-41

-00:02:05,950 --> 00:02:10,840

-problem with this link, then Skype will automatically, or automagically

-

-42

-00:02:10,840 --> 00:02:14,550

-reroute the communication through super node B, which will in

-

-43

-00:02:14,550 --> 00:02:17,950

-turn reroute it super node C, which will again reroute

-

-44

-00:02:17,950 --> 00:02:20,020

-to peer three. So peer two and three will still

-

-45

-00:02:20,020 --> 00:02:22,550

-be connected, but this time they will be going through

-

-46

-00:02:22,550 --> 00:02:25,620

-three super nodes. And just in case you wondered, this

-

-47

-00:02:25,620 --> 00:02:28,620

-is exactly what happens when you are talking over Skype.

-

-48

-00:02:28,620 --> 00:02:31,790

-The quality of the communication degrades, and you are reconnected.

-

-49

-00:02:31,790 --> 00:02:34,880

-So there is this rerouting going on through different nodes. So

-

-50

-00:02:34,880 --> 00:02:37,640

-although this architecture is more effective than the Napster's one, it

-

-51

-00:02:37,640 --> 00:02:40,640

-is not without problems. For example, you might remember that a

-

-52

-00:02:40,640 --> 00:02:44,640

-few years ago, Skype went down for about 36 hours. And

-

-53

-00:02:44,640 --> 00:02:47,880

-later on it was discovered that the cause was the algorithm

-

-54

-00:02:47,880 --> 00:02:51,460

-used by Skype to determine which nodes could be super nodes.

-

-55

-00:02:51,460 --> 00:02:54,330

-And remember, as I said, that one requirement for these nodes

-

-56

-00:02:54,330 --> 00:02:57,130

-is that have to up all the time. So what happened

-

-57

-00:02:57,130 --> 00:03:00,420

-is most of the super nodes were running on Windows machines,

-

-58

-00:03:00,420 --> 00:03:03,820

-and Microsoft pushed a critical patch that required a reboot to

-

-59

-00:03:03,820 --> 00:03:06,860

-be installed. So a large number of machines, and therefore a

-

-60

-00:03:06,860 --> 00:03:10,150

-large number of super nodes were down roughly at the same

-

-61

-00:03:10,150 --> 00:03:13,980

-time throughout the globe. And Skype's algorithm for determining super nodes

-

-62

-00:03:13,980 --> 00:03:17,230

-didn't have enough nodes to work with. So the whole system

-

-63

-00:03:17,230 --> 00:03:19,790

-crashed and burned. So the message I want to give here,

-

-64

-00:03:19,790 --> 00:03:22,340

-is that when you have a large peer to peer distributed

-

-65

-00:03:22,340 --> 00:03:24,650

-system, such as this one, such as Skype,

-

-66

-00:03:24,650 --> 00:03:27,200

-these kind of perfect storms can happen. Because you

-

-67

-00:03:27,200 --> 00:03:29,560

-are not really in control. Because the control

-

-68

-00:03:29,560 --> 00:03:33,170

-is distributed. So the algorithms become more complex. So

-

-69

-00:03:33,170 --> 00:03:35,140

-to wrap up our Skype example, in case

-

-70

-00:03:35,140 --> 00:03:37,280

-you are interested, Skype then fixed the issue by

-

-71

-00:03:37,280 --> 00:03:39,950

-changing the algorithm for identifying super nodes. And

-

-72

-00:03:39,950 --> 00:03:44,084

-more recently actually, Skype ditched peer-to-peer super nodes altogether.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/27 - Takeaway Message - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/27 - Takeaway Message - lang_en_vs5.srt
deleted file mode 100644
index 9cd15c3..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/27 - Takeaway Message - lang_en_vs5.srt
+++ /dev/null
@@ -1,131 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,620

-And I want to conclude this lesson with three takeaway

-

-2

-00:00:02,620 --> 00:00:06,190

-messages. The first one is that having an effective architecture is

-

-3

-00:00:06,190 --> 00:00:09,450

-fundamental in a software project. Or as I say here,

-

-4

-00:00:09,450 --> 00:00:13,050

-a great architecture is a ticket to a successful project. To

-

-5

-00:00:13,050 --> 00:00:15,290

-put it in a different way, although a great architecture

-

-6

-00:00:15,290 --> 00:00:17,940

-does not guarantee that your project will be successful, having a

-

-7

-00:00:17,940 --> 00:00:21,930

-poor architecture will make it much more difficult for your project

-

-8

-00:00:21,930 --> 00:00:25,280

-to be successful. The second message is that an architecture cannot

-

-9

-00:00:25,280 --> 00:00:28,120

-come about in a vacuum. You need to understand

-

-10

-00:00:28,120 --> 00:00:30,550

-the domain of the problem that you're trying to solve

-

-11

-00:00:30,550 --> 00:00:33,480

-in order to define an architectural solution that fits the

-

-12

-00:00:33,480 --> 00:00:37,220

-characteristics of the problem. So a great architecture reflects a

-

-13

-00:00:37,220 --> 00:00:40,500

-deep understanding of the problem domain. And finally, a great

-

-14

-00:00:40,500 --> 00:00:44,630

-architecture is likely to combine aspects of several simpler architectures.

-

-15

-00:00:44,630 --> 00:00:47,880

-It is typical for engineers to see problems that are

-

-16

-00:00:47,880 --> 00:00:50,590

-new, but such that parts of the problems have already

-

-17

-00:00:50,590 --> 00:00:53,540

-been solved by someone else. An effective engineer should

-

-18

-00:00:53,540 --> 00:00:56,270

-therefore, first of all, know what is out there,

-

-19

-00:00:56,270 --> 00:00:59,760

-know the solution space. Second, an engineer should understand

-

-20

-00:00:59,760 --> 00:01:02,420

-what has worked well and what has failed miserably in

-

-21

-00:01:02,420 --> 00:01:05,870

-similar occasions in the past. And finally, an effective

-

-22

-00:01:05,870 --> 00:01:10,100

-engineer should be able to suitably combine existing solutions appropriately

-

-23

-00:01:10,100 --> 00:01:12,870

-to come up with an effective overall solution for

-

-24

-00:01:12,870 --> 00:01:15,750

-the specific problem at hand. And this is just as

-

-25

-00:01:15,750 --> 00:01:18,960

-true in the context of software architectures. When defining a software

-

-26

-00:01:18,960 --> 00:01:22,330

-architecture, you should innovate only as much as you need to and

-

-27

-00:01:22,330 --> 00:01:24,850

-reuse as much as you can. As we said early in the

-

-28

-00:01:24,850 --> 00:01:27,770

-lesson, by doing so, that is, by innovating only as much as

-

-29

-00:01:27,770 --> 00:01:30,100

-you need to and reusing as much as you can, you will

-

-30

-00:01:30,100 --> 00:01:32,960

-be able to avoid reinventing the wheel. You will be able to

-

-31

-00:01:32,960 --> 00:01:37,320

-choose the right solution to known problems. And identify suitable solutions for

-

-32

-00:01:37,320 --> 00:01:40,925

-new problems. So ultimately, you will be able to realize an effective

-

-33

-00:01:40,925 --> 00:01:44,080

-software architecture that will help the success of your project.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/3 - What is Software Architecture? - lang_en_vs6.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/3 - What is Software Architecture? - lang_en_vs6.srt
deleted file mode 100644
index 8689e43..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/3 - What is Software Architecture? - lang_en_vs6.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,460

-After this interesting conversation with Neno, let me start

-

-2

-00:00:02,460 --> 00:00:06,060

-the lesson by defining what a software architecture is.

-

-3

-00:00:06,060 --> 00:00:07,600

-And to do that, I'm going to use two

-

-4

-00:00:07,600 --> 00:00:11,030

-seminal definitions. The first one is from Dewayne Perry

-

-5

-00:00:11,030 --> 00:00:13,990

-and Alex Wolf. And they define a software architecture

-

-6

-00:00:13,990 --> 00:00:17,940

-as elements, form and rationale. In this definition, the

-

-7

-00:00:17,940 --> 00:00:21,300

-elements are the what, which means the processes, data,

-

-8

-00:00:21,300 --> 00:00:25,430

-and connectors that compose a software architecture. The form

-

-9

-00:00:25,430 --> 00:00:27,780

-is the how, the set of properties of

-

-10

-00:00:27,780 --> 00:00:32,030

-in relationships among these elements. And, finally, the rationale

-

-11

-00:00:32,030 --> 00:00:35,390

-is the why, the justification for the elements and

-

-12

-00:00:35,390 --> 00:00:38,440

-their relationships. The second definition I want to use

-

-13

-00:00:38,440 --> 00:00:40,710

-is from Mary Shaw and David Garland. And

-

-14

-00:00:40,710 --> 00:00:43,480

-they defined a software architecture as a level of

-

-15

-00:00:43,480 --> 00:00:47,300

-design that involves four main things, a description of

-

-16

-00:00:47,300 --> 00:00:50,860

-elements from which these systems are built, the interactions

-

-17

-00:00:50,860 --> 00:00:54,800

-among those elements, the patterns that guide their composition, and

-

-18

-00:00:54,800 --> 00:00:58,320

-finally, the constraints on these patterns. As you can see, these

-

-19

-00:00:58,320 --> 00:01:01,420

-definitions are fairly similar and there are many more alternative

-

-20

-00:01:01,420 --> 00:01:04,870

-definitions of software architecture. In fact, if we try to search

-

-21

-00:01:04,870 --> 00:01:08,540

-the term software architecture, we get over two million entries.

-

-22

-00:01:08,540 --> 00:01:10,670

-And if we look at the images in the results of

-

-23

-00:01:10,670 --> 00:01:13,110

-the search this is what we get. And I like this

-

-24

-00:01:13,110 --> 00:01:16,120

-sort of graphical depiction because it gives you a clear idea

-

-25

-00:01:16,120 --> 00:01:19,300

-the software architecture are prevalent concept, given the number of

-

-26

-00:01:19,300 --> 00:01:22,600

-results. But they also show you clearly, that software architecture are

-

-27

-00:01:22,600 --> 00:01:25,550

-complex entities, if you look at some of these pictures.

-

-28

-00:01:25,550 --> 00:01:28,930

-And ultimately, they show that software architecture are presented in all

-

-29

-00:01:28,930 --> 00:01:31,700

-kinds of ways including in 3D, if you look at this

-

-30

-00:01:31,700 --> 00:01:34,970

-picture. We cannot clearly cover all of these definitions in one

-

-31

-00:01:34,970 --> 00:01:37,340

-lesson. So what I will do instead, is to introduce

-

-32

-00:01:37,340 --> 00:01:40,750

-a very general definition that encompasses most of the existing ones.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/4 - General Definition of SWA - lang_en_vs6.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/4 - General Definition of SWA - lang_en_vs6.srt
deleted file mode 100644
index 13042a7..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/4 - General Definition of SWA - lang_en_vs6.srt
+++ /dev/null
@@ -1,131 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,240

-I'm going to define a software systems architecture as

-

-2

-00:00:03,240 --> 00:00:07,660

-the set of principal design decisions about the system. Where

-

-3

-00:00:07,660 --> 00:00:10,950

-principal here, implies a degree of importance, that grants

-

-4

-00:00:10,950 --> 00:00:14,810

-a design decision architectural status. And the point here, as

-

-5

-00:00:14,810 --> 00:00:17,060

-we discussed with Neno early on, is that when

-

-6

-00:00:17,060 --> 00:00:20,210

-building a system, we make tons of design decisions, and

-

-7

-00:00:20,210 --> 00:00:22,470

-most of them do not affect the architecture of

-

-8

-00:00:22,470 --> 00:00:25,270

-the system. For example, the effect of choosing a for

-

-9

-00:00:25,270 --> 00:00:27,640

-loop, instead of a while loop, in the code, or the

-

-10

-00:00:27,640 --> 00:00:30,140

-fact of deciding that we are going to use data structure A

-

-11

-00:00:30,140 --> 00:00:33,620

-instead of data structure B. Some decisions however, do affect the

-

-12

-00:00:33,620 --> 00:00:37,470

-architecture of the system. And in some cases the distinction between these

-

-13

-00:00:37,470 --> 00:00:40,600

-two kinds of design decisions is clear. In some other cases

-

-14

-00:00:40,600 --> 00:00:43,340

-it is much fuzzier and it depends on the context. The

-

-15

-00:00:43,340 --> 00:00:46,000

-bottom line here, is that if you believe that something is

-

-16

-00:00:46,000 --> 00:00:50,380

-an important design decision, that becomes an architectural decision. That is a

-

-17

-00:00:50,380 --> 00:00:53,960

-decision that impacts a system's architecture. In this spirit,

-

-18

-00:00:53,960 --> 00:00:56,650

-we can see a software architecture as the blueprint

-

-19

-00:00:56,650 --> 00:00:58,390

-for a software system, that we can use to

-

-20

-00:00:58,390 --> 00:01:01,320

-construct and evolve the system. And the key point

-

-21

-00:01:01,320 --> 00:01:05,300

-about software architecture is that this blueprint encompasses every

-

-22

-00:01:05,300 --> 00:01:08,600

-facet of the system under development. It encompasses its

-

-23

-00:01:08,600 --> 00:01:11,540

-structure, of course, but not only. It also involves

-

-24

-00:01:11,540 --> 00:01:15,420

-the behavior of the system, the interactions within the system,

-

-25

-00:01:15,420 --> 00:01:18,880

-and the non-functional properties of the system. And we will see

-

-26

-00:01:18,880 --> 00:01:21,960

-how this happens in the rest of the lesson. Another important

-

-27

-00:01:21,960 --> 00:01:25,590

-point about software architecture is that there is a temporal aspect

-

-28

-00:01:25,590 --> 00:01:27,570

-to it. And the point here is that you don't build the

-

-29

-00:01:27,570 --> 00:01:30,660

-software architecture in a single shot, but you do it iteratively,

-

-30

-00:01:30,660 --> 00:01:34,100

-over time. So, basically, you go from having no architecture to

-

-31

-00:01:34,100 --> 00:01:37,330

-your final architecture. So, at any point in time, there is

-

-32

-00:01:37,330 --> 00:01:40,550

-a software architecture, but it will change over time. And this happens

-

-33

-00:01:40,550 --> 00:01:44,780

-because design decisions are made, unmade and changed over a system's lifetime.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/5 - Prescriptive vs Descriptive Architecture - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/5 - Prescriptive vs Descriptive Architecture - lang_en_vs5.srt
deleted file mode 100644
index 11ecd46..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/5 - Prescriptive vs Descriptive Architecture - lang_en_vs5.srt
+++ /dev/null
@@ -1,51 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,200

-We can look at the software architecture from two

-

-2

-00:00:02,200 --> 00:00:07,120

-main standpoints. There are prescriptive and descriptive software architectures.

-

-3

-00:00:07,120 --> 00:00:09,900

-So what does that mean? A prescriptive architecture captures

-

-4

-00:00:09,900 --> 00:00:12,620

-the design decisions that are made prior to the

-

-5

-00:00:12,620 --> 00:00:15,398

-system's construction. This is what we normally call the

-

-6

-00:00:15,398 --> 00:00:18,280

-as-conceived software architecture. Conversely,

-

-7

-00:00:18,280 --> 00:00:20,550

-a descriptive architecture describes how

-

-8

-00:00:20,550 --> 00:00:23,010

-the system has actually been built. So it's based

-

-9

-00:00:23,010 --> 00:00:25,860

-on observing the system as it is and extracting

-

-10

-00:00:25,860 --> 00:00:28,200

-the architecture from the observation. This is what we call

-

-11

-00:00:28,200 --> 00:00:31,890

-the as-implemented software architecture. And one key point here is

-

-12

-00:00:31,890 --> 00:00:35,780

-that often, these two architectures, the prescriptive and the descriptive

-

-13

-00:00:35,780 --> 00:00:39,290

-architectures end up being different. So let's see why that happens.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/6 - Architectural Evolution - lang_en_vs5.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/6 - Architectural Evolution - lang_en_vs5.srt
deleted file mode 100644
index edcf77e..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/6 - Architectural Evolution - lang_en_vs5.srt
+++ /dev/null
@@ -1,115 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,810

-To do that let's look at how architectural evolution

-

-2

-00:00:02,810 --> 00:00:06,880

-occurs in practice. Ideally when a system evolves, its prescriptive

-

-3

-00:00:06,880 --> 00:00:09,340

-architecture should be modified first. Just like when you

-

-4

-00:00:09,340 --> 00:00:12,170

-modify a building. You change the blueprint and then you

-

-5

-00:00:12,170 --> 00:00:13,940

-change the actual building. You don't go the other

-

-6

-00:00:13,940 --> 00:00:17,820

-way around. In software, unfortunately this rarely ever happens in

-

-7

-00:00:17,820 --> 00:00:21,706

-practice. In practice the system, and therefore it's descriptive

-

-8

-00:00:21,706 --> 00:00:25,150

-architecture are often directly modified. Like in this case that

-

-9

-00:00:25,150 --> 00:00:27,870

-I'm showing here. So what happens is that the architecture

-

-10

-00:00:27,870 --> 00:00:32,259

-as conceived does not change. Whereas the architecture as implemented, does

-

-11

-00:00:32,259 --> 00:00:35,600

-change. And therefore these two things start diverging. And this really

-

-12

-00:00:35,600 --> 00:00:38,720

-happens for a number of reasons. So I'm just going to list

-

-13

-00:00:38,720 --> 00:00:41,740

-a few of those reasons here. In some cases it

-

-14

-00:00:41,740 --> 00:00:45,620

-just happens for plain sloppiness. I need to make this modification

-

-15

-00:00:45,620 --> 00:00:47,290

-and I don't really want to go back and look at

-

-16

-00:00:47,290 --> 00:00:50,610

-the prescriptive architecture modified. I'm just going to make the change, and

-

-17

-00:00:50,610 --> 00:00:53,800

-maybe I'll fix the description later. And then you never really get

-

-18

-00:00:53,800 --> 00:00:56,950

-to it. In other cases you do this because of the perception

-

-19

-00:00:56,950 --> 00:01:00,290

-of short deadlines. If you have to do something by this afternoon,

-

-20

-00:01:00,290 --> 00:01:01,300

-you're not going through a four

-

-21

-00:01:01,300 --> 00:01:03,410

-month software architecture review, you normally just

-

-22

-00:01:03,410 --> 00:01:06,460

-get to it, and do it. In some cases a prescriptive architecture

-

-23

-00:01:06,460 --> 00:01:09,510

-is not even present, so there's a lack of documentation. So in these

-

-24

-00:01:09,510 --> 00:01:12,450

-cases, clearly, you cannot go and modify something that does not even

-

-25

-00:01:12,450 --> 00:01:15,880

-exist, and so you jump directly to the code and start modifying that.

-

-26

-00:01:15,880 --> 00:01:18,280

-And as I said there's many, many more

-

-27

-00:01:18,280 --> 00:01:21,080

-other reasons why that happen. But important point here is

-

-28

-00:01:21,080 --> 00:01:23,770

-that it does happen and it does happen often

-

-29

-00:01:23,770 --> 00:01:27,250

-and the result is that prescriptive and descriptive architectures diverge.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/7 - Architectural Degradation - lang_en_vs6.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/7 - Architectural Degradation - lang_en_vs6.srt
deleted file mode 100644
index 2313f82..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/7 - Architectural Degradation - lang_en_vs6.srt
+++ /dev/null
@@ -1,131 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,790

-And there are two important and related concepts that

-

-2

-00:00:02,790 --> 00:00:04,790

-have to do with the way software architecture

-

-3

-00:00:04,790 --> 00:00:08,109

-evolves. The first one is Architectural Drift, which is

-

-4

-00:00:08,109 --> 00:00:12,140

-the introduction of architectural design decisions that are orthogonal to

-

-5

-00:00:12,140 --> 00:00:15,870

-a system's prescriptive architecture. That is, they're not included

-

-6

-00:00:15,870 --> 00:00:20,080

-in, encompassed by, or implied by the prescriptive architecture.

-

-7

-00:00:20,080 --> 00:00:22,300

-And the result of Architectural Drift is that you

-

-8

-00:00:22,300 --> 00:00:25,220

-start from a clean architecture, like the one that I'm

-

-9

-00:00:25,220 --> 00:00:28,830

-showing here, and then you start adding pieces without following a clear plan.

-

-10

-00:00:28,830 --> 00:00:32,229

-Like, for example, here, we add an additional room here, but we don't really

-

-11

-00:00:32,229 --> 00:00:34,380

-do it in the right way so we need to add something else

-

-12

-00:00:34,380 --> 00:00:37,090

-to keep it stable. And then maybe we want some more room so we

-

-13

-00:00:37,090 --> 00:00:40,310

-add a tent. And then another side of the house, it doesn't really

-

-14

-00:00:40,310 --> 00:00:43,540

-follow the same architecture but it doesn't matter, we just put it there because

-

-15

-00:00:43,540 --> 00:00:46,690

-we want to expand. And maybe then we want to put something classic

-

-16

-00:00:46,690 --> 00:00:48,210

-there, even though it doesn't really fit

-

-17

-00:00:48,210 --> 00:00:50,520

-the overall design and the overall architecture.

-

-18

-00:00:50,520 --> 00:00:52,160

-So I think you get my point, the fact

-

-19

-00:00:52,160 --> 00:00:56,210

-that the architecture then becomes unnecessarily complex, hard to understand

-

-20

-00:00:56,210 --> 00:00:58,410

-and ultimately awkward, just like the one that I'm

-

-21

-00:00:58,410 --> 00:01:00,880

-showing here, that goes from the original building into this

-

-22

-00:01:00,880 --> 00:01:04,870

-final monstrosity. The second concept is Architectural Erosion, which

-

-23

-00:01:04,870 --> 00:01:08,560

-is the introduction of architectural design decisions that violate a

-

-24

-00:01:08,560 --> 00:01:12,070

-system prescriptive architecture. So in this case, that we were

-

-25

-00:01:12,070 --> 00:01:14,070

-introducing decisions that were orthogonal,

-

-26

-00:01:14,070 --> 00:01:15,580

-here, were introducing this decisions

-

-27

-00:01:15,580 --> 00:01:17,410

-that don't comply with the prescriptive

-

-28

-00:01:17,410 --> 00:01:20,140

-architecture. And the result of Architectural Erosion

-

-29

-00:01:20,140 --> 00:01:22,590

-is typically a poor architecture an

-

-30

-00:01:22,590 --> 00:01:24,550

-architecture that is going to have problems in

-

-31

-00:01:24,550 --> 00:01:27,040

-the future. So both Architectural Drift

-

-32

-00:01:27,040 --> 00:01:29,640

-and Architectural Erosion take you away in

-

-33

-00:01:29,640 --> 00:01:32,940

-different ways from what you think your software architecture is or should be.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/8 - Architectural Recovery - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/8 - Architectural Recovery - lang_en_vs4.srt
deleted file mode 100644
index 6104ae0..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/8 - Architectural Recovery - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,180 --> 00:00:03,560

-And sometimes, architectural drift and erosion gets you so

-

-2

-00:00:03,560 --> 00:00:06,450

-far away from the point where your software architecture should

-

-3

-00:00:06,450 --> 00:00:10,476

-be, that your architecture is completely degraded. And at this

-

-4

-00:00:10,476 --> 00:00:13,290

-point, you have two main options. The first option is

-

-5

-00:00:13,290 --> 00:00:17,140

-to keep frantically tweaking the code. And this normally leads

-

-6

-00:00:17,140 --> 00:00:20,370

-to disaster. Why? Because you only make things worse. You

-

-7

-00:00:20,370 --> 00:00:22,570

-don't know exactly what you are changing and therefore, you're

-

-8

-00:00:22,570 --> 00:00:25,570

-basically stabbing in the dark, trying to fix your system.

-

-9

-00:00:25,570 --> 00:00:27,580

-The other possiblity is that you can try to

-

-10

-00:00:27,580 --> 00:00:29,830

-determine the software system architecture

-

-11

-00:00:29,830 --> 00:00:31,710

-from its implementation level artifacts,

-

-12

-00:00:31,710 --> 00:00:34,520

-so you try to derive what the architecture is

-

-13

-00:00:34,520 --> 00:00:36,610

-and try to fix it, once you have derived the

-

-14

-00:00:36,610 --> 00:00:39,266

-architecture. And this is what is normally called, architectural

-

-15

-00:00:39,266 --> 00:00:44,210

-recovery, determining a software architecture from an implementation and fixing

-

-16

-00:00:44,210 --> 00:00:46,410

-it. And as you can imagine, this is normally

-

-17

-00:00:46,410 --> 00:00:49,330

-a more recommended way to go than the first solution.

diff --git a/usth/ICT2.7/P3L1 Software Architecture Subtitles/9 - Architectural Recovery Quiz - lang_en_vs4.srt b/usth/ICT2.7/P3L1 Software Architecture Subtitles/9 - Architectural Recovery Quiz - lang_en_vs4.srt
deleted file mode 100644
index 0750374..0000000
--- a/usth/ICT2.7/P3L1 Software Architecture Subtitles/9 - Architectural Recovery Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,120 --> 00:00:03,070

-Now that we discussed some important concepts about

-

-2

-00:00:03,070 --> 00:00:05,060

-software architectures, I would like for you to

-

-3

-00:00:05,060 --> 00:00:07,290

-tell me which of the following sentences is

-

-4

-00:00:07,290 --> 00:00:11,420

-true. Prescriptive architecture and descriptive architecture are typically the

-

-5

-00:00:11,420 --> 00:00:15,970

-same. Architectural drift results in unnecessarily complex architectures.

-

-6

-00:00:15,970 --> 00:00:20,320

-Architectural erosion is less problematic than architectural drift. And

-

-7

-00:00:20,320 --> 00:00:22,660

-the best way to improve a degraded architecture,

-

-8

-00:00:22,660 --> 00:00:25,250

-is to keep fixing the code until the system

-

-9

-00:00:25,250 --> 00:00:29,270

-starts looking and behaving as expected. Which of these sentences is true?

diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt
deleted file mode 100644
index f6386ed..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/1 - Introduction - lang_en.srt
+++ /dev/null
@@ -1,88 +0,0 @@
-1
-00:00:00,430 --> 00:00:05,994
-Hello and welcome to a tale of analysis and design, featuring
-
-2
-00:00:05,994 --> 00:00:10,809
-Spencer Rugaber, as the librarian, and Alex Orso,
-
-3
-00:00:10,809 --> 00:00:15,779
-as the software engineer. [SOUND]
-
-4
-00:00:15,779 --> 00:00:21,520
->> Hi! I'm here waiting for Spencer, my librarian friend. He needs some
-
-5
-00:00:21,520 --> 00:00:25,470
-help developing an information system for a library. So I asked him to write
-
-6
-00:00:25,470 --> 00:00:29,669
-down the requirements for the libra... Oh, [SOUND] that must be him.
-
-7
-00:00:29,669 --> 00:00:30,850
->> Hello Alex.
-
-8
-00:00:30,850 --> 00:00:32,470
->> Hey Spencer. How's it going?
-
-9
-00:00:32,470 --> 00:00:34,690
->> Good. Did you get those requirements I emailed you?
-
-10
-00:00:34,690 --> 00:00:36,890
->> Oh, you emailed them. Now let me check.
-
-11
-00:00:36,890 --> 00:00:38,780
-And, by the way, get some coffee for you here.
-
-12
-00:00:38,780 --> 00:00:39,880
->> Thank you very much.
-
-13
-00:00:41,840 --> 00:00:46,790
->> Oh yeah. They're right here. Let me see. Oh, good. Oh, yeah,
-
-14
-00:00:46,790 --> 00:00:50,580
-good. We have, what we need. So the, the way I like to do
-
-15
-00:00:50,580 --> 00:00:52,500
-this is. I like to start by
-
-16
-00:00:52,500 --> 00:00:55,430
-looking at the requirements and identifying the nouns
-
-17
-00:00:55,430 --> 00:00:57,530
-in the requirements, because those tell us
-
-18
-00:00:57,530 --> 00:01:00,080
-the kind of the relevant elements in the,
-
-19
-00:01:00,080 --> 00:01:03,360
-in the requirements. So if you don't mind we can start looking at those and
-
-20
-00:01:03,360 --> 00:01:07,070
-you can tell me you know, whether the ones that I am identifying make sense or not.
-
-21
-00:01:07,070 --> 00:01:07,920
->> Sounds good.
-
-22
-00:01:07,920 --> 00:01:08,500
->> All right.
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt
deleted file mode 100644
index cc76d09..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/10 - Debriefing - lang_en.srt
+++ /dev/null
@@ -1,104 +0,0 @@
-1
-00:00:00,210 --> 00:00:02,200
->> So Spencer, now that we went through
-
-2
-00:00:02,200 --> 00:00:05,340
-this process and, I'd just like to hear
-
-3
-00:00:05,340 --> 00:00:07,090
-whether you enjoyed it, whether you think it
-
-4
-00:00:07,090 --> 00:00:09,640
-was useful. What are your thoughts?
-
-5
-00:00:09,640 --> 00:00:11,661
->> Well, ti was very interesting. I not only
-
-6
-00:00:11,661 --> 00:00:16,541
-learned something about computers and about how you design information systems
-
-7
-00:00:16,541 --> 00:00:19,713
-in UML, but I, it was interesting. I also learned something
-
-8
-00:00:19,713 --> 00:00:25,290
-interesting about the library. And things that, that I knew but
-
-9
-00:00:25,290 --> 00:00:27,920
-I never really, explicitly written down.
-
-10
-00:00:27,920 --> 00:00:28,099
->> Uh-huh.
-
-11
-00:00:28,099 --> 00:00:32,280
->> Came up during the course of doing this. And I think I now
-
-12
-00:00:32,280 --> 00:00:35,800
-much better understand what this information system that you're
-
-13
-00:00:35,800 --> 00:00:38,590
-going to build for us, is really all about.
-
-14
-00:00:38,590 --> 00:00:40,480
->> Okay, well, I mean, I'm very happy that you say
-
-15
-00:00:40,480 --> 00:00:43,040
-that, because I really believe that, you know, doing this kind
-
-16
-00:00:43,040 --> 00:00:46,870
-of analysis and design exercises really helps you figuring out whether
-
-17
-00:00:46,870 --> 00:00:50,480
-there's any issues with the requirements. So for example, you can find
-
-18
-00:00:50,480 --> 00:00:53,580
-out whether there's any missing information, or maybe conflicting
-
-19
-00:00:53,580 --> 00:00:56,820
-information. And I think that's exactly what happened today.
-
-20
-00:00:56,820 --> 00:01:01,120
-So I'm very glad to hear that it worked for you. That you enjoyed it. I hope you
-
-21
-00:01:01,120 --> 00:01:03,690
-enjoyed it as well. And I strongly encourage you
-
-22
-00:01:03,690 --> 00:01:06,000
-to do this kind of exercises for different kinds
-
-23
-00:01:06,000 --> 00:01:08,630
-of systems. So as you can become more familiar
-
-24
-00:01:08,630 --> 00:01:12,410
-with analysis and design techniques. So, any final thoughts?
-
-25
-00:01:12,410 --> 00:01:15,440
->> I look forward to receiving your delivered software.
-
-26
-00:01:15,440 --> 00:01:16,440
->> All right. Will do.
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt
deleted file mode 100644
index 909fb2d..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/2 - Analyzing Requirements - lang_en.srt
+++ /dev/null
@@ -1,579 +0,0 @@
-1
-00:00:00,220 --> 00:00:04,900
-Okay so let me start underlining these nouns, and I'll start
-
-2
-00:00:04,900 --> 00:00:07,810
-identifying the ones that are relevant, and I'll ask you some
-
-3
-00:00:07,810 --> 00:00:10,550
-questions or you can ask me questions if
-
-4
-00:00:10,550 --> 00:00:14,666
-you see something that doesn't make sense to you. Good enough.
-
-5
-00:00:14,666 --> 00:00:17,650
->> okay, let's see, patron. It seems to
-
-6
-00:00:17,650 --> 00:00:19,670
-me that patron is definitely an important entity.
-
-7
-00:00:19,670 --> 00:00:20,808
->> That's, that's what its all about.
-
-8
-00:00:20,808 --> 00:00:23,270
->> Okay, all right, so actually, the way
-
-9
-00:00:23,270 --> 00:00:25,750
-I'm going to do this, I'm going to take all these relevant
-
-10
-00:00:25,750 --> 00:00:28,610
-entities and I'm going to start putting them into what I call a class
-
-11
-00:00:28,610 --> 00:00:32,450
-diagram. So you don't really need to know what that is exactly, but imagine
-
-12
-00:00:32,450 --> 00:00:37,150
-this being a, a diagram in which I'm drawing, I represent in all development
-
-13
-00:00:37,150 --> 00:00:42,260
-items as rectangles with a given name and, and then later on some attributes.
-
-14
-00:00:42,260 --> 00:00:42,660
->> Okay.
-
-15
-00:00:42,660 --> 00:00:44,055
->> Okay, and I'm, I'm just going to put
-
-16
-00:00:44,055 --> 00:00:45,600
-them there. So I'm going to start with patron.
-
-17
-00:00:45,600 --> 00:00:48,420
-I'm going to create one class for the
-
-18
-00:00:48,420 --> 00:00:50,250
-patron. I'm going to give it the name patron.
-
-19
-00:00:51,380 --> 00:00:54,120
-And by the way, assuming that you'd probably figure out, it's important that we
-
-20
-00:00:54,120 --> 00:00:57,430
-represent, we use the right names so that it's clear when we're looking at
-
-21
-00:00:57,430 --> 00:01:00,790
-the class diagram what we're referring to, so I'll just use the, the nouns
-
-22
-00:01:00,790 --> 00:01:06,520
-themselves as names. Okay, library card seems to be also a relevant element.
-
-23
-00:01:06,520 --> 00:01:08,072
->> Every patron has a library card.
-
-24
-00:01:08,072 --> 00:01:09,530
->> All right, perfect, so we'll just
-
-25
-00:01:09,530 --> 00:01:12,880
-create a library card here. And let's see.
-
-26
-00:01:12,880 --> 00:01:16,530
-As, as long as they're in the system. And I saw that there's a system
-
-27
-00:01:16,530 --> 00:01:19,000
-here, this concept of system, this concept
-
-28
-00:01:19,000 --> 00:01:22,076
-of library. And based on my experience, normally,
-
-29
-00:01:22,076 --> 00:01:26,574
-those are kind of in an overarching themes. So this is really what we are
-
-30
-00:01:26,574 --> 00:01:28,597
-modeling. So the only
-
-31
-00:01:28,597 --> 00:01:30,297
-thing that will make a difference is
-
-32
-00:01:30,297 --> 00:01:34,120
-if there were more than one library or more than one system. Is that the case?
-
-33
-00:01:34,120 --> 00:01:36,740
->> We just want one system for our one library
-
-34
-00:01:36,740 --> 00:01:38,770
->> Okay so, in this case I won't even represent
-
-35
-00:01:38,770 --> 00:01:41,540
-those because basically what I'm representing is the system and
-
-36
-00:01:41,540 --> 00:01:41,990
-the library.
-
-37
-00:01:41,990 --> 00:01:42,740
->> I understand, I understand.
-
-38
-00:01:42,740 --> 00:01:44,420
-
-39
-00:01:44,420 --> 00:01:48,350
-Okay and then, oh name, address and phone
-
-40
-00:01:48,350 --> 00:01:51,510
-number are interesting because these are important entities,
-
-41
-00:01:51,510 --> 00:01:53,180
-but this seems like, you know, they're not
-
-42
-00:01:53,180 --> 00:01:56,550
-entities in themselves, so they're more attributes
-
-43
-00:01:56,550 --> 00:01:58,070
-of something else. I would imagine that
-
-44
-00:01:58,070 --> 00:02:00,080
-this is the way you identify, or these
-
-45
-00:02:00,080 --> 00:02:01,860
-are elements that are important for the patron?
-
-46
-00:02:01,860 --> 00:02:04,880
->> That's what we take down when we issue the cards.
-
-47
-00:02:04,880 --> 00:02:06,800
->> Okay. Perfect. So, I'm going to
-
-48
-00:02:06,800 --> 00:02:09,710
-take those and make those attributes of the patron, which means
-
-49
-00:02:09,710 --> 00:02:12,350
-that I'm going to take the class that I created before, and I'm
-
-50
-00:02:12,350 --> 00:02:16,430
-just going to write them down here so that they're represented and,
-
-51
-00:02:16,430 --> 00:02:19,360
-and we know that these are kind of what characterizes the patron.
-
-52
-00:02:19,360 --> 00:02:20,070
->> Gotcha.
-
-53
-00:02:20,070 --> 00:02:25,540
->> Okay? And then, I guess similar consideration for the library
-
-54
-00:02:25,540 --> 00:02:28,750
-card number. So this is to be associated with the library card?
-
-55
-00:02:28,750 --> 00:02:29,902
->> It's printed right on it.
-
-56
-00:02:29,902 --> 00:02:32,180
->> All right, so we'll put this as
-
-57
-00:02:32,180 --> 00:02:38,130
-an attribute of the library card, then. And then, in addition, at any particular point
-
-58
-00:02:38,130 --> 00:02:43,630
-in time. Okay, so time seems to be a relevant entity right,
-
-59
-00:02:43,630 --> 00:02:47,880
-because time seems to occur several times in this description. For example, I
-
-60
-00:02:47,880 --> 00:02:53,940
-think you guys keep track of how long a book has been loaned, right?
-
-61
-00:02:53,940 --> 00:02:54,300
->> Right.
-
-62
-00:02:54,300 --> 00:02:57,270
->> And there's some time associated also here.
-
-63
-00:02:57,270 --> 00:02:58,380
->> And a children's age.
-
-64
-00:02:58,380 --> 00:02:59,760
->> Oh yeah. The children's age here that
-
-65
-00:02:59,760 --> 00:03:02,200
-I didn't see before. Yeah. So, what
-
-66
-00:03:02,200 --> 00:03:03,800
-I'm going to do, I'm going to represent this in
-
-67
-00:03:03,800 --> 00:03:05,520
-a sort of generic way, as a date.
-
-68
-00:03:05,520 --> 00:03:06,520
->> Okay.
-
-69
-00:03:06,520 --> 00:03:08,380
->> These are kind of, kind of classes, utility
-
-70
-00:03:08,380 --> 00:03:10,880
-classes we call them, that are normally in every system.
-
-71
-00:03:10,880 --> 00:03:10,970
->> Okay.
-
-72
-00:03:10,970 --> 00:03:13,060
->> So I'm just going to put it down here
-
-73
-00:03:13,060 --> 00:03:14,940
-as a utility class that will be used
-
-74
-00:03:14,940 --> 00:03:18,780
-by different elements in the diagram. Okay, so
-
-75
-00:03:18,780 --> 00:03:23,070
-I want to calculate the items. So the items also
-
-76
-00:03:23,070 --> 00:03:25,230
-I mean I for what I know about libraries they
-
-77
-00:03:25,230 --> 00:03:28,490
-seem to be pretty relevant elements, right? So these are all
-
-78
-00:03:28,490 --> 00:03:31,305
->> This is what we check out, this is what we're for.
-
-79
-00:03:31,305 --> 00:03:34,459
->> Okay, so then items definitely will become a
-
-80
-00:03:34,459 --> 00:03:37,349
-class, and then we have a due. Oh there's also
-
-81
-00:03:37,349 --> 00:03:39,730
-this concept of fines. I guess that seems to be
-
-82
-00:03:39,730 --> 00:03:42,330
-important. Right? You guys give fines to people who are late.
-
-83
-00:03:42,330 --> 00:03:42,700
->> Right, right.
-
-84
-00:03:42,700 --> 00:03:49,160
->> Right, collect fines and so on. So we create a fine class down here and
-
-85
-00:03:49,160 --> 00:03:54,150
-the children. So children are special customers, right? It's
-
-86
-00:03:55,240 --> 00:03:56,890
-their age makes a difference? Is that the way it works?
-
-87
-00:03:56,890 --> 00:03:58,950
->> Right. They, they can only check out a few books.
-
-88
-00:03:58,950 --> 00:04:01,410
->> Okay. So I'll create them a special
-
-89
-00:04:01,410 --> 00:04:03,170
-kind of case, a special kind of customer so
-
-90
-00:04:03,170 --> 00:04:06,000
-I just create here a class for children. And
-
-91
-00:04:06,000 --> 00:04:08,682
-I can see that they're categorized by their age.
-
-92
-00:04:08,682 --> 00:04:09,340
->> Right.
-
-93
-00:04:09,340 --> 00:04:13,160
->> So I'll just put the age here as an attribute of the child.
-
-94
-00:04:14,220 --> 00:04:15,712
-And, okay, so the next one is
-
-95
-00:04:15,712 --> 00:04:19,653
-restriction. And restriction is kind of tricky because just
-
-96
-00:04:19,653 --> 00:04:22,010
-to be sort of a general concept. I mean,
-
-97
-00:04:22,010 --> 00:04:24,915
-in a sense, all of those are restrictions, right?
-
-98
-00:04:24,915 --> 00:04:28,250
->> Right, this is just another one of these requirements.
-
-99
-00:04:28,250 --> 00:04:31,180
->> Oh, okay, so, so we don't need to represent it explicitly, right?
-
-100
-00:04:31,180 --> 00:04:31,430
->> Right, right.
-
-101
-00:04:31,430 --> 00:04:34,390
->> It's just telling us how the children, yeah, okay, right; this is
-
-102
-00:04:34,390 --> 00:04:39,151
-just another requirement, so I just won't consider that for now. And oh,
-
-103
-00:04:39,151 --> 00:04:43,444
-I see that these books and audio video materials, I guess these
-
-104
-00:04:43,444 --> 00:04:48,902
-are things that the patrons can check out, right?
-
-105
-00:04:48,902 --> 00:04:50,725
->> Those are some of the items, right.
-
-106
-00:04:50,725 --> 00:04:53,770
->> There are two
-
-107
-00:04:53,770 --> 00:04:56,380
-more down here, right? Reference books and magazines?
-
-108
-00:04:56,380 --> 00:04:57,990
->> But, they can't be checked
-
-109
-00:04:57,990 --> 00:04:59,270
-out, but they're definitely in the library.
-
-110
-00:04:59,270 --> 00:05:01,338
->> Okay, so then I'm going to represent all of those
-
-111
-00:05:01,338 --> 00:05:04,180
-actually, now. So, I'm going to have books, I'm going to have audio
-
-112
-00:05:04,180 --> 00:05:07,990
-video materials, reference books, and magazines. And
-
-113
-00:05:07,990 --> 00:05:12,150
-I'm just going to have those as classes. Then,
-
-114
-00:05:12,150 --> 00:05:14,060
-okay here we have week, and we
-
-115
-00:05:14,060 --> 00:05:16,630
-already represented this general concept of time, so
-
-116
-00:05:16,630 --> 00:05:23,270
-week will be represented by the date class as well. And oh, I see best sellers.
-
-117
-00:05:23,270 --> 00:05:27,520
-So best sellers are also, I guess, items that can be checked out, right?
-
-118
-00:05:27,520 --> 00:05:28,150
->> Right.
-
-119
-00:05:28,150 --> 00:05:29,330
->> Okay, so I'll
-
-120
-00:05:29,330 --> 00:05:32,900
-just represent those as a class as well and an additional item that
-
-121
-00:05:32,900 --> 00:05:38,480
-is relevant for the library. And the limit, this is also a time limit, right?
-
-122
-00:05:38,480 --> 00:05:39,150
->> Right.
-
-123
-00:05:39,150 --> 00:05:41,500
->> So it can also be represented with a, with a class.
-
-124
-00:05:43,860 --> 00:05:47,380
-Oh, here we have cents, and for cents, same consideration that made
-
-125
-00:05:47,380 --> 00:05:50,430
-for time. This is kind of the money, is a general concept
-
-126
-00:05:50,430 --> 00:05:54,240
-that in all currency, many, in many IT systems. So, I'm, I'm
-
-127
-00:05:54,240 --> 00:05:57,430
-going to just have a money class here, which is another utility class.
-
-128
-00:05:57,430 --> 00:05:57,740
->> Okay
-
-129
-00:05:57,740 --> 00:06:04,000
->> Okay, and, oh, here I have value, so value is a property.
-
-130
-00:06:04,000 --> 00:06:09,320
-Let me look again at the requirement. Oh, it's the value of the item. So value
-
-131
-00:06:09,320 --> 00:06:11,450
-I'm going to put in the item as an attribute. Okay?
-
-132
-00:06:11,450 --> 00:06:13,120
->> Okay. That's how much it cost us.
-
-133
-00:06:13,120 --> 00:06:14,090
->> Okay. Perfect.
-
-134
-00:06:14,090 --> 00:06:18,400
->> Seems like we got them all. Right? Anything I forgot?
-
-135
-00:06:18,400 --> 00:06:19,640
->> That looks like it.
-
-136
-00:06:19,640 --> 00:06:22,580
->> Okay, so this one, what I'd like to do. We have a kind of
-
-137
-00:06:22,580 --> 00:06:26,890
-a first take, first cut at the class diagram. I'd like to kind of
-
-138
-00:06:26,890 --> 00:06:31,480
-move to that and go through the different classes with you. And I'll ask
-
-139
-00:06:31,480 --> 00:06:33,440
-you some questions again. And you can
-
-140
-00:06:33,440 --> 00:06:34,510
-tell me whether there is something that
-
-141
-00:06:34,510 --> 00:06:36,894
-jumps at you that's not right. And
-
-142
-00:06:36,894 --> 00:06:38,930
-then we're going to try to refine that.
-
-143
-00:06:38,930 --> 00:06:39,180
->> Okay
-
-144
-00:06:39,180 --> 00:06:39,510
->> Okay.
-
-145
-00:06:39,510 --> 00:06:39,800
->> Sounds good.
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt
deleted file mode 100644
index 271c2fd..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/3 - Refining Classes and Attributes - lang_en.srt
+++ /dev/null
@@ -1,535 +0,0 @@
-1
-00:00:00,880 --> 00:00:03,920
-Okay, so this is our first, class diagram.
-
-2
-00:00:03,920 --> 00:00:06,260
->> So, let me ask you something about.
-
-3
-00:00:06,260 --> 00:00:06,520
->> Okay.
-
-4
-00:00:06,520 --> 00:00:08,930
->> What we've done so far. I also sent, in what
-
-5
-00:00:08,930 --> 00:00:14,490
-I sent you, I also had some stories about how the actual
-
-6
-00:00:14,490 --> 00:00:16,400
->> Library is used. You asked me to do
-
-7
-00:00:16,400 --> 00:00:18,950
-that and are we going to take, use that here?
-
-8
-00:00:20,160 --> 00:00:23,300
->> Glad you asked actually. yeah. Those are, you know, what we call use
-
-9
-00:00:23,300 --> 00:00:25,940
-cases, or what we will use as scenarios kind of things that we will
-
-10
-00:00:25,940 --> 00:00:28,340
-use to derive use cases. And they're also a very good
-
-11
-00:00:28,340 --> 00:00:31,450
-way of extracting requirements. We're not going to look at them right
-
-12
-00:00:31,450 --> 00:00:33,890
-now because now, because we're more working on kind of the static
-
-13
-00:00:33,890 --> 00:00:37,860
-structure of the system. But after we're done with the class diagram,
-
-14
-00:00:37,860 --> 00:00:40,700
-you know, we will do it at a different time. But
-
-15
-00:00:40,700 --> 00:00:43,410
-we're going to use those to see how the
-
-16
-00:00:43,410 --> 00:00:45,850
-libraries actually use them, and see whether we can get more
-
-17
-00:00:45,850 --> 00:00:49,000
-information that we can use to refine our requirements based on that.
-
-18
-00:00:49,000 --> 00:00:49,770
->> Okay.
-
-19
-00:00:49,770 --> 00:00:51,020
->> Okay,
-
-20
-00:00:51,020 --> 00:00:52,940
-So, for now, we'll just focus in on the,
-
-21
-00:00:52,940 --> 00:00:54,630
-structure, but, just so you know, I'm,
-
-22
-00:00:54,630 --> 00:00:55,870
-I'm glad you sent them, because they were going
-
-23
-00:00:55,870 --> 00:00:57,380
-very useful as well.
-
-24
-00:00:59,410 --> 00:01:00,840
-Okay. So let's see. Well, first of all, let
-
-25
-00:01:00,840 --> 00:01:03,030
-me, seems like that this is already pretty crowded,
-
-26
-00:01:03,030 --> 00:01:06,770
-right? We have a number of, classes. So let's
-
-27
-00:01:06,770 --> 00:01:10,580
-see if there's, some class that may be superfluous and
-
-28
-00:01:10,580 --> 00:01:13,310
-we can model in a different way. So, for
-
-29
-00:01:13,310 --> 00:01:16,360
-example, you, while, while thinking of this I was thinking,
-
-30
-00:01:16,360 --> 00:01:19,450
-the library card, it doesn't really contain much
-
-31
-00:01:19,450 --> 00:01:22,736
-information, right? So is it basically just the number?
-
-32
-00:01:22,736 --> 00:01:23,948
-
-33
-00:01:23,948 --> 00:01:30,760
-The card has a number on it. We have a separate vendor that does that for us so.
-
-34
-00:01:30,760 --> 00:01:30,810
->> Oh.
-
-35
-00:01:30,810 --> 00:01:33,270
->> We don't need, it doesn't need to be part of this system,
-
-36
-00:01:33,270 --> 00:01:35,450
-we just have to make sure that every patron has a library card.
-
-37
-00:01:35,450 --> 00:01:37,670
->> Okay, so basically for you, in a sense, the library
-
-38
-00:01:37,670 --> 00:01:41,560
-card is just an ID that gets associated with a patron.
-
-39
-00:01:41,560 --> 00:01:42,120
->> That's right.
-
-40
-00:01:42,120 --> 00:01:45,380
->> So I think that the best way to represent this, I mean, unless you
-
-41
-00:01:45,380 --> 00:01:47,000
-need an entity because you are creating it
-
-42
-00:01:47,000 --> 00:01:49,160
-yourself, but it seems like you are not.
-
-43
-00:01:49,160 --> 00:01:52,710
-I would just remove this one and I would like to put this,
-
-44
-00:01:52,710 --> 00:01:56,020
-basically to take the library card number and add it to the pattern.
-
-45
-00:01:56,020 --> 00:01:57,100
->> Okay, makes sense.
-
-46
-00:01:57,100 --> 00:02:03,000
->> Okay, so I'll add it here. And as
-
-47
-00:02:03,000 --> 00:02:06,160
-an additional attribute. Okay, and it will eliminate this class.
-
-48
-00:02:06,160 --> 00:02:06,410
->> Okay.
-
-49
-00:02:06,410 --> 00:02:07,580
->> Okay.
-
-50
-00:02:09,690 --> 00:02:11,700
-Oh, and, wait a second, so I guess
-
-51
-00:02:11,700 --> 00:02:13,940
-also the child needs a library card number, right?
-
-52
-00:02:13,940 --> 00:02:18,320
->> Child needs a library card number, but let me ask you about that. Is,
-
-53
-00:02:18,320 --> 00:02:22,050
-is child a separate class, or is it just another kind of patron?
-
-54
-00:02:22,050 --> 00:02:24,920
->> Oh, I see, I see. Because, yeah, it
-
-55
-00:02:24,920 --> 00:02:28,490
-is sort of a special patron, right? And, so
-
-56
-00:02:28,490 --> 00:02:31,730
-maybe we should, maybe we should represent it as
-
-57
-00:02:31,730 --> 00:02:35,640
-a kind of a refinement of the patron.
-
-58
-00:02:35,640 --> 00:02:38,730
-Hm, but then that made me think. So what is
-
-59
-00:02:38,730 --> 00:02:42,510
-the only thing that characterizes children? Is it just the age?
-
-60
-00:02:42,510 --> 00:02:47,440
->> Well, if they're, that they can't check out more than five books.
-
-61
-00:02:47,440 --> 00:02:48,890
->> Okay. And the, and the only difference is the
-
-62
-00:02:48,890 --> 00:02:52,010
-fact that they are less than, you know, twelve years old.
-
-63
-00:02:52,010 --> 00:02:52,710
->> Twelve or less, right.
-
-64
-00:02:52,710 --> 00:02:56,090
->> Twelve or less. So, I guess, you know, I would probably
-
-65
-00:02:56,090 --> 00:03:01,120
-like to represent this by making the age explicit in the patron rather
-
-66
-00:03:01,120 --> 00:03:04,730
-than to represent it as a class. And I'll tell you why,
-
-67
-00:03:04,730 --> 00:03:08,300
-because one, one of the issues, and you know, that might happen
-
-68
-00:03:08,300 --> 00:03:13,070
-again, is that, basically, there are patrons that are children. And they're
-
-69
-00:03:13,070 --> 00:03:17,130
-no longer children, when they come you know 13 or older right.
-
-70
-00:03:17,130 --> 00:03:18,100
->> Right.
-
-71
-00:03:18,100 --> 00:03:21,990
->> And if we represent them with a separate class in a sense, then we
-
-72
-00:03:21,990 --> 00:03:26,620
-cannot really change the type of an instance of these classes.
-
-73
-00:03:26,620 --> 00:03:28,920
-So we're left to kind of destroy the patron, create
-
-74
-00:03:28,920 --> 00:03:31,190
-a new one, so that means we also have to transfer
-
-75
-00:03:31,190 --> 00:03:33,510
-any history we want to keep history and so on.
-
-76
-00:03:33,510 --> 00:03:35,680
-So I, I think I kind of like better the idea
-
-77
-00:03:35,680 --> 00:03:39,560
-that I represent the age exclusively in
-
-78
-00:03:39,560 --> 00:03:42,700
-the patron, and then I'll behave differently, based on whether the
-
-79
-00:03:42,700 --> 00:03:45,910
-patron is 12 years old, or younger, or 13 or,
-
-80
-00:03:45,910 --> 00:03:49,600
-13 or older. This, do you see any problem with that?
-
-81
-00:03:49,600 --> 00:03:51,210
->> It makes things a little simpler.
-
-82
-00:03:51,210 --> 00:03:51,490
->> Okay,
-
-83
-00:03:51,490 --> 00:03:53,550
-and we actually, it allows us also to eliminate
-
-84
-00:03:53,550 --> 00:03:56,450
-one class here. So I'm going to proceed this way.
-
-85
-00:03:56,450 --> 00:03:59,450
-I'm going to eliminate the children class, and I'm going to
-
-86
-00:03:59,450 --> 00:04:03,600
-put the age in the patron. Okay, and let me
-
-87
-00:04:03,600 --> 00:04:07,020
-see. But in this spirit, actually, something else that jumps
-
-88
-00:04:07,020 --> 00:04:09,740
-at me is this idea of the bestseller, because I
-
-89
-00:04:09,740 --> 00:04:11,850
-kind of feel like, we might have the same
-
-90
-00:04:11,850 --> 00:04:15,085
-problem. So, what is the story? What is a bestseller.
-
-91
-00:04:15,085 --> 00:04:16,850
->> Well it's
-
-92
-00:04:16,850 --> 00:04:20,750
-an item that we want to restrict how
-
-93
-00:04:20,750 --> 00:04:23,896
-long people can keep, because there is such demand for it.
-
-94
-00:04:23,896 --> 00:04:26,880
->> I see, and so basically a book that's a
-
-95
-00:04:26,880 --> 00:04:30,450
-bestseller, like the New York Times bestseller, is a bestseller forever?
-
-96
-00:04:30,450 --> 00:04:32,683
->> No, no, no it's hot for
-
-97
-00:04:32,683 --> 00:04:35,940
-awhile, and then it becomes just a regular item.
-
-98
-00:04:35,940 --> 00:04:38,318
->> I see. Hm. Then I guess it's a
-
-99
-00:04:38,318 --> 00:04:40,349
-similar situation to the one I was mentioning before, right?
-
-100
-00:04:40,349 --> 00:04:40,980
->> Okay.
-
-101
-00:04:40,980 --> 00:04:41,800
->> That if we have a book,
-
-102
-00:04:41,800 --> 00:04:44,530
-it will kind of have to change its type if it becomes a best seller.
-
-103
-00:04:44,530 --> 00:04:47,218
-Then we have to change its type again, if it's no longer a best seller.
-
-104
-00:04:47,218 --> 00:04:47,790
->> Right.
-
-105
-00:04:47,790 --> 00:04:48,920
->> So it seems to me that a better
-
-106
-00:04:48,920 --> 00:04:52,150
-way to represent this, is just to eliminate this BestSeller
-
-107
-00:04:52,150 --> 00:04:55,060
-class and instead, I'm going to put the best seller
-
-108
-00:04:55,060 --> 00:04:58,190
-attribute, which would just be a Boolean in the book.
-
-109
-00:04:58,190 --> 00:05:00,190
->> Okay, what do you mean by Boolean?
-
-110
-00:05:00,190 --> 00:05:02,280
->> Right. We don't know what Boolean is, right? The Boolean is
-
-111
-00:05:02,280 --> 00:05:04,940
-basically just a number. It can have two values, right? True or false.
-
-112
-00:05:04,940 --> 00:05:05,380
->> Okay.
-
-113
-00:05:05,380 --> 00:05:06,830
->> So we usually, normally use it
-
-114
-00:05:06,830 --> 00:05:09,510
-in this in this case. Imagine one, zero,
-
-115
-00:05:09,510 --> 00:05:10,970
-right? Then it's just kind of the basic.
-
-116
-00:05:10,970 --> 00:05:11,120
->> Okay.
-
-117
-00:05:11,120 --> 00:05:12,250
->> You know, the bits, right?
-
-118
-00:05:12,250 --> 00:05:12,590
->> Okay.
-
-119
-00:05:12,590 --> 00:05:14,730
->> So, this is just telling us, it's like a flag
-
-120
-00:05:14,730 --> 00:05:16,672
-that is telling this book is a best seller, or not.
-
-121
-00:05:16,672 --> 00:05:17,053
->> Okay.
-
-122
-00:05:17,053 --> 00:05:20,920
->> It's very easy to change this value and make a book a best
-
-123
-00:05:20,920 --> 00:05:22,880
-seller or not a best seller, than
-
-124
-00:05:22,880 --> 00:05:26,210
-just creating and destroying instances of these classes.
-
-125
-00:05:26,210 --> 00:05:27,135
->> Okay, makes sense.
-
-126
-00:05:27,135 --> 00:05:32,630
->> Okay, so at this point, this already looks better, right? Because we have,
-
-127
-00:05:32,630 --> 00:05:35,590
-less classes, and I think we did, yeah, we
-
-128
-00:05:35,590 --> 00:05:38,775
-did some serious cleanup. That's good. Okay, so now that
-
-129
-00:05:38,775 --> 00:05:40,975
-we eliminated some of this, what I would like to
-
-130
-00:05:40,975 --> 00:05:42,845
-do, as I said, we are going to both clean
-
-131
-00:05:42,845 --> 00:05:45,222
-up, but also refine. I would like to go
-
-132
-00:05:45,222 --> 00:05:48,826
-back to our, requirements and see whether we can identify
-
-133
-00:05:48,826 --> 00:05:52,566
-additional attributes for this, class that maybe are not as
-
-134
-00:05:52,566 --> 00:05:55,120
-obvious as the one that we saw so far, okay?
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt
deleted file mode 100644
index 0a48aae..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/4 - Adding Attributes - lang_en.srt
+++ /dev/null
@@ -1,352 +0,0 @@
-1
-00:00:00,240 --> 00:00:02,880
-Okay, so let me look at the requirements and
-
-2
-00:00:05,500 --> 00:00:09,150
-it's something that I can see here that we didn't point out before is that
-
-3
-00:00:09,150 --> 00:00:13,540
-there seems to be clearly some concept of a due date. And I'm telling you why
-
-4
-00:00:13,540 --> 00:00:17,610
-I'm saying that because here, for example, I notice that it says when items are
-
-5
-00:00:17,610 --> 00:00:22,580
-due. We mention overdue several times, so is
-
-6
-00:00:22,580 --> 00:00:24,410
-this something we need to keep track of?
-
-7
-00:00:24,410 --> 00:00:27,510
->> Yeah remember when we used to stamp them on the books? In the stamp pad?
-
-8
-00:00:27,510 --> 00:00:28,240
->> Oh yeah yeah yeah! Oh course!
-
-9
-00:00:28,240 --> 00:00:30,600
->> Right? Yeah we definitely keep track of,
-
-10
-00:00:30,600 --> 00:00:32,390
-the system has to keep track of when books are due.
-
-11
-00:00:32,390 --> 00:00:35,300
->> Okay. So it seems to me that one good way
-
-12
-00:00:35,300 --> 00:00:39,660
-of doing that is by basically adding an attribute to the, item.
-
-13
-00:00:39,660 --> 00:00:40,590
->> Okay.
-
-14
-00:00:40,590 --> 00:00:41,910
->> And I'll just call it due date.
-
-15
-00:00:41,910 --> 00:00:42,400
->> Okay.
-
-16
-00:00:42,400 --> 00:00:45,360
->> So basically for each item in case it's loaned
-
-17
-00:00:45,360 --> 00:00:48,315
-there will be this attribute that will contain the value of
-
-18
-00:00:48,315 --> 00:00:48,520
->> Okay.
-
-19
-00:00:48,520 --> 00:00:55,710
->> Of when, when the item is due. And then, something else that I noticed
-
-20
-00:00:55,710 --> 00:00:58,734
-here is that down here, it seems like
-
-21
-00:00:58,734 --> 00:01:00,900
-the requirements are saying that an item can
-
-22
-00:01:00,900 --> 00:01:04,190
-be renewed only once. So, I guess, that's
-
-23
-00:01:04,190 --> 00:01:05,933
-something we need to keep track of, right?
-
-24
-00:01:05,933 --> 00:01:06,056
->> Yeah.
-
-25
-00:01:06,056 --> 00:01:06,700
->> The system needs to know.
-
-26
-00:01:06,700 --> 00:01:08,360
->> We have to know whether they've renewed it or not.
-
-27
-00:01:08,360 --> 00:01:14,132
->> Okay so, I'll do a similar thing here. I think I want to go and add a an
-
-28
-00:01:14,132 --> 00:01:19,140
-attribute that we'd call number of times renewed, and add it to the item class.
-
-29
-00:01:19,140 --> 00:01:19,760
->> Okay.
-
-30
-00:01:19,760 --> 00:01:21,140
->> And this is kind of more generic
-
-31
-00:01:21,140 --> 00:01:23,180
-than what you need, because here it says only once, but
-
-32
-00:01:23,180 --> 00:01:25,800
-let's say that in the future you want to allow it to,
-
-33
-00:01:25,800 --> 00:01:28,690
-kind of renew twice, you'll be able to use these attributes again
-
-34
-00:01:28,690 --> 00:01:31,090
-because, we can just count how many times it was renewed. Okay?
-
-35
-00:01:31,090 --> 00:01:31,680
->> Makes sense.
-
-36
-00:01:31,680 --> 00:01:35,980
->> Alright. And one last thing I want to point out.
-
-37
-00:01:35,980 --> 00:01:38,310
-And this seems obvious but I'm going to check with
-
-38
-00:01:38,310 --> 00:01:43,150
-you anyways. And seems like there is a basically the
-
-39
-00:01:43,150 --> 00:01:46,090
-need to keep track of whether an item is checked
-
-40
-00:01:46,090 --> 00:01:48,210
-out or not. If you look at the text here,
-
-41
-00:01:48,210 --> 00:01:51,080
-the requirements here, I can see that check out and checked out are
-
-42
-00:01:51,080 --> 00:01:55,070
-mentioned five times. So, I'm assuming that that's something also
-
-43
-00:01:55,070 --> 00:01:58,080
-that we want to know about an item, whether it's checked out or not.
-
-44
-00:01:58,080 --> 00:01:59,970
->> We have to keep track of whether they're checked out.
-
-45
-00:01:59,970 --> 00:02:01,930
->> Okay, so I'll add an
-
-46
-00:02:01,930 --> 00:02:04,340
-additional attribute there. So I'm going to again go
-
-47
-00:02:04,340 --> 00:02:06,480
-back to the diagram and I'm
-
-48
-00:02:06,480 --> 00:02:10,139
-just going to write here also the checked out attribute.
-
-49
-00:02:12,260 --> 00:02:14,590
-And, I think that's it as far as I'm
-
-50
-00:02:14,590 --> 00:02:16,330
-concerned. Is there anything that you think is missing?
-
-51
-00:02:16,330 --> 00:02:21,077
->> Well, I do have a question. Would checked out,
-
-52
-00:02:21,077 --> 00:02:27,140
-better not be the case that someone can check out a reference book.
-
-53
-00:02:27,140 --> 00:02:28,400
->> Oh, I see, I see.
-
-54
-00:02:28,400 --> 00:02:30,120
->> Okay. I mean, it's only the books and
-
-55
-00:02:30,120 --> 00:02:31,780
-the audio visual material that can be checked out.
-
-56
-00:02:31,780 --> 00:02:37,790
->> Right, right, right. Okay, so I, I guess, well the way I will fix that is,
-
-57
-00:02:37,790 --> 00:02:42,300
-I'll probably put yet another attribute in the item class, and I'll
-
-58
-00:02:42,300 --> 00:02:45,860
-call it loanable. And basically, this attribute is just telling us whether
-
-59
-00:02:45,860 --> 00:02:49,580
-an item is loanable or not. So, when it's not true and
-
-60
-00:02:49,580 --> 00:02:53,480
-loanable is not on. Basically, that item can be checked out.
-
-61
-00:02:53,480 --> 00:02:55,174
->> Okay. And, the system would know this.
-
-62
-00:02:55,174 --> 00:02:56,450
->> The system will know that.
-
-63
-00:02:56,450 --> 00:02:57,160
->> And prevent it from happening.
-
-64
-00:02:57,160 --> 00:02:58,240
->> And prevent it from happening. Okay?
-
-65
-00:02:58,240 --> 00:02:58,750
->> Alright.
-
-66
-00:02:58,750 --> 00:03:02,918
->> Perfect. So, we're going to do that and, any other objections,
-
-67
-00:03:02,918 --> 00:03:04,035
-any other?
-
-68
-00:03:04,035 --> 00:03:05,730
->> No, that was my question.
-
-69
-00:03:05,730 --> 00:03:08,040
->> Okay, perfect, so what I'm going to do next, I
-
-70
-00:03:08,040 --> 00:03:11,130
-mean, I haven't mentioned that yet, but you know classes right
-
-71
-00:03:11,130 --> 00:03:12,890
-now we just looked at the attributes right that give
-
-72
-00:03:12,890 --> 00:03:16,140
-you sort of the state of the class. And there's something
-
-73
-00:03:16,140 --> 00:03:19,185
-else, there's a second part of the class that is kind of
-
-74
-00:03:19,185 --> 00:03:22,520
-an orthogonal aspect, which is what the class can do. And we
-
-75
-00:03:22,520 --> 00:03:25,640
-call those operations. So normally these kinds also have operations, I
-
-76
-00:03:25,640 --> 00:03:28,000
-guess you know it would make sense to you as well.
-
-77
-00:03:28,000 --> 00:03:30,070
-And one way, one very natural way to
-
-78
-00:03:30,070 --> 00:03:33,310
-identify operations is to look at the requirements and
-
-79
-00:03:33,310 --> 00:03:36,850
-look for verbs. Because verbs associated with an item
-
-80
-00:03:36,850 --> 00:03:38,480
-will tell you basically what the item can do.
-
-81
-00:03:38,480 --> 00:03:38,900
->> Okay.
-
-82
-00:03:38,900 --> 00:03:41,250
->> So I, I'd like to go back to the requirements and
-
-83
-00:03:41,250 --> 00:03:45,110
-start, the same way in which we underlined, nouns, we're going to underline
-
-84
-00:03:45,110 --> 00:03:49,340
-verbs and we're going to see which ones of those verbs actually represent
-
-85
-00:03:49,340 --> 00:03:53,120
-actions that we want to represent explicitly, we want to model explicitly in
-
-86
-00:03:53,120 --> 00:03:53,950
-our class diagram.
-
-87
-00:03:53,950 --> 00:03:54,490
->> Okay.
-
-88
-00:03:54,490 --> 00:03:54,750
->> Okay.
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt
deleted file mode 100644
index 74ca388..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/5 - Identifying Operations - lang_en.srt
+++ /dev/null
@@ -1,304 +0,0 @@
-1
-00:00:00,460 --> 00:00:03,276
->> And before we get started actually, I'd like to mention that there's
-
-2
-00:00:03,276 --> 00:00:05,124
-just, you know, FYI, there's different kinds
-
-3
-00:00:05,124 --> 00:00:06,708
-of verbs because what I'm looking for
-
-4
-00:00:06,708 --> 00:00:10,099
-is really action verbs. So verb, verbs that clearly express an action that
-
-5
-00:00:10,099 --> 00:00:13,580
-can tell me that, you know, what, for example, an item could do, 'kay?
-
-6
-00:00:13,580 --> 00:00:13,820
->> Okay?
-
-7
-00:00:13,820 --> 00:00:16,620
->> Not the verbs that represent, for example, relationships, 'kay?
-
-8
-00:00:16,620 --> 00:00:17,076
->> Okay.
-
-9
-00:00:17,076 --> 00:00:19,080
->> So, and the, there, and the ones
-
-10
-00:00:19,080 --> 00:00:22,020
-that I've identified und, underlined here actually, I,
-
-11
-00:00:22,020 --> 00:00:26,158
-I underlined complete sentences so that you kind of we can look at the verbs in
-
-12
-00:00:26,158 --> 00:00:29,150
-in context. And the first one is this
-
-13
-00:00:29,150 --> 00:00:30,850
-sentence that says that the library may need
-
-14
-00:00:30,850 --> 00:00:33,190
-to know or to calculate the items a
-
-15
-00:00:33,190 --> 00:00:35,790
-patron has checked out, when they are due, and
-
-16
-00:00:35,790 --> 00:00:38,860
-any outstanding overdue fines. So I, I will
-
-17
-00:00:38,860 --> 00:00:41,430
-imagine that this is representing a situation in
-
-18
-00:00:41,430 --> 00:00:44,224
-which you bring up a patron's record and
-
-19
-00:00:44,224 --> 00:00:46,131
-you start looking up this information. Is that [CROSSTALK]
-
-20
-00:00:46,131 --> 00:00:50,970
->> The, the patron often wants to know what they have currently checked out.
-
-21
-00:00:50,970 --> 00:00:51,044
->> Oh,
-
-22
-00:00:51,044 --> 00:00:51,282
-alright.
-
-23
-00:00:51,282 --> 00:00:53,260
->> Or when are their due or how much they're owed or.
-
-24
-00:00:53,260 --> 00:00:55,100
->> Oh, in fact, and then now that you mentioned it,
-
-25
-00:00:55,100 --> 00:00:57,500
-I think you sent me. One of the scenarios you sent
-
-26
-00:00:57,500 --> 00:00:59,400
-me had to do with that, right, with the patron coming
-
-27
-00:00:59,400 --> 00:01:01,930
-in and asking for this information. So yeah, and it makes
-
-28
-00:01:01,930 --> 00:01:05,025
-a lot of sense. So what I'm going to do, I'm going to
-
-29
-00:01:05,025 --> 00:01:10,520
-model this by adding this three operations to the patron method.
-
-30
-00:01:10,520 --> 00:01:13,410
-The first one, I'm going to call, itemsCheckedOut and, basically, it's an
-
-31
-00:01:13,410 --> 00:01:16,520
-operation, but you don't need to, you know, understand the implementation
-
-32
-00:01:16,520 --> 00:01:18,820
-details, but when you call this operation, it will
-
-33
-00:01:18,820 --> 00:01:21,770
-give you back exactly this information, so the items
-
-34
-00:01:21,770 --> 00:01:23,864
-that are checked out by that patron. The second
-
-35
-00:01:23,864 --> 00:01:25,965
-one, I'm going to call it whenDue. That will tell you
-
-36
-00:01:25,965 --> 00:01:29,080
-basically when a, when an item is due. And
-
-37
-00:01:29,080 --> 00:01:32,550
-the third one is going to be called the outstandingOverdueFines and,
-
-38
-00:01:32,550 --> 00:01:34,510
-you know, as the name says, it's going to tell
-
-39
-00:01:34,510 --> 00:01:36,860
-you what are the outstanding overdue fines for that patron.
-
-40
-00:01:36,860 --> 00:01:37,300
->> Okay.
-
-41
-00:01:37,300 --> 00:01:39,306
->> And as you might notice I mean,
-
-42
-00:01:39,306 --> 00:01:41,843
-I, I'm going to separate the, the, the attributes
-
-43
-00:01:41,843 --> 00:01:44,085
-from the operations by having a separate kind
-
-44
-00:01:44,085 --> 00:01:46,386
-of subrectangle so, in this way, it's clear
-
-45
-00:01:46,386 --> 00:01:48,274
-what is attribute and what is, what is
-
-46
-00:01:48,274 --> 00:01:51,000
-an attribute and what's an, what's an operation.
-
-47
-00:01:51,000 --> 00:01:51,420
->> Gotcha.
-
-48
-00:01:51,420 --> 00:01:57,540
->> And let me see then. Okay, for the
-
-49
-00:01:57,540 --> 00:02:00,040
-second one you can see that that patron can check
-
-50
-00:02:00,040 --> 00:02:02,990
-out books and audio visual materials. So I guess,
-
-51
-00:02:02,990 --> 00:02:06,880
-similarly you, you build kind of the record for a patron.
-
-52
-00:02:06,880 --> 00:02:09,150
-The patron will give you an item and you will record
-
-53
-00:02:09,150 --> 00:02:11,020
-the fact that the patron is kind of checking it out.
-
-54
-00:02:11,020 --> 00:02:15,730
->> Right. And is that operation related to this,
-
-55
-00:02:15,730 --> 00:02:18,150
-the checked out attribute that we did a minute ago?
-
-56
-00:02:18,150 --> 00:02:21,495
->> It is actually because what will happen then again, you know, if we jump
-
-57
-00:02:21,495 --> 00:02:24,975
-ahead a little bit would be that every time you invoke this operation. So I'm
-
-58
-00:02:24,975 --> 00:02:26,810
-going to represent this as a checkOut operation
-
-59
-00:02:26,810 --> 00:02:28,896
-for the patron. Every time you invoke this,
-
-60
-00:02:28,896 --> 00:02:31,920
-you will also have to say something about the item and so we will also
-
-61
-00:02:31,920 --> 00:02:35,700
-flip kind of that that, that build information in the, in the, in the item.
-
-62
-00:02:35,700 --> 00:02:36,904
->> Okay.
-
-63
-00:02:36,904 --> 00:02:39,680
->> Mm, 'kay? And, and finally, here, I can see that
-
-64
-00:02:39,680 --> 00:02:42,660
-a patron can request a book or an audio video item Is
-
-65
-00:02:42,660 --> 00:02:46,240
-not currently in. So I guess this is referring to items that
-
-66
-00:02:46,240 --> 00:02:48,980
-are already checked out but for which there is interest. Is that?
-
-67
-00:02:48,980 --> 00:02:54,770
->> Right. So, particularly, the popular items the patrons want to get on
-
-68
-00:02:54,770 --> 00:02:57,140
-the list so that they get notified when it comes back in and.
-
-69
-00:02:57,140 --> 00:02:57,204
->> Oh.
-
-70
-00:02:57,204 --> 00:02:57,730
->> And check it out.
-
-71
-00:02:57,730 --> 00:03:00,570
->> I see. I see. Okay. Then I'm going to do
-
-72
-00:03:00,570 --> 00:03:04,400
-the same thing here. I'm, I'm going to add this method,
-
-73
-00:03:04,400 --> 00:03:08,510
-which I'm going to call request and I'm going to put it
-
-74
-00:03:08,510 --> 00:03:11,340
-here in the list of the methods in the list.
-
-75
-00:03:11,340 --> 00:03:11,450
->> Okay.
-
-76
-00:03:11,450 --> 00:03:12,810
->> Of operations for the, for the patron, okay?
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt
deleted file mode 100644
index d47ef80..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/6 - Adding Relationships - lang_en.srt
+++ /dev/null
@@ -1,488 +0,0 @@
-1
-00:00:00,420 --> 00:00:02,740
-OK I like the way this class diagram is
-
-2
-00:00:02,740 --> 00:00:05,850
-coming along. So at this point I think we
-
-3
-00:00:05,850 --> 00:00:08,300
-have all the classes that we need. For each
-
-4
-00:00:08,300 --> 00:00:12,250
-class we specified the attributes or the characteristics of the
-
-5
-00:00:12,250 --> 00:00:15,150
-class. And we also specified the operations so we
-
-6
-00:00:15,150 --> 00:00:18,710
-know what the class can do And, I like to
-
-7
-00:00:18,710 --> 00:00:22,110
-kind of move forward on this, but I first
-
-8
-00:00:22,110 --> 00:00:25,690
-want to see that you're fine with the class structure.
-
-9
-00:00:25,690 --> 00:00:27,500
-So that's the way the class structure is going
-
-10
-00:00:27,500 --> 00:00:29,880
-to be in terms of attributes and operations. So anything
-
-11
-00:00:29,880 --> 00:00:34,910
-that bothers you? Well, one thing I didn't understand
-
-12
-00:00:34,910 --> 00:00:38,090
-is how come you put check out over where
-
-13
-00:00:38,090 --> 00:00:40,350
-the patron when it's really the item being checked
-
-14
-00:00:40,350 --> 00:00:46,280
-out? Right. Okay. So that actually is you know, is a perfect
-
-15
-00:00:46,280 --> 00:00:48,030
-segway for the next thing that really wanted
-
-16
-00:00:48,030 --> 00:00:50,780
-to model. Because what you're talking about is basically a
-
-17
-00:00:50,780 --> 00:00:54,100
-relationship between two classes which is something we haven't touched on
-
-18
-00:00:54,100 --> 00:00:57,582
-yet. So we haven't, haven't looked at individual classes. But now, it
-
-19
-00:00:57,582 --> 00:01:00,720
-is typical, now we are looking more at requirements, we're starting to
-
-20
-00:01:00,720 --> 00:01:04,800
-find more things about our system, and what you're pointed out right
-
-21
-00:01:04,800 --> 00:01:08,370
-now is the fact that patron and item are somehow related. So
-
-22
-00:01:08,370 --> 00:01:11,020
-this checkout operation is not really something that belongs only on in
-
-23
-00:01:11,020 --> 00:01:13,660
-the patron, because it needs to know about the item. And it
-
-24
-00:01:13,660 --> 00:01:15,790
-doesn't belong only on the item because it needs to know about
-
-25
-00:01:15,790 --> 00:01:19,640
-the patron. So, it's something that associates the patron and
-
-26
-00:01:19,640 --> 00:01:22,600
-the item. Okay. And that's exactly the way we call
-
-27
-00:01:22,600 --> 00:01:24,630
-in the UML which is the notation that we're using
-
-28
-00:01:24,630 --> 00:01:29,060
-here this kind of relationship. So, we're going to represent that
-
-29
-00:01:29,060 --> 00:01:32,820
-by drawing a line between these two classes that tells
-
-30
-00:01:32,820 --> 00:01:35,220
-us there is an association. And we're also going to
-
-31
-00:01:35,220 --> 00:01:37,890
-give a name to this. Since this refers to the
-
-32
-00:01:37,890 --> 00:01:40,280
-fact of checking out items. We're just going to call
-
-33
-00:01:40,280 --> 00:01:43,794
-it, checkout. Gotcha. And notice that this basically you
-
-34
-00:01:43,794 --> 00:01:48,500
-know,eventually will end up kind of replacing this attribute. Because
-
-35
-00:01:48,500 --> 00:01:51,780
-the existence of this association will tell us that
-
-36
-00:01:51,780 --> 00:01:53,932
-this is checked out. We're, we're not going to, you know,
-
-37
-00:01:53,932 --> 00:01:55,428
-do it right now, but in the final cleanup
-
-38
-00:01:55,428 --> 00:01:58,750
-or the diagram, this name will disappear. Okay. Okay.
-
-39
-00:01:58,750 --> 00:02:02,190
-And so since we started talking about relationships and
-
-40
-00:02:02,190 --> 00:02:05,280
-associations, is there any other kind of relationship that you
-
-41
-00:02:05,280 --> 00:02:08,805
-see here? Well, what you just did with checked
-
-42
-00:02:08,805 --> 00:02:12,009
-out is, it seems similar to the whole issue
-
-43
-00:02:12,009 --> 00:02:16,090
-of requests. It is, it is. So a request
-
-44
-00:02:16,090 --> 00:02:19,580
-is something else that happens in both, you know, in
-
-45
-00:02:19,580 --> 00:02:22,090
-the patron and in the item, it involves both.
-
-46
-00:02:22,090 --> 00:02:24,070
-And in fact in a request, I would definitely
-
-47
-00:02:24,070 --> 00:02:26,950
-represent this as an additional association. So I will
-
-48
-00:02:26,950 --> 00:02:30,730
-just draw an another line between these two that represent
-
-49
-00:02:30,730 --> 00:02:33,804
-that specific kind of relationship and I will call it
-
-50
-00:02:33,804 --> 00:02:37,330
-request. So that indicates that this association refers to a
-
-51
-00:02:37,330 --> 00:02:41,660
-request that also connects the patron with an item. Okay.
-
-52
-00:02:41,660 --> 00:02:45,710
-And, let's see. Any, anything else that jumps at you?
-
-53
-00:02:45,710 --> 00:02:47,590
-Yeah, well, how about all these ones down at the
-
-54
-00:02:47,590 --> 00:02:50,080
-bottom? I mean book and item's got to be
-
-55
-00:02:50,080 --> 00:02:52,920
-related, right? A book is a kind of item, And
-
-56
-00:02:52,920 --> 00:02:55,860
-audiovisual... are there associations between them? Can you repeat
-
-57
-00:02:55,860 --> 00:02:58,790
-that, you said that the book, yeah? Is
-
-58
-00:02:58,790 --> 00:03:02,550
-a kind of item. Perfect, that's exactly what we're
-
-59
-00:03:02,550 --> 00:03:04,700
-modeling next, which is, this, what we call the
-
-60
-00:03:04,700 --> 00:03:07,900
-is-a relationship. So you said, a book is an item?
-
-61
-00:03:07,900 --> 00:03:13,346
-A book is an item. And, we can model that in the diagram. So, we do that
-
-62
-00:03:13,346 --> 00:03:17,409
-using another kind of relationship between the classes. So
-
-63
-00:03:17,409 --> 00:03:21,210
-we're going to represent that as a specialization we call it.
-
-64
-00:03:21,210 --> 00:03:24,890
-And, a specialization is indicated in this way. Okay?
-
-65
-00:03:24,890 --> 00:03:27,410
-With this arrow at the end, so a solid
-
-66
-00:03:27,410 --> 00:03:30,800
-with this kind of arrow at the end. And
-
-67
-00:03:30,800 --> 00:03:34,160
-we can do the same for book, magazine, reference book
-
-68
-00:03:34,160 --> 00:03:36,200
-and audiovisual material. So we're all going to connect,
-
-69
-00:03:36,200 --> 00:03:37,950
-we're going to connect all of them, to the
-
-70
-00:03:37,950 --> 00:03:43,190
-item, using the same kind of connection. And now
-
-71
-00:03:43,190 --> 00:03:47,200
-that we have connected all these four, with item
-
-72
-00:03:47,200 --> 00:03:50,620
-and indicated them in subclasses. That's something else that we can
-
-73
-00:03:50,620 --> 00:03:54,370
-do. So we can make this kind of cleaner. And I'll
-
-74
-00:03:54,370 --> 00:03:56,360
-tell you what I mean by that. So now we have
-
-75
-00:03:56,360 --> 00:04:00,190
-this loanable attribute that refers to item, but it seems to
-
-76
-00:04:00,190 --> 00:04:03,100
-me from what you were saying before, that loanable is not
-
-77
-00:04:03,100 --> 00:04:05,490
-really an attribute of an item. Right? It's more of a
-
-78
-00:04:05,490 --> 00:04:09,240
-characteristic of the type of item. Right. Is that right? Right.
-
-79
-00:04:09,240 --> 00:04:13,120
-Books, and audio/visual are loanable but the others aren't.
-
-80
-00:04:13,120 --> 00:04:16,450
-Okay, and so representing it here, it's okay to,
-
-81
-00:04:16,450 --> 00:04:20,579
-it will work. But it's not really right so from
-
-82
-00:04:20,579 --> 00:04:23,590
-the style standpoint it doesn't really you know,
-
-83
-00:04:23,590 --> 00:04:26,100
-it's not the best way of modeling this. What we're going to
-
-84
-00:04:26,100 --> 00:04:30,130
-do instead, we're going to use this specialization relationship to make
-
-85
-00:04:30,130 --> 00:04:33,000
-that more explicit. To make it cleaner. Okay, so what
-
-86
-00:04:33,000 --> 00:04:35,300
-I'm doing here is I'm going to take this hierarchy
-
-87
-00:04:35,300 --> 00:04:38,130
-of classes, this is just on two levels now, and I'm
-
-88
-00:04:38,130 --> 00:04:40,380
-going to kind of make it a little richer.
-
-89
-00:04:40,380 --> 00:04:43,470
-So I'm going to add an intermediate set of
-
-90
-00:04:43,470 --> 00:04:45,756
-classes. And in particular I'm going to have these two
-
-91
-00:04:45,756 --> 00:04:48,306
-classes that I'm going to call non loanable item and loanable
-
-92
-00:04:48,306 --> 00:04:51,790
-item. So, they're both items but they tell me
-
-93
-00:04:51,790 --> 00:04:55,490
-clearly that some items are loanable and some items
-
-94
-00:04:55,490 --> 00:04:59,392
-are not. Okay. Okay. And then I'm simply going to
-
-95
-00:04:59,392 --> 00:05:03,192
-put book and audio video material as subclasses of loanable
-
-96
-00:05:03,192 --> 00:05:07,980
-item and reference book and magazine as subclasses of non-loanable
-
-97
-00:05:07,980 --> 00:05:10,510
-item. So, if we look at this diagram now it's
-
-98
-00:05:10,510 --> 00:05:13,650
-pretty clear what is loanable and what is not. And
-
-99
-00:05:13,650 --> 00:05:16,070
-it's actually is a very clean, much cleaner
-
-100
-00:05:16,070 --> 00:05:18,980
-design. And, and I see you've, gotten rid of
-
-101
-00:05:18,980 --> 00:05:21,560
-the loanable attribute, too. I did. Because at
-
-102
-00:05:21,560 --> 00:05:24,130
-this point this is already represented by the fact of
-
-103
-00:05:24,130 --> 00:05:28,570
-having these two classes. And actually, something else that I did
-
-104
-00:05:28,570 --> 00:05:31,820
-is that I moved all these attributes, value,
-
-105
-00:05:31,820 --> 00:05:34,220
-due date, renewed and checked out, that makes
-
-106
-00:05:34,220 --> 00:05:37,452
-sense only for loanable item. From item to
-
-107
-00:05:37,452 --> 00:05:40,450
-loanable item. So at this point, this really
-
-108
-00:05:40,450 --> 00:05:42,600
-is telling me that, you know, these
-
-109
-00:05:42,600 --> 00:05:46,410
-characteristics are just meaningful for the loanable item,
-
-110
-00:05:46,410 --> 00:05:53,800
-and not for the other ones. Well, speaking of that, the way that you got the
-
-111
-00:05:53,800 --> 00:05:57,270
-lines going in the diagram here is you still have
-
-112
-00:05:57,270 --> 00:05:59,920
-request and checked out going to item, even though you
-
-113
-00:05:59,920 --> 00:06:02,610
-can't request non loanable Items. You can't check out non
-
-114
-00:06:02,610 --> 00:06:05,630
-loanable Items. Oh, you were right actually. You got me on
-
-115
-00:06:05,630 --> 00:06:10,940
-that one. You're exactly right. So this associations are between
-
-116
-00:06:10,940 --> 00:06:13,440
-the two wrong classes. So, I guess, at this point,
-
-117
-00:06:13,440 --> 00:06:16,450
-you can probably go and fix the diagram yourself. Well,
-
-118
-00:06:16,450 --> 00:06:19,120
-can we just make the lines go from patron to loanable
-
-119
-00:06:19,120 --> 00:06:21,640
-item instead of to item? That's exactly the way in which we
-
-120
-00:06:21,640 --> 00:06:25,550
-are going to fix it. So, we're going to move these two associations down
-
-121
-00:06:25,550 --> 00:06:29,190
-here. And at this point, this will represent the right relationships in
-
-122
-00:06:29,190 --> 00:06:31,850
-the, in the diagram, and in the system. Makes sense to me.
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt
deleted file mode 100644
index 44f9165..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/7 - Refining Relationships - lang_en.srt
+++ /dev/null
@@ -1,188 +0,0 @@
-1
-00:00:00,350 --> 00:00:03,460
-Spencer, I gotta tell you, I'm impressed.
-
-2
-00:00:03,460 --> 00:00:05,441
-You're getting very good at this. So, why
-
-3
-00:00:05,441 --> 00:00:07,190
-don't you go wild and continue, there
-
-4
-00:00:07,190 --> 00:00:09,240
-anything else you think we can improve here?
-
-5
-00:00:09,240 --> 00:00:11,800
->> Well something was bothering
-
-6
-00:00:11,800 --> 00:00:14,600
-me, that what happens if there's more
-
-7
-00:00:14,600 --> 00:00:19,110
-than one book with the same title and somebody puts in a request?
-
-8
-00:00:19,110 --> 00:00:25,360
->> Oh, I see. That's a good point. So basically what you are telling me is
-
-9
-00:00:25,360 --> 00:00:28,630
-there's kind of a difference between an item and
-
-10
-00:00:28,630 --> 00:00:30,660
-the title, so the title is kind of a more
-
-11
-00:00:30,660 --> 00:00:32,940
-general concept, in a sense. So if you can
-
-12
-00:00:32,940 --> 00:00:35,830
-have multiple copies of a given title, is that right?
-
-13
-00:00:35,830 --> 00:00:38,460
->> Yeah, we have five copies of Tom Sawyer, and the
-
-14
-00:00:38,460 --> 00:00:42,810
-persons, the patrons, really putting in a request for any Tom Sawyer.
-
-15
-00:00:42,810 --> 00:00:45,332
->> They don't want like copy number three of Tom Sawyer, right? They want,
-
-16
-00:00:45,332 --> 00:00:50,530
-they want to read Tom Sawyer. Okay and I can represent that. So, in which
-
-17
-00:00:50,530 --> 00:00:55,230
-I suggest we do that, and you can tell me whether it makes sense to you is by
-
-18
-00:00:55,230 --> 00:00:59,650
-introducing an additional class, which I call Title. And
-
-19
-00:00:59,650 --> 00:01:02,614
-that represents exactly the concept that you're mentioning. So
-
-20
-00:01:02,614 --> 00:01:04,666
-this is a title which represents some
-
-21
-00:01:04,666 --> 00:01:09,180
-specific content. That is not related to a specific
-
-22
-00:01:09,180 --> 00:01:12,110
-physical element. Like it can be rated to multiple,
-
-23
-00:01:12,110 --> 00:01:15,520
-physical elements. So basically I'm going to create this title.
-
-24
-00:01:15,520 --> 00:01:18,100
-And then I'm going to create a relationship between
-
-25
-00:01:18,100 --> 00:01:20,500
-the title and the item. And what
-
-26
-00:01:20,500 --> 00:01:22,530
-the relationship is telling me, the the association
-
-27
-00:01:22,530 --> 00:01:25,512
-between these two in this case. Is an association,
-
-28
-00:01:25,512 --> 00:01:30,320
-that we call aggregation. So it's a special kind of association, that basically
-
-29
-00:01:30,320 --> 00:01:35,450
-indicates that an item of this type, so a title can
-
-30
-00:01:35,450 --> 00:01:40,692
-consist of a multiple elements of this type of multiple items.
-
-31
-00:01:40,692 --> 00:01:42,710
-So it's telling me that one title can
-
-32
-00:01:42,710 --> 00:01:45,700
-consist of multiple items, and I'm going to indicate
-
-33
-00:01:45,700 --> 00:01:48,560
-it with this annotation, which is a this
-
-34
-00:01:49,700 --> 00:01:53,200
-diamond at the top of the association.
-
-35
-00:01:53,200 --> 00:01:55,570
->> And so we can move our request
-
-36
-00:01:55,570 --> 00:01:57,510
-line, up from loanable item to
-
-37
-00:01:57,510 --> 00:01:59,010
-title, because that's what they're really requesting.
-
-38
-00:01:59,010 --> 00:02:00,710
->> Definitely, definitely, and in fact,
-
-39
-00:02:00,710 --> 00:02:02,420
-you know, that represents exactly the situation
-
-40
-00:02:02,420 --> 00:02:06,350
-that you are mentioning, at this point when the patron makes a request.
-
-41
-00:02:06,350 --> 00:02:12,240
-It makes a request to a title and not to a loanable item. And then, and
-
-42
-00:02:12,240 --> 00:02:15,420
-when the actual loan will take place,
-
-43
-00:02:15,420 --> 00:02:18,420
-then that will be connected to a specific item.
-
-44
-00:02:18,420 --> 00:02:20,090
->> Right. Okay that makes sense.
-
-45
-00:02:20,090 --> 00:02:20,388
->> Makes sense?
-
-46
-00:02:20,388 --> 00:02:20,779
->> Yeah.
-
-47
-00:02:20,779 --> 00:02:21,214
->> Okay, good.
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt
deleted file mode 100644
index 1e47ea6..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/8 - Refining the Class Diagram - lang_en.srt
+++ /dev/null
@@ -1,328 +0,0 @@
-1
-00:00:00,260 --> 00:00:01,720
-Okay, so let me see if
-
-2
-00:00:01,720 --> 00:00:07,930
-anything changed after we did this last modification.
-
-3
-00:00:07,930 --> 00:00:09,530
-Acutally, there is someting that I would like
-
-4
-00:00:09,530 --> 00:00:12,120
-to do here. Because looking at this a little
-
-5
-00:00:12,120 --> 00:00:15,560
-bit more, I noticed that there are two
-
-6
-00:00:15,560 --> 00:00:18,760
-attributes, renewed and due date. That we have in
-
-7
-00:00:18,760 --> 00:00:21,640
-loanable Item, right? But they don't seem to
-
-8
-00:00:21,640 --> 00:00:25,590
-be really, attributes or characteristics of loanable Item.
-
-9
-00:00:25,590 --> 00:00:29,150
-They're more of the characteristics of the association between the
-
-10
-00:00:29,150 --> 00:00:31,450
-Loanable Item and the patron. Wouldn't you agree?
-
-11
-00:00:32,470 --> 00:00:34,230
->> Well, yeah, it's not like you could
-
-12
-00:00:34,230 --> 00:00:37,644
-only renew a book once in it's entire history.
-
-13
-00:00:37,644 --> 00:00:41,220
->> Right. Exactly, exactly. So, that's why what l like
-
-14
-00:00:41,220 --> 00:00:43,970
-to do is I would like to move those out of loanable
-
-15
-00:00:43,970 --> 00:00:48,020
-item. And actually there is a construct that we can use
-
-16
-00:00:48,020 --> 00:00:50,710
-to express this. It's called, we haven't seen it yet, but it's
-
-17
-00:00:50,710 --> 00:00:52,780
-a special kind of class. It's called an association
-
-18
-00:00:52,780 --> 00:00:55,480
-class. So, it's a class that is connected to
-
-19
-00:00:55,480 --> 00:00:57,730
-a specific association. So what we can do
-
-20
-00:00:57,730 --> 00:01:00,730
-here, we can create this class, which I'm going to
-
-21
-00:01:00,730 --> 00:01:05,200
-call checked out. I'm going to, associate it with
-
-22
-00:01:05,200 --> 00:01:09,520
-this, association. I'm going to connect it with this association. And
-
-23
-00:01:09,520 --> 00:01:11,620
-then I'm going to move the due date and the
-
-24
-00:01:11,620 --> 00:01:16,300
-renewed attributes From the LoanableItem here in this checked
-
-25
-00:01:16,300 --> 00:01:18,520
-out class. So in this way, seems to me that
-
-26
-00:01:18,520 --> 00:01:20,910
-it makes it very explicit for somebody looking at this
-
-27
-00:01:20,910 --> 00:01:25,530
-class diagram, that these characteristics are characteristics of the loan,
-
-28
-00:01:25,530 --> 00:01:28,200
-and not of the elements involved in the loan.
-
-29
-00:01:28,200 --> 00:01:33,410
->> Can you do the same thing with Fine, isn't Fine a property of the
-
-30
-00:01:33,410 --> 00:01:36,740
-loan? Yeah, actually is right because
-
-31
-00:01:36,740 --> 00:01:39,120
-a fine is a fine for a specific loan, right?
-
-32
-00:01:39,120 --> 00:01:39,910
->> That's correct.
-
-33
-00:01:39,910 --> 00:01:41,950
->> Okay, so yeah. Then we can do that.
-
-34
-00:01:41,950 --> 00:01:45,900
-We don't need to represent fine as a class, we can just transform
-
-35
-00:01:45,900 --> 00:01:49,460
-that into an attribute that we can put into the checked out association class.
-
-36
-00:01:49,460 --> 00:01:50,560
->> Gotcha.
-
-37
-00:01:50,560 --> 00:01:52,760
->> Anything else?
-
-38
-00:01:52,760 --> 00:01:57,990
->> Yeah. It occurred to me that there's another thing that happens in one
-
-39
-00:01:57,990 --> 00:02:00,260
-of my scenarios, I put down
-
-40
-00:02:00,260 --> 00:02:02,770
-about the patron actually returning an item.
-
-41
-00:02:02,770 --> 00:02:07,620
->> Right. Okay, so we would probably need an additional operation,
-
-42
-00:02:07,620 --> 00:02:08,550
-I guess, for the patron.
-
-43
-00:02:08,550 --> 00:02:08,990
->> Right.
-
-44
-00:02:08,990 --> 00:02:11,310
->> So, okay, so what I'm going to do, that's pretty easy
-
-45
-00:02:11,310 --> 00:02:15,350
-to do, I'm just going to add the return operation here in the
-
-46
-00:02:15,350 --> 00:02:19,310
-patron, and when that happens, that will mean that I'll get rid
-
-47
-00:02:19,310 --> 00:02:23,490
-of this association class because the item is returned. Is that right?
-
-48
-00:02:23,490 --> 00:02:27,060
->> Well, what happens if somebody drops the
-
-49
-00:02:27,060 --> 00:02:29,400
-book in the book drop, but doesn't pay the,
-
-50
-00:02:29,400 --> 00:02:31,050
-if it's overdue and doesn't pay the fine?
-
-51
-00:02:31,050 --> 00:02:32,700
-Will that get rid of the information about what
-
-52
-00:02:32,700 --> 00:02:33,040
-they owe?
-
-53
-00:02:33,040 --> 00:02:37,960
->> Oh, I see. So you can have the item being available, but you still
-
-54
-00:02:37,960 --> 00:02:42,510
-want to know whether there is any pending fines on the book.
-
-55
-00:02:42,510 --> 00:02:44,390
->> Uh-huh, and how much those fines are.
-
-56
-00:02:44,390 --> 00:02:46,340
->> And how do you compute how much it is?
-
-57
-00:02:47,420 --> 00:02:52,710
->> It's how many days it was, from the time it was
-
-58
-00:02:52,710 --> 00:02:58,170
-due, to when they returned it. I see. OK.
-
-59
-00:02:58,170 --> 00:03:00,380
-So you know what we can do? I think
-
-60
-00:03:00,380 --> 00:03:03,690
-we can put an additional attribute in the checked out
-
-61
-00:03:03,690 --> 00:03:07,190
-class and I'm going to call it when returned and
-
-62
-00:03:07,190 --> 00:03:10,200
-that item will have either a special value or it
-
-63
-00:03:10,200 --> 00:03:12,040
-will contain the date in which the book was
-
-64
-00:03:12,040 --> 00:03:14,520
-returned. So in this way you should be able to
-
-65
-00:03:14,520 --> 00:03:18,040
-keep this in the system until it's paid, and also to compute
-
-66
-00:03:18,040 --> 00:03:19,970
-how much the fine is. Is that working?
-
-67
-00:03:19,970 --> 00:03:23,210
->> So the special value is for a normal situation when they
-
-68
-00:03:23,210 --> 00:03:25,880
-haven't, they don't owe anything and haven't returned it yet.
-
-69
-00:03:25,880 --> 00:03:28,080
->> Exactly so that will tell us that,
-
-70
-00:03:28,080 --> 00:03:29,970
-that the loan is still active basically.
-
-71
-00:03:29,970 --> 00:03:30,500
->> Great.
-
-72
-00:03:30,500 --> 00:03:31,480
->> Does that work for you?
-
-73
-00:03:31,480 --> 00:03:35,200
->> Yes. And you know, I like this. I mean, I feel pretty good
-
-74
-00:03:35,200 --> 00:03:38,490
-about it. I think we have a nice class diagram. So what I'd like to
-
-75
-00:03:38,490 --> 00:03:43,280
-do is just go off and clean it up a little bit, and put it
-
-76
-00:03:43,280 --> 00:03:48,640
-in an IDE so I can pretty print it and rearrange things a little bit.
-
-77
-00:03:48,640 --> 00:03:50,080
-And then I'd like to sit down again and
-
-78
-00:03:50,080 --> 00:03:52,730
-just go through it for a last time. And
-
-79
-00:03:52,730 --> 00:03:54,900
-for some final considerations. So if you don't mind
-
-80
-00:03:54,900 --> 00:03:56,880
-we will take a ten minute break and reconvene here.
-
-81
-00:03:56,880 --> 00:03:57,500
->> That's fine.
-
-82
-00:03:57,500 --> 00:03:57,990
->> Alright.
-
diff --git a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt b/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt
deleted file mode 100644
index 0dbfccd..0000000
--- a/usth/ICT2.7/P3L2 A Tale of Analysis and Design Subtitles/9 - Final Considerations - lang_en.srt
+++ /dev/null
@@ -1,196 +0,0 @@
-1
-00:00:00,140 --> 00:00:03,202
-Okay. So this is what I've done as you see,
-
-2
-00:00:03,202 --> 00:00:06,130
-it looks a little nicer than it was before. And I didn't
-
-3
-00:00:06,130 --> 00:00:08,530
-really change that much. I just made a few changes, so
-
-4
-00:00:08,530 --> 00:00:11,560
-I just wanted to point them out to you, so that you
-
-5
-00:00:11,560 --> 00:00:13,690
-know what they are. And the main thing, one of the
-
-6
-00:00:13,690 --> 00:00:18,210
-main things I did is really to introduce these derived attributes. So
-
-7
-00:00:18,210 --> 00:00:19,860
-these are attributes that are basically
-
-8
-00:00:19,860 --> 00:00:22,520
-computed. Based on some other attributes.
-
-9
-00:00:22,520 --> 00:00:26,010
-Okay, they don't have a value themselves, but their value is computed.
-
-10
-00:00:26,010 --> 00:00:28,900
-And I used two. The first one is age. So
-
-11
-00:00:28,900 --> 00:00:31,930
-basically we know the age of the patron based on
-
-12
-00:00:31,930 --> 00:00:34,920
-the birthday, of the patron. So you guys, I don't
-
-13
-00:00:34,920 --> 00:00:37,150
-know if you have that information currently in the system.
-
-14
-00:00:37,150 --> 00:00:38,480
->> No, we'll have to add that to the
-
-15
-00:00:38,480 --> 00:00:40,280
-form patrons fill out, when they get their card.
-
-16
-00:00:40,280 --> 00:00:42,255
->> Is that, that an issue? Can you do it?
-
-17
-00:00:42,255 --> 00:00:44,130
->> No yes, we, we can easily do that.
-
-18
-00:00:44,130 --> 00:00:46,670
->> Okay, so then, perfect. So we'll do it that way. I think it's
-
-19
-00:00:46,670 --> 00:00:51,310
-a, in a little cleaner. And similarly, since you told me that the fine
-
-20
-00:00:51,310 --> 00:00:54,480
-was computed based on the amount of days that an
-
-21
-00:00:54,480 --> 00:00:58,310
-item was late. The patron was late returning the item, then I
-
-22
-00:00:58,310 --> 00:01:02,010
-also added this as a derived attribute that is computed based on
-
-23
-00:01:02,010 --> 00:01:05,140
-the due date and when the item is actually returned.
-
-24
-00:01:05,140 --> 00:01:05,780
->> Makes sense.
-
-25
-00:01:05,780 --> 00:01:08,389
->> Makes sense? Okay. And the rest
-
-26
-00:01:08,389 --> 00:01:10,590
-is kind of really minor things. So the, the only one I
-
-27
-00:01:10,590 --> 00:01:14,340
-want to point out is I didn't, you know, discuss that with
-
-28
-00:01:14,340 --> 00:01:17,260
-you before, but I added this, which is called cardinality
-
-29
-00:01:17,260 --> 00:01:20,700
-for some of these relationships. And what they say is basically
-
-30
-00:01:20,700 --> 00:01:25,360
-is how many elements are involved in the relationship.
-
-31
-00:01:25,360 --> 00:01:26,580
->> So, you mean the stars?
-
-32
-00:01:26,580 --> 00:01:27,960
->> Yeah, like the stars and the one...
-
-33
-00:01:27,960 --> 00:01:28,290
->> Okay.
-
-34
-00:01:28,290 --> 00:01:31,380
->> Here for example, this is telling you that for each item there
-
-35
-00:01:31,380 --> 00:01:35,490
-is only one title. And that for each title, there are multiple items.
-
-36
-00:01:35,490 --> 00:01:36,490
->> So, star means many.
-
-37
-00:01:36,490 --> 00:01:37,716
->> Stars mean many, yeah.
-
-38
-00:01:37,716 --> 00:01:39,045
->> Okay, go you.
-
-39
-00:01:39,045 --> 00:01:42,321
->> Sorry that's kind of computer science lingo - we use the star
-
-40
-00:01:42,321 --> 00:01:45,500
-for that kind of stuff. And, similarly, for the patron, it's
-
-41
-00:01:45,500 --> 00:01:48,510
-telling me that, you know, each patron can have multiple, can
-
-42
-00:01:48,510 --> 00:01:52,550
-request multiple titles, and that the same title can be requested
-
-43
-00:01:52,550 --> 00:01:55,650
-by multiple patrons, which I think is the way the system works.
-
-44
-00:01:55,650 --> 00:01:59,080
->> Right. So except for these minor changes,
-
-45
-00:01:59,080 --> 00:02:01,850
-we already had a pretty good model in our hands, so
-
-46
-00:02:01,850 --> 00:02:04,620
-I think is a, we can finalize this and then just
-
-47
-00:02:04,620 --> 00:02:07,350
-move to the low level design and then implementation, and be
-
-48
-00:02:07,350 --> 00:02:07,970
-done with the system.
-
-49
-00:02:07,970 --> 00:02:08,979
->> Sounds good.
-
diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 152b961..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,230 --> 00:00:04,560

-In the last lesson, we talked about design, and we saw how difficult it can

-

-2

-00:00:04,560 --> 00:00:10,010

-be to come up with a good and effective design for a given software system. To

-

-3

-00:00:10,010 --> 00:00:12,620

-help address these difficulties, we will discuss

-

-4

-00:00:12,620 --> 00:00:16,560

-design patterns, which can support design activities by

-

-5

-00:00:16,560 --> 00:00:20,710

-providing general, reusable solutions to commonly occurring design

-

-6

-00:00:20,710 --> 00:00:25,410

-problems. Similar to architectural styles, design patterns can

-

-7

-00:00:25,410 --> 00:00:30,400

-help developers build better designed systems by reusing design solutions that

-

-8

-00:00:30,400 --> 00:00:33,730

-worked well in the past and by building on those solutions.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/10 - Choosing a Pattern - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/10 - Choosing a Pattern - lang_en_vs5.srt
deleted file mode 100644
index f273441..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/10 - Choosing a Pattern - lang_en_vs5.srt
+++ /dev/null
@@ -1,95 +0,0 @@
-1

-00:00:00,150 --> 00:00:03,200

-But with so many patterns, how do we choose a pattern? So

-

-2

-00:00:03,200 --> 00:00:05,970

-this is a possible approach that you can follow. First of all, you

-

-3

-00:00:05,970 --> 00:00:09,140

-want to make sure that you understand your design context. You understand

-

-4

-00:00:09,140 --> 00:00:12,800

-what you're designing and what are the issues involved with this design. What

-

-5

-00:00:12,800 --> 00:00:15,200

-are the problems that you need to solve. At this point, you

-

-6

-00:00:15,200 --> 00:00:17,160

-can examine the patterns catalog, or,if

-

-7

-00:00:17,160 --> 00:00:18,750

-you're already familiar with the catalog, just

-

-8

-00:00:18,750 --> 00:00:22,430

-think about the possible patterns that you could use. Once you identify

-

-9

-00:00:22,430 --> 00:00:25,440

-the patterns that you can use, you also want to study them and

-

-10

-00:00:25,440 --> 00:00:29,090

-study the related patterns. So normally if you look at any pattern catalog,

-

-11

-00:00:29,090 --> 00:00:32,229

-for each pattern there will also be a list of related patterns. So

-

-12

-00:00:32,229 --> 00:00:35,010

-you can also look at those to see whether maybe some of those

-

-13

-00:00:35,010 --> 00:00:38,370

-might be more applicable. And finally, once you identify the pattern that you

-

-14

-00:00:38,370 --> 00:00:41,360

-think is appropriate, you will apply that pattern. When you do that, just

-

-15

-00:00:41,360 --> 00:00:44,850

-be mindful that there are pitfalls in the use of patterns. One obvious

-

-16

-00:00:44,850 --> 00:00:47,490

-one is the fact that you might select the wrong pattern and make

-

-17

-00:00:47,490 --> 00:00:50,460

-your design worse instead of better. The second one is that if you

-

-18

-00:00:50,460 --> 00:00:52,560

-get too excited about patterns, then you

-

-19

-00:00:52,560 --> 00:00:54,850

-might be abusing patterns, so just using too

-

-20

-00:00:54,850 --> 00:00:56,370

-many patterns, and end up with a design

-

-21

-00:00:56,370 --> 00:00:58,980

-that is more complicated rather than less complicated.

-

-22

-00:00:58,980 --> 00:01:01,890

-So always be careful, spend the time to figure out which one is the right

-

-23

-00:01:01,890 --> 00:01:03,577

-pattern to apply, and make sure that you

-

-24

-00:01:03,577 --> 00:01:05,190

-don't use patterns that you don't actually need.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/11 - Choosing a Pattern Quiz - lang_en_vs4.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/11 - Choosing a Pattern Quiz - lang_en_vs4.srt
deleted file mode 100644
index 76a78e0..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/11 - Choosing a Pattern Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,780

-Now that we've discussed how to choose a pattern. Imagine that

-

-2

-00:00:02,780 --> 00:00:05,210

-you have to write a class that can have only one

-

-3

-00:00:05,210 --> 00:00:08,090

-instance. So to satisfy this requirement, I would like for you

-

-4

-00:00:08,090 --> 00:00:10,720

-to pick one of the design patterns that we discussed in

-

-5

-00:00:10,720 --> 00:00:14,580

-this lesson, and write the code here that satisfies that requirement.

-

-6

-00:00:14,580 --> 00:00:16,270

-And when you write the code, please make sure that your

-

-7

-00:00:16,270 --> 00:00:21,140

-class has only one method, without counting possible constructors, and that

-

-8

-00:00:21,140 --> 00:00:25,120

-the class is called Singleton. And write your class right here.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/12 - Choosing a Pattern Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/12 - Choosing a Pattern Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index c348a2c..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/12 - Choosing a Pattern Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,220 --> 00:00:01,750

-As we discussed in the class the right thing to

-

-2

-00:00:01,750 --> 00:00:05,050

-do here was to use the factory pattern. So here is

-

-3

-00:00:05,050 --> 00:00:07,910

-a possible code to solve the problem. Of course that there

-

-4

-00:00:07,910 --> 00:00:11,220

-are different possible solutions. So what we did for this code

-

-5

-00:00:11,220 --> 00:00:16,210

-was to first create a private, static, Singleton object called

-

-6

-00:00:16,210 --> 00:00:19,340

-instance, which is the one that will keep track of the

-

-7

-00:00:19,340 --> 00:00:22,250

-only instance that can be created on the class. Then we

-

-8

-00:00:22,250 --> 00:00:25,750

-define the default constructor, the constructor that doesn't take any parameter

-

-9

-00:00:25,750 --> 00:00:29,900

-as private. In this way other classes cannot create instances

-

-10

-00:00:29,900 --> 00:00:33,310

-of Singleton without calling our factory method, and finally we

-

-11

-00:00:33,310 --> 00:00:35,650

-create the factory method. And the factory method is very

-

-12

-00:00:35,650 --> 00:00:38,600

-simple. The method will first check whether an instance of

-

-13

-00:00:38,600 --> 00:00:40,970

-the class was already created. If it was created, it

-

-14

-00:00:40,970 --> 00:00:44,010

-would just return that instance. Otherwise, it will create a

-

-15

-00:00:44,010 --> 00:00:47,550

-new instance and assign it to that instance member variable

-

-16

-00:00:47,550 --> 00:00:50,960

-and then return the newly created instance. So with this code

-

-17

-00:00:50,960 --> 00:00:53,540

-you're guaranteed that other classes cannot bypass the factory

-

-18

-00:00:53,540 --> 00:00:56,530

-method, because the default constructor is private. And the that

-

-19

-00:00:56,530 --> 00:00:59,600

-the factory method will create one and only one instance

-

-20

-00:00:59,600 --> 00:01:02,020

-of the class, which is exactly what our requirements were.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/13 - Negative Design Patterns - lang_en_vs4.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/13 - Negative Design Patterns - lang_en_vs4.srt
deleted file mode 100644
index 6433019..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/13 - Negative Design Patterns - lang_en_vs4.srt
+++ /dev/null
@@ -1,51 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,210

-To conclude this lesson, I want to discuss the

-

-2

-00:00:02,210 --> 00:00:06,170

-concept of negative design patterns, that is, patterns that should

-

-3

-00:00:06,170 --> 00:00:09,600

-be avoided. Interestingly, negative patterns were also mentioned in

-

-4

-00:00:09,600 --> 00:00:12,950

-Christopher Alexander's book, so in the first formulation of patterns.

-

-5

-00:00:12,950 --> 00:00:16,219

-So negative design pattern are basically guidelines on how

-

-6

-00:00:16,219 --> 00:00:19,689

-not to do things. In consoles with patterns, the guidelines

-

-7

-00:00:19,689 --> 00:00:21,920

-on how to do things. So basically, what the negative

-

-8

-00:00:21,920 --> 00:00:25,170

-design patterns do is, they enable recurring design defects to

-

-9

-00:00:25,170 --> 00:00:28,070

-be avoided. And as we will see in this class extensively,

-

-10

-00:00:28,070 --> 00:00:30,080

-in mini-course four, negative patterns are

-

-11

-00:00:30,080 --> 00:00:33,380

-also called anti-patterns or bad smells,

-

-12

-00:00:33,380 --> 00:00:36,540

-or bad code smells. So in mini-course four we will see several

-

-13

-00:00:36,540 --> 00:00:39,480

-examples of bad smells and what we can do to eliminate them.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/2 - History of Design Patterns - lang_en_vs6.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/2 - History of Design Patterns - lang_en_vs6.srt
deleted file mode 100644
index 5fbb886..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/2 - History of Design Patterns - lang_en_vs6.srt
+++ /dev/null
@@ -1,179 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,780

-Let's start our decision of design patterns by looking

-

-2

-00:00:02,780 --> 00:00:05,280

-at the history of patterns. As you know, I like

-

-3

-00:00:05,280 --> 00:00:07,810

-to give this sort of historical perspective on how and

-

-4

-00:00:07,810 --> 00:00:10,600

-when concepts were defined. In this case, we have to

-

-5

-00:00:10,600 --> 00:00:14,830

-go back to 1977, when Christopher Alexander, an American professor

-

-6

-00:00:14,830 --> 00:00:18,300

-of architecture at UC Berkeley, introduces the idea of patterns,

-

-7

-00:00:18,300 --> 00:00:21,700

-successful solutions to problems, in his book called a Pattern

-

-8

-00:00:21,700 --> 00:00:25,640

-Language. The book contains about 250 patterns. And the idea

-

-9

-00:00:25,640 --> 00:00:27,700

-is that occupants of a building should be able

-

-10

-00:00:27,700 --> 00:00:30,110

-to design it. And the patterns in the book provide

-

-11

-00:00:30,110 --> 00:00:32,368

-a way to do that. And this idea of design

-

-12

-00:00:32,368 --> 00:00:35,964

-patterns, so, a formal way of documenting successful solutions to

-

-13

-00:00:35,964 --> 00:00:41,200

-problems, inspired several other disciplines. In particular, in 1987,

-

-14

-00:00:41,200 --> 00:00:44,810

-Ward Cunningham and Kent Beck leveraged this idea of Alexander's

-

-15

-00:00:44,810 --> 00:00:48,360

-patterns in the context of an object oriented language.

-

-16

-00:00:48,360 --> 00:00:50,840

-And in this specific the language was Smalltalk.

-

-17

-00:00:50,840 --> 00:00:52,666

-Some of you might know the language. So what Cunningham

-

-18

-00:00:54,492 --> 00:00:56,320

-and Beck did, was to create a 5 pattern

-

-19

-00:00:56,320 --> 00:00:59,880

-language for guiding novice Smalltalk programmers. So they did

-

-20

-00:00:59,880 --> 00:01:03,090

-an experiment and had several developers using their patterns, and

-

-21

-00:01:03,090 --> 00:01:06,330

-the experiment was extremely successful. The users were able to

-

-22

-00:01:06,330 --> 00:01:09,940

-create elegant designs using the provided patterns. And in case

-

-23

-00:01:09,940 --> 00:01:12,210

-you are interested in reading about it, Cunningham and Beck

-

-24

-00:01:12,210 --> 00:01:15,660

-reported the results in the article, Using Pattern Languages for

-

-25

-00:01:15,660 --> 00:01:17,940

-Object Oriented Programs, which was published at the

-

-26

-00:01:17,940 --> 00:01:21,854

-International Conference on Object Oriented Programming, Systems, Languages, and

-

-27

-00:01:21,854 --> 00:01:25,390

-Applications, also called OOPSLA, in 1987. At the

-

-28

-00:01:25,390 --> 00:01:28,480

-same time, Eric Gamma was working on his dissertation,

-

-29

-00:01:28,480 --> 00:01:31,030

-whose topic was the importance of patterns and

-

-30

-00:01:31,030 --> 00:01:34,430

-how to capture them. Between 1987 and 1992, there

-

-31

-00:01:34,430 --> 00:01:37,520

-were several workshops related to design patterns. And

-

-32

-00:01:37,520 --> 00:01:40,740

-in 1992, Jim Coplien compiled a catalog of C++

-

-33

-00:01:40,740 --> 00:01:43,140

-items, which are some sort of patterns, and

-

-34

-00:01:43,140 --> 00:01:45,130

-he listed this catalog of patterns in his

-

-35

-00:01:45,130 --> 00:01:48,720

-book, which was titled Advanced C++ Programming Styles

-

-36

-00:01:48,720 --> 00:01:52,952

-and Idioms. Finally, in 1993 and 1994, there were

-

-37

-00:01:52,952 --> 00:01:56,160

-several additional workshops focused on patterns. And this

-

-38

-00:01:56,160 --> 00:01:59,625

-workshop brought together many patterns folks, including these

-

-39

-00:01:59,625 --> 00:02:03,040

-4 guys, Erich Gamma, Richard Helm, Ralph Johnson,

-

-40

-00:02:03,040 --> 00:02:06,040

-and John Vlissides. These guys are also known as

-

-41

-00:02:06,040 --> 00:02:08,970

-the gang of 4. And the result of this collaboration was the

-

-42

-00:02:08,970 --> 00:02:11,840

-famous book Design Patterns: Elements of

-

-43

-00:02:11,840 --> 00:02:14,320

-Reusable Object Oriented Software. So this

-

-44

-00:02:14,320 --> 00:02:17,640

-is basically The Book on design patterns. If you want to buy

-

-45

-00:02:17,640 --> 00:02:19,780

-a book on design pattern, this is the one you should get.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/3 - Patterns Catalogue - lang_en_vs4.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/3 - Patterns Catalogue - lang_en_vs4.srt
deleted file mode 100644
index 764a309..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/3 - Patterns Catalogue - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,230 --> 00:00:03,380

-This book contains a patterns catalog which is

-

-2

-00:00:03,380 --> 00:00:06,725

-a number of design patterns classified by purpose. And

-

-3

-00:00:06,725 --> 00:00:09,122

-there are five main classes of patterns. There are

-

-4

-00:00:09,122 --> 00:00:11,890

-fundamental patterns which are the basic patterns. There are

-

-5

-00:00:11,890 --> 00:00:15,170

-creational patterns which are the patterns that support object

-

-6

-00:00:15,170 --> 00:00:18,290

-creation. Then there are structural patterns and these are

-

-7

-00:00:18,290 --> 00:00:22,090

-patterns that help compose objects, put objects together. The

-

-8

-00:00:22,090 --> 00:00:25,280

-next class of patterns are behavioral patterns and these

-

-9

-00:00:25,280 --> 00:00:28,840

-are patterns that are mostly focused on realizing interactions

-

-10

-00:00:28,840 --> 00:00:32,820

-among different objects. Finally, there are concurrency patterns and these

-

-11

-00:00:32,820 --> 00:00:36,400

-are patterns that support, as the name says, concurrency, so

-

-12

-00:00:36,400 --> 00:00:39,700

-they're more related to concurrency aspects. And for each of

-

-13

-00:00:39,700 --> 00:00:43,560

-these classes there are a number of specific patterns, and

-

-14

-00:00:43,560 --> 00:00:46,130

-here I'm just listing some of them. Clearly we cannot

-

-15

-00:00:46,130 --> 00:00:48,740

-cover in one lesson all of these patterns, but what

-

-16

-00:00:48,740 --> 00:00:50,440

-I want to do is to cover at least a few

-

-17

-00:00:50,440 --> 00:00:52,670

-of those to give an idea of what patterns are and

-

-18

-00:00:52,670 --> 00:00:55,430

-how they can be used. In particular, we will see in

-

-19

-00:00:55,430 --> 00:00:59,200

-detail the Factory Method Pattern and the Strategy Pattern. And we

-

-20

-00:00:59,200 --> 00:01:01,590

-will also discuss a few more patterns at a higher level.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/4 - Pattern Format - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/4 - Pattern Format - lang_en_vs5.srt
deleted file mode 100644
index 7df86c0..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/4 - Pattern Format - lang_en_vs5.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,180 --> 00:00:02,711

-So let's start by seeing how patterns are defined. So

-

-2

-00:00:02,711 --> 00:00:05,620

-what is the format of the pattern definitions. If we look

-

-3

-00:00:05,620 --> 00:00:08,000

-at the Gang of Four's book we can see that these

-

-4

-00:00:08,000 --> 00:00:11,630

-definitions contain a lot of information. In fact, what I'm listing

-

-5

-00:00:11,630 --> 00:00:14,980

-here is just a subset of this information. In this lesson,

-

-6

-00:00:14,980 --> 00:00:17,510

-what I want to do is to focus on four essential

-

-7

-00:00:17,510 --> 00:00:21,480

-elements of a design pattern. It's name, the intent which is

-

-8

-00:00:21,480 --> 00:00:25,270

-the goal of the pattern. The pattern's applicability which is the

-

-9

-00:00:25,270 --> 00:00:28,040

-list of situations or context in which the

-

-10

-00:00:28,040 --> 00:00:31,560

-pattern is applicable. I also want to cover the structure

-

-11

-00:00:31,560 --> 00:00:34,700

-and participants. Which is the static model that describes

-

-12

-00:00:34,700 --> 00:00:37,870

-the elements, so normally the classes or the object

-

-13

-00:00:37,870 --> 00:00:39,900

-involved in the pattern. In addition to that

-

-14

-00:00:39,900 --> 00:00:41,400

-the structure also describes

-

-15

-00:00:41,400 --> 00:00:44,420

-the relationships, responsibilities and collaborations

-

-16

-00:00:44,420 --> 00:00:47,264

-among these classes or objects. Finally what I want

-

-17

-00:00:47,264 --> 00:00:50,560

-to cover is sample code. So examples that illustrate

-

-18

-00:00:50,560 --> 00:00:51,490

-the use of patterns.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt
deleted file mode 100644
index c7ebddd..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/5 - Factory Method Pattern - lang_en_vs5.srt
+++ /dev/null
@@ -1,179 +0,0 @@
-1

-00:00:00,012 --> 00:00:02,350

-Let's now look at the first design pattern that we

-

-2

-00:00:02,350 --> 00:00:05,700

-will discuss, the factory method pattern. And I'm going to start

-

-3

-00:00:05,700 --> 00:00:09,220

-by discussing the intent of the pattern and its applicability.

-

-4

-00:00:09,220 --> 00:00:12,210

-As far as the intent is concerned, the factory method pattern

-

-5

-00:00:12,210 --> 00:00:16,690

-allows for creating objects without specifying their class, by invoking

-

-6

-00:00:16,690 --> 00:00:19,370

-what we call a factory method. And what that is, is

-

-7

-00:00:19,370 --> 00:00:22,680

-a method whose main goal is to create class instances.

-

-8

-00:00:22,680 --> 00:00:25,510

-So when is this pattern useful? So when is it applicable?

-

-9

-00:00:25,510 --> 00:00:28,080

-For example, it is applicable in cases in which a class

-

-10

-00:00:28,080 --> 00:00:31,890

-cannot anticipate the type of object it must create. That is,

-

-11

-00:00:31,890 --> 00:00:34,800

-the type of an object is not known at compile time,

-

-12

-00:00:34,800 --> 00:00:37,800

-is not known until the code runs. A typical example of

-

-13

-00:00:37,800 --> 00:00:40,500

-this, are frameworks. So if you ever used a framework, you

-

-14

-00:00:40,500 --> 00:00:44,280

-will know that, normally, frameworks only know about interfaces and abstract

-

-15

-00:00:44,280 --> 00:00:47,450

-classes. So the exact type of the objects of these classes

-

-16

-00:00:47,450 --> 00:00:50,840

-is only known at runtime. The second case in which the factory

-

-17

-00:00:50,840 --> 00:00:53,835

-method pattern is applicable, is when a class wants its

-

-18

-00:00:53,835 --> 00:00:57,160

-subclasses to specify the type of objects it creates. And we'll

-

-19

-00:00:57,160 --> 00:00:59,920

-see an example of this in a minute. Finally, factory

-

-20

-00:00:59,920 --> 00:01:03,580

-method patterns are applicable when a class needs control over the

-

-21

-00:01:03,580 --> 00:01:06,760

-creation of its objects. And in this case, one possible

-

-22

-00:01:06,760 --> 00:01:09,380

-example is when there is a limit on the number of

-

-23

-00:01:09,380 --> 00:01:12,930

-objects that can be created. Special example, it's a singleton. If

-

-24

-00:01:12,930 --> 00:01:15,840

-you're familiar with a singleton, a singleton is a class for

-

-25

-00:01:15,840 --> 00:01:18,930

-which only one instance can be created. The factory method pattern

-

-26

-00:01:18,930 --> 00:01:21,760

-is perfect in these cases, because it allows to control how many

-

-27

-00:01:21,760 --> 00:01:24,640

-objects get created. So in this case, it would allow the creation

-

-28

-00:01:24,640 --> 00:01:27,290

-only of a single object. And from the second time that it

-

-29

-00:01:27,290 --> 00:01:30,040

-is invoked, it will just return the object that was previously

-

-30

-00:01:30,040 --> 00:01:33,700

-created. Now let's go ahead and see how this pattern actually works,

-

-31

-00:01:33,700 --> 00:01:37,100

-and let's do that by discussing the structure and the participants for

-

-32

-00:01:37,100 --> 00:01:41,330

-the pattern. The structure that is represented here, using the UML notation,

-

-33

-00:01:41,330 --> 00:01:45,530

-includes three classes, the Creator, the ConcreteCreator,

-

-34

-00:01:45,530 --> 00:01:48,000

-and the Product. The Creator provides the

-

-35

-00:01:48,000 --> 00:01:50,710

-interface for the factory method. So this

-

-36

-00:01:50,710 --> 00:01:53,200

-here, is the interface for the factory method

-

-37

-00:01:53,200 --> 00:01:55,950

-that, when invoked, returns an object of

-

-38

-00:01:55,950 --> 00:01:59,440

-type Product. The ConcreteCreator provides the actual

-

-39

-00:01:59,440 --> 00:02:02,350

-method for creating the Product. So this

-

-40

-00:02:02,350 --> 00:02:06,170

-method is a concrete implementation of this interface.

-

-41

-00:02:06,170 --> 00:02:10,630

-Finally, the Product is the object created by the factory method. So

-

-42

-00:02:10,630 --> 00:02:12,350

-summarizing, we have the interface for

-

-43

-00:02:12,350 --> 00:02:14,300

-the factory method, the actual implementation of

-

-44

-00:02:14,300 --> 00:02:17,540

-the summary method, and the object that is created by the factory method,

-

-45

-00:02:17,540 --> 00:02:21,020

-when it is invoked. So let's look at an example of this pattern.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/6 - Factory Method Pattern Example - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/6 - Factory Method Pattern Example - lang_en_vs5.srt
deleted file mode 100644
index 2812c39..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/6 - Factory Method Pattern Example - lang_en_vs5.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,220 --> 00:00:03,260

-The example I'm going to use consists of a class called

-

-2

-00:00:03,260 --> 00:00:07,380

-ImageReaderFactory which provides the factory method which is this one;

-

-3

-00:00:07,380 --> 00:00:10,250

-createImageReader. As you can see the method takes an InputStream

-

-4

-00:00:10,250 --> 00:00:13,570

-as input and returns an object of type ImageReader, and it's

-

-5

-00:00:13,570 --> 00:00:15,645

-static so that we can invoke it even if we

-

-6

-00:00:15,645 --> 00:00:18,390

-don't have an instance of the ImageReaderFactory. So what does the

-

-7

-00:00:18,390 --> 00:00:22,275

-method do? Well the method first invokes, getImageType, passing the

-

-8

-00:00:22,275 --> 00:00:25,780

-InputStream as a parameter and this method figures out the type

-

-9

-00:00:25,780 --> 00:00:28,820

-of the image that is stored in this Inputstream and it's

-

-10

-00:00:28,820 --> 00:00:32,740

-an integer. Then, based on the value of this integer, the

-

-11

-00:00:32,740 --> 00:00:35,352

-method does one of several things. If the image type is

-

-12

-00:00:35,352 --> 00:00:38,970

-a GIF, it will invoke the constructor for GifReader passing the

-

-13

-00:00:38,970 --> 00:00:41,610

-stream as a parameter. And what will happen is that the

-

-14

-00:00:41,610 --> 00:00:44,450

-GIF reader will read a GIF from the stream, create a

-

-15

-00:00:44,450 --> 00:00:47,887

-corresponding object and return it. So in this case, the ImageReader

-

-16

-00:00:47,887 --> 00:00:51,460

-object return will be the object representing a GIF as appropriate.

-

-17

-00:00:51,460 --> 00:00:54,610

-Similarly, if the image type is JPEG, then the method will

-

-18

-00:00:54,610 --> 00:00:58,579

-invoke the constructor for JPEG Reader and in this case, this constructor

-

-19

-00:00:58,579 --> 00:01:01,981

-will read from the stream a JPEG, create a corresponding object

-

-20

-00:01:01,981 --> 00:01:05,640

-and return it. And so on for different types of images. So

-

-21

-00:01:05,640 --> 00:01:07,880

-why is this a situation in which it is appropriate to

-

-22

-00:01:07,880 --> 00:01:11,100

-use the factory method pattern? One, because it corresponds exactly to the

-

-23

-00:01:11,100 --> 00:01:14,250

-cases that we saw before, of applicability. This is a case

-

-24

-00:01:14,250 --> 00:01:16,560

-in which we don't know the type of the object that we

-

-25

-00:01:16,560 --> 00:01:20,080

-need to create until we run the code, because it depends

-

-26

-00:01:20,080 --> 00:01:22,530

-on the value of the InputStream. It depends on the content

-

-27

-00:01:22,530 --> 00:01:25,590

-of the InputStream. So, until we read the InputStream, we cannot

-

-28

-00:01:25,590 --> 00:01:28,380

-figure out whether we need to create a GIF, a JPEG or

-

-29

-00:01:28,380 --> 00:01:30,780

-some other type of image. So in this case, we want to

-

-30

-00:01:30,780 --> 00:01:33,630

-do, we want to simply delegate to this classes the creation of

-

-31

-00:01:33,630 --> 00:01:35,610

-the object, once we know what type of object needs to

-

-32

-00:01:35,610 --> 00:01:38,790

-be created. So perfect example of application of a factory method pattern.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt
deleted file mode 100644
index 288b8d6..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/7 - Strategy Pattern - lang_en_vs5.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,230 --> 00:00:02,110

-The second pattern I want to discuss is the

-

-2

-00:00:02,110 --> 00:00:05,050

-strategy pattern, which provides a way to configure a

-

-3

-00:00:05,050 --> 00:00:07,900

-class with one of many behaviors. What does that

-

-4

-00:00:07,900 --> 00:00:11,040

-mean? Well, more precisely, this pattern allows for defining

-

-5

-00:00:11,040 --> 00:00:15,330

-a family of algorithms, encapsulating them into separate classes,

-

-6

-00:00:15,330 --> 00:00:17,900

-so each algorithm in one class, and making these

-

-7

-00:00:17,900 --> 00:00:21,490

-classes interchangeable, but providing a common interface for all

-

-8

-00:00:21,490 --> 00:00:25,350

-the encapsulated algorithms. So in essence, the intent of

-

-9

-00:00:25,350 --> 00:00:29,250

-a strategy pattern is to allow for switching between

-

-10

-00:00:29,250 --> 00:00:33,490

-different algorithms for accomplishing a given task. For example, imagine

-

-11

-00:00:33,490 --> 00:00:36,610

-having different sorting algorithms with different space or time

-

-12

-00:00:36,610 --> 00:00:38,800

-tradeoffs. You might want to be able to have them

-

-13

-00:00:38,800 --> 00:00:42,670

-all available and use different ones in different situations.

-

-14

-00:00:42,670 --> 00:00:44,820

-And this pattern is applicable not only when we have

-

-15

-00:00:44,820 --> 00:00:47,260

-different variants of an algorithm, but also when we

-

-16

-00:00:47,260 --> 00:00:51,690

-have many related classes that differ only in their behavior.

-

-17

-00:00:51,690 --> 00:00:53,640

-So let's get more concrete and see how this is

-

-18

-00:00:53,640 --> 00:00:55,960

-done. And I'm going to do it as before, by

-

-19

-00:00:55,960 --> 00:00:59,700

-discussing the structure and the participants for this strategy pattern.

-

-20

-00:00:59,700 --> 00:01:02,540

-In this case, we have 3 types of participants for this

-

-21

-00:01:02,540 --> 00:01:07,210

-pattern, the context, the algorithm, and the concrete strategies. There

-

-22

-00:01:07,210 --> 00:01:09,580

-can be as many as the number of behaviors that

-

-23

-00:01:09,580 --> 00:01:12,300

-I need to implement. So, let's see what those are.

-

-24

-00:01:12,300 --> 00:01:16,690

-The context is the interface to the outside world. It maintains

-

-25

-00:01:16,690 --> 00:01:19,180

-a reference to the current algorithm and allows for

-

-26

-00:01:19,180 --> 00:01:22,860

-updating this reference at run time. So, basically the outside

-

-27

-00:01:22,860 --> 00:01:26,370

-world will invoke the functionality provided by the different algorithms,

-

-28

-00:01:26,370 --> 00:01:29,170

-by using this interface. And depending on which algorithm is

-

-29

-00:01:29,170 --> 00:01:31,640

-currently selected, that's the one that will be executed when

-

-30

-00:01:31,640 --> 00:01:35,920

-the functionality is involved. The algorithm, also called the strategy,

-

-31

-00:01:35,920 --> 00:01:37,970

-so that's where the pattern gets its name, Is the

-

-32

-00:01:37,970 --> 00:01:42,130

-common interface for the different algorithims. So all the algorithms

-

-33

-00:01:42,130 --> 00:01:46,690

-implement this interface. Finally, the concrete strategies are the

-

-34

-00:01:46,690 --> 00:01:49,920

-actual implementations of the algorithms. So if I have 10

-

-35

-00:01:49,920 --> 00:01:53,030

-different variants of my algorithm, I will implement 10 different

-

-36

-00:01:53,030 --> 00:01:56,550

-concrete strategies. They will all be implementations of this interface.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/8 - Strategy Pattern Example & Demo - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/8 - Strategy Pattern Example & Demo - lang_en_vs5.srt
deleted file mode 100644
index 6d298d0..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/8 - Strategy Pattern Example & Demo - lang_en_vs5.srt
+++ /dev/null
@@ -1,511 +0,0 @@
-1

-00:00:00,130 --> 00:00:03,320

-Now let's see how this whole thing works in practice by

-

-2

-00:00:03,320 --> 00:00:06,800

-using an example. We're going to consider a program that takes as

-

-3

-00:00:06,800 --> 00:00:10,450

-input a text file and produce it as output, a filtered

-

-4

-00:00:10,450 --> 00:00:14,170

-file. So basically it outputs a subset of the content of

-

-5

-00:00:14,170 --> 00:00:16,928

-this text file based on some filter. And we're going to have

-

-6

-00:00:16,928 --> 00:00:19,440

-four different types of filters. So the first one is

-

-7

-00:00:19,440 --> 00:00:21,680

-not filtering which means that the whole content of the text

-

-8

-00:00:21,680 --> 00:00:25,320

-file will be produced on the output. The second filter will output

-

-9

-00:00:25,320 --> 00:00:27,990

-only words that starts with t. So you'll take the text file

-

-10

-00:00:27,990 --> 00:00:30,540

-and simply ignore all of the words that do not start with

-

-11

-00:00:30,540 --> 00:00:33,130

-t. So in the output we'll have only those words that starts

-

-12

-00:00:33,130 --> 00:00:36,030

-with letter t. The third filter will produce in the output only

-

-13

-00:00:36,030 --> 00:00:39,180

-words that are longer than five characters. So all the other words

-

-14

-00:00:39,180 --> 00:00:43,740

-will be simply disregarded. And finally, the four filter will produce as

-

-15

-00:00:43,740 --> 00:00:47,630

-output only words in the text file that are palindromes, and in

-

-16

-00:00:47,630 --> 00:00:50,590

-case you don't know what a palindrome is, a palindrome is a word

-

-17

-00:00:50,590 --> 00:00:52,700

-that is the same whether you read it from left

-

-18

-00:00:52,700 --> 00:00:55,800

-to right or from right to left. For example, the

-

-19

-00:00:55,800 --> 00:00:58,480

-word kayak, you can read it in this direction, or

-

-20

-00:00:58,480 --> 00:01:00,740

-in this direction, and it's exactly the same word. So

-

-21

-00:01:00,740 --> 00:01:03,560

-let's see how this program could be implemented using a

-

-22

-00:01:03,560 --> 00:01:05,980

-strategy pattern. And let's do it for real as a

-

-23

-00:01:05,980 --> 00:01:10,100

-demo. What we're looking at here is the editor page

-

-24

-00:01:10,100 --> 00:01:15,520

-for Eclipse, open with the strategy pattern implementation for our example.

-

-25

-00:01:15,520 --> 00:01:17,130

-So what I'm going to do is that, I'm going to look at a

-

-26

-00:01:17,130 --> 00:01:20,310

-different part of implementation. And you will see that, you know, despite

-

-27

-00:01:20,310 --> 00:01:23,420

-the fact that it's slightly longer, it's really fairly simple, it's kind

-

-28

-00:01:23,420 --> 00:01:26,230

-of a straightforward implementation of what we just saw. As I just

-

-29

-00:01:26,230 --> 00:01:29,820

-said, what we are doing is basically building the strategy patterns that

-

-30

-00:01:29,820 --> 00:01:34,330

-allows for changing the strategies with which we're filtering an input file.

-

-31

-00:01:34,330 --> 00:01:37,380

-And we have different strategies, we'll look at those in detail, and

-

-32

-00:01:37,380 --> 00:01:41,050

-we said that the three participants for this pattern are the context,

-

-33

-00:01:41,050 --> 00:01:43,650

-the algorithm, which is the general interface and then the concrete

-

-34

-00:01:43,650 --> 00:01:47,270

-strategies, which are the concrete implementations of this algorithm. So let's

-

-35

-00:01:47,270 --> 00:01:49,790

-start by looking at the context. Which is this class here.

-

-36

-00:01:49,790 --> 00:01:52,960

-And as you can see it contains a reference at the current

-

-37

-00:01:52,960 --> 00:01:56,240

-strategy. We call this the check strategy, which is basically our

-

-38

-00:01:56,240 --> 00:01:59,910

-filter, and when the context is created by default it sets a

-

-39

-00:01:59,910 --> 00:02:02,890

-strategy to the old strategy. The old strategy is the one

-

-40

-00:02:02,890 --> 00:02:06,380

-that accepts all the input, so basically it doesn't filter out anything.

-

-41

-00:02:06,380 --> 00:02:08,320

-And we said that the context is the interface to the

-

-42

-00:02:08,320 --> 00:02:10,889

-outside world, right? So it has to provide the outside world

-

-43

-00:02:10,889 --> 00:02:14,140

-with a way of selecting the strategy, the specific algorithm to

-

-44

-00:02:14,140 --> 00:02:16,850

-be used, and it does that in this case by providing

-

-45

-00:02:16,850 --> 00:02:21,360

-this change strategy method. This method takes a strategy as input,

-

-46

-00:02:21,360 --> 00:02:24,930

-and simply replaces the current strategy with the one specified as

-

-47

-00:02:24,930 --> 00:02:28,035

-a parameter. And at this point, the context also will perform

-

-48

-00:02:28,035 --> 00:02:31,830

-the filtering. The filtering is pretty straightforward, so what it does is

-

-49

-00:02:31,830 --> 00:02:34,620

-that it opens a file that is passed as a parameter

-

-50

-00:02:34,620 --> 00:02:37,450

-so that this the file, the input file to be filtered. And

-

-51

-00:02:37,450 --> 00:02:40,560

-then it reads the file line by line and then splits

-

-52

-00:02:40,560 --> 00:02:43,620

-the lines into its composing words and then for each word in

-

-53

-00:02:43,620 --> 00:02:46,480

-each line, what it will do, it will basically invoke the

-

-54

-00:02:46,480 --> 00:02:50,270

-check method in the current strategy, which is basically the filtering method

-

-55

-00:02:50,270 --> 00:02:53,580

-and if the check method returns true, which basically means that

-

-56

-00:02:53,580 --> 00:02:57,150

-the word should be printed, it prints the word. Otherwise, it'll just

-

-57

-00:02:57,150 --> 00:03:00,480

-skip it. So basically the filter will return false for all the

-

-58

-00:03:00,480 --> 00:03:03,470

-words that have to be filtered out. Okay? This is the basic

-

-59

-00:03:03,470 --> 00:03:06,770

-way in which context works. Let's see how this is used in

-

-60

-00:03:06,770 --> 00:03:10,660

-our main method. The main method simply creates the context, reads the input file

-

-61

-00:03:10,660 --> 00:03:12,910

-from the arguments, and then what he does is simply as a

-

-62

-00:03:12,910 --> 00:03:16,720

-demonstration, it will perform the filtering using all the different filters. So

-

-63

-00:03:16,720 --> 00:03:19,310

-starting from the default one, which is the one that basically doesn't

-

-64

-00:03:19,310 --> 00:03:22,150

-do any filtering that reports all words, then it will switch to the

-

-65

-00:03:22,150 --> 00:03:25,400

-algorithm, that only considers the words that start with t, and

-

-66

-00:03:25,400 --> 00:03:28,880

-it will do that by invoking a change strategy and passing this

-

-67

-00:03:28,880 --> 00:03:30,890

-strategy as the argument, and then

-

-68

-00:03:30,890 --> 00:03:32,760

-performing the actual filtering through context.

-

-69

-00:03:32,760 --> 00:03:35,040

-And it will do exactly the same for the strategy that only

-

-70

-00:03:35,040 --> 00:03:37,540

-prints words that are longer than five and the one that

-

-71

-00:03:37,540 --> 00:03:40,460

-only prints words that are palindromes. So now let's look at the

-

-72

-00:03:40,460 --> 00:03:44,090

-actual algorithm. This is the interface, the algorithm interface. And you can

-

-73

-00:03:44,090 --> 00:03:47,080

-see that the only thing that the interface provides is this method,

-

-74

-00:03:47,080 --> 00:03:49,760

-which is the check method, that takes a string as input and will

-

-75

-00:03:49,760 --> 00:03:52,470

-return a boolean. So, basically, it's the boolean that we were seeing before.

-

-76

-00:03:52,470 --> 00:03:55,010

-The one that is true for the words that have to be printed

-

-77

-00:03:55,010 --> 00:03:57,490

-and false for the ones that have to be filtered out. Now, we have

-

-78

-00:03:57,490 --> 00:04:01,250

-all the different implementations of the algorithm, the simplest one is the all

-

-79

-00:04:01,250 --> 00:04:05,110

-algorithm, the simple return is always true, so all the words will be printed.

-

-80

-00:04:05,110 --> 00:04:08,740

-The second one starts with t, and again, without looking at the details

-

-81

-00:04:08,740 --> 00:04:10,660

-of implementations that don't really matter, what

-

-82

-00:04:10,660 --> 00:04:12,390

-it does is basically check that

-

-83

-00:04:12,390 --> 00:04:15,111

-the first character is t, and returns true in that case and

-

-84

-00:04:15,111 --> 00:04:17,720

-false otherwise. Similarly, for the LongerThan5

-

-85

-00:04:17,720 --> 00:04:19,380

-algorithm, also in this case, this

-

-86

-00:04:19,380 --> 00:04:23,000

-will implement the check strategy interface, and the check will be performed

-

-87

-00:04:23,000 --> 00:04:25,980

-by checking that the word is longer than five characters and returning

-

-88

-00:04:25,980 --> 00:04:29,440

-true in that case and false otherwise. And finally the Palindrome check

-

-89

-00:04:29,440 --> 00:04:32,240

-is a little more complicated, but basically it just checks whether the

-

-90

-00:04:32,240 --> 00:04:35,190

-word is a Palindrome and returns true in that case. Okay, so

-

-91

-00:04:35,190 --> 00:04:37,950

-as I said, it doesn't really matter too much what is the specific

-

-92

-00:04:37,950 --> 00:04:40,630

-implementations of these matters. What matters is that we have

-

-93

-00:04:40,630 --> 00:04:44,150

-a general interface for the algorithm and then any different concrete

-

-94

-00:04:44,150 --> 00:04:48,130

-implementations of the algorithm that implement different strategies. So again,

-

-95

-00:04:48,130 --> 00:04:50,730

-this allows you to change the behavior of your class without

-

-96

-00:04:50,730 --> 00:04:53,420

-changing class. So we have this context class that does

-

-97

-00:04:53,420 --> 00:04:57,015

-different things when the filter method in invoked, depending on what

-

-98

-00:04:57,015 --> 00:04:59,930

-is the current strategy. So the behavior of the class can

-

-99

-00:04:59,930 --> 00:05:03,310

-change dynamically, and it changes dynamically every time that we change

-

-100

-00:05:03,310 --> 00:05:06,300

-the strategy. At this point, the way this whole thing works should

-

-101

-00:05:06,300 --> 00:05:08,430

-be clear, so what we're going to do is that we're going to go to

-

-102

-00:05:08,430 --> 00:05:12,010

-our console, and we're actually going to run the strategy pattern and see

-

-103

-00:05:12,010 --> 00:05:15,710

-what happens. So here I have a file, it's called foo.txt. And if

-

-104

-00:05:15,710 --> 00:05:18,290

-we look at the content of foo, you can see that it

-

-105

-00:05:18,290 --> 00:05:21,190

-says that this is just a test to assess how well this program

-

-106

-00:05:21,190 --> 00:05:24,430

-performs when used on files of text. And since it checks for

-

-107

-00:05:24,430 --> 00:05:28,560

-palindromes, we will also insert one such word, level. Level is a palindrome,

-

-108

-00:05:28,560 --> 00:05:31,042

-because you can read it from both sides. Okay, so let's

-

-109

-00:05:31,042 --> 00:05:33,657

-see what happens when we run our code. So we're going to

-

-110

-00:05:33,657 --> 00:05:36,900

-run java pattern.strategy.StrategyPattern which is

-

-111

-00:05:36,900 --> 00:05:38,550

-our class, and we going to fetch

-

-112

-00:05:38,550 --> 00:05:41,460

-foo.txt as an input, and let's go back to the beginning

-

-113

-00:05:41,460 --> 00:05:43,980

-of the output to see what happened exactly. You can see

-

-114

-00:05:43,980 --> 00:05:48,040

-here that for the default strategy, which was the old strategy,

-

-115

-00:05:48,040 --> 00:05:50,810

-the whole file is printed, so every word is printed. This

-

-116

-00:05:50,810 --> 00:05:53,485

-is just a test to assess and so on and so forth,

-

-117

-00:05:53,485 --> 00:05:57,290

-as expected. For the filter that only prints words that

-

-118

-00:05:57,290 --> 00:06:00,230

-start with t, only words that start with t are printed,

-

-119

-00:06:00,230 --> 00:06:04,180

-again, as expected. Similarly, for the filter that only prints words

-

-120

-00:06:04,180 --> 00:06:06,970

-that are longer than 5, and finally for the one that prints

-

-121

-00:06:06,970 --> 00:06:09,540

-palindromes. And here you can see that we actually have two

-

-122

-00:06:09,540 --> 00:06:12,410

-because the way in which this is implemented we'll also consider

-

-123

-00:06:12,410 --> 00:06:15,300

-single letter words as palindromes because you can read them from

-

-124

-00:06:15,300 --> 00:06:18,450

-both sides. But you definitely will also have level in the output.

-

-125

-00:06:18,450 --> 00:06:21,040

-And in case you want to play with this code yourself, I

-

-126

-00:06:21,040 --> 00:06:24,600

-have made this code and also the implementation for examples of other

-

-127

-00:06:24,600 --> 00:06:28,440

-design partners available as a compressed archive. And the archive is accessible

-

-128

-00:06:28,440 --> 00:06:31,120

-through a URL that is provided in the notes for the cost.

diff --git a/usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt b/usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt
deleted file mode 100644
index 756f38f..0000000
--- a/usth/ICT2.7/P3L3 Design Patterns Subtitles/9 - Other Common Patterns - lang_en_vs5.srt
+++ /dev/null
@@ -1,295 +0,0 @@
-1

-00:00:00,060 --> 00:00:03,460

-Before concluding this lesson, let's look at a few more patterns. And

-

-2

-00:00:03,460 --> 00:00:05,880

-although it will take too long to cover them in detail, I

-

-3

-00:00:05,880 --> 00:00:08,986

-would like to at least mention and quickly discuss a few more

-

-4

-00:00:08,986 --> 00:00:12,080

-of these more commonly-used patterns. In fact, some of the patterns that

-

-5

-00:00:12,080 --> 00:00:15,400

-I will discuss, you might have used yourself. Maybe without knowing their

-

-6

-00:00:15,400 --> 00:00:18,300

-name or the fact that they were design patterns. So let's start

-

-7

-00:00:18,300 --> 00:00:21,660

-with a Visitor pattern, which is a way of separating an algorithm

-

-8

-00:00:21,660 --> 00:00:25,150

-from an object structure on which it operates. And a practical result

-

-9

-00:00:25,150 --> 00:00:28,010

-of this separation is the ability to add the new operation

-

-10

-00:00:28,010 --> 00:00:31,680

-to exist in object structures, without modifying the structures. So, basically

-

-11

-00:00:31,680 --> 00:00:34,540

-what this pattern does, is to allow for defining and easily

-

-12

-00:00:34,540 --> 00:00:37,870

-modifying set of operations to perform on the objects of the collection.

-

-13

-00:00:37,870 --> 00:00:40,570

-And the typical usage of this is, for example, when you're

-

-14

-00:00:40,570 --> 00:00:43,140

-visiting a graph, or a set of objects, and you want

-

-15

-00:00:43,140 --> 00:00:46,090

-to perform some operations on these objects. By using a visitor

-

-16

-00:00:46,090 --> 00:00:48,410

-pattern, you can decouple the operation

-

-17

-00:00:48,410 --> 00:00:50,830

-from the objects. Although not straightforward,

-

-18

-00:00:50,830 --> 00:00:53,360

-this pattern is very, very useful. So, I really encourage you

-

-19

-00:00:53,360 --> 00:00:56,060

-to look at it in more detail and get familiar with it.

-

-20

-00:00:56,060 --> 00:00:59,040

-The second pattern I want to mention is the decorator pattern.

-

-21

-00:00:59,040 --> 00:01:02,820

-The decorator pattern is basically a wrapper that adds functionality to a

-

-22

-00:01:02,820 --> 00:01:05,030

-class. So the way in which it works, is that you

-

-23

-00:01:05,030 --> 00:01:08,230

-will take a class, you will build a class that basically wraps

-

-24

-00:01:08,230 --> 00:01:12,250

-this class. So it reproduces the functionality of the original class, but

-

-25

-00:01:12,250 --> 00:01:15,900

-it also adds some functionality. And for all the functionality that was

-

-26

-00:01:15,900 --> 00:01:18,750

-already in the original class, it will simply invoke this

-

-27

-00:01:18,750 --> 00:01:21,080

-functionality and for the new one, you will implement it

-

-28

-00:01:21,080 --> 00:01:24,510

-using the services of the class. And a nice property

-

-29

-00:01:24,510 --> 00:01:26,760

-of the decorator pattern is that it's stackable. So you can

-

-30

-00:01:26,760 --> 00:01:30,210

-add decorators on decorators on decorators, and further increase the

-

-31

-00:01:30,210 --> 00:01:34,052

-functionality provided by your class. The iterator is another very

-

-32

-00:01:34,052 --> 00:01:37,810

-commonly-used pattern. And, you probably use this one yourself because,

-

-33

-00:01:37,810 --> 00:01:41,090

-it's also part of many standard libraries. What the iterator allows

-

-34

-00:01:41,090 --> 00:01:44,220

-you to do, is basically to access elements of a collection

-

-35

-00:01:44,220 --> 00:01:47,490

-without knowing the underlying representation. So the iterator will allow you

-

-36

-00:01:47,490 --> 00:01:50,630

-to just go through a set of objects without worrying about

-

-37

-00:01:50,630 --> 00:01:53,200

-how the objects are stored. So you basically just ask the

-

-38

-00:01:53,200 --> 00:01:55,810

-iterator to give you the first object, the next object and

-

-39

-00:01:55,810 --> 00:02:00,130

-so on. Another very commonly-used pattern is the observer pattern. And

-

-40

-00:02:00,130 --> 00:02:02,650

-this pattern is very useful when you have an object of

-

-41

-00:02:02,650 --> 00:02:06,190

-interest and a set of other objects that are interested in

-

-42

-00:02:06,190 --> 00:02:09,240

-the changes that might occur in this first object. So

-

-43

-00:02:09,240 --> 00:02:12,690

-what the observer pattern allows you to do is to register

-

-44

-00:02:12,690 --> 00:02:15,460

-these objects, so that they let the system know that

-

-45

-00:02:15,460 --> 00:02:18,690

-they're interested in changes in this first object. And then, every

-

-46

-00:02:18,690 --> 00:02:20,840

-time that there is a change, these other objects will

-

-47

-00:02:20,840 --> 00:02:23,030

-be automatically notified. So basically,

-

-48

-00:02:23,030 --> 00:02:25,290

-the observer pattern allows for notifying

-

-49

-00:02:25,290 --> 00:02:29,310

-dependents when an object of interest changes. If you want

-

-50

-00:02:29,310 --> 00:02:32,020

-an example of this, just think about the file system and

-

-51

-00:02:32,020 --> 00:02:35,870

-imagine having a folder. All the views of this folder will

-

-52

-00:02:35,870 --> 00:02:37,970

-want to be notified every time that there's a change in

-

-53

-00:02:37,970 --> 00:02:40,720

-the folder because they need to refresh. So instead of continuously

-

-54

-00:02:40,720 --> 00:02:44,390

-checking the state of the folder, they will just register and basically

-

-55

-00:02:44,390 --> 00:02:47,430

-say, hey, we're interested in knowing when something changes in this

-

-56

-00:02:47,430 --> 00:02:50,320

-folder. And when something changes in the folder, they will be automatically

-

-57

-00:02:50,320 --> 00:02:53,300

-notified. So it will be some sort of a push notification

-

-58

-00:02:53,300 --> 00:02:56,590

-instead of a pull notification, if you are familiar with that terminology.

-

-59

-00:02:56,590 --> 00:03:00,020

-Finally the proxy pattern is a pattern in which a surrogate

-

-60

-00:03:00,020 --> 00:03:04,370

-controls access to an object. In other words, we have our object,

-

-61

-00:03:04,370 --> 00:03:07,220

-and we have our proxy here. So all the requests to the

-

-62

-00:03:07,220 --> 00:03:09,950

-object will go through the proxy that will then forward them. And

-

-63

-00:03:09,950 --> 00:03:12,020

-all the responses from the object will also go through the

-

-64

-00:03:12,020 --> 00:03:15,580

-proxy. They will then forward them to the original requester. So what

-

-65

-00:03:15,580 --> 00:03:18,710

-the proxy allows you to do is to control how this object,

-

-66

-00:03:18,710 --> 00:03:22,180

-that is behind the proxy, is actually accessed, for example, by filtering

-

-67

-00:03:22,180 --> 00:03:24,500

-some calls. So in a sense, the proxy allows use

-

-68

-00:03:24,500 --> 00:03:27,470

-for masking some of the functionality of the object that

-

-69

-00:03:27,470 --> 00:03:31,070

-is behind the proxy. And there's many, many, many more

-

-70

-00:03:31,070 --> 00:03:34,424

-useful patterns. That can help you when designing and implementing

-

-71

-00:03:34,424 --> 00:03:37,220

-the system. So once more, I really encourage you to

-

-72

-00:03:37,220 --> 00:03:38,740

-have a look at the book, to look at the

-

-73

-00:03:38,740 --> 00:03:41,570

-resources online, and to really get more familiar with these

-

-74

-00:03:41,570 --> 00:03:43,890

-patterns, and to try to use them in your everyday work.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 4abf070..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,770 --> 00:00:02,830

-In the previous lessons of this mini-course,

-

-2

-00:00:02,830 --> 00:00:06,620

-we discussed high level design, or architecture,

-

-3

-00:00:06,620 --> 00:00:12,380

-low level design, and design patterns. Now, we're going to see how we can put

-

-4

-00:00:12,380 --> 00:00:15,380

-this and also others software engineering activities

-

-5

-00:00:15,380 --> 00:00:18,436

-together in the context of a UML-based

-

-6

-00:00:18,436 --> 00:00:21,820

-process model, the unified software process, or

-

-7

-00:00:21,820 --> 00:00:25,580

-USP. We will discuss how USP was defined,

-

-8

-00:00:25,580 --> 00:00:30,492

-its main characteristics, its phases, and how we can apply it in practice.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/10 - Iterative and Incremental - lang_en_vs6.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/10 - Iterative and Incremental - lang_en_vs6.srt
deleted file mode 100644
index e542660..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/10 - Iterative and Incremental - lang_en_vs6.srt
+++ /dev/null
@@ -1,147 +0,0 @@
-1

-00:00:00,190 --> 00:00:03,100

-We just saw two of the three distinguishing aspects of

-

-2

-00:00:03,100 --> 00:00:05,800

-the rational unified process. The fact that it is used

-

-3

-00:00:05,800 --> 00:00:08,810

-case driven and the fact that it is architecture centric.

-

-4

-00:00:08,810 --> 00:00:11,950

-The third and final distinguished aspect of R.U.P. is that

-

-5

-00:00:11,950 --> 00:00:15,210

-it is iterative and incremental. So let's see what that

-

-6

-00:00:15,210 --> 00:00:18,870

-means by considering the lifetime of a software project. Basically,

-

-7

-00:00:18,870 --> 00:00:22,120

-the lifetime of a rational unified process consists of a

-

-8

-00:00:22,120 --> 00:00:24,920

-series of cycles, such as the ones that are represented here.

-

-9

-00:00:24,920 --> 00:00:28,070

-Cycle one, cycle two, through cycle n. And as

-

-10

-00:00:28,070 --> 00:00:30,990

-you can see, these cycles can also be called increments.

-

-11

-00:00:30,990 --> 00:00:33,280

-And each one of the cycles involves all of

-

-12

-00:00:33,280 --> 00:00:36,700

-the main phases of software development. In addition, each cycle

-

-13

-00:00:36,700 --> 00:00:39,700

-results in a product release which can be internal

-

-14

-00:00:39,700 --> 00:00:43,210

-or external. More precisely, each cycle terminates with a product

-

-15

-00:00:43,210 --> 00:00:46,340

-release that includes a complete set of artifacts for

-

-16

-00:00:46,340 --> 00:00:50,150

-the project. That means code, manuals, use cases, non-functional

-

-17

-00:00:50,150 --> 00:00:52,840

-specification, test cases, and so on. So, I've just

-

-18

-00:00:52,840 --> 00:00:55,760

-said, that each cycle involves all of the main phases

-

-19

-00:00:55,760 --> 00:00:59,440

-of software development. Specifically, each cycle is further divided

-

-20

-00:00:59,440 --> 00:01:04,040

-in four phases. Inception, elaboration, construction and transition. In a

-

-21

-00:01:04,040 --> 00:01:06,290

-minute, we will look at each one of these

-

-22

-00:01:06,290 --> 00:01:08,840

-phases in detail and see how they relate to the

-

-23

-00:01:08,840 --> 00:01:12,150

-traditional activities of software development. Before that, I want

-

-24

-00:01:12,150 --> 00:01:15,760

-to mention the last level of these iterations, which happens

-

-25

-00:01:15,760 --> 00:01:20,330

-within these individual phases More precisely, inside each of these

-

-26

-00:01:20,330 --> 00:01:24,230

-phases, there might be multiple iterations. So what are these

-

-27

-00:01:24,230 --> 00:01:28,070

-iterations? Well, basically, each iteration corresponds to a group of

-

-28

-00:01:28,070 --> 00:01:30,550

-use cases that are selected so as to deal with

-

-29

-00:01:30,550 --> 00:01:33,200

-the most important risks first. So if you have a

-

-30

-00:01:33,200 --> 00:01:35,510

-set of use cases that you're considering, which means that

-

-31

-00:01:35,510 --> 00:01:37,450

-you have a set of features that you need to

-

-32

-00:01:37,450 --> 00:01:41,260

-implement, you will select for each iteration the most risky

-

-33

-00:01:41,260 --> 00:01:44,720

-ones that you still haven't realized, and realize them in that

-

-34

-00:01:44,720 --> 00:01:47,720

-iteration. And then continue in the following iterations with less and

-

-35

-00:01:47,720 --> 00:01:50,980

-less risky ones. So basically what happens in the end is

-

-36

-00:01:50,980 --> 00:01:52,960

-that essentially each iteration extends

-

-37

-00:01:52,960 --> 00:01:55,220

-the functionality beyond the previous iteration.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/11 - Cycle Example - lang_en_vs6.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/11 - Cycle Example - lang_en_vs6.srt
deleted file mode 100644
index af70543..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/11 - Cycle Example - lang_en_vs6.srt
+++ /dev/null
@@ -1,147 +0,0 @@
-1

-00:00:00,230 --> 00:00:02,590

-To make this a little more concrete, let's look at

-

-2

-00:00:02,590 --> 00:00:07,466

-an example involving cycles, phases, and iterations. Let's assume that we

-

-3

-00:00:07,466 --> 00:00:10,250

-have to develop a banking IT system. The first possible

-

-4

-00:00:10,250 --> 00:00:12,730

-cycle for such a system could be one in which we

-

-5

-00:00:12,730 --> 00:00:16,280

-implement the basic withdrawal facilities. What this means is that,

-

-6

-00:00:16,280 --> 00:00:18,400

-at the end of this cycle, there will be the release

-

-7

-00:00:18,400 --> 00:00:22,130

-of the product that implements this piece of functionality. But notice

-

-8

-00:00:22,130 --> 00:00:25,500

-that this will not be the only product release because within

-

-9

-00:00:25,500 --> 00:00:28,580

-the cycle, we will perform also the four phases that

-

-10

-00:00:28,580 --> 00:00:31,020

-we mentioned before, inception, elaboration,

-

-11

-00:00:31,020 --> 00:00:33,550

-construction, and transition. And within each

-

-12

-00:00:33,550 --> 00:00:36,980

-of these phases, we might have multiple iterations. And at the

-

-13

-00:00:36,980 --> 00:00:39,710

-end of each iteration, we will also have a product release.

-

-14

-00:00:39,710 --> 00:00:41,790

-Which in this case, will be an internal one. As

-

-15

-00:00:41,790 --> 00:00:44,690

-you can see, the iterative nature is really inherent in the

-

-16

-00:00:44,690 --> 00:00:48,030

-unified rational process. So, now let's clean up here, and let's

-

-17

-00:00:48,030 --> 00:00:50,814

-see what some other possible cycles could be for our banking

-

-18

-00:00:50,814 --> 00:00:54,070

-IT system. Here, I'm showing two possible additional ones. The first

-

-19

-00:00:54,070 --> 00:00:57,800

-one, cycle two, which will develop the account and system management. And

-

-20

-00:00:57,800 --> 00:01:00,230

-the third one, cycle three, which will develop the full account

-

-21

-00:01:00,230 --> 00:01:04,620

-management and cross selling. Similarly to cycle one, also these cycles will

-

-22

-00:01:04,620 --> 00:01:07,570

-produce a product, both at the end of the cycle, and

-

-23

-00:01:07,570 --> 00:01:10,740

-within the cycle in the different phases. And there's a few more

-

-24

-00:01:10,740 --> 00:01:13,150

-things to note. So the first one, is that each cycle

-

-25

-00:01:13,150 --> 00:01:15,900

-focuses on a different part of the system. So what you will

-

-26

-00:01:15,900 --> 00:01:19,350

-do, when you use the rational unified process, you will select a

-

-27

-00:01:19,350 --> 00:01:23,320

-subset of use cases that you want to realize within your cycle.

-

-28

-00:01:23,320 --> 00:01:26,640

-And the final product for that cycle, will be a product that

-

-29

-00:01:26,640 --> 00:01:30,190

-realizes those use cases. This is the first aspect. The second one,

-

-30

-00:01:30,190 --> 00:01:33,290

-is that these cycles, as you can see, are slightly overlapping. So

-

-31

-00:01:33,290 --> 00:01:35,880

-it is not the case that you finish a cycle, and then

-

-32

-00:01:35,880 --> 00:01:37,580

-you start the next one. So there is a little bit of

-

-33

-00:01:37,580 --> 00:01:41,250

-overlap among cycles, and we'll talk about that more. And finally,

-

-34

-00:01:41,250 --> 00:01:43,600

-I want to stress one more that each cycle

-

-35

-00:01:43,600 --> 00:01:46,960

-contains four phases, and each one of these phases might

-

-36

-00:01:46,960 --> 00:01:49,890

-be further splayed in iterations. So that's kind of a

-

-37

-00:01:49,890 --> 00:01:52,610

-high level view of how the whole process will work.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/12 - Phases within a Cycle - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/12 - Phases within a Cycle - lang_en_vs5.srt
deleted file mode 100644
index c58be49..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/12 - Phases within a Cycle - lang_en_vs5.srt
+++ /dev/null
@@ -1,199 +0,0 @@
-1

-00:00:00,240 --> 00:00:02,505

-Now let's go back to the phases within a cycle.

-

-2

-00:00:02,505 --> 00:00:04,930

-because I want to show you how they relate to traditional

-

-3

-00:00:04,930 --> 00:00:08,196

-activities of software development. Because this is the first time that

-

-4

-00:00:08,196 --> 00:00:12,066

-we talk about inception, elaboration, construction and transition. So we will

-

-5

-00:00:12,066 --> 00:00:14,859

-know what they mean, in terms of the traditional software

-

-6

-00:00:14,859 --> 00:00:18,380

-development. So I'm going to first discuss these relations and then

-

-7

-00:00:18,380 --> 00:00:22,198

-I'm going to talk about each individual phase in further detail.

-

-8

-00:00:22,198 --> 00:00:25,570

-So I'm going to start by representing the four RUP phases here

-

-9

-00:00:25,570 --> 00:00:29,810

-with possible internal iterations. I1, E1 and E2, C1,

-

-10

-00:00:29,810 --> 00:00:32,490

-C2, and so on. And just as a reference, this

-

-11

-00:00:32,490 --> 00:00:34,670

-is the way in which time will progress. So we

-

-12

-00:00:34,670 --> 00:00:37,890

-will start with inception and we will finish with transition.

-

-13

-00:00:37,890 --> 00:00:39,710

-So what I'm want to do now is to show the

-

-14

-00:00:39,710 --> 00:00:43,930

-actual, traditional, software development activities here on the left. And

-

-15

-00:00:43,930 --> 00:00:46,970

-I also want to show you, using this diagram, how these

-

-16

-00:00:46,970 --> 00:00:51,610

-activities are actually performed in each of the RUP phases.

-

-17

-00:00:51,610 --> 00:00:54,540

-So, let's see what this representation means. Basically, what

-

-18

-00:00:54,540 --> 00:00:58,410

-I'm showing here, is that requirements engineering actually starts in

-

-19

-00:00:58,410 --> 00:01:00,480

-the inception phase. So, you can see the height

-

-20

-00:01:00,480 --> 00:01:03,090

-of this bar as the amount of effort devoted to

-

-21

-00:01:03,090 --> 00:01:05,890

-this activity in this specific phase. So you can

-

-22

-00:01:05,890 --> 00:01:09,950

-see that requirements engineering starts in inception phase, is mostly

-

-23

-00:01:09,950 --> 00:01:13,210

-performed in the elaboration phase, and then it continues,

-

-24

-00:01:13,210 --> 00:01:16,820

-although to a lesser extent, throughout all phases up until

-

-25

-00:01:16,820 --> 00:01:18,570

-the end of the transition. But the bulk is really

-

-26

-00:01:18,570 --> 00:01:22,940

-performed here in the elaboration phase. Similarly, if we consider analysis

-

-27

-00:01:22,940 --> 00:01:25,450

-and design, we can see that analysis and design are

-

-28

-00:01:25,450 --> 00:01:29,510

-mainly performed in the elaboration phase. But a considerable amount of

-

-29

-00:01:29,510 --> 00:01:31,900

-it also continues in the construction phase, and then it

-

-30

-00:01:31,900 --> 00:01:34,514

-kind of phases out. So there's very little of that done

-

-31

-00:01:34,514 --> 00:01:37,300

-in the transition phase. Looking now at implementation, you can see

-

-32

-00:01:37,300 --> 00:01:41,190

-that the implementation happens mostly in the construction phase, which is,

-

-33

-00:01:41,190 --> 00:01:45,460

-unsurprisingly, the phase that is mostly concerned with actual code development,

-

-34

-00:01:45,460 --> 00:01:47,620

-as we will see in a minute. Testing, on the other

-

-35

-00:01:47,620 --> 00:01:50,990

-hand, is performed throughout most phases, with, peaks in some specific

-

-36

-00:01:50,990 --> 00:01:54,260

-point, for example, at the end of some iterations, like here

-

-37

-00:01:54,260 --> 00:01:57,880

-and here. To conclude, we have the business modeling activity that

-

-38

-00:01:57,880 --> 00:02:00,160

-happens mainly in the inception and a little bit in the

-

-39

-00:02:00,160 --> 00:02:04,100

-elaboration phase and the deployment activity which happens a little bit

-

-40

-00:02:04,100 --> 00:02:06,420

-throughout, but the bulk of it is really in the transition

-

-41

-00:02:06,420 --> 00:02:08,699

-phase, which is actually the phase that has to do

-

-42

-00:02:08,699 --> 00:02:12,070

-with deployment and then maintenance. So I hope this kind

-

-43

-00:02:12,070 --> 00:02:14,970

-of high level view gives you a better understanding of

-

-44

-00:02:14,970 --> 00:02:17,940

-what is the mapping between these new phases and, the

-

-45

-00:02:17,940 --> 00:02:21,760

-typical software development activities that we are more familiar with.

-

-46

-00:02:21,760 --> 00:02:24,360

-So to further this understanding, later in the lesson, I'm

-

-47

-00:02:24,360 --> 00:02:28,220

-also going to talk about these specific phases individually. First, however,

-

-48

-00:02:28,220 --> 00:02:31,610

-I want to spend a little more time discussing what happens

-

-49

-00:02:31,610 --> 00:02:35,200

-inside each one of these iterations, just to make sure

-

-50

-00:02:35,200 --> 00:02:38,410

-that we are all understand what an iteration is exactly.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/13 - Iterations - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/13 - Iterations - lang_en_vs5.srt
deleted file mode 100644
index fbdc2b0..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/13 - Iterations - lang_en_vs5.srt
+++ /dev/null
@@ -1,95 +0,0 @@
-1

-00:00:00,420 --> 00:00:03,520

-So what happens, exactly, within an iteration? In

-

-2

-00:00:03,520 --> 00:00:07,680

-almost every iteration, developers perform the following activities.

-

-3

-00:00:07,680 --> 00:00:10,830

-So they identify which pieces of functionality this

-

-4

-00:00:10,830 --> 00:00:14,450

-iteration will develop, will implement. After doing that, they

-

-5

-00:00:14,450 --> 00:00:17,240

-will create a design, for the considered use

-

-6

-00:00:17,240 --> 00:00:19,640

-cases, and they will do that guided by the

-

-7

-00:00:19,640 --> 00:00:22,334

-chosen architecture. So the set of use cases

-

-8

-00:00:22,334 --> 00:00:25,666

-plus the architectural guidelines will result in a design

-

-9

-00:00:25,666 --> 00:00:29,035

-for the selected use cases. Once the design is defined,

-

-10

-00:00:29,035 --> 00:00:32,060

-then the developers will implement the design, which will result

-

-11

-00:00:32,060 --> 00:00:35,430

-in a set of software components. They will then verify

-

-12

-00:00:35,430 --> 00:00:38,992

-the components against the use cases to make sure that the

-

-13

-00:00:38,992 --> 00:00:41,740

-components satisfy the use cases, they suitably realize the use

-

-14

-00:00:41,740 --> 00:00:43,995

-cases. And they will do that through testing or some

-

-15

-00:00:43,995 --> 00:00:47,730

-other verification and validation activity. Finally, after verifying that the

-

-16

-00:00:47,730 --> 00:00:51,320

-code actually implements the use cases, they will release a product,

-

-17

-00:00:51,320 --> 00:00:53,840

-which also represent the end of the iteration. And notice that

-

-18

-00:00:53,840 --> 00:00:56,370

-what I put here is an icon for the world,

-

-19

-00:00:56,370 --> 00:00:59,330

-in double quotes. Because in many cases the release will be

-

-20

-00:00:59,330 --> 00:01:02,050

-just an internal release or maybe a release that will just

-

-21

-00:01:02,050 --> 00:01:04,813

-go to some of the stakeholders so that they can provide

-

-22

-00:01:04,813 --> 00:01:07,040

-feedback on that. Okay. So it doesn't have to be an

-

-23

-00:01:07,040 --> 00:01:09,080

-external release. It doesn't have to be a release to the

-

-24

-00:01:09,080 --> 00:01:12,270

-world. But it is, nevertheless, a release of a software product. .

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/14 - Iterative Approach Quiz - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/14 - Iterative Approach Quiz - lang_en_vs5.srt
deleted file mode 100644
index d4b7808..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/14 - Iterative Approach Quiz - lang_en_vs5.srt
+++ /dev/null
@@ -1,43 +0,0 @@
-1

-00:00:00,182 --> 00:00:02,850

-So now, since we're talking about the incremental and iterative

-

-2

-00:00:02,850 --> 00:00:05,950

-nature of the Rational Unified Process, let's have a quiz on

-

-3

-00:00:05,950 --> 00:00:09,460

-the benefits of iterative approaches. So I'd like for you to tell

-

-4

-00:00:09,460 --> 00:00:12,710

-me what are these benefits. Is one benefit the fact that

-

-5

-00:00:12,710 --> 00:00:16,129

-iterative approaches keep developers busy or maybe that they give developers

-

-6

-00:00:16,129 --> 00:00:19,480

-early feedback, that they allow for doing the same thing over

-

-7

-00:00:19,480 --> 00:00:22,930

-and over in an iterative way. Maybe they also minimize the

-

-8

-00:00:22,930 --> 00:00:25,210

-risk of developing the wrong system. Can they be used to

-

-9

-00:00:25,210 --> 00:00:27,170

-improve planning, or is it the benefit

-

-10

-00:00:27,170 --> 00:00:30,160

-that they accommodate evolving requirements. Also, in this

-

-11

-00:00:30,160 --> 00:00:34,360

-case, I would like for you to check all the answers that you think are correct.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/15 - Iterative Approach Quiz Solution - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/15 - Iterative Approach Quiz Solution - lang_en_vs5.srt
deleted file mode 100644
index 6e69cec..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/15 - Iterative Approach Quiz Solution - lang_en_vs5.srt
+++ /dev/null
@@ -1,179 +0,0 @@
-1

-00:00:00,180 --> 00:00:01,740

-Okay so let's look at the first one. Well I

-

-2

-00:00:01,740 --> 00:00:04,760

-don't think that the fact of keeping developers busy is really

-

-3

-00:00:04,760 --> 00:00:08,020

-one of the highlights or the main benefits of iterative

-

-4

-00:00:08,020 --> 00:00:12,310

-approaches. Developers are really busy without any need for additional help.

-

-5

-00:00:12,310 --> 00:00:14,950

-So I will just not mark this one. The second

-

-6

-00:00:14,950 --> 00:00:19,280

-one conversely is definitely one of the advantages of iterative approaches.

-

-7

-00:00:19,280 --> 00:00:21,710

-So the fact that iterative approaches give the developers a early

-

-8

-00:00:21,710 --> 00:00:25,890

-feedback, is a great advantage which has in turn additional advantages.

-

-9

-00:00:25,890 --> 00:00:29,340

-For example, it increases the project tempo, so it gives the developers

-

-10

-00:00:29,340 --> 00:00:32,350

-not busy but more focused. It's easier to be focused when you

-

-11

-00:00:32,350 --> 00:00:35,790

-have a short term deadline, or a short term goal

-

-12

-00:00:35,790 --> 00:00:38,670

-rather than a release that is planned in six months or even

-

-13

-00:00:38,670 --> 00:00:42,420

-later. Another advantage of this early feedback is the fact that developers

-

-14

-00:00:42,420 --> 00:00:45,390

-are rewarded for their efforts so, there is sort of an immediate

-

-15

-00:00:45,390 --> 00:00:48,360

-rewards because you can see the results of your effort instead of

-

-16

-00:00:48,360 --> 00:00:51,310

-having to wait a long time to see such results. And last,

-

-17

-00:00:51,310 --> 00:00:55,126

-but not least the fact of getting early feedback also minimizes

-

-18

-00:00:55,126 --> 00:00:58,570

-the risks of developing the wrong system. So why is that?

-

-19

-00:00:58,570 --> 00:01:01,820

-Well because getting early feedback will also allow us to find

-

-20

-00:01:01,820 --> 00:01:05,140

-out whether we're going in the wrong direction early in the development process

-

-21

-00:01:05,140 --> 00:01:08,460

-rather than at the end. And therefore, will minimize this risk.

-

-22

-00:01:08,460 --> 00:01:10,760

-Going back to the previous question, yeah, I don't think that, you

-

-23

-00:01:10,760 --> 00:01:12,960

-know, doing the same thing over and over is a great

-

-24

-00:01:12,960 --> 00:01:16,170

-advantage. And in fact, iterative approaches do not do the same thing

-

-25

-00:01:16,170 --> 00:01:18,940

-over and over. So they keep iterating, but they keep

-

-26

-00:01:18,940 --> 00:01:21,930

-augmenting the amount of functionality in the system. They don't

-

-27

-00:01:21,930 --> 00:01:24,960

-just repeat the same thing. As for improving planning, actually

-

-28

-00:01:24,960 --> 00:01:27,980

-improving planning is not really a strength of these approaches,

-

-29

-00:01:27,980 --> 00:01:30,880

-because sometimes the number of iterations is hard to predict,

-

-30

-00:01:30,880 --> 00:01:33,050

-so it's hard to do a natural planning when you

-

-31

-00:01:33,050 --> 00:01:36,440

-are using an iterative approach. So finally, are iterative approaches

-

-32

-00:01:36,440 --> 00:01:38,700

-good for accomodating evolving requirements?

-

-33

-00:01:38,700 --> 00:01:41,630

-Most definitely. First, iterative approaches, and

-

-34

-00:01:41,630 --> 00:01:44,590

-in particular, the one that we're discussing consider requirements

-

-35

-00:01:44,590 --> 00:01:47,900

-incrementally, so they can better incorporate your requirements. So if

-

-36

-00:01:47,900 --> 00:01:51,030

-there are new requirements, it's easier to accommodate them using

-

-37

-00:01:51,030 --> 00:01:55,210

-an iterative approach. Second, these approaches realize a few requirements

-

-38

-00:01:55,210 --> 00:01:57,740

-at a time. Something from the most risky ones, as

-

-39

-00:01:57,740 --> 00:02:00,600

-we said. So any problem with those risky requirements will

-

-40

-00:02:00,600 --> 00:02:04,220

-be discovered early, and suitable course corrections could be taken.

-

-41

-00:02:04,220 --> 00:02:06,850

-So in case you still have doubts about iterative approaches,

-

-42

-00:02:06,850 --> 00:02:08,460

-it might be worth it to go back to

-

-43

-00:02:08,460 --> 00:02:11,390

-mini course number one, lesson number two to discuss the

-

-44

-00:02:11,390 --> 00:02:14,620

-life cycle models. Because we talk about iterative approaches

-

-45

-00:02:14,620 --> 00:02:17,770

-and their advantages and their characteristics there in some detail.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/16 - Inception Phase - lang_en_vs4.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/16 - Inception Phase - lang_en_vs4.srt
deleted file mode 100644
index 60ab80a..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/16 - Inception Phase - lang_en_vs4.srt
+++ /dev/null
@@ -1,323 +0,0 @@
-1

-00:00:00,175 --> 00:00:03,510

-Let's talk a little bit more about phases. The rational unified

-

-2

-00:00:03,510 --> 00:00:07,050

-process phases are fundamental aspects of this process and which just touched

-

-3

-00:00:07,050 --> 00:00:09,200

-on them so we just give a quick overview. And I want to

-

-4

-00:00:09,200 --> 00:00:12,010

-look at these phases in a little more detail. So, what I'm

-

-5

-00:00:12,010 --> 00:00:14,960

-going to do is, for each phase, I'm going to discuss what it is,

-

-6

-00:00:14,960 --> 00:00:18,310

-what it produces and how is the result of the phase suppose

-

-7

-00:00:18,310 --> 00:00:21,910

-to be,. Assessed, and what are the consequences of this assessment. So

-

-8

-00:00:21,910 --> 00:00:25,350

-let's start with the first phase, the inception phase. The first phase

-

-9

-00:00:25,350 --> 00:00:27,920

-goes from the idea of the product to the

-

-10

-00:00:27,920 --> 00:00:30,990

-vision of the end product. What this involves is basically

-

-11

-00:00:30,990 --> 00:00:34,230

-to delimiting the project scope. And making the business case

-

-12

-00:00:34,230 --> 00:00:37,040

-for the product presented. Why is it worth doing? What

-

-13

-00:00:37,040 --> 00:00:39,870

-are the success criteria? What are the main risks? What

-

-14

-00:00:39,870 --> 00:00:43,690

-resources will be needed? And so on, specifically these phases

-

-15

-00:00:43,690 --> 00:00:47,310

-answer three main questions. The first one is, what are

-

-16

-00:00:47,310 --> 00:00:51,330

-the major users or actors, to use the UML terminology.

-

-17

-00:00:51,330 --> 00:00:53,450

-And what will the system do for them? To

-

-18

-00:00:53,450 --> 00:00:56,780

-answer this, these phases produce a simplified use-case model where

-

-19

-00:00:56,780 --> 00:01:00,480

-only a few use-cases are represented and described. So this

-

-20

-00:01:00,480 --> 00:01:03,390

-is a sort of initial use-case model. The second question

-

-21

-00:01:03,390 --> 00:01:05,610

-is about the architecture, what could be an architecture

-

-22

-00:01:05,610 --> 00:01:08,370

-for the system? So in this phase we will normally

-

-23

-00:01:08,370 --> 00:01:12,420

-also develop a tentative architecture. So an initial architecture that

-

-24

-00:01:12,420 --> 00:01:16,540

-describes the most crucial subsystems. Finally this phase also answers

-

-25

-00:01:16,540 --> 00:01:18,890

-the question, what is the plan and how much

-

-26

-00:01:18,890 --> 00:01:21,620

-will it cost? To answer this question. This phase will

-

-27

-00:01:21,620 --> 00:01:24,930

-identify the main risks for the project and also produce

-

-28

-00:01:24,930 --> 00:01:28,600

-a rough plan with estimates for resources, initial planning for

-

-29

-00:01:28,600 --> 00:01:32,820

-the phases and dates and milestones. Specifically, the inception phase

-

-30

-00:01:32,820 --> 00:01:36,370

-generates several deliverables. It is very important that you pay

-

-31

-00:01:36,370 --> 00:01:39,600

-attention so that you understand what this deliberate approach are.

-

-32

-00:01:39,600 --> 00:01:42,320

-Starting from the first one, which is the vision document.

-

-33

-00:01:42,320 --> 00:01:44,800

-And this is a document that provides a general

-

-34

-00:01:44,800 --> 00:01:48,420

-vision of the core projects requirements, key features and main

-

-35

-00:01:48,420 --> 00:01:51,890

-constraints. Together with this, the inception phase also produces an

-

-36

-00:01:51,890 --> 00:01:54,900

-initial use case model, as I just mentioned. So this

-

-37

-00:01:54,900 --> 00:01:57,720

-is a use case model that includes an initial set

-

-38

-00:01:57,720 --> 00:02:00,670

-of use cases, and then will be later refined. Two

-

-39

-00:02:00,670 --> 00:02:04,300

-additional variables are the initial project glossary, which describes the

-

-40

-00:02:04,300 --> 00:02:07,330

-main terms, using the project and their meaning, and the

-

-41

-00:02:07,330 --> 00:02:10,229

-initial business case which includes business context. And

-

-42

-00:02:10,229 --> 00:02:13,470

-success criteria. Yet another deliverable for the inception phase

-

-43

-00:02:13,470 --> 00:02:15,770

-is the initial project plan, which shows the

-

-44

-00:02:15,770 --> 00:02:20,650

-phases, iterations, roles of the participants, schedule and initial

-

-45

-00:02:20,650 --> 00:02:23,610

-estimates. In addition, the inception phase also produces

-

-46

-00:02:23,610 --> 00:02:26,810

-a risk assessment document, which describes the main risks

-

-47

-00:02:26,810 --> 00:02:29,970

-and counters measures for this risk. Finally, and this

-

-48

-00:02:29,970 --> 00:02:32,430

-is an optional deliverable, in the sense that it,

-

-49

-00:02:32,430 --> 00:02:34,990

-it might or might not be produced, depending on the specific

-

-50

-00:02:34,990 --> 00:02:37,870

-project. As part of the inception phase we might also generate

-

-51

-00:02:37,870 --> 00:02:41,780

-1 or more prototypes. For example, we might develop prototypes to

-

-52

-00:02:41,780 --> 00:02:45,590

-address some specific risks that we have identified or to show some

-

-53

-00:02:45,590 --> 00:02:48,380

-specific aspect of the system of which we are unsure to

-

-54

-00:02:48,380 --> 00:02:51,910

-the stakeholders. So basically all the typical users of prototypes that

-

-55

-00:02:51,910 --> 00:02:54,600

-we discussed before. So when we're done with the inception phase

-

-56

-00:02:54,600 --> 00:02:58,300

-we hit the first milestone for the cycle we are currently performing.

-

-57

-00:02:58,300 --> 00:03:00,600

-And so there are some evaluation criteria that will tell

-

-58

-00:03:00,600 --> 00:03:03,640

-us whether we can consider the inception phase concluded or not.

-

-59

-00:03:03,640 --> 00:03:06,840

-And the first of this criteria is stakeholder concurrence, which

-

-60

-00:03:06,840 --> 00:03:10,510

-means that all the stakeholders must agree on the scope, definition,

-

-61

-00:03:10,510 --> 00:03:13,510

-and cost schedule estimates for the projects. The second criteria

-

-62

-00:03:13,510 --> 00:03:17,040

-needs requirements understanding, out of the initial primary use cases that

-

-63

-00:03:17,040 --> 00:03:20,380

-we have identified so far, the right one for our system.

-

-64

-00:03:20,380 --> 00:03:23,760

-And other criteria is the credibility of the cost schedule estimates,

-

-65

-00:03:23,760 --> 00:03:28,280

-the priorities, defined the risks identifies and the countermeasures for

-

-66

-00:03:28,280 --> 00:03:31,590

-those risks, and the development process that we're following. Finally, in

-

-67

-00:03:31,590 --> 00:03:34,000

-the case we produce prototypes as part of the inceptional

-

-68

-00:03:34,000 --> 00:03:37,520

-phase, this will also be evaluated and assessed to judge the

-

-69

-00:03:37,520 --> 00:03:39,960

-overall outcome of the phase. So what happens if the

-

-70

-00:03:39,960 --> 00:03:43,170

-project fails to pass this milestone? So if the outcome of

-

-71

-00:03:43,170 --> 00:03:46,020

-the inception phase is considered to be inadequate with respect

-

-72

-00:03:46,020 --> 00:03:48,642

-to one or more of these criteria. Well at this point,

-

-73

-00:03:48,642 --> 00:03:51,240

-since we're kind of an initial phase of the cycle

-

-74

-00:03:51,240 --> 00:03:54,370

-the project may be cancelled or considerably re-thought. So to

-

-75

-00:03:54,370 --> 00:03:57,610

-summarize all of these in one sentence the Inception Phase

-

-76

-00:03:57,610 --> 00:04:00,320

-is the phase in which we produce. Then you shall vision,

-

-77

-00:04:00,320 --> 00:04:04,750

-used case model, project plan, risk assessment and possibly, prototypes

-

-78

-00:04:04,750 --> 00:04:07,290

-for the project. And we have to make sure, that

-

-79

-00:04:07,290 --> 00:04:10,680

-all of this deliverables satisfy a set of criteria, so

-

-80

-00:04:10,680 --> 00:04:13,770

-that we can continue on the project. And otherwise, we'll either

-

-81

-00:04:13,770 --> 00:04:17,160

-cancel the project or rethink its scope, or other aspects of it.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/17 - Elaboration Phase - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/17 - Elaboration Phase - lang_en_vs5.srt
deleted file mode 100644
index 1025b2c..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/17 - Elaboration Phase - lang_en_vs5.srt
+++ /dev/null
@@ -1,215 +0,0 @@
-1

-00:00:00,350 --> 00:00:02,400

-Now that we've discussed the inception phase, let's move

-

-2

-00:00:02,400 --> 00:00:04,180

-on to the second phase of RUP, which is

-

-3

-00:00:04,180 --> 00:00:07,280

-the elaboration phase. And there are four main goals

-

-4

-00:00:07,280 --> 00:00:10,900

-and activities for the elaboration phase. Analyzing the problem domain

-

-5

-00:00:10,900 --> 00:00:13,690

-to get a better understanding of the domain. Establishing

-

-6

-00:00:13,690 --> 00:00:17,840

-a solid architectural foundation for the project. Eliminating the highest

-

-7

-00:00:17,840 --> 00:00:21,454

-risk elements which basically means addressing the most critical

-

-8

-00:00:21,454 --> 00:00:25,590

-use cases. And finally, refine the plan of activities and estimates

-

-9

-00:00:25,590 --> 00:00:28,250

-of resources to complete the project. The outcome

-

-10

-00:00:28,250 --> 00:00:31,310

-of the elaboration phase reflects these activities and also

-

-11

-00:00:31,310 --> 00:00:34,440

-in this case produces several artifacts. The first one

-

-12

-00:00:34,440 --> 00:00:38,700

-is an almost complete use case model with all use cases

-

-13

-00:00:38,700 --> 00:00:42,560

-and actors identified and most use case descriptions developed.

-

-14

-00:00:42,560 --> 00:00:44,070

-As part of this phase we also identify a

-

-15

-00:00:44,070 --> 00:00:47,550

-set of what we called supplementary requirements. So these

-

-16

-00:00:47,550 --> 00:00:50,685

-are basically all the requirements that are not associated

-

-17

-00:00:50,685 --> 00:00:53,483

-with a use case. And these sets includes in particular all

-

-18

-00:00:53,483 --> 00:00:56,110

-non-functional requirements such as security,

-

-19

-00:00:56,110 --> 00:00:58,630

-reliability, maintainability and so on. So

-

-20

-00:00:58,630 --> 00:01:00,770

-all the ones that are relevant for the system that

-

-21

-00:01:00,770 --> 00:01:02,280

-you're developing. We mentioned before

-

-22

-00:01:02,280 --> 00:01:04,410

-that the software architecture is developed

-

-23

-00:01:04,410 --> 00:01:07,220

-in an incremental way, so it's not created at once.

-

-24

-00:01:07,220 --> 00:01:09,650

-And this is exactly what happens in the elaboration phase, that

-

-25

-00:01:09,650 --> 00:01:12,990

-we take the initial architecture that was defined in the inception

-

-26

-00:01:12,990 --> 00:01:16,280

-phase and we refine it until we get to a software

-

-27

-00:01:16,280 --> 00:01:19,400

-architecture which is complete. And that is part of the

-

-28

-00:01:19,400 --> 00:01:22,410

-deliverables for this phase. And the list continues, so let

-

-29

-00:01:22,410 --> 00:01:25,020

-me make some room. In addition to producing a complete

-

-30

-00:01:25,020 --> 00:01:28,270

-architecture for our system, in the elaboration phase we also

-

-31

-00:01:28,270 --> 00:01:32,130

-define the lower-level design for the system. And, therefore, as

-

-32

-00:01:32,130 --> 00:01:35,560

-part of this phase, we produce as deliverables a design

-

-33

-00:01:35,560 --> 00:01:38,000

-model, and together with that, a complete set of test

-

-34

-00:01:38,000 --> 00:01:41,770

-cases, and an executable prototype. We also produce a revised

-

-35

-00:01:41,770 --> 00:01:44,390

-project plan. Now that we have more information about the

-

-36

-00:01:44,390 --> 00:01:47,120

-project we can refine the various estimates and the various

-

-37

-00:01:47,120 --> 00:01:50,020

-pieces of information in the project plan. And also an

-

-38

-00:01:50,020 --> 00:01:54,160

-updated risk assessment document. Finally, in this phase we also generate

-

-39

-00:01:54,160 --> 00:01:57,680

-a preliminary user manual that describes to the users how

-

-40

-00:01:57,680 --> 00:02:00,350

-the system can be used and should be used. So now

-

-41

-00:02:00,350 --> 00:02:03,630

-let's see what are the evaluation criteria for the elaboration

-

-42

-00:02:03,630 --> 00:02:06,880

-phase which is our second milestone. So I'm just going to list

-

-43

-00:02:06,880 --> 00:02:09,400

-them here. The first one is whether the vision

-

-44

-00:02:09,400 --> 00:02:12,620

-and the architecture are stable or they're still changing so

-

-45

-00:02:12,620 --> 00:02:15,680

-did we converge into a final complete vision for the

-

-46

-00:02:15,680 --> 00:02:18,620

-system? Does the prototype show that the major risks that

-

-47

-00:02:18,620 --> 00:02:22,090

-we have identified have been resolved or at least addressed

-

-48

-00:02:22,090 --> 00:02:25,390

-in this phase? Is the project plan sufficiently detailed and

-

-49

-00:02:25,390 --> 00:02:29,030

-accurate? Do all stakeholders agree that the vision can be

-

-50

-00:02:29,030 --> 00:02:32,320

-achieved with the current plan? Is the actual resource expenditure

-

-51

-00:02:32,320 --> 00:02:35,840

-versus the planned expenditure acceptable? So now we study consumer

-

-52

-00:02:35,840 --> 00:02:39,120

-resources and therefore we can check whether our estimates were

-

-53

-00:02:39,120 --> 00:02:41,964

-correct. And also in this case the project might be

-

-54

-00:02:41,964 --> 00:02:45,730

-cancelled or considerably reshaped if it fails to pass this milestone.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/18 - Construction Phase - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/18 - Construction Phase - lang_en_vs5.srt
deleted file mode 100644
index 70051fd..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/18 - Construction Phase - lang_en_vs5.srt
+++ /dev/null
@@ -1,247 +0,0 @@
-1

-00:00:00,230 --> 00:00:03,170

-So if the elaboration phase is successful, we then move

-

-2

-00:00:03,170 --> 00:00:06,560

-to the construction phase, which is our third phase. And

-

-3

-00:00:06,560 --> 00:00:09,550

-the construction phase is basically the phase in which most

-

-4

-00:00:09,550 --> 00:00:13,860

-of the actual development occurs. In short, all the features considered

-

-5

-00:00:13,860 --> 00:00:17,360

-are developed. So we'll continue with our car metaphor that

-

-6

-00:00:17,360 --> 00:00:19,310

-we used for the prototype. And in this case we

-

-7

-00:00:19,310 --> 00:00:22,390

-will have our complete car ready. Not only the features

-

-8

-00:00:22,390 --> 00:00:25,940

-are developed but they're also thoroughly tested. So we have performed

-

-9

-00:00:25,940 --> 00:00:29,490

-quality assurance. We have verified and validated the software,

-

-10

-00:00:29,490 --> 00:00:32,580

-the system and we know that it works correctly. Or

-

-11

-00:00:32,580 --> 00:00:34,620

-at least that it works correctly as far as

-

-12

-00:00:34,620 --> 00:00:37,850

-we can tell. So, in general, the construction phase is

-

-13

-00:00:37,850 --> 00:00:39,760

-the phase in which there is a shift in

-

-14

-00:00:39,760 --> 00:00:42,640

-emphasis from intellectual property development

-

-15

-00:00:42,640 --> 00:00:45,460

-to product development. From ideas

-

-16

-00:00:45,460 --> 00:00:47,650

-to products. So, what is the outcome of the

-

-17

-00:00:47,650 --> 00:00:51,250

-construction phase? Well, basically the construction phrase produces a product

-

-18

-00:00:51,250 --> 00:00:54,520

-that is ready to be deployed to the users. Specifically,

-

-19

-00:00:54,520 --> 00:00:57,570

-the phase generates the following outcomes. First of all, at the

-

-20

-00:00:57,570 --> 00:01:00,150

-end of this phase, all the use cases have been

-

-21

-00:01:00,150 --> 00:01:03,220

-realized with traceability information. What does that mean? It means that

-

-22

-00:01:03,220 --> 00:01:06,640

-not only all the functionality expressed by the use cases

-

-23

-00:01:06,640 --> 00:01:10,240

-have been implemented, but also that we have traceability information from

-

-24

-00:01:10,240 --> 00:01:13,530

-the use cases, to the different artifacts. So for example,

-

-25

-00:01:13,530 --> 00:01:16,780

-we know which part of the design realizes which use case.

-

-26

-00:01:16,780 --> 00:01:19,230

-We know which part of the implementation is related to a

-

-27

-00:01:19,230 --> 00:01:22,150

-given use case. Which use cases were derived from a use

-

-28

-00:01:22,150 --> 00:01:24,390

-case, and so on and so forth. And in this way

-

-29

-00:01:24,390 --> 00:01:28,310

-we can trace our requirements throughout the system. Throughout the different

-

-30

-00:01:28,310 --> 00:01:32,162

-artifacts that were developed during the software process. As we were

-

-31

-00:01:32,162 --> 00:01:35,790

-saying, we also have complete software product here, which is integrated

-

-32

-00:01:35,790 --> 00:01:39,240

-on all the needed platforms. Since the system, the software product,

-

-33

-00:01:39,240 --> 00:01:42,200

-has to be thoroughly tested, we will also have a complete

-

-34

-00:01:42,200 --> 00:01:44,900

-set of results for our tests. As part of this

-

-35

-00:01:44,900 --> 00:01:47,980

-phase, we will also finalize the user manual, so you'll have

-

-36

-00:01:47,980 --> 00:01:51,050

-a user manual ready to be provided to the users, and

-

-37

-00:01:51,050 --> 00:01:53,700

-ready to be used. And finally, we will have a complete

-

-38

-00:01:53,700 --> 00:01:58,370

-set of artifacts that include design documents, code, test cases, and

-

-39

-00:01:58,370 --> 00:02:00,440

-so on and so forth, so basically all of the artifacts

-

-40

-00:02:00,440 --> 00:02:04,240

-that have been produced during the development process. So roughly speaking,

-

-41

-00:02:04,240 --> 00:02:07,280

-we can consider the product that is produced at the end

-

-42

-00:02:07,280 --> 00:02:10,570

-of this phase as a typical beta release. So in case

-

-43

-00:02:10,570 --> 00:02:12,920

-you're not familiar with that, a beta release is an initial

-

-44

-00:02:12,920 --> 00:02:16,050

-release normally meant for a selected subset of users. So it

-

-45

-00:02:16,050 --> 00:02:19,250

-is something that is not quite yet ready for primetime, but

-

-46

-00:02:19,250 --> 00:02:22,540

-almost. So let's see also in this case, what are the evaluation

-

-47

-00:02:22,540 --> 00:02:25,740

-criteria for the construction phase. So how do we assess, that

-

-48

-00:02:25,740 --> 00:02:29,620

-this third milestone has been accomplished, successfully? We pretty much have

-

-49

-00:02:29,620 --> 00:02:32,510

-a complete product ready to be shipped right? So the first question

-

-50

-00:02:32,510 --> 00:02:35,260

-we want to ask is, whether the product is stable and mature

-

-51

-00:02:35,260 --> 00:02:37,910

-enough to be deployed to users. At the end of this

-

-52

-00:02:37,910 --> 00:02:40,510

-phase it has to be. Are the stakeholders ready for the

-

-53

-00:02:40,510 --> 00:02:44,160

-transition into the user community? Are we ready to go from development

-

-54

-00:02:44,160 --> 00:02:45,450

-to production? Are the actual

-

-55

-00:02:45,450 --> 00:02:48,060

-resource expenditures versus the planned expenditures

-

-56

-00:02:48,060 --> 00:02:50,890

-still acceptable? So what this means is that at this point we

-

-57

-00:02:50,890 --> 00:02:54,660

-can really assess whether our estimates were accurate enough with respect

-

-58

-00:02:54,660 --> 00:02:57,740

-to what we actually spent for the project up to this point.

-

-59

-00:02:57,740 --> 00:03:00,390

-So unless we can answer in a positive way to

-

-60

-00:03:00,390 --> 00:03:03,790

-all these questions, the transition might be postponed by one release.

-

-61

-00:03:03,790 --> 00:03:05,930

-Because that means that we're still not ready to go

-

-62

-00:03:05,930 --> 00:03:08,660

-to the market. We're still not ready to deploy our product.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/19 - Transition Phase - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/19 - Transition Phase - lang_en_vs5.srt
deleted file mode 100644
index e09b6fc..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/19 - Transition Phase - lang_en_vs5.srt
+++ /dev/null
@@ -1,231 +0,0 @@
-1

-00:00:00,300 --> 00:00:02,080

-But if we are ready to go to the market,

-

-2

-00:00:02,080 --> 00:00:04,800

-if we are ready to deploy our product, then we can

-

-3

-00:00:04,800 --> 00:00:07,160

-move to the transition phase, which has mainly to do

-

-4

-00:00:07,160 --> 00:00:10,360

-with deployment and maintainence of a system. So what are the

-

-5

-00:00:10,360 --> 00:00:12,950

-main activities in the transition phase? As we discussed in

-

-6

-00:00:12,950 --> 00:00:16,280

-our initial lessons, in most real world cases, there are issues

-

-7

-00:00:16,280 --> 00:00:20,820

-that manifest themselves after deployment, when we release our software and

-

-8

-00:00:20,820 --> 00:00:22,870

-actual users interact with the

-

-9

-00:00:22,870 --> 00:00:26,230

-software. Specifically, users might report failures

-

-10

-00:00:26,230 --> 00:00:28,965

-that they experienced while using the system. So, what we call

-

-11

-00:00:28,965 --> 00:00:33,120

-bug reports. Or they might report improvements they might want to see

-

-12

-00:00:33,120 --> 00:00:36,798

-in the software. So typically these will be new feature requests. And

-

-13

-00:00:36,798 --> 00:00:40,270

-in addition, there might be issues that don't come necessarily from the

-

-14

-00:00:40,270 --> 00:00:42,734

-users but that are related to the fact that our system

-

-15

-00:00:42,734 --> 00:00:45,920

-has to operate, has to work in a new execution environment. For

-

-16

-00:00:45,920 --> 00:00:48,930

-example, the new version of an operating system, or the new version

-

-17

-00:00:48,930 --> 00:00:51,474

-of a set of libraries. When this happens, we have to address

-

-18

-00:00:51,474 --> 00:00:55,020

-these issues by performing maintenance. Specifically, corrective maintenance

-

-19

-00:00:55,020 --> 00:00:58,900

-for bug reports, perfective maintenance, for feature requests, and

-

-20

-00:00:58,900 --> 00:01:02,270

-adaptive maintenance, for environment changes. And the result of

-

-21

-00:01:02,270 --> 00:01:04,319

-this is that we will have a new release

-

-22

-00:01:04,319 --> 00:01:06,550

-of the software. Other activities that are performed in

-

-23

-00:01:06,550 --> 00:01:10,480

-this phase include training, customer service, and providing help-line

-

-24

-00:01:10,480 --> 00:01:13,350

-assistance. Finally, if you remember what we saw when

-

-25

-00:01:13,350 --> 00:01:16,810

-we were looking at the banking IT system example,

-

-26

-00:01:16,810 --> 00:01:21,300

-the cycles within a development are not necessarily completely dis-joined, but

-

-27

-00:01:21,300 --> 00:01:23,940

-they might overlap a little bit. So something else that might

-

-28

-00:01:23,940 --> 00:01:26,650

-happen in the transition phase is that a new cycle may

-

-29

-00:01:26,650 --> 00:01:29,020

-start. So there might be some activities that are related to

-

-30

-00:01:29,020 --> 00:01:32,190

-the fact that we're starting to think about the new cycle.

-

-31

-00:01:32,190 --> 00:01:35,150

-So now let's see what kind of outcome these activities will

-

-32

-00:01:35,150 --> 00:01:38,410

-produce. The first one is a complete project with all the

-

-33

-00:01:38,410 --> 00:01:41,820

-artifacts that we mentioned before. Another outcome is that the product will

-

-34

-00:01:41,820 --> 00:01:44,090

-be actually in use. So the product will be in the

-

-35

-00:01:44,090 --> 00:01:46,870

-hands of the users and the users will start using it, will

-

-36

-00:01:46,870 --> 00:01:49,760

-start interacting with it, for real, not just in a beta testing

-

-37

-00:01:49,760 --> 00:01:53,260

-setting. Another outcome will be a lesson learnt. What worked. What didn't

-

-38

-00:01:53,260 --> 00:01:56,240

-work. What should we do different in the next cycle or in

-

-39

-00:01:56,240 --> 00:01:59,446

-the next development? And this is a very important part of the

-

-40

-00:01:59,446 --> 00:02:01,651

-whole process, because it;s what provides

-

-41

-00:02:01,651 --> 00:02:04,378

-feedback between cycles, and between projects.

-

-42

-00:02:04,378 --> 00:02:07,018

-And as we said before, in case we have a next released

-

-43

-00:02:07,018 --> 00:02:09,478

-planned or a next cycle coming up, we might want to

-

-44

-00:02:09,478 --> 00:02:12,922

-start planning for the next release. So another outcome will be

-

-45

-00:02:12,922 --> 00:02:15,783

-the plan for the next release. So similar to the other

-

-46

-00:02:15,783 --> 00:02:19,147

-phases, also for the transition phase, we have a milestone, which

-

-47

-00:02:19,147 --> 00:02:21,733

-is the fourth milestone in this case. And therefore we

-

-48

-00:02:21,733 --> 00:02:25,061

-have evaluation criteria for the transition phase that will define whether

-

-49

-00:02:25,061 --> 00:02:28,530

-we've reached the milestone or not. And in this case, one

-

-50

-00:02:28,530 --> 00:02:32,040

-important assessment is whether the user is satisfied. So users are

-

-51

-00:02:32,040 --> 00:02:34,370

-actually using our product now, so we can get feedback

-

-52

-00:02:34,370 --> 00:02:36,260

-from them, we can see whether the product makes them

-

-53

-00:02:36,260 --> 00:02:40,390

-happy or not. And we continue assessing whether our expenditures

-

-54

-00:02:40,390 --> 00:02:43,460

-are fine with respect to our estimates. And in this case,

-

-55

-00:02:43,460 --> 00:02:46,882

-problems with this milestone might lead to further maintenance of

-

-56

-00:02:46,882 --> 00:02:48,840

-the system. So for example, we might need to produce

-

-57

-00:02:48,840 --> 00:02:51,460

-a new release to address some of the issues that

-

-58

-00:02:51,460 --> 00:02:54,410

-the users identified, as we discussed a couple of minutes ago.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/2 - History of RUP - lang_en_vs6.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/2 - History of RUP - lang_en_vs6.srt
deleted file mode 100644
index 83a656b..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/2 - History of RUP - lang_en_vs6.srt
+++ /dev/null
@@ -1,115 +0,0 @@
-1

-00:00:00,320 --> 00:00:02,252

-As I just said, today we're going to talk about the

-

-2

-00:00:02,252 --> 00:00:04,876

-Rational Unified Process. And you know that I like to provide

-

-3

-00:00:04,876 --> 00:00:07,632

-the historical perspective of the topics that we cover in class

-

-4

-00:00:07,632 --> 00:00:10,070

-and this lesson is no exception. So let's see a little bit

-

-5

-00:00:10,070 --> 00:00:12,500

-of history of RUP. To do that we have to go

-

-6

-00:00:12,500 --> 00:00:17,620

-back to 1997 when Rational defined six best practices for modern software

-

-7

-00:00:17,620 --> 00:00:20,930

-engineering. So let's look at what these practices were. The first

-

-8

-00:00:20,930 --> 00:00:25,330

-practice involved developing in an iterative way with risk as the primary

-

-9

-00:00:25,330 --> 00:00:27,700

-iteration driver. The second practice had to do

-

-10

-00:00:27,700 --> 00:00:31,375

-with managing requirements, including updating them and keeping

-

-11

-00:00:31,375 --> 00:00:34,570

-traceability information between requirements and other software

-

-12

-00:00:34,570 --> 00:00:37,675

-artifacts. Practice number three was to employ a

-

-13

-00:00:37,675 --> 00:00:40,830

-component-based architecture. What that means is to have

-

-14

-00:00:40,830 --> 00:00:43,540

-a high level design that focuses on cooperating

-

-15

-00:00:43,540 --> 00:00:46,780

-components that are nevertheless very cohesive and highly

-

-16

-00:00:46,780 --> 00:00:50,710

-decoupled. Modeling software visually is another key aspect

-

-17

-00:00:50,710 --> 00:00:53,250

-of the rational unified process. And the key concept

-

-18

-00:00:53,250 --> 00:00:56,070

-here is to use visual diagrams, and in particular UML

-

-19

-00:00:56,070 --> 00:00:58,520

-visual diagrams, in a very extensive way so as

-

-20

-00:00:58,520 --> 00:01:01,950

-to make artifacts easier to understand and agree upon among

-

-21

-00:01:01,950 --> 00:01:04,849

-stakeholders. And the fact that the process is defined

-

-22

-00:01:04,849 --> 00:01:08,510

-in an iterative way, allows for performing quality assurance activities

-

-23

-00:01:08,510 --> 00:01:11,430

-in a continuous way. So it allows for continuously

-

-24

-00:01:11,430 --> 00:01:13,860

-verifying quality throughout the development

-

-25

-00:01:13,860 --> 00:01:16,220

-process. Finally, change management and

-

-26

-00:01:16,220 --> 00:01:18,750

-control were also at the center of the rational

-

-27

-00:01:18,750 --> 00:01:22,100

-approach These six practices, that I just mentioned were

-

-28

-00:01:22,100 --> 00:01:24,740

-the starting point for the development of the Rational

-

-29

-00:01:24,740 --> 00:01:27,300

-Unified Process, which is what we're going to discuss next.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/20 - Phases and Iterations - lang_en_vs4.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/20 - Phases and Iterations - lang_en_vs4.srt
deleted file mode 100644
index 01689f9..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/20 - Phases and Iterations - lang_en_vs4.srt
+++ /dev/null
@@ -1,107 +0,0 @@
-1

-00:00:00,170 --> 00:00:02,210

-So now I would like to wrap up this lesson

-

-2

-00:00:02,210 --> 00:00:05,720

-by going back to our discussion of rational unified process

-

-3

-00:00:05,720 --> 00:00:08,630

-phases and iterations. So to do that I'm going to bring

-

-4

-00:00:08,630 --> 00:00:12,480

-back the presentation that I used before, the summary representation

-

-5

-00:00:12,480 --> 00:00:16,840

-about phases and traditional software engineering activities. And I want to

-

-6

-00:00:16,840 --> 00:00:19,720

-use this representation to stress and discuss a couple of

-

-7

-00:00:19,720 --> 00:00:22,140

-things. Mainly I want to recap it because I think

-

-8

-00:00:22,140 --> 00:00:25,480

-it is very important. What is the relation between the rational

-

-9

-00:00:25,480 --> 00:00:29,270

-unified process, and the traditional software engineering phases, and software

-

-10

-00:00:29,270 --> 00:00:31,540

-engineering activities? And I like to do it now that

-

-11

-00:00:31,540 --> 00:00:33,648

-we have discussed the phases in a little more detail.

-

-12

-00:00:33,648 --> 00:00:35,920

-So I want to make sure that it is clear by now

-

-13

-00:00:35,920 --> 00:00:39,660

-how and when the traditional software engineering activities, the ones

-

-14

-00:00:39,660 --> 00:00:42,620

-listed here, take place in the context of the RUP

-

-15

-00:00:42,620 --> 00:00:45,850

-phases, the four listed up here. For instance, it should

-

-16

-00:00:45,850 --> 00:00:50,410

-be clear why implementation takes place mainly in the construction phase.

-

-17

-00:00:50,410 --> 00:00:54,140

-Why requirements engineering is prominent in the elaboration phase

-

-18

-00:00:54,140 --> 00:00:58,290

-and why deployment activities occur mostly in the transition phase,

-

-19

-00:00:58,290 --> 00:01:00,120

-and so on. So it should be clear now

-

-20

-00:01:00,120 --> 00:01:03,930

-why the activities are so distributed in the four phases.

-

-21

-00:01:03,930 --> 00:01:06,130

-It should also be clear that although there is

-

-22

-00:01:06,130 --> 00:01:09,350

-normally one main phase for each activity, the activities really

-

-23

-00:01:09,350 --> 00:01:12,550

-span multiple phases. Which is actually one of the interesting

-

-24

-00:01:12,550 --> 00:01:15,580

-aspect of RUP. So the fact that you're not really

-

-25

-00:01:15,580 --> 00:01:19,700

-done with an activity even in later phases. Why? Well, because that allows

-

-26

-00:01:19,700 --> 00:01:22,070

-you, in subsequent iterations, to address

-

-27

-00:01:22,070 --> 00:01:24,370

-problems that came up in previous iterations.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/3 - Key Features of RUP - lang_en_vs6.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/3 - Key Features of RUP - lang_en_vs6.srt
deleted file mode 100644
index 74dc52a..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/3 - Key Features of RUP - lang_en_vs6.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,300 --> 00:00:03,450

-So let's start by seeing how these activities and principles

-

-2

-00:00:03,450 --> 00:00:06,640

-are reflected in the key features of the Rational Unified

-

-3

-00:00:06,640 --> 00:00:10,010

-Process. First of all, the Rational Unified Process is a

-

-4

-00:00:10,010 --> 00:00:13,700

-software process model. So if you recall our introductory lessons,

-

-5

-00:00:13,700 --> 00:00:16,670

-that means two main things. The first one is that

-

-6

-00:00:16,670 --> 00:00:19,200

-it defines an order of phases that have to be

-

-7

-00:00:19,200 --> 00:00:21,970

-followed in the software process. And the second thing is

-

-8

-00:00:21,970 --> 00:00:25,420

-that it also prescribes transition criteria, so when to go

-

-9

-00:00:25,420 --> 00:00:28,030

-from one phase to the next. The second key

-

-10

-00:00:28,030 --> 00:00:31,290

-feature of RUP is that it is component based. And

-

-11

-00:00:31,290 --> 00:00:33,810

-also in this case, this implies two main things.

-

-12

-00:00:33,810 --> 00:00:36,410

-The first one is that a software system is defined

-

-13

-00:00:36,410 --> 00:00:39,420

-and built as a set of software components. So

-

-14

-00:00:39,420 --> 00:00:43,110

-software components are the building blocks of our software system.

-

-15

-00:00:43,110 --> 00:00:45,550

-And the second one is that there must be well-defined

-

-16

-00:00:45,550 --> 00:00:48,440

-interfaces between these components, interfaces

-

-17

-00:00:48,440 --> 00:00:50,750

-through which these components communicate.

-

-18

-00:00:50,750 --> 00:00:53,020

-In addition, the Rational Unified Process is

-

-19

-00:00:53,020 --> 00:00:56,080

-tightly related to UML. And in particular, it

-

-20

-00:00:56,080 --> 00:00:58,820

-relies extensively on UML for its notation, and

-

-21

-00:00:58,820 --> 00:01:02,120

-with respect to its basic principles. Finally, the

-

-22

-00:01:02,120 --> 00:01:05,140

-three main distinguishing aspects of the Rational Unified

-

-23

-00:01:05,140 --> 00:01:09,830

-Process are that it is use-case driven, architecture-centric

-

-24

-00:01:09,830 --> 00:01:12,680

-and iterative and incremental. So let's now look

-

-25

-00:01:12,680 --> 00:01:15,565

-in more detail at these three distinguishing aspects,

-

-26

-00:01:15,565 --> 00:01:17,540

-and we're going to look at each one of them individually.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/4 - UML Quiz - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/4 - UML Quiz - lang_en_vs5.srt
deleted file mode 100644
index 4f4af17..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/4 - UML Quiz - lang_en_vs5.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,160 --> 00:00:03,440

-Before doing that though, let's have a quiz to check whether you remember

-

-2

-00:00:03,440 --> 00:00:07,160

-the basics of UML. Since we're going to talk about use cases, I want

-

-3

-00:00:07,160 --> 00:00:10,040

-to ask you, what is the difference between a use case and a

-

-4

-00:00:10,040 --> 00:00:13,330

-use case model. So here are the possible answers, and you can mark

-

-5

-00:00:13,330 --> 00:00:16,710

-more than one. First one is that only use case models include actors.

-

-6

-00:00:16,710 --> 00:00:19,150

-The second is that they are the same thing. The third one is

-

-7

-00:00:19,150 --> 00:00:22,000

-that a use case model is a set of use cases. The fourth

-

-8

-00:00:22,000 --> 00:00:24,950

-one says that a use case is a set of use case models.

-

-9

-00:00:24,950 --> 00:00:26,520

-Finally, the last one says that use cases

-

-10

-00:00:26,520 --> 00:00:29,650

-are a dynamic representation, whereas use case models

-

-11

-00:00:29,650 --> 00:00:31,880

-are a static representation of a system. So

-

-12

-00:00:31,880 --> 00:00:33,810

-mark all the answers that you think are correct.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/5 - UML Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/5 - UML Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index c107545..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/5 - UML Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,350

-And the correct answer, in this case it's only one,

-

-2

-00:00:02,350 --> 00:00:04,720

-is that a use case model is a set of use

-

-3

-00:00:04,720 --> 00:00:07,390

-cases. So a use case model is simply a collection of

-

-4

-00:00:07,390 --> 00:00:10,790

-use cases that represent different pieces of functionality for the system.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/6 - UML Quiz - lang_en_vs6.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/6 - UML Quiz - lang_en_vs6.srt
deleted file mode 100644
index c2627aa..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/6 - UML Quiz - lang_en_vs6.srt
+++ /dev/null
@@ -1,39 +0,0 @@
-1

-00:00:00,330 --> 00:00:02,650

-So, since we are talking about use case diagrams, I also want

-

-2

-00:00:02,650 --> 00:00:05,593

-to ask you, what are use case diagrams used for? So, what

-

-3

-00:00:05,593 --> 00:00:08,600

-are they good for? Why are they useful within a software process?

-

-4

-00:00:08,600 --> 00:00:12,130

-Also in this case, I'm providing several possible answers. They are not really

-

-5

-00:00:12,130 --> 00:00:15,420

-used for anything. Or, they can be used to prioritize requirements. Or,

-

-6

-00:00:15,420 --> 00:00:18,220

-maybe they can be used for user interface design. They can be

-

-7

-00:00:18,220 --> 00:00:20,280

-used during requirements elicitation. They can

-

-8

-00:00:20,280 --> 00:00:21,890

-be used for code optimization. And

-

-9

-00:00:21,890 --> 00:00:25,570

-finally, they can be used for test case design. Also, in this case,

-

-10

-00:00:25,570 --> 00:00:28,650

-I would like you to mark all the answers that you think are correct.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/7 - UML Quiz Solution - lang_en_vs6.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/7 - UML Quiz Solution - lang_en_vs6.srt
deleted file mode 100644
index c201e96..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/7 - UML Quiz Solution - lang_en_vs6.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,910

-In this case there are multiple, correct answers. So you should have

-

-2

-00:00:02,910 --> 00:00:05,800

-marked several of those. So let's go through the list. Well this

-

-3

-00:00:05,800 --> 00:00:08,970

-is definitely not true. They are used for something. The second answer,

-

-4

-00:00:08,970 --> 00:00:11,880

-is a correct one, because you can order, the use cases that

-

-5

-00:00:11,880 --> 00:00:13,320

-you planned to realize, according to

-

-6

-00:00:13,320 --> 00:00:15,580

-your prioritization criteria. So basically what

-

-7

-00:00:15,580 --> 00:00:19,100

-you're doing you're prioritizing either in terms of functionality. So you, you

-

-8

-00:00:19,100 --> 00:00:21,680

-can decide which piece of functionality you want to realize first in

-

-9

-00:00:21,680 --> 00:00:25,430

-your system. Or you can also prioritize based on the actors involved.

-

-10

-00:00:25,430 --> 00:00:27,530

-Maybe there are some actors, maybe there are some user

-

-11

-00:00:27,530 --> 00:00:30,580

-roles that you want to support before others, and we'll

-

-12

-00:00:30,580 --> 00:00:33,580

-see some examples of that. The next correct question is

-

-13

-00:00:33,580 --> 00:00:37,190

-that they can be used for requirements elicitation. Why? Well

-

-14

-00:00:37,190 --> 00:00:40,130

-because used cases express what the system is supposed to

-

-15

-00:00:40,130 --> 00:00:43,490

-do for each user. They're an ideal way to collect,

-

-16

-00:00:43,490 --> 00:00:47,110

-represent, and check functional requirements. And we'll also get back

-

-17

-00:00:47,110 --> 00:00:50,700

-to this. And finally, use cases can definitely be used

-

-18

-00:00:50,700 --> 00:00:54,160

-for test case design. So why is that? Because each

-

-19

-00:00:54,160 --> 00:00:58,500

-use case represents a scenario of interaction between users and the

-

-20

-00:00:58,500 --> 00:01:03,470

-system. So testers can very naturally construct test cases based

-

-21

-00:01:03,470 --> 00:01:06,570

-on use cases. And in addition, and most importantly, they can

-

-22

-00:01:06,570 --> 00:01:09,320

-do that even in the absence of code that realizes

-

-23

-00:01:09,320 --> 00:01:11,490

-a use case. So they can do it as soon as

-

-24

-00:01:11,490 --> 00:01:13,740

-they have the requirements. They don't have to wait until the

-

-25

-00:01:13,740 --> 00:01:16,150

-code is ready. So this is not very a important point.

-

-26

-00:01:16,150 --> 00:01:18,400

-So you can have your test cases ready even before

-

-27

-00:01:18,400 --> 00:01:21,150

-writing the code. And now for completeness. Even though this is

-

-28

-00:01:21,150 --> 00:01:23,787

-not listed in the quiz. I also want to mention two

-

-29

-00:01:23,787 --> 00:01:27,040

-additional uses for use cases. The first one is that use

-

-30

-00:01:27,040 --> 00:01:30,080

-cases can be used to estimate effort as we will discuss

-

-31

-00:01:30,080 --> 00:01:32,710

-in more detail in mini course four, when we talk about

-

-32

-00:01:32,710 --> 00:01:35,770

-agile software development. And they can also be used by

-

-33

-00:01:35,770 --> 00:01:38,290

-customers to assess requirements. Which

-

-34

-00:01:38,290 --> 00:01:41,170

-is another fundamentally important role of

-

-35

-00:01:41,170 --> 00:01:44,640

-the use cases. They provide a common language between the customers

-

-36

-00:01:44,640 --> 00:01:47,850

-and the developers which makes it easier to collect the right requirements.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/8 - Use Case Driven - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/8 - Use Case Driven - lang_en_vs5.srt
deleted file mode 100644
index 14ddaab..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/8 - Use Case Driven - lang_en_vs5.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,370

-Now let's go back to the distinguishing aspects of

-

-2

-00:00:02,370 --> 00:00:04,710

-RUP, starting from the first one. That is, that the

-

-3

-00:00:04,710 --> 00:00:08,170

-rational unified process is use-case driven. So let's see what

-

-4

-00:00:08,170 --> 00:00:11,310

-that means. Generally speaking, we can see a system as

-

-5

-00:00:11,310 --> 00:00:14,500

-something that performs a sequence of actions in response to

-

-6

-00:00:14,500 --> 00:00:18,100

-user inputs. So the user submits some requests, or requests

-

-7

-00:00:18,100 --> 00:00:22,140

-some functionality, and the system responds to those requests. Use

-

-8

-00:00:22,140 --> 00:00:25,750

-cases, as we just said, capture exactly this interaction and

-

-9

-00:00:25,750 --> 00:00:28,620

-answer the question, what is the system supposed to do

-

-10

-00:00:28,620 --> 00:00:32,150

-for each user? So, this is a very important point.

-

-11

-00:00:32,150 --> 00:00:34,160

-So they can represent what a system can do for

-

-12

-00:00:34,160 --> 00:00:37,240

-each of the different types of users of the system.

-

-13

-00:00:37,240 --> 00:00:39,430

-For this reason, and as we will see in more

-

-14

-00:00:39,430 --> 00:00:42,430

-detail, in the rational unified process, use cases are a

-

-15

-00:00:42,430 --> 00:00:46,680

-central element of the whole development life cycle. From requirements

-

-16

-00:00:46,680 --> 00:00:51,360

-engineering, all the way through the process until testing and maintenance.

-

-17

-00:00:51,360 --> 00:00:54,620

-So, once more, use cases are used to support and

-

-18

-00:00:54,620 --> 00:00:58,162

-help each one of these phases in the rational unified process.

diff --git a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/9 - Architecture Centric - lang_en_vs5.srt b/usth/ICT2.7/P3L4 Unified Software Process Subtitles/9 - Architecture Centric - lang_en_vs5.srt
deleted file mode 100644
index b0f5487..0000000
--- a/usth/ICT2.7/P3L4 Unified Software Process Subtitles/9 - Architecture Centric - lang_en_vs5.srt
+++ /dev/null
@@ -1,131 +0,0 @@
-1

-00:00:00,180 --> 00:00:02,760

-The second distinguishing aspect of RUP is that it

-

-2

-00:00:02,760 --> 00:00:06,290

-is architecture-centric. As we saw in the first lesson

-

-3

-00:00:06,290 --> 00:00:09,340

-of this mini-course, a software architecture is a view

-

-4

-00:00:09,340 --> 00:00:12,740

-of the entire system that represents all high level

-

-5

-00:00:12,740 --> 00:00:15,710

-principal design decisions. Another way to see this is

-

-6

-00:00:15,710 --> 00:00:18,640

-by saying that use cases define the function of

-

-7

-00:00:18,640 --> 00:00:22,220

-the system, where as architecture defines the form of

-

-8

-00:00:22,220 --> 00:00:25,260

-the system. Use cases give the functionality, architecture tells

-

-9

-00:00:25,260 --> 00:00:28,670

-you how the system should be structured to provide the functionality.

-

-10

-00:00:28,670 --> 00:00:31,000

-So how do we define a software architecture in the rational

-

-11

-00:00:31,000 --> 00:00:33,730

-unified process. Also in this case this happens through

-

-12

-00:00:33,730 --> 00:00:37,340

-a sort of a iterative process. We start by creating a rough

-

-13

-00:00:37,340 --> 00:00:40,070

-outline of the system. And in this case we do it

-

-14

-00:00:40,070 --> 00:00:44,260

-independently from the functionality. So this is just the general structure

-

-15

-00:00:44,260 --> 00:00:46,770

-of the system. For example, we model aspects such as the

-

-16

-00:00:46,770 --> 00:00:50,840

-platform on which the system will run, the overall style. For example,

-

-17

-00:00:50,840 --> 00:00:52,780

-whether it's a client server or a peer to peer

-

-18

-00:00:52,780 --> 00:00:56,450

-system and so on. We then use the key use cases

-

-19

-00:00:56,450 --> 00:01:00,550

-in our use case diagram to define the main subsystems of

-

-20

-00:01:00,550 --> 00:01:03,470

-my architecture. For example, in the case of a banking IT

-

-21

-00:01:03,470 --> 00:01:07,150

-system, one of these subsystems might be the withdrawal system. So

-

-22

-00:01:07,150 --> 00:01:09,410

-what will happen in that case is that we will have

-

-23

-00:01:09,410 --> 00:01:13,240

-some use case that refers to the withdrawal activity, and by

-

-24

-00:01:13,240 --> 00:01:16,470

-analyzing that use case, we'll realize that we need a subsystem

-

-25

-00:01:16,470 --> 00:01:19,810

-that implements that piece of functionality. So again, we use

-

-26

-00:01:19,810 --> 00:01:22,680

-the key use cases to identify and define the key

-

-27

-00:01:22,680 --> 00:01:26,290

-subsystems for my architecture. So once we have that we

-

-28

-00:01:26,290 --> 00:01:30,510

-keep refining the architecture by using additional use cases. So

-

-29

-00:01:30,510 --> 00:01:33,030

-considering more and more pieces of functionality that will help

-

-30

-00:01:33,030 --> 00:01:35,430

-us to refine the architecture of the system and also

-

-31

-00:01:35,430 --> 00:01:39,260

-leveraging our increasing understanding of the system that we're modeling.

-

-32

-00:01:39,260 --> 00:01:41,470

-And this will continue until we are happy with the

-

-33

-00:01:41,470 --> 00:01:42,550

-architecture that we define.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/1 - Lesson Overview - lang_en_vs5.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/1 - Lesson Overview - lang_en_vs5.srt
deleted file mode 100644
index df7cdbe..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/1 - Lesson Overview - lang_en_vs5.srt
+++ /dev/null
@@ -1,91 +0,0 @@
-1

-00:00:00,700 --> 00:00:03,682

-Hello, and welcome back. In the previous

-

-2

-00:00:03,682 --> 00:00:07,160

-mini course we covered software design, discussed the

-

-3

-00:00:07,160 --> 00:00:10,020

-UML and the unified software process, and worked

-

-4

-00:00:10,020 --> 00:00:12,160

-on a complex project in which we developed

-

-5

-00:00:12,160 --> 00:00:16,020

-a distributed software system. In this mini course,

-

-6

-00:00:16,020 --> 00:00:17,900

-which is the last one for this class,

-

-7

-00:00:17,900 --> 00:00:21,080

-we will cover my very favorite topic, software

-

-8

-00:00:21,080 --> 00:00:24,850

-testing or more generally, software verification and validation.

-

-9

-00:00:25,860 --> 00:00:28,850

-So why do I love software testing? Well,

-

-10

-00:00:28,850 --> 00:00:32,430

-I love it because it is extremely important. It

-

-11

-00:00:32,430 --> 00:00:38,330

-is very challenging and it is fun but only if you do it in the right way.

-

-12

-00:00:38,330 --> 00:00:40,900

-In the upcoming lessons we will discuss why

-

-13

-00:00:40,900 --> 00:00:44,710

-software verification is important, why software testing, which is

-

-14

-00:00:44,710 --> 00:00:47,730

-a specific type of verification, is important, and

-

-15

-00:00:47,730 --> 00:00:50,730

-what are the main techniques for performing software testing.

-

-16

-00:00:51,910 --> 00:00:54,866

-We will also discuss test-driven development and agile methods,

-

-17

-00:00:54,866 --> 00:00:57,780

-in which we'll lose some of the rigidity of

-

-18

-00:00:57,780 --> 00:01:01,340

-the earlier processes and turn things around by writing

-

-19

-00:01:01,340 --> 00:01:04,260

-tests before we write the code and then writing

-

-20

-00:01:04,260 --> 00:01:08,280

-code that makes the test pass. Finally, we will

-

-21

-00:01:08,280 --> 00:01:10,750

-perform a project, in which you get to apply

-

-22

-00:01:10,750 --> 00:01:14,010

-most of the principles and practices of agile development

-

-23

-00:01:14,010 --> 00:01:17,430

-in a realistic scenario. So let's jump right in.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/10 - Verification Approaches - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/10 - Verification Approaches - lang_en_vs4.srt
deleted file mode 100644
index a671818..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/10 - Verification Approaches - lang_en_vs4.srt
+++ /dev/null
@@ -1,239 +0,0 @@
-1

-00:00:00,320 --> 00:00:01,630

-Now that we got out of the way this

-

-2

-00:00:01,630 --> 00:00:04,460

-initial set of basic definitions. Let's go back to our

-

-3

-00:00:04,460 --> 00:00:08,770

-main concept, which is software verification. We said that software

-

-4

-00:00:08,770 --> 00:00:11,730

-is buggy, and because software is buggy, we need to

-

-5

-00:00:11,730 --> 00:00:14,690

-verify the software as much as we can. But how

-

-6

-00:00:14,690 --> 00:00:17,960

-can we verify software? There are several ways to verify

-

-7

-00:00:17,960 --> 00:00:21,150

-a software system. Among those, we will discuss four mainstream

-

-8

-00:00:21,150 --> 00:00:25,410

-approaches. The first one is testing, also called dynamic verification.

-

-9

-00:00:25,410 --> 00:00:29,400

-The second approach is static verification. The third approach is

-

-10

-00:00:29,400 --> 00:00:33,000

-inspections. And finally, we're going to consider a fourth approach which is

-

-11

-00:00:33,000 --> 00:00:36,090

-formal proofs of correctness. So what I'm going to do

-

-12

-00:00:36,090 --> 00:00:39,570

-next, I'm going to first provide an overview of these approaches and

-

-13

-00:00:39,570 --> 00:00:41,930

-then discuss some of them in more depth and please

-

-14

-00:00:41,930 --> 00:00:44,430

-note that although we will discuss all four approaches we will

-

-15

-00:00:44,430 --> 00:00:47,350

-spend most of our time on software testing. As software

-

-16

-00:00:47,350 --> 00:00:50,850

-testing is the most popular and most used approach in industry.

-

-17

-00:00:50,850 --> 00:00:53,050

-So let's start with our overview and in particular

-

-18

-00:00:53,050 --> 00:00:58,050

-with testing. Testing a software system means exercising the system

-

-19

-00:00:58,050 --> 00:01:01,680

-to try to make it fail. More precisely, let's consider

-

-20

-00:01:01,680 --> 00:01:04,440

-a program. Its input domain, which is the set of

-

-21

-00:01:04,440 --> 00:01:06,990

-all the possible inputs for the program and, its output

-

-22

-00:01:06,990 --> 00:01:09,470

-domain, which is a set of all the possible corresponding

-

-23

-00:01:09,470 --> 00:01:13,010

-outputs. Given this context, we can define what a test

-

-24

-00:01:13,010 --> 00:01:16,360

-case is. A test case is a pair that consists

-

-25

-00:01:16,360 --> 00:01:19,090

-of a, an input from the input domain D,

-

-26

-00:01:19,090 --> 00:01:22,620

-and then, expected output O from the output domain.

-

-27

-00:01:22,620 --> 00:01:25,950

-And O is the element in the output domain

-

-28

-00:01:25,950 --> 00:01:29,670

-that a correct software would produce when ran against I.

-

-29

-00:01:29,670 --> 00:01:32,170

-We can also define the concept of test suite,

-

-30

-00:01:32,170 --> 00:01:34,840

-which is a set of test cases, and we're going to

-

-31

-00:01:34,840 --> 00:01:37,730

-use these two concepts of test case and test

-

-32

-00:01:37,730 --> 00:01:41,400

-suite quite a bit in the rest of the lessons.

-

-33

-00:01:41,400 --> 00:01:44,980

-Subject verification, tries to identify specific classes of problems

-

-34

-00:01:44,980 --> 00:01:47,620

-in the program. Such as null pointer dereferences. And

-

-35

-00:01:47,620 --> 00:01:49,750

-unlike testing, what it does is that it does

-

-36

-00:01:49,750 --> 00:01:53,610

-not just consider individual inputs, it instead considers all

-

-37

-00:01:53,610 --> 00:01:56,594

-possible inputs for the program. So it consider in

-

-38

-00:01:56,594 --> 00:01:59,366

-a sense all possible executions of the program and

-

-39

-00:01:59,366 --> 00:02:02,402

-all possible behaviors of the program, that's why we

-

-40

-00:02:02,402 --> 00:02:06,560

-save the verification unlike testing it's complete. The 3rd technique

-

-41

-00:02:06,560 --> 00:02:08,755

-we are going to consider is inspections,

-

-42

-00:02:08,755 --> 00:02:12,804

-and inspections are also called reviews or walkthroughs.

-

-43

-00:02:12,804 --> 00:02:15,010

-And unlike the previous techniques, inspections are a

-

-44

-00:02:15,010 --> 00:02:18,660

-human intensive activity, more precisely, they are a

-

-45

-00:02:18,660 --> 00:02:22,520

-manual and group activity in which several

-

-46

-00:02:22,520 --> 00:02:25,700

-people from the organization that developed the software,

-

-47

-00:02:25,700 --> 00:02:29,190

-look at the code or other artifacts developed

-

-48

-00:02:29,190 --> 00:02:31,888

-during the software production and try to identify

-

-49

-00:02:31,888 --> 00:02:35,950

-defects in these artifacts. And interestingly inspections

-

-50

-00:02:35,950 --> 00:02:37,580

-have been shown to be quite effective in

-

-51

-00:02:37,580 --> 00:02:39,820

-practice and that's the reason why they're used

-

-52

-00:02:39,820 --> 00:02:42,550

-quite widely in the industry. Finally, the last

-

-53

-00:02:42,550 --> 00:02:45,100

-technique I want to mention is Formal

-

-54

-00:02:45,100 --> 00:02:49,650

-Proof (of correctness). Given a software specification, and

-

-55

-00:02:49,650 --> 00:02:53,370

-actually a formal specification, so a document that

-

-56

-00:02:53,370 --> 00:02:57,410

-formally defines and specifies the behavior, the expected

-

-57

-00:02:57,410 --> 00:03:00,320

-behavior of the program. A form of proof of

-

-58

-00:03:00,320 --> 00:03:05,400

-correctness proves that the program being verified, actually implements

-

-59

-00:03:05,400 --> 00:03:07,922

-the program specification and it does that through a

-

-60

-00:03:07,922 --> 00:03:12,880

-sophisticated mathematical analysis of the specifications and of the code.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/11 - Pros and Cons of Approaches - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/11 - Pros and Cons of Approaches - lang_en_vs4.srt
deleted file mode 100644
index 36a58ee..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/11 - Pros and Cons of Approaches - lang_en_vs4.srt
+++ /dev/null
@@ -1,195 +0,0 @@
-1

-00:00:00,230 --> 00:00:02,870

-The four different techniques that we just discussed have

-

-2

-00:00:02,870 --> 00:00:06,120

-a number of pros and cons. So next we

-

-3

-00:00:06,120 --> 00:00:08,780

-are going to discuss the main pros and cons

-

-4

-00:00:08,780 --> 00:00:11,140

-for these techniques, so as to be able to compare

-

-5

-00:00:11,140 --> 00:00:14,330

-them. When testing is concerned the main positive about

-

-6

-00:00:14,330 --> 00:00:17,600

-this technique is that it does not generate false

-

-7

-00:00:17,600 --> 00:00:21,740

-alarms. In other words, it doesn't generate false positives.

-

-8

-00:00:21,740 --> 00:00:25,180

-What that means, is that when testing generates a failure,

-

-9

-00:00:25,180 --> 00:00:27,230

-that means that there is an actual problem in the

-

-10

-00:00:27,230 --> 00:00:30,060

-code. The main limitation of testing, however, is that it

-

-11

-00:00:30,060 --> 00:00:33,680

-is highly incomplete. Consider again the picture that we drew

-

-12

-00:00:33,680 --> 00:00:36,430

-a little earlier. The one representing the input domain of

-

-13

-00:00:36,430 --> 00:00:39,430

-the program being tested. Even in the best scenario, testing

-

-14

-00:00:39,430 --> 00:00:44,050

-can consider only a tiny fraction of the problem domain,

-

-15

-00:00:44,050 --> 00:00:47,430

-and therefor a tiny fraction of the program's behavior, and

-

-16

-00:00:47,430 --> 00:00:50,308

-we'll say a lot more about that in the following lessons.

-

-17

-00:00:50,308 --> 00:00:53,780

-Static verification, unlike testing, has the main advantage

-

-18

-00:00:53,780 --> 00:00:57,320

-that it considers all program behaviors. If we

-

-19

-00:00:57,320 --> 00:01:00,370

-look back at our diagram, whereas testing will

-

-20

-00:01:00,370 --> 00:01:04,010

-select only a few of those inputs, static verification

-

-21

-00:01:04,010 --> 00:01:07,120

-will consider them all. Unfortunately, however, this comes

-

-22

-00:01:07,120 --> 00:01:08,990

-with a price. Due to limitation of this

-

-23

-00:01:08,990 --> 00:01:11,490

-kind of analysis and due to infeasibility issues,

-

-24

-00:01:11,490 --> 00:01:15,260

-static verifiation considers not only all the possible behaviours,

-

-25

-00:01:15,260 --> 00:01:18,870

-but also some impossible behaviors. And what that means is

-

-26

-00:01:18,870 --> 00:01:22,472

-that static gratificaition can generate false positives. And this is,

-

-27

-00:01:22,472 --> 00:01:24,590

-in fact, the main issue with static verification techniques. As

-

-28

-00:01:24,590 --> 00:01:28,550

-we will further discuss later in the class, static verification can

-

-29

-00:01:28,550 --> 00:01:31,280

-generate results that are not true. For example, it might

-

-30

-00:01:31,280 --> 00:01:33,970

-report a possible no point of the refernce that cannot

-

-31

-00:01:33,970 --> 00:01:37,590

-actually occur in practice. The strongest point about inspections is

-

-32

-00:01:37,590 --> 00:01:40,950

-that, when they're done in a rigorous way, they're systematic and

-

-33

-00:01:40,950 --> 00:01:43,420

-they result in a thorough analysis of the code.

-

-34

-00:01:43,420 --> 00:01:46,840

-They are nevertheless a manual process, a human process.

-

-35

-00:01:46,840 --> 00:01:49,890

-So they're not formal and their effectiveness may depend

-

-36

-00:01:49,890 --> 00:01:53,560

-on the specific people performing the inspection. So its results

-

-37

-00:01:53,560 --> 00:01:57,150

-can be subjective. Finally, the main pro about formal

-

-38

-00:01:57,150 --> 00:02:01,090

-proofs of correctness is that they provide strong guarantees.

-

-39

-00:02:01,090 --> 00:02:03,740

-They can guarantee that the program is correct, which

-

-40

-00:02:03,740 --> 00:02:06,280

-is not something that any of the other approaches can

-

-41

-00:02:06,280 --> 00:02:09,505

-do, including study verification. But the main limitation of

-

-42

-00:02:09,505 --> 00:02:12,680

-formal proofs is that they need a form of specification,

-

-43

-00:02:12,680 --> 00:02:15,750

-a complete mathematical description of the expected behavior of

-

-44

-00:02:15,750 --> 00:02:19,060

-the whole program, and unfortunately such a specification is rarely

-

-45

-00:02:19,060 --> 00:02:21,920

-available, and it is very complex to build one.

-

-46

-00:02:21,920 --> 00:02:25,170

-In addition, it is also very complex, and possibly expensive,

-

-47

-00:02:25,170 --> 00:02:27,720

-to prove that the program corresponds to a specification.

-

-48

-00:02:27,720 --> 00:02:30,990

-That is a process that requires strong mathematical skills and,

-

-49

-00:02:30,990 --> 00:02:32,551

-therefore, a very specialized personnel.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/12 - Verification Approaches Quiz - lang_en_vs5.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/12 - Verification Approaches Quiz - lang_en_vs5.srt
deleted file mode 100644
index a5aa4f7..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/12 - Verification Approaches Quiz - lang_en_vs5.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,240 --> 00:00:02,570

-So let's have another simple quiz, and we're going to

-

-2

-00:00:02,570 --> 00:00:05,490

-have our developer Brett introducing the quiz. And the

-

-3

-00:00:05,490 --> 00:00:07,900

-starting point for this quiz is the fact that

-

-4

-00:00:07,900 --> 00:00:11,970

-today, quality assurance, or verification, if you wish, is mostly

-

-5

-00:00:11,970 --> 00:00:15,730

-testing. That is, testing is the most commonly used

-

-6

-00:00:15,730 --> 00:00:19,550

-activity to perform software verification. So now, I'm going to show

-

-7

-00:00:19,550 --> 00:00:22,310

-you a quote, 50% of my company employees are

-

-8

-00:00:22,310 --> 00:00:25,691

-testers and the rest spends 50% of their time testing,

-

-9

-00:00:25,691 --> 00:00:27,347

-so I want to ask you, who said

-

-10

-00:00:27,347 --> 00:00:29,664

-that? I'm going to give you some possibilities. Was

-

-11

-00:00:29,664 --> 00:00:34,215

-that Yogi Berra, Steve Jobs, Henry Ford, Bill

-

-12

-00:00:34,215 --> 00:00:37,360

-Gates or Frank Gehry? Take your best guess.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/13 - Verification Approaches Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/13 - Verification Approaches Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index b8a0076..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/13 - Verification Approaches Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,11 +0,0 @@
-1

-00:00:00,260 --> 00:00:04,090

-And the correct answer is Bill Gates. So this gives you an idea of how

-

-2

-00:00:04,090 --> 00:00:07,070

-important testing is in Microsoft in particular,

-

-3

-00:00:07,070 --> 00:00:09,350

-but in many other software companies in general.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/14 - Testing Introduction - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/14 - Testing Introduction - lang_en_vs4.srt
deleted file mode 100644
index 70df565..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/14 - Testing Introduction - lang_en_vs4.srt
+++ /dev/null
@@ -1,119 +0,0 @@
-1

-00:00:00,340 --> 00:00:02,290

-So let's talk more about testing, as we said a

-

-2

-00:00:02,290 --> 00:00:06,500

-little earlier in the lesson, testing means executing the program on

-

-3

-00:00:06,500 --> 00:00:09,400

-a sample of the input domain, that is of all

-

-4

-00:00:09,400 --> 00:00:12,210

-the possible input data and I really want to stress that

-

-5

-00:00:12,210 --> 00:00:16,190

-this sample is tiny sample of the input domain. There

-

-6

-00:00:16,190 --> 00:00:19,154

-are two important aspects of testing that I'm want to mention here,

-

-7

-00:00:19,154 --> 00:00:22,360

-there first one is that testing is a dynamic technique. And

-

-8

-00:00:22,360 --> 00:00:25,370

-what that means is that the program must be executed in

-

-9

-00:00:25,370 --> 00:00:28,130

-order to perform testing. The second important point is that

-

-10

-00:00:28,130 --> 00:00:32,040

-testing is an optimistic approximation. And what does it mean

-

-11

-00:00:32,040 --> 00:00:35,590

-to be optimistic? Well, it means that the program under

-

-12

-00:00:35,590 --> 00:00:38,820

-test is exercised with a very small subset of all the

-

-13

-00:00:38,820 --> 00:00:41,260

-possible inputs as we just said. And this is done

-

-14

-00:00:41,260 --> 00:00:45,150

-under the assumption that the behavior with any other input

-

-15

-00:00:45,150 --> 00:00:47,770

-is consistent with the behavior shown for the selected subset

-

-16

-00:00:47,770 --> 00:00:51,140

-of input data, that is why it is an optimistic approach.

-

-17

-00:00:51,140 --> 00:00:54,620

-Another concept that I want to mention explicitly, is the

-

-18

-00:00:54,620 --> 00:00:57,930

-concept of successful test. And I'm going to do that,

-

-19

-00:00:57,930 --> 00:01:01,260

-using another quote. This one from Goodenough and Gerhart

-

-20

-00:01:01,260 --> 00:01:03,850

-in their paper Towards a Theory of Test Data Selection,

-

-21

-00:01:03,850 --> 00:01:06,420

-and what the quote says is that a test

-

-22

-00:01:06,420 --> 00:01:10,000

-is successful if the program fails. And this might sound

-

-23

-00:01:10,000 --> 00:01:13,650

-counterintuitive, but the point here is that testing cannot

-

-24

-00:01:13,650 --> 00:01:16,490

-prove the absence of errors, but only reveal their presence.

-

-25

-00:01:16,490 --> 00:01:21,550

-If a set of tests does not produce any failure, we are either in the extremely

-

-26

-00:01:21,550 --> 00:01:24,050

-unlikely case of a correct program, or in

-

-27

-00:01:24,050 --> 00:01:26,650

-the very likely situation of a bad set of

-

-28

-00:01:26,650 --> 00:01:30,932

-tests that are not able to reveal failures of the program. And that is why we

-

-29

-00:01:30,932 --> 00:01:32,730

-say that the test is successful if you

-

-30

-00:01:32,730 --> 00:01:35,110

-can show that there are problems in the program.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/15 - Testing Granularity Levels - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/15 - Testing Granularity Levels - lang_en_vs4.srt
deleted file mode 100644
index 83df7ea..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/15 - Testing Granularity Levels - lang_en_vs4.srt
+++ /dev/null
@@ -1,275 +0,0 @@
-1

-00:00:00,160 --> 00:00:03,050

-And before I start talking about specific testing techniques, there's

-

-2

-00:00:03,050 --> 00:00:05,490

-something else that I want to discuss, which is Testing

-

-3

-00:00:05,490 --> 00:00:09,090

-Granularity Levels. So let's consider a software system, a system

-

-4

-00:00:09,090 --> 00:00:12,310

-made out of components that interact with one another. So the

-

-5

-00:00:12,310 --> 00:00:15,000

-first level that we consider in testing is called Unit

-

-6

-00:00:15,000 --> 00:00:18,490

-Testing, which is the testing of the individual units or modules

-

-7

-00:00:18,490 --> 00:00:20,690

-in isolation. The next step, is to see there are

-

-8

-00:00:20,690 --> 00:00:25,340

-multiple modules and their interactions. And this is called Integration Testing.

-

-9

-00:00:25,340 --> 00:00:28,650

-So, integration testing is the testing of the interactions among

-

-10

-00:00:28,650 --> 00:00:31,460

-different modules. And it can be performed according to different

-

-11

-00:00:31,460 --> 00:00:34,260

-strategies. Depending on the order in which the modules are

-

-12

-00:00:34,260 --> 00:00:37,570

-integrated and on whether we integrate one module at a time

-

-13

-00:00:37,570 --> 00:00:40,510

-or multiple modules together, all at once. And in this

-

-14

-00:00:40,510 --> 00:00:43,240

-latter case, we call this kind of integration testing, the one that

-

-15

-00:00:43,240 --> 00:00:47,640

-integrates all the modules at once, Big Bang integration testing.

-

-16

-00:00:47,640 --> 00:00:50,520

-And after performing integration testing, the next step is to test

-

-17

-00:00:50,520 --> 00:00:52,750

-the complete system as a whole. And this level of

-

-18

-00:00:52,750 --> 00:00:56,190

-testing is normally called, System Testing. So system testing in the

-

-19

-00:00:56,190 --> 00:00:59,560

-testing of the complete system and it includes both functional and

-

-20

-00:00:59,560 --> 00:01:03,250

-non functional testing. We will discuss functional and non functional testing

-

-21

-00:01:03,250 --> 00:01:05,575

-in details in the next two lessons. But I just

-

-22

-00:01:05,575 --> 00:01:08,330

-want to give you an idea of what they are intuitively. Functional

-

-23

-00:01:08,330 --> 00:01:12,250

-tests are the test that aim to verify the functionality provided

-

-24

-00:01:12,250 --> 00:01:15,680

-by the system. For example if you consider the function double

-

-25

-00:01:15,680 --> 00:01:17,840

-value that we saw earlier in the lesson, a

-

-26

-00:01:17,840 --> 00:01:20,660

-functional test will try to assess that that function

-

-27

-00:01:20,660 --> 00:01:23,970

-is producing the right value given a specific input.

-

-28

-00:01:23,970 --> 00:01:26,826

-Conversely, no functional test are the one that target, as

-

-29

-00:01:26,826 --> 00:01:30,540

-surprisingly, no functional properties of the system. For example,

-

-30

-00:01:30,540 --> 00:01:34,060

-no functional test will include performance tests, load tests,

-

-31

-00:01:34,060 --> 00:01:37,310

-robustness tests. In general, no functional tests will try

-

-32

-00:01:37,310 --> 00:01:41,410

-to assess different qualities of the system, such as reliability,

-

-33

-00:01:41,410 --> 00:01:45,970

-maintainability, usability, so basically, all the ilities that you can

-

-34

-00:01:45,970 --> 00:01:49,760

-think about. In addition to these three basic testing levels, there

-

-35

-00:01:49,760 --> 00:01:51,830

-are two more levels that I want to consider and that

-

-36

-00:01:51,830 --> 00:01:55,150

-I want to discuss. And they both involve the whole system.

-

-37

-00:01:55,150 --> 00:01:57,610

-And the first one is Acceptance Testing which is the

-

-38

-00:01:57,610 --> 00:02:01,320

-validation of the software against the Customer requirements. So this is

-

-39

-00:02:01,320 --> 00:02:04,090

-the testing that makes sure that the system does what the

-

-40

-00:02:04,090 --> 00:02:06,720

-customer wants it to do. And the last type of testing

-

-41

-00:02:06,720 --> 00:02:09,729

-that I want to mention is Regression Testing. And regression testing

-

-42

-00:02:09,729 --> 00:02:13,260

-is the type of testing or retesting, that we perform every time

-

-43

-00:02:13,260 --> 00:02:15,540

-that we change our system. And we need to make sure

-

-44

-00:02:15,540 --> 00:02:19,060

-that the changes behave as intended and that the unchanged code is

-

-45

-00:02:19,060 --> 00:02:22,680

-not negatively affected by the modification, by these changes. In fact,

-

-46

-00:02:22,680 --> 00:02:25,070

-what can happen when you modify the code is that parts of

-

-47

-00:02:25,070 --> 00:02:28,120

-the code that are related to the changes, are actually affected

-

-48

-00:02:28,120 --> 00:02:32,110

-by the changes, and start misbehaving. And we call those regression errors.

-

-49

-00:02:32,110 --> 00:02:35,080

-And regression errors, are very common. For example, you're probably

-

-50

-00:02:35,080 --> 00:02:38,070

-familiar with the situation in which, one software update is

-

-51

-00:02:38,070 --> 00:02:41,350

-released, and just a few days later, another software update

-

-52

-00:02:41,350 --> 00:02:44,640

-is released. In many cases that happens because the first update

-

-53

-00:02:44,640 --> 00:02:47,760

-was containing regression errors. So the changes in the code

-

-54

-00:02:47,760 --> 00:02:51,100

-that broke some functionality, that resulted in failures on the user's

-

-55

-00:02:51,100 --> 00:02:53,940

-machine and in bug reports and therefore that caused further

-

-56

-00:02:53,940 --> 00:02:57,090

-maintenance, further bug fixes, and a release on a new version.

-

-57

-00:02:57,090 --> 00:02:59,790

-Something else I'd like to mention about regression testing, is that

-

-58

-00:02:59,790 --> 00:03:02,535

-regression testing is one of the main causes why software maintenance is

-

-59

-00:03:02,535 --> 00:03:05,679

-so expensive. And that's also why researchers have invested a great

-

-60

-00:03:05,679 --> 00:03:07,481

-deal of effort into refining regression

-

-61

-00:03:07,481 --> 00:03:09,495

-testing techniques that can make regression

-

-62

-00:03:09,495 --> 00:03:12,599

-testing more effective and more efficient. So let me leave you,

-

-63

-00:03:12,599 --> 00:03:15,129

-with a little piece of advice which is try to automate as

-

-64

-00:03:15,129 --> 00:03:19,470

-much as possible regression testing. For example use scripts, use tools, make

-

-65

-00:03:19,470 --> 00:03:22,660

-sure to save your harness, make sure to save your input, and

-

-66

-00:03:22,660 --> 00:03:24,820

-outputs for the test, because you want to be able

-

-67

-00:03:24,820 --> 00:03:27,680

-to rerun your test, at a push of a button as

-

-68

-00:03:27,680 --> 00:03:29,750

-much as possible every time you change your code, to

-

-69

-00:03:29,750 --> 00:03:32,560

-avoid the presence of regression errors in the code you release.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/16 - Alpha and Beta Testing - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/16 - Alpha and Beta Testing - lang_en_vs4.srt
deleted file mode 100644
index f81f551..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/16 - Alpha and Beta Testing - lang_en_vs4.srt
+++ /dev/null
@@ -1,95 +0,0 @@
-1

-00:00:00,510 --> 00:00:02,754

-All the testing levels that we've seen so far is what

-

-2

-00:00:02,754 --> 00:00:06,058

-we can call developer's testing. So that's testing that is performed

-

-3

-00:00:06,058 --> 00:00:09,649

-either within the testing organization, or by somebody who's doing like

-

-4

-00:00:09,649 --> 00:00:13,520

-third-party testers on behalf of the testing organization. But there are two

-

-5

-00:00:13,520 --> 00:00:16,280

-other kinds of testing that are worth mentioning that are also

-

-6

-00:00:16,280 --> 00:00:19,600

-related to testing phases and these are alpha and beta testing.

-

-7

-00:00:19,600 --> 00:00:23,050

-Alpha testing is the testing performed by distributing a software system

-

-8

-00:00:23,050 --> 00:00:26,000

-ready to be released to a set of users that are internal

-

-9

-00:00:26,000 --> 00:00:29,480

-to the organization that developed the software. So you can consider these

-

-10

-00:00:29,480 --> 00:00:32,460

-users as, if you pass me the term, guinea pigs that will

-

-11

-00:00:32,460 --> 00:00:35,170

-use an early version of the code and will likely discover errors

-

-12

-00:00:35,170 --> 00:00:37,850

-that escaped testing and will have made it to the field if

-

-13

-00:00:37,850 --> 00:00:41,390

-not caught. Beta testing is the next step after alpha testing, in

-

-14

-00:00:41,390 --> 00:00:44,530

-which the software is released to a selected subset of users, in

-

-15

-00:00:44,530 --> 00:00:47,770

-this case, outside your organization. And also in this case, the users

-

-16

-00:00:47,770 --> 00:00:51,110

-are likely to discover latent errors in the code before it is officially

-

-17

-00:00:51,110 --> 00:00:54,240

-released to the broader user population, so before we have an

-

-18

-00:00:54,240 --> 00:00:56,850

-actual product release. So you may wonder why do we need

-

-19

-00:00:56,850 --> 00:00:59,360

-to do both alpha and beta testing. Why not just one

-

-20

-00:00:59,360 --> 00:01:02,980

-of the two? The reason is that alpha testing is performed

-

-21

-00:01:02,980 --> 00:01:06,730

-to iron out the very obvious issues that still escape testing,

-

-22

-00:01:06,730 --> 00:01:09,610

-but we want to do that before involving people outside your

-

-23

-00:01:09,610 --> 00:01:12,730

-organization. And the rationale is that alpha testers have a higher

-

-24

-00:01:12,730 --> 00:01:16,710

-tolerance for problems than beta testers, who expect a mostly working system.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/17 - Black and White Box Testing Introduction - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/17 - Black and White Box Testing Introduction - lang_en_vs4.srt
deleted file mode 100644
index c61e331..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/17 - Black and White Box Testing Introduction - lang_en_vs4.srt
+++ /dev/null
@@ -1,115 +0,0 @@
-1

-00:00:00,370 --> 00:00:02,520

-We're almost at the end of this lesson. In the

-

-2

-00:00:02,520 --> 00:00:05,520

-next two lessons we're going to talk about two main families

-

-3

-00:00:05,520 --> 00:00:07,800

-of testing techniques, black-box testing

-

-4

-00:00:07,800 --> 00:00:10,340

-techniques, and white-box testing techniques. So,

-

-5

-00:00:10,340 --> 00:00:12,730

-what I want to do before getting into the discussion of the

-

-6

-00:00:12,730 --> 00:00:15,385

-specific techniques in this families. I want to give you an

-

-7

-00:00:15,385 --> 00:00:19,440

-overview of what black-box testing and white-box testing are. Black box

-

-8

-00:00:19,440 --> 00:00:21,950

-testing is the kind of testing in which we consider the

-

-9

-00:00:21,950 --> 00:00:25,570

-software as a closed box. That's why it's called black box.

-

-10

-00:00:25,570 --> 00:00:27,770

-So we don't look inside the software, we don't want to

-

-11

-00:00:27,770 --> 00:00:30,131

-look at the code. We just going to look at the description

-

-12

-00:00:30,131 --> 00:00:33,210

-of the software. So this is the testing that is based

-

-13

-00:00:33,210 --> 00:00:36,100

-on a description of the software, which is what we normally

-

-14

-00:00:36,100 --> 00:00:39,690

-call the specification for the software. And what black box testing

-

-15

-00:00:39,690 --> 00:00:44,040

-tries to do is to cover as much specified behavior as

-

-16

-00:00:44,040 --> 00:00:47,290

-possible, and the main limitation black box testing and the reason

-

-17

-00:00:47,290 --> 00:00:51,540

-why this is complimentary to white-box testing is that it cannot reveal

-

-18

-00:00:51,540 --> 00:00:56,590

-errors due to implementation details. Conversely, white-box testing

-

-19

-00:00:56,590 --> 00:00:58,430

-is the kind of testing that looks inside the

-

-20

-00:00:58,430 --> 00:01:00,360

-box. So looks at the code and how

-

-21

-00:01:00,360 --> 00:01:02,760

-the code is written and uses this information to

-

-22

-00:01:02,760 --> 00:01:06,300

-perform the testing. So white-box testing is based

-

-23

-00:01:06,300 --> 00:01:09,120

-on the code, its goal is to cover as

-

-24

-00:01:09,120 --> 00:01:13,210

-much coded behavior in this case, as possible, and

-

-25

-00:01:13,210 --> 00:01:17,100

-its limitation is that unlike black-box testing, it can't

-

-26

-00:01:17,100 --> 00:01:21,880

-reveal errors due to missing paths. Where missing paths are

-

-27

-00:01:21,880 --> 00:01:25,250

-a part of a software specification that are not implemented and

-

-28

-00:01:25,250 --> 00:01:27,320

-the reason why you can not reveal them is because

-

-29

-00:01:27,320 --> 00:01:29,790

-it is focused on the code and not on the specification.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/18 - Black Box Testing Example - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/18 - Black Box Testing Example - lang_en_vs4.srt
deleted file mode 100644
index dab72eb..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/18 - Black Box Testing Example - lang_en_vs4.srt
+++ /dev/null
@@ -1,135 +0,0 @@
-1

-00:00:00,500 --> 00:00:03,185

-To give you a slightly better understanding of the differences

-

-2

-00:00:03,185 --> 00:00:06,300

-between black-box testing and white-box testing, I am going to provide you

-

-3

-00:00:06,300 --> 00:00:10,040

-a couple of simple examples that illustrate the, the strengths and

-

-4

-00:00:10,040 --> 00:00:12,920

-limitations of these two techniques. So, in this case, let's start

-

-5

-00:00:12,920 --> 00:00:15,750

-with black-box testing, so we're only working with this specification.

-

-6

-00:00:15,750 --> 00:00:18,540

-So, let's say that our specification says that this is a

-

-7

-00:00:18,540 --> 00:00:23,550

-program that inputs an integer value and prints it. And implementation,

-

-8

-00:00:23,550 --> 00:00:25,900

-we don't know because we're working at the black box level.

-

-9

-00:00:25,900 --> 00:00:28,710

-If we wanted to test this function according to its

-

-10

-00:00:28,710 --> 00:00:32,060

-specification, what we will probably do is to select a positive

-

-11

-00:00:32,060 --> 00:00:35,370

-integer, a negative integer, and the zero as test inputs

-

-12

-00:00:35,370 --> 00:00:37,840

-and see how the program behaves for these inputs. So let

-

-13

-00:00:37,840 --> 00:00:41,500

-me now show you a possible implementation for this specification.

-

-14

-00:00:41,500 --> 00:00:44,590

-What I'm showing here is this function that we called print

-

-15

-00:00:44,590 --> 00:00:48,010

-NumBytes, which takes the parameter and prints it. And one thing

-

-16

-00:00:48,010 --> 00:00:50,905

-that we notice right away is that, although in the specification,

-

-17

-00:00:50,905 --> 00:00:53,960

-numbers that are less than 1024 and numbers that

-

-18

-00:00:53,960 --> 00:00:57,320

-are greater or equal to 1024 are exactly equivalent from

-

-19

-00:00:57,320 --> 00:01:01,020

-the specification standpoint. They're however treated differently in the

-

-20

-00:01:01,020 --> 00:01:04,140

-code, so the developer decided that the program was just

-

-21

-00:01:04,140 --> 00:01:06,200

-going to print the value of the parameter if it's

-

-22

-00:01:06,200 --> 00:01:09,300

-less than 1024. But it was actually divided by 1024

-

-23

-00:01:09,300 --> 00:01:13,560

-and printing it with a kilobyte mark after it

-

-24

-00:01:13,560 --> 00:01:16,170

-if you are greater than 1024. And notice that here,

-

-25

-00:01:16,170 --> 00:01:19,370

-there is a problem. The developer, just a number 124, instead

-

-26

-00:01:19,370 --> 00:01:22,840

-of 1024. So there's probably a typo in this point in the

-

-27

-00:01:22,840 --> 00:01:26,260

-code. So this is a case in which by simply doing black-box

-

-28

-00:01:26,260 --> 00:01:28,750

-testing, so by simply looking at the specific issue, we might miss

-

-29

-00:01:28,750 --> 00:01:31,510

-this problem. Because we have no reason to consider numbers that are

-

-30

-00:01:31,510 --> 00:01:34,780

-less than 1024 or greater than 1024. However if we were to

-

-31

-00:01:34,780 --> 00:01:38,010

-look at the code, so operating at white-box manner, we will right

-

-32

-00:01:38,010 --> 00:01:41,340

-away see that we need to have a test case that checks

-

-33

-00:01:41,340 --> 00:01:44,880

-the program when the parameter is greater than 1024. And we will find

-

-34

-00:01:44,880 --> 00:01:47,300

-the problem right away. So now let me show you a dual example.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/19 - White Box Testing Example - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/19 - White Box Testing Example - lang_en_vs4.srt
deleted file mode 100644
index 896f9b1..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/19 - White Box Testing Example - lang_en_vs4.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,080 --> 00:00:03,086

-In this case we focus on white box testing. So consider now this

-

-2

-00:00:03,086 --> 00:00:06,556

-other function, called fun. And let's assume that we want to test this function

-

-3

-00:00:06,556 --> 00:00:09,777

-without having a specification. So without knowing exactly what it needs to do.

-

-4

-00:00:09,777 --> 00:00:12,996

-But just by looking at the code. So we will try to do the

-

-5

-00:00:12,996 --> 00:00:16,030

-problem in this case is to try to just execute all the statements.

-

-6

-00:00:16,030 --> 00:00:18,995

-In the function. And notice I will talk extensively of what does it

-

-7

-00:00:18,995 --> 00:00:22,560

-means to do white box testing later on in the next, two classes.

-

-8

-00:00:22,560 --> 00:00:25,560

-So if that's our goal, if our goal is to cover all the statements,

-

-9

-00:00:25,560 --> 00:00:27,670

-any input will really do. So any test case

-

-10

-00:00:27,670 --> 00:00:30,250

-will excecute all statements in the code. And we'll a

-

-11

-00:00:30,250 --> 00:00:33,801

-complete, you know, white-box testing coverage for the program.

-

-12

-00:00:33,801 --> 00:00:35,865

-Imagine that I now give you a specification for this

-

-13

-00:00:35,865 --> 00:00:39,071

-function. And what the specification says is that this

-

-14

-00:00:39,071 --> 00:00:43,232

-function inputs an integer parameter, param, and returns half of

-

-15

-00:00:43,232 --> 00:00:45,860

-its value, if param is even, and its value

-

-16

-00:00:45,860 --> 00:00:50,740

-unchanged otherwise. That means if param is odd. So looking

-

-17

-00:00:50,740 --> 00:00:54,320

-at this specification, we can clearly see that the function fun

-

-18

-00:00:54,320 --> 00:00:57,740

-works correctly only for even integers, and it doesn't work for

-

-19

-00:00:57,740 --> 00:01:00,570

-odd integers. Because it computes. Half of the value of the

-

-20

-00:01:00,570 --> 00:01:04,410

-parameter and returns it every time, no matter what param is. So

-

-21

-00:01:04,410 --> 00:01:07,320

-this is a case in which white box testing could easily

-

-22

-00:01:07,320 --> 00:01:10,620

-miss the problem, because as we said any input will exercise

-

-23

-00:01:10,620 --> 00:01:12,900

-the code. It's just by chance that we could reveal one

-

-24

-00:01:12,900 --> 00:01:15,750

-that revealed the problem in the code. Conversely if we were to

-

-25

-00:01:15,750 --> 00:01:19,520

-work, in a black box manner. Typically looking at the specification, we

-

-26

-00:01:19,520 --> 00:01:22,390

-will select at least one odd, and one even input number to

-

-27

-00:01:22,390 --> 00:01:25,010

-exercise all of the specified behavior. And we will find the problem

-

-28

-00:01:25,010 --> 00:01:28,110

-right away. So these two examples are just very small examples, and

-

-29

-00:01:28,110 --> 00:01:30,910

-they're kind of, you know, stretched. But these kind of issues occur

-

-30

-00:01:30,910 --> 00:01:33,680

-on a much bigger scale and in much more subtle ways in

-

-31

-00:01:33,680 --> 00:01:36,970

-real world software. And so what this examples do is to show

-

-32

-00:01:36,970 --> 00:01:41,270

-you, how black box and white box tests are really complimentary techniques.

-

-33

-00:01:41,270 --> 00:01:43,130

-So in the next two lessions we will explore

-

-34

-00:01:43,130 --> 00:01:45,130

-these two types of techniques in detail. We will

-

-35

-00:01:45,130 --> 00:01:48,020

-see different kinds of white box and black box

-

-36

-00:01:48,020 --> 00:01:50,670

-testing. And we'll talk about their strengths and the mutations

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/2 - Introduction - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/2 - Introduction - lang_en_vs4.srt
deleted file mode 100644
index 1a25089..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/2 - Introduction - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,280 --> 00:00:02,750

-So let me start with some examples that motivate the

-

-2

-00:00:02,750 --> 00:00:06,330

-need for very fine software. The first example I want to

-

-3

-00:00:06,330 --> 00:00:09,580

-use is the famous Arian five. And if you remember

-

-4

-00:00:09,580 --> 00:00:13,060

-that's a rocket that exploded not too long after departure.

-

-5

-00:00:13,060 --> 00:00:15,800

-Because of a software error. And even without going to

-

-6

-00:00:15,800 --> 00:00:19,400

-such dramatic examples. I'm sure you're all familiar with this

-

-7

-00:00:19,400 --> 00:00:22,470

-kind of situation. Or this one, or again in this

-

-8

-00:00:22,470 --> 00:00:26,070

-one. And here I'm not really picking on any specific organization,

-

-9

-00:00:26,070 --> 00:00:32,280

-operating system or software. The point I want to make is that software is

-

-10

-00:00:32,280 --> 00:00:34,730

-buggy. In fact, a federal report from

-

-11

-00:00:34,730 --> 00:00:37,810

-a few years ago assessed that software bugs

-

-12

-00:00:37,810 --> 00:00:41,300

-are costing the US economy, $60 billion

-

-13

-00:00:41,300 --> 00:00:44,120

-every year. In addition, studies have shown that

-

-14

-00:00:44,120 --> 00:00:47,810

-software contains on average one to five

-

-15

-00:00:47,810 --> 00:00:51,472

-bugs every 1000 lines of code. Building 100%

-

-16

-00:00:51,472 --> 00:00:55,940

-correct mass-market software is just impossible. And if

-

-17

-00:00:55,940 --> 00:00:58,270

-this is the case, what can we do?

-

-18

-00:00:58,270 --> 00:01:03,520

-What we need to do is to verify software as much as possible. In this part of

-

-19

-00:01:03,520 --> 00:01:05,750

-the course, we will discuss how we can

-

-20

-00:01:05,750 --> 00:01:09,480

-do this. We will discuss different alternative ways

-

-21

-00:01:09,480 --> 00:01:13,980

-of very fine software systems. With particular attention

-

-22

-00:01:13,980 --> 00:01:16,570

-to the most common type of verification. Which is

-

-23

-00:01:16,570 --> 00:01:19,470

-software testing. Before doing that however, let

-

-24

-00:01:19,470 --> 00:01:21,090

-me go over some basic terms that are

-

-25

-00:01:21,090 --> 00:01:23,190

-commonly used. And I have to say,

-

-26

-00:01:23,190 --> 00:01:26,330

-often misused in the context of software verification.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/3 - Failure, Fault, and Error - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/3 - Failure, Fault, and Error - lang_en_vs4.srt
deleted file mode 100644
index e6459c0..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/3 - Failure, Fault, and Error - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,390 --> 00:00:03,460

-The first term I want to define, is failure.

-

-2

-00:00:03,460 --> 00:00:09,080

-A failure is an observable incorrect behavior of the software.

-

-3

-00:00:09,080 --> 00:00:10,910

-It is conceptually related to the behavior of the

-

-4

-00:00:10,910 --> 00:00:13,910

-program, rather than its code. The second term I want

-

-5

-00:00:13,910 --> 00:00:17,600

-to introduce is fault, which is also called bug.

-

-6

-00:00:17,600 --> 00:00:20,540

-And the fault or bug, is an incorrect piece of

-

-7

-00:00:20,540 --> 00:00:22,780

-code. In other words, a fault is related to

-

-8

-00:00:22,780 --> 00:00:25,900

-the code. And is a necessary, but not sufficient condition

-

-9

-00:00:25,900 --> 00:00:28,160

-for the occurrence of a failure. The final

-

-10

-00:00:28,160 --> 00:00:30,880

-term I want to introduce is, error. Where an

-

-11

-00:00:30,880 --> 00:00:33,630

-error is the cause of a fault. It is

-

-12

-00:00:33,630 --> 00:00:36,990

-usually a human error, which can be conceptual. A

-

-13

-00:00:36,990 --> 00:00:39,620

-typo or something along those lines. And know that

-

-14

-00:00:39,620 --> 00:00:43,422

-this terminology, failure, fault and error, is the official

-

-15

-00:00:43,422 --> 00:00:46,945

-[UNKNOWN] terminology. So you cannot go wrong if you

-

-16

-00:00:46,945 --> 00:00:51,282

-use it. Now, let me illustrate the difference between

-

-17

-00:00:51,282 --> 00:00:57,153

-failure, fault and error. Using a small example. What I'm showing here is

-

-18

-00:00:57,153 --> 00:01:00,876

-a small function that, as you can see from its name, takes an

-

-19

-00:01:00,876 --> 00:01:04,920

-integer parameter i. And is supposed to double the value of i, and

-

-20

-00:01:04,920 --> 00:01:08,420

-return it. As we can clearly see, this is not what the function does.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/4 - Failure, Fault, and Error Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/4 - Failure, Fault, and Error Quiz - lang_en_vs4.srt
deleted file mode 100644
index 03f6a6a..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/4 - Failure, Fault, and Error Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,900

-So now I have a few questions for you. And so we use, as

-

-2

-00:00:02,900 --> 00:00:07,350

-usual, our developer Janet to introduce a quiz. And the first question I want to

-

-3

-00:00:07,350 --> 00:00:11,710

-ask you is the following. A call to double passing three as a parameter returns

-

-4

-00:00:11,710 --> 00:00:16,149

-the value nine. What is this? Is that a failure, a fault, or an error?

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/5 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/5 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 1bcde7f..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/5 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,440 --> 00:00:06,614

-The fact that the call to double three returns nine instead of six is clearly

-

-2

-00:00:06,614 --> 00:00:13,000

-a failure because it is an observable incorrect behavior of the program.

-

-3

-00:00:13,000 --> 00:00:16,110

-So let me remind you that the failure is conceptually related to the

-

-4

-00:00:16,110 --> 00:00:20,076

-behavior of the program, to the way the program acts and not its code.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/6 - Failure, Fault, and Error Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/6 - Failure, Fault, and Error Quiz - lang_en_vs4.srt
deleted file mode 100644
index f51ac9f..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/6 - Failure, Fault, and Error Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,19 +0,0 @@
-1

-00:00:00,310 --> 00:00:02,690

-So now, let me ask you a second question. We just saw that we

-

-2

-00:00:02,690 --> 00:00:04,640

-can, reveal a failure in the program

-

-3

-00:00:04,640 --> 00:00:06,640

-by calling double with parameter three. Where

-

-4

-00:00:06,640 --> 00:00:09,750

-is the fault that causes such failure in the program? So I want you

-

-5

-00:00:09,750 --> 00:00:12,900

-to write the number of the line of code that, that contains the fault.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/7 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/7 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index bc55603..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/7 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,190 --> 00:00:02,404

-Before telling you what the right answer is, let

-

-2

-00:00:02,404 --> 00:00:04,240

-me remind you that the fault is related to

-

-3

-00:00:04,240 --> 00:00:06,508

-the code, and is a necessary, but not sufficient

-

-4

-00:00:06,508 --> 00:00:09,560

-condition for the occurrence of a failure. So in this

-

-5

-00:00:09,560 --> 00:00:12,450

-case, a single faulty line is responsible for the

-

-6

-00:00:12,450 --> 00:00:17,435

-failure, which is line three. So the correct answer, is

-

-7

-00:00:17,435 --> 00:00:20,700

-three. At line three, the program computes i times

-

-8

-00:00:20,700 --> 00:00:23,080

-i, instead of i times 2, as it should do.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/8 - Failure, Fault, and Error Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/8 - Failure, Fault, and Error Quiz - lang_en_vs4.srt
deleted file mode 100644
index 18515a6..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/8 - Failure, Fault, and Error Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,370 --> 00:00:02,090

-So, I want to ask you one last question about

-

-2

-00:00:02,090 --> 00:00:05,480

-this problem. What is the error that cause the fault

-

-3

-00:00:05,480 --> 00:00:08,180

-at line three? Remember that an error is the

-

-4

-00:00:08,180 --> 00:00:11,010

-cause of a fault and it's usually a human error.

diff --git a/usth/ICT2.7/P4L1 General Concepts Subtitles/9 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L1 General Concepts Subtitles/9 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 56db4c1..0000000
--- a/usth/ICT2.7/P4L1 General Concepts Subtitles/9 - Failure, Fault, and Error Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,39 +0,0 @@
-1

-00:00:00,350 --> 00:00:02,740

-And I apologize, but this was a tricky question that

-

-2

-00:00:02,740 --> 00:00:06,770

-we cannot really answer. We really have no way to

-

-3

-00:00:06,770 --> 00:00:08,860

-know what the error was. It could have been a

-

-4

-00:00:08,860 --> 00:00:13,240

-typo, an erroneous copy and paste operation, or even worse

-

-5

-00:00:13,240 --> 00:00:16,079

-a conceptual error. In case a developer did not know

-

-6

-00:00:16,079 --> 00:00:19,910

-what it means to double a number. Unfortunately though, the

-

-7

-00:00:19,910 --> 00:00:22,200

-developer is the only one who could actually answer this

-

-8

-00:00:22,200 --> 00:00:25,610

-question. So even though we cannot really answer this question,

-

-9

-00:00:25,610 --> 00:00:28,000

-having it help us think about how the

-

-10

-00:00:28,000 --> 00:00:31,000

-error is in fact related to human behavior.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 09a8f10..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,320 --> 00:00:02,620

-In the previous lesson, we discussed the fundamental

-

-2

-00:00:02,620 --> 00:00:06,380

-concepts behind software verification in general, and software testing

-

-3

-00:00:06,380 --> 00:00:09,470

-in particular. In this lesson, we will discuss

-

-4

-00:00:09,470 --> 00:00:12,310

-one of the two main testing approaches. Black box

-

-5

-00:00:12,310 --> 00:00:16,180

-testing, also called functional testing. We will cover

-

-6

-00:00:16,180 --> 00:00:19,180

-the main characteristic of black box testing, its pros

-

-7

-00:00:19,180 --> 00:00:22,260

-and cons, and discuss some commonly used black

-

-8

-00:00:22,260 --> 00:00:25,350

-box testing techniques. We will conclude the lesson with

-

-9

-00:00:25,350 --> 00:00:28,520

-a practical exercise in which we will apply a specific black

-

-10

-00:00:28,520 --> 00:00:32,520

-box testing technique to a real program. We will derive test

-

-11

-00:00:32,520 --> 00:00:34,980

-cases for the program and assess how the use of a

-

-12

-00:00:34,980 --> 00:00:38,690

-systematic approach, in contrast to a brute force approach, can help.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/10 - Test Data Selection Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/10 - Test Data Selection Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 418ed91..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/10 - Test Data Selection Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,79 +0,0 @@
-1

-00:00:00,025 --> 00:00:02,900

-Okay, so now we're going to answer the question. So if we want

-

-2

-00:00:02,900 --> 00:00:06,520

-to consider all these inputs, and run them all on the software,

-

-3

-00:00:06,520 --> 00:00:09,490

-let's see how it will work. Let's assume that these are, 32

-

-4

-00:00:09,490 --> 00:00:12,280

-bit integers. So at this point what we will have is, a

-

-5

-00:00:12,280 --> 00:00:15,130

-number of combination, which is 2 to the 32, times 2 to

-

-6

-00:00:15,130 --> 00:00:18,390

-the 32. They're two integers. This is equal to 2 to the

-

-7

-00:00:18,390 --> 00:00:21,910

-64, which in turn, is more or less equal, to 10 to

-

-8

-00:00:21,910 --> 00:00:25,110

-the 19. So 10 to the 19 is the number of tests that

-

-9

-00:00:25,110 --> 00:00:27,960

-we need to run to cover the whole domain. Now let's assume

-

-10

-00:00:27,960 --> 00:00:31,400

-that we can run one test per nanosecond. So what that means

-

-11

-00:00:31,400 --> 00:00:34,290

-is that we can run 10 to the 9 tests per second,

-

-12

-00:00:34,290 --> 00:00:37,240

-and that's a lot. If we do the math, that results in 10

-

-13

-00:00:37,240 --> 00:00:40,750

-to the 10 seconds over all, because we have 10 to the

-

-14

-00:00:40,750 --> 00:00:43,760

-19 tests, we could run 10 to the 9 tests per second

-

-15

-00:00:43,760 --> 00:00:46,630

-so, we do the math, and we can run all these tests

-

-16

-00:00:46,630 --> 00:00:50,340

-in 10 to the 10 seconds. And what that corresponds to, it's about

-

-17

-00:00:50,340 --> 00:00:54,470

-600 years, so a lot of time. So even for such

-

-18

-00:00:54,470 --> 00:00:57,710

-a simple problem, a problem that takes two integers and adds them,

-

-19

-00:00:57,710 --> 00:01:00,990

-it will take more than 500 years to test it exhaustively. So

-

-20

-00:01:00,990 --> 00:01:04,690

-the bottom line here is that we just can't do exhaustive testing.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/11 - Why Not Random Testing? - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/11 - Why Not Random Testing? - lang_en_vs4.srt
deleted file mode 100644
index a91af45..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/11 - Why Not Random Testing? - lang_en_vs4.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,310 --> 00:00:02,250

-So then maybe what we can do is just to

-

-2

-00:00:02,250 --> 00:00:05,720

-pick our test inputs randomly so to do what is called

-

-3

-00:00:05,720 --> 00:00:08,850

-random testing. And what that means is that we pick the

-

-4

-00:00:08,850 --> 00:00:11,720

-inputs to test just as we pick a number by rolling

-

-5

-00:00:11,720 --> 00:00:15,410

-a set of dice randomly. And this will have several advantages.

-

-6

-00:00:15,410 --> 00:00:18,780

-First, we will pick inputs uniformly. So if we use a

-

-7

-00:00:18,780 --> 00:00:21,790

-uniform distribution as the basis for our random testing, we will

-

-8

-00:00:21,790 --> 00:00:25,540

-make no preferences. In other words, all inputs will be considered

-

-9

-00:00:25,540 --> 00:00:28,324

-equal, of equal value. And what that means in turn, is

-

-10

-00:00:28,324 --> 00:00:32,640

-that random testing eliminates designer bias. So what does designer bias

-

-11

-00:00:32,640 --> 00:00:36,030

-mean? Designer bias is the problem of making the same assumption,

-

-12

-00:00:36,030 --> 00:00:38,570

-when we read the specification and we interpret it and when we

-

-13

-00:00:38,570 --> 00:00:42,100

-develop test cases. Which means that the developer might develop code,

-

-14

-00:00:42,100 --> 00:00:44,930

-assuming a given behavior of the user. And we may write

-

-15

-00:00:44,930 --> 00:00:47,520

-tests, making the same assumptions. And the problem, of course, is

-

-16

-00:00:47,520 --> 00:00:50,690

-even worse if it's the same person that develops the code and

-

-17

-00:00:50,690 --> 00:00:53,730

-writes the test cases. With random testing, the problem is gone,

-

-18

-00:00:53,730 --> 00:00:57,440

-because we just pick randomly what our inputs will be. So

-

-19

-00:00:57,440 --> 00:01:00,180

-why not do in random? The problem is that when testing,

-

-20

-00:01:00,180 --> 00:01:03,610

-we are looking for a needle in a haystack. Actually, multiple

-

-21

-00:01:03,610 --> 00:01:06,620

-needles in multiple haystacks, if we want to be precise. So,

-

-22

-00:01:06,620 --> 00:01:09,500

-random approaches are not necessarily the best way to go about

-

-23

-00:01:09,500 --> 00:01:12,430

-it, because we might just be looking in all the wrong

-

-24

-00:01:12,430 --> 00:01:15,760

-places. So let me show you this, using a different representation

-

-25

-00:01:15,760 --> 00:01:18,000

-for the haystack. What I'm showing here is a grid, and

-

-26

-00:01:18,000 --> 00:01:22,130

-imagine this grid just expanding indefinitely outside the screen, and this grid

-

-27

-00:01:22,130 --> 00:01:26,120

-represents the domain for the program, so each box in the grid,

-

-28

-00:01:26,120 --> 00:01:29,050

-each square in the grid, it's a possible input. So what happens

-

-29

-00:01:29,050 --> 00:01:32,670

-with bugs is that bugs are very scarce in this grid. Maybe

-

-30

-00:01:32,670 --> 00:01:35,070

-there is a bug here, so that means that there is a

-

-31

-00:01:35,070 --> 00:01:38,090

-bug, than an input, in this point we'll reveal. And maybe there

-

-32

-00:01:38,090 --> 00:01:40,820

-is another bug that will be triggered by an input over here.

-

-33

-00:01:40,820 --> 00:01:44,570

-So imagine this spread out over this infinite grid. Its very unlikely

-

-34

-00:01:44,570 --> 00:01:47,440

-that just by picking randomly that we will be able to get to

-

-35

-00:01:47,440 --> 00:01:50,910

-these two points. Fortunately not all is lost, there is a silver lining.

-

-36

-00:01:50,910 --> 00:01:53,410

-So we need to look a little more in depth into this grid.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/12 - Partition Testing - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/12 - Partition Testing - lang_en_vs4.srt
deleted file mode 100644
index b91462c..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/12 - Partition Testing - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,570

-So let me use a slightly expanded version of this

-

-2

-00:00:02,570 --> 00:00:05,560

-grid. Although we're indeed looking at a needle in a haystack.

-

-3

-00:00:05,560 --> 00:00:09,560

-And failing inputs are generally sparse, very sparse, in the input

-

-4

-00:00:09,560 --> 00:00:12,890

-domain. However, they tend to be dense in some parts of

-

-5

-00:00:12,890 --> 00:00:15,860

-the domain. Like here or here. So how can we leverage

-

-6

-00:00:15,860 --> 00:00:18,920

-this? The fact that the failures are dense in some subdomains?

-

-7

-00:00:18,920 --> 00:00:22,290

-As it turns out, the domain is naturally split into partitions.

-

-8

-00:00:22,290 --> 00:00:25,340

-Where partitions are areas of the domain that are treated homogeneously

-

-9

-00:00:25,340 --> 00:00:28,070

-by the software. And this is what happens, that normally,

-

-10

-00:00:28,070 --> 00:00:31,020

-failures tend to be dense in this partitions. So the way

-

-11

-00:00:31,020 --> 00:00:34,000

-to leverage this characteristic of failures, is that we don't know

-

-12

-00:00:34,000 --> 00:00:36,950

-want to pick inputs randomly, in the input domain. Just here

-

-13

-00:00:36,950 --> 00:00:39,460

-and there. Rather we want to do two things. First we

-

-14

-00:00:39,460 --> 00:00:43,300

-want to identify partitions of our domain. And second we want

-

-15

-00:00:43,300 --> 00:00:46,950

-to select inputs from each partition. And by doing so, we

-

-16

-00:00:46,950 --> 00:00:50,300

-can dramatically increase our chances to reveal faults in the code.

-

-17

-00:00:50,300 --> 00:00:54,170

-So the name that is normally used for this process, is partition testing.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/13 - Partition Testing Example - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/13 - Partition Testing Example - lang_en_vs4.srt
deleted file mode 100644
index 6738346..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/13 - Partition Testing Example - lang_en_vs4.srt
+++ /dev/null
@@ -1,167 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,969

-So let's look at how this will work with an example.

-

-2

-00:00:02,969 --> 00:00:06,210

-I'm going to use this simple program that takes two inputs. The

-

-3

-00:00:06,210 --> 00:00:08,790

-first input is a string, str, and the second one is

-

-4

-00:00:08,790 --> 00:00:11,575

-an integer, size. And the problem is called split. And as

-

-5

-00:00:11,575 --> 00:00:14,363

-the name says what it does is to take this string,

-

-6

-00:00:14,363 --> 00:00:17,491

-str, and split it into sub string, into chunks of size

-

-7

-00:00:17,491 --> 00:00:21,550

-characters each. So how do we identify some possible partitions for

-

-8

-00:00:21,550 --> 00:00:25,620

-this program? If we consider the input size, we can identify

-

-9

-00:00:25,620 --> 00:00:29,630

-three neutral partitions which are size less than 0. For example,

-

-10

-00:00:29,630 --> 00:00:32,259

-we want to test how the program behaves. But if we pass an

-

-11

-00:00:32,259 --> 00:00:36,100

-incorrect size, size equal to 0, which is also a partition. In

-

-12

-00:00:36,100 --> 00:00:39,390

-this case, a partition with a single element. And the third case

-

-13

-00:00:39,390 --> 00:00:42,540

-is size greater than 0, which I will consider to be

-

-14

-00:00:42,540 --> 00:00:44,960

-kind of the standard case. And actually let me do a, you

-

-15

-00:00:44,960 --> 00:00:48,220

-know, slight aggression so when I was talking about designer bias. So

-

-16

-00:00:48,220 --> 00:00:50,630

-this is a case in which designer bias might not make you

-

-17

-00:00:50,630 --> 00:00:53,050

-think of using size less than 0 because you read the

-

-18

-00:00:53,050 --> 00:00:56,210

-spec. And you sort of assume that the size will be positive.

-

-19

-00:00:56,210 --> 00:00:58,556

-Whereas the right thing to do when we test is to consider

-

-20

-00:00:58,556 --> 00:01:01,700

-the complete domain rather than just parts of it. So now let's

-

-21

-00:01:01,700 --> 00:01:04,760

-look at string, str, and let's see what kind of sub

-

-22

-00:01:04,760 --> 00:01:06,538

-domains we could identify for this

-

-23

-00:01:06,538 --> 00:01:08,670

-parameter. And notice another important aspect

-

-24

-00:01:08,670 --> 00:01:12,290

-here is that we treat each different part of the input independently,

-

-25

-00:01:12,290 --> 00:01:15,760

-which also helps breaking down the problem. One interesting sub domain is

-

-26

-00:01:15,760 --> 00:01:18,980

-the domain that includes all the strings whose length is less than

-

-27

-00:01:18,980 --> 00:01:22,310

-size. So all the strings that will not be displayed. Another subdomain

-

-28

-00:01:22,310 --> 00:01:25,000

-is all the strings with length which is between the value of

-

-29

-00:01:25,000 --> 00:01:28,350

-size and twice the value of size. A third subdomain is the one

-

-30

-00:01:28,350 --> 00:01:31,820

-including all the strings whose length is greater than twice the value

-

-31

-00:01:31,820 --> 00:01:35,140

-of size. And we can continue and identify more and more subdomain.

-

-32

-00:01:35,140 --> 00:01:38,350

-The key thing here is that we have to do that based

-

-33

-00:01:38,350 --> 00:01:41,180

-on the domain. So we need to adapt what we just did here

-

-34

-00:01:41,180 --> 00:01:44,620

-based on, on the specific domain involved and on the type

-

-35

-00:01:44,620 --> 00:01:47,190

-of data in this domain. So at this point we said that

-

-36

-00:01:47,190 --> 00:01:49,630

-there were two steps. One was to identify the subdomains and

-

-37

-00:01:49,630 --> 00:01:52,990

-the second one was to pick values in this subdomain. The values

-

-38

-00:01:52,990 --> 00:01:55,320

-that we'll actually use for the testing. In this case, we

-

-39

-00:01:55,320 --> 00:01:58,218

-do not want to just pick any value. Rather we want to

-

-40

-00:01:58,218 --> 00:01:59,871

-pick values that are particularly

-

-41

-00:01:59,871 --> 00:02:02,710

-interesting, particularly representative. So what does

-

-42

-00:02:02,710 --> 00:02:05,800

-that mean? Well, we're going to do that based on an intuitive idea.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/14 - Boundary Values - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/14 - Boundary Values - lang_en_vs4.srt
deleted file mode 100644
index 3d54ad4..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/14 - Boundary Values - lang_en_vs4.srt
+++ /dev/null
@@ -1,55 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,590

-So let's go back again to our domain, with

-

-2

-00:00:02,590 --> 00:00:06,580

-all the sub-domains identified. And the basic idea, or the

-

-3

-00:00:06,580 --> 00:00:09,750

-intuitive idea I was talking about, is that errors tend

-

-4

-00:00:09,750 --> 00:00:12,425

-to occur at the boundary of a domain, or a

-

-5

-00:00:12,425 --> 00:00:15,510

-sub-domain. Like in this case. And why? Because these

-

-6

-00:00:15,510 --> 00:00:19,360

-are the cases that are less understood by the developers.

-

-7

-00:00:19,360 --> 00:00:22,155

-Like for example, the last iteration of a loop, or

-

-8

-00:00:22,155 --> 00:00:25,150

-a special value like zero for integers. So if this

-

-9

-00:00:25,150 --> 00:00:29,590

-is true, what we want to do is to select inputs at these

-

-10

-00:00:29,590 --> 00:00:32,189

-boundaries. And this is complementary to partition

-

-11

-00:00:32,189 --> 00:00:34,270

-testing, in the sense that partition testing

-

-12

-00:00:34,270 --> 00:00:38,160

-will identify the partitions in which we want to select inputs, and boundary

-

-13

-00:00:38,160 --> 00:00:40,570

-testing. So the selection of boundary values

-

-14

-00:00:40,570 --> 00:00:43,060

-will help select inputs in these partitions.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/15 - Boundary Values Example - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/15 - Boundary Values Example - lang_en_vs4.srt
deleted file mode 100644
index b344802..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/15 - Boundary Values Example - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,200 --> 00:00:03,320

-So now let's go back to our split example. Let me

-

-2

-00:00:03,320 --> 00:00:05,790

-rearrange things a little bit to make more room. So now I'm

-

-3

-00:00:05,790 --> 00:00:09,160

-going to put the domains for size and for strength one next to

-

-4

-00:00:09,160 --> 00:00:12,210

-the other. So let's look at what some possible inputs will be

-

-5

-00:00:12,210 --> 00:00:15,140

-for the sub domains that we identified when we use the idea

-

-6

-00:00:15,140 --> 00:00:17,790

-of selecting input of the boundary. If we look at the first

-

-7

-00:00:17,790 --> 00:00:21,860

-subdomain, size less than zero, one reasonable input is, size equals to

-

-8

-00:00:21,860 --> 00:00:25,360

-minus 1, because minus 1 is the boundary value for the domain

-

-9

-00:00:25,360 --> 00:00:28,530

-of the integers less than zero. If we look at the third

-

-10

-00:00:28,530 --> 00:00:32,119

-subdomain, possibly interesting case is the one of size of equal to

-

-11

-00:00:32,119 --> 00:00:34,900

-1, for the same reasoning that we used for the previous subdomain,

-

-12

-00:00:34,900 --> 00:00:37,670

-for size less than zero. And, let's try to select another one

-

-13

-00:00:37,670 --> 00:00:40,870

-for this subdomain, for the integers greater than zero. If there is

-

-14

-00:00:40,870 --> 00:00:44,200

-a concept of maximal integer, we can select that one as our

-

-15

-00:00:44,200 --> 00:00:47,140

-boundary value. And of course we could select much more, but this

-

-16

-00:00:47,140 --> 00:00:50,630

-is just to give you an idea. Other possible inputs. One interesting

-

-17

-00:00:50,630 --> 00:00:53,310

-example for the first one, string with length less than

-

-18

-00:00:53,310 --> 00:00:57,690

-size will be a string with length size minus one. Again

-

-19

-00:00:57,690 --> 00:01:00,240

-this is the boundary value for this domain. And we could

-

-20

-00:01:00,240 --> 00:01:03,500

-continue in this way like for example selecting a string who's

-

-21

-00:01:03,500 --> 00:01:07,310

-length is exactly size as a boundary value for this

-

-22

-00:01:07,310 --> 00:01:10,490

-other domain. Instant one, and we look back actually to this

-

-23

-00:01:10,490 --> 00:01:12,940

-example and look at it in a more extensive way when

-

-24

-00:01:12,940 --> 00:01:15,690

-we actually talk about a specific method for doing this kind

-

-25

-00:01:15,690 --> 00:01:16,340

-of process.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/16 - Deriving Test Case Specifications - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/16 - Deriving Test Case Specifications - lang_en_vs4.srt
deleted file mode 100644
index 5164f1a..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/16 - Deriving Test Case Specifications - lang_en_vs4.srt
+++ /dev/null
@@ -1,199 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,790

-Now, let's go back to our systematic functional testing

-

-2

-00:00:02,790 --> 00:00:05,540

-approach and all the steps in this process. So

-

-3

-00:00:05,540 --> 00:00:07,680

-far we've seen the first step and the second

-

-4

-00:00:07,680 --> 00:00:10,340

-step. Now we're going to look at this step in which,

-

-5

-00:00:10,340 --> 00:00:13,290

-once we have identified the values of interest, we

-

-6

-00:00:13,290 --> 00:00:18,110

-derive test case specifications for these values, or using these

-

-7

-00:00:18,110 --> 00:00:21,300

-values. And the test case specification defines how the

-

-8

-00:00:21,300 --> 00:00:25,230

-values should be put together when actually testing the system.

-

-9

-00:00:25,230 --> 00:00:29,110

-And test case specification describe how these values should be put

-

-10

-00:00:29,110 --> 00:00:32,360

-together when testing the system. So let me go back one more

-

-11

-00:00:32,360 --> 00:00:34,780

-time to our split program, so that we can use the

-

-12

-00:00:34,780 --> 00:00:37,450

-information that we already computed. At this point what we have is

-

-13

-00:00:37,450 --> 00:00:41,670

-some possible inputs for "string," our first parameter, and for "size,"

-

-14

-00:00:41,670 --> 00:00:44,410

-our second parameter. And we want to put them together, to generate

-

-15

-00:00:44,410 --> 00:00:47,080

-the description of what the test case should be. So let

-

-16

-00:00:47,080 --> 00:00:50,420

-me once more rearrange this a little bit. I first remove the

-

-17

-00:00:50,420 --> 00:00:53,360

-description of the subdomains, because we won't use them in this step.

-

-18

-00:00:53,360 --> 00:00:55,800

-And I moved out the set of all our possible inputs, that we're

-

-19

-00:00:55,800 --> 00:00:59,470

-going to combine to create the test case specification. And one possible way

-

-20

-00:00:59,470 --> 00:01:03,320

-of doing that is simply to combine the values for the first parameter,

-

-21

-00:01:03,320 --> 00:01:06,370

-and the values for the second parameter. So the Cartesian product. So

-

-22

-00:01:06,370 --> 00:01:09,060

-if we do that, what we will obtain is, for example, if we

-

-23

-00:01:09,060 --> 00:01:12,470

-consider the first possible input, size is equal to minus 1, we can

-

-24

-00:01:12,470 --> 00:01:15,510

-combine it with these two possible inputs for string, and we will get

-

-25

-00:01:15,510 --> 00:01:18,680

-size is equal to minus 1 string with length minus 2, or

-

-26

-00:01:18,680 --> 00:01:21,680

-size is equal to minus 1 string with length minus 1. And we'll

-

-27

-00:01:21,680 --> 00:01:24,200

-go back in a second to see what this means. Now if we

-

-28

-00:01:24,200 --> 00:01:27,510

-consider the second possible value for size, size is equal to one, we

-

-29

-00:01:27,510 --> 00:01:30,260

-also have two cases so the first one in this case that will

-

-30

-00:01:30,260 --> 00:01:34,030

-be considered a string with length zero. So the antistring. And we can

-

-31

-00:01:34,030 --> 00:01:37,410

-continue combining this value, but one thing I want to point out is

-

-32

-00:01:37,410 --> 00:01:40,570

-that if we just go in this straight forward and brute force sort

-

-33

-00:01:40,570 --> 00:01:43,390

-of way, we will obtain many combinations that don't make any sense,

-

-34

-00:01:43,390 --> 00:01:46,500

-like for example, this combination which doesn't make any sense because we can

-

-35

-00:01:46,500 --> 00:01:50,410

-not create the string with length minus 2. Similar for this combination, because

-

-36

-00:01:50,410 --> 00:01:53,190

-then by the same token, we cannot raise things with length minus 1.

-

-37

-00:01:53,190 --> 00:01:55,730

-And so there's a lot of cases that we will have to eliminate

-

-38

-00:01:55,730 --> 00:01:59,380

-afterwards. So what we're going to see in a few minutes is a possible

-

-39

-00:01:59,380 --> 00:02:02,970

-way in which we can avoid producing these meaningless cases. And at the

-

-40

-00:02:02,970 --> 00:02:06,380

-same time, keep under control, the number of test cases that we generate.

-

-41

-00:02:06,380 --> 00:02:09,070

-So lets go back for the last time to our steps

-

-42

-00:02:09,070 --> 00:02:11,980

-for systematic functional testing. What we just did was to derive

-

-43

-00:02:11,980 --> 00:02:15,040

-test case specification from a set of relevant inputs. The following

-

-44

-00:02:15,040 --> 00:02:18,420

-step is to use these test case specifications to generate actual test

-

-45

-00:02:18,420 --> 00:02:21,170

-cases. And this is normally a fairly mechanical step in the

-

-46

-00:02:21,170 --> 00:02:23,900

-sense that we just have to instantiate what is in the test

-

-47

-00:02:23,900 --> 00:02:27,970

-case specification as actual test cases. And it's really dependent on

-

-48

-00:02:27,970 --> 00:02:32,300

-the specific type of partitions and values identified on the specific context.

-

-49

-00:02:32,300 --> 00:02:35,100

-So instead of looking at that here in the, in the abstract,

-

-50

-00:02:35,100 --> 00:02:37,480

-I'm going to show you with an example later on, in the lesson.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/17 - Category Partition Method - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/17 - Category Partition Method - lang_en_vs4.srt
deleted file mode 100644
index 938e80c..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/17 - Category Partition Method - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,200 --> 00:00:03,690

-What we will discuss next is a specific black-box testing

-

-2

-00:00:03,690 --> 00:00:07,240

-approach. So a specific instance of the general approach that

-

-3

-00:00:07,240 --> 00:00:10,814

-we just saw. And this approach is the category-partition method,

-

-4

-00:00:10,814 --> 00:00:13,418

-and was defined by Ostrand &amp; Balcer in 1988 in

-

-5

-00:00:13,418 --> 00:00:16,760

-an article to the peer [UNKNOWN] communication of the ACM.

-

-6

-00:00:16,760 --> 00:00:19,490

-So this is a method for going from a specification,

-

-7

-00:00:19,490 --> 00:00:21,370

-a description of the system, to a set of test

-

-8

-00:00:21,370 --> 00:00:26,170

-cases like any other black-box testing approach by following six steps.

-

-9

-00:00:26,170 --> 00:00:28,370

-So let's look at what these steps are. The first

-

-10

-00:00:28,370 --> 00:00:31,850

-step is to identify independently testable features and this is

-

-11

-00:00:31,850 --> 00:00:33,870

-a step that we are familiar with because its exactly

-

-12

-00:00:33,870 --> 00:00:36,950

-the same step that we performed in the generic black box

-

-13

-00:00:36,950 --> 00:00:39,480

-testing approach that we just discussed. The second step is

-

-14

-00:00:39,480 --> 00:00:42,250

-to identify categories. Then the next step is to partition

-

-15

-00:00:42,250 --> 00:00:45,070

-categories into choices. Identify constraints

-

-16

-00:00:45,070 --> 00:00:47,530

-among choices. Produce and evaluate

-

-17

-00:00:47,530 --> 00:00:51,330

-test case specifications. And finally, the sixth step is to generate

-

-18

-00:00:51,330 --> 00:00:54,100

-test cases from test case specifications. So two of

-

-19

-00:00:54,100 --> 00:00:56,970

-the key elements in these six steps are the two

-

-20

-00:00:56,970 --> 00:00:59,430

-that give the name to the technique so the identification

-

-21

-00:00:59,430 --> 00:01:02,240

-of the categories and the partition of these categories into

-

-22

-00:01:02,240 --> 00:01:04,810

-choices. What we're going to do next is to go

-

-23

-00:01:04,810 --> 00:01:07,670

-and look at each one of the steps independently, except

-

-24

-00:01:07,670 --> 00:01:10,285

-for the first one. Because we're already familiar with that

-

-25

-00:01:10,285 --> 00:01:12,650

-step, and this method doesn't really add much to it.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/18 - Identify Categories - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/18 - Identify Categories - lang_en_vs4.srt
deleted file mode 100644
index a1eb4dd..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/18 - Identify Categories - lang_en_vs4.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,980

-In the second step of the category partition technique, the goal is

-

-2

-00:00:02,980 --> 00:00:05,630

-to Identify Categories. Where categories are

-

-3

-00:00:05,630 --> 00:00:08,650

-characteristics of each input element. So

-

-4

-00:00:08,650 --> 00:00:11,490

-let me illustrate what that means using an example. And to do

-

-5

-00:00:11,490 --> 00:00:14,440

-that I'm going to use again the example of the split program, as

-

-6

-00:00:14,440 --> 00:00:16,830

-we are already familiar with it and we kind of already played

-

-7

-00:00:16,830 --> 00:00:20,110

-with it. When we were talking about the generic black box approach.

-

-8

-00:00:20,110 --> 00:00:22,293

-So let me bring back the program, and let me remind you

-

-9

-00:00:22,293 --> 00:00:25,440

-that what the program does is to take two inputs, a string and

-

-10

-00:00:25,440 --> 00:00:28,560

-the size, and it breaks down the string into chunks,

-

-11

-00:00:28,560 --> 00:00:31,300

-whose length is size. If we look at the split program

-

-12

-00:00:31,300 --> 00:00:34,330

-there are two input elements, str and size so we going to

-

-13

-00:00:34,330 --> 00:00:37,930

-identify categories for these two. So starting from str, what are

-

-14

-00:00:37,930 --> 00:00:41,228

-the interesting characteristics of the string? In, in this step

-

-15

-00:00:41,228 --> 00:00:44,948

-you're going to use your domain knowledge, your understanding of what a

-

-16

-00:00:44,948 --> 00:00:47,986

-string is, and for example we might identify the length of

-

-17

-00:00:47,986 --> 00:00:50,528

-the string and the content of the string as the two

-

-18

-00:00:50,528 --> 00:00:53,840

-main characteristics that we want to focus on. If we now

-

-19

-00:00:53,840 --> 00:00:57,540

-move our focus to size, the only characteristic I can really

-

-20

-00:00:57,540 --> 00:01:00,340

-think of for an integer is its value. So that's what

-

-21

-00:01:00,340 --> 00:01:02,470

-I'm going to mark here. So at the end of the step

-

-22

-00:01:02,470 --> 00:01:05,030

-what we have is that we have two categories. So two

-

-23

-00:01:05,030 --> 00:01:08,930

-interesting characteristics for the string input str, which are the length

-

-24

-00:01:08,930 --> 00:01:12,940

-and the content. And one category for the integer input size

-

-25

-00:01:12,940 --> 00:01:16,480

-which is its value. And notice that there's not only one solution.

-

-26

-00:01:16,480 --> 00:01:18,200

-So there's not only one possibility.

-

-27

-00:01:18,200 --> 00:01:20,384

-So that the specific characteristics that you

-

-28

-00:01:20,384 --> 00:01:22,800

-will identify are somehow subjective. But the

-

-29

-00:01:22,800 --> 00:01:25,630

-important point is that you identify characteristics

-

-30

-00:01:25,630 --> 00:01:29,259

-that are meaningful and they sort of cover the main aspects of the

-

-31

-00:01:29,259 --> 00:01:31,200

-inputs, which is the case for the

-

-32

-00:01:31,200 --> 00:01:33,440

-categories that we've identified in this example.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/19 - Partition Categories into Choices - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/19 - Partition Categories into Choices - lang_en_vs4.srt
deleted file mode 100644
index a411c30..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/19 - Partition Categories into Choices - lang_en_vs4.srt
+++ /dev/null
@@ -1,151 +0,0 @@
-1

-00:00:00,230 --> 00:00:03,250

-Now we move to the next step, which involves partitioning the

-

-2

-00:00:03,250 --> 00:00:07,680

-categories that we just identified into choices. And these choices are the

-

-3

-00:00:07,680 --> 00:00:11,930

-interesting cases for each category. So the interesting subdomains for each one

-

-4

-00:00:11,930 --> 00:00:14,810

-of these categories. So once more, lets look at that using our

-

-5

-00:00:14,810 --> 00:00:18,110

-example, the split program. So lets start by considering length. What are

-

-6

-00:00:18,110 --> 00:00:20,710

-the interesting cases when we think about the length of a string?

-

-7

-00:00:20,710 --> 00:00:23,220

-Some of those we already saw, one interesting case is the case

-

-8

-00:00:23,220 --> 00:00:26,190

-of the length of size zero, so a string with no characters.

-

-9

-00:00:26,190 --> 00:00:29,030

-Another interesting case is the one in which the length of the

-

-10

-00:00:29,030 --> 00:00:31,780

-string is size minus one, so the string is just one character

-

-11

-00:00:31,780 --> 00:00:34,610

-short of the size at which it will be cut by the

-

-12

-00:00:34,610 --> 00:00:38,160

-split program. And we can continue along these lines, so we will select

-

-13

-00:00:38,160 --> 00:00:42,950

-size, size plus one, size twice the value of size minus one,

-

-14

-00:00:42,950 --> 00:00:45,560

-and so on and so forth. But even without listing all of

-

-15

-00:00:45,560 --> 00:00:47,500

-those, I'm sure you get the idea of what it means to

-

-16

-00:00:47,500 --> 00:00:49,780

-identify this interesting cases. Let's see

-

-17

-00:00:49,780 --> 00:00:51,702

-the movements that are considering the content.

-

-18

-00:00:51,702 --> 00:00:53,990

-So without the interesting cases when we think about the content

-

-19

-00:00:53,990 --> 00:00:56,520

-of the string. So possible interesting case is the string that

-

-20

-00:00:56,520 --> 00:01:00,660

-contains only spaces. Why? Well maybe because a split is written

-

-21

-00:01:00,660 --> 00:01:04,290

-spaces in a special way. Similarly a string that contains special

-

-22

-00:01:04,290 --> 00:01:06,780

-characters, like non printable characters,

-

-23

-00:01:06,780 --> 00:01:09,020

-like tabulation characters, new line might

-

-24

-00:01:09,020 --> 00:01:12,240

-also be an interesting case, something that we want to test. Also

-

-25

-00:01:12,240 --> 00:01:14,280

-in this case we could continue and go on and on.

-

-26

-00:01:14,280 --> 00:01:17,250

-So basically here you just want to put all the interesting cases

-

-27

-00:01:17,250 --> 00:01:20,010

-that you can think of when you consider the content

-

-28

-00:01:20,010 --> 00:01:22,440

-of a string. Now let's move to the value as the

-

-29

-00:01:22,440 --> 00:01:25,740

-next category. So the value of the input size. And

-

-30

-00:01:25,740 --> 00:01:29,280

-here we might want to consider a size zero, special case, a

-

-31

-00:01:29,280 --> 00:01:33,640

-normal situation, like size greater than zero, another special case,

-

-32

-00:01:33,640 --> 00:01:36,420

-size less than zero or maxint. And these are, if you

-

-33

-00:01:36,420 --> 00:01:39,420

-remember, I accepted the cases that we consider when we look

-

-34

-00:01:39,420 --> 00:01:42,350

-at this example, before. And also here we can continue and

-

-35

-00:01:42,350 --> 00:01:43,970

-go on and on. So, at the end of the

-

-36

-00:01:43,970 --> 00:01:46,860

-step, what we have is a set of interesting cases

-

-37

-00:01:46,860 --> 00:01:49,220

-for each one of the categories, and now we can

-

-38

-00:01:49,220 --> 00:01:51,150

-start to think about how we want to combine them.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt
deleted file mode 100644
index 2af56c5..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,450 --> 00:00:03,400

-As we said at the end of the previous lesson, black-box testing is

-

-2

-00:00:03,400 --> 00:00:06,230

-the testing of the software when we look at it as a black box,

-

-3

-00:00:06,230 --> 00:00:09,110

-as a closed box, without looking at it inside, without looking at the

-

-4

-00:00:09,110 --> 00:00:10,750

-code. And there are several advantages in

-

-5

-00:00:10,750 --> 00:00:12,680

-using black-box testing. So let me recap

-

-6

-00:00:12,680 --> 00:00:15,590

-those advantages, some of which we already mentioned, and let me also expand

-

-7

-00:00:15,590 --> 00:00:18,220

-on that a little bit. The first advantage of when I mentioned is that

-

-8

-00:00:18,220 --> 00:00:22,760

-black box focuses on the domain, on the input domain of the software. And

-

-9

-00:00:22,760 --> 00:00:25,750

-as such, we can use it to make sure that we are actually covering

-

-10

-00:00:25,750 --> 00:00:28,400

-this domain, that we are actually covering the important behaviors of

-

-11

-00:00:28,400 --> 00:00:32,200

-the software. A second advantage is that black box testing does not

-

-12

-00:00:32,200 --> 00:00:35,402

-need the code. What that means is that you can perform early

-

-13

-00:00:35,402 --> 00:00:38,801

-test design. So you can start designing and writing your test cases,

-

-14

-00:00:38,801 --> 00:00:41,423

-even before writing your code, so that when the code is

-

-15

-00:00:41,423 --> 00:00:44,520

-ready, we can test it right away. And that helps prevent a

-

-16

-00:00:44,520 --> 00:00:48,054

-problem that is very typical in real life software development, which is

-

-17

-00:00:48,054 --> 00:00:50,790

-getting an idea of the project and having no time to create

-

-18

-00:00:50,790 --> 00:00:53,040

-the tests. In this way, we already have the tests, so

-

-19

-00:00:53,040 --> 00:00:56,170

-we just have to run them. Another advantage is that black-box testing

-

-20

-00:00:56,170 --> 00:00:59,530

-can catch logic defects, because it focuses on the description of what

-

-21

-00:00:59,530 --> 00:01:02,440

-the software should do, and therefore on its logic. If we derive

-

-22

-00:01:02,440 --> 00:01:05,250

-test cases from such description, then we can catch these kind of

-

-23

-00:01:05,250 --> 00:01:07,510

-problems. And finally, black-box testing is

-

-24

-00:01:07,510 --> 00:01:09,900

-applicable at all granularity levels, which

-

-25

-00:01:09,900 --> 00:01:13,490

-means that we can use black-box testing in unit testing, integration testing,

-

-26

-00:01:13,490 --> 00:01:16,290

-system testing, and so on. We can use it at all levels.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/20 - Identify Constraints Among Choices - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/20 - Identify Constraints Among Choices - lang_en_vs4.srt
deleted file mode 100644
index 0278cc8..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/20 - Identify Constraints Among Choices - lang_en_vs4.srt
+++ /dev/null
@@ -1,239 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,080

-Something that we saw when we were looking at the split

-

-2

-00:00:02,080 --> 00:00:05,760

-program before is that if we just combine the interesting values that

-

-3

-00:00:05,760 --> 00:00:08,490

-we identify, we might end up with a lot of cases.

-

-4

-00:00:08,490 --> 00:00:11,030

-And I mentioned that we, we're going to look at some way of

-

-5

-00:00:11,030 --> 00:00:13,720

-addressing that problem. And this is exactly what happens in the

-

-6

-00:00:13,720 --> 00:00:17,420

-next step of the category partition method, in which we identify constraints

-

-7

-00:00:17,420 --> 00:00:20,510

-among choices. And why do we identify these constraints? We do

-

-8

-00:00:20,510 --> 00:00:23,440

-that to eliminate meaningless combinations of

-

-9

-00:00:23,440 --> 00:00:25,460

-inputs. If you remember, for example,

-

-10

-00:00:25,460 --> 00:00:27,260

-we had the case in which we were trying to

-

-11

-00:00:27,260 --> 00:00:30,110

-create a string with a size less than 0, which

-

-12

-00:00:30,110 --> 00:00:32,930

-doesn't make any sense. And very importantly, we also do

-

-13

-00:00:32,930 --> 00:00:37,070

-that to reduce the number of test cases. Because every time

-

-14

-00:00:37,070 --> 00:00:40,930

-we constrain one of the possible choices, we eliminate possible

-

-15

-00:00:40,930 --> 00:00:43,250

-test cases, so we can use it to keep under

-

-16

-00:00:43,250 --> 00:00:45,960

-control the number of tests that we generate. There are

-

-17

-00:00:45,960 --> 00:00:47,571

-three types of properties. The

-

-18

-00:00:47,571 --> 00:00:50,610

-pair property...if, error properties, and properties

-

-19

-00:00:50,610 --> 00:00:52,610

-of type single. So we're going to look at what these

-

-20

-00:00:52,610 --> 00:00:56,230

-properties mean, using, once more, our example of the split program.

-

-21

-00:00:56,230 --> 00:00:58,750

-In particular, we're going to use some of the choices that we

-

-22

-00:00:58,750 --> 00:01:02,080

-identified earlier. So let's look, for example, at choice 0, for

-

-23

-00:01:02,080 --> 00:01:04,599

-category length of the string. All we can say is that,

-

-24

-00:01:04,599 --> 00:01:07,860

-if the length is 0, this define a special property of

-

-25

-00:01:07,860 --> 00:01:11,160

-the string. And that was specified in this way by saying

-

-26

-00:01:11,160 --> 00:01:15,610

-that this identifies property zerovalue. So every time that we use

-

-27

-00:01:15,610 --> 00:01:19,080

-this choice, zerovalue is defined. At this point, we can use

-

-28

-00:01:19,080 --> 00:01:20,550

-this to exclude some meaningless

-

-29

-00:01:20,550 --> 00:01:23,170

-combinations. For instance, consider special characters.

-

-30

-00:01:23,170 --> 00:01:25,130

-If we have a string of length 0, which means a

-

-31

-00:01:25,130 --> 00:01:26,850

-string with no characters. Obviously, there

-

-32

-00:01:26,850 --> 00:01:28,760

-cannot be special characters. So, considering

-

-33

-00:01:28,760 --> 00:01:31,020

-this combination will just be a waste of time. So what

-

-34

-00:01:31,020 --> 00:01:33,770

-we do is that we specify next to this choice, that we

-

-35

-00:01:33,770 --> 00:01:36,360

-will only consider this if length is not 0. And we

-

-36

-00:01:36,360 --> 00:01:41,110

-do this by saying that we consider this only if not zerovalue.

-

-37

-00:01:41,110 --> 00:01:43,970

-So, if zerovalue is not defined. So this pair is an

-

-38

-00:01:43,970 --> 00:01:47,640

-example of a property...if case. Define a property and use that

-

-39

-00:01:47,640 --> 00:01:49,770

-property. Now let's look at a case in which we might

-

-40

-00:01:49,770 --> 00:01:52,580

-want to use an error property. For instance, when we look at

-

-41

-00:01:52,580 --> 00:01:56,480

-the category value for the input size, the choice value less

-

-42

-00:01:56,480 --> 00:01:59,510

-than 0 is an erroneous choice. So it's a choice that

-

-43

-00:01:59,510 --> 00:02:02,630

-we selected to test a possibly erroneous situation, so we can

-

-44

-00:02:02,630 --> 00:02:06,160

-mark this as an error property. And what that means is that

-

-45

-00:02:06,160 --> 00:02:09,949

-when generating a combination of choices, we will consider this only

-

-46

-00:02:09,949 --> 00:02:12,990

-once because we assume that we just want to test this error condition

-

-47

-00:02:12,990 --> 00:02:16,260

-once. Finally, the single property is a property that we use

-

-48

-00:02:16,260 --> 00:02:19,050

-when we want to limit the number of test cases. And it's

-

-49

-00:02:19,050 --> 00:02:21,900

-similar as an effect to error. It just has a different

-

-50

-00:02:21,900 --> 00:02:24,410

-meaning. So what we do when we use the single property is

-

-51

-00:02:24,410 --> 00:02:27,420

-that we're saying that this choice, we want to use in only

-

-52

-00:02:27,420 --> 00:02:31,120

-one combination. So don't combine it multiple times. And that, of course,

-

-53

-00:02:31,120 --> 00:02:34,260

-given the combinatorial nature of the problem, cuts down dramatically

-

-54

-00:02:34,260 --> 00:02:36,370

-the number of test cases. And we might use, for

-

-55

-00:02:36,370 --> 00:02:39,500

-instance, the single property for maxint, which means that we

-

-56

-00:02:39,500 --> 00:02:41,890

-will only have one test case in which the size is

-

-57

-00:02:41,890 --> 00:02:44,300

-equal to maxint. We're actually going to see a demo

-

-58

-00:02:44,300 --> 00:02:46,880

-on this topic so we'll have more chances of seeing how

-

-59

-00:02:46,880 --> 00:02:49,370

-properties work in practice and how good they are at

-

-60

-00:02:49,370 --> 00:02:53,022

-eliminating meaningless combinations and at reducing the number of test cases.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/21 - Produce and Evaluate Test Case Specifications - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/21 - Produce and Evaluate Test Case Specifications - lang_en_vs4.srt
deleted file mode 100644
index ebf8098..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/21 - Produce and Evaluate Test Case Specifications - lang_en_vs4.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,130 --> 00:00:03,200

-Before getting to our demo, we still have two steps to consider.

-

-2

-00:00:03,200 --> 00:00:06,570

-The first step corresponds to the identification of the test case specifications

-

-3

-00:00:06,570 --> 00:00:09,890

-in our general systematic approach. And in fact, it's called produce and

-

-4

-00:00:09,890 --> 00:00:13,410

-evaluate test case specifications. This is a step than can be completely

-

-5

-00:00:13,410 --> 00:00:16,590

-automated given the results of the previous steps. And the final result

-

-6

-00:00:16,590 --> 00:00:19,860

-of this step is the production of a set of test frames.

-

-7

-00:00:19,860 --> 00:00:22,820

-Where a test frame is the specification of a test. Let me

-

-8

-00:00:22,820 --> 00:00:25,330

-show you an example of this. What we are looking at here

-

-9

-00:00:25,330 --> 00:00:28,380

-is a test frame for the program split. Test frames are normally

-

-10

-00:00:28,380 --> 00:00:31,460

-identified by a sequence number. But in this case we are looking at

-

-11

-00:00:31,460 --> 00:00:34,290

-the 30th six test frame. And what they do is simply to

-

-12

-00:00:34,290 --> 00:00:38,280

-specify the characteristic of the inputs for that test. In this case, since

-

-13

-00:00:38,280 --> 00:00:40,920

-we have two inputs, we have two entries, the first one for

-

-14

-00:00:40,920 --> 00:00:44,010

-string str tells us that the length of the string has to be

-

-15

-00:00:44,010 --> 00:00:47,840

-size minus 1, and that the string has to contain special characters. And

-

-16

-00:00:47,840 --> 00:00:50,380

-for size, it tells us that the value of size has to be

-

-17

-00:00:50,380 --> 00:00:53,340

-greater than zero. As the title says, this step is meant

-

-18

-00:00:53,340 --> 00:00:56,790

-to produce but also evaluate the case specification. What does it mean

-

-19

-00:00:56,790 --> 00:01:00,070

-to evaluate? One of the advantages of this approach is that we

-

-20

-00:01:00,070 --> 00:01:03,420

-can easily use it to assess how many test frames and therefore

-

-21

-00:01:03,420 --> 00:01:06,120

-how many test cases we will generate with the current least

-

-22

-00:01:06,120 --> 00:01:09,340

-of categories, choices and constraints. And the beauty of this is that

-

-23

-00:01:09,340 --> 00:01:12,320

-if the number is too large we can just add additional constraints

-

-24

-00:01:12,320 --> 00:01:15,840

-and reduce it. And given then the step is automated we just

-

-25

-00:01:15,840 --> 00:01:19,030

-add constraints push a button and we get our new set of

-

-26

-00:01:19,030 --> 00:01:21,580

-test frames. And again we can have a wait it either go

-

-27

-00:01:21,580 --> 00:01:24,560

-hat or add more constraints if we need to further reduce it

-

-28

-00:01:24,560 --> 00:01:26,320

-and this is something else that we will see in our demo.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/22 - Generate Test Cases from Test Case Specifications - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/22 - Generate Test Cases from Test Case Specifications - lang_en_vs4.srt
deleted file mode 100644
index 7d74ae3..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/22 - Generate Test Cases from Test Case Specifications - lang_en_vs4.srt
+++ /dev/null
@@ -1,91 +0,0 @@
-1

-00:00:00,135 --> 00:00:01,935

-So we get to the last step of the technique in

-

-2

-00:00:01,935 --> 00:00:05,142

-which once we have generated test case specifications. We create test

-

-3

-00:00:05,142 --> 00:00:09,180

-cases starting from this specifications. This step mainly consists in a

-

-4

-00:00:09,180 --> 00:00:12,840

-simple instantiation of frames and it's final result is a set of

-

-5

-00:00:12,840 --> 00:00:16,840

-concrete tests. For our example, test frame number 36 that we

-

-6

-00:00:16,840 --> 00:00:19,270

-just saw, this will be the resulting test case, which has

-

-7

-00:00:19,270 --> 00:00:21,490

-the same ID, so that we can track it and will

-

-8

-00:00:21,490 --> 00:00:25,520

-specify to concrete values, not just the specification for the input elements.

-

-9

-00:00:25,520 --> 00:00:29,130

-So string STR will have this value. And the integer size

-

-10

-00:00:29,130 --> 00:00:31,720

-will have this value. And these two values satisfy what this

-

-11

-00:00:31,720 --> 00:00:35,260

-test case specification was. Which was, having a string contain special

-

-12

-00:00:35,260 --> 00:00:38,760

-characters. Here, we have two special characters, like the new line

-

-13

-00:00:38,760 --> 00:00:41,900

-and the tab. And, we have a size which is greater

-

-14

-00:00:41,900 --> 00:00:44,430

-than zero, in particular, okay? And this is a test case

-

-15

-00:00:44,430 --> 00:00:46,880

-that we can actually run on our code. That we can

-

-16

-00:00:46,880 --> 00:00:50,730

-run on the split program. So, to summarize, we perform six steps

-

-17

-00:00:50,730 --> 00:00:54,400

-in which we went from a high level description of what the program does, to a

-

-18

-00:00:54,400 --> 00:00:56,070

-set of concrete test cases. And this is

-

-19

-00:00:56,070 --> 00:00:57,880

-one of those test cases. So what, what we're

-

-20

-00:00:57,880 --> 00:01:00,210

-going to do next, we're going to do a mini-demo,

-

-21

-00:01:00,210 --> 00:01:02,260

-in which we do this for real. We take

-

-22

-00:01:02,260 --> 00:01:05,440

-the program, we identify categories, choices, constraints, and

-

-23

-00:01:05,440 --> 00:01:07,800

-we actually generate test frames and then test cases.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/23 - Category Partition Demo - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/23 - Category Partition Demo - lang_en_vs4.srt
deleted file mode 100644
index 51c2e52..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/23 - Category Partition Demo - lang_en_vs4.srt
+++ /dev/null
@@ -1,867 +0,0 @@
-1

-00:00:01,290 --> 00:00:03,210

-In this demo, we're going to do exactly what we

-

-2

-00:00:03,210 --> 00:00:06,370

-did just now in the lesson. We're going to use

-

-3

-00:00:06,370 --> 00:00:09,250

-the category partition method to go from a high-level

-

-4

-00:00:09,250 --> 00:00:12,930

-description of a piece of software of a program to

-

-5

-00:00:12,930 --> 00:00:15,512

-a set of test cases for that program. To

-

-6

-00:00:15,512 --> 00:00:17,640

-do that, we're going to use a simple tool. So

-

-7

-00:00:17,640 --> 00:00:21,040

-I'm going to show you here the tool that is

-

-8

-00:00:21,040 --> 00:00:26,380

-called a tsl generator right here. This tool is available

-

-9

-00:00:26,380 --> 00:00:28,520

-to you, so you can look in the class notes to

-

-10

-00:00:28,520 --> 00:00:31,900

-see information on how to download it. And together with the tool,

-

-11

-00:00:31,900 --> 00:00:34,890

-we are also going to provide a manual for the tool, and

-

-12

-00:00:34,890 --> 00:00:37,680

-a set of files that I'm going to use in this demo. So

-

-13

-00:00:37,680 --> 00:00:40,420

-you should be able to do exactly what I'm doing. So

-

-14

-00:00:40,420 --> 00:00:45,110

-again, all of those are available from the class notes. So specifically,

-

-15

-00:00:45,110 --> 00:00:48,390

-today we're going to write test cases for the grep program. So in

-

-16

-00:00:48,390 --> 00:00:51,970

-case you're familiar with the grep utility, this is a simplified version

-

-17

-00:00:51,970 --> 00:00:55,060

-of that utility. So basically the grep utility allows you

-

-18

-00:00:55,060 --> 00:00:58,410

-to search a file for the occurrences of a given

-

-19

-00:00:58,410 --> 00:01:01,552

-pattern. So you can invoke it, as it's shown here

-

-20

-00:01:01,552 --> 00:01:05,570

-in the synopsis, by executing grep, the pattern that you're

-

-21

-00:01:05,570 --> 00:01:08,310

-looking for, and the filename in which you want to

-

-22

-00:01:08,310 --> 00:01:10,300

-look for the pattern. And let me read the description

-

-23

-00:01:10,300 --> 00:01:13,650

-of the grep utility. The grep utility searches files for

-

-24

-00:01:13,650 --> 00:01:17,110

-a pattern and brings all lines that contain that pattern

-

-25

-00:01:17,110 --> 00:01:20,900

-on the standard output. A line that contains multiple occurrences of

-

-26

-00:01:20,900 --> 00:01:24,350

-the pattern is printed only once. The pattern is any sequence

-

-27

-00:01:24,350 --> 00:01:27,700

-of characters. To include a blank in the pattern, the entire

-

-28

-00:01:27,700 --> 00:01:31,060

-pattern must be enclosed in single quotes. To include a quote

-

-29

-00:01:31,060 --> 00:01:34,420

-sign in the pattern, the quote sign must be escaped, which

-

-30

-00:01:34,420 --> 00:01:36,260

-means that we have to put a slash in front of

-

-31

-00:01:36,260 --> 00:01:39,290

-the quotes sign. And in general, it is safest to enclose

-

-32

-00:01:39,290 --> 00:01:42,210

-the entire pattern in single quotes. So this is our high

-

-33

-00:01:42,210 --> 00:01:45,420

-level description for the program, for the softer system, that

-

-34

-00:01:45,420 --> 00:01:47,270

-we need to test. So now let me show you

-

-35

-00:01:47,270 --> 00:01:50,600

-what a possible set of categories and partitions could be

-

-36

-00:01:50,600 --> 00:01:53,770

-for this program. So what I have here is a

-

-37

-00:01:53,770 --> 00:01:58,080

-file, a textual file, which contains all the categories and

-

-38

-00:01:58,080 --> 00:02:02,760

-partitions for the elements that are relevant for my program.

-

-39

-00:02:02,760 --> 00:02:05,240

-In particular, when we look at the file, we can

-

-40

-00:02:05,240 --> 00:02:07,809

-see that the file can be characterized by its size.

-

-41

-00:02:08,889 --> 00:02:12,160

-And in this case, I've got two choices. The file can

-

-42

-00:02:12,160 --> 00:02:16,050

-be empty or not empty. The second characteristic of the file

-

-43

-00:02:16,050 --> 00:02:19,490

-that I'm considering is the number of occurrences of the pattern

-

-44

-00:02:19,490 --> 00:02:22,320

-in the file. And I'm considering that the pattern might not occur

-

-45

-00:02:22,320 --> 00:02:25,780

-in the file or it might occur once, or multiple times.

-

-46

-00:02:25,780 --> 00:02:28,264

-I'm not going to go through the rest of the file because we

-

-47

-00:02:28,264 --> 00:02:31,234

-already covered how to apply the category partition method in the

-

-48

-00:02:31,234 --> 00:02:34,226

-lesson. So if you had doubts about that, about the method and

-

-49

-00:02:34,226 --> 00:02:36,952

-how to apply, you might want to go back and watch again the

-

-50

-00:02:36,952 --> 00:02:40,040

-lesson. What I want to show you here is how you can go

-

-51

-00:02:40,040 --> 00:02:43,670

-from this information that you have here, that we have derived by

-

-52

-00:02:43,670 --> 00:02:47,020

-applying the, the first steps of the method, to a set of

-

-53

-00:02:47,020 --> 00:02:50,650

-test frames, and then, a set of test packs. So to do

-

-54

-00:02:50,650 --> 00:02:53,240

-that we're going to use the tool that I just mentioned. So let

-

-55

-00:02:53,240 --> 00:02:56,670

-me bring back my terminal. So first of all, let's see how

-

-56

-00:02:56,670 --> 00:02:59,570

-we can run the tool. So you have a manual that will explain

-

-57

-00:02:59,570 --> 00:03:02,180

-all the details on how to build the file that we're

-

-58

-00:03:02,180 --> 00:03:04,350

-going to feed the tool. So what is the format and so

-

-59

-00:03:04,350 --> 00:03:07,780

-on. Here I'm just going to see how I can run the

-

-60

-00:03:07,780 --> 00:03:10,828

-tool. So first of all, let me point out that this was

-

-61

-00:03:10,828 --> 00:03:15,028

-developed together by professors from the University of California Irvine and

-

-62

-00:03:15,028 --> 00:03:18,020

-Oregon State University. And as you can see, we can run

-

-63

-00:03:18,020 --> 00:03:20,968

-TSL generator and specify that we want to see the main

-

-64

-00:03:20,968 --> 00:03:24,361

-page. So in this case if we run it this, this way,

-

-65

-00:03:24,361 --> 00:03:27,723

-you'll have some basic information on how to run

-

-66

-00:03:27,723 --> 00:03:30,720

-the tool. And from the main page you can see

-

-67

-00:03:30,720 --> 00:03:33,520

-that you can specify the minus c flag and in

-

-68

-00:03:33,520 --> 00:03:37,360

-this case the TSL generator will report the number of

-

-69

-00:03:37,360 --> 00:03:41,410

-test frames generated without writing them to output. For

-

-70

-00:03:41,410 --> 00:03:43,828

-example, you might want to use this as we will do

-

-71

-00:03:43,828 --> 00:03:46,308

-to see how many tests that you will generate with

-

-72

-00:03:46,308 --> 00:03:49,630

-a current set of category partitions and choices. The minus

-

-73

-00:03:49,630 --> 00:03:52,620

-s option will bring the result of the TSL

-

-74

-00:03:52,620 --> 00:03:55,620

-generator on the standard output. And finally, you can

-

-75

-00:03:55,620 --> 00:03:58,330

-use minus o to specify an output file, where

-

-76

-00:03:58,330 --> 00:04:01,010

-to put the output of the program. So let's

-

-77

-00:04:01,010 --> 00:04:05,070

-at first run our TSL generator by specifying the

-

-78

-00:04:05,070 --> 00:04:08,620

-minus c option and by bypassing our current set

-

-79

-00:04:08,620 --> 00:04:11,860

-of category partitions and choices. Okay, so let me

-

-80

-00:04:11,860 --> 00:04:15,140

-remind you that what the, the tool will do

-

-81

-00:04:15,140 --> 00:04:17,790

-is what we will do manually. Otherwise, which is

-

-82

-00:04:17,790 --> 00:04:20,380

-to combine all these choices so as to have one

-

-83

-00:04:20,380 --> 00:04:23,305

-test case for each combination. So if we do

-

-84

-00:04:23,305 --> 00:04:27,412

-that, you can see that the tool tells us that

-

-85

-00:04:27,412 --> 00:04:32,383

-we will generate 7776 test frames in this case.

-

-86

-00:04:32,383 --> 00:04:34,660

-And this seems to be a little too much for

-

-87

-00:04:34,660 --> 00:04:36,868

-a program as small as the one that we are

-

-88

-00:04:36,868 --> 00:04:40,341

-testing. And assume for instance that we don't have the

-

-89

-00:04:40,341 --> 00:04:43,149

-resources to run this many test cases for, for

-

-90

-00:04:43,149 --> 00:04:46,518

-the grep program. In addition, consider that in this case,

-

-91

-00:04:46,518 --> 00:04:50,356

-we're computing all possible combinations of choices. And there's going to

-

-92

-00:04:50,356 --> 00:04:52,384

-be some combination that do not make sense as we

-

-93

-00:04:52,384 --> 00:04:54,945

-discussed in the lesson. So what we might want to

-

-94

-00:04:54,945 --> 00:04:57,051

-do in this case is to go back to our

-

-95

-00:04:57,051 --> 00:05:03,120

-spec and start adding constraints to eliminate this meaningless combination.

-

-96

-00:05:03,120 --> 00:05:05,980

-So I'm going to show you the result of doing that.

-

-97

-00:05:05,980 --> 00:05:08,690

-And I'm going to show you a few examples.

-

-98

-00:05:08,690 --> 00:05:11,670

-For example here, when the file is empty, I'm going to

-

-99

-00:05:11,670 --> 00:05:15,010

-define this property empty file. And how am I

-

-100

-00:05:15,010 --> 00:05:18,490

-going to use this property? Well for example here, it

-

-101

-00:05:18,490 --> 00:05:20,760

-doesn't make sense to consider the case in which

-

-102

-00:05:20,760 --> 00:05:24,660

-we have one or many occurrences of the pattern in

-

-103

-00:05:24,660 --> 00:05:27,020

-the file if the file is empty. Therefore I'm

-

-104

-00:05:27,020 --> 00:05:31,650

-going to tell the tool that it should consider this specific

-

-105

-00:05:31,650 --> 00:05:35,780

-choice only if the file is not empty, only if

-

-106

-00:05:35,780 --> 00:05:38,660

-empty file is not defined. And that will skip, for

-

-107

-00:05:38,660 --> 00:05:41,330

-example, all of the combinations in which the file is

-

-108

-00:05:41,330 --> 00:05:44,171

-empty. And I'm trying to generate the test case that has

-

-109

-00:05:44,171 --> 00:05:46,364

-one occurrence of the pattern in the file, which is

-

-110

-00:05:46,364 --> 00:05:49,355

-simply not possible. For another example, in case I have

-

-111

-00:05:49,355 --> 00:05:52,824

-an empty pattern, I define the property empty pattern. And

-

-112

-00:05:52,824 --> 00:05:56,725

-then I avoid the choices that involve the pattern in case

-

-113

-00:05:56,725 --> 00:05:59,820

-the pattern is empty. because, for example, I cannot

-

-114

-00:05:59,820 --> 00:06:03,900

-have quotes in a pattern that is empty. For example,

-

-115

-00:06:03,900 --> 00:06:06,760

-it doesn't make sense to have blanks. So, one or

-

-116

-00:06:06,760 --> 00:06:10,250

-more blanks if the pattern is empty. So I'm going to

-

-117

-00:06:10,250 --> 00:06:14,180

-specify again that this choice should be considered only if

-

-118

-00:06:14,180 --> 00:06:16,140

-we don't have an empty pattern. And so on and

-

-119

-00:06:16,140 --> 00:06:20,080

-so forth. So now after I edit these constraints, I

-

-120

-00:06:20,080 --> 00:06:21,890

-can go back and compute again the number of test

-

-121

-00:06:21,890 --> 00:06:23,970

-frames and therefore the test cases that will be

-

-122

-00:06:23,970 --> 00:06:27,530

-generated with these constraints. So let me go again

-

-123

-00:06:27,530 --> 00:06:30,381

-to my terminal. Okay, so now I'm going to run

-

-124

-00:06:30,381 --> 00:06:34,061

-my TSL generator again, and I'm going to run it on

-

-125

-00:06:34,061 --> 00:06:37,389

-the second version of this file. And you can

-

-126

-00:06:37,389 --> 00:06:40,546

-see that I reduced the, the number of test frames

-

-127

-00:06:40,546 --> 00:06:43,889

-from about 7800 to about 1700. So it's quite

-

-128

-00:06:43,889 --> 00:06:46,967

-a, quite a big reduction by eliminating all these combinations

-

-129

-00:06:46,967 --> 00:06:49,540

-that do not make sense. But let's assume again that

-

-130

-00:06:49,540 --> 00:06:52,040

-we want to reduce this further so that we don't want to

-

-131

-00:06:52,040 --> 00:06:55,610

-generate those many test frames and therefore test cases. So

-

-132

-00:06:55,610 --> 00:06:58,660

-what can we do? We go back to our spec. And

-

-133

-00:06:58,660 --> 00:07:02,280

-in this case, we start adding error constraints. So if

-

-134

-00:07:02,280 --> 00:07:05,200

-you remember what we said in the lesson, error constraints are

-

-135

-00:07:05,200 --> 00:07:08,310

-constraints that indicate a choice that has to do with an

-

-136

-00:07:08,310 --> 00:07:11,980

-erroneous behaviour. For example, an erroneous input provided to the problem.

-

-137

-00:07:11,980 --> 00:07:15,210

-So here for instance, we're indicating the presence

-

-138

-00:07:15,210 --> 00:07:20,060

-of incorrectly enclosing quotes as an error choice. Same

-

-139

-00:07:20,060 --> 00:07:22,270

-thing if there's no file corresponding to the

-

-140

-00:07:22,270 --> 00:07:23,970

-name that we provide to the tool, we say

-

-141

-00:07:23,970 --> 00:07:26,760

-that this corresponds to an error. So how

-

-142

-00:07:26,760 --> 00:07:29,130

-is the tool going to use this information? It uses

-

-143

-00:07:29,130 --> 00:07:33,980

-this information by producing only one combination that involves

-

-144

-00:07:33,980 --> 00:07:37,270

-error choices, instead of combining them with other choices.

-

-145

-00:07:37,270 --> 00:07:39,780

-So let's see what happens after we added this

-

-146

-00:07:39,780 --> 00:07:43,370

-error constraints. So we go back to our console

-

-147

-00:07:43,370 --> 00:07:46,920

-once more. And in this case, we want to run

-

-148

-00:07:46,920 --> 00:07:50,910

-the TSL generator with the version of the, of my

-

-149

-00:07:50,910 --> 00:07:53,900

-file that contains the area of constraints. And again,

-

-150

-00:07:53,900 --> 00:07:56,390

-I reduce quite a bit the number of test frames.

-

-151

-00:07:56,390 --> 00:07:59,110

-So now I have only 562 test frames that

-

-152

-00:07:59,110 --> 00:08:02,660

-will be generated by using the file that I provided.

-

-153

-00:08:02,660 --> 00:08:05,460

-So for the last time, let's assume that we really want

-

-154

-00:08:05,460 --> 00:08:07,780

-to cut down the number of test frames or the number of

-

-155

-00:08:07,780 --> 00:08:10,380

-test cases. So once more, we go back to our file, and

-

-156

-00:08:10,380 --> 00:08:12,980

-at this point what we can add is the final type of

-

-157

-00:08:12,980 --> 00:08:14,170

-constraints that we have, which are

-

-158

-00:08:14,170 --> 00:08:17,245

-single constraints. And single constraints are

-

-159

-00:08:17,245 --> 00:08:21,360

-basically indicated choices that we don't want to combine with other choices.

-

-160

-00:08:21,360 --> 00:08:24,210

-So they have the same effect of the error constraints, but they

-

-161

-00:08:24,210 --> 00:08:28,120

-have a different meaning, so they do not indicate choices that corresponds

-

-162

-00:08:28,120 --> 00:08:29,860

-to an error. In other words, I can use a

-

-163

-00:08:29,860 --> 00:08:35,280

-single constraints to identify choices that I want to test only once.

-

-164

-00:08:35,280 --> 00:08:38,510

-So for example in this case, I might decide that I

-

-165

-00:08:38,510 --> 00:08:42,520

-want to have only one test frame that tests my program

-

-166

-00:08:42,520 --> 00:08:44,420

-with a file being empty and I can do the

-

-167

-00:08:44,420 --> 00:08:47,370

-same for other choices. So basically I can continue adding this

-

-168

-00:08:47,370 --> 00:08:50,400

-single constraint until I get down to the number of test

-

-169

-00:08:50,400 --> 00:08:53,410

-frames and therefore the number of test cases that I want.

-

-170

-00:08:53,410 --> 00:08:57,770

-So now let's go back once more to our console. And so now if we run

-

-171

-00:08:59,060 --> 00:09:04,450

-using this file as input, you can see that we have 35 test frames generated. So

-

-172

-00:09:04,450 --> 00:09:07,750

-this is a fairly low number of test cases, so we might decide that we want to

-

-173

-00:09:07,750 --> 00:09:13,380

-go ahead and write these test frames to a file. So now let's open this file

-

-174

-00:09:15,990 --> 00:09:25,500

-that we just generated. And as you can see here, I have exactly 35 test frames,

-

-175

-00:09:26,670 --> 00:09:30,900

-as expected. Some of those correspond to the single and error cases. So in this

-

-176

-00:09:30,900 --> 00:09:33,330

-case, the only choice that I have indicated

-

-177

-00:09:33,330 --> 00:09:35,690

-is the one that corresponds to the single

-

-178

-00:09:35,690 --> 00:09:38,310

-or error constraint. What is for the other

-

-179

-00:09:38,310 --> 00:09:42,170

-ones? I actually have the whole test spec.

-

-180

-00:09:42,170 --> 00:09:45,530

-So let's pick one just to give you an example.

-

-181

-00:09:45,530 --> 00:09:48,440

-In this case, that's frame number 15 that will correspond to

-

-182

-00:09:48,440 --> 00:09:51,910

-test case number 15. And here you can see that

-

-183

-00:09:51,910 --> 00:09:55,280

-we have all the information. So this is a test specification.

-

-184

-00:09:55,280 --> 00:09:57,560

-All the information that we need to generate the corresponding

-

-185

-00:09:57,560 --> 00:09:59,760

-test. We know that we need a file that is not

-

-186

-00:09:59,760 --> 00:10:03,810

-empty. That we need to have one occurrence of the pattern

-

-187

-00:10:03,810 --> 00:10:07,580

-in the file. One occurrence of the pattern in one line.

-

-188

-00:10:08,680 --> 00:10:10,360

-The position of the pattern in the file can

-

-189

-00:10:10,360 --> 00:10:13,740

-be any position. The length of the pattern must

-

-190

-00:10:13,740 --> 00:10:16,640

-be more than one character. The pattern should not

-

-191

-00:10:16,640 --> 00:10:20,140

-be enclosed in quotes. There should be one white

-

-192

-00:10:20,140 --> 00:10:24,460

-space, one quote within the pattern, and finally the

-

-193

-00:10:24,460 --> 00:10:27,230

-file that would pass through the program should exist.

-

-194

-00:10:27,230 --> 00:10:29,680

-So the file should be present. So I can

-

-195

-00:10:29,680 --> 00:10:33,950

-easily transform all of this into an actual test case.

-

-196

-00:10:33,950 --> 00:10:35,540

-And notice that even though we're not, we're not

-

-197

-00:10:35,540 --> 00:10:38,420

-going to do it here. In cases like this, it might

-

-198

-00:10:38,420 --> 00:10:42,190

-even be possible to automatically generate the test cases

-

-199

-00:10:42,190 --> 00:10:45,020

-from the test specifications because, here for example, here it

-

-200

-00:10:45,020 --> 00:10:48,150

-should be relatively straight forward to parse these test

-

-201

-00:10:48,150 --> 00:10:52,450

-specifications and generate test cases accordingly. So, just to summarize,

-

-202

-00:10:52,450 --> 00:10:55,910

-what we have done is to go from one high-level

-

-203

-00:10:55,910 --> 00:10:58,880

-description of a program to a set of categories, partitions,

-

-204

-00:10:58,880 --> 00:11:01,820

-and choices for that program. Then we have combined them

-

-205

-00:11:01,820 --> 00:11:04,930

-in different ways, adding more and more constraints to reduce the

-

-206

-00:11:04,930 --> 00:11:07,600

-number of combinations until we ended up with the right number

-

-207

-00:11:07,600 --> 00:11:09,650

-of test cases, so the number of test cases that we

-

-208

-00:11:09,650 --> 00:11:14,630

-were fine generating. We generated the corresponding test specifications. And at

-

-209

-00:11:14,630 --> 00:11:17,340

-that point, we could just go ahead, generate the test case,

-

-210

-00:11:17,340 --> 00:11:20,660

-and test our application. So, and you can see how this

-

-211

-00:11:20,660 --> 00:11:23,720

-can result in a much more thorough testing of your application.

-

-212

-00:11:23,720 --> 00:11:27,890

-Because instead of reading this description and just trying to come up with test

-

-213

-00:11:27,890 --> 00:11:33,900

-cases for it, we can break down the process in steps that are easy to perform

-

-214

-00:11:33,900 --> 00:11:36,960

-individually. They can be automated as much

-

-215

-00:11:36,960 --> 00:11:38,600

-as possible. And they will end up with

-

-216

-00:11:38,600 --> 00:11:40,380

-a set of test cases that will test

-

-217

-00:11:40,380 --> 00:11:42,790

-all the interests and aspects of your application.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/24 - Model Based Testing - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/24 - Model Based Testing - lang_en_vs4.srt
deleted file mode 100644
index 3d41cd9..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/24 - Model Based Testing - lang_en_vs4.srt
+++ /dev/null
@@ -1,83 +0,0 @@
-1

-00:00:00,370 --> 00:00:02,950

-What we just saw with the category-partition method, is a

-

-2

-00:00:02,950 --> 00:00:05,530

-specific instance of this systematic

-

-3

-00:00:05,530 --> 00:00:08,230

-functional testing approach. So specific instance

-

-4

-00:00:08,230 --> 00:00:10,900

-of the steps that we represented here. And, as I

-

-5

-00:00:10,900 --> 00:00:13,100

-mentioned earlier on, this is not the only way in which

-

-6

-00:00:13,100 --> 00:00:16,700

-you can generate test cases, starting from a functional specification.

-

-7

-00:00:16,700 --> 00:00:20,190

-In particular, this step, in which we identified relevant inputs and

-

-8

-00:00:20,190 --> 00:00:23,390

-then we combine them to generate test case specifications, can also

-

-9

-00:00:23,390 --> 00:00:25,490

-be done in different ways. And, we're going to look at one

-

-10

-00:00:25,490 --> 00:00:28,170

-of these ways. Which is through the construction of a

-

-11

-00:00:28,170 --> 00:00:31,040

-model. And, the reason why I want to talk about models.

-

-12

-00:00:31,040 --> 00:00:34,090

-Is because, model based testing is also, fairly popular in

-

-13

-00:00:34,090 --> 00:00:37,680

-industry. And fairly used in practice. In model based testing, the

-

-14

-00:00:37,680 --> 00:00:41,150

-way in which we go from specifications, to test cases,

-

-15

-00:00:41,150 --> 00:00:44,220

-is through the construction of a model. Where a model is

-

-16

-00:00:44,220 --> 00:00:47,670

-an abstract representation of the software under test. Also in

-

-17

-00:00:47,670 --> 00:00:50,860

-this case there are many possible models, that we can use.

-

-18

-00:00:50,860 --> 00:00:52,180

-And what we're going to do, we're going to focus

-

-19

-00:00:52,180 --> 00:00:54,370

-on a specific kind of model. And I'll

-

-20

-00:00:54,370 --> 00:00:57,010

-just point you to additional sources of information,

-

-21

-00:00:57,010 --> 00:00:59,070

-in case you're interested in seeing other examples.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/25 - Finite State Machines - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/25 - Finite State Machines - lang_en_vs4.srt
deleted file mode 100644
index 26f2fd7..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/25 - Finite State Machines - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,320

-The model that we will consider, is a very well

-

-2

-00:00:02,320 --> 00:00:05,330

-known one. Which is finite state machines. And you might have

-

-3

-00:00:05,330 --> 00:00:08,320

-seen them before. At a high level, a state machine is

-

-4

-00:00:08,320 --> 00:00:11,990

-a graph in which nodes represent states of the system. For

-

-5

-00:00:11,990 --> 00:00:15,650

-example, in this case, state 1, state 2, and state 3.

-

-6

-00:00:15,650 --> 00:00:19,950

-Edges represent transitions between states. For instance, in this case we

-

-7

-00:00:19,950 --> 00:00:22,850

-have one edge from state 1, to state 2. That means

-

-8

-00:00:22,850 --> 00:00:25,640

-that the system can go from state 1, to state 2.

-

-9

-00:00:25,640 --> 00:00:29,530

-And finally, the labels on the edges represent events

-

-10

-00:00:29,530 --> 00:00:32,800

-and actions. For example, what this label means is that

-

-11

-00:00:32,800 --> 00:00:35,400

-the system goes from state three to state two

-

-12

-00:00:35,400 --> 00:00:39,140

-when event five occurs. And when going from state three

-

-13

-00:00:39,140 --> 00:00:42,190

-to state two, it generates action four. And does

-

-14

-00:00:42,190 --> 00:00:45,430

-reacher model, sir reacher's kind of state machines, but we're

-

-15

-00:00:45,430 --> 00:00:48,160

-just going to stick to this ones which are enough. For

-

-16

-00:00:48,160 --> 00:00:50,760

-our purpose. So how do we build such a final

-

-17

-00:00:50,760 --> 00:00:53,530

-state machine starting from a specification? The first thing

-

-18

-00:00:53,530 --> 00:00:56,660

-we need to do is to identify the system's boundaries

-

-19

-00:00:56,660 --> 00:00:59,250

-and the input and output to the system. Once we

-

-20

-00:00:59,250 --> 00:01:01,960

-have done that, we can identify, within the boundaries of

-

-21

-00:01:01,960 --> 00:01:06,070

-the system, the relevant states and transitions. So we split

-

-22

-00:01:06,070 --> 00:01:09,670

-this single state We'll refine it into several states. And

-

-23

-00:01:09,670 --> 00:01:12,640

-we also identify how the system can go from one

-

-24

-00:01:12,640 --> 00:01:16,830

-state to another. Including which inputs cause which transition, and

-

-25

-00:01:16,830 --> 00:01:19,350

-which result in outputs we can obtain. To

-

-26

-00:01:19,350 --> 00:01:21,810

-better illustrate that, let's look at a concrete example.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/26 - Finite State Machines Example - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/26 - Finite State Machines Example - lang_en_vs4.srt
deleted file mode 100644
index f889057..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/26 - Finite State Machines Example - lang_en_vs4.srt
+++ /dev/null
@@ -1,251 +0,0 @@
-1

-00:00:00,140 --> 00:00:03,010

-In this example, we're going to start from an informal specification, and the

-

-2

-00:00:03,010 --> 00:00:06,670

-specification is the one shown here in file spec.txt. This is the

-

-3

-00:00:06,670 --> 00:00:10,210

-specification for the maintenance function in a specific system. So what we're

-

-4

-00:00:10,210 --> 00:00:13,630

-doing is that we're taking the description of the functionality of a system,

-

-5

-00:00:13,630 --> 00:00:16,219

-and we're building a model, in this case a final state machine

-

-6

-00:00:16,219 --> 00:00:18,710

-for it. And there is no need to look at all the details

-

-7

-00:00:18,710 --> 00:00:21,350

-for this specification, but I want to point out that if you

-

-8

-00:00:21,350 --> 00:00:25,640

-look at the way the specification is written, we can identify specific cases

-

-9

-00:00:25,640 --> 00:00:28,210

-that we need to take into account. Like here if something

-

-10

-00:00:28,210 --> 00:00:31,920

-happens, something else will follow. Again, if something happens something else

-

-11

-00:00:31,920 --> 00:00:35,690

-will follow. So we have multiple choices here. Here will determine

-

-12

-00:00:35,690 --> 00:00:38,140

-the next steps and so on. So all we have to

-

-13

-00:00:38,140 --> 00:00:42,420

-do is to go through this process, identify these cases and

-

-14

-00:00:42,420 --> 00:00:45,300

-then build a machine that represents these cases. For the spec

-

-15

-00:00:45,300 --> 00:00:47,830

-that we just consider this is the state machine that will

-

-16

-00:00:47,830 --> 00:00:50,960

-result. Again there is no need to go through all the details,

-

-17

-00:00:50,960 --> 00:00:53,090

-but what I want to point out is that we have

-

-18

-00:00:53,090 --> 00:00:55,710

-a set of states. So for instance, we have state zero,

-

-19

-00:00:55,710 --> 00:00:58,380

-which is no maintenance, and if a request comes in, the

-

-20

-00:00:58,380 --> 00:01:01,350

-system will move, and the system wait for pickup. Then if

-

-21

-00:01:01,350 --> 00:01:04,400

-the pickup actually occurs, the system will move to the repair

-

-22

-00:01:04,400 --> 00:01:07,540

-state, and so on and so forth. So this is just

-

-23

-00:01:07,540 --> 00:01:13,070

-a more systematic representation of what was in the former specification.

-

-24

-00:01:13,070 --> 00:01:16,160

-And I will argue that this is much easier to understand at

-

-25

-00:01:16,160 --> 00:01:19,170

-least for somebody who has to develop tests for this system. In

-

-26

-00:01:19,170 --> 00:01:21,770

-fact what we're going to see next is how we can go from that

-

-27

-00:01:21,770 --> 00:01:24,790

-representation to a set of test cases. And the way which we do

-

-28

-00:01:24,790 --> 00:01:28,950

-it is by covering the behaviors represented by defining state machine. And we

-

-29

-00:01:28,950 --> 00:01:31,500

-can decide how we want to cover them. For example we might want

-

-30

-00:01:31,500 --> 00:01:35,080

-to cover all the states. So we might want to identify paths in

-

-31

-00:01:35,080 --> 00:01:38,310

-the state machine that go through all the states in the machine. Like

-

-32

-00:01:38,310 --> 00:01:41,840

-the one I just draw or this one, this one and this one.

-

-33

-00:01:41,840 --> 00:01:44,900

-So if we consider these four test cases, we can see that all the

-

-34

-00:01:44,900 --> 00:01:48,470

-states in my system or at least all the states that I have identified

-

-35

-00:01:48,470 --> 00:01:51,450

-are covered. I might want to go a little further, and decide that I

-

-36

-00:01:51,450 --> 00:01:54,210

-don't only want to cover all of the states, but I want to cover, all

-

-37

-00:01:54,210 --> 00:01:57,930

-of the transitions, because, it makes sense to visit a state, when coming from

-

-38

-00:01:57,930 --> 00:02:00,380

-different states. And, if I want to do that, and I look at the

-

-39

-00:02:00,380 --> 00:02:03,440

-test cases that I generated so far, I can see that there is one

-

-40

-00:02:03,440 --> 00:02:06,910

-transition, the one here, that is not covered. And, the same can be said for

-

-41

-00:02:06,910 --> 00:02:09,210

-the two transitions here. So what I can decide to do is

-

-42

-00:02:09,210 --> 00:02:13,370

-to generate another test case, that covers those or extend an existing one.

-

-43

-00:02:13,370 --> 00:02:16,500

-For instance, I could extend this test case by adding a visit to

-

-44

-00:02:16,500 --> 00:02:20,760

-the state, before going back to these two. Alternatively, I could also generate

-

-45

-00:02:20,760 --> 00:02:24,390

-new test cases, such as this one. To cover the missing transitions.

-

-46

-00:02:24,390 --> 00:02:26,350

-And once I have these test cases, I can express them in a

-

-47

-00:02:26,350 --> 00:02:29,860

-clearer way by simply specifying what are the states that they cover. I'm

-

-48

-00:02:29,860 --> 00:02:31,990

-just going to give you a couple of examples. Say, if we look

-

-49

-00:02:31,990 --> 00:02:34,280

-at the last one that I added, which will be test case

-

-50

-00:02:34,280 --> 00:02:37,190

-number five, I just need to specify that it will go through state

-

-51

-00:02:37,190 --> 00:02:41,090

-zero, which is this one, five, which is this one, six, and

-

-52

-00:02:41,090 --> 00:02:43,130

-then back to zero. And I can do the same for the other

-

-53

-00:02:43,130 --> 00:02:46,500

-test cases. So this will be my complete set of test cases.

-

-54

-00:02:46,500 --> 00:02:50,060

-So the bottom line here is that it is much harder to build

-

-55

-00:02:50,060 --> 00:02:53,080

-a set of test cases that will cover the behavior of an informal

-

-56

-00:02:53,080 --> 00:02:56,970

-description. But by going through a model, so by building in this case,

-

-57

-00:02:56,970 --> 00:03:01,700

-a finite state machine for that description, we can, in a much easier way, see

-

-58

-00:03:01,700 --> 00:03:04,100

-what the behaviors of interest of the system

-

-59

-00:03:04,100 --> 00:03:05,960

-are, and try to cover them. And there

-

-60

-00:03:05,960 --> 00:03:07,400

-is again in the spirit of breaking

-

-61

-00:03:07,400 --> 00:03:09,950

-down a complex problem into smaller steps that

-

-62

-00:03:09,950 --> 00:03:11,620

-we can better manage, which in the end,

-

-63

-00:03:11,620 --> 00:03:14,450

-results in a more efficient and effective testing.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/27 - Finite State Machines Considerations - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/27 - Finite State Machines Considerations - lang_en_vs4.srt
deleted file mode 100644
index 64c2c00..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/27 - Finite State Machines Considerations - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,100 --> 00:00:03,060

-There are some important considerations I want to make on final state

-

-2

-00:00:03,060 --> 00:00:06,410

-machines. And more in general, on model based testing. The first one

-

-3

-00:00:06,410 --> 00:00:10,600

-is about applicability. Testing based on final state machines is a very

-

-4

-00:00:10,600 --> 00:00:13,890

-general approach, that we can apply in a number of contexts. And in

-

-5

-00:00:13,890 --> 00:00:16,510

-particular, if you are working with UML, you have state machines for

-

-6

-00:00:16,510 --> 00:00:19,720

-free. Because state charts are nothing else but a special kind of

-

-7

-00:00:19,720 --> 00:00:22,210

-state machine. So you can apply the technique that we just saw

-

-8

-00:00:22,210 --> 00:00:26,010

-directly on state charts, and try to cover their states and their transitions.

-

-9

-00:00:26,010 --> 00:00:29,980

-Another important point is that abstraction is key. You have to find the

-

-10

-00:00:29,980 --> 00:00:33,280

-right level of abstraction. The bigger the system, the more you have to

-

-11

-00:00:33,280 --> 00:00:36,130

-abstract if you want to represent it with a model, and in particular, with

-

-12

-00:00:36,130 --> 00:00:38,710

-the final state machine. So it's like having a slider, and you have

-

-13

-00:00:38,710 --> 00:00:41,840

-to decide where you want to move on that slider. The more you represent,

-

-14

-00:00:41,840 --> 00:00:44,700

-the more complex your system is going to be and the more thorough your

-

-15

-00:00:44,700 --> 00:00:48,110

-testing is going to be but also more expensive. The less you represent the

-

-16

-00:00:48,110 --> 00:00:51,330

-less expensive testing is going to be, but also testing might not be as

-

-17

-00:00:51,330 --> 00:00:53,500

-thorough as it would be otherwise. So you have to find

-

-18

-00:00:53,500 --> 00:00:56,150

-the right balance between abstracting the weight too much and abstracting

-

-19

-00:00:56,150 --> 00:00:59,840

-the weight too little. And finally there are many other approaches.

-

-20

-00:00:59,840 --> 00:01:02,840

-So we just scratched the surface, and we just saw one possible

-

-21

-00:01:02,840 --> 00:01:05,760

-approach. But for instance, other models that you can use are

-

-22

-00:01:05,760 --> 00:01:09,780

-decision tables, flow graphs and even historical models. Models that can

-

-23

-00:01:09,780 --> 00:01:13,560

-guide your testing based on problems that occurred in your system

-

-24

-00:01:13,560 --> 00:01:16,500

-in the past. And also, in this case, I'm going to put pointers

-

-25

-00:01:16,500 --> 00:01:18,460

-to additional materials in the class notes.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/28 - Summary - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/28 - Summary - lang_en_vs4.srt
deleted file mode 100644
index 1b68b9f..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/28 - Summary - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,110 --> 00:00:01,600

-Now we are at the end of this lesson, and I

-

-2

-00:00:01,600 --> 00:00:04,450

-just want to wrap it up by summarizing what we've seen. We talked

-

-3

-00:00:04,450 --> 00:00:06,340

-about black-box testing, the testing of

-

-4

-00:00:06,340 --> 00:00:08,760

-software based on a functional specification,

-

-5

-00:00:08,760 --> 00:00:11,510

-a description of the software rather than its code. We saw a

-

-6

-00:00:11,510 --> 00:00:15,500

-systematic way of doing that, that allows for breaking down the problem

-

-7

-00:00:15,500 --> 00:00:19,140

-of testing software, so the problem of going from this functional specification

-

-8

-00:00:19,140 --> 00:00:22,540

-to a set of test cases into smaller steps, more manageable steps.

-

-9

-00:00:22,540 --> 00:00:25,466

-And we saw two main ways of doing this. One by identifying

-

-10

-00:00:25,466 --> 00:00:28,304

-relevant inputs for the main features in the system

-

-11

-00:00:28,304 --> 00:00:31,802

-and then deriving test case specifications and test cases from

-

-12

-00:00:31,802 --> 00:00:34,180

-this set of inputs. And the second way by

-

-13

-00:00:34,180 --> 00:00:36,780

-building a model for the main features of the system

-

-14

-00:00:36,780 --> 00:00:39,210

-and then using this model to decide how to

-

-15

-00:00:39,210 --> 00:00:41,680

-test the system. In the next lesson, we are going

-

-16

-00:00:41,680 --> 00:00:44,440

-to discuss, how to do testing by looking inside the

-

-17

-00:00:44,440 --> 00:00:47,716

-box? So, how to do testing in a white-box fashion.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/3 - Systematic Functional Testing Approach - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/3 - Systematic Functional Testing Approach - lang_en_vs4.srt
deleted file mode 100644
index 75da7e8..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/3 - Systematic Functional Testing Approach - lang_en_vs4.srt
+++ /dev/null
@@ -1,179 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,690

-So what is the starting point of black box testing? Black

-

-2

-00:00:02,690 --> 00:00:06,010

-box testing start from a description of the software or as we

-

-3

-00:00:06,010 --> 00:00:09,590

-call it, a functional specification. And the final result of black

-

-4

-00:00:09,590 --> 00:00:12,760

-box testing is a set of test cases, a set of actual

-

-5

-00:00:12,760 --> 00:00:16,410

-inputs and corresponding outputs that we can use to exercise our

-

-6

-00:00:16,410 --> 00:00:19,030

-code and to try to find defects in our code. So the

-

-7

-00:00:19,030 --> 00:00:22,060

-question is, how do we get from functional specification to test

-

-8

-00:00:22,060 --> 00:00:25,510

-cases? Doing these derivations, so going from this description to a concrete

-

-9

-00:00:25,510 --> 00:00:28,550

-set of tests, is a very complex analytical process.

-

-10

-00:00:28,550 --> 00:00:31,220

-And normally brute force generation is not a good

-

-11

-00:00:31,220 --> 00:00:34,430

-idea because it's inefficient and ineffective. What we want

-

-12

-00:00:34,430 --> 00:00:37,540

-to do instead is to have a systematic approach to

-

-13

-00:00:37,540 --> 00:00:40,250

-derive test cases from a functional specification. What a

-

-14

-00:00:40,250 --> 00:00:43,970

-systematic approach does is to simplify the overall problem by

-

-15

-00:00:43,970 --> 00:00:48,320

-dividing the process into elementary steps. In particular, in

-

-16

-00:00:48,320 --> 00:00:50,520

-this case, we will perform three main steps. The first

-

-17

-00:00:50,520 --> 00:00:55,790

-step is to identify independently testable features. Individual features in

-

-18

-00:00:55,790 --> 00:00:57,600

-the soft hood that we can test. And we're going to

-

-19

-00:00:57,600 --> 00:00:59,990

-expand on each one of these steps in the next

-

-20

-00:00:59,990 --> 00:01:02,490

-part of the lesson. The following step is once we have

-

-21

-00:01:02,490 --> 00:01:06,000

-these independently testable features to identify what are the relevant

-

-22

-00:01:06,000 --> 00:01:08,590

-inputs. So what are the inputs or the behavior that is

-

-23

-00:01:08,590 --> 00:01:11,610

-worth testing for these features. Next once we have these

-

-24

-00:01:11,610 --> 00:01:13,020

-inputs, we're going to derive test

-

-25

-00:01:13,020 --> 00:01:15,770

-specifications. And test case specifications are

-

-26

-00:01:15,770 --> 00:01:19,490

-description of the test cases that we can then use

-

-27

-00:01:19,490 --> 00:01:23,270

-to generate actual test cases. And proceeding in this way,

-

-28

-00:01:23,270 --> 00:01:26,050

-by this steps, has many advantages. It allows for the

-

-29

-00:01:26,050 --> 00:01:29,920

-coupling different activities. It allows for dividing brain intensive steps from

-

-30

-00:01:29,920 --> 00:01:32,240

-steps that can be automated, which is a great advantage.

-

-31

-00:01:32,240 --> 00:01:34,980

-And also we will see, it allows you for monitoring

-

-32

-00:01:34,980 --> 00:01:38,040

-the testing process. So to figure out whether your testing

-

-33

-00:01:38,040 --> 00:01:41,000

-process is going as expected, for example, if you're generating too

-

-34

-00:01:41,000 --> 00:01:44,160

-many test cases. Or you're generating the number of test cases that your

-

-35

-00:01:44,160 --> 00:01:47,880

-amount of resources available allows you to run. So let's start by looking

-

-36

-00:01:47,880 --> 00:01:51,230

-at the first step of this process in which our goal is to

-

-37

-00:01:51,230 --> 00:01:54,820

-go from a Functional Specification to a set of features that we can

-

-38

-00:01:54,820 --> 00:01:57,700

-test in the software. So what we want to do is to identify all

-

-39

-00:01:57,700 --> 00:02:00,290

-of the feature of the software. And why do we want to do this?

-

-40

-00:02:00,290 --> 00:02:02,650

-Well you know, in the spirit of breaking down the complexity of the

-

-41

-00:02:02,650 --> 00:02:06,170

-problem, it does not make sense to just try to devise test cases for

-

-42

-00:02:06,170 --> 00:02:08,750

-all the features of the software at once. For any non-trivial

-

-43

-00:02:08,750 --> 00:02:11,980

-software, that's a humongous problem, and something that we cannot really

-

-44

-00:02:11,980 --> 00:02:16,300

-handle effectively. A much better way is to identify independently testable

-

-45

-00:02:16,300 --> 00:02:19,100

-features and consider one of them at a time when generating tests.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/4 - Overview Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/4 - Overview Quiz - lang_en_vs4.srt
deleted file mode 100644
index dda3144..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/4 - Overview Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,740 --> 00:00:02,780

-So, now I want to do a little quiz about

-

-2

-00:00:02,780 --> 00:00:05,530

-identifying testable features. Let's consider

-

-3

-00:00:05,530 --> 00:00:07,700

-this simple problem called printSum.

-

-4

-00:00:07,700 --> 00:00:09,680

-We won't see the implementation because we are doing black-box

-

-5

-00:00:09,680 --> 00:00:12,780

-testing. And all we need to know is that printSum takes

-

-6

-00:00:12,780 --> 00:00:15,550

-two integers, a and b, and prints the sum of

-

-7

-00:00:15,550 --> 00:00:17,540

-these two numbers. So what I want to ask, is

-

-8

-00:00:17,540 --> 00:00:20,700

-how many independently testable features do we have here? Do

-

-9

-00:00:20,700 --> 00:00:24,860

-we have one, two, three features? Or more than three features?

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/5 - Overview Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/5 - Overview Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 5503f98..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/5 - Overview Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,360 --> 00:00:03,760

-Sum is a very simple program, that only does one thing,

-

-2

-00:00:03,760 --> 00:00:07,540

-summing two number, adding two numbers. So the answer in this

-

-3

-00:00:07,540 --> 00:00:10,640

-case, it's one. There's only one feature that we can test

-

-4

-00:00:10,640 --> 00:00:14,060

-in PrintSum. So let's look at the slightly more interesting example.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/6 - Overview Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/6 - Overview Quiz - lang_en_vs4.srt
deleted file mode 100644
index 96c643e..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/6 - Overview Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,19 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,469

-Let's look at this spreadsheet. I'm pretty sure most of you

-

-2

-00:00:02,469 --> 00:00:05,990

-are familiar with what a spreadsheet is and have used them before.

-

-3

-00:00:05,990 --> 00:00:08,119

-So now I'm going to ask the same question, which is I'd

-

-4

-00:00:08,119 --> 00:00:10,480

-like you to identify three possible

-

-5

-00:00:10,480 --> 00:00:13,190

-independently testable features for a spreadsheet.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/7 - Overview Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/7 - Overview Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 88e7cd5..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/7 - Overview Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,190 --> 00:00:03,030

-In this case there's not really a right answer because there's

-

-2

-00:00:03,030 --> 00:00:05,750

-many, many features that you could identify in a piece of

-

-3

-00:00:05,750 --> 00:00:08,655

-software as complex as a, a spreadsheet. So I'm just going

-

-4

-00:00:08,655 --> 00:00:11,900

-to give you three examples. So one could be the cell merging

-

-5

-00:00:11,900 --> 00:00:14,950

-operation. So the operation in which we merge two cells in

-

-6

-00:00:14,950 --> 00:00:18,550

-the spreadsheet. Another example could be chart creation, so I might want

-

-7

-00:00:18,550 --> 00:00:21,370

-to test the feature that allows you to create charts in

-

-8

-00:00:21,370 --> 00:00:23,310

-your spreadsheets. Yet another example could

-

-9

-00:00:23,310 --> 00:00:25,540

-be the test of statistical functions,

-

-10

-00:00:25,540 --> 00:00:29,350

-so the function that allows you to do various statistical calculations on

-

-11

-00:00:29,350 --> 00:00:32,650

-the numbers in your cells. And as I said there's many, many

-

-12

-00:00:32,650 --> 00:00:35,900

-more example that we could use. But the key thing I want

-

-13

-00:00:35,900 --> 00:00:38,770

-to convey here is the fact that there is no way you

-

-14

-00:00:38,770 --> 00:00:42,020

-can look at a spreadsheet with all the functionality that it provides

-

-15

-00:00:42,020 --> 00:00:44,160

-and just go and test it. The first step, what you need

-

-16

-00:00:44,160 --> 00:00:47,430

-to do first, is to identify which ones are the pieces of

-

-17

-00:00:47,430 --> 00:00:50,620

-functionality that I can test individually. So that's why this is the

-

-18

-00:00:50,620 --> 00:00:52,310

-first step in black-box testing.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/8 - Test Data Selection - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/8 - Test Data Selection - lang_en_vs4.srt
deleted file mode 100644
index 51aaffe..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/8 - Test Data Selection - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,230 --> 00:00:03,550

-Once we have identified Independently Testable Features, the next step is to

-

-2

-00:00:03,550 --> 00:00:07,720

-identify the Relevant Inputs for each one of these features. And there are

-

-3

-00:00:07,720 --> 00:00:10,420

-many ways to do that. So, what we're going to do, instead of

-

-4

-00:00:10,420 --> 00:00:13,770

-looking at them all, is that we're just going to focus on two different

-

-5

-00:00:13,770 --> 00:00:16,239

-ways of doing it. And they are fairly general ways. So, they

-

-6

-00:00:16,239 --> 00:00:19,910

-are applicable to a number of situations. And in addition, what I will

-

-7

-00:00:19,910 --> 00:00:22,190

-do, I will point you to other sources in which you can

-

-8

-00:00:22,190 --> 00:00:25,530

-look at different ways of doing this in the class notes. The problem

-

-9

-00:00:25,530 --> 00:00:28,390

-of identifying relevant inputs for some Software or some feature

-

-10

-00:00:28,390 --> 00:00:31,930

-of it is called Test Data Selection and can be expressed

-

-11

-00:00:31,930 --> 00:00:35,040

-as followed. Let's consider our software as usual we have

-

-12

-00:00:35,040 --> 00:00:38,190

-our Input Domain, which is the set of inputs for all

-

-13

-00:00:38,190 --> 00:00:40,980

-the software. And again as usual, we have our Output

-

-14

-00:00:40,980 --> 00:00:44,050

-Domain, which is the set of corresponding outlets for these inputs.

-

-15

-00:00:44,050 --> 00:00:47,450

-So the question here is, how can we select a meaningful

-

-16

-00:00:47,450 --> 00:00:50,920

-set of inputs in my domain? And of course corresponding outputs

-

-17

-00:00:50,920 --> 00:00:53,240

-because we know that test cases are an input, plus an

-

-18

-00:00:53,240 --> 00:00:56,900

-expected output. So how can we select interesting inputs for our

-

-19

-00:00:56,900 --> 00:01:00,040

-software? So a set of inputs that, after we run them

-

-20

-00:01:00,040 --> 00:01:02,950

-on the software, if the software behaves correctly, we'll have enough

-

-21

-00:01:02,950 --> 00:01:07,060

-confidence that the software is correctly implemented. So one possible idea

-

-22

-00:01:07,060 --> 00:01:09,830

-is, hey, why don't we just test them all? We just

-

-23

-00:01:09,830 --> 00:01:12,800

-do exhaustive testing. We do all the inputs, nowadays we have

-

-24

-00:01:12,800 --> 00:01:16,290

-powerful machines, we have a lot of computational power in the cloud.

-

-25

-00:01:16,290 --> 00:01:17,890

-Why not just doing it? So to answer that

-

-26

-00:01:17,890 --> 00:01:20,480

-question, what I'm going to do? I'm going to use another quiz.

diff --git a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/9 - Test Data Selection Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/9 - Test Data Selection Quiz - lang_en_vs4.srt
deleted file mode 100644
index 9ffead6..0000000
--- a/usth/ICT2.7/P4L2 Black-Box Testing Subtitles/9 - Test Data Selection Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,200 --> 00:00:02,180

-So I'm going to ask you something. Which is if

-

-2

-00:00:02,180 --> 00:00:04,750

-we consider again our function print sum, the one

-

-3

-00:00:04,750 --> 00:00:06,760

-that takes two integers and prints the sum. How

-

-4

-00:00:06,760 --> 00:00:09,300

-long would it take to exhaustively test this function? And

-

-5

-00:00:09,300 --> 00:00:10,950

-this is a very simple one. There's just two

-

-6

-00:00:10,950 --> 00:00:13,240

-inputs, right? So we can just enumerate them all.

-

-7

-00:00:13,240 --> 00:00:15,950

-And put them throw them at the computer form,

-

-8

-00:00:15,950 --> 00:00:18,440

-and wait for the results. How long would that take?

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 64f1576..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,570

-In the previous lesson we discussed black box

-

-2

-00:00:02,570 --> 00:00:05,120

-testing, which is the testing performed based on a

-

-3

-00:00:05,120 --> 00:00:08,760

-description of the software, but without considering any of

-

-4

-00:00:08,760 --> 00:00:12,440

-software's internal details. In this lesson, we will discuss

-

-5

-00:00:12,440 --> 00:00:15,490

-the counterpart of black box testing, which is called

-

-6

-00:00:15,490 --> 00:00:20,590

-unsurprisingly white box testing or structural testing. And just

-

-7

-00:00:20,590 --> 00:00:22,780

-like we did for black box testing, we will

-

-8

-00:00:22,780 --> 00:00:25,740

-cover the main characteristics of white box testing and

-

-9

-00:00:25,740 --> 00:00:30,620

-this casts the most commonly used white box testing techniques. We

-

-10

-00:00:30,620 --> 00:00:33,650

-will conclude the lesson with the discussion of the main strengths and

-

-11

-00:00:33,650 --> 00:00:37,540

-limitations of white box testing. So that you will know, when to

-

-12

-00:00:37,540 --> 00:00:40,950

-use it? How to use it? And what to expect from it?

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/10 - Statement Coverage Quiz Solution - lang_en_vs7.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/10 - Statement Coverage Quiz Solution - lang_en_vs7.srt
deleted file mode 100644
index c18d579..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/10 - Statement Coverage Quiz Solution - lang_en_vs7.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,210 --> 00:00:01,900

-To get the answer to this question, I'm

-

-2

-00:00:01,900 --> 00:00:03,540

-going to ask you to be a little patient, and

-

-3

-00:00:03,540 --> 00:00:05,120

-to wait until the end of the lesson.

-

-4

-00:00:05,120 --> 00:00:06,792

-Because there are a couple of more topics that

-

-5

-00:00:06,792 --> 00:00:08,244

-I want to cover, before I actually get in

-

-6

-00:00:08,244 --> 00:00:10,210

-to this. Nevertheless, I wanted to ask you right

-

-7

-00:00:10,210 --> 00:00:11,880

-away, because I wanted you to think about

-

-8

-00:00:11,880 --> 00:00:13,560

-this, before you see the rest of the lesson.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/11 - Control Flow Graphs - lang_en_vs5.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/11 - Control Flow Graphs - lang_en_vs5.srt
deleted file mode 100644
index 83d5860..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/11 - Control Flow Graphs - lang_en_vs5.srt
+++ /dev/null
@@ -1,167 +0,0 @@
-1

-00:00:00,320 --> 00:00:03,450

-Let's look at the code for PrintSum in a slightly different way

-

-2

-00:00:03,450 --> 00:00:06,140

-by making something explicit. If we go through the code, we can

-

-3

-00:00:06,140 --> 00:00:08,578

-see that the, the code does something in that case, if the

-

-4

-00:00:08,578 --> 00:00:11,720

-result greater then zero, does something else if the result is not

-

-5

-00:00:11,720 --> 00:00:14,890

-greater than zero but is less than zero, and otherwise in the

-

-6

-00:00:14,890 --> 00:00:17,800

-case in which neither of these two conditions is true. Nothing really

-

-7

-00:00:17,800 --> 00:00:19,090

-happens. So we're going to make that

-

-8

-00:00:19,090 --> 00:00:21,290

-explicit, we're going to say here, otherwise

-

-9

-00:00:21,290 --> 00:00:25,430

-do nothing, which is exactly our problem, the code does nothing, in this

-

-10

-00:00:25,430 --> 00:00:28,380

-case where it should do something. So now, let's look again in

-

-11

-00:00:28,380 --> 00:00:31,470

-our test cases, let's consider the first one, and I'm going to go a

-

-12

-00:00:31,470 --> 00:00:34,410

-little faster in this case, because we already saw what happens If

-

-13

-00:00:34,410 --> 00:00:37,890

-we execute the first test case, we get to this point, we execute

-

-14

-00:00:37,890 --> 00:00:40,710

-this statement, and then we just jump to the end, as we

-

-15

-00:00:40,710 --> 00:00:44,020

-saw. Now we, if we execute the second test case, we do the

-

-16

-00:00:44,020 --> 00:00:46,740

-same, we get to the else statement, the condition for the if is

-

-17

-00:00:46,740 --> 00:00:50,770

-true, and therefore we execute this statement. And we never reached this point

-

-18

-00:00:50,770 --> 00:00:53,320

-for either of the test cases. So how can we express

-

-19

-00:00:53,320 --> 00:00:56,470

-this? In order to do that, I'm going to introduce a very useful

-

-20

-00:00:56,470 --> 00:01:00,450

-concept. The concept of control flow graphs. The control flow graphs

-

-21

-00:01:00,450 --> 00:01:03,310

-is just a representation for the code that is very convenient when

-

-22

-00:01:03,310 --> 00:01:06,030

-we run our reason about the code and its structure. And

-

-23

-00:01:06,030 --> 00:01:09,910

-it's a fairly simple one that represents statement with notes and the

-

-24

-00:01:09,910 --> 00:01:12,900

-flow of control within the code with edges. So here's an

-

-25

-00:01:12,900 --> 00:01:16,180

-example of control flow graph for this code. There is the entry

-

-26

-00:01:16,180 --> 00:01:19,790

-point of the code right here, then our statement in which we

-

-27

-00:01:19,790 --> 00:01:23,320

-assign the result of A plus B to variable result. Our if

-

-28

-00:01:23,320 --> 00:01:25,720

-statement and as you can see the if statement it's got two

-

-29

-00:01:25,720 --> 00:01:28,930

-branches coming out of it, because based on the outcome of this

-

-30

-00:01:28,930 --> 00:01:32,376

-predicate we will go one way or the other. In fact normally

-

-31

-00:01:32,376 --> 00:01:36,000

-what we do, we will label this edges accordingly. So for example,

-

-32

-00:01:36,000 --> 00:01:38,580

-here we will say that this is the label to be executed

-

-33

-00:01:38,580 --> 00:01:41,470

-when the predicate is true. And this is the label that is executed

-

-34

-00:01:41,470 --> 00:01:44,120

-when the predicate is false. Now, at this point, similar

-

-35

-00:01:44,120 --> 00:01:47,080

-thing, statement five which corresponds with this one, we have another

-

-36

-00:01:47,080 --> 00:01:49,650

-if statement and if that statement is true, then we get

-

-37

-00:01:49,650 --> 00:01:51,830

-to this point and if it's false, we get to this

-

-38

-00:01:51,830 --> 00:01:54,370

-point. So as you can see, this graph represents my

-

-39

-00:01:54,370 --> 00:01:57,040

-code, in a much more intuitive way, because I can see

-

-40

-00:01:57,040 --> 00:02:00,650

-right away where the control flows, while I execute the code.

-

-41

-00:02:00,650 --> 00:02:01,730

-So we're going to use this

-

-42

-00:02:01,730 --> 00:02:04,430

-representation to introduce further coverage criteria.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/12 - Branch Coverage - lang_en_vs3.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/12 - Branch Coverage - lang_en_vs3.srt
deleted file mode 100644
index a1dedad..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/12 - Branch Coverage - lang_en_vs3.srt
+++ /dev/null
@@ -1,267 +0,0 @@
-1

-00:00:00,400 --> 00:00:03,780

-So now that we know what the CFG is, let's see how we can get into a count,

-

-2

-00:00:03,780 --> 00:00:07,860

-that else part, that is missing in our example code by introducing a new

-

-3

-00:00:07,860 --> 00:00:10,480

-kind of coverage. Branch coverage. As usual,

-

-4

-00:00:10,480 --> 00:00:13,550

-I'm going to describe branch coverage in terms of test requirements and

-

-5

-00:00:13,550 --> 00:00:17,100

-coverage measure. So starting from test requirements. The test requirement for

-

-6

-00:00:17,100 --> 00:00:21,080

-branch coverage are the branches in the program. In other words,

-

-7

-00:00:21,080 --> 00:00:25,240

-the goal of branch coverage is to execute all of the branches in the program.

-

-8

-00:00:25,240 --> 00:00:28,370

-The coverage measure is defined accordingly as the number of branches

-

-9

-00:00:28,370 --> 00:00:33,150

-executed by my test cases over the total number of branches in the program. And

-

-10

-00:00:33,150 --> 00:00:37,020

-let me remind you that branches are the outgoing edges from a decision point.

-

-11

-00:00:37,020 --> 00:00:40,410

-Therefore, an if statement, a switch statement, a while statement.

-

-12

-00:00:40,410 --> 00:00:44,400

-Any note in the c of g that has got more than one outgoing edge.

-

-13

-00:00:44,400 --> 00:00:48,170

-Those edges are called branches. So let's look at that using our example. So

-

-14

-00:00:48,170 --> 00:00:51,690

-now we're looking back at our printSum example. And in addition to the code,

-

-15

-00:00:51,690 --> 00:00:54,440

-I also want to represent the CFG for the program. So

-

-16

-00:00:54,440 --> 00:00:58,590

-let's start by looking at how many branches we have in our code. Which means how

-

-17

-00:00:58,590 --> 00:01:02,070

-many test requirements we have. And in this case there are two decision points.

-

-18

-00:01:02,070 --> 00:01:04,940

-The first one that corresponds to the first if, and the second one that

-

-19

-00:01:04,940 --> 00:01:10,100

-corresponds to the second if. So we have one, two, three, and four branches. So

-

-20

-00:01:10,100 --> 00:01:13,880

-now, let's bring back our current set of test cases. We had two test cases.

-

-21

-00:01:13,880 --> 00:01:17,440

-The one's that, with which we achieved a 100% statement coverage. And

-

-22

-00:01:17,440 --> 00:01:21,140

-let's see what happens in terms of branch coverage when we run these test cases.

-

-23

-00:01:21,140 --> 00:01:24,110

-I start from the first one, when we execute it, we follow the code,

-

-24

-00:01:24,110 --> 00:01:27,890

-we get to this decision point because the predicate in the if statement is true.

-

-25

-00:01:27,890 --> 00:01:30,770

-We follow the true branch, therefore we get here and then,

-

-26

-00:01:30,770 --> 00:01:34,970

-we exit from the program. So, in this case, we covered one of the branches,

-

-27

-00:01:34,970 --> 00:01:40,710

-which means that we got to 25% coverage. Now when we run the second test case,

-

-28

-00:01:40,710 --> 00:01:44,160

-again we follow this path. We get to this, the first if and

-

-29

-00:01:44,160 --> 00:01:47,730

-in this case the predicate of the if is false. Therefore, we go this way.

-

-30

-00:01:47,730 --> 00:01:51,160

-We reach the second predicate, the second if. The result is true, so

-

-31

-00:01:51,160 --> 00:01:55,490

-we follow the true branch and therefore, we cover these additional two branches.

-

-32

-00:01:55,490 --> 00:01:59,900

-So at this point, we are at 75% branch coverage. So what

-

-33

-00:01:59,900 --> 00:02:04,070

-happens is that we're missing this branch. For now, the inputs that we consider,

-

-34

-00:02:04,070 --> 00:02:07,740

-this branch is executed. Therefore, we need to add an additional test case. And

-

-35

-00:02:07,740 --> 00:02:11,600

-that this case that we need, is one for which this predicate is false and this

-

-36

-00:02:11,600 --> 00:02:15,680

-predicate is false. The simplest possibility in this case is the test case for

-

-37

-00:02:15,680 --> 00:02:20,170

-which A is equal to 0 and B is equal to 0. If we execute this test case,

-

-38

-00:02:20,170 --> 00:02:24,250

-our execution again followed this path, follows the fourth branch here.

-

-39

-00:02:24,250 --> 00:02:28,090

-And in this case, because result is not less than zero either, will follow

-

-40

-00:02:28,090 --> 00:02:33,090

-this branch as well. And therefore, we will reach our 100% branch coverage. And

-

-41

-00:02:33,090 --> 00:02:35,820

-this covered the problem. Something that I would like to clarify before we

-

-42

-00:02:35,820 --> 00:02:40,920

-move to the next topic, is that 100% coverage does not provide any guarantee of

-

-43

-00:02:40,920 --> 00:02:44,530

-finding the problems in the code. All we saw so far is the fact that by

-

-44

-00:02:44,530 --> 00:02:48,580

-testing more thoroughly we have more chances of finding a problem in the code.

-

-45

-00:02:48,580 --> 00:02:51,680

-But it doesn't matter which kind of coverage we utilize, and how much

-

-46

-00:02:51,680 --> 00:02:55,440

-coverage we achieve. There's always a chance that we might miss something. And

-

-47

-00:02:55,440 --> 00:02:59,760

-I will get back to this later on in the lesson. I just mentioned the fact that

-

-48

-00:02:59,760 --> 00:03:03,910

-we tested more fully when we went from statement coverage to branch coverage.

-

-49

-00:03:03,910 --> 00:03:06,900

-What does that mean exactly? To explain that, I'm going to introduce the concept

-

-50

-00:03:06,900 --> 00:03:11,420

-of test criteria subsumption. One test criteria subsumes another criteria when

-

-51

-00:03:11,420 --> 00:03:16,760

-all the tests widths that satisfy that criteria will also satisfy the other one.

-

-52

-00:03:16,760 --> 00:03:18,740

-So let me show you that with statement and

-

-53

-00:03:18,740 --> 00:03:23,220

-branch coverage. If we identify a test width that achieves 100% branch coverage,

-

-54

-00:03:23,220 --> 00:03:27,780

-the same test width will also achieve, necessarily, 100% statement coverage.

-

-55

-00:03:27,780 --> 00:03:31,290

-That's what happened for our example, and also what happens in general,

-

-56

-00:03:31,290 --> 00:03:35,660

-because branch coverage is a stronger criteria than statement coverage.

-

-57

-00:03:35,660 --> 00:03:39,670

-There is no way to cover all the branches without covering all the statements.

-

-58

-00:03:39,670 --> 00:03:43,480

-It is not true that any test results satisfies statement coverage will also

-

-59

-00:03:43,480 --> 00:03:47,040

-satisfy branch coverage. And, in fact, we just saw a counter example.

-

-60

-00:03:47,040 --> 00:03:50,569

-When we look at the printSum code. We had a test where there was achieving 100%

-

-61

-00:03:50,569 --> 00:03:53,910

-statement coverage and was not achieving 100% branch coverage. Therefore,

-

-62

-00:03:53,910 --> 00:03:58,301

-in this case we have a substantial relation in this direction. Branch coverage,

-

-63

-00:03:58,301 --> 00:04:02,860

-subsumes statement coverage. What it also means is that normally, or in general,

-

-64

-00:04:02,860 --> 00:04:06,910

-it is more expensive to achieve branch coverage than achieve statement coverage,

-

-65

-00:04:06,910 --> 00:04:09,490

-because achieving branch coverage requires the generation of

-

-66

-00:04:09,490 --> 00:04:13,770

-a larger number of test cases. So what this relation means is that

-

-67

-00:04:13,770 --> 00:04:17,779

-branch coverage is stronger than statement coverage but also more expensive.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/13 - Condition Coverage - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/13 - Condition Coverage - lang_en_vs4.srt
deleted file mode 100644
index bba72fc..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/13 - Condition Coverage - lang_en_vs4.srt
+++ /dev/null
@@ -1,191 +0,0 @@
-1

-00:00:00,470 --> 00:00:03,046

-What I'm going to do next is to introduce a few additional

-

-2

-00:00:03,046 --> 00:00:06,350

-coverage criteria using a slightly more complex example, but still a

-

-3

-00:00:06,350 --> 00:00:09,370

-pretty simple one. What I'm showing here is a program that

-

-4

-00:00:09,370 --> 00:00:12,145

-reads two real numbers, x and y. And then, if x

-

-5

-00:00:12,145 --> 00:00:15,148

-is equal to 0 or y is greater than 0, it

-

-6

-00:00:15,148 --> 00:00:19,360

-computes y as y divided by x. Otherwise, it computes x

-

-7

-00:00:19,360 --> 00:00:22,110

-as y plus 2, then it writes the value of x,

-

-8

-00:00:22,110 --> 00:00:25,730

-the value of y, and it terminates. Let's also introduce a CFG

-

-9

-00:00:25,730 --> 00:00:29,160

-for the program. As you can see, the CFG represents the statements

-

-10

-00:00:29,160 --> 00:00:31,900

-in the code and their control flow. And in this case, I made

-

-11

-00:00:31,900 --> 00:00:35,800

-explicit over the branches what are the conditions under which those branches

-

-12

-00:00:35,800 --> 00:00:38,530

-are taken to make it simpler to look at the example. Let's assume

-

-13

-00:00:38,530 --> 00:00:41,280

-that we have two tests for this code that are shown here.

-

-14

-00:00:41,280 --> 00:00:44,286

-For the first one, the inputs are 5 and 5. For the second

-

-15

-00:00:44,286 --> 00:00:47,610

-one, 5 and minus 5. If we consider branch coverage for this code

-

-16

-00:00:47,610 --> 00:00:50,990

-and we consider the two test cases, for the first one this condition

-

-17

-00:00:50,990 --> 00:00:53,440

-is true. Because x is not equal to 0 but y

-

-18

-00:00:53,440 --> 00:00:56,660

-is greater than 0. And therefore, we will follow this tree branch.

-

-19

-00:00:56,660 --> 00:00:59,640

-For the second one, the condition is false. Because x is not

-

-20

-00:00:59,640 --> 00:01:03,200

-equal to 0 and y is not greater than 0. Therefore, the

-

-21

-00:01:03,200 --> 00:01:05,990

-negation of it is true and we will follow this branch. In

-

-22

-00:01:05,990 --> 00:01:09,530

-other words, these two test cases achieve 100% branch coverage on this

-

-23

-00:01:09,530 --> 00:01:12,120

-code. If we look at the code though, we can see that

-

-24

-00:01:12,120 --> 00:01:15,879

-there is the possibility of making this code fail. Consider this statement,

-

-25

-00:01:15,879 --> 00:01:18,147

-if x is equal to 0, we could have a division

-

-26

-00:01:18,147 --> 00:01:21,710

-by 0. However, these two test cases, despite the fact that

-

-27

-00:01:21,710 --> 00:01:25,008

-they achieved 100% branch coverage, will not rebuild this problem. So

-

-28

-00:01:25,008 --> 00:01:27,564

-how can we be more thorough? I'll let you think about it

-

-29

-00:01:27,564 --> 00:01:29,964

-for a second, so think about how can we test more

-

-30

-00:01:29,964 --> 00:01:33,260

-thoroughly, in a more complete way, this code. So, in a way

-

-31

-00:01:33,260 --> 00:01:37,220

-that goes beyond branch coverage. And the answer is that we

-

-32

-00:01:37,220 --> 00:01:41,250

-can make each condition true and false. Instead of just considering the

-

-33

-00:01:41,250 --> 00:01:44,570

-whole predicate here. And that's exactly what is required by

-

-34

-00:01:44,570 --> 00:01:47,480

-the next criteria that we're going to consider which is condition

-

-35

-00:01:47,480 --> 00:01:49,880

-coverage. We're going to define it as usual in terms of

-

-36

-00:01:49,880 --> 00:01:53,070

-test requirements and coverage measure. In this case, the test

-

-37

-00:01:53,070 --> 00:01:57,540

-requirements for condition coverage are the individual conditions in the

-

-38

-00:01:57,540 --> 00:02:00,510

-program. So we want each condition in the program to

-

-39

-00:02:00,510 --> 00:02:03,900

-be both true and false first time execution. So the

-

-40

-00:02:03,900 --> 00:02:06,420

-way in which we can measure that is by measuring the

-

-41

-00:02:06,420 --> 00:02:09,150

-number of conditions that were both true and false

-

-42

-00:02:09,150 --> 00:02:11,580

-when we executed our tests over the total number

-

-43

-00:02:11,580 --> 00:02:14,180

-of conditions. And that gives us the percentage of

-

-44

-00:02:14,180 --> 00:02:17,270

-coverage that we achieved for condition coverage. Again, if you

-

-45

-00:02:17,270 --> 00:02:18,638

-want to look at this criteria in the form

-

-46

-00:02:18,638 --> 00:02:21,245

-of a question. The question would be, has each boolean

-

-47

-00:02:21,245 --> 00:02:25,480

-sub-expression, which means every condition in every predicate, evaluated

-

-48

-00:02:25,480 --> 00:02:28,010

-both to true and false when we run our tests.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/14 - Subsumption Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/14 - Subsumption Quiz - lang_en_vs4.srt
deleted file mode 100644
index de78093..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/14 - Subsumption Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,220

-So now that we introduced an additional criterion,

-

-2

-00:00:02,220 --> 00:00:04,290

-let's have a quiz to see whether everybody

-

-3

-00:00:04,290 --> 00:00:06,410

-understood the concept of subsumption. We know that

-

-4

-00:00:06,410 --> 00:00:09,490

-branch coverage subsumes statement coverage, but what about condition

-

-5

-00:00:09,490 --> 00:00:12,230

-coverage? Does it subsume branch coverage? Is it

-

-6

-00:00:12,230 --> 00:00:13,720

-the case that all of the test which

-

-7

-00:00:13,720 --> 00:00:16,980

-satisfy condition coverage will also satisfy branch coverage?

-

-8

-00:00:16,980 --> 00:00:19,160

-Think about it, and answer either yes or no.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/15 - Subsumption Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/15 - Subsumption Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 87140c9..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/15 - Subsumption Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,7 +0,0 @@
-1

-00:00:00,170 --> 00:00:02,475

-In this case, the answer is no, and I'm

-

-2

-00:00:02,475 --> 00:00:04,650

-going to show you an example of this in a minute.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/16 - Branch and Condition Coverage - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/16 - Branch and Condition Coverage - lang_en_vs4.srt
deleted file mode 100644
index 143a534..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/16 - Branch and Condition Coverage - lang_en_vs4.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,052 --> 00:00:03,407

-Let's go back to our test criteria subsumption representation, where

-

-2

-00:00:03,407 --> 00:00:06,770

-we already had branch coverage and statement coverage. In this case,

-

-3

-00:00:06,770 --> 00:00:09,350

-if we want to add condition coverage to this page, we

-

-4

-00:00:09,350 --> 00:00:12,050

-have to put it here on this side, with no relationship

-

-5

-00:00:12,050 --> 00:00:15,830

-of subsumption with either branch coverage or statement coverage, which

-

-6

-00:00:15,830 --> 00:00:19,270

-means that the criteria are not comparable. So now let's consider

-

-7

-00:00:19,270 --> 00:00:22,108

-again our last example, and let's use a different test

-

-8

-00:00:22,108 --> 00:00:25,060

-with this time. We still have two tests, but the first

-

-9

-00:00:25,060 --> 00:00:27,575

-one has x is equal to 0 and y is equal to minus

-

-10

-00:00:27,575 --> 00:00:30,370

-5. And the second one, x is equal to 5 and y is

-

-11

-00:00:30,370 --> 00:00:33,350

-equal to 5 as well. Let's see what happens in terms of condition

-

-12

-00:00:33,350 --> 00:00:36,740

-coverage, when we run these tests. If we look at the first condition, x

-

-13

-00:00:36,740 --> 00:00:39,820

-is equal to 0. It is both true, for the first test case,

-

-14

-00:00:39,820 --> 00:00:43,240

-and false for the second one. As for the second condition, y greater

-

-15

-00:00:43,240 --> 00:00:45,800

-than 0, it is false for the first test case and true for

-

-16

-00:00:45,800 --> 00:00:47,770

-the second one. Therefore we've achieved a

-

-17

-00:00:47,770 --> 00:00:50,400

-100% condition coverage with these two tests.

-

-18

-00:00:50,400 --> 00:00:54,020

-But what about branch coverage? If we consider the whole predicate,

-

-19

-00:00:54,020 --> 00:00:56,620

-instead of just the individual conditions, let's see what happens for the

-

-20

-00:00:56,620 --> 00:00:59,090

-two test cases. If we look at the first one, because

-

-21

-00:00:59,090 --> 00:01:02,200

-x is equal to 0, the overall predicate is true. As for

-

-22

-00:01:02,200 --> 00:01:05,750

-the second one, because the second condition is true, the overall

-

-23

-00:01:05,750 --> 00:01:09,110

-predicate is true. In other words, despite the fact that we're exercising

-

-24

-00:01:09,110 --> 00:01:12,520

-all the possible values for the two conditions, the overall predicate is

-

-25

-00:01:12,520 --> 00:01:16,540

-always true. And therefore, we're covering only one of the two branches.

-

-26

-00:01:16,540 --> 00:01:19,591

-So our coverage will be 50%. This is the reason

-

-27

-00:01:19,591 --> 00:01:22,231

-why normally the two criteria that we just saw, decision

-

-28

-00:01:22,231 --> 00:01:26,205

-coverage, and condition coverage are considered together. And the resulting

-

-29

-00:01:26,205 --> 00:01:30,320

-criterion is called branch and condition coverage, or also decision

-

-30

-00:01:30,320 --> 00:01:33,030

-and condition coverage. At this point the test requirements and

-

-31

-00:01:33,030 --> 00:01:35,590

-the coverage measure should be pretty straight forward, because they're

-

-32

-00:01:35,590 --> 00:01:38,120

-just considering the two criteria together. As far as the

-

-33

-00:01:38,120 --> 00:01:39,960

-requirements are concerned, they include

-

-34

-00:01:39,960 --> 00:01:41,880

-all the branches and individual conditions

-

-35

-00:01:41,880 --> 00:01:44,580

-in the program. Where as the coverage measure is computed

-

-36

-00:01:44,580 --> 00:01:49,180

-considering both coverage measures, both branch coverage and condition coverage.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/17 - Subsumption Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/17 - Subsumption Quiz - lang_en_vs4.srt
deleted file mode 100644
index 9d99495..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/17 - Subsumption Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,810

-Let's have another quick quiz about Subsumption. If we

-

-2

-00:00:02,810 --> 00:00:06,720

-consider Branch and Condition Coverage, does it subsume Branch Coverage,

-

-3

-00:00:06,720 --> 00:00:09,512

-and therefore Statement Coverage? Or in other words, does branch

-

-4

-00:00:09,512 --> 00:00:12,750

-and condition coverage imply branch coverage? Answer yes, or no.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/18 - Subsumption Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/18 - Subsumption Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index c836f04..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/18 - Subsumption Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,19 +0,0 @@
-1

-00:00:00,150 --> 00:00:01,880

-In this case it should be clear that the

-

-2

-00:00:01,880 --> 00:00:05,640

-answer is yes, because branch and condition coverage actually includes

-

-3

-00:00:05,640 --> 00:00:08,580

-branch coverage. Therefore, by definition, any test rate that

-

-4

-00:00:08,580 --> 00:00:10,505

-satisfies branch and condition coverage

-

-5

-00:00:10,505 --> 00:00:12,664

-will necessarily satisfy branch coverage.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/19 - Test Criteria Subsumption - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/19 - Test Criteria Subsumption - lang_en_vs4.srt
deleted file mode 100644
index f40ccdf..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/19 - Test Criteria Subsumption - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,280 --> 00:00:03,400

-So we can now update our test criteria subsumption. We start

-

-2

-00:00:03,400 --> 00:00:06,700

-from this situation in which there are no relationship between condition

-

-3

-00:00:06,700 --> 00:00:09,650

-coverage, branch coverage and statement coverage. And when we add branch

-

-4

-00:00:09,650 --> 00:00:12,160

-and condition coverage, we can mark the fact that branch and

-

-5

-00:00:12,160 --> 00:00:14,470

-condition coverage subsumes branch coverage

-

-6

-00:00:14,470 --> 00:00:16,370

-and also subsumes condition coverage, for

-

-7

-00:00:16,370 --> 00:00:19,660

-the same reason. Therefore, this is a stronger criterion than both

-

-8

-00:00:19,660 --> 00:00:23,100

-branch coverage and condition coverage, and of course indirectly also soft

-

-9

-00:00:23,100 --> 00:00:25,330

-statement coverage. So once more, to make sure we are all

-

-10

-00:00:25,330 --> 00:00:29,255

-on the same page, if I develop a test rate that satisfies branch and condition

-

-11

-00:00:29,255 --> 00:00:31,380

-coverage, the same test will satisfy also

-

-12

-00:00:31,380 --> 00:00:35,210

-branch coverage, statement coverage and condition coverage, necessarily.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt
deleted file mode 100644
index c032d40..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/2 - Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,167 +0,0 @@
-1

-00:00:00,420 --> 00:00:03,860

-In the last lesson, we talked about black-box testing or functional testing,

-

-2

-00:00:03,860 --> 00:00:06,110

-which is the kind of testing that you perform when you just

-

-3

-00:00:06,110 --> 00:00:09,860

-look at the description of the software. Today we're going to cover white-box

-

-4

-00:00:09,860 --> 00:00:12,490

-testing, which is the kind of testing that we perform when we

-

-5

-00:00:12,490 --> 00:00:15,800

-open up the box. We look inside the program, and we actually

-

-6

-00:00:15,800 --> 00:00:19,490

-test it based on its code. And there is one basic assumption

-

-7

-00:00:19,490 --> 00:00:22,320

-behind the idea of white-box testing, which is a very intuitive one,

-

-8

-00:00:22,320 --> 00:00:26,080

-and the assumption is that executing the faulty statement is a necessary

-

-9

-00:00:26,080 --> 00:00:29,380

-condition for revealing a fault. In other words, if there is

-

-10

-00:00:29,380 --> 00:00:31,690

-a bug in the program there is no way were going to be

-

-11

-00:00:31,690 --> 00:00:34,490

-able to find this bug or this fault, if we don't execute

-

-12

-00:00:34,490 --> 00:00:37,110

-the statement that contains it. Which makes a lot of sense. As

-

-13

-00:00:37,110 --> 00:00:40,240

-we did for black-box testing, we're going to start by summarizing what

-

-14

-00:00:40,240 --> 00:00:43,650

-are the main advantages of white-box testing. The main advantage is that

-

-15

-00:00:43,650 --> 00:00:48,050

-it's based on the code, and as such, the quality of white-box

-

-16

-00:00:48,050 --> 00:00:51,760

-testing can be measured objectively. And what I mean here by objectively

-

-17

-00:00:51,760 --> 00:00:54,390

-is that if you think about black-box testing In many

-

-18

-00:00:54,390 --> 00:00:57,630

-cases, there were subjective decisions, there were had to be made

-

-19

-00:00:57,630 --> 00:01:00,830

-in order to define tests in a black-box fashion. In the

-

-20

-00:01:00,830 --> 00:01:03,990

-case of white-box testing, because everything is based on the quota,

-

-21

-00:01:03,990 --> 00:01:07,965

-we don't have to make such subjective decisions. And similarly, because

-

-22

-00:01:07,965 --> 00:01:10,680

-white-box testing is based on the code, it can be measured

-

-23

-00:01:10,680 --> 00:01:14,250

-automatically. So we can build tools and actually there are tools,

-

-24

-00:01:14,250 --> 00:01:16,860

-and there's plenty of tools, that can be measured, the level

-

-25

-00:01:16,860 --> 00:01:19,670

-of white-box testing can be achieved in a fully automated way.

-

-26

-00:01:19,670 --> 00:01:21,620

-And we're going to see some of them in the course of the

-

-27

-00:01:21,620 --> 00:01:24,600

-class. Another advantage of white-box testing is that it can be

-

-28

-00:01:24,600 --> 00:01:27,700

-used to compare test suites. So if you have two alternative sets

-

-29

-00:01:27,700 --> 00:01:30,270

-of tests that you can use to assess the quality of

-

-30

-00:01:30,270 --> 00:01:34,360

-your software, white-box testing techniques can tell you which one of these

-

-31

-00:01:34,360 --> 00:01:37,580

-two test suites is likely to be more effective in testing

-

-32

-00:01:37,580 --> 00:01:42,350

-your code. And finally, white-box testing allows for covering the coded behavior

-

-33

-00:01:42,350 --> 00:01:44,470

-of the software. What that means is that if there is

-

-34

-00:01:44,470 --> 00:01:47,680

-some mistake in the code and is not obvious by looking at

-

-35

-00:01:47,680 --> 00:01:50,300

-the specification of the code, white box testing might be able

-

-36

-00:01:50,300 --> 00:01:53,330

-to catch it, because it tries to exercise the code. There's many

-

-37

-00:01:53,330 --> 00:01:56,430

-different kinds of white box testing, there are control flow based

-

-38

-00:01:56,430 --> 00:02:00,550

-techniques, data flow based techniques, and fault based techniques. And for each

-

-39

-00:02:00,550 --> 00:02:04,030

-one of these family of techniques there are many variations. So

-

-40

-00:02:04,030 --> 00:02:07,450

-this field is very, very broad. In this lesson we will talk

-

-41

-00:02:07,450 --> 00:02:09,110

-about white-box testing by focusing

-

-42

-00:02:09,110 --> 00:02:11,910

-mainly on control-flow based testing techniques.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/20 - B&C Coverage Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/20 - B&C Coverage Quiz - lang_en_vs4.srt
deleted file mode 100644
index 6f5c9a1..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/20 - B&C Coverage Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,35 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,969

-So let's have another quiz using the example that we just

-

-2

-00:00:02,969 --> 00:00:06,660

-used. This one is about achieving 100% branch and condition coverage. So

-

-3

-00:00:06,660 --> 00:00:08,850

-let me bring back the two tests cases that we just saw,

-

-4

-00:00:08,850 --> 00:00:11,420

-and as we saw a few minutes ago, these tests cases do

-

-5

-00:00:11,420 --> 00:00:15,540

-not achieve 100% branch and condition coverage despite the fact that they

-

-6

-00:00:15,540 --> 00:00:19,430

-achieve 100% condition coverage. So both conditions are both true and false,

-

-7

-00:00:19,430 --> 00:00:21,820

-for these test cases. So what I want you to do is

-

-8

-00:00:21,820 --> 00:00:25,630

-to add a test case, to achieve 100% branch and condition coverages.

-

-9

-00:00:25,630 --> 00:00:29,740

-So specify the test case by writing here the value for x, and the value for y.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/21 - B&C Coverage Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/21 - B&C Coverage Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 2b6fe4b..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/21 - B&C Coverage Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,190 --> 00:00:03,010

-Obviously there are many possible tests that we can use to

-

-2

-00:00:03,010 --> 00:00:05,910

-reach 100% branch and condition coverage. So I'm just going to show a

-

-3

-00:00:05,910 --> 00:00:08,740

-possible one, which is x equal to 3 and y is

-

-4

-00:00:08,740 --> 00:00:11,410

-equal to negative 2. If we specify this as case, you can

-

-5

-00:00:11,410 --> 00:00:14,900

-see that the overall condition is false, because neither x is

-

-6

-00:00:14,900 --> 00:00:17,990

-equal to 0 nor y is greater than 0. Therefore we will

-

-7

-00:00:17,990 --> 00:00:22,420

-follow the false, false branch, and achieve 100% branch and condition coverage

-

-8

-00:00:22,420 --> 00:00:25,400

-for this code. And we might require to be even more thorough,

-

-9

-00:00:25,400 --> 00:00:28,690

-that all the combinations of our conditions inside each

-

-10

-00:00:28,690 --> 00:00:31,790

-decision, inside each predicate, are tested. Which is what is

-

-11

-00:00:31,790 --> 00:00:36,010

-called, multiple condition coverage. But because of the way

-

-12

-00:00:36,010 --> 00:00:39,050

-this criterion is defined, it is combinatorial, becuse you have

-

-13

-00:00:39,050 --> 00:00:42,220

-to consider all the possible combinations of conditions. And

-

-14

-00:00:42,220 --> 00:00:45,210

-therefore it's extremely expensive, to the point of being impractical.

-

-15

-00:00:45,210 --> 00:00:47,610

-So instead of defining that criterion, we're going to find

-

-16

-00:00:47,610 --> 00:00:51,000

-another one which finds a good trade off between thoroughness

-

-17

-00:00:51,000 --> 00:00:52,815

-of the tests and their cost.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/22 - MC DC Coverage - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/22 - MC DC Coverage - lang_en_vs4.srt
deleted file mode 100644
index 1a971f9..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/22 - MC DC Coverage - lang_en_vs4.srt
+++ /dev/null
@@ -1,307 +0,0 @@
-1

-00:00:00,120 --> 00:00:03,880

-And this criterion is called Modified Condition/Decision Coverage,

-

-2

-00:00:03,880 --> 00:00:07,750

-also called MC/DC. This criterion is very important because

-

-3

-00:00:07,750 --> 00:00:10,330

-it is often required for safety critical applications.

-

-4

-00:00:10,330 --> 00:00:13,920

-For example, the FAA, the Federal Aviation Administration, requires

-

-5

-00:00:13,920 --> 00:00:15,980

-for all the software that runs on commercial

-

-6

-00:00:15,980 --> 00:00:19,420

-airplanes to be tested according to the Modified Condition/Decision

-

-7

-00:00:19,420 --> 00:00:22,015

-Coverage. So what is the key idea behind the

-

-8

-00:00:22,015 --> 00:00:25,270

-MC/DC criterion? It is to test only the important

-

-9

-00:00:25,270 --> 00:00:28,710

-combinations of conditions instead of all of them, and limit

-

-10

-00:00:28,710 --> 00:00:32,189

-the testing cost by excluding the other combinations. And the way

-

-11

-00:00:32,189 --> 00:00:34,950

-in which it works is by extending branch and decision

-

-12

-00:00:34,950 --> 00:00:38,860

-coverage with the requirement that each condition should affect the decision

-

-13

-00:00:38,860 --> 00:00:41,940

-outcome independently. So let's see what this means with an

-

-14

-00:00:41,940 --> 00:00:45,030

-example that will also show you how you can reduce the

-

-15

-00:00:45,030 --> 00:00:46,940

-number of combinations in this way. I am going to

-

-16

-00:00:46,940 --> 00:00:50,460

-show you an example of how MC/DC works using this predicate

-

-17

-00:00:50,460 --> 00:00:53,870

-which consists of three conditions. a, b, and c, which are all

-

-18

-00:00:53,870 --> 00:00:57,070

-in and, so the overall predicate is a and b and c.

-

-19

-00:00:57,070 --> 00:00:58,980

-The first thing I'm going to do is to show you how

-

-20

-00:00:58,980 --> 00:01:03,370

-many test cases we will need to satisfy the multiple condition coverage

-

-21

-00:01:03,370 --> 00:01:06,440

-for this simple predicate. Which means, how many test cases we will

-

-22

-00:01:06,440 --> 00:01:09,780

-need to test all the possible combinations of true and false values

-

-23

-00:01:09,780 --> 00:01:12,740

-for these conditions. So I'm going to populate this table. And as you

-

-24

-00:01:12,740 --> 00:01:15,870

-can see, at the end we have eight test cases. Each test case

-

-25

-00:01:15,870 --> 00:01:18,650

-tests a different combination of values for a, b, and c.

-

-26

-00:01:18,650 --> 00:01:21,200

-I'm also showing, for each test case, the outcome of the overall

-

-27

-00:01:21,200 --> 00:01:23,930

-predicate. So, for example, if we look at the first one, the

-

-28

-00:01:23,930 --> 00:01:27,200

-first test case, will be such that a is true, b is

-

-29

-00:01:27,200 --> 00:01:30,210

-true, and c is true. And therefore, the overall outcome of

-

-30

-00:01:30,210 --> 00:01:34,360

-the predicate is true. Now lets consider the first condition, a. As

-

-31

-00:01:34,360 --> 00:01:36,300

-I said a minute ago, what we want to test are the

-

-32

-00:01:36,300 --> 00:01:39,160

-important combination. Which are the comibatinos

-

-33

-00:01:39,160 --> 00:01:41,930

-in which a single condition independently

-

-34

-00:01:41,930 --> 00:01:45,610

-effects the outcome of the overall predicate. So if we consider a

-

-35

-00:01:45,610 --> 00:01:48,490

-and we look at this possible set of this cases. Let's try to

-

-36

-00:01:48,490 --> 00:01:51,850

-find two test cases such that the only difference between the two

-

-37

-00:01:51,850 --> 00:01:54,960

-test cases is the value of a, and the overall outcome of the

-

-38

-00:01:54,960 --> 00:01:57,790

-predicate is different. If we look at the table, we can see

-

-39

-00:01:57,790 --> 00:02:00,920

-that this is true for test cases one and five. If we look

-

-40

-00:02:00,920 --> 00:02:04,030

-at these two cases, we can see that the overall of the predicate

-

-41

-00:02:04,030 --> 00:02:07,420

-in the two cases is true and false, and that the only difference

-

-42

-00:02:07,420 --> 00:02:10,720

-between the value of the conditions in the value of a. So

-

-43

-00:02:10,720 --> 00:02:13,990

-these test cases satisfy exactly what we wanted. There are two test

-

-44

-00:02:13,990 --> 00:02:18,270

-cases in which the value of a independently decides the overall value

-

-45

-00:02:18,270 --> 00:02:21,380

-of the predicate. What we do, therefore, is to add these first

-

-46

-00:02:21,380 --> 00:02:24,740

-two test cases to our set of tests down here. Now let's

-

-47

-00:02:24,740 --> 00:02:27,520

-focus on b and let's try to find two test cases such

-

-48

-00:02:27,520 --> 00:02:30,280

-that the value of b is the only value that changes between

-

-49

-00:02:30,280 --> 00:02:32,450

-the two test cases, but the overall value of the predicate is

-

-50

-00:02:32,450 --> 00:02:34,980

-different, the same thing we did for a. And in this case,

-

-51

-00:02:34,980 --> 00:02:37,610

-we can see that if we select test case number one, and test

-

-52

-00:02:37,610 --> 00:02:40,420

-case number three, we have exactly that situation. b is true in the

-

-53

-00:02:40,420 --> 00:02:44,250

-first case, false in the second one, a and c don't change, but

-

-54

-00:02:44,250 --> 00:02:46,830

-the overall value of the predicate changes. And now you can notice

-

-55

-00:02:46,830 --> 00:02:50,720

-something else. That even though we selected two test cases, tested two values,

-

-56

-00:02:50,720 --> 00:02:53,950

-one we already had. So, we only need three test cases overall to

-

-57

-00:02:53,950 --> 00:02:57,730

-test a and b according to MC/DC. Now, let's look at our last

-

-58

-00:02:57,730 --> 00:03:00,510

-condition, c. At this point, we know the game, so we

-

-59

-00:03:00,510 --> 00:03:02,780

-just have to look for two test cases that satisfy our

-

-60

-00:03:02,780 --> 00:03:06,380

-requirements. And in this case, one and two are suitable candidates.

-

-61

-00:03:06,380 --> 00:03:08,820

-And once more, because we already have one, we just have to

-

-62

-00:03:08,820 --> 00:03:11,070

-add two to our list. So as you can see from

-

-63

-00:03:11,070 --> 00:03:14,730

-this example, we went from having eight test cases needed to cover

-

-64

-00:03:14,730 --> 00:03:18,600

-all the possible combinations of conditions to only four test cases

-

-65

-00:03:18,600 --> 00:03:22,880

-to satisfy the MC/DC criteria. So let's see where MC/DC stands in

-

-66

-00:03:22,880 --> 00:03:25,510

-our substantion hierarchy. This is what we had so far

-

-67

-00:03:25,510 --> 00:03:28,430

-in the hierarchy and this is where the MC/DC criterion will

-

-68

-00:03:28,430 --> 00:03:31,930

-stand. MC/DC criterion is stronger than branch and condition coverage.

-

-69

-00:03:31,930 --> 00:03:35,210

-Why? Because it requires every single condition to be true and

-

-70

-00:03:35,210 --> 00:03:38,400

-false. And therefore, this section was a condition coverage criteria.

-

-71

-00:03:38,400 --> 00:03:41,610

-And it also requires every predicate to be true and false

-

-72

-00:03:41,610 --> 00:03:44,425

-and therefore, this section is branch coverage. And in addition,

-

-73

-00:03:44,425 --> 00:03:47,790

-it's got the additional requirements that the true and false values,

-

-74

-00:03:47,790 --> 00:03:50,330

-all the conditions have to also decide the overall

-

-75

-00:03:50,330 --> 00:03:53,190

-value of the predicate. So it's stronger. Which is more

-

-76

-00:03:53,190 --> 00:03:56,130

-thorough than branch and condition coverage and, as usual,

-

-77

-00:03:56,130 --> 00:03:59,380

-also stronger than branch coverage, statement coverage, and condition coverage.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt
deleted file mode 100644
index 27bf0fe..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/23 - Other Criteria - lang_en_vs4.srt
+++ /dev/null
@@ -1,275 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,900

-As I mentioned at the beginning of the class, there are many, many,

-

-2

-00:00:02,900 --> 00:00:06,150

-many, white box criteria. And we're not going to have time to cover them

-

-3

-00:00:06,150 --> 00:00:08,000

-all. So what I like to do now is just to give you

-

-4

-00:00:08,000 --> 00:00:11,290

-the flavor, of some other criteria by just mentioning them, and saying a

-

-5

-00:00:11,290 --> 00:00:13,740

-couple of things, about the way they work. And the first one I

-

-6

-00:00:13,740 --> 00:00:15,370

-want to mention is path coverage. And

-

-7

-00:00:15,370 --> 00:00:17,800

-in path coverage, the test requirements are

-

-8

-00:00:17,800 --> 00:00:21,220

-all the paths in the program. So what that means is that to

-

-9

-00:00:21,220 --> 00:00:25,250

-satisfy this criteria, we need to generate enough test cases such that all

-

-10

-00:00:25,250 --> 00:00:27,230

-the paths in my program are covered. As you can

-

-11

-00:00:27,230 --> 00:00:31,970

-imagine this is incredibly expensive because any nontrivial program has got

-

-12

-00:00:31,970 --> 00:00:34,280

-a virtual infinite number of paths and therefore we will

-

-13

-00:00:34,280 --> 00:00:36,910

-need a virtual infinite number of test cases to satisfy the

-

-14

-00:00:36,910 --> 00:00:39,950

-path coverage criteria. Another family of criteria I want to mention

-

-15

-00:00:39,950 --> 00:00:43,970

-are data-flow coverage criteria and in data-flow coverage criteria, the focus

-

-16

-00:00:43,970 --> 00:00:47,480

-shifts from the coverage of individual elements in the code to

-

-17

-00:00:47,480 --> 00:00:50,320

-the coverage of pairs of elements. And in particular the coverage

-

-18

-00:00:50,320 --> 00:00:53,770

-of Statements, in which the content of some memory locations

-

-19

-00:00:53,770 --> 00:00:56,920

-modified, and statements in which the content of the same

-

-20

-00:00:56,920 --> 00:00:59,860

-memory location is used. So in this way, our test

-

-21

-00:00:59,860 --> 00:01:03,030

-will exercise the assignments of values to memory, and the

-

-22

-00:01:03,030 --> 00:01:06,020

-usage of those assignments,. Finally, I want to mention mutation

-

-23

-00:01:06,020 --> 00:01:09,150

-coverage. And this is a fairly different and new idea,

-

-24

-00:01:09,150 --> 00:01:11,910

-so the key concept in mutation coverage is that we

-

-25

-00:01:11,910 --> 00:01:16,156

-want to evaluate the goodness of our test by modifying the code.

-

-26

-00:01:16,156 --> 00:01:18,704

-For example here in this small I'm, I'm showing that I might

-

-27

-00:01:18,704 --> 00:01:21,820

-change it. An if statement from K greater than 9, to K

-

-28

-00:01:21,820 --> 00:01:24,310

-greater than or equal to 9. And the reason why I want to

-

-29

-00:01:24,310 --> 00:01:27,750

-do that, is that if I generate enough mutants, enough variation of

-

-30

-00:01:27,750 --> 00:01:30,340

-my program, then I can use them to assess how good are

-

-31

-00:01:30,340 --> 00:01:34,330

-my tests at distinguishing the original program and the mutants. And because

-

-32

-00:01:34,330 --> 00:01:37,430

-I'm changing the code based on the way I expect to introduce

-

-33

-00:01:37,430 --> 00:01:41,370

-errors in the code, the more my test can identify mutants, the better

-

-34

-00:01:41,370 --> 00:01:44,140

-they are at identifying real faults. This is a very high

-

-35

-00:01:44,140 --> 00:01:46,470

-level [UNKNOWN], but just to give you the intuition and the idea

-

-36

-00:01:46,470 --> 00:01:50,210

-behind these criteria, and I'm going to provide as usual, additional pointers

-

-37

-00:01:50,210 --> 00:01:52,930

-to go in more depth on these topics in the notes of

-

-38

-00:01:52,930 --> 00:01:55,170

-the class. So now, let's go back to our test criteria

-

-39

-00:01:55,170 --> 00:01:59,310

-subsumption hierarchy, and see how all of these criteria fit together in

-

-40

-00:01:59,310 --> 00:02:02,663

-this context. Let me start with multiple condition coverage. As we saw,

-

-41

-00:02:02,663 --> 00:02:06,740

-MC/DC is sort of as [UNKNOWN] way of doing multiple condition coverage

-

-42

-00:02:06,740 --> 00:02:09,229

-in the sense that it doesn't consider all the combinations,

-

-43

-00:02:09,229 --> 00:02:11,460

-but only the ones that are more likely to matter.

-

-44

-00:02:11,460 --> 00:02:14,930

-And as such, MC/DC exercises a subset of the elements

-

-45

-00:02:14,930 --> 00:02:16,220

-of the multiple condition coverage

-

-46

-00:02:16,220 --> 00:02:18,760

-exercises. And therefore, multiple condition coverage

-

-47

-00:02:18,760 --> 00:02:22,060

-is more thorough than MC/DC and subsumption, and it's also

-

-48

-00:02:22,060 --> 00:02:26,300

-as we saw incredibly more expensive. Path coverage subsumes branch coverage,

-

-49

-00:02:26,300 --> 00:02:28,090

-because if I cover all of the paths in the

-

-50

-00:02:28,090 --> 00:02:32,140

-code, I necessarily cover all the branches. However, it doesn't subsume

-

-51

-00:02:32,140 --> 00:02:34,130

-multiple condition coverage, MC/CD, or

-

-52

-00:02:34,130 --> 00:02:35,910

-branch and condition coverage. Because this

-

-53

-00:02:35,910 --> 00:02:38,590

-criteria, have additional requirements involving

-

-54

-00:02:38,590 --> 00:02:39,940

-the conditions of the predicate that

-

-55

-00:02:39,940 --> 00:02:42,730

-path coverage does not have. As for data-flow coverage criteria and

-

-56

-00:02:42,730 --> 00:02:45,010

-mutation coverage criteria, there really no

-

-57

-00:02:45,010 --> 00:02:46,860

-relation with the other criteria, because

-

-58

-00:02:46,860 --> 00:02:49,710

-they look at different aspects, of the code. So they're not

-

-59

-00:02:49,710 --> 00:02:52,220

-really comparable, and therefore we're just going to put them on the

-

-60

-00:02:52,220 --> 00:02:55,000

-side, without any relationship with the other ones. The reason why

-

-61

-00:02:55,000 --> 00:02:57,300

-I want to represent them all anyways is because I want to make

-

-62

-00:02:57,300 --> 00:02:59,950

-an important distinction between these different criteria. And

-

-63

-00:02:59,950 --> 00:03:02,690

-that's the distinction between practical criteria, which are

-

-64

-00:03:02,690 --> 00:03:05,490

-criteria that are actually not too expansive to

-

-65

-00:03:05,490 --> 00:03:08,790

-be used in real scenarios. And theoretical criteria, which

-

-66

-00:03:08,790 --> 00:03:11,590

-are criteria that are useful in theory from

-

-67

-00:03:11,590 --> 00:03:14,140

-the conceptual standpoint, but they're not really applicable

-

-68

-00:03:14,140 --> 00:03:16,540

-in practice because they're too expansive, because they

-

-69

-00:03:16,540 --> 00:03:19,460

-require basically too many test cases to be satisfied.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/24 - Review Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/24 - Review Quiz - lang_en_vs4.srt
deleted file mode 100644
index 3f1d6ee..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/24 - Review Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,160 --> 00:00:04,260

-White box testing, in general, and coverage criteria in particular, involve some

-

-2

-00:00:04,260 --> 00:00:07,550

-subtle concepts, so before I conclude this lesson, I want to have a

-

-3

-00:00:07,550 --> 00:00:10,960

-few more quizzes to make sure that we all understand these concepts.

-

-4

-00:00:10,960 --> 00:00:13,610

-The first one involves a very simple piece of code, a straight line

-

-5

-00:00:13,610 --> 00:00:16,540

-of code, three statements, in which we simply read an integer and

-

-6

-00:00:16,540 --> 00:00:20,180

-then prints 10 divided by the value of that integer minus 3. Now,

-

-7

-00:00:20,180 --> 00:00:22,250

-let's imagine that we have a test where there consists of three

-

-8

-00:00:22,250 --> 00:00:25,250

-test cases for this code, and what I'm showing in the test cases

-

-9

-00:00:25,250 --> 00:00:28,580

-is the input and the expected output. So for the first one,

-

-10

-00:00:28,580 --> 00:00:31,280

-the input is 1, and I expect the output to be minus 5.

-

-11

-00:00:31,280 --> 00:00:34,480

-For the second one, the input is minus 1, I'm expecting to

-

-12

-00:00:34,480 --> 00:00:37,120

-have 2.5. And for the third one, the input is 0, and I'm

-

-13

-00:00:37,120 --> 00:00:42,440

-expecting to have minus 3.3333 as the result. Now the first question

-

-14

-00:00:42,440 --> 00:00:45,180

-I want to ask, is if we considered this test suite, and we

-

-15

-00:00:45,180 --> 00:00:48,050

-run it on the code, does it achieve path coverage? And remember

-

-16

-00:00:48,050 --> 00:00:50,960

-that path coverage is one of the strongest coverage criteria that we saw.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/25 - Review Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/25 - Review Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 19d1177..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/25 - Review Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,7 +0,0 @@
-1

-00:00:00,180 --> 00:00:04,040

-And the answer in this case is clearly yes. In fact, any input will really

-

-2

-00:00:04,040 --> 00:00:07,430

-achieve path coverage for this code because there is only one path in the code.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/26 - Review Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/26 - Review Quiz - lang_en_vs4.srt
deleted file mode 100644
index a07e712..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/26 - Review Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,108 --> 00:00:03,890

-But now want to ask a different question which is, does this test reveal

-

-2

-00:00:03,890 --> 00:00:07,760

-the fault at line three? Clearly, here there is a possible problem, because

-

-3

-00:00:07,760 --> 00:00:10,440

-if we pass the right input, we can have a division by zero.

-

-4

-00:00:10,440 --> 00:00:13,760

-Is that revealed if we run this test within the code? Yes or no?

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/27 - Review Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/27 - Review Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 9945694..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/27 - Review Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,55 +0,0 @@
-1

-00:00:00,340 --> 00:00:03,581

-And the answer is no. So even path coverage's stronger criteria

-

-2

-00:00:03,581 --> 00:00:06,376

-that we saw is not enough to reveal this problem. And why

-

-3

-00:00:06,376 --> 00:00:08,526

-is that? So let me go back to a concept that

-

-4

-00:00:08,526 --> 00:00:12,491

-I mentioned in a previous lesson, the cost of exhaustive testing. Exhaustive

-

-5

-00:00:12,491 --> 00:00:15,236

-testing is really the only way in which we can exercise

-

-6

-00:00:15,236 --> 00:00:18,230

-all of the possible behaviors of a program. So we can say

-

-7

-00:00:18,230 --> 00:00:21,884

-even though it might sound like topology, that only exhaustive testing is

-

-8

-00:00:21,884 --> 00:00:25,710

-exhausted. All the coverage criteria that we saw are just process and

-

-9

-00:00:25,710 --> 00:00:30,900

-just approximation of a complete test. So test is a best effort kind

-

-10

-00:00:30,900 --> 00:00:33,180

-of activity. Coverage criteria help you assess

-

-11

-00:00:33,180 --> 00:00:35,430

-how well you tested but once more,

-

-12

-00:00:35,430 --> 00:00:40,060

-test can only reveal issues, can only reveal problems. You can never show the

-

-13

-00:00:40,060 --> 00:00:42,530

-absence of problems. And that's something is

-

-14

-00:00:42,530 --> 00:00:44,377

-important to remember when we do testing.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/28 - Review Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/28 - Review Quiz - lang_en_vs4.srt
deleted file mode 100644
index d6dd40a..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/28 - Review Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,290 --> 00:00:03,220

-Now let's do another quiz considering a slightly different piece

-

-2

-00:00:03,220 --> 00:00:05,050

-of code. In this case we have five layers of

-

-3

-00:00:05,050 --> 00:00:08,684

-code. We have a variable i, a variable j. Variable

-

-4

-00:00:08,684 --> 00:00:11,620

-j is read from the input. And then based on

-

-5

-00:00:11,620 --> 00:00:14,500

-this predicate, we either print the value of i or

-

-6

-00:00:14,500 --> 00:00:16,850

-simply exit. And what I want to know from you is

-

-7

-00:00:16,850 --> 00:00:19,990

-whether you can create a test suite to achieve statement

-

-8

-00:00:19,990 --> 00:00:22,660

-coverage for this simple piece of code. Yes or no?

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/29 - Review Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/29 - Review Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 1e3228c..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/29 - Review Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,119 +0,0 @@
-1

-00:00:00,230 --> 00:00:02,520

-And the answer in this case is no. And

-

-2

-00:00:02,520 --> 00:00:05,480

-the reason for this is because this code is

-

-3

-00:00:05,480 --> 00:00:08,950

-unreachable. This is dead code because no matter the

-

-4

-00:00:08,950 --> 00:00:12,560

-value of j, this condition will always be false because

-

-5

-00:00:12,560 --> 00:00:14,770

-i will always be 0. And notice that this

-

-6

-00:00:14,770 --> 00:00:17,670

-is a small example, but another important truth is

-

-7

-00:00:17,670 --> 00:00:22,520

-that any non-trivial program contains dead or unreachable code,

-

-8

-00:00:22,520 --> 00:00:25,610

-code that no matter how well we test our system,

-

-9

-00:00:25,610 --> 00:00:28,450

-we will never be able to exercise. Why is that? Various

-

-10

-00:00:28,450 --> 00:00:31,030

-reasons. For example, defensive programming or,

-

-11

-00:00:31,030 --> 00:00:33,600

-for example, developing for future releases.

-

-12

-00:00:33,600 --> 00:00:36,320

-So there might be pieces of code that are added, but they're

-

-13

-00:00:36,320 --> 00:00:39,380

-still not activated. They're still not invoked by any other part of

-

-14

-00:00:39,380 --> 00:00:41,970

-the code because of modifications to the code. There are some

-

-15

-00:00:41,970 --> 00:00:44,480

-parts that were executed before and in the new version of the

-

-16

-00:00:44,480 --> 00:00:47,915

-program, they are no longer exercised. They are no longer executable. But

-

-17

-00:00:47,915 --> 00:00:50,760

-they still remain in the code base. And this is a very,

-

-18

-00:00:50,760 --> 00:00:54,560

-very normal situation for this reason and many more. And this is

-

-19

-00:00:54,560 --> 00:00:56,790

-an important concept because this affects

-

-20

-00:00:56,790 --> 00:00:58,760

-the very meaning of coverage measures. If

-

-21

-00:00:58,760 --> 00:01:01,225

-there is some unreachable code, we will never be able to reach

-

-22

-00:01:01,225 --> 00:01:04,709

-100% code coverage. And in fact, if you remember, at the beginning of

-

-23

-00:01:04,709 --> 00:01:07,380

-the lesson, we discussed this concept and asked you why you think

-

-24

-00:01:07,380 --> 00:01:10,470

-that, in the industry, the target for coverage is not 100% but less

-

-25

-00:01:10,470 --> 00:01:12,850

-that that. And that's the answer, to account for the fact that there

-

-26

-00:01:12,850 --> 00:01:15,890

-are infeasibility problems that I have to take into account when I test

-

-27

-00:01:15,890 --> 00:01:19,920

-the code, infeasible paths, unexecutable statements, conditions that can never

-

-28

-00:01:19,920 --> 00:01:22,780

-be true, and so on. So most criteria, if not

-

-29

-00:01:22,780 --> 00:01:24,620

-all, are affected, and we need to take that into

-

-30

-00:01:24,620 --> 00:01:27,270

-account when we try to achieve a given coverage target.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/3 - Coverage Criteria Intro - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/3 - Coverage Criteria Intro - lang_en_vs4.srt
deleted file mode 100644
index b1a38a7..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/3 - Coverage Criteria Intro - lang_en_vs4.srt
+++ /dev/null
@@ -1,171 +0,0 @@
-1

-00:00:00,320 --> 00:00:04,059

-So let's start our lesson on white docs testing by considering again the

-

-2

-00:00:04,059 --> 00:00:07,470

-program PrintSum. If you remember, this is the same program that we used when

-

-3

-00:00:07,470 --> 00:00:10,300

-we were talking about black box testing. It's the program that takes two

-

-4

-00:00:10,300 --> 00:00:14,050

-integers, A and B, and produces, as a result, the sum of the two.

-

-5

-00:00:14,050 --> 00:00:16,570

-And when we were looking at this problem in the context of black

-

-6

-00:00:16,570 --> 00:00:17,760

-box testing, we did not look at

-

-7

-00:00:17,760 --> 00:00:19,700

-implementation. But that's exactly what we're going to

-

-8

-00:00:19,700 --> 00:00:22,090

-do now. So we're going to open the box and look at how the

-

-9

-00:00:22,090 --> 00:00:25,700

-code is implemented. And as you can see, the programmer was kind of creative.

-

-10

-00:00:25,700 --> 00:00:28,670

-Because instead of just adding the two numbers and printing them, he

-

-11

-00:00:28,670 --> 00:00:32,080

-or she also decided to print them in a specific color depending

-

-12

-00:00:32,080 --> 00:00:36,840

-on whether they were positive numbers or negative numbers. So positive results

-

-13

-00:00:36,840 --> 00:00:40,040

-are printed in red and negative results are printed in blue. And as

-

-14

-00:00:40,040 --> 00:00:41,970

-you can see by looking at the code we can see some

-

-15

-00:00:41,970 --> 00:00:45,150

-interesting cases that we might want to test. For instance you can

-

-16

-00:00:45,150 --> 00:00:48,190

-see that there are two decisions made here. So we might decide

-

-17

-00:00:48,190 --> 00:00:51,100

-that this is an interesting case and therefore we want to test it.

-

-18

-00:00:51,100 --> 00:00:53,770

-Similarly we might look at this other case and we might

-

-19

-00:00:53,770 --> 00:00:56,465

-also decide that this is another interesting case and therefore we

-

-20

-00:00:56,465 --> 00:00:58,970

-want to test this one as well. So let's discuss this

-

-21

-00:00:58,970 --> 00:01:01,480

-in a slightly more formal way by introducing the concept of

-

-22

-00:01:01,480 --> 00:01:05,110

-coverage criteria which are really the essence of why box testing.

-

-23

-00:01:05,110 --> 00:01:08,930

-First of all coverage criteria are defined in terms of test

-

-24

-00:01:08,930 --> 00:01:13,460

-requirements where test requirements are the elements, the entities in the

-

-25

-00:01:13,460 --> 00:01:16,250

-code that we need to exercise. That we need to execute

-

-26

-00:01:16,250 --> 00:01:18,690

-in order to satisfy the criteria. And we'll see plenty

-

-27

-00:01:18,690 --> 00:01:21,430

-of examples of that. And normally, when I apply a coverage

-

-28

-00:01:21,430 --> 00:01:24,810

-criterion, my result is a set of test specifications. And we

-

-29

-00:01:24,810 --> 00:01:26,540

-already saw test specifications. Those

-

-30

-00:01:26,540 --> 00:01:29,540

-are basically descriptions, specifications, of how

-

-31

-00:01:29,540 --> 00:01:32,786

-the tests should be in order to satisfy the requirements. And

-

-32

-00:01:32,786 --> 00:01:36,210

-they also result in actual test cases, which are instantiations of

-

-33

-00:01:36,210 --> 00:01:39,470

-the test specifications. And again this is exactly analogous to what

-

-34

-00:01:39,470 --> 00:01:41,830

-we saw when we were talking about the black box testing.

-

-35

-00:01:41,830 --> 00:01:43,960

-So let's see what this means by going back to our

-

-36

-00:01:43,960 --> 00:01:46,680

-example. A minute ago, we looked at the print sum code

-

-37

-00:01:46,680 --> 00:01:50,000

-and we identified two interesting cases for our code. And those

-

-38

-00:01:50,000 --> 00:01:53,430

-are exactly our test requirements. So we have a first test

-

-39

-00:01:53,430 --> 00:01:57,840

-requirement here, which is the execution of this particular statement and

-

-40

-00:01:57,840 --> 00:02:01,500

-a second requirement here and this one corresponds to the execution

-

-41

-00:02:01,500 --> 00:02:04,580

-of this other statement. So for this example there are two

-

-42

-00:02:04,580 --> 00:02:06,920

-things that we need to do in order to satisfy our

-

-43

-00:02:06,920 --> 00:02:10,100

-coverage requirements. Execute this statement and execute this statement.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/30 - Summary - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/30 - Summary - lang_en_vs4.srt
deleted file mode 100644
index 264491d..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/30 - Summary - lang_en_vs4.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,190 --> 00:00:02,800

-Now let me conclude the lesson by summarizing a few important

-

-2

-00:00:02,800 --> 00:00:06,840

-aspects of white-box testing. The first important aspect is that white-box

-

-3

-00:00:06,840 --> 00:00:09,770

-testing works on a formal model. The code itself are models

-

-4

-00:00:09,770 --> 00:00:12,430

-derived from the code. So when we do white-box testing, we

-

-5

-00:00:12,430 --> 00:00:15,160

-don't need to make subjective decision, for example, on the level

-

-6

-00:00:15,160 --> 00:00:18,890

-of obstruction of our models. Normally, we simply represent what's there.

-

-7

-00:00:18,890 --> 00:00:22,010

-And so what we will obtain are objective, results and objective

-

-8

-00:00:22,010 --> 00:00:25,400

-measures. As I also said at the beginning, coverage criteria allows

-

-9

-00:00:25,400 --> 00:00:28,790

-us to compare different test suites, different sets of tests,

-

-10

-00:00:28,790 --> 00:00:31,780

-because I can measure the coverage achieved by one test suite

-

-11

-00:00:31,780 --> 00:00:34,280

-and by the other, and then decide which one to use

-

-12

-00:00:34,280 --> 00:00:37,400

-based on this measure. And again, remember, these measures aren't perfect,

-

-13

-00:00:37,400 --> 00:00:40,700

-but they at least give you an objective number, an objective

-

-14

-00:00:40,700 --> 00:00:44,470

-measure of the likely effectiveness of your tests. So even though

-

-15

-00:00:44,470 --> 00:00:48,130

-achieving 100% coverage does not mean that you identify all the

-

-16

-00:00:48,130 --> 00:00:50,710

-problems in the code for sure. If your level of coverage

-

-17

-00:00:50,710 --> 00:00:53,700

-is 10%, for example, for stemen coverage. That means that

-

-18

-00:00:53,700 --> 00:00:57,360

-you haven't exercised 90% of your code, and therefore the trouble

-

-19

-00:00:57,360 --> 00:01:00,565

-is in a piece of software that is inadequately tested

-

-20

-00:01:00,565 --> 00:01:03,600

-and likely to be of inadequate quality. We also saw that

-

-21

-00:01:03,600 --> 00:01:07,370

-there are two broad classes of coverage criteria, practical criteria

-

-22

-00:01:07,370 --> 00:01:10,430

-that we can actually use, and theoretical criteria that are interesting

-

-23

-00:01:10,430 --> 00:01:13,410

-from a conceptual standpoint, but that they are totally impractical.

-

-24

-00:01:13,410 --> 00:01:16,170

-They are too expensive to be used on real world software.

-

-25

-00:01:16,170 --> 00:01:18,350

-And finally, as we also said at the beginning,

-

-26

-00:01:18,350 --> 00:01:20,820

-one of the great things about white box testing and

-

-27

-00:01:20,820 --> 00:01:23,910

-coverage criteria, is that they are fully automatable. There are

-

-28

-00:01:23,910 --> 00:01:27,380

-tools that can take your code, instrument it automatically. And

-

-29

-00:01:27,380 --> 00:01:29,050

-when you run your test cases, they will tell

-

-30

-00:01:29,050 --> 00:01:31,330

-you, what is the level of coverage that you achieve

-

-31

-00:01:31,330 --> 00:01:34,410

-with your test at no cost for you. So there's

-

-32

-00:01:34,410 --> 00:01:36,763

-really no reason not to measure coverage of your code.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/4 - Coverage Criteria Intro Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/4 - Coverage Criteria Intro Quiz - lang_en_vs4.srt
deleted file mode 100644
index 2adce93..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/4 - Coverage Criteria Intro Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,39 +0,0 @@
-1

-00:00:00,620 --> 00:00:03,310

-Now let's see if we are all on the same page

-

-2

-00:00:03,310 --> 00:00:07,180

-on the concept of testing specifications, and we're going to do that through

-

-3

-00:00:07,180 --> 00:00:09,280

-a quiz. What I would like for you to do is to

-

-4

-00:00:09,280 --> 00:00:12,830

-tell me, what are some possible test specifications that will satisfy the

-

-5

-00:00:12,830 --> 00:00:15,380

-requirements that we just saw? And I want you to express this

-

-6

-00:00:15,380 --> 00:00:17,270

-specification in terms of constraints on

-

-7

-00:00:17,270 --> 00:00:19,166

-the inputs. Which means, what constraints

-

-8

-00:00:19,166 --> 00:00:23,130

-should the input satisfy in order for this statement to be executed,

-

-9

-00:00:23,130 --> 00:00:26,210

-and this statement to be executed, and you can write your answer

-

-10

-00:00:26,210 --> 00:00:27,510

-here in these two slots.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/5 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/5 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 2a1ff16..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/5 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,560

-To satisfy our first requirements, we need to find an

-

-2

-00:00:02,560 --> 00:00:06,300

-input that causes the execution of this statement. Because this statement

-

-3

-00:00:06,300 --> 00:00:09,080

-is executed only when result is greater than zero, our

-

-4

-00:00:09,080 --> 00:00:12,815

-test requirement is that a plus b must be greater than

-

-5

-00:00:12,815 --> 00:00:16,219

-0. When this is satisfied, this statement is executed therefore

-

-6

-00:00:16,219 --> 00:00:19,960

-any test case that implements this specification will cause the execution

-

-7

-00:00:19,960 --> 00:00:22,770

-of this statement. Similarly if we want to cover this statement

-

-8

-00:00:22,770 --> 00:00:25,220

-which is our second requirement we need to have a result

-

-9

-00:00:25,220 --> 00:00:27,370

-that is less than 0. Again, the result is equal

-

-10

-00:00:27,370 --> 00:00:29,490

-to a plus b, so all we need to do

-

-11

-00:00:29,490 --> 00:00:32,450

-is find the test case such that a plus b

-

-12

-00:00:32,450 --> 00:00:34,700

-is less than 0. So this is pretty straight forward.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/6 - Coverage Criteria Intro Quiz - lang_en_vs3.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/6 - Coverage Criteria Intro Quiz - lang_en_vs3.srt
deleted file mode 100644
index 42b5720..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/6 - Coverage Criteria Intro Quiz - lang_en_vs3.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,220 --> 00:00:03,780

-So, now that we have our test specifications. Test specification number one that

-

-2

-00:00:03,780 --> 00:00:06,740

-says that a plus b must be greater than zero. And test specification

-

-3

-00:00:06,740 --> 00:00:09,990

-number two, for which a plus b must be less than zero. I'd

-

-4

-00:00:09,990 --> 00:00:12,580

-like to do another small quiz and ask you to write some test

-

-5

-00:00:12,580 --> 00:00:16,440

-cases that will implement these specifications. And I want you to write the

-

-6

-00:00:16,440 --> 00:00:19,780

-test cases in this format. I want you to specify for each one

-

-7

-00:00:19,780 --> 00:00:22,300

-of the test cases, what is the value of a that you need

-

-8

-00:00:22,300 --> 00:00:25,160

-to use. What is the value of b that you need to use.

-

-9

-00:00:25,160 --> 00:00:28,200

-And since a test case, I like to remind you, is

-

-10

-00:00:28,200 --> 00:00:30,960

-not just a set of inputs. But is the set of

-

-11

-00:00:30,960 --> 00:00:34,050

-inputs plus expected output? I also want you to specify, what

-

-12

-00:00:34,050 --> 00:00:37,040

-is the expected output for these test cases? And in particular,

-

-13

-00:00:37,040 --> 00:00:39,540

-since we have two characteristics of the output, one is the

-

-14

-00:00:39,540 --> 00:00:41,630

-color of the output and the other one is the actual

-

-15

-00:00:41,630 --> 00:00:44,040

-value. I want you to specify for each test case, what

-

-16

-00:00:44,040 --> 00:00:46,790

-is the expected output color and what is the expected value?

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/7 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/7 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 749a57e..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/7 - Coverage Criteria Intro Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,87 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,360

-In this case like in many other cases, there's not just a

-

-2

-00:00:02,360 --> 00:00:05,550

-single right answer because you can build many test cases that will

-

-3

-00:00:05,550 --> 00:00:09,730

-satisfy this test specification. So for example, we could pick value 3

-

-4

-00:00:09,730 --> 00:00:13,640

-for a and value 9 for b. Those satisfy the specification because a

-

-5

-00:00:13,640 --> 00:00:16,400

-plus b is equal to 12 and therefore is greater than 0,

-

-6

-00:00:16,400 --> 00:00:19,470

-and therefore this is a test case that implements this test specification.

-

-7

-00:00:19,470 --> 00:00:21,960

-And in terms of results, what we expect to see is in

-

-8

-00:00:21,960 --> 00:00:25,200

-the case of a result greater than 0, the caller should be red,

-

-9

-00:00:25,200 --> 00:00:28,109

-and the upper value should be 12. And obviously for this test

-

-10

-00:00:28,109 --> 00:00:30,971

-specification, we just need to pick two inputs such that the sum

-

-11

-00:00:30,971 --> 00:00:33,674

-of the two inputs is less than 0. So for example, we

-

-12

-00:00:33,674 --> 00:00:37,125

-could pick minus 5 and minus 8. The output color in this

-

-13

-00:00:37,125 --> 00:00:40,230

-case is going to be blue, and the output value is going to be

-

-14

-00:00:40,230 --> 00:00:43,780

-minus 13. So, what we just saw is basically how we can

-

-15

-00:00:43,780 --> 00:00:47,060

-go from a piece of code to a set of requirements, which

-

-16

-00:00:47,060 --> 00:00:50,260

-are the interesting aspects of the code that we want to exercise. How we

-

-17

-00:00:50,260 --> 00:00:52,800

-can satisfy the requirements by finding

-

-18

-00:00:52,800 --> 00:00:54,700

-the right test specifications, and then how

-

-19

-00:00:54,700 --> 00:00:58,450

-we can initiate the test specifications into actual test cases. And this is

-

-20

-00:00:58,450 --> 00:01:01,010

-what we will do in general when doing white books testing. And we'll

-

-21

-00:01:01,010 --> 00:01:02,520

-do things likely different way, depending on

-

-22

-00:01:02,520 --> 00:01:04,230

-the specific criteria that we are considering.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/8 - Statement Coverage - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/8 - Statement Coverage - lang_en_vs4.srt
deleted file mode 100644
index 23cfb0a..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/8 - Statement Coverage - lang_en_vs4.srt
+++ /dev/null
@@ -1,291 +0,0 @@
-1

-00:00:00,270 --> 00:00:03,080

-Now that we saw this overview of white-box testing, I'd like

-

-2

-00:00:03,080 --> 00:00:06,270

-to start talking about specific coverage criterion. And I'm going to start

-

-3

-00:00:06,270 --> 00:00:09,010

-with the first one, which is Statement Coverage. This criterion is

-

-4

-00:00:09,010 --> 00:00:12,355

-going to be characterized by two aspects, the first one is which

-

-5

-00:00:12,355 --> 00:00:15,580

-are the Test requirements for the criteria and the second one

-

-6

-00:00:15,580 --> 00:00:18,830

-is how we measure Coverage for that criteria. In the case

-

-7

-00:00:18,830 --> 00:00:22,200

-of statement coverage, these test requirements are all the statements in

-

-8

-00:00:22,200 --> 00:00:25,804

-the program. So this is the basic, the first the, the simplest

-

-9

-00:00:25,804 --> 00:00:29,860

-coverage criteria in the white-box arena. Let me remind you the assumption

-

-10

-00:00:29,860 --> 00:00:33,280

-that we made at the beginning. White-box testing is based on the assumption

-

-11

-00:00:33,280 --> 00:00:35,990

-that if there isn't a faulty element in the code, we need

-

-12

-00:00:35,990 --> 00:00:38,390

-to exercise it. We need to execute it, in order to find the

-

-13

-00:00:38,390 --> 00:00:41,260

-fault. And that's exactly what statement coverage does. If there is a

-

-14

-00:00:41,260 --> 00:00:44,450

-statement that is faulty in the code, we need to exercise it, in

-

-15

-00:00:44,450 --> 00:00:47,490

-order to find the fault. And therefore, a good measure of how well

-

-16

-00:00:47,490 --> 00:00:51,480

-we exercise the code, is the ratio of the number of executed statements.

-

-17

-00:00:51,480 --> 00:00:54,950

-So all the statements that my test cases executed, to the total

-

-18

-00:00:54,950 --> 00:00:58,570

-number of statements in the program. The higher this number, the better

-

-19

-00:00:58,570 --> 00:01:01,870

-I exercise my code. And we can also look at coverage criterion

-

-20

-00:01:01,870 --> 00:01:04,290

-in terms of questions. So what is the questions they were trying

-

-21

-00:01:04,290 --> 00:01:06,940

-to answer when we look at a specific set of test cases

-

-22

-00:01:06,940 --> 00:01:09,870

-and we assess the statement coverage that they achieved. And the question

-

-23

-00:01:09,870 --> 00:01:13,440

-is whether each statement in the program has been executed. So, statement

-

-24

-00:01:13,440 --> 00:01:16,920

-coverage is satisfied when all the statements in the program have been executed.

-

-25

-00:01:16,920 --> 00:01:19,640

-And we can satisfy to different degrees and the degrees to which it's

-

-26

-00:01:19,640 --> 00:01:23,320

-satisfied is measured by this value. So now let's go ahead and measure

-

-27

-00:01:23,320 --> 00:01:27,250

-statement coverage on our printSum example. What I'm going to show down here is

-

-28

-00:01:27,250 --> 00:01:30,500

-this progress bar in which we show the amount of coverage, the percentage of

-

-29

-00:01:30,500 --> 00:01:33,060

-coverage achieved. So what this means is that the, if I get to

-

-30

-00:01:33,060 --> 00:01:36,680

-this point I've covered 25% of the statements in the code. And my goal

-

-31

-00:01:36,680 --> 00:01:39,160

-is to get up here to cover all the statements in the code.

-

-32

-00:01:39,160 --> 00:01:42,000

-We have two test cases for this code. The first one that we just

-

-33

-00:01:42,000 --> 00:01:45,700

-saw, consists of the inputs a equal to 3 and b equal

-

-34

-00:01:45,700 --> 00:01:48,200

-to 9, and the second one has the inputs a is equal to

-

-35

-00:01:48,200 --> 00:01:50,840

-minus 5 and b is equal to minus 8. So now let's see

-

-36

-00:01:50,840 --> 00:01:53,450

-what happens when we run this test case. When we run this test

-

-37

-00:01:53,450 --> 00:01:56,920

-case, I'm going to show you by highlighting in the code the parts that

-

-38

-00:01:56,920 --> 00:02:00,430

-we cover when we start executing the code. We cover the first statement,

-

-39

-00:02:00,430 --> 00:02:01,910

-then we always execute the second

-

-40

-00:02:01,910 --> 00:02:04,180

-statement, which computes the result, we continue

-

-41

-00:02:04,180 --> 00:02:07,070

-the execution, we get to the if statement. If the result is greater

-

-42

-00:02:07,070 --> 00:02:10,038

-than zero, in this case our result is 12 because we

-

-43

-00:02:10,038 --> 00:02:12,360

-are working with the inputs 3 and 9, and therefore we

-

-44

-00:02:12,360 --> 00:02:15,710

-execute the true part of the if, we execute the statement.

-

-45

-00:02:15,710 --> 00:02:18,850

-And at this point, we just jump to the end. Because we

-

-46

-00:02:18,850 --> 00:02:21,530

-do not execute the else part of the statement, since we

-

-47

-00:02:21,530 --> 00:02:24,240

-have executed a true one, and therefore, we cover this final

-

-48

-00:02:24,240 --> 00:02:27,534

-statement. So at the end of the execution of this test

-

-49

-00:02:27,534 --> 00:02:32,313

-case, we cover one, two, three, four, five statement out of seven

-

-50

-00:02:32,313 --> 00:02:36,299

-which is roughly speaking 71%. So we can mark in here

-

-51

-00:02:36,299 --> 00:02:39,779

-that we more or less got to 71% of coverage for

-

-52

-00:02:39,779 --> 00:02:42,719

-this code. Now let's look at what happens when we execute

-

-53

-00:02:42,719 --> 00:02:45,700

-test case number two. In this case again, we execute the

-

-54

-00:02:45,700 --> 00:02:48,660

-first statement, the second statement, the third statement. In this case

-

-55

-00:02:48,660 --> 00:02:52,010

-though, the first statement, when it evaluates the value of result,

-

-56

-00:02:52,010 --> 00:02:54,250

-it sees that the result is not greater than zero because

-

-57

-00:02:54,250 --> 00:02:57,590

-our inputs are minus five and minus eight. Therefore, you will execute

-

-58

-00:02:57,590 --> 00:03:00,090

-line number five. And because the result is less than

-

-59

-00:03:00,090 --> 00:03:02,810

-zero, you will also execute line number six. So, at

-

-60

-00:03:02,810 --> 00:03:05,230

-this point, all of the statements in our code are

-

-61

-00:03:05,230 --> 00:03:09,360

-executed and therefore, we achieved a 100% statement coverage, which

-

-62

-00:03:09,360 --> 00:03:13,090

-was our goal. Before looking at other kinds of coverage,

-

-63

-00:03:13,090 --> 00:03:16,060

-let's see how our statement coverage is used in practice.

-

-64

-00:03:16,060 --> 00:03:19,170

-First of all, statement coverage is the most used kind

-

-65

-00:03:19,170 --> 00:03:22,830

-of coverage criterion in industry. Normally for company that uses

-

-66

-00:03:22,830 --> 00:03:27,200

-statement coverage, the typical coverage target is 80-90%, which

-

-67

-00:03:27,200 --> 00:03:29,690

-mean the outcome of the test should be such

-

-68

-00:03:29,690 --> 00:03:32,770

-that 80-90% of the statements are exercised at the

-

-69

-00:03:32,770 --> 00:03:34,880

-end of testing. So at this point, you might

-

-70

-00:03:34,880 --> 00:03:36,850

-be wondering, why don't we just shoot for 100%?

-

-71

-00:03:36,850 --> 00:03:38,580

-Why don't we try to cover all of the

-

-72

-00:03:38,580 --> 00:03:40,050

-code? We just saw that we could do it.

-

-73

-00:03:40,050 --> 00:03:41,730

-And so I'm going to ask you the same question.

diff --git a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/9 - Statement Coverage Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L3 White-Box Testing Subtitles/9 - Statement Coverage Quiz - lang_en_vs4.srt
deleted file mode 100644
index 893fe06..0000000
--- a/usth/ICT2.7/P4L3 White-Box Testing Subtitles/9 - Statement Coverage Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,15 +0,0 @@
-1

-00:00:00,100 --> 00:00:01,540

-so, I would like to hear from you. Why

-

-2

-00:00:01,540 --> 00:00:03,850

-do you think that we don't aim normally at

-

-3

-00:00:03,850 --> 00:00:05,939

-100 % college but, slightly less than that and

-

-4

-00:00:05,939 --> 00:00:07,560

-I want you to put your answer right here.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index 2e839f9..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,75 +0,0 @@
-1

-00:00:00,270 --> 00:00:02,880

-In previous lessons, we covered testing principles and

-

-2

-00:00:02,880 --> 00:00:06,610

-techniques. In this lesson, we will discuss a

-

-3

-00:00:06,610 --> 00:00:09,550

-type of software process that is heavily based

-

-4

-00:00:09,550 --> 00:00:12,812

-on the use of testing. The agile development

-

-5

-00:00:12,812 --> 00:00:17,310

-process. Also called test-driven development. To do that,

-

-6

-00:00:17,310 --> 00:00:19,290

-we will revisit some of the assumptions that

-

-7

-00:00:19,290 --> 00:00:21,490

-led to the definition of the more traditional

-

-8

-00:00:21,490 --> 00:00:24,030

-software processes. The ones that we discussed so far.

-

-9

-00:00:25,440 --> 00:00:27,690

-We will see how, when some of these assumptions are

-

-10

-00:00:27,690 --> 00:00:30,210

-no longer valid, we can change the way in which we

-

-11

-00:00:30,210 --> 00:00:32,560

-look at software processes. And we can change the way

-

-12

-00:00:32,560 --> 00:00:36,120

-in which we look at software development in general. We will

-

-13

-00:00:36,120 --> 00:00:40,250

-discuss how this changing perspective, lets us rethink software processes

-

-14

-00:00:40,250 --> 00:00:43,520

-and make them more agile and better suited for context in

-

-15

-00:00:43,520 --> 00:00:46,120

-which changes are the norm and we need to adapt

-

-16

-00:00:46,120 --> 00:00:50,535

-fast. In particular, we will discuss two processes that apply the

-

-17

-00:00:50,535 --> 00:00:53,570

-principles of agile software development and that are commonly

-

-18

-00:00:53,570 --> 00:00:59,170

-used in industry. Extreme programming, also called XP, and Scrum.

-

-19

-00:00:59,170 --> 00:01:01,560

-[BLANK_AUDIO]

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/10 - Refactoring - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/10 - Refactoring - lang_en_vs4.srt
deleted file mode 100644
index 800ffb5..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/10 - Refactoring - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,469

-A couple of minutes ago we talked about the fact that well, we

-

-2

-00:00:02,469 --> 00:00:05,260

-might need to change our design a lot, so how we going to do

-

-3

-00:00:05,260 --> 00:00:08,540

-that, that's going to be expensive. Well it's not very expensive, if we can

-

-4

-00:00:08,540 --> 00:00:10,876

-do efficient refactoring. Which is another

-

-5

-00:00:10,876 --> 00:00:13,120

-one of the important xp practices. And

-

-6

-00:00:13,120 --> 00:00:15,280

-what does it mean to refactor? It means to take a piece of

-

-7

-00:00:15,280 --> 00:00:19,530

-code who's design might be suboptimal, because for example, we evolved it, we

-

-8

-00:00:19,530 --> 00:00:22,600

-didn't take into account that from the beginning some of the features that

-

-9

-00:00:22,600 --> 00:00:25,110

-had to be added later, probably because we didn't even know about this

-

-10

-00:00:25,110 --> 00:00:28,200

-feature, because the requirements evolved. So we're going to take this piece

-

-11

-00:00:28,200 --> 00:00:31,870

-of code and we're going to restructure it, so that it becomes simple

-

-12

-00:00:31,870 --> 00:00:34,070

-and maintainable. Developers are expected to

-

-13

-00:00:34,070 --> 00:00:35,590

-refactor as soon as opportunities for

-

-14

-00:00:35,590 --> 00:00:39,530

-improvement, are found. And that happens for example, before adding some code.

-

-15

-00:00:39,530 --> 00:00:41,730

-You might look at the code that you're about to modify, or

-

-16

-00:00:41,730 --> 00:00:43,850

-to which you are about to add parts, and say can we

-

-17

-00:00:43,850 --> 00:00:47,060

-change the program to make the addition simple, that has maintainability or

-

-18

-00:00:47,060 --> 00:00:50,220

-we can do it after adding some code to our code base.

-

-19

-00:00:50,220 --> 00:00:52,730

-We might look at the code, the resulting code, and say well

-

-20

-00:00:52,730 --> 00:00:55,770

-can we make the program simpler? Was the running all the tests

-

-21

-00:00:55,770 --> 00:00:57,920

-and the key point here is that we don't want to refactor on

-

-22

-00:00:57,920 --> 00:01:01,580

-speculation, but we want to refactor on demand, on the system, and the

-

-23

-00:01:01,580 --> 00:01:04,840

-process needed. Again the goal is just to keep the code simple

-

-24

-00:01:04,840 --> 00:01:07,680

-and maintainable, not to over do it. And as I mentioned before

-

-25

-00:01:07,680 --> 00:01:10,810

-we're going to have a whole lesson, the next lesson on refactoring. So

-

-26

-00:01:10,810 --> 00:01:13,470

-we're going to go in more depth in the discussion of this topic.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/11 - Pair Programming - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/11 - Pair Programming - lang_en_vs4.srt
deleted file mode 100644
index ad48828..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/11 - Pair Programming - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,530

-The next practice I want to discuss is a very important one

-

-2

-00:00:02,530 --> 00:00:05,750

-in XP, and also one of the scandal, controversial, and it's

-

-3

-00:00:05,750 --> 00:00:08,390

-the practice of pair programming. What does it mean? It means

-

-4

-00:00:08,390 --> 00:00:11,790

-that all production code is written with two people looking at one

-

-5

-00:00:11,790 --> 00:00:15,170

-machine. And not that they're, they're working with one keyboard and

-

-6

-00:00:15,170 --> 00:00:18,450

-one mouse or they're not just interfering and writing on each other's

-

-7

-00:00:18,450 --> 00:00:20,920

-code. And the way in which that happens is by playing

-

-8

-00:00:20,920 --> 00:00:25,180

-different roles at different times. So the two developers alternate between the

-

-9

-00:00:25,180 --> 00:00:29,080

-role of programming and strategizing, where strategizing means, for example,

-

-10

-00:00:29,080 --> 00:00:31,660

-looking at the code that has been written and thinking whether

-

-11

-00:00:31,660 --> 00:00:34,420

-that would work. Or what other tests that are not there

-

-12

-00:00:34,420 --> 00:00:37,050

-might not work, given the way the code is being written.

-

-13

-00:00:37,050 --> 00:00:39,300

-Or maybe looking at the code from a, you know, slightly

-

-14

-00:00:39,300 --> 00:00:42,380

-detached perspective and trying to figure out whether the code can

-

-15

-00:00:42,380 --> 00:00:46,900

-be made simpler, more maintainable, more efficient. And interestingly, there are

-

-16

-00:00:46,900 --> 00:00:48,440

-measurements, there are studies that

-

-17

-00:00:48,440 --> 00:00:50,340

-suggest that development productivity with pair

-

-18

-00:00:50,340 --> 00:00:52,550

-programming is similar to that of two people

-

-19

-00:00:52,550 --> 00:00:55,080

-working independently. And that answers one of the

-

-20

-00:00:55,080 --> 00:00:57,740

-main objections against pair programming, which is why

-

-21

-00:00:57,740 --> 00:00:59,840

-should I put two developers together, which is

-

-22

-00:00:59,840 --> 00:01:01,860

-going to cut their productivity in half. It is

-

-23

-00:01:01,860 --> 00:01:04,390

-not. Studies shows that that does not happen.

-

-24

-00:01:04,390 --> 00:01:06,380

-And that the resulting code can actually benefit

-

-25

-00:01:06,380 --> 00:01:08,350

-from the fact that two developers are working together.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/12 - Continuous Integration - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/12 - Continuous Integration - lang_en_vs4.srt
deleted file mode 100644
index d40bda6..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/12 - Continuous Integration - lang_en_vs4.srt
+++ /dev/null
@@ -1,111 +0,0 @@
-1

-00:00:00,280 --> 00:00:02,980

-An important practice to get all of this to work is

-

-2

-00:00:02,980 --> 00:00:05,230

-continuous integration, which means integrating and

-

-3

-00:00:05,230 --> 00:00:06,770

-testing every few hours, or a

-

-4

-00:00:06,770 --> 00:00:10,390

-day at most, because we don't want problems to pile up and

-

-5

-00:00:10,390 --> 00:00:13,060

-to be discovered too late when there are too many of them

-

-6

-00:00:13,060 --> 00:00:16,020

-to fix. So what goes on here is a cycle. And the

-

-7

-00:00:16,020 --> 00:00:19,380

-cycle starts with the developer's programming, as soon as the developers are

-

-8

-00:00:19,380 --> 00:00:22,050

-done modifying the code and they have a stable version they will

-

-9

-00:00:22,050 --> 00:00:25,380

-run the local tests. If the local tests fail, the developers will

-

-10

-00:00:25,380 --> 00:00:28,350

-go back to programming to fix their code and possibly add

-

-11

-00:00:28,350 --> 00:00:31,990

-new code as needed, and this cycle, mini cycle will continue

-

-12

-00:00:31,990 --> 00:00:35,000

-until all the local tests pass. At that point the developers

-

-13

-00:00:35,000 --> 00:00:37,960

-can integrate their code with the code of other developers. And they

-

-14

-00:00:37,960 --> 00:00:41,220

-can run test for the integrated system, and when they run

-

-15

-00:00:41,220 --> 00:00:44,830

-this test again there are two possibilities. The test might fail, and

-

-16

-00:00:44,830 --> 00:00:47,160

-if the test fails you broke it, and therefore you'll have

-

-17

-00:00:47,160 --> 00:00:50,710

-to fix it. So developers will have to go back and modify

-

-18

-00:00:50,710 --> 00:00:54,010

-the system and again going through the cycle of running the local

-

-19

-00:00:54,010 --> 00:00:55,900

-tests, integrating, and running the systems

-

-20

-00:00:55,900 --> 00:00:57,890

-tests. Conversely, if all the systems

-

-21

-00:00:57,890 --> 00:01:00,150

-tests pass, then at that point the code is good to go

-

-22

-00:01:00,150 --> 00:01:02,500

-and it is integrated into the system. And it will be the problem

-

-23

-00:01:02,500 --> 00:01:05,370

-of some other developers if something breaks because at the time you

-

-24

-00:01:05,370 --> 00:01:09,530

-integrated your code, the code was compiling, running and passing the tests

-

-25

-00:01:09,530 --> 00:01:12,495

-successfully. So again, if we do this every few hours or every

-

-26

-00:01:12,495 --> 00:01:15,740

-day, we can find problems very early, and we can avoid the situations

-

-27

-00:01:15,740 --> 00:01:18,105

-in which we have many different changes coming from

-

-28

-00:01:18,105 --> 00:01:21,290

-many different developers in a integration nightmare as a result.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/13 - On Site Customer - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/13 - On Site Customer - lang_en_vs4.srt
deleted file mode 100644
index a95cc07..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/13 - On Site Customer - lang_en_vs4.srt
+++ /dev/null
@@ -1,55 +0,0 @@
-1

-00:00:00,060 --> 00:00:03,500

-The last practice I want to mention is on-site customer, and what

-

-2

-00:00:03,500 --> 00:00:07,590

-that means is that literally the customer is an actual member of

-

-3

-00:00:07,590 --> 00:00:10,310

-the team. So the customer will sit with the team and will

-

-4

-00:00:10,310 --> 00:00:13,546

-bring requirements to the team and discuss the requirements with them. So

-

-5

-00:00:13,546 --> 00:00:16,461

-the typical objection to this practice is the fact that it's just

-

-6

-00:00:16,461 --> 00:00:19,640

-impossible in the real world. There is no way that the customer

-

-7

-00:00:19,640 --> 00:00:22,550

-can have one person staying with the team all the time, and

-

-8

-00:00:22,550 --> 00:00:25,130

-the answer to that objection is that if the system is not

-

-9

-00:00:25,130 --> 00:00:28,700

-worth the time of one customer then maybe the system is not worth building. In

-

-10

-00:00:28,700 --> 00:00:30,530

-other words, if you're investing tons of

-

-11

-00:00:30,530 --> 00:00:33,440

-dollars, tons of money in building a system,

-

-12

-00:00:33,440 --> 00:00:36,870

-you might just as well invest a little more and have one of the people

-

-13

-00:00:36,870 --> 00:00:39,080

-in the customer's organization stay with the

-

-14

-00:00:39,080 --> 00:00:41,450

-team and be involved in the whole process.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/14 - Requirements Engineering - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/14 - Requirements Engineering - lang_en_vs4.srt
deleted file mode 100644
index 7a00887..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/14 - Requirements Engineering - lang_en_vs4.srt
+++ /dev/null
@@ -1,139 +0,0 @@
-1

-00:00:00,210 --> 00:00:02,680

-Now that we saw what the main values and practices

-

-2

-00:00:02,680 --> 00:00:05,200

-of XP are, I want to go back for a minute

-

-3

-00:00:05,200 --> 00:00:08,800

-to discussion of requirements engineering in XP. In XP, user

-

-4

-00:00:08,800 --> 00:00:12,180

-requirements are expressed as scenarios or user stories, as we already

-

-5

-00:00:12,180 --> 00:00:15,500

-discussed. These are written by customers on cards, and what

-

-6

-00:00:15,500 --> 00:00:18,550

-the development team does is to take these cards, take these

-

-7

-00:00:18,550 --> 00:00:22,240

-users stories and break them down into implementation tasks. And

-

-8

-00:00:22,240 --> 00:00:25,310

-those implementation tasks are then used as a basis for scheduling

-

-9

-00:00:25,310 --> 00:00:29,210

-cost estimates. So given these estimates, and based on their priorities,

-

-10

-00:00:29,210 --> 00:00:31,770

-the customer will choose the stories that will be included in

-

-11

-00:00:31,770 --> 00:00:34,980

-the next release, in the next iteration. And at this point,

-

-12

-00:00:34,980 --> 00:00:39,220

-the corresponding cards will be taken by the developers and the,

-

-13

-00:00:39,220 --> 00:00:42,380

-the task will be performed, and the relative, and the corresponding

-

-14

-00:00:42,380 --> 00:00:44,350

-card will be developed. And just to give an idea of

-

-15

-00:00:44,350 --> 00:00:47,330

-the order of magnitude, if you consider a few months project,

-

-16

-00:00:47,330 --> 00:00:50,390

-there might be 50 to 100 user stories for a project of

-

-17

-00:00:50,390 --> 00:00:52,820

-that duration. So, now let me give you an example of what

-

-18

-00:00:52,820 --> 00:00:55,630

-the story card might look like, and I'm going to do it using

-

-19

-00:00:55,630 --> 00:00:58,930

-a story card for document downloading and you can really do all of

-

-20

-00:00:58,930 --> 00:01:00,780

-this, basically as seeing what the

-

-21

-00:01:00,780 --> 00:01:03,440

-scenario is, downloading and printing an article.

-

-22

-00:01:03,440 --> 00:01:06,590

-And it describes basically what happens when you do that, what is

-

-23

-00:01:06,590 --> 00:01:09,530

-the scenario. First, you select the article that you want from a displayed

-

-24

-00:01:09,530 --> 00:01:12,760

-list. You then have to tell the system how you will pay for

-

-25

-00:01:12,760 --> 00:01:15,680

-it. This can either be through a subscription, through a company account or

-

-26

-00:01:15,680 --> 00:01:18,670

-by credit card, and so on. So what developers do, they take

-

-27

-00:01:18,670 --> 00:01:22,020

-this story card, and they break it down in to development tasks.

-

-28

-00:01:22,020 --> 00:01:25,100

-So, here I'm showing you some examples of task cards for the

-

-29

-00:01:25,100 --> 00:01:28,360

-user story that we just saw. In particular I'm showing three task cards

-

-30

-00:01:28,360 --> 00:01:30,740

-and if we look at the third one, there is a name

-

-31

-00:01:30,740 --> 00:01:34,260

-for the task, which is implement payment collection. So this is the development

-

-32

-00:01:34,260 --> 00:01:37,600

-task that we have the perform and here, there's a description of

-

-33

-00:01:37,600 --> 00:01:41,240

-what that developed code should do. And notice that, you know, the task

-

-34

-00:01:41,240 --> 00:01:44,400

-card can even be more. explicit than this, more

-

-35

-00:01:44,400 --> 00:01:47,450

-specific than this, and talk about actual development tasks.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/15 - Testing Strategy - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/15 - Testing Strategy - lang_en_vs4.srt
deleted file mode 100644
index af5ee6c..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/15 - Testing Strategy - lang_en_vs4.srt
+++ /dev/null
@@ -1,147 +0,0 @@
-1

-00:00:00,360 --> 00:00:03,320

-As you probably realized by now, at job development, it's a

-

-2

-00:00:03,320 --> 00:00:06,280

-lot about testing. So there is a lot of emphasis on

-

-3

-00:00:06,280 --> 00:00:09,420

-testing. Testing first, te, testing early. So that's the reason why

-

-4

-00:00:09,420 --> 00:00:12,710

-I also want to discuss what is the testing strategy in XP.

-

-5

-00:00:12,710 --> 00:00:14,820

-So first of all what is the basic principle? The basic

-

-6

-00:00:14,820 --> 00:00:18,770

-principle is that testing is Coded confidence. You write your test

-

-7

-00:00:18,770 --> 00:00:22,150

-cases and then you can run them anytime you want. And

-

-8

-00:00:22,150 --> 00:00:25,540

-if they pass, they'll give you confidence that your code is behaving

-

-9

-00:00:25,540 --> 00:00:27,920

-the way it's expected. If they don't pass on the other

-

-10

-00:00:27,920 --> 00:00:30,870

-hand, you'll know that there's something to fix. Another important concept is

-

-11

-00:00:30,870 --> 00:00:34,600

-that test might be isolated and automated. So both the running and

-

-12

-00:00:34,600 --> 00:00:37,400

-the checking of the tests has to be automated for all of

-

-13

-00:00:37,400 --> 00:00:39,830

-this to work. And there are two types of tests. The first

-

-14

-00:00:39,830 --> 00:00:43,170

-type of test is unit tests, that are created by the programmers,

-

-15

-00:00:43,170 --> 00:00:45,830

-and they're created by looking at the task cards. The task cards

-

-16

-00:00:45,830 --> 00:00:48,410

-describe what they implemented, functionality should

-

-17

-00:00:48,410 --> 00:00:50,740

-do, and therefore allows the developers.

-

-18

-00:00:50,740 --> 00:00:53,970

-The right test that can test this functionality. That can

-

-19

-00:00:53,970 --> 00:00:57,000

-check that the code's correctly implemented functionality. And as we

-

-20

-00:00:57,000 --> 00:01:00,670

-said, you should really test every meaninful feature. So, for

-

-21

-00:01:00,670 --> 00:01:04,250

-example, you should test every meaningful method in your classes.

-

-22

-00:01:04,250 --> 00:01:08,490

-You should put specific attention to possibly complex implementations, special

-

-23

-00:01:08,490 --> 00:01:11,100

-cases or specific problems that you might think of. while

-

-24

-00:01:11,100 --> 00:01:13,110

-reading the task cards. In some cases, when you do

-

-25

-00:01:13,110 --> 00:01:15,800

-refactoring, you might also want to write test cases specific

-

-26

-00:01:15,800 --> 00:01:18,300

-to that refactoring. But we'll say more about that. So this

-

-27

-00:01:18,300 --> 00:01:20,610

-was for the first kind of tests that are involved in

-

-28

-00:01:20,610 --> 00:01:23,650

-the, in the XP process. The second kind of tests are

-

-29

-00:01:23,650 --> 00:01:27,710

-the system tests, also called acceptance tests. And those tests involve

-

-30

-00:01:27,710 --> 00:01:30,920

-the customer. So basically what happens is that the customer provides

-

-31

-00:01:30,920 --> 00:01:33,760

-the test cases for their stores and then the development team

-

-32

-00:01:33,760 --> 00:01:37,630

-transforms those into actual automated tests. So these are tests created

-

-33

-00:01:37,630 --> 00:01:40,700

-by the developers. They run very quickly and they run very frequently.

-

-34

-00:01:40,700 --> 00:01:43,120

-These are tests developed with the help, with the

-

-35

-00:01:43,120 --> 00:01:46,170

-involvement of the customer they run longer. And run less

-

-36

-00:01:46,170 --> 00:01:48,710

-frequently, they run every time the system is integrated.

-

-37

-00:01:48,710 --> 00:01:50,890

-According to the cycle we saw a few minutes ago.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/16 - Testing Strategy Quiz - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/16 - Testing Strategy Quiz - lang_en_vs4.srt
deleted file mode 100644
index c26e977..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/16 - Testing Strategy Quiz - lang_en_vs4.srt
+++ /dev/null
@@ -1,47 +0,0 @@
-1

-00:00:00,130 --> 00:00:02,776

-Now that we are done discussing XP Extreme Programming, I

-

-2

-00:00:02,776 --> 00:00:04,612

-would like to have a quiz, in which I make

-

-3

-00:00:04,612 --> 00:00:06,772

-sure that some of the concepts behind XP are well

-

-4

-00:00:06,772 --> 00:00:10,040

-understood. So, I'm going to ask you which of the following statements

-

-5

-00:00:10,040 --> 00:00:13,390

-about Extreme Programming are true, and here are the statements.

-

-6

-00:00:13,390 --> 00:00:17,700

-Because of pair programming, XP requires twice the number of developers.

-

-7

-00:00:17,700 --> 00:00:21,260

-In XP, code is rarely changed after being written. XP

-

-8

-00:00:21,260 --> 00:00:25,200

-follows the test driven development, or TDD, paradigm. The customer does

-

-9

-00:00:25,200 --> 00:00:27,560

-not need to provide any requirements in XP.

-

-10

-00:00:27,560 --> 00:00:31,120

-XP is an iterative software development process. So I

-

-11

-00:00:31,120 --> 00:00:32,700

-would like for you to mark all of

-

-12

-00:00:32,700 --> 00:00:35,020

-the statements that you think are true about XP.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/17 - Testing Strategy Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/17 - Testing Strategy Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index b60861f..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/17 - Testing Strategy Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,120 --> 00:00:02,600

-The first statement is false. It is not true

-

-2

-00:00:02,600 --> 00:00:04,840

-that because of pair programming, we need twice as many

-

-3

-00:00:04,840 --> 00:00:08,039

-developers. In fact that there is some evidence that even

-

-4

-00:00:08,039 --> 00:00:11,700

-though in pair programming we have two developers working together,

-

-5

-00:00:11,700 --> 00:00:15,175

-that the overall efficiency of the programmers is not really

-

-6

-00:00:15,175 --> 00:00:19,080

-affected by use of this practice. In XP, code is

-

-7

-00:00:19,080 --> 00:00:23,280

-rarely changed after being written. This is also definitely false.

-

-8

-00:00:23,280 --> 00:00:25,233

-In fact in XP there is a lot of emphasis

-

-9

-00:00:25,233 --> 00:00:27,879

-on change on the fact that the code can be changed,

-

-10

-00:00:27,879 --> 00:00:30,462

-it can be resigned, because of the fact when we do

-

-11

-00:00:30,462 --> 00:00:32,793

-that, we have a set of these cases that we can

-

-12

-00:00:32,793 --> 00:00:35,439

-use to check right away that the code still works as

-

-13

-00:00:35,439 --> 00:00:39,850

-expected. So again in XP, it's all about steering rather than

-

-14

-00:00:39,850 --> 00:00:43,430

-just driving down one fixed direction. And therefore, the code can

-

-15

-00:00:43,430 --> 00:00:46,580

-be changed. So this statement is false. It is definitely true

-

-16

-00:00:46,580 --> 00:00:50,950

-that XP follows the test driven development paradigm. In XP we first

-

-17

-00:00:50,950 --> 00:00:53,320

-write tests, and then we write the code, which is

-

-18

-00:00:53,320 --> 00:00:55,980

-exactly what TDD is about. It is not true that

-

-19

-00:00:55,980 --> 00:00:58,740

-the customer does not need to provide requirements in XP.

-

-20

-00:00:58,740 --> 00:01:02,020

-The customer does provide requirements in the form of user

-

-21

-00:01:02,020 --> 00:01:04,879

-stories, and the user stories are the starting point of

-

-22

-00:01:04,879 --> 00:01:09,370

-the development process. Finally, XP is definitely an iterative software

-

-23

-00:01:09,370 --> 00:01:12,500

-development process. In fact, we saw that XP is based

-

-24

-00:01:12,500 --> 00:01:16,100

-on subsequent iterations of the same cycle, in which we

-

-25

-00:01:16,100 --> 00:01:18,110

-select from a set of story cards, or user

-

-26

-00:01:18,110 --> 00:01:21,270

-stories, the stories that we want to implement in the

-

-27

-00:01:21,270 --> 00:01:24,250

-next iteration. Based on that we develop task cards,

-

-28

-00:01:24,250 --> 00:01:26,060

-and then we use the task cards to write this

-

-29

-00:01:26,060 --> 00:01:28,400

-case and then to write code. And we continue

-

-30

-00:01:28,400 --> 00:01:31,140

-this cycle in an iterative way until we are done

-

-31

-00:01:31,140 --> 00:01:33,030

-with all the story cards, and all the user

-

-32

-00:01:33,030 --> 00:01:36,612

-stories, so definitely XP is an iterative software development process.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/18 - Scrum Intro - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/18 - Scrum Intro - lang_en_vs4.srt
deleted file mode 100644
index 4d8eab6..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/18 - Scrum Intro - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,220 --> 00:00:02,830

-Before concluding this class on java development, I want to

-

-2

-00:00:02,830 --> 00:00:06,330

-talk about another process that is very popular these days, and

-

-3

-00:00:06,330 --> 00:00:09,990

-it's used in many companies, which is called Scrum. Which similar

-

-4

-00:00:09,990 --> 00:00:13,370

-to XP is another agile development process, and I'm going to

-

-5

-00:00:13,370 --> 00:00:16,400

-start by discussing what the Scrum actors are. There's three

-

-6

-00:00:16,400 --> 00:00:19,490

-main kinds of actors. The first one is the product owner,

-

-7

-00:00:19,490 --> 00:00:22,590

-which means the customer. The product owner is mainly responsible for

-

-8

-00:00:22,590 --> 00:00:25,460

-the product back log, where the product back log is basically

-

-9

-00:00:25,460 --> 00:00:27,660

-the list of things that have to be done, the

-

-10

-00:00:27,660 --> 00:00:30,670

-back log in fact for the project. And that is

-

-11

-00:00:30,670 --> 00:00:33,640

-analogous to the user stories to be realized in XP,

-

-12

-00:00:33,640 --> 00:00:36,190

-that we just saw. So what the product owner does is

-

-13

-00:00:36,190 --> 00:00:39,310

-to clearly express these back log items, and to also

-

-14

-00:00:39,310 --> 00:00:42,680

-order them by value, so they can be prioritized. The second

-

-15

-00:00:42,680 --> 00:00:45,680

-actor is the team. The team is responsible for delivering

-

-16

-00:00:45,680 --> 00:00:48,012

-shippable increments to estimate the

-

-17

-00:00:48,012 --> 00:00:50,600

-back log items. It's normally self-organized,

-

-18

-00:00:50,600 --> 00:00:53,055

-consists of four to nine people, and it's what you

-

-19

-00:00:53,055 --> 00:00:56,180

-would consider normally as the main development team in a

-

-20

-00:00:56,180 --> 00:00:59,080

-project. And finally we have the Scrum master. The Scrum

-

-21

-00:00:59,080 --> 00:01:02,860

-master is the person who's responsible for the overall Scrum process,

-

-22

-00:01:02,860 --> 00:01:05,980

-so he or she has to remove obstacles, facilitate events,

-

-23

-00:01:05,980 --> 00:01:08,668

-helps communications, and so on. So you you can see

-

-24

-00:01:08,668 --> 00:01:11,013

-the Scrum master as sort of a manager or the

-

-25

-00:01:11,013 --> 00:01:15,059

-person who's got oversight, or the supervisor of the Scrum process.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/19 - High Level Scrum Process - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/19 - High Level Scrum Process - lang_en_vs4.srt
deleted file mode 100644
index d646b4e..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/19 - High Level Scrum Process - lang_en_vs4.srt
+++ /dev/null
@@ -1,215 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,200

-So I want to conclude this lesson by providing a high

-

-2

-00:00:02,200 --> 00:00:05,790

-level view of this scrum process. The process is represented here,

-

-3

-00:00:05,790 --> 00:00:07,939

-and as you can see it has several components. We're going to

-

-4

-00:00:07,939 --> 00:00:09,860

-go through all of them one at a time. We're going to

-

-5

-00:00:09,860 --> 00:00:13,110

-start with a product backlog. Product backlog is the single source

-

-6

-00:00:13,110 --> 00:00:17,420

-of requirements, for the process. They're order by value raised priority

-

-7

-00:00:17,420 --> 00:00:21,110

-necessity, so that all of this characteristics can be taken into

-

-8

-00:00:21,110 --> 00:00:25,920

-account when selecting which backlog items to consider for the next iteration.

-

-9

-00:00:25,920 --> 00:00:28,710

-It's a living list in the sense that backlog items

-

-10

-00:00:28,710 --> 00:00:31,020

-can be added or removed. And it's not really defined

-

-11

-00:00:31,020 --> 00:00:33,200

-as we just said, by the product owner. In the

-

-12

-00:00:33,200 --> 00:00:36,260

-sprint planning, what happens is that the next increment or

-

-13

-00:00:36,260 --> 00:00:40,180

-the next sprint is defined. So basically, the backlog items

-

-14

-00:00:40,180 --> 00:00:43,348

-of interest are selected based on the characteristics we just

-

-15

-00:00:43,348 --> 00:00:46,890

-mentioned: value, [UNKNOWN], priority, and necessity. And the items are

-

-16

-00:00:46,890 --> 00:00:50,950

-converted into tasks and estimated. So the result is this sprint

-

-17

-00:00:50,950 --> 00:00:54,240

-backlog, which is the set of backlog items that will

-

-18

-00:00:54,240 --> 00:00:57,650

-be completed during the next sprint. The sprint is an actual

-

-19

-00:00:57,650 --> 00:01:01,040

-iteration of this scrum process. It's got a main part

-

-20

-00:01:01,040 --> 00:01:04,730

-that lasts two to four weeks, and within this main part,

-

-21

-00:01:04,730 --> 00:01:08,150

-there are many daily scrums that last 24 hours. So

-

-22

-00:01:08,150 --> 00:01:11,260

-let's see how this work. A daily scrum is typically characterized

-

-23

-00:01:11,260 --> 00:01:13,960

-by a 50-minute meeting at the beginning of the day

-

-24

-00:01:13,960 --> 00:01:16,220

-for the team to sync, and what happens during the meeting

-

-25

-00:01:16,220 --> 00:01:19,010

-is that there is a discussion of the accomplishments since

-

-26

-00:01:19,010 --> 00:01:21,210

-the last meeting. A to do list for the next

-

-27

-00:01:21,210 --> 00:01:24,210

-meeting is produced, and there is also an obstacle analysis.

-

-28

-00:01:24,210 --> 00:01:27,690

-So if some problem appear, they're discussing the daily scrum, and

-

-29

-00:01:27,690 --> 00:01:30,905

-possible solutions are proposed. At the end of the two

-

-30

-00:01:30,905 --> 00:01:34,840

-four-week cycle, there is a sprint review and retrospective. The sprint

-

-31

-00:01:34,840 --> 00:01:37,440

-review normally consists of a four hour meeting. In the

-

-32

-00:01:37,440 --> 00:01:41,270

-meeting, the product owner assesses the accomplishment for the specific sprint,

-

-33

-00:01:41,270 --> 00:01:44,020

-and the team discusses issues that were encountered and solved.

-

-34

-00:01:44,020 --> 00:01:46,530

-There is typically a demo of the deliverable for that

-

-35

-00:01:46,530 --> 00:01:48,810

-sprint. And at that point, the product owner will also

-

-36

-00:01:48,810 --> 00:01:52,610

-discuss the backlogs. And together with the team they will decide

-

-37

-00:01:52,610 --> 00:01:56,230

-what to do next. In the retrospective conversely what happens

-

-38

-00:01:56,230 --> 00:01:59,140

-is there is more focus on the process. So the

-

-39

-00:01:59,140 --> 00:02:02,010

-goal of that part of the meeting is discussing possible

-

-40

-00:02:02,010 --> 00:02:04,850

-process improvements. To identify them

-

-41

-00:02:04,850 --> 00:02:07,140

-and if promising improvements are identified

-

-42

-00:02:07,140 --> 00:02:10,810

-try to plan how to implement those improvements and use them

-

-43

-00:02:10,810 --> 00:02:13,790

-in the next iterations. And something else that might happen at

-

-44

-00:02:13,790 --> 00:02:16,720

-the end of a sprint is that if the product increment

-

-45

-00:02:16,720 --> 00:02:19,210

-is good enough as it reach the state in which it

-

-46

-00:02:19,210 --> 00:02:22,660

-can be actually shipped that will result in a release that

-

-47

-00:02:22,660 --> 00:02:25,730

-is not just internal. To show the product owner the progress

-

-48

-00:02:25,730 --> 00:02:28,510

-that can also be deployed and actually used in production. So

-

-49

-00:02:28,510 --> 00:02:32,650

-one final consideration is that as you can see, XP and scrum

-

-50

-00:02:32,650 --> 00:02:35,340

-are fairly similar, and that's because they're both agile development

-

-51

-00:02:35,340 --> 00:02:37,930

-processes. So the main thing to keep in mind is that

-

-52

-00:02:37,930 --> 00:02:40,620

-they both implement and enforce

-

-53

-00:02:40,620 --> 00:02:44,380

-those ideas, values, practices, and characteristics

-

-54

-00:02:44,380 --> 00:02:47,600

-that we saw when we discussed agile development process in general.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/2 - Cost of Change - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/2 - Cost of Change - lang_en_vs4.srt
deleted file mode 100644
index 3b5a261..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/2 - Cost of Change - lang_en_vs4.srt
+++ /dev/null
@@ -1,207 +0,0 @@
-1

-00:00:00,290 --> 00:00:03,500

-We will start our discussion about test written and development by going

-

-2

-00:00:03,500 --> 00:00:06,790

-back to a softer life cycle to examine a little bit ago

-

-3

-00:00:06,790 --> 00:00:09,460

-which is the waterfall life cycle. And if you remember, that was

-

-4

-00:00:09,460 --> 00:00:12,980

-a totally rigid process in which we were preparing documents and we

-

-5

-00:00:12,980 --> 00:00:16,570

-were not studying any phase before the previous one was finished. And

-

-6

-00:00:16,570 --> 00:00:19,710

-once a phase was finished, we were really going back to it.

-

-7

-00:00:19,710 --> 00:00:22,110

-So today we are going to examine how it is possible to go

-

-8

-00:00:22,110 --> 00:00:25,320

-from such a rigid process to an agile one, in which we can

-

-9

-00:00:25,320 --> 00:00:27,800

-better deal with changes. So remember what we saw in the

-

-10

-00:00:27,800 --> 00:00:31,510

-first lesson when Barry Boehm stated that the cost of change

-

-11

-00:00:31,510 --> 00:00:35,830

-grows exponentially with time. So if we imagine to have time

-

-12

-00:00:35,830 --> 00:00:39,400

-over here on the x-axis and cost on the y-axis, we

-

-13

-00:00:39,400 --> 00:00:41,650

-can see the cost that will go up more or less

-

-14

-00:00:41,650 --> 00:00:44,325

-this way. And what that means is finding a problem while

-

-15

-00:00:44,325 --> 00:00:47,890

-collecting requirements will cost you much less than finding a problem

-

-16

-00:00:47,890 --> 00:00:50,830

-in the analysis phase, which in turn, will cost you less

-

-17

-00:00:50,830 --> 00:00:53,130

-than finding a problem during design, and so on for

-

-18

-00:00:53,130 --> 00:00:56,110

-the subsequent phases. So if this is the case, and cost

-

-19

-00:00:56,110 --> 00:00:59,450

-is really growing this fast as we proceed in our process,

-

-20

-00:00:59,450 --> 00:01:01,530

-what should we do? The key thing is to discover errors

-

-21

-00:01:01,530 --> 00:01:04,700

-early before they become expensive, which in turn means doing a

-

-22

-00:01:04,700 --> 00:01:09,420

-lot of upfront planning. And because models are cheaper to modify

-

-23

-00:01:09,420 --> 00:01:13,150

-in code, we're willing to make large investments in upfront analysis

-

-24

-00:01:13,150 --> 00:01:16,150

-and design models. And only after we have built and checked

-

-25

-00:01:16,150 --> 00:01:18,750

-these models, we're going to go ahead and build the code. In

-

-26

-00:01:18,750 --> 00:01:20,178

-other words, we are following

-

-27

-00:01:20,178 --> 00:01:23,140

-a waterfall mentality. However, something definitely

-

-28

-00:01:23,140 --> 00:01:26,510

-changed in the last 30 years. For example, 30 years ago,

-

-29

-00:01:26,510 --> 00:01:28,770

-we needed to walk down the hall, submit a deck of

-

-30

-00:01:28,770 --> 00:01:31,490

-cards to an operator, and wait a day for our program

-

-31

-00:01:31,490 --> 00:01:34,280

-to run and produce some results. Today we can leverage the

-

-32

-00:01:34,280 --> 00:01:37,820

-computational power of the cloud. Computers used to be very slow

-

-33

-00:01:37,820 --> 00:01:42,322

-and very expensive. Today, computer are a thousand times faster and

-

-34

-00:01:42,322 --> 00:01:44,380

-a thousand times cheaper than what they used to be. In

-

-35

-00:01:44,380 --> 00:01:47,530

-particular, if you think about the compile and test cycle, that has

-

-36

-00:01:47,530 --> 00:01:51,110

-gone from days to seconds. Now we can change our code, compile

-

-37

-00:01:51,110 --> 00:01:54,460

-it, run it our tests, all in a matter of instants, something

-

-38

-00:01:54,460 --> 00:01:57,660

-that was unthinkable before. Finally, developers in the past had to

-

-39

-00:01:57,660 --> 00:02:01,380

-do a lot of tasks manually in a very time-consuming way and

-

-40

-00:02:01,380 --> 00:02:04,220

-often in a very painful way. Today, on the contrary, we can

-

-41

-00:02:04,220 --> 00:02:07,540

-now automate a lot of these tasks. We have high level programming

-

-42

-00:02:07,540 --> 00:02:11,890

-languages, version control systems, smart ideas. Basically a whole set of tools

-

-43

-00:02:11,890 --> 00:02:15,110

-that can help developers. And they can make them more efficient. In

-

-44

-00:02:15,110 --> 00:02:18,440

-general, what that means is, it's easy to change, much easier than

-

-45

-00:02:18,440 --> 00:02:21,310

-what it was before. So maybe if we take all that into account,

-

-46

-00:02:21,310 --> 00:02:23,430

-the cost of change can be flat. So if we go back

-

-47

-00:02:23,430 --> 00:02:26,580

-to our diagram, the one in which we showed the cost with

-

-48

-00:02:26,580 --> 00:02:29,930

-respect to the project time, maybe instead of having this kind of

-

-49

-00:02:29,930 --> 00:02:32,740

-curve, we might have a different kind of curve. Maybe the curve is

-

-50

-00:02:32,740 --> 00:02:36,020

-more like this one. So maybe we can make all of this happen, as long as

-

-51

-00:02:36,020 --> 00:02:38,440

-we use tools, practices and principles in the

-

-52

-00:02:38,440 --> 00:02:40,170

-right way. And we're going to see what that means.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/3 - Agile Software Development - lang_en_vs7.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/3 - Agile Software Development - lang_en_vs7.srt
deleted file mode 100644
index 38fe4c3..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/3 - Agile Software Development - lang_en_vs7.srt
+++ /dev/null
@@ -1,159 +0,0 @@
-1

-00:00:00,150 --> 00:00:03,250

-And assuming that cost is flat that we can really lower that

-

-2

-00:00:03,250 --> 00:00:06,590

-curve then teher are a few interesting consequences. First of all upfront

-

-3

-00:00:06,590 --> 00:00:10,330

-work becomes a liability, we pay for speculative work some of which

-

-4

-00:00:10,330 --> 00:00:13,320

-is likely to be wrong. Some of which we are likely to undo

-

-5

-00:00:13,320 --> 00:00:16,870

-and the reason for ambiguity and volability for example in requirements then

-

-6

-00:00:16,870 --> 00:00:19,310

-it's good to delay We don't want to plan for something that

-

-7

-00:00:19,310 --> 00:00:22,380

-might never happen, to invest resources in something that we might have

-

-8

-00:00:22,380 --> 00:00:25,170

-to throw away later on. In general, if cost is flat it is

-

-9

-00:00:25,170 --> 00:00:28,820

-cost effective to delay all decisions until the last possible

-

-10

-00:00:28,820 --> 00:00:30,990

-moment and only pay for what we use, so to

-

-11

-00:00:30,990 --> 00:00:34,550

-speak. In other words, there is value in waiting, time

-

-12

-00:00:34,550 --> 00:00:37,810

-answers questions and removes uncertainty. And we want to take advantage

-

-13

-00:00:37,810 --> 00:00:40,610

-of that. This and other considerations led to the birth

-

-14

-00:00:40,610 --> 00:00:44,590

-of Agile Softer Development. Specifically for those of you who are

-

-15

-00:00:44,590 --> 00:00:47,200

-interested in a little bit of history. In February 2001

-

-16

-00:00:47,200 --> 00:00:50,430

-a group of software developers, 17 of them, met to discuss

-

-17

-00:00:50,430 --> 00:00:53,950

-lightweight development methods and published Manifesto for Agile

-

-18

-00:00:53,950 --> 00:00:57,630

-Software Developement. Which introduces and defines the concept of

-

-19

-00:00:57,630 --> 00:01:00,990

-agile software development, or agile methods. In a

-

-20

-00:01:00,990 --> 00:01:03,770

-nutshell, agile methods aim at flat cost and a

-

-21

-00:01:03,770 --> 00:01:06,190

-decrease in traditional overhead by following a set

-

-22

-00:01:06,190 --> 00:01:09,400

-of important principles. Our first principle is to focus

-

-23

-00:01:09,400 --> 00:01:11,700

-on the code, rather than the design, to avoid

-

-24

-00:01:11,700 --> 00:01:16,080

-unnecessary changes. Another principle is to focus on people,

-

-25

-00:01:16,080 --> 00:01:20,100

-value people over process, and make sure to reward people.

-

-26

-00:01:20,100 --> 00:01:22,990

-In addition agile methods are all based on iterative approaches to

-

-27

-00:01:22,990 --> 00:01:26,310

-software development, to deliver working software quickly, and to be

-

-28

-00:01:26,310 --> 00:01:29,230

-evolve it Just as quickly based on feedback. And feedback can

-

-29

-00:01:29,230 --> 00:01:31,740

-come from many sources, in particular, it'll come from the

-

-30

-00:01:31,740 --> 00:01:34,500

-customer, it'll be customer feedback. And to be able to do

-

-31

-00:01:34,500 --> 00:01:38,040

-so, agile methods need to involve the customer throughout the development

-

-32

-00:01:38,040 --> 00:01:41,260

-process. Finally, there are two more principles I want to mention.

-

-33

-00:01:41,260 --> 00:01:43,620

-Which are cornerstones of agile methods. The first

-

-34

-00:01:43,620 --> 00:01:46,520

-one is the expectation that requirements will change, and

-

-35

-00:01:46,520 --> 00:01:48,010

-therefore, we need to be able to handle some

-

-36

-00:01:48,010 --> 00:01:50,570

-changes. We can't count on the requirements to be

-

-37

-00:01:50,570 --> 00:01:52,890

-still and unmutable. And the last principle is

-

-38

-00:01:52,890 --> 00:01:56,430

-the mentality of simplicity. Simple design and simple code

-

-39

-00:01:56,430 --> 00:01:58,810

-and so on. But be careful, because simple does

-

-40

-00:01:58,810 --> 00:02:02,060

-not mean inadequate, but rather, as simple as possible.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/4 - Extreme Programming (XP) - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/4 - Extreme Programming (XP) - lang_en_vs4.srt
deleted file mode 100644
index 62cc2fa..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/4 - Extreme Programming (XP) - lang_en_vs4.srt
+++ /dev/null
@@ -1,179 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,490

-So now let's talk about a specific agile method, which

-

-2

-00:00:02,490 --> 00:00:05,850

-is also one of the first ones, extreme programming, also called

-

-3

-00:00:05,850 --> 00:00:08,430

-XP. And to introduce XP, I'm going to start with

-

-4

-00:00:08,430 --> 00:00:12,520

-a quote. The quote says XP is a lightweight methodology for

-

-5

-00:00:12,520 --> 00:00:16,180

-small to medium sized teams developing software in the face

-

-6

-00:00:16,180 --> 00:00:19,770

-of vague or rapidly-changing requirements. And this is a quote from

-

-7

-00:00:19,770 --> 00:00:23,010

-Kent Beck the American Software Engineer that created extreme programming.

-

-8

-00:00:23,010 --> 00:00:25,630

-And by the way Beck was one of the original 17

-

-9

-00:00:25,630 --> 00:00:29,570

-developers who signed the manifesto in 2001. And as you can see

-

-10

-00:00:29,570 --> 00:00:31,940

-we are still talking about the methodology. So we are not just

-

-11

-00:00:31,940 --> 00:00:35,760

-talking about going out and just start writing software. There are principles.

-

-12

-00:00:35,760 --> 00:00:38,130

-And there are practices that we need to follow, but we're going

-

-13

-00:00:38,130 --> 00:00:40,330

-to do it in a much more agile, and a much more

-

-14

-00:00:40,330 --> 00:00:43,720

-flexible ways than we did for our software processes. And also note

-

-15

-00:00:43,720 --> 00:00:45,340

-that the vague and rapidly changing

-

-16

-00:00:45,340 --> 00:00:47,190

-requirements are explicitly mentioned, because this

-

-17

-00:00:47,190 --> 00:00:51,130

-is really one of the important parts about all of this agile methodologies.

-

-18

-00:00:51,130 --> 00:00:54,780

-so what is XP? XP is a. Lightweight. Humanistic.

-

-19

-00:00:54,780 --> 00:00:58,250

-Discipline. Of software development. It is lightweight because it doesn't

-

-20

-00:00:58,250 --> 00:01:02,190

-overburden the developers with an invasive process. So process

-

-21

-00:01:02,190 --> 00:01:04,510

-is kept to a minimum. It's humanistic because as we

-

-22

-00:01:04,510 --> 00:01:07,760

-said, it's centered on people. People, developers, customers, are

-

-23

-00:01:07,760 --> 00:01:10,520

-at the center of the process. It's a discipline, as

-

-24

-00:01:10,520 --> 00:01:12,870

-we said, it includes practices that we to Follow.

-

-25

-00:01:12,870 --> 00:01:16,470

-And finally, is of course about software development. Software development

-

-26

-00:01:16,470 --> 00:01:19,530

-is a key point of the whole method. In XP, developing

-

-27

-00:01:19,530 --> 00:01:22,910

-is like driving, imagine having a road, a wind road, we need

-

-28

-00:01:22,910 --> 00:01:25,110

-to able to drive our car down the road, take the

-

-29

-00:01:25,110 --> 00:01:29,640

-abrupt turns, react promptly to changes, for example obstacles on the road.

-

-30

-00:01:29,640 --> 00:01:32,610

-So, in a nutshell, change is the only constant. Eyes always

-

-31

-00:01:32,610 --> 00:01:34,980

-have to be on the road and it's about steering and not

-

-32

-00:01:34,980 --> 00:01:38,110

-pointing, and XP is trying to do the same thing, while creating

-

-33

-00:01:38,110 --> 00:01:42,190

-softer systems. In XP we need to adopt a mentality of sufficiency,

-

-34

-00:01:42,190 --> 00:01:44,820

-what does that mean? How would you program if you had all

-

-35

-00:01:44,820 --> 00:01:48,010

-the time in the world? No time constraints at all, you will probably

-

-36

-00:01:48,010 --> 00:01:51,090

-write tests instead of skipping them, because there's no more resources. You

-

-37

-00:01:51,090 --> 00:01:53,200

-will probably restructure your code often,

-

-38

-00:01:53,200 --> 00:01:55,210

-because you see opportunities to improve it,

-

-39

-00:01:55,210 --> 00:01:57,300

-and you will take them. And you will probably talk to fellow

-

-40

-00:01:57,300 --> 00:02:00,910

-programmers and with the customer, interact with them, and this is actually the

-

-41

-00:02:00,910 --> 00:02:04,700

-kind of mentality that XP is trying to promote and agile processes

-

-42

-00:02:04,700 --> 00:02:07,760

-in general. And we will see that the following some of the practices

-

-43

-00:02:07,760 --> 00:02:11,250

-that XP is advocating, you can actually achieve these goals and you can

-

-44

-00:02:11,250 --> 00:02:12,840

-actually behave in this way. And the

-

-45

-00:02:12,840 --> 00:02:15,010

-development process is going to benefit overall.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/5 - XP's Values, Principles, and Practices - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/5 - XP's Values, Principles, and Practices - lang_en_vs4.srt
deleted file mode 100644
index d12e73d..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/5 - XP's Values, Principles, and Practices - lang_en_vs4.srt
+++ /dev/null
@@ -1,151 +0,0 @@
-1

-00:00:00,218 --> 00:00:03,030

-Next I'm going to go over some of the XP's values

-

-2

-00:00:03,030 --> 00:00:05,870

-and principles that I just hinted on earlier in the lesson.

-

-3

-00:00:05,870 --> 00:00:08,820

-The first one, the first important value is communication. There

-

-4

-00:00:08,820 --> 00:00:12,350

-is no good project without good communication. And XP tries to

-

-5

-00:00:12,350 --> 00:00:15,470

-keep the right communication flowing and it uses several practices

-

-6

-00:00:15,470 --> 00:00:18,890

-to do that. It's got practices based on and require information

-

-7

-00:00:18,890 --> 00:00:21,950

-and in general share the information. For example, pair programming.

-

-8

-00:00:21,950 --> 00:00:25,140

-And we're going to say more about that. User stories, customer involvement,

-

-9

-00:00:25,140 --> 00:00:28,240

-all activities that help communication,

-

-10

-00:00:28,240 --> 00:00:30,440

-that faster communication. Another important

-

-11

-00:00:30,440 --> 00:00:33,420

-principle that we already saw, is simplicity. And the motto here

-

-12

-00:00:33,420 --> 00:00:35,680

-is live for today without worrying too much about the

-

-13

-00:00:35,680 --> 00:00:38,230

-future. When you have to do something, look for the simplest

-

-14

-00:00:38,230 --> 00:00:40,580

-thing that works. And the emphasis here is on, that

-

-15

-00:00:40,580 --> 00:00:43,520

-works. We want to build something simple, but not something stupid.

-

-16

-00:00:43,520 --> 00:00:47,090

-Feedback. That's extremely important in XP, and it occurs at

-

-17

-00:00:47,090 --> 00:00:50,560

-different levels, and it is used to drive changes. For example,

-

-18

-00:00:50,560 --> 00:00:53,910

-developers write test cases. And that's immediate feedback. If your test cases

-

-19

-00:00:53,910 --> 00:00:56,140

-fail, there's something wrong with the code. Or there's something that you

-

-20

-00:00:56,140 --> 00:00:59,690

-still haven't developed. Developers also estimate new stories right away as soon

-

-21

-00:00:59,690 --> 00:01:02,060

-as they get them from the customers and that's immediate feedback to

-

-22

-00:01:02,060 --> 00:01:05,515

-the customer. And finally, on a slightly longer time frame, customers and

-

-23

-00:01:05,515 --> 00:01:07,820

-tester develop together functional system test

-

-24

-00:01:07,820 --> 00:01:09,600

-cases to assess the overall system.

-

-25

-00:01:09,600 --> 00:01:12,100

-And also in this case, that's a great way to provide feedback

-

-26

-00:01:12,100 --> 00:01:15,850

-and by the way, also to help communication. And finally, courage, the courage

-

-27

-00:01:15,850 --> 00:01:18,860

-to throw away code if it doesn't work. To change it if you

-

-28

-00:01:18,860 --> 00:01:21,710

-find a way to improve it. To fix it if you find a problem.

-

-29

-00:01:21,710 --> 00:01:24,300

-To try out new things if you think that they might work better

-

-30

-00:01:24,300 --> 00:01:27,410

-than what you have right now. Now, that we can build and test systems

-

-31

-00:01:27,410 --> 00:01:30,150

-very quickly, we can be much braver than what we were before. So

-

-32

-00:01:30,150 --> 00:01:33,790

-how do we accomplish all that? And what are XP's practices that are going to

-

-33

-00:01:33,790 --> 00:01:37,750

-help us follow these principles and adhere to those values? These are some

-

-34

-00:01:37,750 --> 00:01:40,900

-of XP practices. There are more, but those are the ones that I'd like

-

-35

-00:01:40,900 --> 00:01:44,240

-to discuss in a little more depth, individually. Incremental planning,

-

-36

-00:01:44,240 --> 00:01:48,230

-small releases, simple design, test first, refactoring. We will actually

-

-37

-00:01:48,230 --> 00:01:51,680

-have a whole lesson next on refactoring. Pair programming, continuous

-

-38

-00:01:51,680 --> 00:01:55,240

-integration, and on-site customer. So let's start with incremental planning.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/6 - Incremental Planning - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/6 - Incremental Planning - lang_en_vs4.srt
deleted file mode 100644
index faf25db..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/6 - Incremental Planning - lang_en_vs4.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,140 --> 00:00:03,390

-Incremental planning is based on the idea that requirements are recorded

-

-2

-00:00:03,390 --> 00:00:07,260

-on story cards, sort of use cases or scenarios that the customer

-

-3

-00:00:07,260 --> 00:00:10,450

-provides. So the first step in incremental planning is to select

-

-4

-00:00:10,450 --> 00:00:14,120

-user stories for a given release, and which stories exactly to include

-

-5

-00:00:14,120 --> 00:00:16,975

-depends on the time available and on the priority. For example,

-

-6

-00:00:16,975 --> 00:00:19,147

-scenarios that we might want to realize right away because they are

-

-7

-00:00:19,147 --> 00:00:22,110

-particular important for the customer. After we select user stories for

-

-8

-00:00:22,110 --> 00:00:25,200

-the release, we break stories i to tasks. So what we do,

-

-9

-00:00:25,200 --> 00:00:29,260

-we take the user stories and we identify specific development tasks

-

-10

-00:00:29,260 --> 00:00:32,320

-that we need to perform in order to realize these stories. Once

-

-11

-00:00:32,320 --> 00:00:34,780

-we know our tasks, we can plan our release. And at

-

-12

-00:00:34,780 --> 00:00:38,050

-that point, we can develop, integrate and test our code. And of

-

-13

-00:00:38,050 --> 00:00:41,170

-course, this is more kind of an iterative process right here,

-

-14

-00:00:41,170 --> 00:00:44,250

-so we do this many times. When we're ready, when we accomplish

-

-15

-00:00:44,250 --> 00:00:46,990

-all of our tasks, all of our tests pass and we're happy,

-

-16

-00:00:46,990 --> 00:00:50,410

-we release this software. At the point, the released software is evaluated

-

-17

-00:00:50,410 --> 00:00:53,250

-by us, by the customer, and we can reiterate. We can

-

-18

-00:00:53,250 --> 00:00:56,360

-continue the process, select more stories and continue it this way.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/7 - Small Releases - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/7 - Small Releases - lang_en_vs4.srt
deleted file mode 100644
index 0437621..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/7 - Small Releases - lang_en_vs4.srt
+++ /dev/null
@@ -1,95 +0,0 @@
-1

-00:00:00,210 --> 00:00:02,790

-The first practice that we just saw goes together with

-

-2

-00:00:02,790 --> 00:00:06,320

-small releases practice. This idea that instead of having a big

-

-3

-00:00:06,320 --> 00:00:09,390

-release at the end of a long development cycle, we try

-

-4

-00:00:09,390 --> 00:00:12,610

-to release very often. And there are many advantages to small

-

-5

-00:00:12,610 --> 00:00:15,260

-releases and to releasing often. The first one is that

-

-6

-00:00:15,260 --> 00:00:18,980

-we deliver real business value on a very short cycle. And

-

-7

-00:00:18,980 --> 00:00:22,070

-what that means is that we get business value sooner, and

-

-8

-00:00:22,070 --> 00:00:25,550

-that in turn increase our customer confidence and makes the customer

-

-9

-00:00:25,550 --> 00:00:29,040

-more happy. So more releases also mean rapid feedback. We

-

-10

-00:00:29,040 --> 00:00:32,420

-release the software soon, we get feedback from the customer soon,

-

-11

-00:00:32,420 --> 00:00:34,710

-and we can in this way do exactly what we

-

-12

-00:00:34,710 --> 00:00:38,510

-were saying before, steer instead of driving, adapt weekly to possible

-

-13

-00:00:38,510 --> 00:00:41,680

-changes in the requirements. We avoid working for six months

-

-14

-00:00:41,680 --> 00:00:43,970

-on a project and find out six months later that the

-

-15

-00:00:43,970 --> 00:00:46,950

-customer wanted something else and we got the wrong requirements. In

-

-16

-00:00:46,950 --> 00:00:50,610

-addition having small releases, so seeing your product deployed and released

-

-17

-00:00:50,610 --> 00:00:54,040

-soon produces a sense of accomplishment for the developers.

-

-18

-00:00:54,040 --> 00:00:57,000

-And in addition, it also reduces risk because again,

-

-19

-00:00:57,000 --> 00:00:58,640

-if we're going down the wrong path, we will

-

-20

-00:00:58,640 --> 00:01:00,730

-know right away. If we're late, we will know right

-

-21

-00:01:00,730 --> 00:01:03,370

-away. So these are just additional advantages of having

-

-22

-00:01:03,370 --> 00:01:06,140

-this quick cycle and more releases. And finally, as we

-

-23

-00:01:06,140 --> 00:01:09,130

-also said before, we can quickly adapt in the

-

-24

-00:01:09,130 --> 00:01:12,540

-case our requirements change our code to the new requirements.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/8 - Simple Design - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/8 - Simple Design - lang_en_vs4.srt
deleted file mode 100644
index 3a8962c..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/8 - Simple Design - lang_en_vs4.srt
+++ /dev/null
@@ -1,63 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,790

-The next practice is simple design. We want to avoid

-

-2

-00:00:02,790 --> 00:00:07,330

-creating a huge complicated possibly cumbersome design at the beginning of

-

-3

-00:00:07,330 --> 00:00:09,730

-the project. What we want to have instead is just

-

-4

-00:00:09,730 --> 00:00:14,580

-enough design to meet the requirements, so no duplicated functionality, fewest

-

-5

-00:00:14,580 --> 00:00:17,910

-possible classes and methods in general, just the amount of

-

-6

-00:00:17,910 --> 00:00:20,860

-design that we need to get our system to work. So

-

-7

-00:00:20,860 --> 00:00:23,012

-one might object that to for designing that way we

-

-8

-00:00:23,012 --> 00:00:25,210

-will have to change the code a lot, we will need

-

-9

-00:00:25,210 --> 00:00:27,300

-to adapt the design as the code evolves,

-

-10

-00:00:27,300 --> 00:00:29,180

-and that's exactly the point. That's what we will

-

-11

-00:00:29,180 --> 00:00:31,670

-do. XP is all about changing and adapting,

-

-12

-00:00:31,670 --> 00:00:34,850

-changing your design, changing your code, refactoring. And with

-

-13

-00:00:34,850 --> 00:00:37,420

-the fact that we have test cases throughout

-

-14

-00:00:37,420 --> 00:00:39,770

-the development process, we can do that with confidence.

-

-15

-00:00:39,770 --> 00:00:41,220

-Because if we break something we will know

-

-16

-00:00:41,220 --> 00:00:43,590

-right away, which leads us to the next practice.

diff --git a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/9 - Test First Development - lang_en_vs4.srt b/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/9 - Test First Development - lang_en_vs4.srt
deleted file mode 100644
index b2a461b..0000000
--- a/usth/ICT2.7/P4L4 Agile Development Methods Subtitles/9 - Test First Development - lang_en_vs4.srt
+++ /dev/null
@@ -1,59 +0,0 @@
-1

-00:00:00,040 --> 00:00:03,610

-Which is test-first development. The key idea is that any program

-

-2

-00:00:03,610 --> 00:00:07,210

-feature that doesn't have an automatic test simply does not exist. If

-

-3

-00:00:07,210 --> 00:00:09,430

-there is a feature, you need to write a test for the

-

-4

-00:00:09,430 --> 00:00:13,630

-feature before. So, what developers do is to create unit tests for

-

-5

-00:00:13,630 --> 00:00:17,420

-each such piece of functionality even before the functionality is implemented.

-

-6

-00:00:17,420 --> 00:00:19,720

-And of course, when you run this test, they will fail. But

-

-7

-00:00:19,720 --> 00:00:22,190

-the beauty of it is that, as you write your code and

-

-8

-00:00:22,190 --> 00:00:25,680

-you add more and more fractionality to the feature that you're developing,

-

-9

-00:00:25,680 --> 00:00:27,820

-these test cases are going to start to pass.

-

-10

-00:00:27,820 --> 00:00:30,190

-And that's extremely rewarding because it gives you immediate

-

-11

-00:00:30,190 --> 00:00:32,530

-feedback, again feedback on the fact that you're

-

-12

-00:00:32,530 --> 00:00:34,530

-developing the code in the right way. As soon

-

-13

-00:00:34,530 --> 00:00:37,000

-as you write it, you will know. And if you write a piece of code and the

-

-14

-00:00:37,000 --> 00:00:38,550

-test says still fail, that means that the

-

-15

-00:00:38,550 --> 00:00:40,140

-code is not doing what it's supposed to do.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/1 - Lesson Overview - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/1 - Lesson Overview - lang_en_vs4.srt
deleted file mode 100644
index bab48c0..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/1 - Lesson Overview - lang_en_vs4.srt
+++ /dev/null
@@ -1,71 +0,0 @@
-1

-00:00:00,140 --> 00:00:02,220

-In the previous lesson, we discussed agile

-

-2

-00:00:02,220 --> 00:00:05,689

-software development. Its principles and practices. And two

-

-3

-00:00:05,689 --> 00:00:10,060

-specific agile processes. XP and Scrub. In

-

-4

-00:00:10,060 --> 00:00:12,230

-this lesson, we will introduce a practice that

-

-5

-00:00:12,230 --> 00:00:15,020

-is of fundamental importance in the context

-

-6

-00:00:15,020 --> 00:00:20,120

-of agile software development. Software refactoring. Software refactoring

-

-7

-00:00:20,120 --> 00:00:22,030

-is the process of taking a program and

-

-8

-00:00:22,030 --> 00:00:25,040

-transforming it to make it better. That is,

-

-9

-00:00:25,040 --> 00:00:27,240

-to make it easier to understand, make it

-

-10

-00:00:27,240 --> 00:00:29,880

-more maintainable, and in general to improve its

-

-11

-00:00:29,880 --> 00:00:34,300

-design. Specifically, we will discuss what the refactoring

-

-12

-00:00:34,300 --> 00:00:37,680

-is and why it is important? When to perform

-

-13

-00:00:37,680 --> 00:00:40,980

-refactoring, and when not to perform refactoring? And

-

-14

-00:00:40,980 --> 00:00:44,520

-how to perform refactoring in a fully automated way,

-

-15

-00:00:44,520 --> 00:00:47,293

-using tools. We will also introduce the concept

-

-16

-00:00:47,293 --> 00:00:50,040

-of bad smells, where a bad smell, in software,

-

-17

-00:00:50,040 --> 00:00:53,323

-is the indication that there might be something wrong with

-

-18

-00:00:53,323 --> 00:00:56,890

-the code that might call for the application of refactoring.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/10 - Consolidate Conditional Expression Solution - lang_en_vs3.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/10 - Consolidate Conditional Expression Solution - lang_en_vs3.srt
deleted file mode 100644
index 89f2722..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/10 - Consolidate Conditional Expression Solution - lang_en_vs3.srt
+++ /dev/null
@@ -1,55 +0,0 @@
-1

-00:00:00,080 --> 00:00:03,230

-So the resulting code will be like this. As you can see here,

-

-2

-00:00:03,230 --> 00:00:06,602

-now I don't have the conditionals any longer, but I just have a call to

-

-3

-00:00:06,602 --> 00:00:09,938

-this notEligibleForDisability method. And this makes the code so

-

-4

-00:00:09,938 --> 00:00:14,092

-much clearer, because if I just need to understand how disabilityAmount works,

-

-5

-00:00:14,092 --> 00:00:17,945

-I can clearly see there is an initial check that is actually checking whether

-

-6

-00:00:17,945 --> 00:00:22,030

-an employee's eligible for disabilities or not. And if the check is false, so

-

-7

-00:00:22,030 --> 00:00:26,180

-if the employee's eligible, then I'll just perform the rest of the computation.

-

-8

-00:00:26,180 --> 00:00:27,710

-Otherwise I'll simply return zero.

-

-9

-00:00:27,710 --> 00:00:30,500

-So if I don't need to understand the details of this check,

-

-10

-00:00:30,500 --> 00:00:33,630

-I can simply look at this method and understand it all. And if I need to look at

-

-11

-00:00:33,630 --> 00:00:36,990

-the details I can just go, and look at the implementation of this method,

-

-12

-00:00:36,990 --> 00:00:39,600

-and I will get exactly the same information that I have here. But I'm sort of

-

-13

-00:00:39,600 --> 00:00:43,220

-separating the concerns, and making the code overall more understandable, and

-

-14

-00:00:43,220 --> 00:00:46,160

-therefore more maintainable, which is the main goal of refactoring.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en-us_vs2.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en-us_vs2.srt
deleted file mode 100644
index ef89eb8..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en-us_vs2.srt
+++ /dev/null
@@ -1,263 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,740

-Let's now see a related refactoring, which is the

-

-2

-00:00:02,740 --> 00:00:06,200

-decompose conditional refactoring. What happens here is that in some

-

-3

-00:00:06,200 --> 00:00:08,980

-cases, the complexity of the conditional logic in a program

-

-4

-00:00:08,980 --> 00:00:12,040

-can make a method hard to read and understand. Specifically

-

-5

-00:00:12,040 --> 00:00:15,760

-we might have one or more particularly complex conditional

-

-6

-00:00:15,760 --> 00:00:18,580

-statements. And similar to what we discussed for the previous

-

-7

-00:00:18,580 --> 00:00:21,630

-refactoring, the conditional, if it's too complex, might tell you

-

-8

-00:00:21,630 --> 00:00:25,170

-what happens, but obscure why it happens. To address this

-

-9

-00:00:25,170 --> 00:00:27,520

-issue, you can do a similar thing to what we did in

-

-10

-00:00:27,520 --> 00:00:31,800

-the previous refactoring. You can transform the condition into a method and then

-

-11

-00:00:31,800 --> 00:00:35,260

-replace the condition with a call to that method. And if you give

-

-12

-00:00:35,260 --> 00:00:37,930

-the right name to the method, as we saw in the last example,

-

-13

-00:00:37,930 --> 00:00:41,730

-that can make the code much clearer and much easier to understand. In

-

-14

-00:00:41,730 --> 00:00:44,360

-addition here you can also do something else. Let's assume that those are

-

-15

-00:00:44,360 --> 00:00:47,430

-the then and else part of the conditional are complex. We can do

-

-16

-00:00:47,430 --> 00:00:50,180

-the same thing with them. So what we can do, we can modify

-

-17

-00:00:50,180 --> 00:00:53,570

-the then and else part of the conditional by extracting the corresponding

-

-18

-00:00:53,570 --> 00:00:57,070

-code, making also that one into a method, suitably naming the method,

-

-19

-00:00:57,070 --> 00:00:59,930

-and then having the call to the method only in the then

-

-20

-00:00:59,930 --> 00:01:03,540

-and else part of the conditional statement. So let's see how that works

-

-21

-00:01:03,540 --> 00:01:06,940

-with an example. Here we have the matter that computes some charge.

-

-22

-00:01:06,940 --> 00:01:10,350

-And it computes the charge based on some corrective uses of the date

-

-23

-00:01:10,350 --> 00:01:12,930

-that is provided as input, or it's imagined or is just, you

-

-24

-00:01:12,930 --> 00:01:15,410

-know, one of the fields in the class. So as you can see,

-

-25

-00:01:15,410 --> 00:01:18,140

-there is a conditional here that checks that if the

-

-26

-00:01:18,140 --> 00:01:21,535

-dates is before the beginning of the summer, so before summer

-

-27

-00:01:21,535 --> 00:01:25,180

-start. Or it's after the summer end. Then it compute

-

-28

-00:01:25,180 --> 00:01:29,152

-the charge using some winterRate. Otherwise, if we are in the

-

-29

-00:01:29,152 --> 00:01:32,288

-summer, it will compute the quantity, the charge using a

-

-30

-00:01:32,288 --> 00:01:35,440

-summerRate. And this is just a small example, so it might

-

-31

-00:01:35,440 --> 00:01:37,990

-not look that complex. But, you know, just project this on

-

-32

-00:01:37,990 --> 00:01:40,458

-more realistic code, on larger code. You can end up with

-

-33

-00:01:40,458 --> 00:01:43,656

-the conditions that are hard to understand. And even in this case, even

-

-34

-00:01:43,656 --> 00:01:45,944

-such a small piece of code, you have to kind of look at

-

-35

-00:01:45,944 --> 00:01:48,752

-the conditionals, figure out what does it mean for the date to be

-

-36

-00:01:48,752 --> 00:01:51,800

-before the summer start and after the summer end. We can make this much

-

-37

-00:01:51,800 --> 00:01:54,780

-clearer. So, how can we do it? By applying this refactoring as we

-

-38

-00:01:54,780 --> 00:01:56,190

-described. Let's see what happens when

-

-39

-00:01:56,190 --> 00:01:58,380

-I apply the decompose conditionals refactoring to

-

-40

-00:01:58,380 --> 00:02:01,530

-this method. The first thing I will do is to take this condition,

-

-41

-00:02:01,530 --> 00:02:05,640

-create a method that perform exactly the same check, give it a meaningful name.

-

-42

-00:02:05,640 --> 00:02:09,380

-In this case I called it notSummer, which is pretty self-explanatory, and then

-

-43

-00:02:09,380 --> 00:02:12,340

-replacing the condition with a call to that matter. As you can see

-

-44

-00:02:12,340 --> 00:02:15,230

-here, there's a clear improvement in the code, because here I just need

-

-45

-00:02:15,230 --> 00:02:17,810

-to look at this statement and I see right away that the check. What

-

-46

-00:02:17,810 --> 00:02:20,680

-the check is doing is just checking whether the date is in the

-

-47

-00:02:20,680 --> 00:02:24,320

-summer or not. So, much easier than having to interpret this condition. And

-

-48

-00:02:24,320 --> 00:02:26,910

-the second thing I do is to take the code that computes the

-

-49

-00:02:26,910 --> 00:02:28,600

-charge and also in this case, creating

-

-50

-00:02:28,600 --> 00:02:31,028

-suitable methods that compute the winterCharge and

-

-51

-00:02:31,028 --> 00:02:34,838

-the summerCharge. And I called them exactly winterCharge and summerCharge which

-

-52

-00:02:34,838 --> 00:02:38,278

-again is self explanatory. And then I replace this computation with

-

-53

-00:02:38,278 --> 00:02:40,710

-a call to that method. So again, when I look at

-

-54

-00:02:40,710 --> 00:02:43,280

-this code, I can clearly see that the charge is computed

-

-55

-00:02:43,280 --> 00:02:46,570

-using some sort of winterCharge calculation and then using some sort

-

-56

-00:02:46,570 --> 00:02:50,490

-of summerCharge calculation. And if I don't want to know how

-

-57

-00:02:50,490 --> 00:02:52,670

-this is exactly computed, that's all I need to know to

-

-58

-00:02:52,670 --> 00:02:56,100

-understand what this method does. Easier and faster than looking at

-

-59

-00:02:56,100 --> 00:02:57,970

-this method and figuring out what it does. And if

-

-60

-00:02:57,970 --> 00:02:59,950

-I need to look at the details, exactly like in the

-

-61

-00:02:59,950 --> 00:03:01,550

-previous case, I can just go and look at the

-

-62

-00:03:01,550 --> 00:03:04,170

-implementation of winterCharge and summerCharge. But I will be looking at

-

-63

-00:03:04,170 --> 00:03:06,980

-that in its specific context. So, without having to understand

-

-64

-00:03:06,980 --> 00:03:09,760

-everything at once. So in this way, you make it clear

-

-65

-00:03:09,760 --> 00:03:12,840

-both why you're doing something, because it is notSummer, and

-

-66

-00:03:12,840 --> 00:03:16,300

-what exactly you're doing. You're computing a winterCharge, or a summerCharge.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en_vs8.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en_vs8.srt
deleted file mode 100644
index ef89eb8..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/11 - Decompose Conditionals - lang_en_vs8.srt
+++ /dev/null
@@ -1,263 +0,0 @@
-1

-00:00:00,080 --> 00:00:02,740

-Let's now see a related refactoring, which is the

-

-2

-00:00:02,740 --> 00:00:06,200

-decompose conditional refactoring. What happens here is that in some

-

-3

-00:00:06,200 --> 00:00:08,980

-cases, the complexity of the conditional logic in a program

-

-4

-00:00:08,980 --> 00:00:12,040

-can make a method hard to read and understand. Specifically

-

-5

-00:00:12,040 --> 00:00:15,760

-we might have one or more particularly complex conditional

-

-6

-00:00:15,760 --> 00:00:18,580

-statements. And similar to what we discussed for the previous

-

-7

-00:00:18,580 --> 00:00:21,630

-refactoring, the conditional, if it's too complex, might tell you

-

-8

-00:00:21,630 --> 00:00:25,170

-what happens, but obscure why it happens. To address this

-

-9

-00:00:25,170 --> 00:00:27,520

-issue, you can do a similar thing to what we did in

-

-10

-00:00:27,520 --> 00:00:31,800

-the previous refactoring. You can transform the condition into a method and then

-

-11

-00:00:31,800 --> 00:00:35,260

-replace the condition with a call to that method. And if you give

-

-12

-00:00:35,260 --> 00:00:37,930

-the right name to the method, as we saw in the last example,

-

-13

-00:00:37,930 --> 00:00:41,730

-that can make the code much clearer and much easier to understand. In

-

-14

-00:00:41,730 --> 00:00:44,360

-addition here you can also do something else. Let's assume that those are

-

-15

-00:00:44,360 --> 00:00:47,430

-the then and else part of the conditional are complex. We can do

-

-16

-00:00:47,430 --> 00:00:50,180

-the same thing with them. So what we can do, we can modify

-

-17

-00:00:50,180 --> 00:00:53,570

-the then and else part of the conditional by extracting the corresponding

-

-18

-00:00:53,570 --> 00:00:57,070

-code, making also that one into a method, suitably naming the method,

-

-19

-00:00:57,070 --> 00:00:59,930

-and then having the call to the method only in the then

-

-20

-00:00:59,930 --> 00:01:03,540

-and else part of the conditional statement. So let's see how that works

-

-21

-00:01:03,540 --> 00:01:06,940

-with an example. Here we have the matter that computes some charge.

-

-22

-00:01:06,940 --> 00:01:10,350

-And it computes the charge based on some corrective uses of the date

-

-23

-00:01:10,350 --> 00:01:12,930

-that is provided as input, or it's imagined or is just, you

-

-24

-00:01:12,930 --> 00:01:15,410

-know, one of the fields in the class. So as you can see,

-

-25

-00:01:15,410 --> 00:01:18,140

-there is a conditional here that checks that if the

-

-26

-00:01:18,140 --> 00:01:21,535

-dates is before the beginning of the summer, so before summer

-

-27

-00:01:21,535 --> 00:01:25,180

-start. Or it's after the summer end. Then it compute

-

-28

-00:01:25,180 --> 00:01:29,152

-the charge using some winterRate. Otherwise, if we are in the

-

-29

-00:01:29,152 --> 00:01:32,288

-summer, it will compute the quantity, the charge using a

-

-30

-00:01:32,288 --> 00:01:35,440

-summerRate. And this is just a small example, so it might

-

-31

-00:01:35,440 --> 00:01:37,990

-not look that complex. But, you know, just project this on

-

-32

-00:01:37,990 --> 00:01:40,458

-more realistic code, on larger code. You can end up with

-

-33

-00:01:40,458 --> 00:01:43,656

-the conditions that are hard to understand. And even in this case, even

-

-34

-00:01:43,656 --> 00:01:45,944

-such a small piece of code, you have to kind of look at

-

-35

-00:01:45,944 --> 00:01:48,752

-the conditionals, figure out what does it mean for the date to be

-

-36

-00:01:48,752 --> 00:01:51,800

-before the summer start and after the summer end. We can make this much

-

-37

-00:01:51,800 --> 00:01:54,780

-clearer. So, how can we do it? By applying this refactoring as we

-

-38

-00:01:54,780 --> 00:01:56,190

-described. Let's see what happens when

-

-39

-00:01:56,190 --> 00:01:58,380

-I apply the decompose conditionals refactoring to

-

-40

-00:01:58,380 --> 00:02:01,530

-this method. The first thing I will do is to take this condition,

-

-41

-00:02:01,530 --> 00:02:05,640

-create a method that perform exactly the same check, give it a meaningful name.

-

-42

-00:02:05,640 --> 00:02:09,380

-In this case I called it notSummer, which is pretty self-explanatory, and then

-

-43

-00:02:09,380 --> 00:02:12,340

-replacing the condition with a call to that matter. As you can see

-

-44

-00:02:12,340 --> 00:02:15,230

-here, there's a clear improvement in the code, because here I just need

-

-45

-00:02:15,230 --> 00:02:17,810

-to look at this statement and I see right away that the check. What

-

-46

-00:02:17,810 --> 00:02:20,680

-the check is doing is just checking whether the date is in the

-

-47

-00:02:20,680 --> 00:02:24,320

-summer or not. So, much easier than having to interpret this condition. And

-

-48

-00:02:24,320 --> 00:02:26,910

-the second thing I do is to take the code that computes the

-

-49

-00:02:26,910 --> 00:02:28,600

-charge and also in this case, creating

-

-50

-00:02:28,600 --> 00:02:31,028

-suitable methods that compute the winterCharge and

-

-51

-00:02:31,028 --> 00:02:34,838

-the summerCharge. And I called them exactly winterCharge and summerCharge which

-

-52

-00:02:34,838 --> 00:02:38,278

-again is self explanatory. And then I replace this computation with

-

-53

-00:02:38,278 --> 00:02:40,710

-a call to that method. So again, when I look at

-

-54

-00:02:40,710 --> 00:02:43,280

-this code, I can clearly see that the charge is computed

-

-55

-00:02:43,280 --> 00:02:46,570

-using some sort of winterCharge calculation and then using some sort

-

-56

-00:02:46,570 --> 00:02:50,490

-of summerCharge calculation. And if I don't want to know how

-

-57

-00:02:50,490 --> 00:02:52,670

-this is exactly computed, that's all I need to know to

-

-58

-00:02:52,670 --> 00:02:56,100

-understand what this method does. Easier and faster than looking at

-

-59

-00:02:56,100 --> 00:02:57,970

-this method and figuring out what it does. And if

-

-60

-00:02:57,970 --> 00:02:59,950

-I need to look at the details, exactly like in the

-

-61

-00:02:59,950 --> 00:03:01,550

-previous case, I can just go and look at the

-

-62

-00:03:01,550 --> 00:03:04,170

-implementation of winterCharge and summerCharge. But I will be looking at

-

-63

-00:03:04,170 --> 00:03:06,980

-that in its specific context. So, without having to understand

-

-64

-00:03:06,980 --> 00:03:09,760

-everything at once. So in this way, you make it clear

-

-65

-00:03:09,760 --> 00:03:12,840

-both why you're doing something, because it is notSummer, and

-

-66

-00:03:12,840 --> 00:03:16,300

-what exactly you're doing. You're computing a winterCharge, or a summerCharge.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/12 - Extract Class - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/12 - Extract Class - lang_en_vs4.srt
deleted file mode 100644
index 07c93ed..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/12 - Extract Class - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,100 --> 00:00:02,890

-We are now going to talk about the extract class refactoring. When a

-

-2

-00:00:02,890 --> 00:00:06,040

-softer system evolves, we might end up with classes that really do the

-

-3

-00:00:06,040 --> 00:00:09,210

-work of more than one class because we keep adding functionality to

-

-4

-00:00:09,210 --> 00:00:11,010

-the class. Therefore also they're too

-

-5

-00:00:11,010 --> 00:00:13,160

-big, too complicated. In particular, we might

-

-6

-00:00:13,160 --> 00:00:15,250

-end up with a class that is doing the work of two

-

-7

-00:00:15,250 --> 00:00:18,890

-classes. Typical examples are classes with many methods and quite a lot of

-

-8

-00:00:18,890 --> 00:00:22,520

-data, quite a lot of fields. In this case, it's normally good idea

-

-9

-00:00:22,520 --> 00:00:25,120

-to split the class into two, so what you will do, you will

-

-10

-00:00:25,120 --> 00:00:28,700

-create a new class and move there the relevant fields and methods from

-

-11

-00:00:28,700 --> 00:00:31,700

-the original class. So as to have two classes, each one implementing a

-

-12

-00:00:31,700 --> 00:00:34,900

-piece of the functionality. Let's look at an example. In this case we're

-

-13

-00:00:34,900 --> 00:00:38,850

-going to use a UML like representation for the class. We have this class Person

-

-14

-00:00:38,850 --> 00:00:41,769

-that ends up representing also a phone number. And imagine that we add

-

-15

-00:00:41,769 --> 00:00:44,500

-up these pieces, you know, a little bit at the time so we end

-

-16

-00:00:44,500 --> 00:00:47,430

-up with something that really is doing the job of the person and

-

-17

-00:00:47,430 --> 00:00:50,490

-of the phone number. So what we can do, we can actually do exactly

-

-18

-00:00:50,490 --> 00:00:52,650

-what we described here. We split this class

-

-19

-00:00:52,650 --> 00:00:55,470

-into a Person class, and the Phone Number class.

-

-20

-00:00:55,470 --> 00:00:57,440

-And then we establish a use relation, so we

-

-21

-00:00:57,440 --> 00:00:59,470

-have a reference of the phone number class into

-

-22

-00:00:59,470 --> 00:01:01,960

-this class. And by separating the telephone number behavior

-

-23

-00:01:01,960 --> 00:01:04,680

-into its own class, I once more improved the

-

-24

-00:01:04,680 --> 00:01:06,980

-structure of the code, because now I have classes

-

-25

-00:01:06,980 --> 00:01:09,070

-that are more cohesive, and do exactly one thing.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/13 - Inline Class - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/13 - Inline Class - lang_en_vs4.srt
deleted file mode 100644
index a7f7f2f..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/13 - Inline Class - lang_en_vs4.srt
+++ /dev/null
@@ -1,75 +0,0 @@
-1

-00:00:00,150 --> 00:00:03,825

-This new refactoring called inline class is the reverse of the extract class

-

-2

-00:00:03,825 --> 00:00:06,700

-refactoring. And know that this is kind of a general situation in the

-

-3

-00:00:06,700 --> 00:00:09,500

-sense that it is often the case that the refactoring also has a

-

-4

-00:00:09,500 --> 00:00:11,480

-reverse refactoring that does exactly the

-

-5

-00:00:11,480 --> 00:00:13,202

-opposite. So basically, un-dos, in a sense,

-

-6

-00:00:13,202 --> 00:00:16,830

-the operation of the other refactoring. In this case, the motivation for the

-

-7

-00:00:16,830 --> 00:00:19,760

-refactoring is that during system evolution, we might end up with one or

-

-8

-00:00:19,760 --> 00:00:22,530

-more classes that do not do much. In this case what you want

-

-9

-00:00:22,530 --> 00:00:25,350

-to do is to take the class that is not doing that much and

-

-10

-00:00:25,350 --> 00:00:28,740

-move its features into another class. And then delete the original class.

-

-11

-00:00:28,740 --> 00:00:31,010

-So lets use an example similar to the one we've used for

-

-12

-00:00:31,010 --> 00:00:34,000

-the previous refactoring to illustrate how this works. Here we have in

-

-13

-00:00:34,000 --> 00:00:37,750

-this case, two classes, person and office. And the person class is

-

-14

-00:00:37,750 --> 00:00:40,720

-using the office class, but this latter class, the office class, only

-

-15

-00:00:40,720 --> 00:00:44,000

-contains a phone number. So it doesn't really do that much. What

-

-16

-00:00:44,000 --> 00:00:47,020

-we can do is therefore to fold the office class into the

-

-17

-00:00:47,020 --> 00:00:50,470

-person class, by simply moving its only field into the class. And so

-

-18

-00:00:50,470 --> 00:00:53,260

-the result will be this person class that also contains the information

-

-19

-00:00:53,260 --> 00:00:56,600

-about the office number, and overall a simpler design for the code.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/14 - Extract Method - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/14 - Extract Method - lang_en_vs4.srt
deleted file mode 100644
index 88769e0..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/14 - Extract Method - lang_en_vs4.srt
+++ /dev/null
@@ -1,163 +0,0 @@
-1

-00:00:00,060 --> 00:00:02,406

-The next re-factoring which is also the last one that we'll

-

-2

-00:00:02,406 --> 00:00:05,640

-see, extract method is one of the most commonly used re-factoring. As

-

-3

-00:00:05,640 --> 00:00:09,080

-it is applicable in many, many situations. The starting point is

-

-4

-00:00:09,080 --> 00:00:12,720

-a method that is too long and contains cohesive code fragments, that

-

-5

-00:00:12,720 --> 00:00:16,180

-really serve a single very specific purpose. So we start from

-

-6

-00:00:16,180 --> 00:00:19,270

-a cohesive code fragment in a large method. What we can do

-

-7

-00:00:19,270 --> 00:00:22,370

-in this case, is to create a method using that code fragment.

-

-8

-00:00:22,370 --> 00:00:25,620

-And then replacing the code fragment with a call to that method.

-

-9

-00:00:25,620 --> 00:00:28,390

-Let's look at this with an example. Here over this method called

-

-10

-00:00:28,390 --> 00:00:31,070

-print owing, and what it does, imagine that it does a lot

-

-11

-00:00:31,070 --> 00:00:33,850

-of operations here that I'm just not listing, and then it's got

-

-12

-00:00:33,850 --> 00:00:37,620

-a set of print statements. That are just printing a lot of details

-

-13

-00:00:37,620 --> 00:00:41,280

-about the owing information. And then again, a lot of code after

-

-14

-00:00:41,280 --> 00:00:44,270

-that. So what I could do in this case to simplify. The

-

-15

-00:00:44,270 --> 00:00:47,940

-method is to transform this set of statements. They are cohesive in

-

-16

-00:00:47,940 --> 00:00:51,120

-the sense that they do just one thing, they just print these details

-

-17

-00:00:51,120 --> 00:00:53,890

-into a method, and then I had, replace the statements with a

-

-18

-00:00:53,890 --> 00:00:56,740

-call to that method. Which is actually something similar to what we did

-

-19

-00:00:56,740 --> 00:00:59,900

-as part of some the previous re-factoring's. Here I'm showing the result.

-

-20

-00:00:59,900 --> 00:01:02,770

-So here is the method that I extracted. As you can see. It

-

-21

-00:01:02,770 --> 00:01:05,790

-contains the code that was previously here. I give you the meaningful

-

-22

-00:01:05,790 --> 00:01:09,080

-name, I called it printDetails so it's clear what it does. And now

-

-23

-00:01:09,080 --> 00:01:12,820

-the print owning method is simpler. Because I still have the remaining code

-

-24

-00:01:12,820 --> 00:01:17,200

-the one I didn't touch. But now this potentially long list of details.

-

-25

-00:01:17,200 --> 00:01:20,560

-Of prints, of details is not replaced by a single method code.

-

-26

-00:01:20,560 --> 00:01:23,550

-So a gain similar to the previous refactorings that we saw. If

-

-27

-00:01:23,550 --> 00:01:26,370

-we just look at the printing method, it's very easy to figure

-

-28

-00:01:26,370 --> 00:01:29,490

-out what this part does. Oh, print some details. And once more I

-

-29

-00:01:29,490 --> 00:01:33,060

-really want to stress this. If you don't care about how, this

-

-30

-00:01:33,060 --> 00:01:36,350

-is implemented and knowing that this print some details is enough. Then

-

-31

-00:01:36,350 --> 00:01:38,980

-you're done. You don't need to understand anything more. It's clear, it's

-

-32

-00:01:38,980 --> 00:01:42,430

-self explanatory. And if you'll need to look at what print details does,

-

-33

-00:01:42,430 --> 00:01:44,390

-you just go and look at print details. And you look at

-

-34

-00:01:44,390 --> 00:01:47,280

-it in isolation. So it's easier to understand what this does without having

-

-35

-00:01:47,280 --> 00:01:49,640

-to think the rest of the code. So once more the color we

-

-36

-00:01:49,640 --> 00:01:52,740

-factor in is just to improve your design, made the code more readable

-

-37

-00:01:52,740 --> 00:01:56,020

-Make the code more maintainable. And also keep in mind all of these,

-

-38

-00:01:56,020 --> 00:01:59,080

-are kind of small examples. You also always have to think about the

-

-39

-00:01:59,080 --> 00:02:02,560

-effect that this can have on larger codebases. It can really improve a

-

-40

-00:02:02,560 --> 00:02:05,280

-lot. The understandabililty, and maintainability of

-

-41

-00:02:05,280 --> 00:02:07,220

-your code. So in general, it's design.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/15 - Refactoring Demo - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/15 - Refactoring Demo - lang_en_vs4.srt
deleted file mode 100644
index 0559c88..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/15 - Refactoring Demo - lang_en_vs4.srt
+++ /dev/null
@@ -1,599 +0,0 @@
-1

-00:00:00,090 --> 00:00:03,110

-So now we saw, this set of re-factoring's. They're nice, but

-

-2

-00:00:03,110 --> 00:00:06,260

-how can we actually perform re-factoring's? In some cases you'll have to

-

-3

-00:00:06,260 --> 00:00:08,430

-do it by hand. And you'll do it in that case in

-

-4

-00:00:08,430 --> 00:00:10,880

-small steps, so that you can check at every step that you

-

-5

-00:00:10,880 --> 00:00:14,180

-didn't introduce any area. But there's also many cases in which at

-

-6

-00:00:14,180 --> 00:00:17,640

-least for the more standard re-factoring's, you can just apply, you can

-

-7

-00:00:17,640 --> 00:00:21,530

-just use a tool that actually supports re-factoring. I'm going to show

-

-8

-00:00:21,530 --> 00:00:24,550

-you how that works, into a specific ID, Eclipse through a demo.

-

-9

-00:00:26,120 --> 00:00:28,425

-To show you how Eclipse, can help in performing

-

-10

-00:00:28,425 --> 00:00:31,880

-re-factoring, in an automated way, I just opened the Eclipse

-

-11

-00:00:31,880 --> 00:00:35,050

-editor and I maximized it. So that we can look

-

-12

-00:00:35,050 --> 00:00:36,810

-at the code more clearly. And as you can see

-

-13

-00:00:36,810 --> 00:00:39,551

-here, I have this class. It's called Re-factorable, it's a

-

-14

-00:00:39,551 --> 00:00:43,550

-pretty indicative name. And what we're going to do, we're going to

-

-15

-00:00:43,550 --> 00:00:47,840

-try to apply the extract method re-factoring to this class.

-

-16

-00:00:47,840 --> 00:00:51,060

-And in particular, to parts of this print owing method.

-

-17

-00:00:51,060 --> 00:00:54,090

-So this is a matter than will print owing's,

-

-18

-00:00:54,090 --> 00:00:56,160

-as the name says. And it will do several things

-

-19

-00:00:56,160 --> 00:00:59,180

-such as, for example, printing a banner first, then

-

-20

-00:00:59,180 --> 00:01:03,650

-calculating the outstanding debts, and then printing some details. So

-

-21

-00:01:03,650 --> 00:01:06,980

-the starting point for an extract method re-fractoring, is

-

-22

-00:01:06,980 --> 00:01:10,650

-the identification of some cohesive code fragment. And here, for

-

-23

-00:01:10,650 --> 00:01:12,970

-instance, we can see that, if we can see there,

-

-24

-00:01:12,970 --> 00:01:16,350

-these three print statements. They are basically printing some banner,

-

-25

-00:01:16,350 --> 00:01:18,530

-for the method. And I also put a comment here

-

-26

-00:01:18,530 --> 00:01:21,160

-just to make that even more explicit. So this is a

-

-27

-00:01:21,160 --> 00:01:23,970

-perfect case in which we might want to just extract

-

-28

-00:01:23,970 --> 00:01:27,220

-this part, create an independent method, so that we can make

-

-29

-00:01:27,220 --> 00:01:31,410

-the code more readable and maintainable. So I select, the

-

-30

-00:01:31,410 --> 00:01:33,320

-part of the code, that I want to put in my

-

-31

-00:01:33,320 --> 00:01:37,080

-method. I invoke the contextual menu, and as you can see

-

-32

-00:01:37,080 --> 00:01:41,287

-there is a re-factor entry here. Here are some re-factoring's [UNKNOWN],

-

-33

-00:01:41,287 --> 00:01:45,039

-re-factoring's that I can apply, and I'm going to select extract

-

-34

-00:01:45,039 --> 00:01:48,120

-method. When I do that, Eclipse is going to ask me to

-

-35

-00:01:48,120 --> 00:01:51,610

-specify a method name. I'll just call this one print

-

-36

-00:01:51,610 --> 00:01:54,260

-banner. And as you can see, as soon as I do

-

-37

-00:01:54,260 --> 00:01:57,310

-that, Eclipse will show me the preview, for the method

-

-38

-00:01:57,310 --> 00:02:01,010

-that will be generated. I'm going to leave the access modifier. To

-

-39

-00:02:01,010 --> 00:02:03,290

-public and I'm not going to change anything else. So,

-

-40

-00:02:03,290 --> 00:02:07,760

-now when I click Ok. As you can see Eclipse modified

-

-41

-00:02:07,760 --> 00:02:10,669

-my code so that now I have the Print Banner method

-

-42

-00:02:10,669 --> 00:02:14,050

-down here that does exactly what that piece of code was doing

-

-43

-00:02:14,050 --> 00:02:16,090

-before. And I just have an invocation of the Print Banner

-

-44

-00:02:16,090 --> 00:02:19,440

-method, up here, where the code was before. And of course, this

-

-45

-00:02:19,440 --> 00:02:21,830

-is something that we could have done by hand. It's pretty

-

-46

-00:02:21,830 --> 00:02:25,480

-easy to do, but it's even easier, to do it using Eclipse's

-

-47

-00:02:25,480 --> 00:02:29,040

-capabilities. And this will become even more apparent, when we consider slightly

-

-48

-00:02:29,040 --> 00:02:32,866

-more complex case. So here, if we look at this piece of

-

-49

-00:02:32,866 --> 00:02:35,234

-code for instance, we can that see this code

-

-50

-00:02:35,234 --> 00:02:38,264

-prints some details, about the always. And the reason

-

-51

-00:02:38,264 --> 00:02:41,351

-why this case is likely more complicated, is because

-

-52

-00:02:41,351 --> 00:02:45,210

-this code needs to know about the value of outstanding.

-

-53

-00:02:45,210 --> 00:02:49,130

-And whereas that underscore name, is a member of

-

-54

-00:02:49,130 --> 00:02:51,150

-the class, and therefore will be available to the

-

-55

-00:02:51,150 --> 00:02:55,110

-method. Outstanding is a locker variable, so a method

-

-56

-00:02:55,110 --> 00:02:58,310

-different from print, oh it wouldn't know anything about outstanding.

-

-57

-00:02:58,310 --> 00:03:00,070

-So let's see what happens when we try to apply

-

-58

-00:03:00,070 --> 00:03:03,460

-a re-factoring for this code. So we go again here

-

-59

-00:03:03,460 --> 00:03:06,410

-to the re-factor menu, we select extract method, we will

-

-60

-00:03:06,410 --> 00:03:10,080

-pick a name again. So let's call it [SOUND] print details,

-

-61

-00:03:10,080 --> 00:03:12,660

-since this is what the code does. And as you

-

-62

-00:03:12,660 --> 00:03:17,270

-can see here, Eclipse was able to figure out, that outstanding

-

-63

-00:03:17,270 --> 00:03:20,290

-has to be a parameter, of this method. So if

-

-64

-00:03:20,290 --> 00:03:23,340

-you look at the signature here, this will be very clear.

-

-65

-00:03:23,340 --> 00:03:26,270

-So outstanding has to be passed to the matter because

-

-66

-00:03:26,270 --> 00:03:29,230

-it's a locker variable of the print owing method. so

-

-67

-00:03:29,230 --> 00:03:32,600

-it will not be visible to the other methods otherwise.

-

-68

-00:03:32,600 --> 00:03:34,990

-So since eclipse figured it out, all I have to do,

-

-69

-00:03:34,990 --> 00:03:37,630

-is to press Ok. And at this point what I

-

-70

-00:03:37,630 --> 00:03:41,280

-will have here is my new method, for in details

-

-71

-00:03:41,280 --> 00:03:45,140

-that takes outstanding as a parameter. And does exactly what

-

-72

-00:03:45,140 --> 00:03:48,880

-the code was doing before. And here, where the code was,

-

-73

-00:03:48,880 --> 00:03:51,630

-I will have my print details invocation, with outstanding

-

-74

-00:03:51,630 --> 00:03:54,930

-as a parameter. So now, let's continue to extract methods.

-

-75

-00:03:54,930 --> 00:03:58,470

-And let's look at a even more complex case. which

-

-76

-00:03:58,470 --> 00:04:01,550

-is, the one involving this piece of code. So this

-

-77

-00:04:01,550 --> 00:04:03,900

-piece of code, as you can see, will calculate

-

-78

-00:04:03,900 --> 00:04:07,820

-the value of the outstanding debt. Will calculate the owing's,

-

-79

-00:04:07,820 --> 00:04:09,600

-and the way in which it does that, is by

-

-80

-00:04:09,600 --> 00:04:14,080

-considering all the orders, that are part of this enumeration.

-

-81

-00:04:14,080 --> 00:04:16,519

-That is the declared here, and it will

-

-82

-00:04:16,519 --> 00:04:20,769

-compute for each one, of these orders, the amount,

-

-83

-00:04:20,769 --> 00:04:23,520

-and then added to outstanding. So what is the

-

-84

-00:04:23,520 --> 00:04:26,160

-additional complication here? Well, the additional complication here is

-

-85

-00:04:26,160 --> 00:04:29,520

-that this code needs to know, not only

-

-86

-00:04:29,520 --> 00:04:33,220

-about outstanding. It also needs to know, about this

-

-87

-00:04:33,220 --> 00:04:36,160

-enumeration, because this one is also a local variable.

-

-88

-00:04:36,160 --> 00:04:39,140

-And in addition to that, this code also has

-

-89

-00:04:39,140 --> 00:04:43,280

-some side effects. So outstanding, is modified as a

-

-90

-00:04:43,280 --> 00:04:46,600

-consequence of the execution of this code. So how can

-

-91

-00:04:46,600 --> 00:04:49,120

-we do that in the extracted method? Well lets

-

-92

-00:04:49,120 --> 00:04:51,000

-see what the clips will do and what the clips

-

-93

-00:04:51,000 --> 00:04:53,950

-will suggest. It will try to again re-factor this

-

-94

-00:04:53,950 --> 00:04:58,030

-code and extract the method. In this case as you

-

-95

-00:04:58,030 --> 00:05:01,160

-can see. The clips does two things. First of all,

-

-96

-00:05:01,160 --> 00:05:04,180

-it figures out as before, that there are some parameters,

-

-97

-00:05:04,180 --> 00:05:07,650

-that are needed for this method to operate correctly. The

-

-98

-00:05:07,650 --> 00:05:11,600

-enumeration e, as we said, and the outstanding variable. In

-

-99

-00:05:11,600 --> 00:05:14,880

-addition, if you look at the method signature Eclipse will

-

-100

-00:05:14,880 --> 00:05:17,490

-also figure out that this method has to return, a

-

-101

-00:05:17,490 --> 00:05:21,530

-double value. So what does this value correspond to? This

-

-102

-00:05:21,530 --> 00:05:24,700

-value corresponds to a new value of outstanding. So if

-

-103

-00:05:24,700 --> 00:05:27,490

-we, give a name to this method, so we just

-

-104

-00:05:27,490 --> 00:05:29,620

-use the name, [SOUND] that I put in the comment

-

-105

-00:05:29,620 --> 00:05:33,510

-over there. We click Ok, and this will create

-

-106

-00:05:33,510 --> 00:05:36,560

-a method by extracting the code. And here, where the

-

-107

-00:05:36,560 --> 00:05:39,100

-method used to be, we will have that the

-

-108

-00:05:39,100 --> 00:05:43,169

-value of outstanding is updated. Based on the return value

-

-109

-00:05:43,169 --> 00:05:46,260

-of calculate outstanding. So in the end if we

-

-110

-00:05:46,260 --> 00:05:48,730

-look at this code, you can see that if we

-

-111

-00:05:48,730 --> 00:05:51,980

-just focus, on this code it's very easy to

-

-112

-00:05:51,980 --> 00:05:55,150

-understand what it does. It prints the banner, it calculates

-

-113

-00:05:55,150 --> 00:05:59,180

-an outstanding value, and then it prints some details. And

-

-114

-00:05:59,180 --> 00:06:01,520

-in case we don't care, as I said before, about the

-

-115

-00:06:01,520 --> 00:06:04,840

-details of what these methods do, we're done. And if we

-

-116

-00:06:04,840 --> 00:06:07,740

-care about the details we can look at each matter individually.

-

-117

-00:06:07,740 --> 00:06:10,580

-And get exactly the same information that we got before,

-

-118

-00:06:10,580 --> 00:06:13,650

-in a sort of a separation of concerns kind of way,

-

-119

-00:06:13,650 --> 00:06:16,420

-by focusing on one problem at a time. So now let

-

-120

-00:06:16,420 --> 00:06:19,345

-me do one last thing. So let me modify the code,

-

-121

-00:06:19,345 --> 00:06:23,170

-slightly. So i'm going to go back, to the version of

-

-122

-00:06:23,170 --> 00:06:25,610

-the code before re-factoring. So this is what we had.

-

-123

-00:06:25,610 --> 00:06:32,480

-And I'm going to add, an additional variable here, [SOUND] called count,

-

-124

-00:06:32,480 --> 00:06:38,870

-which I initialize to zero. Here I'm going to increase, [SOUND]

-

-125

-00:06:38,870 --> 00:06:41,360

-the value of count at every iteration. And

-

-126

-00:06:41,360 --> 00:06:44,570

-finally, here I'm going to print out the value

-

-127

-00:06:44,570 --> 00:06:50,130

-of count. Okay, now that I have this code up. So let's imagine that I

-

-128

-00:06:50,130 --> 00:06:55,665

-want to, again as I did before, extract this matter. So, I'm going to

-

-129

-00:06:55,665 --> 00:06:58,430

-give you a second. Have a look at this and see, if you see

-

-130

-00:06:58,430 --> 00:07:02,170

-any problem with that. Feel free to stop the video, if you need more time.

-

-131

-00:07:07,350 --> 00:07:11,440

-So the problem here is that I have two side effects.

-

-132

-00:07:11,440 --> 00:07:14,820

-Both outstanding and count are modified. And therefore it's not really

-

-133

-00:07:14,820 --> 00:07:19,600

-possible to extract this method, and preserve the semantics of this

-

-134

-00:07:19,600 --> 00:07:23,260

-code. Let's see if Eclipse will be able to figure that out.

-

-135

-00:07:26,130 --> 00:07:28,950

-And it does. If we try to extract the matter here,

-

-136

-00:07:28,950 --> 00:07:32,250

-you'll tell us that's an ambiguous return value. The selected block

-

-137

-00:07:32,250 --> 00:07:35,800

-contains more than one assignment to look at variables. And the

-

-138

-00:07:35,800 --> 00:07:40,170

-affected variables are outstanding, just a Double and Count which is

-

-139

-00:07:40,170 --> 00:07:44,780

-an integer. So it will refuse to extract the method. So

-

-140

-00:07:44,780 --> 00:07:46,470

-at this point if we wanted to do that we have

-

-141

-00:07:46,470 --> 00:07:48,650

-we'll have to do the re-factoring a different way, but I

-

-142

-00:07:48,650 --> 00:07:51,110

-don't really want to get there. I want to conclude here,

-

-143

-00:07:51,110 --> 00:07:53,440

-and I hope this this little demo helped you

-

-144

-00:07:53,440 --> 00:07:55,310

-realize how useful it can be to use an

-

-145

-00:07:55,310 --> 00:07:58,270

-id that supports re-factoring that can automate this important

-

-146

-00:07:58,270 --> 00:08:00,160

-task. And I also encourage you to try to play

-

-147

-00:08:00,160 --> 00:08:03,170

-with this, and try to use different re-factoring's, on

-

-148

-00:08:03,170 --> 00:08:05,480

-your code. So as to get familiar with the kind

-

-149

-00:08:05,480 --> 00:08:08,060

-of re-factoring's that are supported by the ID. And

-

-150

-00:08:08,060 --> 00:08:10,800

-also with the re-factoring's themselves and how should be used.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/16 - Extract Method Refactoring Quiz - lang_en_vs5.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/16 - Extract Method Refactoring Quiz - lang_en_vs5.srt
deleted file mode 100644
index 07f5e44..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/16 - Extract Method Refactoring Quiz - lang_en_vs5.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,160 --> 00:00:02,580

-After the demo I would like to have a little quiz

-

-2

-00:00:02,580 --> 00:00:05,430

-about the extract method refactoring. And I would like to ask you

-

-3

-00:00:05,430 --> 00:00:08,910

-when is it appropriate to apply the extract method refactoring. Here I

-

-4

-00:00:08,910 --> 00:00:11,890

-have a set of possible scenarios. First one is when there is

-

-5

-00:00:11,890 --> 00:00:14,730

-duplicated code in two or more methods. When a class is too

-

-6

-00:00:14,730 --> 00:00:17,730

-large. When the names of two classes are too similar. Or when

-

-7

-00:00:17,730 --> 00:00:20,840

-a method is highly coupled with a class other than the one

-

-8

-00:00:20,840 --> 00:00:24,370

-where it is defined. So as usual, please mark all that apply.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/17 - Extract Method Refactoring Quiz Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/17 - Extract Method Refactoring Quiz Solution - lang_en_vs4.srt
deleted file mode 100644
index 6545de0..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/17 - Extract Method Refactoring Quiz Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,83 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,000

-The first scenario is the typical case in which it is

-

-2

-00:00:03,000 --> 00:00:07,040

-recommended to use the extract method refactoring, when there is duplicated code

-

-3

-00:00:07,040 --> 00:00:09,190

-in two or more methods and we want to take this

-

-4

-00:00:09,190 --> 00:00:12,420

-code and factor is out, and basically have the two methods called

-

-5

-00:00:12,420 --> 00:00:14,960

-a third method, which is the one we create using the

-

-6

-00:00:14,960 --> 00:00:18,060

-refactoring. When a class is too large, normally we don't want to

-

-7

-00:00:18,060 --> 00:00:21,330

-apply the extract. Extract method. Instead, in this cases, it is

-

-8

-00:00:21,330 --> 00:00:22,900

-usually more appropriate to use the

-

-9

-00:00:22,900 --> 00:00:26,420

-extract class or extract subclass refactorings.

-

-10

-00:00:26,420 --> 00:00:29,750

-Analogously, when the names of two classes are too similar, extracting a

-

-11

-00:00:29,750 --> 00:00:32,729

-method will normally not help much. And all we need to do

-

-12

-00:00:32,729 --> 00:00:35,810

-in case having too similar names is actually a problem. Is to

-

-13

-00:00:35,810 --> 00:00:39,600

-rename one of the two classes, or both, if we wish. Finally,

-

-14

-00:00:39,600 --> 00:00:42,530

-it is definitely appropriate to apply the extract method of refactoring in

-

-15

-00:00:42,530 --> 00:00:45,900

-cases in which a method is highly coupled with a class other

-

-16

-00:00:45,900 --> 00:00:48,330

-than the one where it is defined. In this case, which we

-

-17

-00:00:48,330 --> 00:00:51,740

-will discuss also later in the lesson, the extract method of refactoring

-

-18

-00:00:51,740 --> 00:00:55,710

-allows us to extract part of the metal to With the other class.

-

-19

-00:00:55,710 --> 00:00:58,690

-Then we can take the matter that we just extracted and move it

-

-20

-00:00:58,690 --> 00:01:01,880

-to the class where it actually belongs. So the extract method is one

-

-21

-00:01:01,880 --> 00:01:05,560

-of the two refactorings that it is appropriate to apply in these cases.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/18 - Refactoring Risks - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/18 - Refactoring Risks - lang_en_vs4.srt
deleted file mode 100644
index 0aae00c..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/18 - Refactoring Risks - lang_en_vs4.srt
+++ /dev/null
@@ -1,143 +0,0 @@
-1

-00:00:00,150 --> 00:00:02,520

-Now that we saw a number of refactorings, we also saw

-

-2

-00:00:02,520 --> 00:00:05,950

-how refactorings can be performed automatically within an ID, I'd like

-

-3

-00:00:05,950 --> 00:00:09,230

-to make you aware of some risks involved with the user

-

-4

-00:00:09,230 --> 00:00:12,510

-refactorings. Refactorings are a very powerful tool, but you also have to

-

-5

-00:00:12,510 --> 00:00:15,820

-be careful, first of all when you do more complex refactorings,

-

-6

-00:00:15,820 --> 00:00:18,540

-you may also introduce subtle faults. What, we don't really call

-

-7

-00:00:18,540 --> 00:00:21,040

-regression errors. You might change something in the class. You might

-

-8

-00:00:21,040 --> 00:00:23,140

-think that that's a behavior preserving

-

-9

-00:00:23,140 --> 00:00:25,200

-transformation when considering the whole code,

-

-10

-00:00:25,200 --> 00:00:27,860

-and instead your change is affecting the behavior of some of the

-

-11

-00:00:27,860 --> 00:00:30,980

-other parts of the code. So, it's introducing a regression that will cause

-

-12

-00:00:30,980 --> 00:00:32,670

-some other functionality, some other piece

-

-13

-00:00:32,670 --> 00:00:34,320

-of functionality some other feature, to

-

-14

-00:00:34,320 --> 00:00:37,190

-work incorrectly. So you always have to be careful, and as we saw

-

-15

-00:00:37,190 --> 00:00:39,750

-at the beginning one way to avoid that is to run tests.

-

-16

-00:00:39,750 --> 00:00:43,080

-Every time you make a refactoring every time you change your code and

-

-17

-00:00:43,080 --> 00:00:46,280

-refactor your code. So is to get the least some confidence in

-

-18

-00:00:46,280 --> 00:00:47,540

-the fact that your refactoring is

-

-19

-00:00:47,540 --> 00:00:50,290

-indeed behavior preserving. Also consider the refactoring

-

-20

-00:00:50,290 --> 00:00:54,680

-should not. Be abused. Refactoring should be performed when it's needed. It's

-

-21

-00:00:54,680 --> 00:00:57,570

-useful to improve the design of your code when you see problems

-

-22

-00:00:57,570 --> 00:00:59,680

-with the design of the code. Shouldn't just be applied for the

-

-23

-00:00:59,680 --> 00:01:02,720

-final code because you can apply, for example, easily within a tool.

-

-24

-00:01:02,720 --> 00:01:06,030

-So be careful not over doing it when you refactor. And for

-

-25

-00:01:06,030 --> 00:01:08,310

-the same reason that we mentioned at the beginning, you should be

-

-26

-00:01:08,310 --> 00:01:10,600

-particularly careful when you're using refactoring

-

-27

-00:01:10,600 --> 00:01:12,290

-for systems that are in production.

-

-28

-00:01:12,290 --> 00:01:15,260

-Because if you introduce a problem, before the system goes in production,

-

-29

-00:01:15,260 --> 00:01:16,750

-then you might be able to catch it earlier,

-

-30

-00:01:16,750 --> 00:01:19,780

-with testing. Or before it's released. But, if you introduce

-

-31

-00:01:19,780 --> 00:01:21,750

-a problem for a system in production, then you have

-

-32

-00:01:21,750 --> 00:01:24,440

-to issue a new version of the code. You'll be

-

-33

-00:01:24,440 --> 00:01:26,860

-affecting, you might be affecting some users, because the code

-

-34

-00:01:26,860 --> 00:01:29,050

-fails on their machine. So, you have to be twice

-

-35

-00:01:29,050 --> 00:01:31,190

-as careful, when you are doing refactoring, when you're changing

-

-36

-00:01:31,190 --> 00:01:33,010

-your code for a system that is already in production.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/19 - Cost of Refactoring - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/19 - Cost of Refactoring - lang_en_vs4.srt
deleted file mode 100644
index e09868d..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/19 - Cost of Refactoring - lang_en_vs4.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,080 --> 00:00:03,800

-Let's also talk about the cost of refactoring. Refactoring might be

-

-2

-00:00:03,800 --> 00:00:06,750

-free or almost free if you're using a tool to do refactoring

-

-3

-00:00:06,750 --> 00:00:08,570

-as we did in our demo. But that's not always the

-

-4

-00:00:08,570 --> 00:00:12,530

-case. In many cases, refactoring involves quite a bit of manual work

-

-5

-00:00:12,530 --> 00:00:16,309

-if you're doing some manual refactoring. And how much that costs

-

-6

-00:00:16,309 --> 00:00:19,460

-depends on how well the operations on the source code are supported.

-

-7

-00:00:19,460 --> 00:00:22,379

-You might have partial support from an ID. You might have complete

-

-8

-00:00:22,379 --> 00:00:25,017

-support, in which case it's greater. Or you might have no support,

-

-9

-00:00:25,017 --> 00:00:26,879

-in which case you have to be very careful about

-

-10

-00:00:26,879 --> 00:00:28,888

-how you change your code and how you check that you

-

-11

-00:00:28,888 --> 00:00:32,030

-didn't change the behavior of the code. There's also an additional

-

-12

-00:00:32,030 --> 00:00:34,460

-cost associated with refactoring. Remember

-

-13

-00:00:34,460 --> 00:00:36,990

-that refactoring relies heavily on testing

-

-14

-00:00:36,990 --> 00:00:39,808

-after each small step of refactoring. So you might have

-

-15

-00:00:39,808 --> 00:00:43,451

-to develop test cases, specifically to check your refactoring. And even

-

-16

-00:00:43,451 --> 00:00:47,163

-if you have an existing test because, for example, you're working

-

-17

-00:00:47,163 --> 00:00:50,235

-some agile context and therefore you develop a lot of UNIX

-

-18

-00:00:50,235 --> 00:00:53,550

-test cases before writing your code. And therefore you have a good

-

-19

-00:00:53,550 --> 00:00:56,635

-regression test with it you can use every time you modify your code.

-

-20

-00:00:56,635 --> 00:00:59,550

-Nevertheless, when you refactor and you change your code, you might need

-

-21

-00:00:59,550 --> 00:01:03,255

-to update your test so it's not only the development of the test

-

-22

-00:01:03,255 --> 00:01:05,379

-cases but also it's maintaining the test cases. And if you have

-

-23

-00:01:05,379 --> 00:01:07,970

-a lot of test cases, you have to maintain more test cases. So

-

-24

-00:01:07,970 --> 00:01:12,460

-that's a cost that is not directly visible but can affect quite

-

-25

-00:01:12,460 --> 00:01:15,800

-a bit the overall cost of refactoring and the overall cost of system

-

-26

-00:01:15,800 --> 00:01:18,342

-development therefore. And finally, you should not

-

-27

-00:01:18,342 --> 00:01:21,191

-under estimate the cost of documentation maintenance.

-

-28

-00:01:21,191 --> 00:01:24,241

-Applying refactoring may involve changes in interfaces,

-

-29

-00:01:24,241 --> 00:01:26,528

-names, for example, names of classes. And

-

-30

-00:01:26,528 --> 00:01:29,384

-when you make this kind of changes, you might need to update the documentation,

-

-31

-00:01:29,384 --> 00:01:30,890

-and that's also cost. It's something that

-

-32

-00:01:30,890 --> 00:01:32,900

-takes effort and therefore should be considered.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/2 - Introduction - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/2 - Introduction - lang_en_vs4.srt
deleted file mode 100644
index a50a2e5..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/2 - Introduction - lang_en_vs4.srt
+++ /dev/null
@@ -1,127 +0,0 @@
-1

-00:00:00,090 --> 00:00:02,790

-Let me start this lesson by discussing what is refactoring.

-

-2

-00:00:02,790 --> 00:00:06,590

-Refactoring is the process of applying transformation or refactoring to a

-

-3

-00:00:06,590 --> 00:00:09,320

-program. So as to obtain a refactor program. With an

-

-4

-00:00:09,320 --> 00:00:12,850

-improved design but with same functionality as the original program. So

-

-5

-00:00:12,850 --> 00:00:15,520

-key aspect of refactoring is the fact that refactoring should

-

-6

-00:00:15,520 --> 00:00:18,150

-be somatic to perserving So what is the main goal of

-

-7

-00:00:18,150 --> 00:00:22,030

-refactoring? The goal is to keep the program readable, understandable, and

-

-8

-00:00:22,030 --> 00:00:25,260

-maintainable as we evolve it. And to do this by eliminating

-

-9

-00:00:25,260 --> 00:00:28,530

-small problems soon, so that you can avoid big trouble later. And

-

-10

-00:00:28,530 --> 00:00:31,750

-I want to stress once more a key feature of refactoring, which

-

-11

-00:00:31,750 --> 00:00:34,790

-is the fact that it is behavior per serving. But how can

-

-12

-00:00:34,790 --> 00:00:38,130

-we ensure that the refactoring is behavior per serving? In other words,

-

-13

-00:00:38,130 --> 00:00:40,980

-how can we ensure that the program does the same thing before

-

-14

-00:00:40,980 --> 00:00:43,560

-and after applying a refactoring. So what we would like to do

-

-15

-00:00:43,560 --> 00:00:47,160

-is to have some guarantee that, that happens. And unfortunately in general,

-

-16

-00:00:47,160 --> 00:00:50,360

-there are no guarantees. But something we can do is to test

-

-17

-00:00:50,360 --> 00:00:53,690

-the code. For example, we can write tests that exercise the

-

-18

-00:00:53,690 --> 00:00:56,390

-parts of the program affected by the refactoring, and if we're in

-

-19

-00:00:56,390 --> 00:00:59,430

-a [INAUDIBLE] context, we might already have plenty of test cases

-

-20

-00:00:59,430 --> 00:01:01,914

-that exercise that part of the code. So we might just have

-

-21

-00:01:01,914 --> 00:01:04,780

-to rerun the test cases after the refactoring. And in fact,

-

-22

-00:01:04,780 --> 00:01:07,930

-that's a very advantageous situation, and that's a very good use of

-

-23

-00:01:07,930 --> 00:01:10,970

-existing test cases. And I want to make sure that you remember,

-

-24

-00:01:10,970 --> 00:01:15,500

-and that you beware that tests provide no guarantees. Testing can only

-

-25

-00:01:15,500 --> 00:01:18,990

-show the presence of defects, but cannot demonstrate their absence.

-

-26

-00:01:18,990 --> 00:01:21,090

-So we can use testing to get confidence in our

-

-27

-00:01:21,090 --> 00:01:23,990

-refactorings, but we can't really guarantee that the refactorings are

-

-28

-00:01:23,990 --> 00:01:26,820

-behavior preserving. I'd also like to point out that for some

-

-29

-00:01:26,820 --> 00:01:30,100

-simple refactoring, we can use a static analysis to actually

-

-30

-00:01:30,100 --> 00:01:33,160

-provide these guarantees. And in fact we will see examples of

-

-31

-00:01:33,160 --> 00:01:37,050

-such refactorings that are incorporated into IDs and that leverage

-

-32

-00:01:37,050 --> 00:01:40,070

-these kinds of analysis to perform refactoring in a safe way.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/20 - When Not To Refactor - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/20 - When Not To Refactor - lang_en_vs4.srt
deleted file mode 100644
index 53938de..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/20 - When Not To Refactor - lang_en_vs4.srt
+++ /dev/null
@@ -1,103 +0,0 @@
-1

-00:00:00,088 --> 00:00:02,860

-Now I want to conclude this discussion on refactoring by telling you

-

-2

-00:00:02,860 --> 00:00:07,190

-when you should not refactor. One first clear case is when

-

-3

-00:00:07,190 --> 00:00:10,410

-your code is broken. I want to make it very clear, refactoring

-

-4

-00:00:10,410 --> 00:00:13,450

-is not a way to fix your code in terms of its

-

-5

-00:00:13,450 --> 00:00:16,250

-functionality. It's a way to improve the design of your code.

-

-6

-00:00:16,250 --> 00:00:19,040

-So if your code does not compile or does not run

-

-7

-00:00:19,040 --> 00:00:21,780

-in a stable way, it's probably better to throw it away

-

-8

-00:00:21,780 --> 00:00:25,250

-and rewrite it rather then trying to refactor it. By definition refactoring

-

-9

-00:00:25,250 --> 00:00:26,780

-should maintain the functionality of the

-

-10

-00:00:26,780 --> 00:00:28,360

-system. It should be behavior preserving.

-

-11

-00:00:28,360 --> 00:00:31,100

-So if the code was broken before, it, it's probably going to be broken

-

-12

-00:00:31,100 --> 00:00:33,950

-afterwards as well. You may also want to avoid refactoring when a

-

-13

-00:00:33,950 --> 00:00:37,370

-deadline is close. Well, first of all, because refactoring might take a long

-

-14

-00:00:37,370 --> 00:00:41,360

-time and therefore might introduce risks of being late for the deadline.

-

-15

-00:00:41,360 --> 00:00:44,555

-And also, because of what we said before about introducing problems, you don't

-

-16

-00:00:44,555 --> 00:00:47,780

-want to introduce problems that might take you time to fix right before a

-

-17

-00:00:47,780 --> 00:00:50,660

-deadline. So if the deadline is too close, you might want to avoid

-

-18

-00:00:50,660 --> 00:00:54,310

-refactoring the code at that point. And finally, do not refactor if there

-

-19

-00:00:54,310 --> 00:00:58,430

-is no reason to. As we said before, you should refactor on demand. You

-

-20

-00:00:58,430 --> 00:01:00,960

-see a problem with the design of your code, with the structure of your

-

-21

-00:01:00,960 --> 00:01:03,790

-code, it's okay to refactor. If the code is fine, there is no reason

-

-22

-00:01:03,790 --> 00:01:06,470

-to refactor. I know that refactoring is fine, but you don't want to do

-

-23

-00:01:06,470 --> 00:01:09,280

-it all the time. The next thing I want to discuss, after discussing when

-

-24

-00:01:09,280 --> 00:01:12,970

-not to refactor, is when to refactor without an indication that will tell us

-

-25

-00:01:12,970 --> 00:01:15,820

-that it's time to refactor the code. And that leads us to the discussion

-

-26

-00:01:15,820 --> 00:01:17,280

-of a very interesting concept.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/21 - Bad Smells - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/21 - Bad Smells - lang_en_vs4.srt
deleted file mode 100644
index 240d37b..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/21 - Bad Smells - lang_en_vs4.srt
+++ /dev/null
@@ -1,99 +0,0 @@
-1

-00:00:00,070 --> 00:00:03,450

-The concept of bad smells. What are bad smells? Well, we

-

-2

-00:00:03,450 --> 00:00:06,700

-mentioned earlier that refactoring is typically applied when there is something

-

-3

-00:00:06,700 --> 00:00:09,130

-that does not look right, does not feel right in the

-

-4

-00:00:09,130 --> 00:00:12,260

-code. And that's exactly what bad smells are. Bad smells, or

-

-5

-00:00:12,260 --> 00:00:15,320

-code smells if you wish, are symptoms in the code of

-

-6

-00:00:15,320 --> 00:00:18,868

-a program that might indicate deeper problems. So there might be

-

-7

-00:00:18,868 --> 00:00:21,775

-parts of my system, classes in my systems, that just don't

-

-8

-00:00:21,775 --> 00:00:25,309

-smell right, and it feels like there's, there might be something wrong

-

-9

-00:00:25,309 --> 00:00:29,010

-with them. And if you are an experienced developer just like Brad,

-

-10

-00:00:29,010 --> 00:00:31,320

-you'll be able to figure out there is something wrong with the

-

-11

-00:00:31,320 --> 00:00:33,950

-classes. You'll be able to smell that there's something wrong and you'll

-

-12

-00:00:33,950 --> 00:00:36,880

-do something about it. And I want to mention one more, just to make

-

-13

-00:00:36,880 --> 00:00:39,270

-sure that we're all on the same page here. That these bad

-

-14

-00:00:39,270 --> 00:00:43,070

-smells are usually not bugs and don't prevent the program from functioning. They

-

-15

-00:00:43,070 --> 00:00:46,190

-however indicate weaknesses in the design of the system that might cause

-

-16

-00:00:46,190 --> 00:00:48,480

-problems during maintenance. In other words,

-

-17

-00:00:48,480 --> 00:00:50,440

-they might make the code less maintainable,

-

-18

-00:00:50,440 --> 00:00:53,650

-harder to understand, and so on. Just like refactorings,

-

-19

-00:00:53,650 --> 00:00:56,610

-there's also many possible different bad smells. So what

-

-20

-00:00:56,610 --> 00:00:59,160

-I'm providing here is just a possible list of

-

-21

-00:00:59,160 --> 00:01:02,190

-some very common bad smells. And you can find plenty

-

-22

-00:01:02,190 --> 00:01:04,349

-of information on this online. So what I want

-

-23

-00:01:04,349 --> 00:01:06,910

-to do next is just to cover before finishing the

-

-24

-00:01:06,910 --> 00:01:08,700

-lesson a few of those to show you some

-

-25

-00:01:08,700 --> 00:01:11,140

-examples of smells and what you can do about them.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/22 - Bad Smell Examples - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/22 - Bad Smell Examples - lang_en_vs4.srt
deleted file mode 100644
index b26a698..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/22 - Bad Smell Examples - lang_en_vs4.srt
+++ /dev/null
@@ -1,263 +0,0 @@
-1

-00:00:00,100 --> 00:00:03,080

-The first example I want to mention is this called duplicated

-

-2

-00:00:03,080 --> 00:00:06,950

-code. So what happens here what the symptom is, is that you

-

-3

-00:00:06,950 --> 00:00:10,400

-have the same piece of code. The same fragment of code or

-

-4

-00:00:10,400 --> 00:00:14,570

-code structure replicated in more than one place. And that's pretty common

-

-5

-00:00:14,570 --> 00:00:16,880

-when we do for example copy and paste programming. Is something

-

-6

-00:00:16,880 --> 00:00:19,730

-that we mention at the beginning of the lessons. So for example

-

-7

-00:00:19,730 --> 00:00:22,780

-we are just instead reimplementing a piece of functionality we know we

-

-8

-00:00:22,780 --> 00:00:25,510

-already have. We simply copy from a different part of the code.

-

-9

-00:00:25,510 --> 00:00:27,760

-So what do you do if you have duplicated code? This can

-

-10

-00:00:27,760 --> 00:00:30,100

-be a problem over time because we might end up with a lot

-

-11

-00:00:30,100 --> 00:00:34,480

-of duplication in your system. You can use the extract method. Refactoring that

-

-12

-00:00:34,480 --> 00:00:37,610

-we just saw, and basically create a method that has exactly the same

-

-13

-00:00:37,610 --> 00:00:40,700

-function as this fragment of code and then replace the fragment of code

-

-14

-00:00:40,700 --> 00:00:43,030

-with an invocation to run and you will do it in all the

-

-15

-00:00:43,030 --> 00:00:47,520

-places where the code is duplicated. That simply finds the code and favors

-

-16

-00:00:47,520 --> 00:00:48,660

-reuse, because there can be more

-

-17

-00:00:48,660 --> 00:00:51,050

-places that benefit from that additional method.

-

-18

-00:00:51,050 --> 00:00:54,960

-Especially if it implements some popular piece of functionality. Another example

-

-19

-00:00:54,960 --> 00:00:57,930

-of best mal a typical one is the long method. So you

-

-20

-00:00:57,930 --> 00:01:00,530

-have a very long method with a lot of statements. And we

-

-21

-00:01:00,530 --> 00:01:03,570

-know that the longer procedure, the more difficult it is to understand

-

-22

-00:01:03,570 --> 00:01:05,650

-it and maintain it. So what I'm going to do in this

-

-23

-00:01:05,650 --> 00:01:08,690

-case is to factor in such as an extract method or a

-

-24

-00:01:08,690 --> 00:01:12,900

-decompose conditional to make the code simpler, shorten it. And extract some

-

-25

-00:01:12,900 --> 00:01:16,450

-of the functionality into other methods. So basically break down the method

-

-26

-00:01:16,450 --> 00:01:20,180

-in smaller methods that are more cohesive. Another typical example

-

-27

-00:01:20,180 --> 00:01:22,380

-of best mail which is something that can happen very

-

-28

-00:01:22,380 --> 00:01:25,720

-commonly during maintenance, is that you keep adding functionality to

-

-29

-00:01:25,720 --> 00:01:28,470

-a class and you end up with a large class. So

-

-30

-00:01:28,470 --> 00:01:32,410

-class is clearly to big. It contains too many fields

-

-31

-00:01:32,410 --> 00:01:35,620

-too many methods, and is just too complex to understand. This

-

-32

-00:01:35,620 --> 00:01:37,990

-case the obvious solution is to use the extract class

-

-33

-00:01:37,990 --> 00:01:42,230

-or subclass and basically break down the class in multiple classes.

-

-34

-00:01:42,230 --> 00:01:45,390

-Each one with a more cohesive piece of functionality. So, the

-

-35

-00:01:45,390 --> 00:01:46,930

-classes are more cohesive, are more

-

-36

-00:01:46,930 --> 00:01:48,360

-understandable, and the overall structure The

-

-37

-00:01:48,360 --> 00:01:52,440

-structure of the system is improved. Shotgun surgery is an interesting smell

-

-38

-00:01:52,440 --> 00:01:55,980

-and the case here is we are in a situation and you,

-

-39

-00:01:55,980 --> 00:01:58,270

-probably will happen to you, it definitely happened to me, in

-

-40

-00:01:58,270 --> 00:02:01,110

-which every time you make some kind of change to the system

-

-41

-00:02:01,110 --> 00:02:03,850

-you have to make many little changes. All over the place to

-

-42

-00:02:03,850 --> 00:02:07,280

-many different classes. And this can be a symptom of the fact

-

-43

-00:02:07,280 --> 00:02:11,080

-that the functionality is spread among these different classes. So

-

-44

-00:02:11,080 --> 00:02:13,610

-there's too much coupling between the classes and too little

-

-45

-00:02:13,610 --> 00:02:16,540

-cohesion within the classes. Also in this case you can

-

-46

-00:02:16,540 --> 00:02:19,540

-use refactoring, for example by using the move method or move

-

-47

-00:02:19,540 --> 00:02:22,650

-field or inline class to bring the pieces of related

-

-48

-00:02:22,650 --> 00:02:26,470

-functionality together. So that your resulting classes are more cohesive, you

-

-49

-00:02:26,470 --> 00:02:29,220

-reduce the dependencies between the different classes, and you address

-

-50

-00:02:29,220 --> 00:02:32,305

-this problem. Because at this point, each class is much more

-

-51

-00:02:32,305 --> 00:02:34,020

-self-contained and therefore it can be

-

-52

-00:02:34,020 --> 00:02:36,100

-modified by itself without having to affect

-

-53

-00:02:36,100 --> 00:02:38,560

-the rest of the system. The last smell I want to mention is

-

-54

-00:02:38,560 --> 00:02:42,040

-one I really like, is the feature envy, and it refers to a

-

-55

-00:02:42,040 --> 00:02:45,340

-method that seems more interested In a class other than the one it

-

-56

-00:02:45,340 --> 00:02:48,370

-belongs to. So for example this method is using a lot of public

-

-57

-00:02:48,370 --> 00:02:51,030

-fields of another class, is calling a lot of methods of the other

-

-58

-00:02:51,030 --> 00:02:53,830

-class. And so in this case the solution is really clear. What you

-

-59

-00:02:53,830 --> 00:02:57,420

-want to do it to perform the extract method refactoring and then the move

-

-60

-00:02:57,420 --> 00:02:59,680

-method refactoring so as to take the jealous

-

-61

-00:02:59,680 --> 00:03:01,210

-method out of the class where it doesn't

-

-62

-00:03:01,210 --> 00:03:04,770

-belong and get it home. To the class where it really belongs and once more the

-

-63

-00:03:04,770 --> 00:03:06,790

-effect of this is that you decrease the

-

-64

-00:03:06,790 --> 00:03:09,990

-coupling between the two classes and therefore you

-

-65

-00:03:09,990 --> 00:03:11,910

-have a better system and also you eliminate

-

-66

-00:03:11,910 --> 00:03:13,150

-the envy. Which is always a good thing.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/23 - Bad Smell Quiz - lang_en_vs3.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/23 - Bad Smell Quiz - lang_en_vs3.srt
deleted file mode 100644
index 971d639..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/23 - Bad Smell Quiz - lang_en_vs3.srt
+++ /dev/null
@@ -1,31 +0,0 @@
-1

-00:00:00,100 --> 00:00:01,620

-So now, I would like for you to tell me

-

-2

-00:00:01,620 --> 00:00:04,810

-which of the following can be considered bad smells in

-

-3

-00:00:04,810 --> 00:00:07,320

-the context of refactoring. The fact that the program takes

-

-4

-00:00:07,320 --> 00:00:10,070

-too long to execute? The fact that method M in class

-

-5

-00:00:10,070 --> 00:00:12,460

-C is very long? Or the, the fact that Class

-

-6

-00:00:12,460 --> 00:00:16,120

-Cat and Dog are subclasses of class Animal? Or finally the

-

-7

-00:00:16,120 --> 00:00:18,960

-fact that every time we modify method M1 we also

-

-8

-00:00:18,960 --> 00:00:22,120

-need to modify method M2? So please mark all that apply.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/24 - Bad Smell Quiz Solution - lang_en_vs3.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/24 - Bad Smell Quiz Solution - lang_en_vs3.srt
deleted file mode 100644
index 2773116..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/24 - Bad Smell Quiz Solution - lang_en_vs3.srt
+++ /dev/null
@@ -1,75 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,090

-So let's look at this one by one. The fact the program takes

-

-2

-00:00:03,090 --> 00:00:06,620

-too long to execute is not really a bad smell. It probably indicates

-

-3

-00:00:06,620 --> 00:00:08,800

-some problem with the code and the fact that we might need to

-

-4

-00:00:08,800 --> 00:00:11,420

-modify the code to make it more efficient, but it's not something that

-

-5

-00:00:11,420 --> 00:00:14,030

-we will normally classify it as a bad smell, so we're not going to

-

-6

-00:00:14,030 --> 00:00:17,850

-mark it. The second one, conversely, is definitely a bad smell. The fact

-

-7

-00:00:17,850 --> 00:00:21,700

-that the method is too long is a typical example of bad smell

-

-8

-00:00:21,700 --> 00:00:25,000

-and one in which we might want to apply some refactoring, for example,

-

-9

-00:00:25,000 --> 00:00:26,450

-the extract method or the

-

-10

-00:00:26,450 --> 00:00:29,240

-decomposed conditional refactorings. There's definitely

-

-11

-00:00:29,240 --> 00:00:32,159

-nothing wrong with the fact that the classes cat and dog

-

-12

-00:00:32,159 --> 00:00:35,600

-are subclasses of class animal. Actually, that sounds pretty appropriate, so

-

-13

-00:00:35,600 --> 00:00:38,270

-this is not a problem and definitely not a bad smell.

-

-14

-00:00:38,270 --> 00:00:40,990

-Whereas the fact that every time we modify method M1,

-

-15

-00:00:40,990 --> 00:00:44,210

-we also need to modify method some other method M2 as

-

-16

-00:00:44,210 --> 00:00:46,690

-a typical example of bad smell. So this can actually be

-

-17

-00:00:46,690 --> 00:00:50,590

-considered a specific example of what we just called "shotgun surgery."

-

-18

-00:00:50,590 --> 00:00:52,500

-So it is a case in which we might want to

-

-19

-00:00:52,500 --> 00:00:55,750

-use, for instance, the move method refactoring to fix the issue.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/3 - Introduction - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/3 - Introduction - lang_en_vs4.srt
deleted file mode 100644
index 7631180..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/3 - Introduction - lang_en_vs4.srt
+++ /dev/null
@@ -1,27 +0,0 @@
-1

-00:00:00,120 --> 00:00:04,280

-So let's have a small quiz and see whether you can remember why can testing

-

-2

-00:00:04,280 --> 00:00:06,250

-guarantee that that a refactoring is behavior is

-

-3

-00:00:06,250 --> 00:00:08,590

-preserving. So why testing can only show the

-

-4

-00:00:08,590 --> 00:00:11,080

-absence of defects and not their presence?

-

-5

-00:00:11,080 --> 00:00:12,960

-Is that because testing and refactoring are different

-

-6

-00:00:12,960 --> 00:00:15,980

-activities? Because testing is inherently incomplete? Or, just

-

-7

-00:00:15,980 --> 00:00:19,560

-because testers are often inexperienced? Make your choice.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/4 - Introduction Solution - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/4 - Introduction Solution - lang_en_vs4.srt
deleted file mode 100644
index 7888f8d..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/4 - Introduction Solution - lang_en_vs4.srt
+++ /dev/null
@@ -1,39 +0,0 @@
-1

-00:00:00,220 --> 00:00:03,180

-And the reason for this is because testing is inherently

-

-2

-00:00:03,180 --> 00:00:06,080

-incomplete. So let me re-size this a little bit, so that

-

-3

-00:00:06,080 --> 00:00:08,340

-I can make room for an illustration. And what I'm

-

-4

-00:00:08,340 --> 00:00:11,170

-going to show you here is just a reminder, that when we

-

-5

-00:00:11,170 --> 00:00:15,380

-test, we have a huge virtually infinite input domain, and

-

-6

-00:00:15,380 --> 00:00:17,956

-we have to derive from this input domain a few test

-

-7

-00:00:17,956 --> 00:00:21,330

-cases. By picking specific inputs in the domain, and of

-

-8

-00:00:21,330 --> 00:00:25,260

-course, corresponding outputs. And so what happens normally is that these

-

-9

-00:00:25,260 --> 00:00:28,280

-test cases represent the teeny tiny fraction of

-

-10

-00:00:28,280 --> 00:00:30,920

-the domain, and therefore testing is always incomplete.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/5 - Reasons to Refactor - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/5 - Reasons to Refactor - lang_en_vs4.srt
deleted file mode 100644
index 1da50e6..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/5 - Reasons to Refactor - lang_en_vs4.srt
+++ /dev/null
@@ -1,131 +0,0 @@
-1

-00:00:00,230 --> 00:00:02,000

-We saw at the beginning of the lesson, what are the

-

-2

-00:00:02,000 --> 00:00:05,490

-goals of refactoring? Or what are the reasons ,why we need to

-

-3

-00:00:05,490 --> 00:00:09,130

-refactor in the first place? The first reason is that requirements

-

-4

-00:00:09,130 --> 00:00:12,370

-change, and when the requirements change, we often need to change our

-

-5

-00:00:12,370 --> 00:00:16,356

-design accordingly. In other cases if any of the requirements unchange,

-

-6

-00:00:16,356 --> 00:00:19,690

-we might need to improve our design. And this happens for many

-

-7

-00:00:19,690 --> 00:00:22,300

-reasons. For example, we need to add a new feature, we

-

-8

-00:00:22,300 --> 00:00:25,330

-want to make the code more maintainable, and also in general programmers

-

-9

-00:00:25,330 --> 00:00:28,110

-don't come up with the best design the first time. So they might

-

-10

-00:00:28,110 --> 00:00:31,130

-need to adapt it after the fact. And the final reason I want to

-

-11

-00:00:31,130 --> 00:00:33,040

-mention is sloppiness, and to some

-

-12

-00:00:33,040 --> 00:00:35,700

-extent laziness, of programmers. And a typical

-

-13

-00:00:35,700 --> 00:00:38,520

-example of this is something that we all have done, which is copy

-

-14

-00:00:38,520 --> 00:00:41,890

-and paste programming. So instead of rewriting a new piece of code, because

-

-15

-00:00:41,890 --> 00:00:44,620

-we know that there is some code in some other parts for the

-

-16

-00:00:44,620 --> 00:00:47,900

-program that does a similar thing, we'll just copy the code over. And

-

-17

-00:00:47,900 --> 00:00:51,080

-before we know, we end up with tons of copies of the same functionality.

-

-18

-00:00:51,080 --> 00:00:54,150

-And when that happens, a good way of consolidating that code and

-

-19

-00:00:54,150 --> 00:00:57,580

-extracting that functionality is to use refactoring, for example, by creating a

-

-20

-00:00:57,580 --> 00:01:01,080

-method or a class that provides the functionality. And we'll see specific

-

-21

-00:01:01,080 --> 00:01:03,830

-examples of that. A question I would like to ask at this

-

-22

-00:01:03,830 --> 00:01:07,330

-point of the class is whether you have used refactoring before? So

-

-23

-00:01:07,330 --> 00:01:09,690

-I want you to take a second and think about it. And

-

-24

-00:01:09,690 --> 00:01:12,590

-no matter what you're history is, if you ever coded I bet

-

-25

-00:01:12,590 --> 00:01:16,180

-you any money that the answer is yes, you have done refactoring.

-

-26

-00:01:16,180 --> 00:01:17,300

-What do I mean? I'm going to give you an

-

-27

-00:01:17,300 --> 00:01:19,610

-example. I'm sure you renamed the class or a

-

-28

-00:01:19,610 --> 00:01:22,190

-method or change the name of some variables in

-

-29

-00:01:22,190 --> 00:01:25,490

-the code before. That's refactoring. Even something as simple as

-

-30

-00:01:25,490 --> 00:01:28,030

-renaming a class is refactoring, because, for example, it

-

-31

-00:01:28,030 --> 00:01:30,230

-might help you making your code more understandable. And of

-

-32

-00:01:30,230 --> 00:01:32,520

-course I'll admit that in this case, this is

-

-33

-00:01:32,520 --> 00:01:35,690

-a trivial refactoring, and there are much more interesting ones.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/6 - History of Refactoring - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/6 - History of Refactoring - lang_en_vs4.srt
deleted file mode 100644
index 3405b65..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/6 - History of Refactoring - lang_en_vs4.srt
+++ /dev/null
@@ -1,171 +0,0 @@
-1

-00:00:00,110 --> 00:00:02,340

-So if you follow my class so far, you know that

-

-2

-00:00:02,340 --> 00:00:04,570

-I like to give a little bit of history when I talk

-

-3

-00:00:04,570 --> 00:00:06,900

-about a specific topic. So I'm going to do the same also

-

-4

-00:00:06,900 --> 00:00:09,900

-in this case for refactoring. I'm going to start by mentioning, the fact

-

-5

-00:00:09,900 --> 00:00:13,440

-that refactoring is something that programmers have always done. I gave

-

-6

-00:00:13,440 --> 00:00:16,300

-you a trivial example just a minute ago of what refactoring is.

-

-7

-00:00:16,300 --> 00:00:18,080

-So even more complicated refactorings are

-

-8

-00:00:18,080 --> 00:00:20,880

-something that are commonplace for developers.

-

-9

-00:00:20,880 --> 00:00:23,110

-Somehow refactoring is especially important in

-

-10

-00:00:23,110 --> 00:00:25,240

-the context of object-oriented languages and

-

-11

-00:00:25,240 --> 00:00:28,080

-probably it's because the object-oriented features are well suited to

-

-12

-00:00:28,080 --> 00:00:31,640

-make designs flexible and reusable. Because of the fact that help

-

-13

-00:00:31,640 --> 00:00:35,120

-encapsulation, information hiding, and so they make it easier to

-

-14

-00:00:35,120 --> 00:00:38,330

-modify something without changing the functionality that it provides to the

-

-15

-00:00:38,330 --> 00:00:40,960

-outside world. However, you should keep in mind that refactoring

-

-16

-00:00:40,960 --> 00:00:44,330

-is really not specific to object oriented languages, you can also

-

-17

-00:00:44,330 --> 00:00:47,320

-refactor other languages, it's just more common to see it in

-

-18

-00:00:47,320 --> 00:00:50,450

-that context. So one of the first examples of a specific

-

-19

-00:00:50,450 --> 00:00:53,630

-discussion of what the refactorings are is Opdyke's PhD

-

-20

-00:00:53,630 --> 00:00:57,710

-thesis in 1990. Which discusses refactorings for small talk.

-

-21

-00:00:57,710 --> 00:00:59,360

-And some of you might be familiar with small

-

-22

-00:00:59,360 --> 00:01:02,600

-talk, which is a specific objectory language. And in

-

-23

-00:01:02,600 --> 00:01:06,590

-more recent times, refactoring's becoming increasing popular due to

-

-24

-00:01:06,590 --> 00:01:10,370

-lightweight development methodoogies, due to agile development, which is

-

-25

-00:01:10,370 --> 00:01:12,630

-something that we just discussed in this class. For

-

-26

-00:01:12,630 --> 00:01:15,830

-example, when we talked about extreme programming, we mentioned refactoring

-

-27

-00:01:15,830 --> 00:01:17,950

-a few times. And the reason why its so popular

-

-28

-00:01:17,950 --> 00:01:20,690

-is because re-factoring is one of the practices that help.

-

-29

-00:01:20,690 --> 00:01:24,780

-Making changes less expensive. And therefore adapt to changing requirements

-

-30

-00:01:24,780 --> 00:01:26,980

-and changing environments more quickly.

-

-31

-00:01:26,980 --> 00:01:29,140

-And continuing with historical perspective, one

-

-32

-00:01:29,140 --> 00:01:31,760

-of the milestones in the history of re-factoring [INAUDIBLE] is

-

-33

-00:01:31,760 --> 00:01:34,660

-a book by Martin Fowler. This is a book entitled

-

-34

-00:01:34,660 --> 00:01:37,610

-Improving the Design of Existing [INAUDIBLE]. And it contains a

-

-35

-00:01:37,610 --> 00:01:41,320

-catalog of refactorings, a list of bad smells, in code, and

-

-36

-00:01:41,320 --> 00:01:43,450

-we're going to see what that mean exactly. Nothing to

-

-37

-00:01:43,450 --> 00:01:45,570

-do with other kinds of bad smells. It talks about

-

-38

-00:01:45,570 --> 00:01:48,900

-guidelines on when to apply refactoring. And finally, which is

-

-39

-00:01:48,900 --> 00:01:52,540

-very useful, it provides example of code, before and after.

-

-40

-00:01:52,540 --> 00:01:54,660

-Applying the refactoring and we're going to use more of the

-

-41

-00:01:54,660 --> 00:01:57,190

-same style when discussing refactoring in the rest of this

-

-42

-00:01:57,190 --> 00:02:01,090

-lesson. More specifically what we're discussing next, are some examples

-

-43

-00:02:01,090 --> 00:02:05,130

-of refactoring and also some examples of code bad smells.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/7 - Types of Refactorings - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/7 - Types of Refactorings - lang_en_vs4.srt
deleted file mode 100644
index b646b14..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/7 - Types of Refactorings - lang_en_vs4.srt
+++ /dev/null
@@ -1,43 +0,0 @@
-1

-00:00:00,170 --> 00:00:03,630

-There are many refactorings in Fowler's book, and what I'm

-

-2

-00:00:03,630 --> 00:00:06,480

-showing here is just a partial list. And we're not going to

-

-3

-00:00:06,480 --> 00:00:08,930

-have time to go through the complete list of refactorings,

-

-4

-00:00:08,930 --> 00:00:10,830

-so what I'm going to do instead, I'm just going to pick a

-

-5

-00:00:10,830 --> 00:00:13,870

-few of those, but I'm going to explain in more depth,

-

-6

-00:00:13,870 --> 00:00:16,600

-and for which I'm going to provide some examples. In particular, we're

-

-7

-00:00:16,600 --> 00:00:18,000

-going to talk about the collapse

-

-8

-00:00:18,000 --> 00:00:20,630

-hierarchy refactoring, the consolidate conditional

-

-9

-00:00:20,630 --> 00:00:23,600

-expressions, the decompose conditionals, extract

-

-10

-00:00:23,600 --> 00:00:25,418

-method, extract class, and inline class.

-

-11

-00:00:25,418 --> 00:00:29,420

-And we're going to see each of those individually in the rest of the lesson.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/8 - Collapse Hierarchy - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/8 - Collapse Hierarchy - lang_en_vs4.srt
deleted file mode 100644
index 8711182..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/8 - Collapse Hierarchy - lang_en_vs4.srt
+++ /dev/null
@@ -1,67 +0,0 @@
-1

-00:00:00,110 --> 00:00:03,080

-The first refactoring we're going to see is the collapse hierarchy

-

-2

-00:00:03,080 --> 00:00:06,340

-refactoring. When a software system undergoes a number of changes, over

-

-3

-00:00:06,340 --> 00:00:09,730

-time the collapse hierarchy may become, let's say, sub-optimal. There are

-

-4

-00:00:09,730 --> 00:00:11,300

-several refactorings that address this

-

-5

-00:00:11,300 --> 00:00:13,200

-issue for example, refactorings that allow

-

-6

-00:00:13,200 --> 00:00:15,900

-you to move methods and fields up and down the class

-

-7

-00:00:15,900 --> 00:00:18,360

-hierarchy. So what happens when you apply a number of these

-

-8

-00:00:18,360 --> 00:00:22,360

-refactorings, is that a subclass might become too similar to its

-

-9

-00:00:22,360 --> 00:00:25,878

-superclass and might not be adding much value to the system.

-

-10

-00:00:25,878 --> 00:00:28,010

-In this case, it is a good idea to merge

-

-11

-00:00:28,010 --> 00:00:31,300

-the classes together. That's exactly what the Collapse Hierarchy refactoring

-

-12

-00:00:31,300 --> 00:00:34,600

-does. Imagine, for instance, that we have two classes: employee

-

-13

-00:00:34,600 --> 00:00:38,210

-and salesman. And that salesman is just so similar to

-

-14

-00:00:38,210 --> 00:00:40,380

-employee that it does not make sense to keep them

-

-15

-00:00:40,380 --> 00:00:43,870

-separated. In this case, you could merge the two classes,

-

-16

-00:00:43,870 --> 00:00:46,730

-so that at the end of the refactoring, only employee

-

-17

-00:00:46,730 --> 00:00:50,070

-is left. And the resulting structure of the system is improved.

diff --git a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/9 - Consolidate Conditional Expression - lang_en_vs4.srt b/usth/ICT2.7/P4L5 Software Refactoring Subtitles/9 - Consolidate Conditional Expression - lang_en_vs4.srt
deleted file mode 100644
index be2b3fe..0000000
--- a/usth/ICT2.7/P4L5 Software Refactoring Subtitles/9 - Consolidate Conditional Expression - lang_en_vs4.srt
+++ /dev/null
@@ -1,131 +0,0 @@
-1

-00:00:00,070 --> 00:00:00,860

-We're now going to talk about

-

-2

-00:00:00,860 --> 00:00:03,390

-the consolidate conditional expression refactoring.

-

-3

-00:00:03,390 --> 00:00:05,730

-A common situation in code is that you have a set

-

-4

-00:00:05,730 --> 00:00:08,530

-of conditionals with the same result. What that means that

-

-5

-00:00:08,530 --> 00:00:12,090

-sometimes the code contains a series of conditional checks in which

-

-6

-00:00:12,090 --> 00:00:14,760

-each check is different, yet the resulting action is the

-

-7

-00:00:14,760 --> 00:00:18,440

-same. In these cases, the code could be improved by combining

-

-8

-00:00:18,440 --> 00:00:22,100

-the conditionals using, for example, and, and or, as connectors. So

-

-9

-00:00:22,100 --> 00:00:25,390

-as to have a single conditional check, with a single result.

-

-10

-00:00:25,390 --> 00:00:28,500

-At that point you can also extract those conditional into a

-

-11

-00:00:28,500 --> 00:00:32,310

-method. And replace the conditional with a call, to debt matter consolidating

-

-12

-00:00:32,310 --> 00:00:35,110

-the conditional code in this way can make the checks clearer

-

-13

-00:00:35,110 --> 00:00:38,170

-by showing that you're really making a single check rather than multiple

-

-14

-00:00:38,170 --> 00:00:41,150

-checks, and extracted that condition and having that matter instead of

-

-15

-00:00:41,150 --> 00:00:44,550

-a condition can clarify your code by explaining why you're doing a

-

-16

-00:00:44,550 --> 00:00:47,350

-given check, rather than how you're doing it. You can see an

-

-17

-00:00:47,350 --> 00:00:52,020

-example of that situation in this code, which is the disabilityAmount method.

-

-18

-00:00:52,020 --> 00:00:54,580

-As the name of the method says, the purpose of this code

-

-19

-00:00:54,580 --> 00:00:58,300

-is to compute the disability amount for a given, for example, employee.

-

-20

-00:00:58,300 --> 00:01:01,250

-And there is a set of initial checks in the methods whose

-

-21

-00:01:01,250 --> 00:01:05,090

-goal is to decide whether there's this disabilityAmount should be instead zero.

-

-22

-00:01:05,090 --> 00:01:07,750

-And as you can see, there's multiple conditions. For example, there's a

-

-23

-00:01:07,750 --> 00:01:10,630

-check about the seniority level, and about the number of months that

-

-24

-00:01:10,630 --> 00:01:14,350

-the employee's been disabled. So far, whether the employee is part time

-

-25

-00:01:14,350 --> 00:01:17,060

-and the outcome of all these check is always the same. If they're

-

-26

-00:01:17,060 --> 00:01:19,740

-true, if the check is satisfied then there is no disability

-

-27

-00:01:19,740 --> 00:01:22,564

-amount. So the disabilityAmount is zero. So what I will do

-

-28

-00:01:22,564 --> 00:01:25,986

-if I apply the consolidate conditional expression to this matter, is

-

-29

-00:01:25,986 --> 00:01:29,690

-that I will take these three conditionals. I will put them together

-

-30

-00:01:29,690 --> 00:01:32,772

-by saying basically that if seniority is less than 2 or

-

-31

-00:01:32,772 --> 00:01:36,524

-monthsDisabled is greater than 12 or isPartTime is true then the

-

-32

-00:01:36,524 --> 00:01:40,170

-return should be zero. And once I have this combined conditional,

-

-33

-00:01:40,170 --> 00:01:42,601

-as I see here, I will just extract that into a method.