diff --git a/.gitattributes b/.gitattributes
index 2fda3037e54cef7a48ac45c5621edd4d0ab6b47c..11700703b7c35f2808bbb6e9d67cc02ecb97e0e9 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -41,3 +41,9 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
02[[:space:]]-[[:space:]]Java[[:space:]]Basics/002[[:space:]]JDK[[:space:]]Installation.mp4 filter=lfs diff=lfs merge=lfs -text
02[[:space:]]-[[:space:]]Java[[:space:]]Basics/006[[:space:]]Comments[[:space:]]in[[:space:]]Java[[:space:]]source[[:space:]]code.mp4 filter=lfs diff=lfs merge=lfs -text
02[[:space:]]-[[:space:]]Java[[:space:]]Basics/005[[:space:]]Integrated[[:space:]]Development[[:space:]]Environment,[[:space:]]Eclipse[[:space:]]Overview.mp4 filter=lfs diff=lfs merge=lfs -text
+03[[:space:]]-[[:space:]]Primitive[[:space:]]Data[[:space:]]Types,[[:space:]]Variables[[:space:]]and[[:space:]]Arrays/002[[:space:]]Number[[:space:]]Systems.mp4 filter=lfs diff=lfs merge=lfs -text
+03[[:space:]]-[[:space:]]Primitive[[:space:]]Data[[:space:]]Types,[[:space:]]Variables[[:space:]]and[[:space:]]Arrays/001[[:space:]]Primitive[[:space:]]types[[:space:]]and[[:space:]]variables.mp4 filter=lfs diff=lfs merge=lfs -text
+04[[:space:]]-[[:space:]]Eclipse[[:space:]]Tips[[:space:]]and[[:space:]]Tricks/001[[:space:]]Packages[[:space:]]creation[[:space:]]and[[:space:]]package[[:space:]]presentation[[:space:]]in[[:space:]]eclipse.mp4 filter=lfs diff=lfs merge=lfs -text
+04[[:space:]]-[[:space:]]Eclipse[[:space:]]Tips[[:space:]]and[[:space:]]Tricks/002[[:space:]]Plugins[[:space:]]how[[:space:]]to[[:space:]]install[[:space:]]free[[:space:]]plugins,[[:space:]]eclipse[[:space:]]marketplace,[[:space:]]workspace[[:space:]]styles.mp4 filter=lfs diff=lfs merge=lfs -text
+03[[:space:]]-[[:space:]]Primitive[[:space:]]Data[[:space:]]Types,[[:space:]]Variables[[:space:]]and[[:space:]]Arrays/003[[:space:]]Arrays.mp4 filter=lfs diff=lfs merge=lfs -text
+04[[:space:]]-[[:space:]]Eclipse[[:space:]]Tips[[:space:]]and[[:space:]]Tricks/003[[:space:]]Code[[:space:]]Refactoring[[:space:]]in[[:space:]]Eclipse.mp4 filter=lfs diff=lfs merge=lfs -text
diff --git a/03 - Primitive Data Types, Variables and Arrays/001 Primitive types and variables.mp4 b/03 - Primitive Data Types, Variables and Arrays/001 Primitive types and variables.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..3f20b53b117f44838bbb7c387cc36fd3433e67a8
--- /dev/null
+++ b/03 - Primitive Data Types, Variables and Arrays/001 Primitive types and variables.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:561a6b594ddeaa00fe253d34a8a186fdf63b624a23e20eba0106920185101c30
+size 239598856
diff --git a/03 - Primitive Data Types, Variables and Arrays/002 Number Systems.mp4 b/03 - Primitive Data Types, Variables and Arrays/002 Number Systems.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..c55593d6fd658779115cf53ab2ed23410331b66c
--- /dev/null
+++ b/03 - Primitive Data Types, Variables and Arrays/002 Number Systems.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48d80e1dc858892612a7e404de526c9f27f66b64e7449bc53b3be51a679e8078
+size 79001924
diff --git a/03 - Primitive Data Types, Variables and Arrays/003 Arrays.mp4 b/03 - Primitive Data Types, Variables and Arrays/003 Arrays.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..545fab7f1b25e6cd07f2d42ce0c628f97faece88
--- /dev/null
+++ b/03 - Primitive Data Types, Variables and Arrays/003 Arrays.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b77919792ce45c953609f44ad7e2fb3edd63a74592a170b8e3ce7f6ea7bb078
+size 232461248
diff --git a/04 - Eclipse Tips and Tricks/001 Packages creation and package presentation in eclipse.mp4 b/04 - Eclipse Tips and Tricks/001 Packages creation and package presentation in eclipse.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..8838d3c112aab7c63eabc6b2fe89026163d3a35e
--- /dev/null
+++ b/04 - Eclipse Tips and Tricks/001 Packages creation and package presentation in eclipse.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f938bf3c404ffdcdcb67392d77fb15a9c06b46d1ec1ea328a339d384ed455f6c
+size 9925338
diff --git a/04 - Eclipse Tips and Tricks/002 Plugins how to install free plugins, eclipse marketplace, workspace styles.mp4 b/04 - Eclipse Tips and Tricks/002 Plugins how to install free plugins, eclipse marketplace, workspace styles.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..eda92ea9a5bf15aedfb34c244929ea0b36ed4521
--- /dev/null
+++ b/04 - Eclipse Tips and Tricks/002 Plugins how to install free plugins, eclipse marketplace, workspace styles.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff9cf3072fb19331601a1e9e218a75fc917ae312ed20e490261faf4a1771015b
+size 15216101
diff --git a/04 - Eclipse Tips and Tricks/003 Code Refactoring in Eclipse.mp4 b/04 - Eclipse Tips and Tricks/003 Code Refactoring in Eclipse.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..76253ca0a20293e3280befb882daa71fb2e945e3
--- /dev/null
+++ b/04 - Eclipse Tips and Tricks/003 Code Refactoring in Eclipse.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:738dd29139e1e5c7bbe8eb718c996b9ac7a1920ac4eb0a57bbb86ecd0ac9dc30
+size 89152283
diff --git a/10 - Methods in Java/004 Variable Length Arguments_en.srt b/10 - Methods in Java/004 Variable Length Arguments_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..418906a0bfeefa0d7393ba4cb6c39f37605be1f2
--- /dev/null
+++ b/10 - Methods in Java/004 Variable Length Arguments_en.srt
@@ -0,0 +1,176 @@
+1
+00:00:00,000 --> 00:00:00,000
+Hello team.
+
+2
+00:00:00,000 --> 00:00:04,000
+Today we will discuss what are variable length arguments in Java.
+
+3
+00:00:04,000 --> 00:00:06,000
+Let's start from the problem statement.
+
+4
+00:00:06,000 --> 00:00:11,000
+You want to create method, but you don't know how much arguments will be passed to that method.
+
+5
+00:00:11,000 --> 00:00:16,000
+There can be different business cases, but let's simplify and pretend that you need to create method
+
+6
+00:00:16,000 --> 00:00:22,000
+which will some numbers, but you don't know how much numbers will be passed to this method.
+
+7
+00:00:22,000 --> 00:00:27,000
+To not create method which returns sum of two numbers, and another method which returns sum of three
+
+8
+00:00:27,000 --> 00:00:31,000
+numbers, and so on, you create one method with variable length arguments.
+
+9
+00:00:31,000 --> 00:00:33,000
+The syntax is simple.
+
+10
+00:00:33,000 --> 00:00:36,000
+You need to specify type of arguments, right?
+
+11
+00:00:36,000 --> 00:00:38,000
+Ellipses and variable name.
+
+12
+00:00:38,000 --> 00:00:41,000
+Inside the method you can treat this variable as array.
+
+13
+00:00:42,000 --> 00:00:46,000
+This syntax will allow you to pass different amount of arguments to the method.
+
+14
+00:00:46,000 --> 00:00:51,000
+Here you can see that I pass five integers and here I pass just one argument.
+
+15
+00:00:51,000 --> 00:00:55,000
+In both cases this method is called and result is returned.
+
+16
+00:00:55,000 --> 00:01:00,000
+You can even change the way how you declare a main method instead of specifying that the main method
+
+17
+00:01:00,000 --> 00:01:06,000
+takes an array of strings, we can say that the main method can work with variable length arguments
+
+18
+00:01:06,000 --> 00:01:10,000
+of type string declaration like this is also possible.
+
+19
+00:01:10,000 --> 00:01:15,000
+Important thing to flag here is that variable length arguments should be declared as last parameter
+
+20
+00:01:15,000 --> 00:01:16,000
+in the method.
+
+21
+00:01:17,000 --> 00:01:22,000
+For example, this method declaration will produce compilation error because the variable argument type
+
+22
+00:01:22,000 --> 00:01:25,000
+int of the method must be the last parameter.
+
+23
+00:01:25,000 --> 00:01:31,000
+Because during runtime, JVM should know when int arguments are finished and strings are started, and
+
+24
+00:01:31,000 --> 00:01:36,000
+when we adjusted the method declaration, everything is fine and there is no compilation error.
+
+25
+00:01:37,000 --> 00:01:41,000
+Variable length argument always should be declared as the last parameter in the method.
+
+26
+00:01:41,000 --> 00:01:47,000
+You already saw real life example of variable length argument, but probably didn't pay enough attention.
+
+27
+00:01:47,000 --> 00:01:50,000
+Do you remember lesson about string formatting?
+
+28
+00:01:50,000 --> 00:01:56,000
+Method format takes variable length arguments as a parameter, because we never know how much format
+
+29
+00:01:56,000 --> 00:01:59,000
+specifiers will be present in string, which we need to format.
+
+30
+00:02:00,000 --> 00:02:04,000
+That's all what I wanted to share with you regarding variable length arguments.
+
+31
+00:02:04,000 --> 00:02:08,000
+Now let's recap what you have learned about methods in this section.
+
+32
+00:02:08,000 --> 00:02:10,000
+You learned how to declare and call methods.
+
+33
+00:02:10,000 --> 00:02:14,000
+You understand what method signature is and how we can overload methods.
+
+34
+00:02:14,000 --> 00:02:20,000
+Now you understand that both reference and primitive types of data in Java are passed by values.
+
+35
+00:02:20,000 --> 00:02:26,000
+During the method invocation, we wrote recursive methods and learn what variable length arguments are.
+
+36
+00:02:26,000 --> 00:02:28,000
+Let's take a look at your homework now.
+
+37
+00:02:29,000 --> 00:02:32,000
+Your homework primarily consists of coding exercises.
+
+38
+00:02:32,000 --> 00:02:38,000
+Now when you know how to write custom methods, how to use loops, arrays, and primitive types of data,
+
+39
+00:02:38,000 --> 00:02:41,000
+our tasks might become a little more complicated.
+
+40
+00:02:41,000 --> 00:02:45,000
+I tried to describe homework with as much details as I could.
+
+41
+00:02:45,000 --> 00:02:47,000
+Try to solve these tasks.
+
+42
+00:02:47,000 --> 00:02:52,000
+I will share with you source code of the solution for these tasks, but try to solve them by yourself
+
+43
+00:02:52,000 --> 00:02:53,000
+first.
+
+44
+00:02:53,000 --> 00:02:56,000
+Thanks a lot for your attention and see you in the next lesson.
+
diff --git a/10 - Methods in Java/005 Find max int in array.html b/10 - Methods in Java/005 Find max int in array.html
new file mode 100644
index 0000000000000000000000000000000000000000..01edbf0034d5acba817c67e472ffa0b7ad85a687
--- /dev/null
+++ b/10 - Methods in Java/005 Find max int in array.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+ Coding Assignment
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/10 - Methods in Java/006 Draw empty rectangle.html b/10 - Methods in Java/006 Draw empty rectangle.html
new file mode 100644
index 0000000000000000000000000000000000000000..39be24d57f427320527086901d9228d3542034ce
--- /dev/null
+++ b/10 - Methods in Java/006 Draw empty rectangle.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+ Coding Assignment
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/10 - Methods in Java/007 Calculate Amount of Words.html b/10 - Methods in Java/007 Calculate Amount of Words.html
new file mode 100644
index 0000000000000000000000000000000000000000..4bb8195da3a113d288fb75e98828b435e545a204
--- /dev/null
+++ b/10 - Methods in Java/007 Calculate Amount of Words.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+ Coding Assignment
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/10 - Methods in Java/008 Filter String array.html b/10 - Methods in Java/008 Filter String array.html
new file mode 100644
index 0000000000000000000000000000000000000000..cd2f08a1c0a85c3147630a7983a4c8e910a65f00
--- /dev/null
+++ b/10 - Methods in Java/008 Filter String array.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+ Coding Assignment
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/10 - Methods in Java/013 String Processor.html b/10 - Methods in Java/013 String Processor.html
new file mode 100644
index 0000000000000000000000000000000000000000..681be046f62a30712ecf47897ec13f9021f919d9
--- /dev/null
+++ b/10 - Methods in Java/013 String Processor.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+ Coding Assignment
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/10 - Methods in Java/014 Turn each first letter in a word to capital.html b/10 - Methods in Java/014 Turn each first letter in a word to capital.html
new file mode 100644
index 0000000000000000000000000000000000000000..d38d5db3265b94b9f41ea701d5347ef7758bd882
--- /dev/null
+++ b/10 - Methods in Java/014 Turn each first letter in a word to capital.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+ Coding Assignment
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/10 - Methods in Java/016 Homework review Methods_en.srt b/10 - Methods in Java/016 Homework review Methods_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..840c9ee601b24736564db3a5aa561e47b9292fcf
--- /dev/null
+++ b/10 - Methods in Java/016 Homework review Methods_en.srt
@@ -0,0 +1,64 @@
+1
+00:00:00,000 --> 00:00:05,000
+Hello, Tim, I believe you did a great job and solve all coding exercises from your homework.
+
+2
+00:00:05,000 --> 00:00:10,000
+But if you don't mind, I'd like to share with you my own solutions to the same tasks.
+
+3
+00:00:10,000 --> 00:00:13,000
+I will leave links to the source code attached to this lesson.
+
+4
+00:00:14,000 --> 00:00:19,000
+Take your time to look through my solutions and left comments in the source code to make you understand
+
+5
+00:00:19,000 --> 00:00:21,000
+the most complicated pieces of code.
+
+6
+00:00:21,000 --> 00:00:26,000
+Also, in some solutions you can find something like this solution with stream API.
+
+7
+00:00:26,000 --> 00:00:31,000
+That is because the first solution, which I wrote for some tasks, was written with the help of stream
+
+8
+00:00:31,000 --> 00:00:31,000
+API.
+
+9
+00:00:32,000 --> 00:00:37,000
+After that, I remembered that we didn't learn stream API with you so far, and I wrote solution with
+
+10
+00:00:37,000 --> 00:00:39,000
+knowledge that you have right now.
+
+11
+00:00:39,000 --> 00:00:44,000
+Indeed, writing code with stream API takes less code to achieve the same goal.
+
+12
+00:00:45,000 --> 00:00:48,000
+Here is the solution without stream API v3.
+
+13
+00:00:50,000 --> 00:00:52,000
+And here is the solution with stream API.
+
+14
+00:00:53,000 --> 00:00:59,000
+Take this as motivation that soon will learn stream API and you will be able to write methods like this.
+
+15
+00:00:59,000 --> 00:01:04,000
+Feel free to ask questions and comment section regarding homework in case something is still unclear.
+
+16
+00:01:05,000 --> 00:01:08,000
+Thanks a lot for your attention and see you in the next lesson.
+
diff --git a/10 - Methods in Java/016 Solution-Calculate-amount-of-words.url b/10 - Methods in Java/016 Solution-Calculate-amount-of-words.url
new file mode 100644
index 0000000000000000000000000000000000000000..5983bb66102ab345f87f0db8426064044a3364cf
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Calculate-amount-of-words.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/AmountOfWords.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Convert-decimal-to-Roman-numbers-and-vice-versa.url b/10 - Methods in Java/016 Solution-Convert-decimal-to-Roman-numbers-and-vice-versa.url
new file mode 100644
index 0000000000000000000000000000000000000000..c7bbe7bbb5418d37f9f8037170d39e2bb441024a
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Convert-decimal-to-Roman-numbers-and-vice-versa.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/ConvertDecimalToRoman.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Draw-rectanagle-empty-inside.url b/10 - Methods in Java/016 Solution-Draw-rectanagle-empty-inside.url
new file mode 100644
index 0000000000000000000000000000000000000000..5caf48b973777a1629b452ae64d3ffb43e2d350b
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Draw-rectanagle-empty-inside.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/EmptyRectangle.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Extend-array.url b/10 - Methods in Java/016 Solution-Extend-array.url
new file mode 100644
index 0000000000000000000000000000000000000000..4af6c9a49955f3ce82333ff956bcec1a278fdc65
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Extend-array.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/ArrayExtension.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Filter-String-array-to-leave-words-no-less-than-specific-length.url b/10 - Methods in Java/016 Solution-Filter-String-array-to-leave-words-no-less-than-specific-length.url
new file mode 100644
index 0000000000000000000000000000000000000000..24e715b6bcd8ca33f2e6fcecc39bd8f09be402b1
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Filter-String-array-to-leave-words-no-less-than-specific-length.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/FilterStringArray.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Find-max-integer-in-array.url b/10 - Methods in Java/016 Solution-Find-max-integer-in-array.url
new file mode 100644
index 0000000000000000000000000000000000000000..5694a9b6ea71eae6ad84566625225906dc9f8607
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Find-max-integer-in-array.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/FindMaxInt.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Greates-common-divisor.url b/10 - Methods in Java/016 Solution-Greates-common-divisor.url
new file mode 100644
index 0000000000000000000000000000000000000000..ffe067b17cb23a89a86415aded2d70b34547784c
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Greates-common-divisor.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/GreatestCommonDivisor.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Rotate-Matrix.url b/10 - Methods in Java/016 Solution-Rotate-Matrix.url
new file mode 100644
index 0000000000000000000000000000000000000000..82dd77e291bc8db31a10f1084ac95966d7682411
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Rotate-Matrix.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/MatrixRotation.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-String-processor.url b/10 - Methods in Java/016 Solution-String-processor.url
new file mode 100644
index 0000000000000000000000000000000000000000..899f5d7a6661b6bfa3a9bf658e4a4add244d468f
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-String-processor.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/StringProcessor.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Sum-digits-in-a-number.url b/10 - Methods in Java/016 Solution-Sum-digits-in-a-number.url
new file mode 100644
index 0000000000000000000000000000000000000000..beb717999848e6b1a29b25209addaefbd5d84695
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Sum-digits-in-a-number.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/SumDigitsInNumber.java
\ No newline at end of file
diff --git a/10 - Methods in Java/016 Solution-Turn-each-first-char-in-the-word-to-uppercase.url b/10 - Methods in Java/016 Solution-Turn-each-first-char-in-the-word-to-uppercase.url
new file mode 100644
index 0000000000000000000000000000000000000000..17bd516c7f0a9a99b74bfe988a8a3e6c9e34e5ec
--- /dev/null
+++ b/10 - Methods in Java/016 Solution-Turn-each-first-char-in-the-word-to-uppercase.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/FirstCharCapital.java
\ No newline at end of file
diff --git a/10 - Methods in Java/017 Quiz Methods in Java - Check yourself.html b/10 - Methods in Java/017 Quiz Methods in Java - Check yourself.html
new file mode 100644
index 0000000000000000000000000000000000000000..674873bc73a2f4f1c903aee48c3711e762c62575
--- /dev/null
+++ b/10 - Methods in Java/017 Quiz Methods in Java - Check yourself.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+ Quiz Methods in Java - Check yourself
+
+
+
+
+
+
+
Quiz Methods in Java - Check yourself
+
Quiz Link: https://forms.gle/a5SSyMsRVVL5ijaB9
The quiz doesn’t require you to log in or submit any personal information. Your data privacy is my priority.
The Quiz covers content from the following lessons:
Methods in Java: Overview
Parameter Passing Mechanism in Java
Recursive methods
Variable Length Arguments
Quiz Instructions:
This quiz is designed to help you check your understanding of the content from the previous lessons. All questions are based only on material covered in the lessons you've already watched, so there’s no need to worry about unfamiliar topics.
Each question has one correct answer. Select the best answer and click "Submit" when you're ready.
After submitting, you'll see your score. For each question, you earn 1 point.
Click "View Results" to see the explanations for each correct answer. Reviewing these explanations can help reinforce your understanding.
If you score below 70%, I recommend revisiting the previous lessons. However, if the explanations make sense and you’re confident in your understanding, feel free to move on.
If any explanations are unclear, please don’t hesitate to post questions in the Q&A section—I’m here to help!
+
+
+
+
diff --git a/10 - Methods in Java/external-links.txt b/10 - Methods in Java/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d15803cab0db47ef6425bc3fbb44e793b52f56ec
--- /dev/null
+++ b/10 - Methods in Java/external-links.txt
@@ -0,0 +1,48 @@
+
+001 Source-code-of-the-example-used-in-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/MethodsDemo.java
+
+002 Source-code-of-the-example-used-in-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/PassByValueDemo.java
+
+003 Source-code-of-the-example-used-in-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/RecursiveMethodsDemo.java
+
+004 Source-code-of-the-example-used-in-the-lesson
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/VarargsDemo.java
+
+004 Methods-in-Java-Homework
+https://docs.google.com/document/d/1ojb3UJGOZC14ULGXyrIonSWeBDKbGo5WKsDns4_crgo/edit?usp=sharing
+
+016 Solution-Calculate-amount-of-words
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/AmountOfWords.java
+
+016 Solution-Convert-decimal-to-Roman-numbers-and-vice-versa
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/ConvertDecimalToRoman.java
+
+016 Solution-Extend-array
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/ArrayExtension.java
+
+016 Solution-Draw-rectanagle-empty-inside
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/EmptyRectangle.java
+
+016 Solution-Filter-String-array-to-leave-words-no-less-than-specific-length
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/FilterStringArray.java
+
+016 Solution-Find-max-integer-in-array
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/FindMaxInt.java
+
+016 Solution-Turn-each-first-char-in-the-word-to-uppercase
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/FirstCharCapital.java
+
+016 Solution-Greates-common-divisor
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/GreatestCommonDivisor.java
+
+016 Solution-Rotate-Matrix
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/MatrixRotation.java
+
+016 Solution-String-processor
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/StringProcessor.java
+
+016 Solution-Sum-digits-in-a-number
+https://github.com/AndriiPiatakha/learnit_java_core/blob/master/src/com/itbulls/learnit/javacore/methods/hw/SumDigitsInNumber.java
diff --git a/100 - GPT + Slack + Jira + Gmail Integration/001 GPT + Slack + Jira Integration Work with Jira Datasource_en.srt b/100 - GPT + Slack + Jira + Gmail Integration/001 GPT + Slack + Jira Integration Work with Jira Datasource_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..fa6143e22e5446d3059631274d5cd57c0664f94b
--- /dev/null
+++ b/100 - GPT + Slack + Jira + Gmail Integration/001 GPT + Slack + Jira Integration Work with Jira Datasource_en.srt
@@ -0,0 +1,1792 @@
+1
+00:00:05,000 --> 00:00:08,000
+Followed him by this moment in our course.
+
+2
+00:00:08,000 --> 00:00:10,000
+I assume that you already learned.
+
+3
+00:00:10,000 --> 00:00:12,000
+Your API in the previous lessons.
+
+4
+00:00:12,000 --> 00:00:16,000
+So now it is time to start implementation of Jira.
+
+5
+00:00:16,000 --> 00:00:22,000
+API integration with our web application that automates project management operations.
+
+6
+00:00:22,000 --> 00:00:31,000
+Namely, we are going to build integration between Jira, API, GP2, API, Slack and our web application.
+
+7
+00:00:31,000 --> 00:00:38,000
+I'm going to teach you how to connect Jira as a separate data source that you will use for gathering
+
+8
+00:00:38,000 --> 00:00:39,000
+required context.
+
+9
+00:00:39,000 --> 00:00:44,000
+In scope of this lesson, we will not post data to the Jira data source.
+
+10
+00:00:44,000 --> 00:00:48,000
+In other words, we will not create items there.
+
+11
+00:00:48,000 --> 00:00:54,000
+We will just read from Jira how to post data to Jira Data source.
+
+12
+00:00:54,000 --> 00:00:56,000
+We are going to learn in the next lessons.
+
+13
+00:00:57,000 --> 00:01:03,000
+I will show you on real examples how you can implement function calling feature to fetch required data
+
+14
+00:01:03,000 --> 00:01:06,000
+items to add them to the context.
+
+15
+00:01:06,000 --> 00:01:12,000
+By the end of this lesson, you are supposed to have completely functional and already useful application,
+
+16
+00:01:12,000 --> 00:01:19,000
+and I'm going to show you the demo of how you can use it as we will make an overview of the source code
+
+17
+00:01:19,000 --> 00:01:20,000
+line by line.
+
+18
+00:01:20,000 --> 00:01:26,000
+I will make an architecture overview and will share with you the best practices of web development.
+
+19
+00:01:26,000 --> 00:01:28,000
+Let's start our lesson.
+
+20
+00:01:29,000 --> 00:01:35,000
+If you follow the course and you don't skip any lessons, then you have enough theoretical knowledge
+
+21
+00:01:35,000 --> 00:01:41,000
+and practical skills to follow the live demo session that I'm going to hold in this lesson.
+
+22
+00:01:42,000 --> 00:01:47,000
+Today, we are going to have a lesson full of practical examples, and I will walk you through my solution
+
+23
+00:01:47,000 --> 00:01:52,000
+line by line, explaining you how we achieved this result.
+
+24
+00:01:52,000 --> 00:01:58,000
+Let's start from review of the result that we are going to achieve by the end of this lesson.
+
+25
+00:01:58,000 --> 00:02:04,000
+I believe that in this way you are going to be motivated to watch the lesson till the end and you will
+
+26
+00:02:04,000 --> 00:02:10,000
+have a clear picture in the head of what we are going to achieve when we will get to the source code.
+
+27
+00:02:10,000 --> 00:02:16,000
+Watching source code and keeping in the head the image of the end result will help you to stay focused,
+
+28
+00:02:16,000 --> 00:02:21,000
+concentrated and will help you to get answers to your questions.
+
+29
+00:02:22,000 --> 00:02:25,000
+I opened Slack and our imaginary case.
+
+30
+00:02:25,000 --> 00:02:29,000
+This is our team chat where we collaborate.
+
+31
+00:02:29,000 --> 00:02:35,000
+Imagine that during the conversation any participant of the chat would like to clarify more details
+
+32
+00:02:35,000 --> 00:02:42,000
+about the current progress of work, remaining items to do, or other information related to the product
+
+33
+00:02:42,000 --> 00:02:49,000
+that we work on with Jira Integration and GPT analysis capabilities, we can get the answers that we
+
+34
+00:02:49,000 --> 00:02:50,000
+expect to get.
+
+35
+00:02:50,000 --> 00:02:57,000
+I believe that you watched a lesson about function calling feature in ChatGPT because it is important
+
+36
+00:02:57,000 --> 00:02:58,000
+to understand the lesson.
+
+37
+00:02:58,000 --> 00:02:59,000
+Examples.
+
+38
+00:02:59,000 --> 00:03:02,000
+I will just remind you quickly what it is about.
+
+39
+00:03:02,000 --> 00:03:10,000
+We give to the GPT the array of functions descriptions to tell it what functions we have on our end
+
+40
+00:03:10,000 --> 00:03:13,000
+and which functions we can call in case it would be needed.
+
+41
+00:03:14,000 --> 00:03:20,000
+And GPT makes decision based on the context whether some function should be called and result of the
+
+42
+00:03:20,000 --> 00:03:22,000
+function should be provided as an input.
+
+43
+00:03:23,000 --> 00:03:29,000
+So basically in our today's demo, GPT will understand that we need to make a call to Jira API in order
+
+44
+00:03:29,000 --> 00:03:31,000
+to fetch some additional information.
+
+45
+00:03:31,000 --> 00:03:37,000
+And after providing requested information from Jira, GPT will provide an answer.
+
+46
+00:03:37,000 --> 00:03:41,000
+So imagine that in our work chat during the conversation.
+
+47
+00:03:41,000 --> 00:03:48,000
+Somebody needs to get additional information in order to make data driven decision and to save some
+
+48
+00:03:48,000 --> 00:03:54,000
+time on opening a Jira project, building a query, analyzing the data, I can simply ask my bot to
+
+49
+00:03:54,000 --> 00:03:57,000
+provide me with some information.
+
+50
+00:03:57,000 --> 00:04:01,000
+For example, I ask general question, something like this.
+
+51
+00:04:01,000 --> 00:04:10,000
+GPT How many work items do we have in Jira and receives a response that in Jira project there are six
+
+52
+00:04:10,000 --> 00:04:18,000
+work items and it doesn't matter for our bot whether it is six work items or 600 work items.
+
+53
+00:04:19,000 --> 00:04:26,000
+The only limit that we have in this scenario is the context token limit on GPT side, and in my previous
+
+54
+00:04:26,000 --> 00:04:33,000
+videos about GPT, we already learned that there are different GPT models with different context token
+
+55
+00:04:33,000 --> 00:04:34,000
+limit size.
+
+56
+00:04:34,000 --> 00:04:41,000
+So it is question of selecting the proper GPT model and applying GPT best practices about working with
+
+57
+00:04:41,000 --> 00:04:44,000
+context that we also learned in previous lessons.
+
+58
+00:04:44,000 --> 00:04:50,000
+Let me open Jira board in order to make sure that what provided me with correct response.
+
+59
+00:04:51,000 --> 00:04:57,000
+Of course, when I work with my team on production data, I don't check it each time I receive response
+
+60
+00:04:57,000 --> 00:04:58,000
+from the bot.
+
+61
+00:04:58,000 --> 00:05:03,000
+But right now let's perform some checks just for the sake of the demo.
+
+62
+00:05:03,000 --> 00:05:12,000
+And as you can see on our Jira board, we have also six work items, so all is good and bot's response
+
+63
+00:05:12,000 --> 00:05:13,000
+was correct.
+
+64
+00:05:13,000 --> 00:05:15,000
+Let's ask some other questions.
+
+65
+00:05:15,000 --> 00:05:21,000
+For example, GPT, how many work items and repertoire has assigned now?
+
+66
+00:05:21,000 --> 00:05:23,000
+And we receive response.
+
+67
+00:05:23,000 --> 00:05:24,000
+Is it in repertoire?
+
+68
+00:05:24,000 --> 00:05:32,000
+Currently has three work items assigned in Jira and we can open Jira board one more time just to check
+
+69
+00:05:32,000 --> 00:05:37,000
+and make sure that our bot doesn't lie us and we can see that.
+
+70
+00:05:37,000 --> 00:05:41,000
+And repertoire has only three work items assigned.
+
+71
+00:05:41,000 --> 00:05:41,000
+Cool.
+
+72
+00:05:42,000 --> 00:05:44,000
+Let's ask the next question.
+
+73
+00:05:45,000 --> 00:05:52,000
+GPT How many work items was the type Bach we have now in not completed status?
+
+74
+00:05:53,000 --> 00:06:00,000
+And it replies us that we have just two bugs will not check each response in order to have enough time
+
+75
+00:06:00,000 --> 00:06:02,000
+to show you more examples.
+
+76
+00:06:02,000 --> 00:06:08,000
+I already showed you our board and you can trust me that these responses are correct.
+
+77
+00:06:08,000 --> 00:06:11,000
+Or just go back and check the board one more time.
+
+78
+00:06:12,000 --> 00:06:16,000
+And in the meantime, let's continue and ask the next question.
+
+79
+00:06:16,000 --> 00:06:21,000
+GPT Can you group these bugs by status, please?
+
+80
+00:06:21,000 --> 00:06:25,000
+And we received breakdown of our box by their statuses.
+
+81
+00:06:26,000 --> 00:06:33,000
+One defect is in Todo status, one is in progress status and one bug is in done status.
+
+82
+00:06:34,000 --> 00:06:38,000
+And we can continue conversation in this chat with our team members.
+
+83
+00:06:38,000 --> 00:06:43,000
+And the coolest thing about this is that I don't use any GCL.
+
+84
+00:06:44,000 --> 00:06:50,000
+I mean Jira query language, I use conversational language like I would ask any Scrum master.
+
+85
+00:06:50,000 --> 00:06:51,000
+Okay.
+
+86
+00:06:51,000 --> 00:06:55,000
+In my team to get more information before I continue with the conversation.
+
+87
+00:06:56,000 --> 00:06:58,000
+Okay, let's continue.
+
+88
+00:06:58,000 --> 00:07:00,000
+Let's ask the next question.
+
+89
+00:07:00,000 --> 00:07:02,000
+GPT Check please.
+
+90
+00:07:02,000 --> 00:07:10,000
+Due dates of not completed bugs that you referred to and tell me when is the latest due date?
+
+91
+00:07:11,000 --> 00:07:17,000
+And we can see that the latest due date among not completed books is August 4th, which is logically
+
+92
+00:07:17,000 --> 00:07:18,000
+correct.
+
+93
+00:07:18,000 --> 00:07:21,000
+And we again received information that we need it.
+
+94
+00:07:22,000 --> 00:07:24,000
+The next question sounds like this.
+
+95
+00:07:25,000 --> 00:07:29,000
+GPT And who is the bug with the latest due date assigned to?
+
+96
+00:07:30,000 --> 00:07:33,000
+And we can see that the bug is assigned to Andre Petaja.
+
+97
+00:07:34,000 --> 00:07:38,000
+Usually in responses you can receive different volume of information.
+
+98
+00:07:38,000 --> 00:07:42,000
+It depends on the GPT configurations that we already learned.
+
+99
+00:07:42,000 --> 00:07:48,000
+This example just shows you that you can check some basic information about items that was mentioned
+
+100
+00:07:48,000 --> 00:07:50,000
+previously in the context.
+
+101
+00:07:51,000 --> 00:07:58,000
+You can ask some more interesting questions like for example, the following one GPT Can you remind
+
+102
+00:07:58,000 --> 00:08:06,000
+me of the issue ID please, in the scope of which we planned to implement the persistent card state
+
+103
+00:08:06,000 --> 00:08:08,000
+across multiple browsers for the same account?
+
+104
+00:08:09,000 --> 00:08:14,000
+When I deal with hundreds and sometimes with thousands of tickets on the big programs that I manage,
+
+105
+00:08:14,000 --> 00:08:22,000
+sometimes it is hard to remember specific work item ID of the task that I'm interested in, but still
+
+106
+00:08:22,000 --> 00:08:27,000
+I might need the reference to the ticket in order to check the latest status comments.
+
+107
+00:08:27,000 --> 00:08:28,000
+Szczekociny Seine.
+
+108
+00:08:28,000 --> 00:08:29,000
+ET cetera.
+
+109
+00:08:30,000 --> 00:08:33,000
+And I can ask GPT to help me with this task.
+
+110
+00:08:33,000 --> 00:08:34,000
+Like you saw in the demo.
+
+111
+00:08:35,000 --> 00:08:43,000
+Now I can get navigated to the work item with ID dash four and check information that I need.
+
+112
+00:08:43,000 --> 00:08:50,000
+In this particular case, GPT analyzed the description field in order to find the ID of the task that
+
+113
+00:08:50,000 --> 00:08:52,000
+I am interested in.
+
+114
+00:08:52,000 --> 00:08:58,000
+You can see that in this case the summary of the task doesn't provide us with a lot of details and useful
+
+115
+00:08:58,000 --> 00:08:59,000
+information.
+
+116
+00:08:59,000 --> 00:09:06,000
+But in the description I see that this task is about implementation of card component, ensuring that
+
+117
+00:09:06,000 --> 00:09:12,000
+the state of the card persists in different tabs and in different browsers for the same account.
+
+118
+00:09:12,000 --> 00:09:17,000
+Basically, you can ask any other questions that you may think of.
+
+119
+00:09:17,000 --> 00:09:19,000
+Like for example, GPT.
+
+120
+00:09:19,000 --> 00:09:26,000
+Can you group all items from Jira by assigning you please, and you will be provided with a breakdown
+
+121
+00:09:26,000 --> 00:09:27,000
+by assignee.
+
+122
+00:09:27,000 --> 00:09:34,000
+Please note that we have one work item on the dashboard that does not assigned to anyone.
+
+123
+00:09:34,000 --> 00:09:36,000
+This is done for testing purposes.
+
+124
+00:09:36,000 --> 00:09:43,000
+Of course, in real life you would avoid cases like this, but we can see that in total GPT provided
+
+125
+00:09:43,000 --> 00:09:50,000
+us with details about five tickets because the sixth ticket doesn't have assignee.
+
+126
+00:09:51,000 --> 00:09:55,000
+GPT Can you group all items by issue type, please?
+
+127
+00:09:55,000 --> 00:10:03,000
+Almost the similar kind of task, but in this case we group by issue type and we again receive correct
+
+128
+00:10:03,000 --> 00:10:04,000
+response.
+
+129
+00:10:04,000 --> 00:10:11,000
+These are just few questions that I use on my Scrum Masters use when managing the teamwork and during
+
+130
+00:10:11,000 --> 00:10:12,000
+the collaboration.
+
+131
+00:10:13,000 --> 00:10:19,000
+Of course, if your experienced project delivery manager or delivery director, you can imagine the
+
+132
+00:10:19,000 --> 00:10:23,000
+whole potential power and set of use cases.
+
+133
+00:10:23,000 --> 00:10:28,000
+How you can apply this both to boost collaboration within the team to the next level.
+
+134
+00:10:29,000 --> 00:10:32,000
+So I am done with the demo and with review.
+
+135
+00:10:32,000 --> 00:10:40,000
+Now it is time to understand how all this is implemented and I open my IDE to walk you through the source
+
+136
+00:10:40,000 --> 00:10:40,000
+code.
+
+137
+00:10:40,000 --> 00:10:45,000
+As always, you can find the reference to the solution in attachments to this video.
+
+138
+00:10:46,000 --> 00:10:53,000
+I'm going to make an overview of how I implemented the application in order to achieve the end result
+
+139
+00:10:53,000 --> 00:10:54,000
+that I have just demoed.
+
+140
+00:10:54,000 --> 00:11:01,000
+And in case you would have any questions, you are always welcome to post your questions below the video
+
+141
+00:11:01,000 --> 00:11:03,000
+and I will be happy to answer.
+
+142
+00:11:04,000 --> 00:11:10,000
+So this is the application that I developed from scratch during the previous lessons and share it with
+
+143
+00:11:10,000 --> 00:11:12,000
+you each line.
+
+144
+00:11:12,000 --> 00:11:19,000
+That's why today I wouldn't stop too much on the pieces of code and configurations that we already reviewed
+
+145
+00:11:19,000 --> 00:11:25,000
+in the previous lessons, and I will focus your attention only on things that were changed here.
+
+146
+00:11:25,000 --> 00:11:29,000
+I open Slack integration Controller class here.
+
+147
+00:11:29,000 --> 00:11:34,000
+We get notified about the Slack events we are subscribed for.
+
+148
+00:11:34,000 --> 00:11:41,000
+So far we are subscribed only for the one event that is application mentioning event.
+
+149
+00:11:41,000 --> 00:11:47,000
+We receive it here and we call process on mention event of the slack service.
+
+150
+00:11:47,000 --> 00:11:49,000
+Nothing is changed here.
+
+151
+00:11:49,000 --> 00:11:53,000
+Let me then go to the default slack service.
+
+152
+00:11:53,000 --> 00:11:57,000
+I opened the default slack service class here.
+
+153
+00:11:57,000 --> 00:11:58,000
+I introduced improvement.
+
+154
+00:11:59,000 --> 00:12:05,000
+When we call get answer to single query method, I pass an array of GPT functions.
+
+155
+00:12:05,000 --> 00:12:12,000
+You can see that functions variable refers to the list that I let spring to initialize by putting autopilot
+
+156
+00:12:12,000 --> 00:12:21,000
+annotation like this spring gathered all beans of GPT function type discovered within the context and
+
+157
+00:12:21,000 --> 00:12:27,000
+taking into account get answer to a single query takes variable argument of GPT function type.
+
+158
+00:12:27,000 --> 00:12:35,000
+I need to convert the list to array because as you know in Java variable argument type may be treated
+
+159
+00:12:35,000 --> 00:12:37,000
+as an array within the message.
+
+160
+00:12:37,000 --> 00:12:40,000
+Currently in this list we have two functions.
+
+161
+00:12:40,000 --> 00:12:45,000
+One function is from the lesson when we learned function calling feature in GPT.
+
+162
+00:12:46,000 --> 00:12:53,000
+Do you remember we had GPT was a function that supposed to return us the weather in the specific location.
+
+163
+00:12:53,000 --> 00:12:55,000
+That was an easy example.
+
+164
+00:12:55,000 --> 00:13:02,000
+I decided not to remove it from the source code because this is the learning project and I want to store
+
+165
+00:13:02,000 --> 00:13:05,000
+this example in the repository for future students.
+
+166
+00:13:05,000 --> 00:13:12,000
+And the second function is the main one for today's lesson in the Beans configuration class.
+
+167
+00:13:12,000 --> 00:13:17,000
+At the bottom you can see that I declared GPT Jira issues function.
+
+168
+00:13:17,000 --> 00:13:19,000
+Let's understand what it is.
+
+169
+00:13:20,000 --> 00:13:22,000
+Just in case you skipped function.
+
+170
+00:13:22,000 --> 00:13:23,000
+Call in lesson.
+
+171
+00:13:23,000 --> 00:13:30,000
+Please come back and watch that lesson because understanding function calling in GPT is the key for
+
+172
+00:13:30,000 --> 00:13:32,000
+understanding of this implementation.
+
+173
+00:13:32,000 --> 00:13:36,000
+So function should have name and description.
+
+174
+00:13:36,000 --> 00:13:39,000
+I decided to store this information in properties file.
+
+175
+00:13:40,000 --> 00:13:42,000
+I open my app properties file.
+
+176
+00:13:42,000 --> 00:13:46,000
+The function name is simple get Jira issues function.
+
+177
+00:13:46,000 --> 00:13:53,000
+The most important is the description of the function because based on the description analysis, GPT
+
+178
+00:13:53,000 --> 00:13:57,000
+will make a decision whether it makes sense to call this function or not.
+
+179
+00:13:58,000 --> 00:14:04,000
+Based on the description, you can understand that I have a function with such name that can return
+
+180
+00:14:04,000 --> 00:14:11,000
+all Jira issues of all issue types from the configured Jira project in order to provide information
+
+181
+00:14:11,000 --> 00:14:12,000
+about team members.
+
+182
+00:14:12,000 --> 00:14:20,000
+Workload, current plan, due dates, issue descriptions, summaries, total amount of issues finds
+
+183
+00:14:20,000 --> 00:14:25,000
+the issues of the specific type finds the idea of the issue by its summary or description.
+
+184
+00:14:25,000 --> 00:14:29,000
+Calculate team workload and lots more.
+
+185
+00:14:29,000 --> 00:14:31,000
+Few comments here.
+
+186
+00:14:31,000 --> 00:14:38,000
+Definitely this is learning course, but we learn the principles that may be applied on production scale.
+
+187
+00:14:38,000 --> 00:14:43,000
+For example, in my production application, I have multiple functions created.
+
+188
+00:14:43,000 --> 00:14:49,000
+There might be cases when you need the whole amount of Jira tickets, but there is also might be need
+
+189
+00:14:49,000 --> 00:14:57,000
+to fetch child items of some epic or items that contains only specific label and we don't need the rest
+
+190
+00:14:57,000 --> 00:14:58,000
+of the items.
+
+191
+00:14:58,000 --> 00:15:03,000
+It will help you to optimize performance and costs spent on GPT.
+
+192
+00:15:04,000 --> 00:15:06,000
+Just an idea to think about.
+
+193
+00:15:06,000 --> 00:15:11,000
+In scope of this lesson, we are going to review implementation of this function because all other functions
+
+194
+00:15:11,000 --> 00:15:15,000
+can be implemented exactly in the similar way.
+
+195
+00:15:15,000 --> 00:15:20,000
+The second thing here it is set for configured project.
+
+196
+00:15:20,000 --> 00:15:24,000
+There are different ways of how you can configure project.
+
+197
+00:15:24,000 --> 00:15:30,000
+It all depends on the business requirements and how you want to build interaction with the end user.
+
+198
+00:15:31,000 --> 00:15:37,000
+For example, you can ask end user to provide all necessary configuration during the interaction with
+
+199
+00:15:37,000 --> 00:15:44,000
+the bot, or you can make this configuration as mandatory one during the bot installation or any other
+
+200
+00:15:44,000 --> 00:15:45,000
+option.
+
+201
+00:15:45,000 --> 00:15:51,000
+In our particular case, I configured the project key in the properties a little bit later.
+
+202
+00:15:51,000 --> 00:15:56,000
+In this lesson I'm going to show you where it will be needed and where we are going to use it.
+
+203
+00:15:57,000 --> 00:16:04,000
+So coming back to Bean's configuration class, I used value annotation to inject values from the properties
+
+204
+00:16:04,000 --> 00:16:05,000
+file.
+
+205
+00:16:05,000 --> 00:16:10,000
+Then I set the name and description values into GPT function object.
+
+206
+00:16:10,000 --> 00:16:19,000
+Then important point GPT should identify input arguments for our function and we need to tell GPU what
+
+207
+00:16:19,000 --> 00:16:22,000
+type of arguments with what name we need.
+
+208
+00:16:22,000 --> 00:16:29,000
+But in this specific case we don't need any input arguments because we don't need to filter result or
+
+209
+00:16:29,000 --> 00:16:33,000
+sort result or any other input arguments to work with.
+
+210
+00:16:33,000 --> 00:16:37,000
+We just need to fetch all work items from Jira project.
+
+211
+00:16:37,000 --> 00:16:38,000
+That's it.
+
+212
+00:16:38,000 --> 00:16:46,000
+But still, according to GPT, API parameters attribute is required and in documentation it is said
+
+213
+00:16:46,000 --> 00:16:53,000
+that in case I need to describe a function that accepts no parameters, we need to provide the value
+
+214
+00:16:53,000 --> 00:17:00,000
+object for type property of the parameters object and empty object value for properties attribute.
+
+215
+00:17:00,000 --> 00:17:07,000
+Taking into account that Kazan library doesn't take into consideration fields with no values during
+
+216
+00:17:07,000 --> 00:17:09,000
+the conversion from object to Json format.
+
+217
+00:17:09,000 --> 00:17:16,000
+By default, we need to come up with some workaround in order to meet the requirements of GPT API.
+
+218
+00:17:17,000 --> 00:17:21,000
+So I set object type for parameters object.
+
+219
+00:17:21,000 --> 00:17:29,000
+I did it according to documentation and for properties, I created an object of type no properties that
+
+220
+00:17:29,000 --> 00:17:31,000
+basically doesn't have any state.
+
+221
+00:17:31,000 --> 00:17:36,000
+It is compatible with our marker interface parameter properties.
+
+222
+00:17:36,000 --> 00:17:38,000
+So I can set properties now.
+
+223
+00:17:38,000 --> 00:17:42,000
+Set parameters to the function and function is ready.
+
+224
+00:17:42,000 --> 00:17:44,000
+What happens next?
+
+225
+00:17:44,000 --> 00:17:53,000
+I open default GPT service class inside the get answer to single query method I call prepare request
+
+226
+00:17:53,000 --> 00:17:58,000
+method where I add functions to the GPT request object.
+
+227
+00:17:58,000 --> 00:18:01,000
+Now we are ready to send the request to GPT.
+
+228
+00:18:01,000 --> 00:18:04,000
+Request is sent inside the method.
+
+229
+00:18:04,000 --> 00:18:05,000
+Get response from GPT.
+
+230
+00:18:05,000 --> 00:18:09,000
+Here we have method extract GPT response content.
+
+231
+00:18:10,000 --> 00:18:15,000
+I don't stop on the detailed review of these methods because nothing was changed.
+
+232
+00:18:16,000 --> 00:18:20,000
+If you forgot the implementation, please check previous lessons.
+
+233
+00:18:20,000 --> 00:18:25,000
+The only thing that was changed here is the part related to the function call.
+
+234
+00:18:25,000 --> 00:18:28,000
+Let's review it again from the top.
+
+235
+00:18:28,000 --> 00:18:33,000
+So in case in the GPT response there is a request for function call.
+
+236
+00:18:33,000 --> 00:18:42,000
+We enter this if block and get the reference to the function been using the function name I implemented
+
+237
+00:18:42,000 --> 00:18:44,000
+here factory method pattern.
+
+238
+00:18:45,000 --> 00:18:48,000
+I just did small improvements in the function factory class.
+
+239
+00:18:48,000 --> 00:18:50,000
+Let me show it quickly.
+
+240
+00:18:51,000 --> 00:18:55,000
+I implemented application context aware interface.
+
+241
+00:18:55,000 --> 00:19:01,000
+This is done on purpose in order to use the existing context instead of creating the new one.
+
+242
+00:19:01,000 --> 00:19:08,000
+I just need to implement set, application context, method and initialize application context field.
+
+243
+00:19:08,000 --> 00:19:11,000
+All necessary injections will be done by spring.
+
+244
+00:19:12,000 --> 00:19:13,000
+This is done in order.
+
+245
+00:19:13,000 --> 00:19:20,000
+I can extract the bean from the current application context because my get Jira issues function.
+
+246
+00:19:20,000 --> 00:19:27,000
+Bean contains injections from the properties files and depends on the Jira service bean.
+
+247
+00:19:27,000 --> 00:19:33,000
+So this improvement in the function factory is exactly what we need to do in order to make this solution
+
+248
+00:19:33,000 --> 00:19:35,000
+work as expected.
+
+249
+00:19:35,000 --> 00:19:41,000
+If you want to learn more how it is implemented, we reviewed it in the previous lesson when we learned
+
+250
+00:19:41,000 --> 00:19:43,000
+function calling feature.
+
+251
+00:19:44,000 --> 00:19:51,000
+Once he receives the reference to the function I call execute method in the beans configuration file,
+
+252
+00:19:51,000 --> 00:19:55,000
+you can find the bean with name get Jira issues function.
+
+253
+00:19:55,000 --> 00:19:58,000
+Let's review it and understand how it works.
+
+254
+00:19:59,000 --> 00:20:04,000
+I injected Jira service and into this class in execute method.
+
+255
+00:20:04,000 --> 00:20:08,000
+I use Jira service to extract all Jira issues.
+
+256
+00:20:08,000 --> 00:20:15,000
+I need to make a review of multiple types here Jira service, default, Jira service and Jira issue.
+
+257
+00:20:15,000 --> 00:20:17,000
+So let's go one by one.
+
+258
+00:20:18,000 --> 00:20:19,000
+Jira Service.
+
+259
+00:20:20,000 --> 00:20:23,000
+Let me start an overview from Jira service interface.
+
+260
+00:20:24,000 --> 00:20:29,000
+So this is a high level interface that defines the contract for two masses for now.
+
+261
+00:20:30,000 --> 00:20:38,000
+The first method is get full Json issue by ID, it appears here as part of the refactoring.
+
+262
+00:20:38,000 --> 00:20:45,000
+After lessons about Jira API, I moved the code from the controller to the service and now we can use
+
+263
+00:20:45,000 --> 00:20:53,000
+Jira service bean to extract the Json of any work item by its ID and in general integration controller
+
+264
+00:20:53,000 --> 00:21:02,000
+clause, you can see that get issue by method was refactored to now delegate the call to the Jira service
+
+265
+00:21:02,000 --> 00:21:08,000
+and the code that was here in the previous lesson was moved to the default Jira service.
+
+266
+00:21:09,000 --> 00:21:15,000
+I also did some minor cosmetic changes in the URL and query parameter name.
+
+267
+00:21:15,000 --> 00:21:16,000
+In attachments.
+
+268
+00:21:16,000 --> 00:21:23,000
+You can find the reference to the commit with all changes and you can investigate it and remember that
+
+269
+00:21:23,000 --> 00:21:29,000
+in the case of any questions, please do not hesitate to post your questions below the video and I will
+
+270
+00:21:29,000 --> 00:21:30,000
+be happy to answer.
+
+271
+00:21:31,000 --> 00:21:37,000
+Also, for demo and development purposes, I created here endpoints that allows you to fetch all issues
+
+272
+00:21:37,000 --> 00:21:40,000
+from Jira without posting message to Slack.
+
+273
+00:21:40,000 --> 00:21:47,000
+You can do it by directly accessing this resource and here you can see that get Jira issues method is
+
+274
+00:21:47,000 --> 00:21:49,000
+also invoked.
+
+275
+00:21:49,000 --> 00:21:54,000
+The same method is invoked in the get Jira issues function.
+
+276
+00:21:54,000 --> 00:22:00,000
+So let me open now the default service class and review it together with you.
+
+277
+00:22:00,000 --> 00:22:04,000
+Let's start review from the get Jira issues method.
+
+278
+00:22:05,000 --> 00:22:08,000
+The first thing that I do in this method I build a URL.
+
+279
+00:22:09,000 --> 00:22:17,000
+The URL consists from the Jira API base URL, such resource URL and query parameter with name JKL.
+
+280
+00:22:18,000 --> 00:22:25,000
+JKL stands for Jira Query language so I can pass Gql here to fetch issues that I need.
+
+281
+00:22:26,000 --> 00:22:30,000
+I pass here project name and Max results.
+
+282
+00:22:30,000 --> 00:22:32,000
+I have few comments here.
+
+283
+00:22:33,000 --> 00:22:39,000
+First of all, all these field values are initialized with values from the Myapp properties file.
+
+284
+00:22:39,000 --> 00:22:40,000
+Let's check it.
+
+285
+00:22:41,000 --> 00:22:46,000
+I open my app properties file, I changed version of Jira API to the second one.
+
+286
+00:22:47,000 --> 00:22:53,000
+We reviewed the Jira API versions in the separate lesson and I said that Jira API version two is the
+
+287
+00:22:53,000 --> 00:23:01,000
+most stable one based on today and also it provides the content of description field as one single value,
+
+288
+00:23:01,000 --> 00:23:08,000
+which is easier to parse in the Jira API Version three The content of description field is divided into
+
+289
+00:23:08,000 --> 00:23:09,000
+blocks.
+
+290
+00:23:09,000 --> 00:23:11,000
+It is also available to parse it.
+
+291
+00:23:11,000 --> 00:23:19,000
+But I don't like complicate things when there is an easier option available, so I decided to change
+
+292
+00:23:19,000 --> 00:23:20,000
+it to version two.
+
+293
+00:23:21,000 --> 00:23:27,000
+Then you can find here each resource and search resource and Jira project name too.
+
+294
+00:23:27,000 --> 00:23:29,000
+That is our project key.
+
+295
+00:23:30,000 --> 00:23:34,000
+Probably you might be wondering where to get Project key.
+
+296
+00:23:34,000 --> 00:23:36,000
+Let me show it to you.
+
+297
+00:23:36,000 --> 00:23:40,000
+Basically, you can easily find it in each work item ID.
+
+298
+00:23:41,000 --> 00:23:48,000
+Each ID consists from the short abbreviation dash and number like you can see here.
+
+299
+00:23:49,000 --> 00:23:57,000
+Let dash four or here, let dash five to change the project key or just to find it.
+
+300
+00:23:57,000 --> 00:24:00,000
+You can go to the project settings.
+
+301
+00:24:00,000 --> 00:24:08,000
+So click on the project settings in the left pane and here in Details section, you can check the key
+
+302
+00:24:08,000 --> 00:24:08,000
+field.
+
+303
+00:24:08,000 --> 00:24:14,000
+So just copy it and paste it in your web app configuration.
+
+304
+00:24:14,000 --> 00:24:21,000
+Max Results Property is also configured in the Myapp properties, and as you can see, this equal to
+
+305
+00:24:21,000 --> 00:24:29,000
+100 because according to the documentation, it is max amount of items allowed to return within one
+
+306
+00:24:29,000 --> 00:24:30,000
+single query.
+
+307
+00:24:31,000 --> 00:24:35,000
+But what to do in case there is more than 100 work items in the backlog?
+
+308
+00:24:36,000 --> 00:24:39,000
+Jira API implements pagination approach.
+
+309
+00:24:39,000 --> 00:24:45,000
+Basically, in each response, you receive information about the total amount of records available in
+
+310
+00:24:45,000 --> 00:24:47,000
+scope of the current request.
+
+311
+00:24:47,000 --> 00:24:52,000
+For example, you receive 100 value in the max results attribute.
+
+312
+00:24:53,000 --> 00:24:58,000
+That means that you can count on reading 100 records from the current request.
+
+313
+00:24:59,000 --> 00:25:02,000
+Also, in each request you will receive the total field.
+
+314
+00:25:03,000 --> 00:25:08,000
+This field contains information about total amount of records that match your query.
+
+315
+00:25:09,000 --> 00:25:16,000
+And you also receive start at attribute that tells you from which record the list is started.
+
+316
+00:25:16,000 --> 00:25:25,000
+Usually it is zero here, but during the request you can specify start at attribute and thus receives
+
+317
+00:25:25,000 --> 00:25:27,000
+the next 100 tickets.
+
+318
+00:25:27,000 --> 00:25:34,000
+But be attentive with numbers because indexing is started not from one but from zero.
+
+319
+00:25:34,000 --> 00:25:41,000
+And your homework would be to implement just enough code to handle pagination of Jira API.
+
+320
+00:25:42,000 --> 00:25:43,000
+Write it down.
+
+321
+00:25:43,000 --> 00:25:46,000
+It would be a nice practice for you.
+
+322
+00:25:46,000 --> 00:25:53,000
+So basically you would need to call Jira API multiple times in case total amount of records is higher
+
+323
+00:25:53,000 --> 00:26:00,000
+than value in Max results attribute that actually specifies the amount of records returned.
+
+324
+00:26:01,000 --> 00:26:06,000
+Okay, so it looks like we are done with building the query.
+
+325
+00:26:06,000 --> 00:26:09,000
+Then create a http get request.
+
+326
+00:26:09,000 --> 00:26:16,000
+In this example I use Apache http client library, but you are welcome to use any library you wish.
+
+327
+00:26:17,000 --> 00:26:18,000
+Everything.
+
+328
+00:26:18,000 --> 00:26:24,000
+What happens next is passing the returned Json and namely array with issues.
+
+329
+00:26:24,000 --> 00:26:29,000
+But pay attention that I don't send the GPG as a whole array of issues.
+
+330
+00:26:29,000 --> 00:26:30,000
+Why?
+
+331
+00:26:30,000 --> 00:26:31,000
+Because of multiple reasons.
+
+332
+00:26:32,000 --> 00:26:34,000
+First of all, cost optimization.
+
+333
+00:26:34,000 --> 00:26:41,000
+I don't want to give redundant content that will not help me to find the answer on my questions.
+
+334
+00:26:41,000 --> 00:26:47,000
+So it is up to you to hold the business analysis and define what fields of Jira issues do you really
+
+335
+00:26:47,000 --> 00:26:54,000
+need that would make impact and will help to provide the end user with the answer to the question.
+
+336
+00:26:55,000 --> 00:26:59,000
+The second reason we need to remember about GPT model token limit.
+
+337
+00:27:00,000 --> 00:27:08,000
+I just try to not send redundant tokens and instead I would prefer to leave some space for useful information
+
+338
+00:27:08,000 --> 00:27:10,000
+that I can send to GPT.
+
+339
+00:27:11,000 --> 00:27:14,000
+The third reason I care about performance.
+
+340
+00:27:14,000 --> 00:27:23,000
+Again, I don't want to ask GPT to analyze more data than actually needed, thus will win some time
+
+341
+00:27:23,000 --> 00:27:24,000
+during the data processing.
+
+342
+00:27:25,000 --> 00:27:31,000
+The fourth reason I follow clean architecture principles in the OP design.
+
+343
+00:27:31,000 --> 00:27:40,000
+The idea that I follow here is to have business oriented entities, namely in case API will change.
+
+344
+00:27:40,000 --> 00:27:47,000
+I don't need to refactor the rest of the code in the application because the rest of my code depends
+
+345
+00:27:47,000 --> 00:27:48,000
+on the business entity.
+
+346
+00:27:48,000 --> 00:27:56,000
+Jira issue and in case API will change in the next versions, I would need to adjust only this method
+
+347
+00:27:56,000 --> 00:28:03,000
+in order to pass all required information and data properly and the rest of the code will keep using
+
+348
+00:28:03,000 --> 00:28:06,000
+the Jira issue programming interface.
+
+349
+00:28:07,000 --> 00:28:14,000
+To understand my answer better, you need just explore the details of each Jira issue and understand
+
+350
+00:28:14,000 --> 00:28:18,000
+how it looks like in the API in the lessons about Jira API.
+
+351
+00:28:18,000 --> 00:28:26,000
+Well, when you saw an example of extracting issue by key, as you can see while parsing the Json here,
+
+352
+00:28:26,000 --> 00:28:30,000
+I set the values into Jira issue objects properties.
+
+353
+00:28:30,000 --> 00:28:36,000
+Jira issue is my business entity that contains only that information that is needed according to my
+
+354
+00:28:36,000 --> 00:28:38,000
+business requirements.
+
+355
+00:28:38,000 --> 00:28:40,000
+Let's review the source code of this type.
+
+356
+00:28:41,000 --> 00:28:45,000
+So Jira issue contains such information.
+
+357
+00:28:45,000 --> 00:28:52,000
+Key Assignee Description Summary Status Due Date Project Key.
+
+358
+00:28:52,000 --> 00:28:58,000
+It belongs to project ID Project name Priority Issue Type.
+
+359
+00:28:59,000 --> 00:29:06,000
+And just to let you know that I also made some changes in my Jira and extended standard set of fields
+
+360
+00:29:06,000 --> 00:29:09,000
+with such fields as priority.
+
+361
+00:29:09,000 --> 00:29:11,000
+How to add new fields to Jira.
+
+362
+00:29:11,000 --> 00:29:14,000
+You can learn in the Jira section of this course.
+
+363
+00:29:15,000 --> 00:29:18,000
+Taking into account we already discussed this in the previous lesson.
+
+364
+00:29:18,000 --> 00:29:21,000
+I wouldn't stop on this too much.
+
+365
+00:29:21,000 --> 00:29:27,000
+Everything else in this class is just getters and setters, so nothing special.
+
+366
+00:29:27,000 --> 00:29:30,000
+Let's get back to the default Jira service.
+
+367
+00:29:30,000 --> 00:29:34,000
+So I iterated over each issue in Json.
+
+368
+00:29:34,000 --> 00:29:39,000
+I converted it to the Jira issue and added those to the list.
+
+369
+00:29:39,000 --> 00:29:43,000
+The list of Jira issues is returned from this method.
+
+370
+00:29:43,000 --> 00:29:48,000
+The second method is the one that we already reviewed in the previous lesson.
+
+371
+00:29:48,000 --> 00:29:55,000
+As I already mentioned, I refactored code a bit and moved this code from the Jira integration controller
+
+372
+00:29:55,000 --> 00:29:57,000
+to the default service.
+
+373
+00:29:58,000 --> 00:30:01,000
+Now you know how get Jira issues function works.
+
+374
+00:30:02,000 --> 00:30:10,000
+Once Jira service returns a list of Jira issues, I just need to convert it to the Json because we would
+
+375
+00:30:10,000 --> 00:30:17,000
+need to send this list back to the GP2 in order it could prepare an answer for us based on the whole
+
+376
+00:30:17,000 --> 00:30:18,000
+required data gathered.
+
+377
+00:30:19,000 --> 00:30:22,000
+Let's get back to the default GP2 service.
+
+378
+00:30:22,000 --> 00:30:28,000
+So function got executed and we received the Json response of this function.
+
+379
+00:30:29,000 --> 00:30:31,000
+Amazing what happens next.
+
+380
+00:30:32,000 --> 00:30:35,000
+Then I do the same thing that we already learned in the function call.
+
+381
+00:30:35,000 --> 00:30:43,000
+In lesson I create GP2 message because right now I need to add one more message to the context and then
+
+382
+00:30:43,000 --> 00:30:44,000
+send it back to the GP2.
+
+383
+00:30:45,000 --> 00:30:49,000
+The message should have function role in GP2 API.
+
+384
+00:30:49,000 --> 00:30:53,000
+There is a dedicated role reserved for the function responses.
+
+385
+00:30:54,000 --> 00:30:59,000
+Another interesting message that I implement here is called add message with token limit.
+
+386
+00:30:59,000 --> 00:31:06,000
+Imagine the case when you have a lot of messages already in the context and you fetched 100 zero items,
+
+387
+00:31:06,000 --> 00:31:09,000
+for example, or 200.
+
+388
+00:31:09,000 --> 00:31:16,000
+The main thing is that response that you received and want to add to the context will go over the tokens
+
+389
+00:31:16,000 --> 00:31:20,000
+limit defined by the GPT model selected.
+
+390
+00:31:20,000 --> 00:31:21,000
+Understood.
+
+391
+00:31:21,000 --> 00:31:27,000
+For example, imagine that your model selected supports 4000 tokens.
+
+392
+00:31:27,000 --> 00:31:34,000
+Just an example and you are going to add a response after function call that is 3000 tokens long.
+
+393
+00:31:34,000 --> 00:31:39,000
+But you also already have more than 2000 tokens in the context.
+
+394
+00:31:39,000 --> 00:31:41,000
+What to do in this case.
+
+395
+00:31:41,000 --> 00:31:49,000
+In order to not catch the exception, it is better to remove all the messages from the context and put
+
+396
+00:31:49,000 --> 00:31:52,000
+response after the function call into the context.
+
+397
+00:31:52,000 --> 00:32:00,000
+Agree that the purpose of this message In this method, I check whether the total length of the context,
+
+398
+00:32:00,000 --> 00:32:05,000
+together with the length of the new message that I want to add, will stay within the limits.
+
+399
+00:32:05,000 --> 00:32:11,000
+If no, then I remove from the context the element at zero index position.
+
+400
+00:32:12,000 --> 00:32:16,000
+That would be the oldest message in our Slack conversation.
+
+401
+00:32:16,000 --> 00:32:24,000
+And then I call this message again until we would be able to add the message taking into account we
+
+402
+00:32:24,000 --> 00:32:26,000
+have recursion here in this method.
+
+403
+00:32:26,000 --> 00:32:31,000
+It is super important to define the conditions of breaking the recursion.
+
+404
+00:32:31,000 --> 00:32:38,000
+So in case there are no messages left in the context, that means the size of the list with context
+
+405
+00:32:38,000 --> 00:32:42,000
+messages is equal to zero, then return from the message.
+
+406
+00:32:43,000 --> 00:32:50,000
+Then I set functions to null in order to optimize the costs by saving some more tokens on functions.
+
+407
+00:32:50,000 --> 00:32:51,000
+Description.
+
+408
+00:32:51,000 --> 00:32:58,000
+And then I have another important point in case there is zero messages left in the context.
+
+409
+00:32:58,000 --> 00:33:00,000
+I will not send requests to the GPU.
+
+410
+00:33:01,000 --> 00:33:08,000
+Instead, I will just return error message that tells end user to contact with the administrator because
+
+411
+00:33:08,000 --> 00:33:16,000
+the current model selected run out of tokens limit for this request and request cannot be processed.
+
+412
+00:33:16,000 --> 00:33:22,000
+Definitely you can implement all the logic to handle situations like this.
+
+413
+00:33:22,000 --> 00:33:29,000
+When this case may happen, imagine the case that the length of the function call response from Jira
+
+414
+00:33:29,000 --> 00:33:32,000
+would be 20,000 tokens.
+
+415
+00:33:32,000 --> 00:33:38,000
+Well, for example, it will depend on how you implement your solution and how big your Jira project
+
+416
+00:33:38,000 --> 00:33:39,000
+is.
+
+417
+00:33:39,000 --> 00:33:43,000
+But your model can handle only 4000 tokens.
+
+418
+00:33:43,000 --> 00:33:49,000
+Then our previous method that we have just reviewed will not add anything.
+
+419
+00:33:49,000 --> 00:33:56,000
+After removing all the context messages and in case we removed all messages from the context trying
+
+420
+00:33:56,000 --> 00:34:02,000
+to add the response from the function call, there is no sense to send request to GPU because we already
+
+421
+00:34:02,000 --> 00:34:09,000
+removed original request and our response after function call may also not fit within the context limits.
+
+422
+00:34:10,000 --> 00:34:13,000
+These are limitations that we need to accept.
+
+423
+00:34:13,000 --> 00:34:20,000
+So what I would recommend you to do in this case, if you follow the lesson attentively, you might
+
+424
+00:34:20,000 --> 00:34:27,000
+already hear the answer in the production version of this application that I use with my team to manage
+
+425
+00:34:27,000 --> 00:34:29,000
+our work and to collaborate.
+
+426
+00:34:29,000 --> 00:34:37,000
+I have multiple functions defined that return not all work items, but return only those items that
+
+427
+00:34:37,000 --> 00:34:38,000
+meets criteria.
+
+428
+00:34:38,000 --> 00:34:46,000
+Basically the query to filter on the requested issue is created and I don't need overwhelm the context
+
+429
+00:34:46,000 --> 00:34:51,000
+with data that is not required to answer my question.
+
+430
+00:34:51,000 --> 00:34:59,000
+For example, if I request information about the box, there is no need to fetch epics stories tasks.
+
+431
+00:34:59,000 --> 00:35:05,000
+If I ask question about child items of the specific epic, I don't need to provide GPU with all the
+
+432
+00:35:05,000 --> 00:35:10,000
+tickets that are not related to the specific epic from the conversation history.
+
+433
+00:35:10,000 --> 00:35:12,000
+Do you understand my point?
+
+434
+00:35:12,000 --> 00:35:19,000
+Anyway, in case something is not clear, please let me know about your questions in comments below
+
+435
+00:35:19,000 --> 00:35:22,000
+this video and I will be happy to answer.
+
+436
+00:35:22,000 --> 00:35:30,000
+In our code we send requests to the GPU and receive response and return this response to the end user.
+
+437
+00:35:30,000 --> 00:35:34,000
+That's how it works and we already hold the demo.
+
+438
+00:35:34,000 --> 00:35:38,000
+So I believe you can imagine end to end scenario.
+
+439
+00:35:38,000 --> 00:35:41,000
+Let's recap what we have learned in this lesson.
+
+440
+00:35:42,000 --> 00:35:48,000
+In this lesson, we learned how to integrate Jira Slack and our web application.
+
+441
+00:35:48,000 --> 00:35:52,000
+We implement function calling feature in our application.
+
+442
+00:35:53,000 --> 00:35:59,000
+I hold an end to end demo of web applications that's supposed to boost the collaboration within your
+
+443
+00:35:59,000 --> 00:35:59,000
+team.
+
+444
+00:36:00,000 --> 00:36:07,000
+We reviewed architecture of our application and discussed best practices of web application development
+
+445
+00:36:07,000 --> 00:36:09,000
+and saw how to apply them in practice.
+
+446
+00:36:10,000 --> 00:36:12,000
+That's all what I wanted to share with you in this lesson.
+
+447
+00:36:13,000 --> 00:36:14,000
+Thanks a lot for your attention.
+
+448
+00:36:14,000 --> 00:36:17,000
+Have a great day and see you in the next lesson.
+
diff --git a/100 - GPT + Slack + Jira + Gmail Integration/001 Source-code-of-examples-from-the-lesson-commit-with-changes-.url b/100 - GPT + Slack + Jira + Gmail Integration/001 Source-code-of-examples-from-the-lesson-commit-with-changes-.url
new file mode 100644
index 0000000000000000000000000000000000000000..ae8fc1a5c7a9f37f43e6bfe920c45f8bda62e0cf
--- /dev/null
+++ b/100 - GPT + Slack + Jira + Gmail Integration/001 Source-code-of-examples-from-the-lesson-commit-with-changes-.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/commit/cb46583146e15ddd4782ab32315c14ca55f73edf
\ No newline at end of file
diff --git a/100 - GPT + Slack + Jira + Gmail Integration/002 Create-Jira-ticket-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-.url b/100 - GPT + Slack + Jira + Gmail Integration/002 Create-Jira-ticket-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
new file mode 100644
index 0000000000000000000000000000000000000000..169ad221492b0f33a2f82504114b058b4a916bcf
--- /dev/null
+++ b/100 - GPT + Slack + Jira + Gmail Integration/002 Create-Jira-ticket-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/commit/7853021ac12529fcb1c58f49f6d9495624f8850b
\ No newline at end of file
diff --git a/100 - GPT + Slack + Jira + Gmail Integration/002 Generate Tickets in Jira & Send Email from Slack via Chat Interface_en.srt b/100 - GPT + Slack + Jira + Gmail Integration/002 Generate Tickets in Jira & Send Email from Slack via Chat Interface_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..a8fac2f2a390cde9662bf833b40a6758192ce147
--- /dev/null
+++ b/100 - GPT + Slack + Jira + Gmail Integration/002 Generate Tickets in Jira & Send Email from Slack via Chat Interface_en.srt
@@ -0,0 +1,1136 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Tim.
+
+2
+00:00:06,000 --> 00:00:12,000
+In this video we are going to learn a few more use cases of using our board together with a ChatGPT.
+
+3
+00:00:12,000 --> 00:00:18,000
+We don't have any long agenda for today because today we're actually not going to learn new tools,
+
+4
+00:00:18,000 --> 00:00:20,000
+new approaches, new theory.
+
+5
+00:00:20,000 --> 00:00:27,000
+Basically, we are going to use a similar approach that we used in previous lesson, namely using GPT
+
+6
+00:00:27,000 --> 00:00:33,000
+function called feature in order to invoke the correct function based on the context when it will be
+
+7
+00:00:33,000 --> 00:00:33,000
+needed.
+
+8
+00:00:33,000 --> 00:00:39,000
+That's why in this video we are going to review simple but still important and very useful business
+
+9
+00:00:39,000 --> 00:00:40,000
+use cases.
+
+10
+00:00:40,000 --> 00:00:46,000
+They are preparing, generating and send an email using chat interface.
+
+11
+00:00:46,000 --> 00:00:53,000
+In this scenario, we will ask our bot to prepare an email and it will use GPT to generate an email
+
+12
+00:00:53,000 --> 00:01:00,000
+for us and then would ask bot to send an email to a specific user telling us the name of the user and
+
+13
+00:01:00,000 --> 00:01:08,000
+my bot together with GPT, will handle the rest of the things I'm going to show you in this lesson how
+
+14
+00:01:08,000 --> 00:01:09,000
+it works.
+
+15
+00:01:09,000 --> 00:01:16,000
+And I believe that this is really useful scenario to implement because it will save a lot of hours at
+
+16
+00:01:16,000 --> 00:01:16,000
+work.
+
+17
+00:01:16,000 --> 00:01:23,000
+And the second scenario is that we are going to review today is generating a work items in Jira using
+
+18
+00:01:23,000 --> 00:01:25,000
+chat interface.
+
+19
+00:01:25,000 --> 00:01:32,000
+In previous lesson I showed you how to use Jira as data source and get additional context to answer
+
+20
+00:01:32,000 --> 00:01:33,000
+and user requests.
+
+21
+00:01:33,000 --> 00:01:41,000
+Basically, when the user asked our bot about state of the work, we did a request to Jira and added
+
+22
+00:01:41,000 --> 00:01:44,000
+information about work items to the context.
+
+23
+00:01:44,000 --> 00:01:52,000
+So in this lesson I am going to show you how to post data to Jira using our bot and ChatGPT will keep
+
+24
+00:01:52,000 --> 00:01:57,000
+using Jira API for such purposes and function calling mechanism.
+
+25
+00:01:57,000 --> 00:02:03,000
+So technically speaking we are going to use exactly the same approach we already used in previous lesson.
+
+26
+00:02:03,000 --> 00:02:06,000
+The same approach but different end result.
+
+27
+00:02:06,000 --> 00:02:12,000
+Of course, during the course I will not be able physically to cover all possible variety of potential
+
+28
+00:02:12,000 --> 00:02:16,000
+use cases where ChatGPT may be applied.
+
+29
+00:02:16,000 --> 00:02:22,000
+But with this lesson, I just want to give you a few more examples of how you can build powerful application
+
+30
+00:02:22,000 --> 00:02:24,000
+using AI support.
+
+31
+00:02:24,000 --> 00:02:25,000
+Let's start our lesson.
+
+32
+00:02:26,000 --> 00:02:30,000
+And as I already mentioned today, we are going to have a lot of practical examples.
+
+33
+00:02:30,000 --> 00:02:35,000
+So let me show you the end result that we are going to achieve by the end of the lesson.
+
+34
+00:02:36,000 --> 00:02:38,000
+Imagine that you need to send an email.
+
+35
+00:02:38,000 --> 00:02:41,000
+You clearly know what you want to send.
+
+36
+00:02:41,000 --> 00:02:45,000
+You also know whom you want to send the email to.
+
+37
+00:02:45,000 --> 00:02:52,000
+You just don't have too much time to put your thoughts on paper, Prepare an email and send it or you
+
+38
+00:02:52,000 --> 00:02:53,000
+are as lazy as I am.
+
+39
+00:02:54,000 --> 00:03:00,000
+Let me show you how both developed by me that takes advantage of GPT capabilities will help us to solve
+
+40
+00:03:00,000 --> 00:03:01,000
+this task.
+
+41
+00:03:02,000 --> 00:03:03,000
+I integrated.
+
+42
+00:03:03,000 --> 00:03:05,000
+GPT was developed by me web applications.
+
+43
+00:03:05,000 --> 00:03:08,000
+It is integrated with the Slack messenger too.
+
+44
+00:03:09,000 --> 00:03:15,000
+So at work I just put commands and slack every time I need help from GPT.
+
+45
+00:03:15,000 --> 00:03:23,000
+In this case, let me ask GPT to prepare an email for John, who is manager in my company and want to
+
+46
+00:03:23,000 --> 00:03:30,000
+invite John to the meeting to review the project he is working on discuss KPIs, risks and other project
+
+47
+00:03:30,000 --> 00:03:31,000
+related things.
+
+48
+00:03:32,000 --> 00:03:39,000
+I need to warn him to be prepared for this meeting and tell him the exact time, date and place of our
+
+49
+00:03:39,000 --> 00:03:39,000
+meeting.
+
+50
+00:03:39,000 --> 00:03:43,000
+So I just ask GPT to help me with this.
+
+51
+00:03:43,000 --> 00:03:52,000
+Then GPT generates an email for me and I must admit that the way how GPT structured this email is impressive.
+
+52
+00:03:52,000 --> 00:03:56,000
+I have email subject here, I have email body here.
+
+53
+00:03:56,000 --> 00:03:59,000
+I just need to put my signature and send it.
+
+54
+00:03:59,000 --> 00:04:06,000
+But sometimes I'm so lazy that I just want to have big red button under my hand that will do everything
+
+55
+00:04:06,000 --> 00:04:07,000
+what I need.
+
+56
+00:04:07,000 --> 00:04:13,000
+So I even don't want to open my outlook or Gmail or any other mail client.
+
+57
+00:04:13,000 --> 00:04:17,000
+I just ask GPT to send this email to John Doe.
+
+58
+00:04:17,000 --> 00:04:21,000
+I just add my signature at the end of the email and that's it.
+
+59
+00:04:21,000 --> 00:04:24,000
+What does my bot do on the background?
+
+60
+00:04:24,000 --> 00:04:30,000
+It understands based on the context that I want to send this email to John Doe.
+
+61
+00:04:30,000 --> 00:04:35,000
+That's why it searches for his email address in the data source configured.
+
+62
+00:04:35,000 --> 00:04:43,000
+It also understands where subject is finished and where email body is started, so the board gives me
+
+63
+00:04:43,000 --> 00:04:49,000
+proper arguments for my function that is in charge of sending emails based on the understanding of the
+
+64
+00:04:49,000 --> 00:04:50,000
+context.
+
+65
+00:04:51,000 --> 00:04:55,000
+And then I see confirmation that email was sent successfully.
+
+66
+00:04:55,000 --> 00:04:56,000
+Amazing.
+
+67
+00:04:56,000 --> 00:04:59,000
+Let me check the mailbox of John Doe.
+
+68
+00:05:00,000 --> 00:05:02,000
+As you may guess, this is a demo user with a.
+
+69
+00:05:03,000 --> 00:05:06,000
+Mailbox that created for the demo purposes.
+
+70
+00:05:06,000 --> 00:05:09,000
+That's why have access to his email.
+
+71
+00:05:09,000 --> 00:05:14,000
+And as we can see on the screen, John received my mail zero minutes ago.
+
+72
+00:05:14,000 --> 00:05:19,000
+The receiving time is the same as confirmation in my slack.
+
+73
+00:05:19,000 --> 00:05:24,000
+The remember when you last time prepared and sent emails so fast?
+
+74
+00:05:24,000 --> 00:05:28,000
+And of course opportunities for customization are endless.
+
+75
+00:05:28,000 --> 00:05:33,000
+You can book the online meeting if you wish or place meeting event to calendar.
+
+76
+00:05:33,000 --> 00:05:36,000
+There are no limits on the customization.
+
+77
+00:05:37,000 --> 00:05:43,000
+Like I always say that GPT is not a magic, but it is definitely a calculator for your brain.
+
+78
+00:05:43,000 --> 00:05:50,000
+By saying this, I mean like obviously you can do the math in your head and calculate long numbers on
+
+79
+00:05:50,000 --> 00:05:55,000
+paper, but you have calculator for this to boost your productivity, right?
+
+80
+00:05:55,000 --> 00:05:58,000
+So we live in an era of AI.
+
+81
+00:05:58,000 --> 00:06:02,000
+Let's use these tools to become even more productive and efficient.
+
+82
+00:06:03,000 --> 00:06:05,000
+Let me show you another example.
+
+83
+00:06:05,000 --> 00:06:11,000
+Imagine that you have engineering team and you need to create a bunch of user stories to fill out backlog
+
+84
+00:06:11,000 --> 00:06:12,000
+for them.
+
+85
+00:06:12,000 --> 00:06:17,000
+Of course you can do it manually, but let's take advantage of ChatGPT.
+
+86
+00:06:17,000 --> 00:06:22,000
+And again, using our team messenger, I just tell GPT what I need.
+
+87
+00:06:23,000 --> 00:06:27,000
+I ask it to create a user story that should be assigned to John Doe.
+
+88
+00:06:28,000 --> 00:06:31,000
+I explain briefly what this user story is about.
+
+89
+00:06:31,000 --> 00:06:37,000
+It is about card component in the e-commerce web app that we work on right now.
+
+90
+00:06:37,000 --> 00:06:40,000
+I also specified due date for this task.
+
+91
+00:06:40,000 --> 00:06:48,000
+After waiting a few moments GPT generated for me user story description with acceptance criteria and
+
+92
+00:06:48,000 --> 00:06:50,000
+even generated a ticket in the Jira.
+
+93
+00:06:50,000 --> 00:06:52,000
+Yeah, it is really fantastic.
+
+94
+00:06:53,000 --> 00:06:59,000
+I use this tool that I developed in my company and it boosted the productivity in my team significantly.
+
+95
+00:06:59,000 --> 00:07:04,000
+From now on we don't have user stories without complete description.
+
+96
+00:07:04,000 --> 00:07:07,000
+Like I said, GPT is not a magic tool.
+
+97
+00:07:07,000 --> 00:07:13,000
+I still recommend to verify everything what was generated here, but it doesn't take so much time in
+
+98
+00:07:13,000 --> 00:07:16,000
+comparison when we create requirements from scratch.
+
+99
+00:07:17,000 --> 00:07:21,000
+Here is a direct link to the Jira ticket generated too.
+
+100
+00:07:21,000 --> 00:07:24,000
+Let's click on it and see what we have there.
+
+101
+00:07:25,000 --> 00:07:27,000
+You can see that issue type is story.
+
+102
+00:07:28,000 --> 00:07:34,000
+I will teach you how to develop your bot in such a way that it would recognize what issue type you want
+
+103
+00:07:34,000 --> 00:07:35,000
+to create in Jira.
+
+104
+00:07:35,000 --> 00:07:37,000
+Summary Description.
+
+105
+00:07:37,000 --> 00:07:39,000
+Everything is on place.
+
+106
+00:07:39,000 --> 00:07:45,000
+Pay attention that assignee is also configured and due date is set to August 31st.
+
+107
+00:07:45,000 --> 00:07:46,000
+Like we asked.
+
+108
+00:07:47,000 --> 00:07:48,000
+Amazing.
+
+109
+00:07:48,000 --> 00:07:52,000
+And now imagine how this will boost productivity of your engineering teams.
+
+110
+00:07:52,000 --> 00:07:57,000
+How much time and thus money will you able to save?
+
+111
+00:07:57,000 --> 00:08:00,000
+And of course, this is just one simple example.
+
+112
+00:08:00,000 --> 00:08:04,000
+Imagine that you can boost your planning or refinement sessions.
+
+113
+00:08:04,000 --> 00:08:11,000
+For example, you can ask GPT to analyze the context and complexity of previously estimated user stories
+
+114
+00:08:11,000 --> 00:08:16,000
+and ask it to make estimation of not estimated user stories.
+
+115
+00:08:16,000 --> 00:08:22,000
+Of course, you can verify the estimation with the team and change it later if you wish, but again,
+
+116
+00:08:22,000 --> 00:08:24,000
+this will boost your productivity.
+
+117
+00:08:25,000 --> 00:08:31,000
+You can also ask the board that uses GPT capabilities to calculate average teams velocity and prepare
+
+118
+00:08:31,000 --> 00:08:39,000
+the scope of the next sprint based on the estimated tickets from the backlog and even to make preliminary
+
+119
+00:08:39,000 --> 00:08:42,000
+user stories assignment on team members.
+
+120
+00:08:42,000 --> 00:08:48,000
+If only I was an owner of Jira Software or Azure DevOps, I would implement inbuilt support of so many
+
+121
+00:08:48,000 --> 00:08:49,000
+cool features.
+
+122
+00:08:49,000 --> 00:08:55,000
+But while they are still working on them inside my company, I implemented custom solutions that I use
+
+123
+00:08:55,000 --> 00:08:56,000
+with my team.
+
+124
+00:08:57,000 --> 00:09:01,000
+Now it is time to review the source code and implementation.
+
+125
+00:09:01,000 --> 00:09:06,000
+As always, you can find the source code in attachments to the video.
+
+126
+00:09:06,000 --> 00:09:11,000
+Taking into account that in this lesson we are going to use the same approach that we already learned
+
+127
+00:09:11,000 --> 00:09:13,000
+in previous lesson.
+
+128
+00:09:13,000 --> 00:09:19,000
+I will show you demo and will make an overview of the implementation without stopping on the things
+
+129
+00:09:19,000 --> 00:09:22,000
+that we already learned in previous lesson.
+
+130
+00:09:22,000 --> 00:09:28,000
+And even in case you would have any questions, please do not hesitate to ask your questions below the
+
+131
+00:09:28,000 --> 00:09:31,000
+video and I will be happy to answer.
+
+132
+00:09:31,000 --> 00:09:37,000
+Let me start the review from the implementation of scenarios that will generate tickets for us in Jira.
+
+133
+00:09:38,000 --> 00:09:44,000
+Basically, together, we did a great job in previous lessons by implementing scalable architecture
+
+134
+00:09:45,000 --> 00:09:51,000
+that is advantage of all approach in comparison to pure functional programming approach.
+
+135
+00:09:51,000 --> 00:10:00,000
+The advantage becomes obvious on a bigger scale and as amount of code grows, the logic and principles
+
+136
+00:10:00,000 --> 00:10:07,000
+used to build our program helps us to scale faster and reliably without the risk of breaking the code
+
+137
+00:10:07,000 --> 00:10:09,000
+that we wrote before.
+
+138
+00:10:09,000 --> 00:10:15,000
+So the only thing that we need to do is to add additional functions that would be in charge of creation
+
+139
+00:10:15,000 --> 00:10:22,000
+ticket in Jira, because we already implemented code that gathers all beans of GPT functions and then
+
+140
+00:10:22,000 --> 00:10:24,000
+request to call functions.
+
+141
+00:10:24,000 --> 00:10:27,000
+All this was already implemented.
+
+142
+00:10:27,000 --> 00:10:31,000
+So let me open beans configuration class here.
+
+143
+00:10:31,000 --> 00:10:39,000
+I declared bin of GPT function and called it GPT Create Jira issue function as usual.
+
+144
+00:10:39,000 --> 00:10:42,000
+I created function, set, name and description.
+
+145
+00:10:42,000 --> 00:10:45,000
+And now let's talk about parameters.
+
+146
+00:10:45,000 --> 00:10:52,000
+So my function would require GPT to define the following parameters based on the context and give me
+
+147
+00:10:52,000 --> 00:10:53,000
+them in order.
+
+148
+00:10:53,000 --> 00:11:01,000
+I can make a request to Jira API, so I need to assign name work item description.
+
+149
+00:11:01,000 --> 00:11:07,000
+By the way, I expect that GPT will help me with both things to find the description for work item in
+
+150
+00:11:07,000 --> 00:11:12,000
+the context and actually to generate it based on my request first.
+
+151
+00:11:12,000 --> 00:11:19,000
+So GPT will generate the full description for the work item like you saw in the demo and then it will
+
+152
+00:11:19,000 --> 00:11:23,000
+give me the description in order I can create a work item in Jira.
+
+153
+00:11:24,000 --> 00:11:32,000
+Also, I need issue type attribute in order to understand what work item I need to create user story
+
+154
+00:11:32,000 --> 00:11:34,000
+task epic bug.
+
+155
+00:11:34,000 --> 00:11:42,000
+You can see that I also pass array of possible issue types in case ChatGPT can find information about
+
+156
+00:11:42,000 --> 00:11:45,000
+you date based on the context.
+
+157
+00:11:45,000 --> 00:11:52,000
+I would also ask it to provide me with it and the summary of the work item for the title in parameters.
+
+158
+00:11:52,000 --> 00:11:58,000
+I also specified that summary description, issue type and due date are required attributes, but if
+
+159
+00:11:58,000 --> 00:12:05,000
+you already worked with ChatGPT in previous lessons, I believe that you already understand that all
+
+160
+00:12:05,000 --> 00:12:08,000
+of this is just a recommendation for ChatGPT.
+
+161
+00:12:09,000 --> 00:12:16,000
+So even in case it wouldn't find due date, it still can request to call the function, but without
+
+162
+00:12:16,000 --> 00:12:16,000
+due date.
+
+163
+00:12:17,000 --> 00:12:24,000
+I had such cases and I will be honest with you, I hope that guys from OpenAI will keep improving their
+
+164
+00:12:24,000 --> 00:12:24,000
+product.
+
+165
+00:12:24,000 --> 00:12:27,000
+But based on today it works like this.
+
+166
+00:12:28,000 --> 00:12:31,000
+Still, I decided to keep due date as required attribute.
+
+167
+00:12:32,000 --> 00:12:38,000
+You can explore my source code and try different options and select the ones that works the best for
+
+168
+00:12:38,000 --> 00:12:40,000
+you to address your business needs.
+
+169
+00:12:40,000 --> 00:12:46,000
+You can see that all values are configurable and located in my properties file.
+
+170
+00:12:46,000 --> 00:12:53,000
+Feel free to explore the attribute descriptions, but I bet there will not be any surprises for you.
+
+171
+00:12:53,000 --> 00:13:01,000
+I just described for ChatGPT what each attribute means and in similar way I created classes of required
+
+172
+00:13:01,000 --> 00:13:02,000
+entities.
+
+173
+00:13:02,000 --> 00:13:08,000
+I wouldn't stop on that too, because in previous lesson we also created classes for entities.
+
+174
+00:13:08,000 --> 00:13:15,000
+So I can just confirm that I used this same approach and principles here in case Jira will decide to
+
+175
+00:13:15,000 --> 00:13:23,000
+invoke the function I will take from the context create Jira issue function been that I also configure
+
+176
+00:13:23,000 --> 00:13:24,000
+it here.
+
+177
+00:13:24,000 --> 00:13:33,000
+Let's check this function according to the interface it implements one method execute so I pass arguments
+
+178
+00:13:33,000 --> 00:13:40,000
+in order to not pass arguments one by one, I created separate entity and pass all arguments directly
+
+179
+00:13:40,000 --> 00:13:41,000
+to Jira.
+
+180
+00:13:41,000 --> 00:13:44,000
+Issue fields object in general service.
+
+181
+00:13:44,000 --> 00:13:48,000
+I implemented method that is called create Jira issue.
+
+182
+00:13:48,000 --> 00:13:53,000
+It will be in charge of creation of work item in Jira.
+
+183
+00:13:54,000 --> 00:13:56,000
+Let me open the source code of the default.
+
+184
+00:13:57,000 --> 00:14:00,000
+Service class and show you the implementation of that message.
+
+185
+00:14:01,000 --> 00:14:08,000
+And here you can see implementation of the message using Jira API documentation that we reviewed in
+
+186
+00:14:08,000 --> 00:14:09,000
+the lesson about Jira API.
+
+187
+00:14:10,000 --> 00:14:17,000
+I created URL and http post request object and here goes specifics of Jira API.
+
+188
+00:14:18,000 --> 00:14:23,000
+I just need to prepare the body of the post request and also for assignee.
+
+189
+00:14:23,000 --> 00:14:30,000
+I need to extract Jira user ID because according to API it is not enough to parse the name.
+
+190
+00:14:31,000 --> 00:14:37,000
+So based on the name I extract Jira user id and I have separate method for that.
+
+191
+00:14:37,000 --> 00:14:44,000
+In Jira Cloud there is an endpoint that returns the array of users and you can work with it as you wish.
+
+192
+00:14:44,000 --> 00:14:47,000
+In order to find Jira user ID.
+
+193
+00:14:47,000 --> 00:14:54,000
+So I created here Jira request body object that contains fields property.
+
+194
+00:14:54,000 --> 00:15:00,000
+Fields contains assignee issue type project description due date summary.
+
+195
+00:15:01,000 --> 00:15:06,000
+Then set the Jira request body to the Http post object as an entity.
+
+196
+00:15:07,000 --> 00:15:13,000
+This is interface of Apache http client that we already used and learned before.
+
+197
+00:15:13,000 --> 00:15:16,000
+That's why don't stop on this too much.
+
+198
+00:15:16,000 --> 00:15:19,000
+Then I should receive response from Jira.
+
+199
+00:15:19,000 --> 00:15:25,000
+And here in Commented Lines you can see the example of response that I expect to receive.
+
+200
+00:15:26,000 --> 00:15:33,000
+I extract only value of the key attribute and in the create Jira issue function class you saw that I
+
+201
+00:15:33,000 --> 00:15:41,000
+returned back the year of the ticket in know the GPT can let our end user know the idea of the ticket
+
+202
+00:15:41,000 --> 00:15:42,000
+that was created.
+
+203
+00:15:42,000 --> 00:15:49,000
+And also another important point in order to improve user experience in the default slack service method,
+
+204
+00:15:49,000 --> 00:15:54,000
+I created a method that is called add hyper references to Jira.
+
+205
+00:15:55,000 --> 00:16:02,000
+This method finds the Jira ticket IDs based on the pattern configured in the regular expression that
+
+206
+00:16:02,000 --> 00:16:10,000
+takes into account Jira, project name, dash and number and substitute all Jira tickets mentions by
+
+207
+00:16:10,000 --> 00:16:12,000
+adding hyper reference in the parentheses.
+
+208
+00:16:12,000 --> 00:16:14,000
+Next is the Jira key.
+
+209
+00:16:14,000 --> 00:16:20,000
+This is just an additional feature that I added in order to improve user experience for end user by
+
+210
+00:16:20,000 --> 00:16:24,000
+having linked to the Jira in the chat like you saw in the demo.
+
+211
+00:16:25,000 --> 00:16:26,000
+Basically that's it.
+
+212
+00:16:27,000 --> 00:16:32,000
+Like I said, you can find the reference to the source code in attachments to the video.
+
+213
+00:16:32,000 --> 00:16:34,000
+Feel free to look through the solution.
+
+214
+00:16:34,000 --> 00:16:40,000
+I believe there will be nothing new to you because we learned already everything what is required to
+
+215
+00:16:40,000 --> 00:16:42,000
+implement this solution.
+
+216
+00:16:42,000 --> 00:16:47,000
+But still, in case you would have any specific question, I'm here to help.
+
+217
+00:16:47,000 --> 00:16:52,000
+Let's review now the second scenario with sending an email in the similar way.
+
+218
+00:16:52,000 --> 00:16:55,000
+Let me start overview from the beans configuration file.
+
+219
+00:16:56,000 --> 00:17:00,000
+I declare the beans that is called GPT Send email function.
+
+220
+00:17:00,000 --> 00:17:08,000
+I tell GPT which parameters I expect in order I can send an email so it is either addressee, email
+
+221
+00:17:08,000 --> 00:17:10,000
+or addressee name.
+
+222
+00:17:10,000 --> 00:17:16,000
+And again, everything will depend on the environment you work in and business requirements.
+
+223
+00:17:16,000 --> 00:17:23,000
+For example, current solution will send an email in case there will be email address in the context
+
+224
+00:17:23,000 --> 00:17:30,000
+and it will also send an email in case there will not be email address in the context, but in case
+
+225
+00:17:30,000 --> 00:17:34,000
+ChatGPT can get the full name of the addressee from the context.
+
+226
+00:17:34,000 --> 00:17:42,000
+In this case, ChatGPT will give me a name and I will find email address in the third party data source
+
+227
+00:17:42,000 --> 00:17:49,000
+and in my case I can integrate with internal data source where I can find email by full name.
+
+228
+00:17:49,000 --> 00:17:57,000
+For example, I can find email in Active Directory or whatever tool your organization uses, even from
+
+229
+00:17:57,000 --> 00:17:59,000
+Excel file if needed.
+
+230
+00:17:59,000 --> 00:18:05,000
+So just check the business requirements and decide how you want to implement this part of functionality.
+
+231
+00:18:05,000 --> 00:18:11,000
+And there are also two other attributes that we need email, subject and email content.
+
+232
+00:18:11,000 --> 00:18:12,000
+That's it.
+
+233
+00:18:12,000 --> 00:18:21,000
+Required attributes are content and subject in case ChatGPT will not be able to identify an email address
+
+234
+00:18:21,000 --> 00:18:22,000
+nor name of the addressee.
+
+235
+00:18:22,000 --> 00:18:29,000
+In this case, I will let end user know that I can't execute this function and that I need is an email
+
+236
+00:18:29,000 --> 00:18:30,000
+or full name.
+
+237
+00:18:31,000 --> 00:18:38,000
+Then, in case ChatGPT would ask me to call this function, I will extract send email function being
+
+238
+00:18:38,000 --> 00:18:39,000
+from the context.
+
+239
+00:18:39,000 --> 00:18:47,000
+Let's check how it is implemented in the send email function been injected mail service.
+
+240
+00:18:47,000 --> 00:18:54,000
+This is the type that will be responsible for sending an email in the execute method during the passing
+
+241
+00:18:54,000 --> 00:19:01,000
+of the arguments in case there is no email or addressee name, I returns a message that tells that email
+
+242
+00:19:01,000 --> 00:19:02,000
+wasn't sent and why.
+
+243
+00:19:03,000 --> 00:19:11,000
+In case there is no email but there is an addressee name, I try to extract email address first of our
+
+244
+00:19:11,000 --> 00:19:15,000
+user in case full email address can't be found.
+
+245
+00:19:15,000 --> 00:19:21,000
+I send back information that email wasn't sent and explains the reason why.
+
+246
+00:19:21,000 --> 00:19:27,000
+You can see that I use extract email by full name method from email service in order to extract the
+
+247
+00:19:27,000 --> 00:19:28,000
+email.
+
+248
+00:19:29,000 --> 00:19:33,000
+This is exactly the message that you need to decide how you would implement it.
+
+249
+00:19:33,000 --> 00:19:40,000
+You can read email addresses and full names from external data source, like for example, from the
+
+250
+00:19:40,000 --> 00:19:47,000
+database, from Active Directory, from Excel file, whatever data source you like the most.
+
+251
+00:19:47,000 --> 00:19:54,000
+In this specific learning example, I hardcoded map with full names and email addresses taking into
+
+252
+00:19:54,000 --> 00:19:57,000
+account this is application for my students.
+
+253
+00:19:57,000 --> 00:20:02,000
+I don't want to overcomplicate this example with one more integration.
+
+254
+00:20:02,000 --> 00:20:09,000
+One day we will learn about integration with Active Directory and we will update this example because
+
+255
+00:20:09,000 --> 00:20:13,000
+it is a separate, larger topic to talk about, not in scope of this lesson.
+
+256
+00:20:14,000 --> 00:20:19,000
+And send email method is implemented right above in the same file.
+
+257
+00:20:19,000 --> 00:20:27,000
+I configured gmail Smtp server for sending emails and again, this method can be implemented in different
+
+258
+00:20:27,000 --> 00:20:28,000
+ways.
+
+259
+00:20:28,000 --> 00:20:35,000
+You can use dedicated email client for sending emails from your board, or you can find a way to authenticate
+
+260
+00:20:35,000 --> 00:20:40,000
+and authorize access of the end user to his or her email.
+
+261
+00:20:40,000 --> 00:20:46,000
+And this configuration can be done during the bot installation or when start using the bot.
+
+262
+00:20:46,000 --> 00:20:52,000
+Again, there is unlimited variety of options of how you can build this integration.
+
+263
+00:20:52,000 --> 00:20:59,000
+The main thing is that you understand the key principles and if you understand them well, you are limited
+
+264
+00:20:59,000 --> 00:21:06,000
+only with your fantasy of how you want to implement this in the send email function source code.
+
+265
+00:21:06,000 --> 00:21:11,000
+You can see that in case email was sent and sent, email message returned.
+
+266
+00:21:11,000 --> 00:21:11,000
+True.
+
+267
+00:21:12,000 --> 00:21:19,000
+In case of success, I notify my board and GPG that email was sent in case there was some exception
+
+268
+00:21:19,000 --> 00:21:21,000
+during email sending.
+
+269
+00:21:21,000 --> 00:21:28,000
+Send email message will return false and will confirm that email wasn't sent with adding reasoning message.
+
+270
+00:21:29,000 --> 00:21:30,000
+Basically that's it.
+
+271
+00:21:31,000 --> 00:21:36,000
+If you are interested in how I send an email, you can spend a little bit more time reviewing the source
+
+272
+00:21:36,000 --> 00:21:38,000
+code of the default mail service.
+
+273
+00:21:39,000 --> 00:21:44,000
+Even in case you would have any questions or in case you would like me to review this topic in details,
+
+274
+00:21:44,000 --> 00:21:46,000
+I am just two clicks away.
+
+275
+00:21:47,000 --> 00:21:51,000
+You can write your question below this video and I will be happy to answer.
+
+276
+00:21:51,000 --> 00:21:54,000
+Okay, that's it for this lesson.
+
+277
+00:21:54,000 --> 00:21:57,000
+Let's recap what we have learned today.
+
+278
+00:21:57,000 --> 00:22:03,000
+In this lesson, we reviewed two scenarios to business use cases of how you can apply your knowledge
+
+279
+00:22:03,000 --> 00:22:05,000
+and practice with ChatGPT.
+
+280
+00:22:05,000 --> 00:22:12,000
+They are creating work item in Jira, generating description and summary for Jira ticket directly from
+
+281
+00:22:12,000 --> 00:22:20,000
+the slack and the second scenario preparation of email and sending it via a chat interface.
+
+282
+00:22:20,000 --> 00:22:22,000
+That's all for today.
+
+283
+00:22:22,000 --> 00:22:24,000
+Thanks a lot for your attention.
+
+284
+00:22:24,000 --> 00:22:27,000
+Have a great day and see you in the next lesson.
+
diff --git a/100 - GPT + Slack + Jira + Gmail Integration/002 Generate-email-and-send-it-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-.url b/100 - GPT + Slack + Jira + Gmail Integration/002 Generate-email-and-send-it-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
new file mode 100644
index 0000000000000000000000000000000000000000..c02c669d0f3d496fea4c98bff1194a329c4c5ebe
--- /dev/null
+++ b/100 - GPT + Slack + Jira + Gmail Integration/002 Generate-email-and-send-it-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/commit/5fa99c435a722527fccb152de538e113cb397985
\ No newline at end of file
diff --git a/100 - GPT + Slack + Jira + Gmail Integration/external-links.txt b/100 - GPT + Slack + Jira + Gmail Integration/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..10d0ea3849cba6a954d2f9db7578312d8eeafde7
--- /dev/null
+++ b/100 - GPT + Slack + Jira + Gmail Integration/external-links.txt
@@ -0,0 +1,9 @@
+
+001 Source-code-of-examples-from-the-lesson-commit-with-changes-
+https://github.com/AndriiPiatakha/openai-learnit/commit/cb46583146e15ddd4782ab32315c14ca55f73edf
+
+002 Create-Jira-ticket-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-
+https://github.com/AndriiPiatakha/openai-learnit/commit/7853021ac12529fcb1c58f49f6d9495624f8850b
+
+002 Generate-email-and-send-it-from-chat-Source-code-of-examples-from-the-lesson-commit-with-changes-
+https://github.com/AndriiPiatakha/openai-learnit/commit/5fa99c435a722527fccb152de538e113cb397985
diff --git a/101 - Manage a Scrum Team with ChatGPT/001 Average-velocity-calculation-Source-code-of-examples-from-the-lesson-commit-with-changes-.url b/101 - Manage a Scrum Team with ChatGPT/001 Average-velocity-calculation-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
new file mode 100644
index 0000000000000000000000000000000000000000..1910373321d2d14ef88421b2e5cfb17851837a5e
--- /dev/null
+++ b/101 - Manage a Scrum Team with ChatGPT/001 Average-velocity-calculation-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/commit/e4266b6cc3cb9c1021bd8810471fd6fa7c21ca64
\ No newline at end of file
diff --git a/101 - Manage a Scrum Team with ChatGPT/001 Managing Scrum & Risk Management with Custom Bot, Slack & GPT_en.srt b/101 - Manage a Scrum Team with ChatGPT/001 Managing Scrum & Risk Management with Custom Bot, Slack & GPT_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..e23565aca28625b85c689c95cf26e915bfecb28b
--- /dev/null
+++ b/101 - Manage a Scrum Team with ChatGPT/001 Managing Scrum & Risk Management with Custom Bot, Slack & GPT_en.srt
@@ -0,0 +1,560 @@
+1
+00:00:05,000 --> 00:00:07,000
+Hello, my name is Andre Petaja.
+
+2
+00:00:07,000 --> 00:00:14,000
+Let me show you how I use boards that I develop that use capabilities of ChatGPT in order to perform
+
+3
+00:00:14,000 --> 00:00:16,000
+project management operational activities.
+
+4
+00:00:17,000 --> 00:00:23,000
+Right now, I want to show you the scenario, how I use board with ChatGPT to boost my sprint planning
+
+5
+00:00:23,000 --> 00:00:25,000
+and sprint preparation activities.
+
+6
+00:00:25,000 --> 00:00:31,000
+If you are a project manager who has experience with Scrum methodology, you know that during spring
+
+7
+00:00:31,000 --> 00:00:37,000
+planning it is better to know teams capacity for the next sprint in order to be more accurate during
+
+8
+00:00:37,000 --> 00:00:38,000
+the planning.
+
+9
+00:00:38,000 --> 00:00:44,000
+There are different approaches how to calculate teams capacity, but one of the approaches that I use
+
+10
+00:00:44,000 --> 00:00:49,000
+is calculation of sprint capacity based on the average velocity in story points.
+
+11
+00:00:49,000 --> 00:00:56,000
+So usually I take amount of story points delivered in the last 2 or 3 sprints and calculate average
+
+12
+00:00:56,000 --> 00:00:57,000
+velocity.
+
+13
+00:00:57,000 --> 00:01:03,000
+Then, based on the average velocity, I define teams capacity in order to plan sprint.
+
+14
+00:01:04,000 --> 00:01:10,000
+In the current example you can see that I created fake sprints with fake data in order to have some
+
+15
+00:01:10,000 --> 00:01:12,000
+data for the use case that I want to demo.
+
+16
+00:01:13,000 --> 00:01:20,000
+I closed three sprints with the user stories and I received the following data in the sprint.
+
+17
+00:01:20,000 --> 00:01:24,000
+Number one, my team delivered 16 story points in the sprint.
+
+18
+00:01:24,000 --> 00:01:32,000
+Number two, my team managed to complete 14 story points and in the sprint three also 14 story points.
+
+19
+00:01:33,000 --> 00:01:38,000
+We are going to use this data in our example in order to review end to end scenario.
+
+20
+00:01:39,000 --> 00:01:45,000
+And now imagine that I have a conversation in Slack Messenger with my team members or with my Scrum
+
+21
+00:01:45,000 --> 00:01:50,000
+Masters and I just want to get more information about the average velocity.
+
+22
+00:01:50,000 --> 00:01:53,000
+I need this information to hold planning.
+
+23
+00:01:53,000 --> 00:01:56,000
+I can just ask my bot in chat.
+
+24
+00:01:56,000 --> 00:02:03,000
+What is the average velocity based on the previously completed three sprints and receive a response.
+
+25
+00:02:03,000 --> 00:02:10,000
+14.67 story points, which is correct based on the data we received from Jira.
+
+26
+00:02:11,000 --> 00:02:19,000
+I can clarify the average velocity based on the previous two sprints and the answer is 14 story points
+
+27
+00:02:19,000 --> 00:02:27,000
+is it is also correct because in Sprint two and Sprint three, my team delivered 14 story points per
+
+28
+00:02:27,000 --> 00:02:34,000
+each sprint and I know that I can open velocity charts in Jira and take information from there.
+
+29
+00:02:34,000 --> 00:02:39,000
+But what if this is a live chat and I want to receive information faster?
+
+30
+00:02:39,000 --> 00:02:46,000
+And this scenario is very simplified demo because in reality you can integrate these commands into more
+
+31
+00:02:46,000 --> 00:02:54,000
+complex scenarios like email preparation and its auto generation reports generation and many other different
+
+32
+00:02:54,000 --> 00:02:55,000
+generation scenarios.
+
+33
+00:02:55,000 --> 00:03:01,000
+But even using it in chat is pretty comfortable knowing this information.
+
+34
+00:03:01,000 --> 00:03:07,000
+I can proceed with planning, but in order you can understand the use case, let me show you how my
+
+35
+00:03:07,000 --> 00:03:09,000
+backlog looks like now.
+
+36
+00:03:09,000 --> 00:03:16,000
+In my backlog, I already have estimated workitems that by the way, also may be estimated with the
+
+37
+00:03:16,000 --> 00:03:22,000
+help of board and ChatGPT based on the analysis of the text description of the previous user stories.
+
+38
+00:03:23,000 --> 00:03:31,000
+Or we can train and fine tune our model in order to teach it how to define complexity based on the requirements.
+
+39
+00:03:31,000 --> 00:03:35,000
+But that case will be described and shown in the separate demo.
+
+40
+00:03:36,000 --> 00:03:41,000
+So here in the backlog, you can also see that user stories have priorities.
+
+41
+00:03:41,000 --> 00:03:48,000
+And when I plan Sprint, I want to take into consideration priorities and plan the user stories with
+
+42
+00:03:48,000 --> 00:03:56,000
+highest priorities and then with lowest, you can see that there are two heavy user stories with high
+
+43
+00:03:56,000 --> 00:03:59,000
+priority eight story points each.
+
+44
+00:03:59,000 --> 00:04:04,000
+That means, unfortunately, both of them doesn't fit into Sprint.
+
+45
+00:04:04,000 --> 00:04:12,000
+If our capacity is 14 story points and in this case, remaining space in Sprint should be filled out
+
+46
+00:04:12,000 --> 00:04:14,000
+by user stories with lower priorities.
+
+47
+00:04:14,000 --> 00:04:16,000
+Does it sound logical for you?
+
+48
+00:04:16,000 --> 00:04:26,000
+So let me ask now our board to plan Sprint four Considering that our capacity is 14 story points, I
+
+49
+00:04:26,000 --> 00:04:32,000
+decided to use average velocity based on the previous two sprints to calculate our capacity for the
+
+50
+00:04:32,000 --> 00:04:33,000
+next sprint.
+
+51
+00:04:33,000 --> 00:04:39,000
+And after a few moments my boss replies me that sprint was planned and such stories are included into
+
+52
+00:04:39,000 --> 00:04:44,000
+the sprint for the plan was done with respect to teams capacity.
+
+53
+00:04:45,000 --> 00:04:49,000
+Let me open Jira now and make sure that these changes are reflected.
+
+54
+00:04:50,000 --> 00:04:57,000
+So I refresh the page and I can see that Sprint four is planned with top priority items for certain
+
+55
+00:04:57,000 --> 00:05:02,000
+story points, and the only thing that is left is to start the sprint.
+
+56
+00:05:03,000 --> 00:05:09,000
+Another user story was high priority for eight story points, unfortunately doesn't fit into the sprint
+
+57
+00:05:09,000 --> 00:05:12,000
+and will be left for the following sprint planning.
+
+58
+00:05:13,000 --> 00:05:20,000
+That's how using chat interface I can check average velocity in story points and plan the following
+
+59
+00:05:20,000 --> 00:05:20,000
+sprint.
+
+60
+00:05:20,000 --> 00:05:28,000
+And just keep in mind that this is just one example and variety of other combinations or options for
+
+61
+00:05:28,000 --> 00:05:31,000
+how you can build your own board with chat.
+
+62
+00:05:31,000 --> 00:05:33,000
+GPT integration is unlimited.
+
+63
+00:05:34,000 --> 00:05:36,000
+Okay, let's review another example.
+
+64
+00:05:36,000 --> 00:05:42,000
+Now, I would like to show you how my board that is integrated with ChatGPT helps me to manage risks
+
+65
+00:05:42,000 --> 00:05:45,000
+and work with risks on daily basis.
+
+66
+00:05:45,000 --> 00:05:46,000
+Risk management.
+
+67
+00:05:46,000 --> 00:05:50,000
+That is something what is not specific only for scrum projects.
+
+68
+00:05:50,000 --> 00:05:57,000
+That's why no matter whether you worked with Scrum before or no, this example should be clear for you.
+
+69
+00:05:57,000 --> 00:06:01,000
+In case you are familiar with project management techniques according to PMI.
+
+70
+00:06:02,000 --> 00:06:05,000
+Let me start from the preconditions.
+
+71
+00:06:05,000 --> 00:06:09,000
+In our specific example, I configured separate board for risk management.
+
+72
+00:06:09,000 --> 00:06:13,000
+On this board I have only items with risk issue type.
+
+73
+00:06:14,000 --> 00:06:16,000
+This is a custom type that I created.
+
+74
+00:06:17,000 --> 00:06:18,000
+There are six risks.
+
+75
+00:06:18,000 --> 00:06:22,000
+Each risk has its own impact and probability.
+
+76
+00:06:22,000 --> 00:06:30,000
+Configure it and imagine that I want to streamline our conversation and have a chat about risks directly
+
+77
+00:06:30,000 --> 00:06:37,000
+in the messenger with my colleagues so I can use my board to ask questions about risks that we have
+
+78
+00:06:37,000 --> 00:06:38,000
+on our project.
+
+79
+00:06:39,000 --> 00:06:42,000
+For example, let's start with simple questions.
+
+80
+00:06:42,000 --> 00:06:45,000
+How many risks we have in total?
+
+81
+00:06:45,000 --> 00:06:49,000
+And when Jira is connected as a data source to the board.
+
+82
+00:06:49,000 --> 00:06:56,000
+I use ChatGPT linguistic capabilities to understand my request and provide me with the response.
+
+83
+00:06:56,000 --> 00:07:02,000
+In case you set priorities to risks and you need to review risks by priorities, I can ask board to
+
+84
+00:07:02,000 --> 00:07:09,000
+provide me with the requested information and you can see that I have one ticket with the highest priority,
+
+85
+00:07:09,000 --> 00:07:16,000
+one with high priority, and the rest of risks have the medium priority on the Kanban board.
+
+86
+00:07:16,000 --> 00:07:23,000
+You can check how accurate our board is and you can see that both provided us with correct information
+
+87
+00:07:23,000 --> 00:07:24,000
+about priorities.
+
+88
+00:07:24,000 --> 00:07:30,000
+That is because it is smart enough to process the data that is provided to the board on request.
+
+89
+00:07:30,000 --> 00:07:38,000
+ChatGPT identifies what information is needed and asks my board to provide necessary information.
+
+90
+00:07:38,000 --> 00:07:45,000
+My board fetches required information and provides it back to the GPT for the further analysis.
+
+91
+00:07:45,000 --> 00:07:47,000
+That is what is happening in the background.
+
+92
+00:07:48,000 --> 00:07:56,000
+If we want, we can ask to group all risks by statuses and a few moments after I receive the response,
+
+93
+00:07:56,000 --> 00:08:01,000
+we can see here clear breakdown of risk items by statuses.
+
+94
+00:08:01,000 --> 00:08:09,000
+I can request to group risks by impact and again, I receive information that I need that was analyzed
+
+95
+00:08:09,000 --> 00:08:11,000
+and processed by ChatGPT.
+
+96
+00:08:11,000 --> 00:08:15,000
+And you can ask to analyze any data you need.
+
+97
+00:08:15,000 --> 00:08:18,000
+If you need to group risks by probabilities.
+
+98
+00:08:18,000 --> 00:08:20,000
+You can also ask what to do.
+
+99
+00:08:20,000 --> 00:08:23,000
+So believe me, result will be correct.
+
+100
+00:08:24,000 --> 00:08:30,000
+And instead of this, imagine that you want to identify responsible team members who are in charge of
+
+101
+00:08:30,000 --> 00:08:33,000
+risks that are in backlog state.
+
+102
+00:08:33,000 --> 00:08:39,000
+I just want to know names of these heroes and team members in order to follow up with them and ask them
+
+103
+00:08:39,000 --> 00:08:45,000
+to process risks as soon as possible and ask this question to my board.
+
+104
+00:08:45,000 --> 00:08:52,000
+And it replies me that Andre Petaja is assigned to two risks that are in the backlog state now.
+
+105
+00:08:52,000 --> 00:08:56,000
+Now I know the name with whom I need to follow up.
+
+106
+00:08:56,000 --> 00:09:01,000
+I can tag the risk owner here or configure cron job with reminder.
+
+107
+00:09:02,000 --> 00:09:09,000
+For example, each morning responsible people are attacked in case they have risks that are still not
+
+108
+00:09:09,000 --> 00:09:10,000
+processed.
+
+109
+00:09:10,000 --> 00:09:17,000
+This would be ideal for big programs and it will help to boost the communication inside the team significantly.
+
+110
+00:09:18,000 --> 00:09:22,000
+Any team member, even without opening a Jira, can ask a follow up questions.
+
+111
+00:09:22,000 --> 00:09:29,000
+Like, for example, we can request additional details about these two risks in order to remember what
+
+112
+00:09:29,000 --> 00:09:36,000
+are they about and what provides me with only necessary information In order I can get better context
+
+113
+00:09:36,000 --> 00:09:37,000
+of the risks.
+
+114
+00:09:37,000 --> 00:09:43,000
+In response, I can find information about assignee, risk, description, impact and probability.
+
+115
+00:09:44,000 --> 00:09:51,000
+GPT also knows that each of these risks has its own mitigation plan and response strategies.
+
+116
+00:09:51,000 --> 00:09:56,000
+So let me then clarify these details and ask for additional details.
+
+117
+00:09:58,000 --> 00:10:03,000
+And this time I see information about mitigation plan and response strategies included.
+
+118
+00:10:03,000 --> 00:10:10,000
+The interesting thing to remember about is that ChatGPT sometimes generates additional details.
+
+119
+00:10:10,000 --> 00:10:18,000
+For example, in our specific case response strategy is just a single value from the dropdown.
+
+120
+00:10:18,000 --> 00:10:22,000
+But instead of writing that response strategy is mitigate.
+
+121
+00:10:22,000 --> 00:10:30,000
+We can see that additional text is added like in this example, implement measures to mitigate risk
+
+122
+00:10:30,000 --> 00:10:32,000
+instead of just mitigate.
+
+123
+00:10:32,000 --> 00:10:39,000
+The main idea is delivered correctly, but be aware that GPT can generate additional wording sometimes.
+
+124
+00:10:39,000 --> 00:10:46,000
+In the previous video I already showed you how we can create Jira issues using chat interface.
+
+125
+00:10:46,000 --> 00:10:48,000
+The same things may be applied here.
+
+126
+00:10:48,000 --> 00:10:51,000
+We can use our bot together with a chat.
+
+127
+00:10:51,000 --> 00:10:54,000
+GPT capabilities to generate risk Description.
+
+128
+00:10:54,000 --> 00:11:01,000
+Ask GPT to suggest US mitigation plan and put this data directly into the ticket.
+
+129
+00:11:01,000 --> 00:11:05,000
+I just don't see the reason to demo all seamless scenarios.
+
+130
+00:11:05,000 --> 00:11:10,000
+The main thing that I wanted to show you in this video is that you are not bound to the default types
+
+131
+00:11:10,000 --> 00:11:11,000
+in Jira.
+
+132
+00:11:11,000 --> 00:11:18,000
+You can customize your bot and take advantage of ChatGPT capabilities to build any customized business
+
+133
+00:11:18,000 --> 00:11:20,000
+logic or business flow that you need.
+
+134
+00:11:21,000 --> 00:11:22,000
+That's all for this video.
+
+135
+00:11:23,000 --> 00:11:29,000
+In case you are interested in the topic, check video description and feel free to ask your questions
+
+136
+00:11:29,000 --> 00:11:30,000
+in comments to the video.
+
+137
+00:11:31,000 --> 00:11:33,000
+I hope you enjoyed the video.
+
+138
+00:11:33,000 --> 00:11:39,000
+Put your thumbs up, leave the comments and follow the channel to not miss other interesting videos.
+
+139
+00:11:39,000 --> 00:11:40,000
+Have a great day.
+
+140
+00:11:40,000 --> 00:11:41,000
+Bye.
+
diff --git a/101 - Manage a Scrum Team with ChatGPT/001 Risk-management-Source-code-of-examples-from-the-lesson-commit-with-changes-.url b/101 - Manage a Scrum Team with ChatGPT/001 Risk-management-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
new file mode 100644
index 0000000000000000000000000000000000000000..05e5b87f6adec77632c375ca1551a7b44cf57ea7
--- /dev/null
+++ b/101 - Manage a Scrum Team with ChatGPT/001 Risk-management-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/commit/3110d2ed017c5c6ab196916359cb8c3983f063b5
\ No newline at end of file
diff --git a/101 - Manage a Scrum Team with ChatGPT/001 Sprint-Planning-Source-code-of-examples-from-the-lesson-commit-with-changes-.url b/101 - Manage a Scrum Team with ChatGPT/001 Sprint-Planning-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
new file mode 100644
index 0000000000000000000000000000000000000000..7e89971965e7e8345785085496c2f748829da651
--- /dev/null
+++ b/101 - Manage a Scrum Team with ChatGPT/001 Sprint-Planning-Source-code-of-examples-from-the-lesson-commit-with-changes-.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/commit/3f3e698451ac043734f0b0b56974a49385c9865d
\ No newline at end of file
diff --git a/101 - Manage a Scrum Team with ChatGPT/external-links.txt b/101 - Manage a Scrum Team with ChatGPT/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..fea8cb446f256215d53f36fe71fa8b54bd856b4e
--- /dev/null
+++ b/101 - Manage a Scrum Team with ChatGPT/external-links.txt
@@ -0,0 +1,9 @@
+
+001 Average-velocity-calculation-Source-code-of-examples-from-the-lesson-commit-with-changes-
+https://github.com/AndriiPiatakha/openai-learnit/commit/e4266b6cc3cb9c1021bd8810471fd6fa7c21ca64
+
+001 Sprint-Planning-Source-code-of-examples-from-the-lesson-commit-with-changes-
+https://github.com/AndriiPiatakha/openai-learnit/commit/3f3e698451ac043734f0b0b56974a49385c9865d
+
+001 Risk-management-Source-code-of-examples-from-the-lesson-commit-with-changes-
+https://github.com/AndriiPiatakha/openai-learnit/commit/3110d2ed017c5c6ab196916359cb8c3983f063b5
diff --git a/102 - DALL-E - Text to image AI Model by OpenAI/001 API-Reference-for-DALL-E-Model.url b/102 - DALL-E - Text to image AI Model by OpenAI/001 API-Reference-for-DALL-E-Model.url
new file mode 100644
index 0000000000000000000000000000000000000000..54e5cc04df89c7a1f5963d9f731d9e23ec927914
--- /dev/null
+++ b/102 - DALL-E - Text to image AI Model by OpenAI/001 API-Reference-for-DALL-E-Model.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://platform.openai.com/docs/api-reference/images
\ No newline at end of file
diff --git a/102 - DALL-E - Text to image AI Model by OpenAI/001 DALL-E Model & API Overview With Examples in Postman_en.srt b/102 - DALL-E - Text to image AI Model by OpenAI/001 DALL-E Model & API Overview With Examples in Postman_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..01f78080b7fae974cc9ec88f64be74dea00cf53b
--- /dev/null
+++ b/102 - DALL-E - Text to image AI Model by OpenAI/001 DALL-E Model & API Overview With Examples in Postman_en.srt
@@ -0,0 +1,1676 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, team.
+
+2
+00:00:06,000 --> 00:00:12,000
+In this video we are going to learn how to work with the API and understand what it is.
+
+3
+00:00:12,000 --> 00:00:16,000
+We are going to start this lesson from the general overview of the model.
+
+4
+00:00:16,000 --> 00:00:21,000
+Then I will explain you what a decoder and encoder are.
+
+5
+00:00:21,000 --> 00:00:23,000
+In transforming models.
+
+6
+00:00:23,000 --> 00:00:27,000
+We will review business use cases and limitations of the model.
+
+7
+00:00:27,000 --> 00:00:34,000
+I'm going to show you the API documentation and we will focus attention on the most important things.
+
+8
+00:00:34,000 --> 00:00:40,000
+Then we will learn how to use API and real examples I will share with you Postman collections that I
+
+9
+00:00:40,000 --> 00:00:45,000
+prepared specially for this lesson and we will work with the API.
+
+10
+00:00:45,000 --> 00:00:48,000
+We will generate images based on a text prompt.
+
+11
+00:00:48,000 --> 00:00:53,000
+Will edit images based on a text prompt and will create variations of an existing image.
+
+12
+00:00:53,000 --> 00:00:55,000
+Let's start our lesson.
+
+13
+00:00:56,000 --> 00:00:59,000
+Let's start from understanding of what Dali is.
+
+14
+00:00:59,000 --> 00:01:07,000
+Dali is a neural network model developed by OpenAI for generating images from textual descriptions.
+
+15
+00:01:07,000 --> 00:01:15,000
+This model is trained on a dataset of text image pairs and has the capability to generate a wide range
+
+16
+00:01:15,000 --> 00:01:18,000
+of images based on natural language descriptions.
+
+17
+00:01:19,000 --> 00:01:27,000
+Dali is a decoder only transformer models that takes both text and image data as input and models them
+
+18
+00:01:27,000 --> 00:01:32,000
+autoregressively to generate images based on a textual descriptions.
+
+19
+00:01:33,000 --> 00:01:39,000
+The model's architecture and training procedure are detailed in OpenAI research paper.
+
+20
+00:01:40,000 --> 00:01:46,000
+In a minute, I'm going to explain you what decoder and encoder concepts are in transforming models.
+
+21
+00:01:46,000 --> 00:01:53,000
+The capabilities of the opened up possibilities for various applications, including content generation,
+
+22
+00:01:53,000 --> 00:02:01,000
+design, art and potentially many more areas where the translation of textual ideas into visual representations
+
+23
+00:02:01,000 --> 00:02:02,000
+is required.
+
+24
+00:02:03,000 --> 00:02:08,000
+Let's understand what a decoder and encoder are in transforming models.
+
+25
+00:02:08,000 --> 00:02:11,000
+It will be useful for your general education.
+
+26
+00:02:11,000 --> 00:02:16,000
+Also, it will help you to understand architectures of other transforming models.
+
+27
+00:02:16,000 --> 00:02:20,000
+I said that Delhi is a decoder only transformer model.
+
+28
+00:02:20,000 --> 00:02:27,000
+It means that the model consists only of the decoder part of the transformer architecture without the
+
+29
+00:02:27,000 --> 00:02:34,000
+encoder in the context of transformer models, the encoder is typically responsible for processing input
+
+30
+00:02:34,000 --> 00:02:40,000
+data, while the decoder generates output data based on that processed input.
+
+31
+00:02:40,000 --> 00:02:46,000
+Here is breakdown of the roles of the encoder and decoder in a typical transformer architecture.
+
+32
+00:02:46,000 --> 00:02:53,000
+The encoder is responsible for processing and encoding the input data in natural language processing
+
+33
+00:02:53,000 --> 00:02:53,000
+tasks.
+
+34
+00:02:53,000 --> 00:02:57,000
+The input data is usually a sequence of words or tokens.
+
+35
+00:02:58,000 --> 00:03:05,000
+The encoder processes this input sequence and generates a set of hidden representations or embeddings
+
+36
+00:03:05,000 --> 00:03:06,000
+for each token.
+
+37
+00:03:06,000 --> 00:03:13,000
+These representations capture contextual information about each token in relation to the others in the
+
+38
+00:03:13,000 --> 00:03:14,000
+sequence.
+
+39
+00:03:14,000 --> 00:03:18,000
+The encoder's output is then used as an input to the decoder.
+
+40
+00:03:19,000 --> 00:03:25,000
+The decoder takes the encoded information from the encoder and generates the output sequence.
+
+41
+00:03:25,000 --> 00:03:31,000
+In the case of text generation, this output sequence could be a sequence of words or tokens.
+
+42
+00:03:31,000 --> 00:03:38,000
+The decoder processes the encoded information autoregressively generating one token at a time while
+
+43
+00:03:38,000 --> 00:03:40,000
+considering the previously generated tokens.
+
+44
+00:03:41,000 --> 00:03:46,000
+This autoregressive process continues until the desired output sequence is generated.
+
+45
+00:03:47,000 --> 00:03:53,000
+In the context of the and similar models, we generate images from textual descriptions.
+
+46
+00:03:53,000 --> 00:04:01,000
+The decoder only architecture means that the model takes the textual description as an input and directly
+
+47
+00:04:01,000 --> 00:04:06,000
+generates a corresponding image without needing an encoder to process the input text.
+
+48
+00:04:07,000 --> 00:04:13,000
+The model's decoder is responsible for both understanding the text and generating the image based on
+
+49
+00:04:13,000 --> 00:04:14,000
+the understanding.
+
+50
+00:04:14,000 --> 00:04:21,000
+This architecture simplifies the model structure and makes it more suitable for tasks where the primary
+
+51
+00:04:21,000 --> 00:04:23,000
+goal is to generate content.
+
+52
+00:04:23,000 --> 00:04:28,000
+In this case, images based on textual input descriptions.
+
+53
+00:04:28,000 --> 00:04:35,000
+It eliminates the need for an encoder that might be used in tasks like text understanding or text to
+
+54
+00:04:35,000 --> 00:04:36,000
+text translation.
+
+55
+00:04:37,000 --> 00:04:39,000
+To understand the better.
+
+56
+00:04:39,000 --> 00:04:41,000
+Let's learn its key features.
+
+57
+00:04:42,000 --> 00:04:50,000
+The Li is a remarkable neural network model developed by OpenAI that combines natural language understanding
+
+58
+00:04:50,000 --> 00:04:52,000
+with image generation.
+
+59
+00:04:52,000 --> 00:04:58,000
+It is designed to generate images from textual descriptions and exhibits, several key features and
+
+60
+00:04:58,000 --> 00:04:59,000
+capabilities.
+
+61
+00:05:00,000 --> 00:05:01,000
+Let's review them.
+
+62
+00:05:02,000 --> 00:05:03,000
+Text to image generation.
+
+63
+00:05:03,000 --> 00:05:10,000
+The Li can generate images from textual prompts allowing users to describe a concept or scene in natural
+
+64
+00:05:10,000 --> 00:05:14,000
+language, and the model produces corresponding images.
+
+65
+00:05:14,000 --> 00:05:16,000
+Creative Imagery.
+
+66
+00:05:16,000 --> 00:05:24,000
+One of its standout features is its ability to generate highly creative images based on textual descriptions,
+
+67
+00:05:24,000 --> 00:05:29,000
+often combining concepts in unexpected and novel ways.
+
+68
+00:05:30,000 --> 00:05:32,000
+Large model size.
+
+69
+00:05:32,000 --> 00:05:39,000
+The Li is a substantial model with 12 billion parameters, making it powerful and capable model for
+
+70
+00:05:39,000 --> 00:05:42,000
+generating high quality images.
+
+71
+00:05:43,000 --> 00:05:44,000
+Diverse capabilities.
+
+72
+00:05:45,000 --> 00:05:52,000
+It has a diverse set of capabilities, including creating anthropomorphized versions of animals and
+
+73
+00:05:52,000 --> 00:06:00,000
+objects, combining unrelated concepts in plausible ways, rendering text and applying transformations
+
+74
+00:06:00,000 --> 00:06:02,000
+to existing images.
+
+75
+00:06:03,000 --> 00:06:04,000
+A resolution.
+
+76
+00:06:04,000 --> 00:06:10,000
+The can generate images with high resolution up to 1024 by 1024 pixels.
+
+77
+00:06:10,000 --> 00:06:11,000
+Fine control.
+
+78
+00:06:12,000 --> 00:06:18,000
+The model offers fine control over attributes and positions of objects within the generated images,
+
+79
+00:06:18,000 --> 00:06:23,000
+allowing for specific adjustments such as changing colors, sizes and relative positions.
+
+80
+00:06:24,000 --> 00:06:31,000
+Viewpoint and 3D rendering the leak and control the viewpoint of a scene and render scenes in different
+
+81
+00:06:31,000 --> 00:06:37,000
+3D styles, adding a sense of depth and perspective to the generated images.
+
+82
+00:06:38,000 --> 00:06:40,000
+Variable binding.
+
+83
+00:06:40,000 --> 00:06:47,000
+It can interpret and correctly compose complex textual descriptions involving multiple objects, their
+
+84
+00:06:47,000 --> 00:06:50,000
+attributes and spatial relationships.
+
+85
+00:06:51,000 --> 00:06:57,000
+Combining unrelated concepts, the league can creatively combine unrelated ideas to synthesize unique
+
+86
+00:06:57,000 --> 00:07:03,000
+objects or scenes demonstrating its ability to generate imaginative content.
+
+87
+00:07:04,000 --> 00:07:06,000
+Geographic and temporal knowledge.
+
+88
+00:07:06,000 --> 00:07:13,000
+The model has learned about geographic facts, landmarks, neighborhoods and concepts that vary over
+
+89
+00:07:13,000 --> 00:07:18,000
+time, making it versatile for generating images related to different locations and areas.
+
+90
+00:07:19,000 --> 00:07:25,000
+The Li represents a significant progress in AI's ability to bridge the gap between natural language
+
+91
+00:07:25,000 --> 00:07:28,000
+understanding and image generation.
+
+92
+00:07:29,000 --> 00:07:30,000
+I believe that you may be wondered.
+
+93
+00:07:30,000 --> 00:07:32,000
+Okay, the lead generates pictures.
+
+94
+00:07:32,000 --> 00:07:33,000
+Okay.
+
+95
+00:07:33,000 --> 00:07:35,000
+It converts text to image.
+
+96
+00:07:35,000 --> 00:07:37,000
+But why do I need it?
+
+97
+00:07:37,000 --> 00:07:44,000
+If you ask this question, let's review some common business cases and let's try to understand when
+
+98
+00:07:44,000 --> 00:07:49,000
+it is applicable to use Delhi, in which cases and applications.
+
+99
+00:07:49,000 --> 00:07:55,000
+The cases that we are going to review will be mostly declarative and will describe the cases where text
+
+100
+00:07:55,000 --> 00:08:01,000
+to image models might be used in general and how the model is promoted on the market.
+
+101
+00:08:01,000 --> 00:08:09,000
+I need to make this note because based on today, Delhi still has some challenges with being suitable
+
+102
+00:08:09,000 --> 00:08:14,000
+to most of business cases it's supposed to be used for and during.
+
+103
+00:08:14,000 --> 00:08:21,000
+The lesson will try to understand whether Delhi really can handle cases on the expected level of quality
+
+104
+00:08:21,000 --> 00:08:25,000
+and quality is a key when we talk about transforming models.
+
+105
+00:08:26,000 --> 00:08:30,000
+I tried to brainstorm and group cases by categories.
+
+106
+00:08:30,000 --> 00:08:33,000
+The first category content generation.
+
+107
+00:08:33,000 --> 00:08:41,000
+It includes graphic design, advertising, marketing materials, for example, create custom graphics,
+
+108
+00:08:41,000 --> 00:08:45,000
+logos or illustrations based on textual description.
+
+109
+00:08:45,000 --> 00:08:50,000
+Or generate eye catching visuals and advertisements with the help of the Lee.
+
+110
+00:08:51,000 --> 00:08:55,000
+Create visuals for brochures, posters and social media posts.
+
+111
+00:08:55,000 --> 00:08:58,000
+By the way, you can use the leave for social media content generation.
+
+112
+00:08:58,000 --> 00:09:03,000
+It is really helpful tool in case you need creative visuals.
+
+113
+00:09:03,000 --> 00:09:04,000
+Product design.
+
+114
+00:09:05,000 --> 00:09:12,000
+You can use the li for interior designing, fashion, designing, industrial design, like, for example,
+
+115
+00:09:12,000 --> 00:09:16,000
+to generate concept art for product prototypes.
+
+116
+00:09:16,000 --> 00:09:18,000
+Entertainment and media.
+
+117
+00:09:18,000 --> 00:09:20,000
+Video games.
+
+118
+00:09:20,000 --> 00:09:24,000
+Generate game assets, characters and scenes from narrative descriptions.
+
+119
+00:09:25,000 --> 00:09:26,000
+Film and animation.
+
+120
+00:09:27,000 --> 00:09:31,000
+Create storyboards and concept art for movies and animations.
+
+121
+00:09:31,000 --> 00:09:33,000
+Book Covers.
+
+122
+00:09:33,000 --> 00:09:34,000
+Design Book Cover.
+
+123
+00:09:34,000 --> 00:09:37,000
+Illustrations based on book summaries.
+
+124
+00:09:38,000 --> 00:09:39,000
+Art and Creativity.
+
+125
+00:09:39,000 --> 00:09:45,000
+Artists can use the lead to explore creative ideas and generate novel artwork.
+
+126
+00:09:46,000 --> 00:09:51,000
+Educational resources you can use daily for textbook illustrations.
+
+127
+00:09:51,000 --> 00:09:54,000
+Interactive learning and PowerPoint presentations.
+
+128
+00:09:54,000 --> 00:09:55,000
+For example.
+
+129
+00:09:55,000 --> 00:10:00,000
+If you want, you can use the Li to create visuals for your PowerPoint presentation.
+
+130
+00:10:00,000 --> 00:10:04,000
+This will help you to stay consistent in style of your visuals.
+
+131
+00:10:04,000 --> 00:10:12,000
+Or you can even create a web application that helps to generate slides using chat GPT model for text
+
+132
+00:10:12,000 --> 00:10:15,000
+generation and the Li for image generation.
+
+133
+00:10:15,000 --> 00:10:16,000
+Think about it.
+
+134
+00:10:17,000 --> 00:10:19,000
+Storytelling and writing.
+
+135
+00:10:19,000 --> 00:10:26,000
+You can use the model to generate visual references for scenes and characters in stories, enhance interactive
+
+136
+00:10:26,000 --> 00:10:28,000
+fiction and games with dynamic visuals.
+
+137
+00:10:29,000 --> 00:10:37,000
+Concept prototyping product prototypes generate visual representations of product concepts for early
+
+138
+00:10:37,000 --> 00:10:38,000
+stage prototyping.
+
+139
+00:10:38,000 --> 00:10:44,000
+Visualize architectural design ideas before construction and lots more.
+
+140
+00:10:44,000 --> 00:10:51,000
+Basically any task for visualization, you can challenge the lead to help you and to master the lead.
+
+141
+00:10:51,000 --> 00:10:55,000
+Like a pro, you should know its limitations.
+
+142
+00:10:55,000 --> 00:11:00,000
+Like all models, the Li has its own challenges and limitations.
+
+143
+00:11:00,000 --> 00:11:01,000
+What is a.
+
+144
+00:11:02,000 --> 00:11:04,000
+The first one Data dependency.
+
+145
+00:11:04,000 --> 00:11:09,000
+The li relies on text image pairs it was trained on.
+
+146
+00:11:09,000 --> 00:11:16,000
+It may have difficulty generating images for concepts or scenes that were not well represented in its
+
+147
+00:11:16,000 --> 00:11:17,000
+training data.
+
+148
+00:11:17,000 --> 00:11:21,000
+You should always remember about this ambiguity.
+
+149
+00:11:21,000 --> 00:11:28,000
+If a textual description is ambiguous or can be interpreted in multiple ways, the Li might generate
+
+150
+00:11:28,000 --> 00:11:32,000
+images that align with one interpretation but not another.
+
+151
+00:11:33,000 --> 00:11:35,000
+Complex descriptions.
+
+152
+00:11:35,000 --> 00:11:43,000
+While the league can handle complex descriptions, extremely detailed prompts might not bring you satisfactory
+
+153
+00:11:43,000 --> 00:11:44,000
+results.
+
+154
+00:11:44,000 --> 00:11:45,000
+Image Realism.
+
+155
+00:11:46,000 --> 00:11:52,000
+While the league generates creative images, they may not always appear realistic or high quality,
+
+156
+00:11:52,000 --> 00:11:56,000
+especially for scenes with complex textures and details.
+
+157
+00:11:56,000 --> 00:11:59,000
+And probably this is one of the key challenges.
+
+158
+00:11:59,000 --> 00:12:03,000
+You will understand it better when you will start using the league more actively.
+
+159
+00:12:05,000 --> 00:12:06,000
+Control challenges.
+
+160
+00:12:06,000 --> 00:12:11,000
+Fine grained control over attributes such as color or position can be challenging.
+
+161
+00:12:12,000 --> 00:12:16,000
+The model may not always precisely capture user specified details.
+
+162
+00:12:17,000 --> 00:12:19,000
+Creative interpretations.
+
+163
+00:12:19,000 --> 00:12:23,000
+Daily creativity can be a double edged sword.
+
+164
+00:12:23,000 --> 00:12:31,000
+While it can produce novel and imaginative images, it may not always adhere to conventional or expected
+
+165
+00:12:31,000 --> 00:12:33,000
+interpretations.
+
+166
+00:12:33,000 --> 00:12:34,000
+Interactivity.
+
+167
+00:12:34,000 --> 00:12:41,000
+While the leat generates images based on text prompts, it doesn't have the capability for interactive
+
+168
+00:12:41,000 --> 00:12:46,000
+back and forth conversations like some other AI models by OpenAI.
+
+169
+00:12:46,000 --> 00:12:50,000
+You can't edit generated image with Dall-e.
+
+170
+00:12:51,000 --> 00:12:55,000
+You need to submit another prompt and generate a new image.
+
+171
+00:12:55,000 --> 00:13:02,000
+It's important to be aware of these limitations and use the leave within its intended scope and with
+
+172
+00:13:02,000 --> 00:13:03,000
+a critical eye.
+
+173
+00:13:03,000 --> 00:13:09,000
+OpenAI is the organization behind Dall-e continues to research and improve AI models to address these
+
+174
+00:13:09,000 --> 00:13:16,000
+challenges, but users should exercise caution and apply human judgment when utilizing AI generated
+
+175
+00:13:16,000 --> 00:13:17,000
+content.
+
+176
+00:13:18,000 --> 00:13:24,000
+I believe that we have learned enough Syrian we can proceed with learning details and practical examples
+
+177
+00:13:24,000 --> 00:13:26,000
+in the attachments to the video.
+
+178
+00:13:26,000 --> 00:13:29,000
+You will be able to find link to the API reference.
+
+179
+00:13:29,000 --> 00:13:32,000
+Let me make a brief overview of an API.
+
+180
+00:13:33,000 --> 00:13:38,000
+The first important thing that I would like to mention is about three key methods for interacting with
+
+181
+00:13:38,000 --> 00:13:39,000
+the Li API.
+
+182
+00:13:39,000 --> 00:13:44,000
+They are creating images from scratch based on a text prompt.
+
+183
+00:13:44,000 --> 00:13:48,000
+Creating edits of an existing image based on a new text prompt.
+
+184
+00:13:49,000 --> 00:13:51,000
+Creating variations of an existing image.
+
+185
+00:13:52,000 --> 00:13:56,000
+And here you can find three end points in the API reference.
+
+186
+00:13:56,000 --> 00:13:58,000
+Let's start from the simple one.
+
+187
+00:13:58,000 --> 00:14:00,000
+Image creation.
+
+188
+00:14:00,000 --> 00:14:05,000
+Basically, you just need to send the prompt with a post message to the specific resource.
+
+189
+00:14:05,000 --> 00:14:11,000
+Also, I prepared for you postman collection that you can just import into your postman and execute
+
+190
+00:14:11,000 --> 00:14:12,000
+queries.
+
+191
+00:14:12,000 --> 00:14:18,000
+You can either import my postman collection or create a new request from scratch.
+
+192
+00:14:18,000 --> 00:14:22,000
+It doesn't matter because we don't have super complex requests here.
+
+193
+00:14:23,000 --> 00:14:29,000
+After importing postman collection, don't forget to add your OpenAI API key.
+
+194
+00:14:29,000 --> 00:14:32,000
+I use variable for API key.
+
+195
+00:14:32,000 --> 00:14:35,000
+You have to add it into your authorization header.
+
+196
+00:14:36,000 --> 00:14:43,000
+Content type is application Json because OpenAI API will reply us with a generated URL.
+
+197
+00:14:44,000 --> 00:14:46,000
+Let's go to the body now.
+
+198
+00:14:46,000 --> 00:14:49,000
+There is only one required attribute that is prompt.
+
+199
+00:14:50,000 --> 00:14:54,000
+You need to describe what you want to see on the generated picture.
+
+200
+00:14:54,000 --> 00:14:56,000
+Let's try something creative.
+
+201
+00:14:56,000 --> 00:15:03,000
+For example, an astronaut rides a motorcycle on Mars in photorealistic style.
+
+202
+00:15:03,000 --> 00:15:09,000
+As you already understood, you can specify details in the prompt like colors, position of elements
+
+203
+00:15:09,000 --> 00:15:12,000
+or even style like I did now.
+
+204
+00:15:13,000 --> 00:15:16,000
+And we'll see how the imagines this.
+
+205
+00:15:16,000 --> 00:15:21,000
+Another attribute that is called n, it is the number of items to be generated.
+
+206
+00:15:21,000 --> 00:15:24,000
+It can be between 1 and 10.
+
+207
+00:15:24,000 --> 00:15:31,000
+By default, it is equal to one, but decided to keep it here and request just for the learning purposes.
+
+208
+00:15:31,000 --> 00:15:33,000
+The next attribute is size.
+
+209
+00:15:34,000 --> 00:15:45,000
+I selected 1024 by 1024 pixels, which is default value, but you can also set here to 156 by 256 or
+
+210
+00:15:45,000 --> 00:15:48,000
+512 by 512.
+
+211
+00:15:49,000 --> 00:15:55,000
+This size will impact costs per image in the model you pay per image generated.
+
+212
+00:15:56,000 --> 00:16:01,000
+As always, you can check the most relevant and up to date pricing on the pricing page.
+
+213
+00:16:01,000 --> 00:16:06,000
+As you can see, pricing will depend on the image size that you want to generate.
+
+214
+00:16:06,000 --> 00:16:09,000
+So I configure it size.
+
+215
+00:16:09,000 --> 00:16:16,000
+There is also user attributes that you can use as a unique identifier representing your end user, which
+
+216
+00:16:16,000 --> 00:16:20,000
+can help OpenAI to monitor and detect abuse.
+
+217
+00:16:20,000 --> 00:16:25,000
+In our example, I would just use an email as a fake unique identifier.
+
+218
+00:16:26,000 --> 00:16:32,000
+Do not forget that this attribute is optional, and if you don't need it, you can just omit it.
+
+219
+00:16:33,000 --> 00:16:36,000
+And also there is an attribute that is called response format.
+
+220
+00:16:36,000 --> 00:16:44,000
+It can be just one out of two possible options is a URL or b64 Json.
+
+221
+00:16:45,000 --> 00:16:51,000
+If you use b64 Json, the image is encoded in b64 json.
+
+222
+00:16:51,000 --> 00:16:53,000
+Not a normal image file type.
+
+223
+00:16:53,000 --> 00:16:57,000
+By default it is URL and I'm going to show you how it works.
+
+224
+00:16:58,000 --> 00:17:05,000
+Let me vividly leave this attribute here, but as I said, it is optional and you can rely on default
+
+225
+00:17:05,000 --> 00:17:06,000
+values.
+
+226
+00:17:06,000 --> 00:17:10,000
+Let's send this query now and see what we would receive.
+
+227
+00:17:11,000 --> 00:17:19,000
+We received an URL, we can copy this URL and paste it into the browser and see what we received.
+
+228
+00:17:19,000 --> 00:17:25,000
+Once you reviewed the image in the browser, you can save it to the local computer.
+
+229
+00:17:25,000 --> 00:17:29,000
+As you can see, images may be of different quality.
+
+230
+00:17:29,000 --> 00:17:32,000
+Some lines may be not perfect.
+
+231
+00:17:32,000 --> 00:17:38,000
+That's why sometimes you can just change the number of images to generate and just try one more time.
+
+232
+00:17:39,000 --> 00:17:43,000
+For example, you can ask the lead to generate ten images per prompt.
+
+233
+00:17:43,000 --> 00:17:50,000
+In this case, you are going to have higher chances that at least some options will look as you expected.
+
+234
+00:17:51,000 --> 00:17:52,000
+Attention.
+
+235
+00:17:52,000 --> 00:17:57,000
+I recommend you to save images just in case, because they can be lost easily.
+
+236
+00:17:57,000 --> 00:18:01,000
+The link is available only for a limited amount of time.
+
+237
+00:18:01,000 --> 00:18:07,000
+Some time passed when you use the link to open image, the link will be broken.
+
+238
+00:18:07,000 --> 00:18:14,000
+I believe that is done on purpose because in case OpenAI would store all possible generated images,
+
+239
+00:18:14,000 --> 00:18:19,000
+it wouldn't be enough space to support image generation in the whole world on daily basis.
+
+240
+00:18:20,000 --> 00:18:22,000
+That's how easy you can generate images.
+
+241
+00:18:23,000 --> 00:18:28,000
+Let's review the second method of interaction with the OpenAI API.
+
+242
+00:18:29,000 --> 00:18:33,000
+Creating edits of an existing image based on a new text prompt.
+
+243
+00:18:34,000 --> 00:18:35,000
+Before we review.
+
+244
+00:18:36,000 --> 00:18:38,000
+Let me explain you how edits work.
+
+245
+00:18:38,000 --> 00:18:45,000
+The image editing endpoint offers the capability to enhance and modify an image through the inclusion
+
+246
+00:18:45,000 --> 00:18:48,000
+of a mask during the upload process.
+
+247
+00:18:48,000 --> 00:18:56,000
+Transparent regions within the mask serve as guidelines for where adjustments should be made to the
+
+248
+00:18:56,000 --> 00:18:56,000
+image.
+
+249
+00:18:57,000 --> 00:19:04,000
+Additionally, it's important to note that the prompt should describe the whole new image rather than
+
+250
+00:19:04,000 --> 00:19:07,000
+focusing solely on the erased spaces.
+
+251
+00:19:08,000 --> 00:19:12,000
+On the slide you can see example from OpenAI Dall-e documentation.
+
+252
+00:19:12,000 --> 00:19:14,000
+Pay attention to the original image.
+
+253
+00:19:15,000 --> 00:19:18,000
+Then create mask by saying mask.
+
+254
+00:19:18,000 --> 00:19:22,000
+I mean creation of transparent areas on the same image.
+
+255
+00:19:22,000 --> 00:19:27,000
+You can do this in Photoshop, for example, or in any other image editor.
+
+256
+00:19:28,000 --> 00:19:38,000
+PNG file format allows you to save transparency on the image and then describe in the prompt is a whole
+
+257
+00:19:38,000 --> 00:19:44,000
+picture, a sunlit indoor lounge area with a pool containing a flamingo.
+
+258
+00:19:44,000 --> 00:19:50,000
+As you can see, Dall-e gave us back edited image taken into consideration.
+
+259
+00:19:50,000 --> 00:19:52,000
+Our prompt is in the school.
+
+260
+00:19:53,000 --> 00:19:59,000
+Both the uploaded image and the related mosque must adhere to specific criteria.
+
+261
+00:19:59,000 --> 00:20:06,000
+They should be square PNG images with file sizes under four megabytes and their dimensions must match
+
+262
+00:20:06,000 --> 00:20:07,000
+each other.
+
+263
+00:20:08,000 --> 00:20:15,000
+It's worth highlighting that the non transparent sections of the mosque do not play a role in generating
+
+264
+00:20:15,000 --> 00:20:16,000
+the output.
+
+265
+00:20:16,000 --> 00:20:22,000
+As a result, there is no strict requirement for them to align precisely with the original image.
+
+266
+00:20:22,000 --> 00:20:25,000
+Unlike the example provided on the slide.
+
+267
+00:20:26,000 --> 00:20:32,000
+Now let's take a look at demo and learn how this works in practice, especially for you.
+
+268
+00:20:32,000 --> 00:20:36,000
+I prepared a set of original images and related images with mask.
+
+269
+00:20:36,000 --> 00:20:43,000
+This can save your time during the preparing examples to test an API, you can find images for this
+
+270
+00:20:43,000 --> 00:20:47,000
+example in attachments to the lesson in the postman.
+
+271
+00:20:47,000 --> 00:20:49,000
+You can find template requests for edits.
+
+272
+00:20:50,000 --> 00:20:57,000
+There are few attributes here that you can configure and only two out of all these attributes are required,
+
+273
+00:20:57,000 --> 00:21:00,000
+so only image and prompt attributes are required.
+
+274
+00:21:01,000 --> 00:21:04,000
+Image attribute is an object a file.
+
+275
+00:21:04,000 --> 00:21:10,000
+The image to edit must be a valid PNG file less than four megabytes and square.
+
+276
+00:21:11,000 --> 00:21:15,000
+And you see that mask attribute is an optional one.
+
+277
+00:21:15,000 --> 00:21:21,000
+If mask is not provided, image must have transparency which will be used as the mask.
+
+278
+00:21:22,000 --> 00:21:26,000
+I'm going to show you this example too, at the end of the lesson.
+
+279
+00:21:26,000 --> 00:21:33,000
+In postman I select form data and here for each attribute I can change attribute type.
+
+280
+00:21:33,000 --> 00:21:39,000
+You can see that for image and for mask attribute I selected file type.
+
+281
+00:21:39,000 --> 00:21:44,000
+Just hover mouse over the field and change the selector here.
+
+282
+00:21:45,000 --> 00:21:48,000
+And now I can select file as a value.
+
+283
+00:21:49,000 --> 00:21:55,000
+For mask attribute, you need to select image with transparent area like I showed you on the slide.
+
+284
+00:21:55,000 --> 00:22:02,000
+In a minute we are going to review a dataset that I prepared for you and results that we received.
+
+285
+00:22:02,000 --> 00:22:11,000
+So Mask is an additional image whose fully transparent areas where alpha is zero indicate where image
+
+286
+00:22:11,000 --> 00:22:17,000
+should be edited, must be a valid PNG file less than four megabytes and have the same dimensions as
+
+287
+00:22:17,000 --> 00:22:18,000
+image.
+
+288
+00:22:19,000 --> 00:22:21,000
+Who is prompt attribute everything a symbol.
+
+289
+00:22:21,000 --> 00:22:25,000
+It is a text description of the desired image.
+
+290
+00:22:25,000 --> 00:22:30,000
+And as we already discussed, you need to describe the whole image.
+
+291
+00:22:30,000 --> 00:22:32,000
+But not only the transparent part.
+
+292
+00:22:33,000 --> 00:22:37,000
+There's only one important thing that I didn't mention yet is a prompt limit.
+
+293
+00:22:38,000 --> 00:22:41,000
+This is a maximum length is 1000 characters.
+
+294
+00:22:42,000 --> 00:22:47,000
+An attribute is for amount of images to be generated must be between 1 and 10.
+
+295
+00:22:48,000 --> 00:22:55,000
+Size attribute sets the size of generated images the same as with image generation.
+
+296
+00:22:55,000 --> 00:22:59,000
+There are three size variations are supported at the moment.
+
+297
+00:22:59,000 --> 00:23:02,000
+256 by 256.
+
+298
+00:23:02,000 --> 00:23:08,000
+512 by 512 and ten, 24 by 1024.
+
+299
+00:23:08,000 --> 00:23:15,000
+And in the similar way, like in Create API that we already reviewed, we have response format with
+
+300
+00:23:15,000 --> 00:23:17,000
+two possible values and user.
+
+301
+00:23:18,000 --> 00:23:21,000
+These are all available attributes based on today.
+
+302
+00:23:21,000 --> 00:23:23,000
+So let's get back to the postman now.
+
+303
+00:23:24,000 --> 00:23:30,000
+I configured all attributes in the form data and I'm ready to send the request.
+
+304
+00:23:30,000 --> 00:23:38,000
+In response, I receive URL that I can copy and paste to the browser for better visualization and better
+
+305
+00:23:38,000 --> 00:23:40,000
+comparison of input and output.
+
+306
+00:23:40,000 --> 00:23:44,000
+Let me present the results with the help of slides.
+
+307
+00:23:44,000 --> 00:23:47,000
+Let's start from the successful example.
+
+308
+00:23:47,000 --> 00:23:55,000
+I used Unsplash to download royalty free images and work with them and I tried to find the similar image
+
+309
+00:23:55,000 --> 00:23:57,000
+like I showed you from OpenAI.
+
+310
+00:23:57,000 --> 00:23:59,000
+API documentation.
+
+311
+00:23:59,000 --> 00:24:06,000
+You can see here we also have swimming pool and the graphic is a cartoon like style.
+
+312
+00:24:06,000 --> 00:24:09,000
+As you may see, it looks unrealistic.
+
+313
+00:24:10,000 --> 00:24:17,000
+And in case I submit this page with the mask like you can see on the slide and prompt swimming pool
+
+314
+00:24:17,000 --> 00:24:20,000
+with Flamingo, then I receive such result.
+
+315
+00:24:20,000 --> 00:24:26,000
+And to be honest, this is the best result that I managed to achieve based on today.
+
+316
+00:24:26,000 --> 00:24:33,000
+Edit Feature of Dali is more for marketing purposes rather than to handle real use cases.
+
+317
+00:24:33,000 --> 00:24:39,000
+I really believe that this will be improved over time, but it is not the fact, based on the day of
+
+318
+00:24:39,000 --> 00:24:41,000
+the creation of this video lesson.
+
+319
+00:24:41,000 --> 00:24:42,000
+Why I say so?
+
+320
+00:24:42,000 --> 00:24:49,000
+First of all, to receive an image of at least this quality, I had to generate few images.
+
+321
+00:24:49,000 --> 00:24:53,000
+You can also see the previous generated version, which is not good.
+
+322
+00:24:54,000 --> 00:24:59,000
+The second thing is look at the examples that I say is the most successful one.
+
+323
+00:24:59,000 --> 00:25:06,000
+If you would scale it and start look to the details, you can see that the drawing itself is not the
+
+324
+00:25:06,000 --> 00:25:07,000
+best.
+
+325
+00:25:08,000 --> 00:25:15,000
+Somewhere lines are broken, somewhere it just looks not natural or other things.
+
+326
+00:25:15,000 --> 00:25:23,000
+And the third thing why I think that added endpoint in the list, super raw, is the generated images.
+
+327
+00:25:23,000 --> 00:25:27,000
+Let's review a few more examples for the next case.
+
+328
+00:25:27,000 --> 00:25:33,000
+I wanted to edit the image in order it would look like a man riding a bicycle in the park in autumn.
+
+329
+00:25:34,000 --> 00:25:40,000
+You can see that the lead tried to draw a man riding a bike, but at the same time we have to admit
+
+330
+00:25:40,000 --> 00:25:45,000
+that it didn't succeed, at least as I expected.
+
+331
+00:25:45,000 --> 00:25:49,000
+Sometimes the league simply ignores my prompts.
+
+332
+00:25:49,000 --> 00:25:50,000
+Like I asked.
+
+333
+00:25:50,000 --> 00:25:51,000
+Nothing.
+
+334
+00:25:51,000 --> 00:25:59,000
+For example, I expected to have a small yard here on the image, but instead of yard is a transparent
+
+335
+00:25:59,000 --> 00:26:02,000
+area was filled out with the sea and that's it.
+
+336
+00:26:03,000 --> 00:26:08,000
+Also, I wanted to paste a street musician on this image in first option.
+
+337
+00:26:08,000 --> 00:26:13,000
+The list simply ignored my prompt and just draw a wall almost like it was.
+
+338
+00:26:13,000 --> 00:26:19,000
+And during the second attempt, the league created something what was supposed to look like a musician.
+
+339
+00:26:19,000 --> 00:26:21,000
+But apparently it is not.
+
+340
+00:26:22,000 --> 00:26:29,000
+And one more example is about a group of people who works together in the office in this imaginary example
+
+341
+00:26:29,000 --> 00:26:32,000
+imagines that we want to substitute one colleague.
+
+342
+00:26:32,000 --> 00:26:38,000
+For example, our colleague took a day off that day, but came to the team building activities and Pizza
+
+343
+00:26:38,000 --> 00:26:40,000
+Friday party.
+
+344
+00:26:40,000 --> 00:26:45,000
+So I want to edit this image with the Dali in order to erase this colleague.
+
+345
+00:26:46,000 --> 00:26:49,000
+As you can see, result is not realistic at all.
+
+346
+00:26:49,000 --> 00:26:57,000
+And even for cartoon like style or for painting, it doesn't look mature enough to be shared with somebody.
+
+347
+00:26:58,000 --> 00:27:03,000
+You also know that the mask attribute is not required and not a mandatory one.
+
+348
+00:27:03,000 --> 00:27:09,000
+We learned this during an API review, but let's try now how it works in practice.
+
+349
+00:27:10,000 --> 00:27:13,000
+What would be in case I would upload just mask straight away.
+
+350
+00:27:13,000 --> 00:27:19,000
+In such case, model shouldn't understand that it should draw a person on that place.
+
+351
+00:27:19,000 --> 00:27:20,000
+What do you think?
+
+352
+00:27:21,000 --> 00:27:28,000
+So in case I upload image with transparent areas into an image attribute and don't send any mask at
+
+353
+00:27:28,000 --> 00:27:31,000
+all, we receive the following results.
+
+354
+00:27:31,000 --> 00:27:37,000
+I would say that the first one is slightly better now, but it still draws a person during the second
+
+355
+00:27:37,000 --> 00:27:38,000
+attempt.
+
+356
+00:27:38,000 --> 00:27:45,000
+So now you understand my conclusion about the lee, but at least we learned an API which is most likely
+
+357
+00:27:45,000 --> 00:27:48,000
+will remain the same or at least similar.
+
+358
+00:27:49,000 --> 00:27:54,000
+And with the new release of the Lee, you can try the added feature one more time.
+
+359
+00:27:55,000 --> 00:27:56,000
+Who knows?
+
+360
+00:27:56,000 --> 00:28:03,000
+Probably next version of added feature in the Lee will work much better and the set method of interaction
+
+361
+00:28:03,000 --> 00:28:07,000
+with the Lee API is about variations of an existing image.
+
+362
+00:28:07,000 --> 00:28:09,000
+Everything is simple here.
+
+363
+00:28:09,000 --> 00:28:15,000
+Imagine that you have an image and you need to create another variation of the image.
+
+364
+00:28:15,000 --> 00:28:17,000
+You may have a different motivation.
+
+365
+00:28:17,000 --> 00:28:24,000
+Is it to get inspiration or just have a legal workaround about using the original image and create its
+
+366
+00:28:24,000 --> 00:28:26,000
+unique variation?
+
+367
+00:28:26,000 --> 00:28:28,000
+This is just an example.
+
+368
+00:28:28,000 --> 00:28:30,000
+There can be different cases.
+
+369
+00:28:31,000 --> 00:28:35,000
+Let's review API reference and we'll try to understand it better.
+
+370
+00:28:35,000 --> 00:28:39,000
+We have one required attribute that is image.
+
+371
+00:28:39,000 --> 00:28:41,000
+Requirements are similar.
+
+372
+00:28:41,000 --> 00:28:50,000
+Image should be a valid PNG file square and not more than four megabytes and all other attributes like
+
+373
+00:28:50,000 --> 00:28:52,000
+n size response format.
+
+374
+00:28:52,000 --> 00:29:00,000
+We already discussed during the review of previous endpoints, so let's check how it looks like in Postman
+
+375
+00:29:00,000 --> 00:29:03,000
+in the Postman collection that you can find in attachment.
+
+376
+00:29:03,000 --> 00:29:07,000
+You will be able also to find request for image variation endpoint.
+
+377
+00:29:07,000 --> 00:29:09,000
+Nothing special here.
+
+378
+00:29:09,000 --> 00:29:14,000
+For the sake of example, let's make variation for different images.
+
+379
+00:29:15,000 --> 00:29:19,000
+Mona Lisa, probably the most famous piece of art in the world.
+
+380
+00:29:19,000 --> 00:29:24,000
+Let's ask the lead to make its own variation of this masterpiece.
+
+381
+00:29:24,000 --> 00:29:32,000
+And as you can see, it is hard to beat Da Vinci in general when you are dealing with human images using
+
+382
+00:29:32,000 --> 00:29:32,000
+Dali.
+
+383
+00:29:33,000 --> 00:29:39,000
+It works approximately in the way like you can see on the slides, whether it is good or bad, it is
+
+384
+00:29:39,000 --> 00:29:40,000
+you to decide.
+
+385
+00:29:40,000 --> 00:29:42,000
+Because all of us have different tastes.
+
+386
+00:29:43,000 --> 00:29:49,000
+And you remember we had example with the pork, as you can see, in case there are no requirements to
+
+387
+00:29:49,000 --> 00:29:52,000
+draw human or extra small details.
+
+388
+00:29:52,000 --> 00:29:55,000
+Dali can handle such cases.
+
+389
+00:29:55,000 --> 00:29:59,000
+So in this case, we can say that we receive expected variations.
+
+390
+00:30:00,000 --> 00:30:02,000
+So what would be the conclusion?
+
+391
+00:30:02,000 --> 00:30:07,000
+As you can see, I always try to avoid making conclusions instead of you.
+
+392
+00:30:07,000 --> 00:30:16,000
+Instead, I tried to do the best what I can to give you 360 degree overview of the topic and let you
+
+393
+00:30:16,000 --> 00:30:18,000
+form your own opinion.
+
+394
+00:30:18,000 --> 00:30:24,000
+But if you are interested, I can just share my opinion about Delhi in general, and this is related
+
+395
+00:30:24,000 --> 00:30:26,000
+to all Delhi features.
+
+396
+00:30:26,000 --> 00:30:31,000
+The lower requirements for details you have the better really?
+
+397
+00:30:31,000 --> 00:30:35,000
+Because you saw that not all scenarios Delhi can handle with ease.
+
+398
+00:30:36,000 --> 00:30:43,000
+Obviously it has huge advantages and it is really an amazing thing for brainstorming, for inspiration
+
+399
+00:30:43,000 --> 00:30:45,000
+and other things.
+
+400
+00:30:45,000 --> 00:30:51,000
+For example, I used the lead to take inspiration during the design of the logo for one of my projects.
+
+401
+00:30:51,000 --> 00:30:59,000
+I was wondered what associations can arise with different words, and Delhi helped me with this goal.
+
+402
+00:31:00,000 --> 00:31:05,000
+So really a lot will depend on your expectations and how you plan to use Delhi.
+
+403
+00:31:05,000 --> 00:31:11,000
+And today we did a useful deep dive into API in order to help you understand how you can use Delhi in
+
+404
+00:31:11,000 --> 00:31:12,000
+your work.
+
+405
+00:31:12,000 --> 00:31:16,000
+So let's recap now what we have learned during the lesson.
+
+406
+00:31:17,000 --> 00:31:19,000
+We learned a lot of things today.
+
+407
+00:31:19,000 --> 00:31:22,000
+Now you know what the Lee model is.
+
+408
+00:31:22,000 --> 00:31:27,000
+I explained what a decoder and encoder are in transforming models.
+
+409
+00:31:27,000 --> 00:31:34,000
+This is some basic terminology and will help you with understanding of the topic and architecture of
+
+410
+00:31:34,000 --> 00:31:35,000
+other models.
+
+411
+00:31:35,000 --> 00:31:39,000
+We've used key features of Delhi to help you understand the topic better.
+
+412
+00:31:39,000 --> 00:31:46,000
+We learned business use cases when the league can be applied, and then we reviewed documentation and
+
+413
+00:31:46,000 --> 00:31:51,000
+practical examples about three ways of interaction with the league API.
+
+414
+00:31:51,000 --> 00:31:59,000
+Namely, we learned how to create images based on text prompt, how to edit images based on a text prompt,
+
+415
+00:31:59,000 --> 00:32:03,000
+and how to create variations based on an existing image.
+
+416
+00:32:03,000 --> 00:32:08,000
+And for each case, we reviewed documentation and practical examples.
+
+417
+00:32:08,000 --> 00:32:11,000
+That's all what I wanted to share with you today.
+
+418
+00:32:11,000 --> 00:32:13,000
+Thanks a lot for your attention.
+
+419
+00:32:13,000 --> 00:32:16,000
+Have a great day and see you in the next lesson.
+
diff --git a/102 - DALL-E - Text to image AI Model by OpenAI/001 Examples-of-images-and-masks.url b/102 - DALL-E - Text to image AI Model by OpenAI/001 Examples-of-images-and-masks.url
new file mode 100644
index 0000000000000000000000000000000000000000..20deef2b97aa0fcd4cab38d0e8d1745ddcc0de84
--- /dev/null
+++ b/102 - DALL-E - Text to image AI Model by OpenAI/001 Examples-of-images-and-masks.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/tree/master/dall-e
\ No newline at end of file
diff --git a/102 - DALL-E - Text to image AI Model by OpenAI/001 Postman-collection-used-in-lesson.url b/102 - DALL-E - Text to image AI Model by OpenAI/001 Postman-collection-used-in-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..7569e5797cc2a53520b229e16073e7f88bf8d870
--- /dev/null
+++ b/102 - DALL-E - Text to image AI Model by OpenAI/001 Postman-collection-used-in-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/blob/master/dall-e/OpenAI%20DALL-E.postman_collection.json
\ No newline at end of file
diff --git a/102 - DALL-E - Text to image AI Model by OpenAI/001 Pricing.url b/102 - DALL-E - Text to image AI Model by OpenAI/001 Pricing.url
new file mode 100644
index 0000000000000000000000000000000000000000..16d135a7f326635eda7d4ecbbc67520c079b93fe
--- /dev/null
+++ b/102 - DALL-E - Text to image AI Model by OpenAI/001 Pricing.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://openai.com/pricing
\ No newline at end of file
diff --git a/102 - DALL-E - Text to image AI Model by OpenAI/external-links.txt b/102 - DALL-E - Text to image AI Model by OpenAI/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b7fa62885b6bb2b9d56e0f2781ab5f0f13f667f2
--- /dev/null
+++ b/102 - DALL-E - Text to image AI Model by OpenAI/external-links.txt
@@ -0,0 +1,12 @@
+
+001 API-Reference-for-DALL-E-Model
+https://platform.openai.com/docs/api-reference/images
+
+001 Postman-collection-used-in-lesson
+https://github.com/AndriiPiatakha/openai-learnit/blob/master/dall-e/OpenAI%20DALL-E.postman_collection.json
+
+001 Examples-of-images-and-masks
+https://github.com/AndriiPiatakha/openai-learnit/tree/master/dall-e
+
+001 Pricing
+https://openai.com/pricing
diff --git a/103 - Whisper - Speech to text AI model by OpenAI/001 API-Reference.url b/103 - Whisper - Speech to text AI model by OpenAI/001 API-Reference.url
new file mode 100644
index 0000000000000000000000000000000000000000..158ba0d1447b5fa45f2a005804f7521e94cd0c7a
--- /dev/null
+++ b/103 - Whisper - Speech to text AI model by OpenAI/001 API-Reference.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://platform.openai.com/docs/api-reference/audio
\ No newline at end of file
diff --git a/103 - Whisper - Speech to text AI model by OpenAI/001 Audio-file-1-used-in-the-lesson-for-transcription-demo.url b/103 - Whisper - Speech to text AI model by OpenAI/001 Audio-file-1-used-in-the-lesson-for-transcription-demo.url
new file mode 100644
index 0000000000000000000000000000000000000000..30e9e177812c285c9d4b654dce561b2f20b7bc79
--- /dev/null
+++ b/103 - Whisper - Speech to text AI model by OpenAI/001 Audio-file-1-used-in-the-lesson-for-transcription-demo.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/blob/master/whisper/01_demo_file.mp3
\ No newline at end of file
diff --git a/103 - Whisper - Speech to text AI model by OpenAI/001 Audio-file-2-used-in-the-lesson-for-translation-demo.url b/103 - Whisper - Speech to text AI model by OpenAI/001 Audio-file-2-used-in-the-lesson-for-translation-demo.url
new file mode 100644
index 0000000000000000000000000000000000000000..95eee7836a66003b547f60d248168a7c09d62360
--- /dev/null
+++ b/103 - Whisper - Speech to text AI model by OpenAI/001 Audio-file-2-used-in-the-lesson-for-translation-demo.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/blob/master/whisper/02_demo_file.mp3
\ No newline at end of file
diff --git a/103 - Whisper - Speech to text AI model by OpenAI/001 Postman-collection.url b/103 - Whisper - Speech to text AI model by OpenAI/001 Postman-collection.url
new file mode 100644
index 0000000000000000000000000000000000000000..b7ed047adea8e7b74803077b6c3586680a8b7204
--- /dev/null
+++ b/103 - Whisper - Speech to text AI model by OpenAI/001 Postman-collection.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://github.com/AndriiPiatakha/openai-learnit/blob/master/whisper/OpenAI%20Whisper.postman_collection.json
\ No newline at end of file
diff --git a/103 - Whisper - Speech to text AI model by OpenAI/001 Whisper Model & API Overview With Examples in Postman_en.srt b/103 - Whisper - Speech to text AI model by OpenAI/001 Whisper Model & API Overview With Examples in Postman_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..bb6e86ec503269c79690f16f3a8f7d69ee6510c3
--- /dev/null
+++ b/103 - Whisper - Speech to text AI model by OpenAI/001 Whisper Model & API Overview With Examples in Postman_en.srt
@@ -0,0 +1,1552 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Tim.
+
+2
+00:00:06,000 --> 00:00:11,000
+In this lesson we are going to talk about such OpenAI model as Whisper.
+
+3
+00:00:11,000 --> 00:00:16,000
+We are going to start lesson from the general overview of OpenAI whisper model.
+
+4
+00:00:17,000 --> 00:00:22,000
+I will explain you its key features to understand what a whisper model is.
+
+5
+00:00:22,000 --> 00:00:26,000
+We will review business use cases when whisper may be applicable.
+
+6
+00:00:26,000 --> 00:00:33,000
+Also I will tell you limitations of the model that you need to consider if you plan to work with Whisper.
+
+7
+00:00:33,000 --> 00:00:39,000
+While learning about Whisper, we are going to learn some basic concepts about speech recognition as
+
+8
+00:00:39,000 --> 00:00:41,000
+word error rate.
+
+9
+00:00:41,000 --> 00:00:46,000
+Also in the lesson, we are going to have a lot of practical exercises.
+
+10
+00:00:46,000 --> 00:00:53,000
+We will learn whisper API from the documentation and when we will complete review of the API, we will
+
+11
+00:00:53,000 --> 00:00:55,000
+proceed with practical examples.
+
+12
+00:00:55,000 --> 00:01:00,000
+I'm going to show you transcription and translation demo with Whisper API.
+
+13
+00:01:00,000 --> 00:01:07,000
+We'll use different attributes and will understand how using of different attributes can impact the
+
+14
+00:01:07,000 --> 00:01:08,000
+response.
+
+15
+00:01:08,000 --> 00:01:10,000
+Let's start our lesson.
+
+16
+00:01:10,000 --> 00:01:13,000
+Let's understand first what a whisper model is.
+
+17
+00:01:13,000 --> 00:01:18,000
+Whisper is an automatic speech recognition system developed by OpenAI.
+
+18
+00:01:19,000 --> 00:01:24,000
+Trained on a vast and diverse dataset collected from the Internet.
+
+19
+00:01:24,000 --> 00:01:34,000
+Whisper is trained on an extensive dataset comprising 680,000 hours of multilingual and multi-task supervised
+
+20
+00:01:34,000 --> 00:01:35,000
+data.
+
+21
+00:01:35,000 --> 00:01:43,000
+This large and diverse dataset contributes to its robustness in handling various accents, background
+
+22
+00:01:43,000 --> 00:01:47,000
+noise, technical vocabulary and multiple languages.
+
+23
+00:01:47,000 --> 00:01:54,000
+The whisper architecture follows a simple end to end approach implemented as an encoder decoder.
+
+24
+00:01:54,000 --> 00:02:04,000
+Transformer input audio is divided into 32nd segments, converted into log mel spectrograms and processed
+
+25
+00:02:04,000 --> 00:02:05,000
+through an encoder.
+
+26
+00:02:06,000 --> 00:02:07,000
+What is log?
+
+27
+00:02:07,000 --> 00:02:09,000
+Mel spectrogram a log.
+
+28
+00:02:09,000 --> 00:02:17,000
+Mel spectrogram short for logarithmic mel frequency spectrogram is a representation of the spectrum
+
+29
+00:02:17,000 --> 00:02:24,000
+of a signal typically an audio signal that is widely used in speech and audio processing.
+
+30
+00:02:24,000 --> 00:02:32,000
+It is a valuable tool for various tasks such as speech recognition, music analysis and sound classification.
+
+31
+00:02:32,000 --> 00:02:36,000
+At this stage, I don't see a lot of benefits for you going deeper in Learn of Log.
+
+32
+00:02:36,000 --> 00:02:37,000
+Mel Spectrogram.
+
+33
+00:02:38,000 --> 00:02:43,000
+If you will be interested, you can type your questions and comments to this video and I will be happy
+
+34
+00:02:43,000 --> 00:02:44,000
+to answer.
+
+35
+00:02:44,000 --> 00:02:46,000
+Let's learn more about Whisper System.
+
+36
+00:02:47,000 --> 00:02:55,000
+After audio was divided into 32nd segments and processed through an encoder and decoder of Whisper is
+
+37
+00:02:55,000 --> 00:03:02,000
+then trained to predict the corresponding text captions with special tokens to direct the model's tasks
+
+38
+00:03:02,000 --> 00:03:09,000
+such as language identification, timestamps, multilingual transcription and speech translation to
+
+39
+00:03:09,000 --> 00:03:14,000
+English due to its training on a large and diverse dataset.
+
+40
+00:03:14,000 --> 00:03:20,000
+Whisper demonstrates improved robustness compared to other similar models.
+
+41
+00:03:20,000 --> 00:03:28,000
+It makes fewer errors when tested on various datasets, highlighting its adaptability and versatility.
+
+42
+00:03:28,000 --> 00:03:36,000
+Whispers dataset includes a significant portion of non-English audio and it can transcribe in the original
+
+43
+00:03:36,000 --> 00:03:39,000
+language or translate it into English.
+
+44
+00:03:39,000 --> 00:03:47,000
+This approach is found to be effective for speech, to text translation and outperforms supervised state
+
+45
+00:03:47,000 --> 00:03:50,000
+of the art models in certain translation tasks.
+
+46
+00:03:51,000 --> 00:03:54,000
+To understand it better what a whisper model is.
+
+47
+00:03:54,000 --> 00:03:57,000
+Let's review its key features.
+
+48
+00:03:57,000 --> 00:03:59,000
+The first one.
+
+49
+00:03:59,000 --> 00:04:00,000
+Transcription.
+
+50
+00:04:00,000 --> 00:04:06,000
+Whisper can transcribe audio into text written in the original language of the audio.
+
+51
+00:04:06,000 --> 00:04:09,000
+The second one translation.
+
+52
+00:04:09,000 --> 00:04:16,000
+In addition to transcription, Whisper can translate audio from supported languages into English, making
+
+53
+00:04:16,000 --> 00:04:20,000
+it a valuable tool for multilingual applications.
+
+54
+00:04:20,000 --> 00:04:22,000
+File format Support.
+
+55
+00:04:22,000 --> 00:04:27,000
+Whisper supports multiple input and output file formats.
+
+56
+00:04:27,000 --> 00:04:39,000
+The file can be of the following formats Flac, MP3, MP4 and PAC, Mpeg, M4A, Ogg, Vov or Wepm.
+
+57
+00:04:40,000 --> 00:04:43,000
+It can handle various common audio file types.
+
+58
+00:04:44,000 --> 00:04:46,000
+Huge amount of supported languages.
+
+59
+00:04:46,000 --> 00:04:55,000
+Whisper supports a wide range of languages, including Afrikaans, Arabic, Chinese, French, English,
+
+60
+00:04:55,000 --> 00:05:01,000
+German, Japanese, Korean, Russian, Spanish and many more.
+
+61
+00:05:01,000 --> 00:05:06,000
+These languages are supported for both transcriptions and translations.
+
+62
+00:05:07,000 --> 00:05:14,000
+Handling longer inputs, while the default limit for input files is 25MB.
+
+63
+00:05:14,000 --> 00:05:18,000
+Whisper provides guidance on how to handle longer audio files.
+
+64
+00:05:18,000 --> 00:05:25,000
+Users can split longer files into chunks of 25MB or less for processing.
+
+65
+00:05:26,000 --> 00:05:28,000
+Prompting for improved quality.
+
+66
+00:05:28,000 --> 00:05:34,000
+Users can use prompts to improve the quality of transcripts generated by whisper.
+
+67
+00:05:34,000 --> 00:05:40,000
+Prompts allow for some control over the style and content of the generated text.
+
+68
+00:05:41,000 --> 00:05:43,000
+Reliability improvement techniques.
+
+69
+00:05:43,000 --> 00:05:51,000
+Whisper offers techniques to address common challenges, such as recognizing uncommon words or acronyms.
+
+70
+00:05:51,000 --> 00:05:57,000
+Prompting and specific prompt styles can be used to enhance the reliability of transcriptions.
+
+71
+00:05:57,000 --> 00:06:04,000
+As you can see, Whisper is designed to be a versatile tool for converting audio into text and support
+
+72
+00:06:04,000 --> 00:06:11,000
+applications in various fields, including transcription services, language translation and more.
+
+73
+00:06:11,000 --> 00:06:17,000
+And before we jump to learn the details, let's understand business use cases.
+
+74
+00:06:17,000 --> 00:06:25,000
+Or in other words, why Whisper model might be interested to you and when you can use it and in which
+
+75
+00:06:25,000 --> 00:06:26,000
+cases?
+
+76
+00:06:26,000 --> 00:06:32,000
+Let's brainstorm and let me suggest a few ideas for application and start up.
+
+77
+00:06:32,000 --> 00:06:39,000
+The whisper model can be applied in various scenarios depending on your specific needs and use cases.
+
+78
+00:06:39,000 --> 00:06:43,000
+Here are some situations where you might find the whisper model useful.
+
+79
+00:06:43,000 --> 00:06:47,000
+Automatic speech recognition, for example.
+
+80
+00:06:47,000 --> 00:06:48,000
+Transcription Services.
+
+81
+00:06:49,000 --> 00:06:52,000
+If you need to convert recordings into text.
+
+82
+00:06:52,000 --> 00:06:57,000
+Whisper can be used to transcribe these audio inputs accurately.
+
+83
+00:06:57,000 --> 00:07:00,000
+This can be helpful in messaging apps.
+
+84
+00:07:00,000 --> 00:07:06,000
+For example, such messenger as telegram has premium features that allows to convert audio messages
+
+85
+00:07:06,000 --> 00:07:07,000
+into text.
+
+86
+00:07:07,000 --> 00:07:15,000
+This is helpful in case person who received audio message don't want or can't listen to an audio message
+
+87
+00:07:15,000 --> 00:07:16,000
+at the moment.
+
+88
+00:07:17,000 --> 00:07:18,000
+Voice assistance.
+
+89
+00:07:18,000 --> 00:07:25,000
+Whisper can power the speech recognition component of voice assistance or chat bots, enabling them
+
+90
+00:07:25,000 --> 00:07:30,000
+to understand and respond to spoken commands or questions.
+
+91
+00:07:30,000 --> 00:07:32,000
+Or imagine another case.
+
+92
+00:07:32,000 --> 00:07:39,000
+You developed an application similar to the one we created in our course application for automation
+
+93
+00:07:39,000 --> 00:07:41,000
+of project management activities.
+
+94
+00:07:41,000 --> 00:07:44,000
+And you don't want to give commands via a chat.
+
+95
+00:07:44,000 --> 00:07:48,000
+You want to send audio message, for example, like this.
+
+96
+00:07:48,000 --> 00:07:52,000
+Create a user story to implement chat bot and assign it to Andre.
+
+97
+00:07:52,000 --> 00:07:54,000
+And that's it.
+
+98
+00:07:54,000 --> 00:08:00,000
+Our application will use Whisper to recognize audio and convert speech to text.
+
+99
+00:08:00,000 --> 00:08:05,000
+Then speech will be sent to the chat GPT, then chat.
+
+100
+00:08:05,000 --> 00:08:10,000
+GPT will understand that we want to make a function call and then we'll be back to the scenarios that
+
+101
+00:08:10,000 --> 00:08:12,000
+we already implemented in the previous lesson.
+
+102
+00:08:13,000 --> 00:08:15,000
+The second business use case.
+
+103
+00:08:15,000 --> 00:08:21,000
+Multilingual applications like language translation applications, for example.
+
+104
+00:08:22,000 --> 00:08:28,000
+If you want to create applications that translate spoken content from multiple languages into English,
+
+105
+00:08:28,000 --> 00:08:35,000
+whisper can be a valuable component for handling the transcription and translation tasks.
+
+106
+00:08:35,000 --> 00:08:41,000
+For example, you have multilingual team you can use Whisper to boost your communication.
+
+107
+00:08:42,000 --> 00:08:47,000
+Everyone can speak in their original language and it will be translated to English.
+
+108
+00:08:47,000 --> 00:08:50,000
+Another use case Multilingual transcription.
+
+109
+00:08:50,000 --> 00:08:57,000
+Whisper can be used to transcribe audio content in various languages, making it suitable for applications
+
+110
+00:08:57,000 --> 00:09:00,000
+involving multilingual audio data.
+
+111
+00:09:01,000 --> 00:09:05,000
+The group of accessibility and captioning use cases.
+
+112
+00:09:05,000 --> 00:09:10,000
+Imagine closed captioning for video content.
+
+113
+00:09:10,000 --> 00:09:17,000
+Whisper can be used to generate closed captions making your videos accessible to individuals with hearing
+
+114
+00:09:17,000 --> 00:09:20,000
+disabilities or for content localization.
+
+115
+00:09:21,000 --> 00:09:22,000
+Accessibility tools.
+
+116
+00:09:23,000 --> 00:09:29,000
+It can be integrated into accessibility tools that converts spoken content in real time into text,
+
+117
+00:09:29,000 --> 00:09:33,000
+helping individuals with hearing disabilities.
+
+118
+00:09:33,000 --> 00:09:36,000
+Content indexing and search.
+
+119
+00:09:36,000 --> 00:09:43,000
+Whisper can assist in indexing and searching audio or video content by transcribing the audio.
+
+120
+00:09:43,000 --> 00:09:48,000
+You can make the content searchable based on its spoken words and phrases.
+
+121
+00:09:49,000 --> 00:09:50,000
+Voice Data analysis.
+
+122
+00:09:51,000 --> 00:09:52,000
+Market Research.
+
+123
+00:09:52,000 --> 00:10:00,000
+Use Case Analyzing recorded phone interviews, customer service calls or user feedback can provide valuable
+
+124
+00:10:00,000 --> 00:10:01,000
+insights.
+
+125
+00:10:01,000 --> 00:10:06,000
+Whisper can transcribe and then using chat GPT post-processing.
+
+126
+00:10:06,000 --> 00:10:09,000
+You can analyze these audio records.
+
+127
+00:10:09,000 --> 00:10:11,000
+Voice Data Mining.
+
+128
+00:10:11,000 --> 00:10:18,000
+Whisper can help organizations extract useful information from voice data for business intelligence,
+
+129
+00:10:18,000 --> 00:10:20,000
+quality control and trend analysis.
+
+130
+00:10:21,000 --> 00:10:22,000
+Meeting minutes.
+
+131
+00:10:23,000 --> 00:10:28,000
+Imagine that you have productive meeting and you don't want to write meeting minutes in case you have
+
+132
+00:10:28,000 --> 00:10:30,000
+audio recording of the meeting.
+
+133
+00:10:30,000 --> 00:10:37,000
+You can use Whisper model to convert audio to text and then ask ChatGPT to structure meeting minutes
+
+134
+00:10:37,000 --> 00:10:38,000
+on your request.
+
+135
+00:10:39,000 --> 00:10:45,000
+Assign action items to responsible team members and even to send an email to accountable team members.
+
+136
+00:10:46,000 --> 00:10:53,000
+And we already had the lesson in the course about how to generate and send email using ChatGPT and custom
+
+137
+00:10:53,000 --> 00:10:53,000
+application.
+
+138
+00:10:54,000 --> 00:10:55,000
+Language learning.
+
+139
+00:10:56,000 --> 00:11:02,000
+If you develop in language learning platforms or applications, whisper can be used to transcribe and
+
+140
+00:11:02,000 --> 00:11:10,000
+translate spoken content, facilitating language acquisition, podcasts and media production.
+
+141
+00:11:10,000 --> 00:11:17,000
+Whisper can be used to generate transcripts for podcasts or spoken content, making it easier to create
+
+142
+00:11:17,000 --> 00:11:21,000
+written summaries, articles, or searchable show notes.
+
+143
+00:11:22,000 --> 00:11:23,000
+Content Moderation.
+
+144
+00:11:23,000 --> 00:11:30,000
+Whisper can be part of content moderation systems helping identify and flag inappropriate or offensive
+
+145
+00:11:30,000 --> 00:11:32,000
+audio content.
+
+146
+00:11:32,000 --> 00:11:34,000
+Research and data collection.
+
+147
+00:11:35,000 --> 00:11:42,000
+Researchers can use Whisper to transcribe interviews, field recordings or oral history, making it
+
+148
+00:11:42,000 --> 00:11:45,000
+easier to analyze and store data.
+
+149
+00:11:45,000 --> 00:11:52,000
+Custom applications You can integrate, whisper into custom applications or workflows tailored to your
+
+150
+00:11:52,000 --> 00:11:54,000
+specific needs.
+
+151
+00:11:54,000 --> 00:11:59,000
+For example, creating a custom voice assistant for industry specific tasks.
+
+152
+00:11:59,000 --> 00:12:05,000
+Keep in mind that whisper, like any tool, has its strengths and limitations.
+
+153
+00:12:05,000 --> 00:12:14,000
+It excels in handling diverse accents, languages and audio conditions, but may not be perfect in all
+
+154
+00:12:14,000 --> 00:12:15,000
+situations.
+
+155
+00:12:15,000 --> 00:12:22,000
+As you can see, Whisper can be a valuable tool for converting spoken language into text and opening
+
+156
+00:12:22,000 --> 00:12:27,000
+up a wide range of possibilities for audio data processing and analysis.
+
+157
+00:12:27,000 --> 00:12:34,000
+Even despite all advantages and features, it is always worse to know the existing limitations of the
+
+158
+00:12:34,000 --> 00:12:34,000
+model.
+
+159
+00:12:34,000 --> 00:12:38,000
+So let me share with you limitations that you need to consider.
+
+160
+00:12:38,000 --> 00:12:46,000
+File Size Limitation Whispers API supports file uploads of up to 25MB.
+
+161
+00:12:46,000 --> 00:12:53,000
+Larger audio files need to be split into smaller chunks or compressed, potentially leading to context
+
+162
+00:12:53,000 --> 00:12:55,000
+loss if not handled carefully.
+
+163
+00:12:56,000 --> 00:13:03,000
+I'm talking about cases when you split audio file in the middle of sentence or in the middle of a word.
+
+164
+00:13:03,000 --> 00:13:08,000
+To avoid such cases, you can use special libraries to divide audio properly.
+
+165
+00:13:09,000 --> 00:13:17,000
+English only translation is a translation feature of whisper is limited to translating audio into English.
+
+166
+00:13:17,000 --> 00:13:20,000
+It doesn't support translation into other languages.
+
+167
+00:13:20,000 --> 00:13:24,000
+In my opinion, this is probably one of the most critical limitation.
+
+168
+00:13:25,000 --> 00:13:27,000
+Limited language support.
+
+169
+00:13:27,000 --> 00:13:35,000
+While the whisper model was trained on 98 languages, it may not achieve high accuracy for all of them.
+
+170
+00:13:35,000 --> 00:13:42,000
+Only languages with a word error rate of less than 50% are officially supported.
+
+171
+00:13:43,000 --> 00:13:49,000
+After this slide, I'm going to explain you what a word error rate is in more details.
+
+172
+00:13:50,000 --> 00:13:52,000
+Limited audio format support.
+
+173
+00:13:53,000 --> 00:14:05,000
+Whisper supports specific audio file formats Flac, MP3, MP4 and pack Mpeg, M4A, Ogg, Vov or WebP
+
+174
+00:14:05,000 --> 00:14:05,000
+Em.
+
+175
+00:14:06,000 --> 00:14:09,000
+Using unsupported formats can be a limitation.
+
+176
+00:14:10,000 --> 00:14:12,000
+Segmented Audio Context.
+
+177
+00:14:12,000 --> 00:14:20,000
+Whisper considers only the final 224 tokens of a prompt for context when dealing with segmented audio.
+
+178
+00:14:20,000 --> 00:14:28,000
+This limitation can impact the handling of long and complex segments, prompting system limitations
+
+179
+00:14:28,000 --> 00:14:31,000
+while prompts can improve transcription quality.
+
+180
+00:14:31,000 --> 00:14:37,000
+The whisper model's prompting system is more limited compared to other language models.
+
+181
+00:14:37,000 --> 00:14:40,000
+It provides less control over generated audio.
+
+182
+00:14:41,000 --> 00:14:43,000
+How to use prompts in whisper.
+
+183
+00:14:43,000 --> 00:14:47,000
+We We're going to learn later in this lesson.
+
+184
+00:14:47,000 --> 00:14:54,000
+Style marching while the model adapts to the style of the prompt, it may not always match the desired
+
+185
+00:14:54,000 --> 00:15:01,000
+writing style for languages with variations such as simplified and traditional Chinese.
+
+186
+00:15:01,000 --> 00:15:06,000
+For example, recognition of uncommon words and acronyms.
+
+187
+00:15:06,000 --> 00:15:13,000
+Whisper may not always recognize uncommon words or acronyms accurately in the audio prompts can help
+
+188
+00:15:13,000 --> 00:15:15,000
+address this limitation.
+
+189
+00:15:16,000 --> 00:15:18,000
+His ability of third party software.
+
+190
+00:15:19,000 --> 00:15:26,000
+Whisper recommends using third party software like Pi DOP for handling longer audio inputs.
+
+191
+00:15:27,000 --> 00:15:34,000
+We already talked about risk in case you would divide audio file into multiple chunks, you can interrupt
+
+192
+00:15:34,000 --> 00:15:38,000
+the audience the middle of the sentence and even in the middle of the word.
+
+193
+00:15:38,000 --> 00:15:43,000
+And this may impact consistency of the transcription and translation.
+
+194
+00:15:43,000 --> 00:15:52,000
+However, OpenAI makes no guarantees about usability or security of third party libraries, so these
+
+195
+00:15:52,000 --> 00:15:56,000
+are important limitations to consider when you are dealing with whisper model.
+
+196
+00:15:56,000 --> 00:16:00,000
+And I hope with the new versions of Whisper, they will be addressed.
+
+197
+00:16:00,000 --> 00:16:01,000
+So stay tuned.
+
+198
+00:16:02,000 --> 00:16:07,000
+I also promised to explain to you such concepts as word error rate.
+
+199
+00:16:07,000 --> 00:16:12,000
+I believe it will be useful for your general education of speech recognition.
+
+200
+00:16:12,000 --> 00:16:19,000
+Word error rate is a measure used to evaluate the accuracy of automatic speech recognition systems.
+
+201
+00:16:19,000 --> 00:16:27,000
+In simple terms, it calculates the percentage of words that are incorrect or have errors in the transcribed
+
+202
+00:16:27,000 --> 00:16:31,000
+output compared to the reference or original text.
+
+203
+00:16:32,000 --> 00:16:42,000
+A lower word error rate indicates higher accuracy, while a higher word error rate suggests more errors
+
+204
+00:16:42,000 --> 00:16:43,000
+in the transcription.
+
+205
+00:16:43,000 --> 00:16:51,000
+For example, if an automatic speech recognition system transcribes a sentence with three errors out
+
+206
+00:16:51,000 --> 00:17:00,000
+of ten words, the word error rate would be 30% because three out of ten words are incorrect or mismatched.
+
+207
+00:17:00,000 --> 00:17:08,000
+Word error rate provides a straightforward way to assess how well an automatic speech recognition system
+
+208
+00:17:08,000 --> 00:17:12,000
+performs in converting spoken language into written text.
+
+209
+00:17:12,000 --> 00:17:20,000
+And now let's learn API of whisper model and implement simple scenarios in order to understand how to
+
+210
+00:17:20,000 --> 00:17:22,000
+interact with whisper model.
+
+211
+00:17:22,000 --> 00:17:27,000
+As you already learned from the slides, there are two main scenarios for whisper model.
+
+212
+00:17:27,000 --> 00:17:31,000
+They are transcription and translation.
+
+213
+00:17:32,000 --> 00:17:37,000
+I'm going to use Postman and send request from Postman to demo Whisper API.
+
+214
+00:17:38,000 --> 00:17:40,000
+Let's start from the transcription.
+
+215
+00:17:41,000 --> 00:17:45,000
+I created test audio file in the MP3 format as it want to.
+
+216
+00:17:45,000 --> 00:17:46,000
+Transcript.
+
+217
+00:17:46,000 --> 00:17:52,000
+With the help of Whisper model in attachments to the lesson, you can find all files to proceed with
+
+218
+00:17:52,000 --> 00:17:53,000
+this scenario.
+
+219
+00:17:54,000 --> 00:17:56,000
+I added necessary audio files.
+
+220
+00:17:56,000 --> 00:18:00,000
+I also added export of my postman collection.
+
+221
+00:18:01,000 --> 00:18:07,000
+So for this example use file with the name zero one underscore demo underscore file.
+
+222
+00:18:08,000 --> 00:18:12,000
+You can download it and put it in any location on your computer.
+
+223
+00:18:13,000 --> 00:18:16,000
+Then you can import Postman collection.
+
+224
+00:18:16,000 --> 00:18:20,000
+I had a separate lesson about how to work with Postman.
+
+225
+00:18:20,000 --> 00:18:23,000
+That's why I wouldn't stop on this too much.
+
+226
+00:18:23,000 --> 00:18:29,000
+In case you would need advice regarding Postman, let me know in comments below the video and I will
+
+227
+00:18:29,000 --> 00:18:30,000
+be happy to answer.
+
+228
+00:18:31,000 --> 00:18:33,000
+After you imported postman collection.
+
+229
+00:18:33,000 --> 00:18:42,000
+Do not forget to configure API key because in postman collection I use OpenAI key variable and you need
+
+230
+00:18:42,000 --> 00:18:47,000
+to configure OpenAI API key in order to be able to execute API queries.
+
+231
+00:18:48,000 --> 00:18:51,000
+Also another important thing in attachments.
+
+232
+00:18:51,000 --> 00:18:55,000
+You will be able to find the link to the official API reference.
+
+233
+00:18:55,000 --> 00:19:03,000
+OpenAI is famous for dynamic pace of development and sometimes ignorance of backward compatibility with
+
+234
+00:19:03,000 --> 00:19:04,000
+new releases.
+
+235
+00:19:04,000 --> 00:19:11,000
+That's why I recommend you always to check the content in the lesson with the latest updates in the
+
+236
+00:19:11,000 --> 00:19:19,000
+official API documentation in case there will be some changes, use latest API from the documentation.
+
+237
+00:19:20,000 --> 00:19:24,000
+Here we can see that this is a post request to this URL.
+
+238
+00:19:25,000 --> 00:19:32,000
+As you can see here in API reference, it is specified that we have to mandatory and required attributes.
+
+239
+00:19:32,000 --> 00:19:36,000
+They are file and model in the file.
+
+240
+00:19:36,000 --> 00:19:41,000
+You need to pass the real file object, not just the name of the file.
+
+241
+00:19:41,000 --> 00:19:48,000
+In this video I'm going to show you how to pass the file object in the postman today and how to pass
+
+242
+00:19:48,000 --> 00:19:49,000
+it from the code.
+
+243
+00:19:49,000 --> 00:19:52,000
+I will show you in another lesson.
+
+244
+00:19:52,000 --> 00:19:59,000
+As you can see, file can be of different formats like we already discussed when we talked about limitations.
+
+245
+00:19:59,000 --> 00:20:11,000
+The file can be of the following formats flac, mp3, mp4, Mpeg, M4A, ogg Vov or WebP.
+
+246
+00:20:11,000 --> 00:20:12,000
+M.
+
+247
+00:20:12,000 --> 00:20:14,000
+For the model attribute.
+
+248
+00:20:14,000 --> 00:20:15,000
+We just need to pass value.
+
+249
+00:20:15,000 --> 00:20:17,000
+Whisper Dash one.
+
+250
+00:20:17,000 --> 00:20:23,000
+Currently, and based on today, OpenAI has just one model for speech to text.
+
+251
+00:20:23,000 --> 00:20:26,000
+Probably in the nearest future there will be updates and there will be new.
+
+252
+00:20:26,000 --> 00:20:27,000
+Models.
+
+253
+00:20:27,000 --> 00:20:34,000
+But so far you can just put whisper dash one as a attributes are optional and we are going to use them
+
+254
+00:20:34,000 --> 00:20:37,000
+a little bit later in this lesson.
+
+255
+00:20:37,000 --> 00:20:42,000
+Let's just try to get a transcription with just required attributes.
+
+256
+00:20:43,000 --> 00:20:49,000
+Here in Postman, you can import the collection that I shared in attachments to the video or just create
+
+257
+00:20:49,000 --> 00:20:51,000
+this request from scratch.
+
+258
+00:20:51,000 --> 00:20:59,000
+It wouldn't be super complex, so we need to create a post request URL you can take from the API reference
+
+259
+00:20:59,000 --> 00:21:02,000
+page that we just reviewed in headers.
+
+260
+00:21:02,000 --> 00:21:10,000
+You need to specify authorization header and insert your OpenAI API key here and content type.
+
+261
+00:21:10,000 --> 00:21:13,000
+Content type is multi-part form data.
+
+262
+00:21:14,000 --> 00:21:18,000
+Now we need to configure body of our request.
+
+263
+00:21:18,000 --> 00:21:22,000
+Open Body tap select form data.
+
+264
+00:21:22,000 --> 00:21:25,000
+Here we have file and model attributes.
+
+265
+00:21:26,000 --> 00:21:30,000
+Pay attention that here you can specify type of the value.
+
+266
+00:21:30,000 --> 00:21:35,000
+If you hover mouse in this field, you can change text to file type.
+
+267
+00:21:35,000 --> 00:21:37,000
+That is exactly what we need.
+
+268
+00:21:37,000 --> 00:21:44,000
+And in the value field you can select audio file that you can also download from attachments to the
+
+269
+00:21:44,000 --> 00:21:47,000
+video or create a new file if you want.
+
+270
+00:21:47,000 --> 00:21:49,000
+That's it.
+
+271
+00:21:49,000 --> 00:21:50,000
+Pretty simple, don't you think?
+
+272
+00:21:50,000 --> 00:21:54,000
+So Now we are ready to send the request.
+
+273
+00:21:54,000 --> 00:21:58,000
+Let me click Send button and here it is.
+
+274
+00:21:58,000 --> 00:22:05,000
+We received a response By default, the data is returned in the Json format.
+
+275
+00:22:05,000 --> 00:22:13,000
+If you want, you can select any other supported format like for example, text SRT, verbose Json or
+
+276
+00:22:13,000 --> 00:22:14,000
+V double T.
+
+277
+00:22:15,000 --> 00:22:18,000
+Let me show you an example of verbose Json.
+
+278
+00:22:19,000 --> 00:22:27,000
+I just add one more attribute that is called response format, and I write verbose Json as value here
+
+279
+00:22:27,000 --> 00:22:29,000
+and I send request one more time.
+
+280
+00:22:30,000 --> 00:22:37,000
+Verbose Json gives you a lot of meta information like for example, task language, duration of the
+
+281
+00:22:37,000 --> 00:22:40,000
+audio array of segments and tokens.
+
+282
+00:22:40,000 --> 00:22:48,000
+You know that OpenAI language models operate on tokens rather than on the whole words or characters.
+
+283
+00:22:48,000 --> 00:22:53,000
+And in the previous lesson we discussed this tokenized model and other details.
+
+284
+00:22:53,000 --> 00:22:57,000
+So if you are interested you can use verbose mode.
+
+285
+00:22:57,000 --> 00:23:02,000
+For example, this can be useful if you want to gather some analytics.
+
+286
+00:23:03,000 --> 00:23:08,000
+Like I said, it is up to you which format works the best for your business needs.
+
+287
+00:23:08,000 --> 00:23:11,000
+You can make transcription on various languages.
+
+288
+00:23:12,000 --> 00:23:18,000
+The demo file number two that you can find in attachments to the lesson is recorded in the Russian language
+
+289
+00:23:19,000 --> 00:23:26,000
+and if you would select it for transcription and send request, then you would see that language is
+
+290
+00:23:26,000 --> 00:23:31,000
+auto detected and transcript is in the original language.
+
+291
+00:23:31,000 --> 00:23:33,000
+That's amazing, don't you think so?
+
+292
+00:23:34,000 --> 00:23:37,000
+And the quality of transcription is really high.
+
+293
+00:23:38,000 --> 00:23:42,000
+Let's review other attributes that we have available for this endpoint.
+
+294
+00:23:42,000 --> 00:23:43,000
+Prompt.
+
+295
+00:23:43,000 --> 00:23:47,000
+You can use prompt to improve the quality of transcripts.
+
+296
+00:23:47,000 --> 00:23:53,000
+Important thing to mention here is that prompt should be written in the same language as audio.
+
+297
+00:23:53,000 --> 00:24:01,000
+The model adapts its style based on the provided prompt, including capitalization and punctuation.
+
+298
+00:24:01,000 --> 00:24:08,000
+When you provide a prompt, the model adjusts its style to match, including factors like capitalization
+
+299
+00:24:08,000 --> 00:24:09,000
+and punctuation.
+
+300
+00:24:10,000 --> 00:24:16,000
+Note that the prompting system in whisper is more limited compared to other language models.
+
+301
+00:24:16,000 --> 00:24:20,000
+It is not just GPT model and you need to consider this limitation.
+
+302
+00:24:20,000 --> 00:24:27,000
+Despite its limitations, prompts offer valuable advantages for refining transcriptions.
+
+303
+00:24:27,000 --> 00:24:32,000
+Let's review some examples when you may need to use, prompting for transcription.
+
+304
+00:24:32,000 --> 00:24:35,000
+Correcting Misrecognized words.
+
+305
+00:24:36,000 --> 00:24:39,000
+Use prompts to address specific mis recognitions.
+
+306
+00:24:39,000 --> 00:24:48,000
+For example, the Li or GPT four Just specify to help the model understand the sound better and transcript
+
+307
+00:24:48,000 --> 00:24:52,000
+it with higher quality context preservation.
+
+308
+00:24:52,000 --> 00:24:57,000
+Maintain context when dealing with segmented audio files.
+
+309
+00:24:57,000 --> 00:25:04,000
+We already discussed limitations and I believe you can understand that in case that single audio file
+
+310
+00:25:04,000 --> 00:25:12,000
+was segmented into multiple files, there is a risk of losing context of what was said in the previous
+
+311
+00:25:12,000 --> 00:25:12,000
+transcription.
+
+312
+00:25:13,000 --> 00:25:18,000
+To improve this, we can pass prompt with a transcript of the preceding segment.
+
+313
+00:25:19,000 --> 00:25:23,000
+Model considers the final 224 tokens of the prompt.
+
+314
+00:25:24,000 --> 00:25:25,000
+Punctuation.
+
+315
+00:25:25,000 --> 00:25:29,000
+Sometimes during the transcription model can skip punctuation.
+
+316
+00:25:29,000 --> 00:25:37,000
+To ensure proper punctuation, you need just submit simple prompt with punctuation marks as simple as
+
+317
+00:25:37,000 --> 00:25:39,000
+Hello comma.
+
+318
+00:25:39,000 --> 00:25:41,000
+Welcome to my lecture point.
+
+319
+00:25:43,000 --> 00:25:50,000
+Retained filler words model can skip some common filler words, but if you want to keep them in the
+
+320
+00:25:50,000 --> 00:25:55,000
+transcript, you need just to use prompt that contains these filler words.
+
+321
+00:25:55,000 --> 00:25:57,000
+For example.
+
+322
+00:25:57,000 --> 00:26:00,000
+Um, let me think like, Hmm.
+
+323
+00:26:00,000 --> 00:26:05,000
+Okay, here is what I'm like thinking.
+
+324
+00:26:06,000 --> 00:26:07,000
+Language style.
+
+325
+00:26:07,000 --> 00:26:14,000
+Certain languages can have variations in writing styles like simplified and traditional Chinese.
+
+326
+00:26:14,000 --> 00:26:20,000
+The model may not consistently adapt the desired writing style for your transcript by default.
+
+327
+00:26:20,000 --> 00:26:25,000
+You can improve this by using a prompt in your preferred writing style.
+
+328
+00:26:25,000 --> 00:26:28,000
+Let's continue review of other attributes.
+
+329
+00:26:28,000 --> 00:26:35,000
+So far we learned and reviewed response format and prompt temperature attribute is a similar one to
+
+330
+00:26:35,000 --> 00:26:37,000
+other language models.
+
+331
+00:26:37,000 --> 00:26:42,000
+In simple words, it impacts randomness of transcription.
+
+332
+00:26:42,000 --> 00:26:50,000
+When you usually do transcription, randomness or creativity, it is not something what you are looking
+
+333
+00:26:50,000 --> 00:26:50,000
+for.
+
+334
+00:26:50,000 --> 00:26:51,000
+Agree.
+
+335
+00:26:51,000 --> 00:26:58,000
+That's why I personally myself don't use this attribute too often for transcription cases, but you
+
+336
+00:26:58,000 --> 00:27:01,000
+can consider it for your business case if you wish.
+
+337
+00:27:02,000 --> 00:27:06,000
+And the last attribute here in the list is the language attribute.
+
+338
+00:27:06,000 --> 00:27:11,000
+This attribute is used to tell model what language is used in audio.
+
+339
+00:27:11,000 --> 00:27:15,000
+You can describe language via two letter code.
+
+340
+00:27:15,000 --> 00:27:19,000
+According to the ISO standard 639 one.
+
+341
+00:27:19,000 --> 00:27:21,000
+Basically that's it.
+
+342
+00:27:21,000 --> 00:27:22,000
+Regarding transcription.
+
+343
+00:27:22,000 --> 00:27:30,000
+Now, when you know API, you can use this API with any programming language and built in this functionality
+
+344
+00:27:30,000 --> 00:27:33,000
+into your business case scenario and business flow.
+
+345
+00:27:34,000 --> 00:27:39,000
+Let's now review translation feature and API for translation.
+
+346
+00:27:39,000 --> 00:27:47,000
+As you already learned, translation API has its own limitations, and one of its limitations is that
+
+347
+00:27:47,000 --> 00:27:50,000
+it translates only into English.
+
+348
+00:27:50,000 --> 00:27:55,000
+So I need to have audio file with the speech in another language.
+
+349
+00:27:55,000 --> 00:28:01,000
+So that's why you need to download another audio file for the following example.
+
+350
+00:28:01,000 --> 00:28:08,000
+The second audio file that you can find in attachments contains my voice speaking in Russian, and we
+
+351
+00:28:08,000 --> 00:28:15,000
+want to use Whisper model in order to get translation of what was said in the audio in the Postman collection
+
+352
+00:28:15,000 --> 00:28:16,000
+that I have shared with you.
+
+353
+00:28:16,000 --> 00:28:20,000
+You can find another request that is called translation.
+
+354
+00:28:21,000 --> 00:28:24,000
+You can open it or create a new one from scratch.
+
+355
+00:28:25,000 --> 00:28:27,000
+The URL is different.
+
+356
+00:28:27,000 --> 00:28:30,000
+I send request to translations resource.
+
+357
+00:28:31,000 --> 00:28:36,000
+I also change file in order to select file where I speak in Russian.
+
+358
+00:28:36,000 --> 00:28:43,000
+In the model attribute I leave Whisper one because OpenAI has just one model for speech to text so far
+
+359
+00:28:43,000 --> 00:28:45,000
+and for response format.
+
+360
+00:28:45,000 --> 00:28:51,000
+I would add text value just to remind you that the response format is optional.
+
+361
+00:28:51,000 --> 00:28:54,000
+All other configurations are similar.
+
+362
+00:28:54,000 --> 00:29:00,000
+I mean, you need also to specify authorization header and content type header in the similar way like
+
+363
+00:29:00,000 --> 00:29:02,000
+we configured in the previous example.
+
+364
+00:29:03,000 --> 00:29:09,000
+So we are ready to send the request and in response I receive a translated text.
+
+365
+00:29:09,000 --> 00:29:10,000
+Amazing.
+
+366
+00:29:10,000 --> 00:29:12,000
+Looks really cool.
+
+367
+00:29:12,000 --> 00:29:16,000
+I can confirm that translation is absolutely correct.
+
+368
+00:29:16,000 --> 00:29:24,000
+So with Whisper model we receive an amazing helper in audio translation and you can use this API inside
+
+369
+00:29:24,000 --> 00:29:26,000
+your applications.
+
+370
+00:29:27,000 --> 00:29:32,000
+Regarding additional attributes and customization, I can say that there are no specific attributes
+
+371
+00:29:32,000 --> 00:29:35,000
+besides the ones we already reviewed.
+
+372
+00:29:35,000 --> 00:29:39,000
+Response format prompt that should be in English.
+
+373
+00:29:39,000 --> 00:29:42,000
+And this is the difference attention.
+
+374
+00:29:42,000 --> 00:29:50,000
+Because if you remember in transcription API prompt should match the audio language and in translation
+
+375
+00:29:50,000 --> 00:29:52,000
+API it should be in English.
+
+376
+00:29:53,000 --> 00:29:56,000
+And temperature attribute that is also already familiar to you.
+
+377
+00:29:57,000 --> 00:30:00,000
+Basically, that's all what I wanted to share with you in this lesson.
+
+378
+00:30:00,000 --> 00:30:07,000
+And just to remind you that in case you have any questions, please let me know below this video.
+
+379
+00:30:07,000 --> 00:30:11,000
+Now let's recap what we have learned in this video.
+
+380
+00:30:12,000 --> 00:30:15,000
+We learned what an OpenAI whisper model is.
+
+381
+00:30:15,000 --> 00:30:20,000
+I explained its key features, reviewed business use cases.
+
+382
+00:30:20,000 --> 00:30:27,000
+Also, I explained you limitations of the models that you need to be aware about and consider when you
+
+383
+00:30:27,000 --> 00:30:28,000
+work with Whisper.
+
+384
+00:30:28,000 --> 00:30:35,000
+Together we learned API documentation of Whisper model and we saw practical examples of transcription
+
+385
+00:30:35,000 --> 00:30:37,000
+and translation.
+
+386
+00:30:37,000 --> 00:30:42,000
+I hope you liked this lesson and that it was interesting for you.
+
+387
+00:30:42,000 --> 00:30:44,000
+Thanks a lot for your attention.
+
+388
+00:30:44,000 --> 00:30:47,000
+I wish you a great day and see you in the next lesson.
+
diff --git a/103 - Whisper - Speech to text AI model by OpenAI/external-links.txt b/103 - Whisper - Speech to text AI model by OpenAI/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7e13da5c003f3f341d1eb9b9d281ff249a208730
--- /dev/null
+++ b/103 - Whisper - Speech to text AI model by OpenAI/external-links.txt
@@ -0,0 +1,12 @@
+
+001 Audio-file-1-used-in-the-lesson-for-transcription-demo
+https://github.com/AndriiPiatakha/openai-learnit/blob/master/whisper/01_demo_file.mp3
+
+001 Audio-file-2-used-in-the-lesson-for-translation-demo
+https://github.com/AndriiPiatakha/openai-learnit/blob/master/whisper/02_demo_file.mp3
+
+001 Postman-collection
+https://github.com/AndriiPiatakha/openai-learnit/blob/master/whisper/OpenAI%20Whisper.postman_collection.json
+
+001 API-Reference
+https://platform.openai.com/docs/api-reference/audio
diff --git a/104 - UML Introduction/001 Introduction to UML_en.srt b/104 - UML Introduction/001 Introduction to UML_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..8209fc795c0c6bb457385c5fcd54e49992b36342
--- /dev/null
+++ b/104 - UML Introduction/001 Introduction to UML_en.srt
@@ -0,0 +1,1172 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, dear students.
+
+2
+00:00:06,000 --> 00:00:11,000
+In this lesson we are going to hold an introduction to the course.
+
+3
+00:00:11,000 --> 00:00:17,000
+You are going to learn what an HTML is, why it is needed, and what we are going to learn in this course.
+
+4
+00:00:18,000 --> 00:00:24,000
+We are going to start the lesson from learning of the general definition of HTML and understand its
+
+5
+00:00:24,000 --> 00:00:25,000
+key points.
+
+6
+00:00:26,000 --> 00:00:31,000
+I will explain you the evolution of HTML through the history of its versions.
+
+7
+00:00:31,000 --> 00:00:39,000
+Then we will review main groups of UML diagrams and I will make a brief overview of 14 UML diagrams
+
+8
+00:00:39,000 --> 00:00:42,000
+highlighting the key purposes here.
+
+9
+00:00:42,000 --> 00:00:48,000
+In the course we are going to have separate lessons dedicated for each diagram, and in this lesson
+
+10
+00:00:48,000 --> 00:00:50,000
+I will make just an overview.
+
+11
+00:00:50,000 --> 00:00:56,000
+This will help you to navigate in the course structure better and set the priorities for learning.
+
+12
+00:00:56,000 --> 00:01:03,000
+Then we'll review tools that you can use during the course to practice your skills in UML because to
+
+13
+00:01:03,000 --> 00:01:10,000
+draw UML diagrams you need some special software and I will share with you some free to use tools.
+
+14
+00:01:10,000 --> 00:01:14,000
+Also, I will explain you how you can extend UML.
+
+15
+00:01:14,000 --> 00:01:20,000
+I don't want you to think that UML is limited to its standard notation and semantics.
+
+16
+00:01:20,000 --> 00:01:22,000
+We will learn profiles in UML.
+
+17
+00:01:23,000 --> 00:01:30,000
+There are key components, usage of profiles and examples of profiles and you will learn how you can
+
+18
+00:01:30,000 --> 00:01:32,000
+extend UML.
+
+19
+00:01:32,000 --> 00:01:38,000
+And at the end of the lesson in the summary, I am going to make a conclusion about the role of UML
+
+20
+00:01:38,000 --> 00:01:42,000
+in the modern software development process and when to use UML.
+
+21
+00:01:43,000 --> 00:01:45,000
+Let's start our lesson.
+
+22
+00:01:45,000 --> 00:01:52,000
+Let's start from understanding of what is UML stands for Unified Modeling Language.
+
+23
+00:01:52,000 --> 00:02:00,000
+It is a standardized modeling language used in software, engineering and other fields for visualizing,
+
+24
+00:02:00,000 --> 00:02:06,000
+specifying, constructing and documenting the artifacts of a system's design.
+
+25
+00:02:07,000 --> 00:02:13,000
+It provides a common and standardized way for software developers, system architects and stakeholders
+
+26
+00:02:13,000 --> 00:02:18,000
+to communicate and understand the design and structure of a system.
+
+27
+00:02:18,000 --> 00:02:27,000
+It was developed at Rational Software in 1994 with further development led by Zam through 1996.
+
+28
+00:02:27,000 --> 00:02:36,000
+In 1997, UML was adopted as a standard by the Object Management group and has been managed by this
+
+29
+00:02:36,000 --> 00:02:38,000
+organization ever since.
+
+30
+00:02:38,000 --> 00:02:47,000
+In 2005, UML was also published by the International Organization for Standardization and the International
+
+31
+00:02:47,000 --> 00:02:55,000
+Electrotechnical Commission as the ISO IEC 19,501 Standard.
+
+32
+00:02:55,000 --> 00:03:01,000
+Since then, the standard has been periodically revised to cover the latest revision of UML.
+
+33
+00:03:02,000 --> 00:03:08,000
+To understand better what UML is, let's review its key points and features.
+
+34
+00:03:08,000 --> 00:03:12,000
+Number one Standardization.
+
+35
+00:03:12,000 --> 00:03:18,000
+UML is not tied to any specific programming language development process or technology.
+
+36
+00:03:18,000 --> 00:03:25,000
+It is a standardized language and notation that is widely accepted in software development industry.
+
+37
+00:03:26,000 --> 00:03:28,000
+Visual Representation.
+
+38
+00:03:29,000 --> 00:03:37,000
+UML uses diagrams and symbols to represent various aspects of a system such as its structure, architecture,
+
+39
+00:03:37,000 --> 00:03:40,000
+behavior interactions and more.
+
+40
+00:03:40,000 --> 00:03:46,000
+These visual representations make it easier to understand complex systems.
+
+41
+00:03:47,000 --> 00:03:47,000
+Versatility.
+
+42
+00:03:48,000 --> 00:03:55,000
+UML can be applied to a wide range of domains and systems, including software applications, hardware
+
+43
+00:03:55,000 --> 00:03:58,000
+systems, business processes and more.
+
+44
+00:03:58,000 --> 00:04:02,000
+It can be used at various stages of the software development life cycle.
+
+45
+00:04:03,000 --> 00:04:05,000
+Types of diagrams.
+
+46
+00:04:05,000 --> 00:04:12,000
+UML includes several types of diagrams, each designed for modeling specific aspects of a system.
+
+47
+00:04:13,000 --> 00:04:19,000
+Common types of Hummel diagrams include use case diagrams, class diagrams, sequence diagrams.
+
+48
+00:04:19,000 --> 00:04:22,000
+State machine diagrams, and more.
+
+49
+00:04:22,000 --> 00:04:28,000
+I'm going to make an overview later in the lesson Communication tool.
+
+50
+00:04:28,000 --> 00:04:36,000
+UML Diagrams serves as a mean of communication among stakeholders, allowing them to discuss, analyze
+
+51
+00:04:36,000 --> 00:04:38,000
+and refine system designs.
+
+52
+00:04:39,000 --> 00:04:48,000
+To support the numerous UML modelling tools available that assist in creating, editing and analyzing
+
+53
+00:04:48,000 --> 00:04:49,000
+UML diagrams.
+
+54
+00:04:49,000 --> 00:04:55,000
+Some of these tools even can generate code or documentation based on the UML models.
+
+55
+00:04:56,000 --> 00:05:03,000
+UML plays a crucial role in software development by providing a common language and visual representation
+
+56
+00:05:03,000 --> 00:05:10,000
+for modeling and designing complex systems which can lead to better understanding, improved collaboration
+
+57
+00:05:10,000 --> 00:05:13,000
+and more efficient development processes.
+
+58
+00:05:14,000 --> 00:05:20,000
+So let me make it clear why I decided to create lessons about UML and why I believe it is important
+
+59
+00:05:20,000 --> 00:05:21,000
+for you.
+
+60
+00:05:21,000 --> 00:05:26,000
+I'm going to explain who is UML for unified modeling.
+
+61
+00:05:26,000 --> 00:05:33,000
+Language is designed for a wide range of stakeholders involved in software development and system design.
+
+62
+00:05:33,000 --> 00:05:38,000
+Here are some of the primary audiences for whom UML is intended.
+
+63
+00:05:39,000 --> 00:05:41,000
+Software developers and engineers.
+
+64
+00:05:41,000 --> 00:05:49,000
+UML provides software developers with a standardized notation to model and design software systems.
+
+65
+00:05:49,000 --> 00:05:55,000
+It helps them visualize the architecture, structure and behavior of the software they're developing.
+
+66
+00:05:56,000 --> 00:06:04,000
+That's why if you're a developer, you need to know how to read UML diagrams, because most likely architecture
+
+67
+00:06:04,000 --> 00:06:11,000
+of your application will be described via UML diagrams and sometimes even user story details will contain
+
+68
+00:06:11,000 --> 00:06:12,000
+UML diagrams.
+
+69
+00:06:12,000 --> 00:06:17,000
+And to understand requirements and system better, you need to know your mouth.
+
+70
+00:06:18,000 --> 00:06:20,000
+System architects.
+
+71
+00:06:20,000 --> 00:06:28,000
+System architects use to create high level architectural diagrams that illustrate the systems, components,
+
+72
+00:06:28,000 --> 00:06:31,000
+interactions, and dependencies.
+
+73
+00:06:31,000 --> 00:06:40,000
+UML assists architects in making design decisions and ensuring that the system meets the required specifications.
+
+74
+00:06:40,000 --> 00:06:47,000
+Also, if you just join the project and you explore knowledge base, most likely you will need to read
+
+75
+00:06:47,000 --> 00:06:50,000
+UML diagrams to get better understanding of the project.
+
+76
+00:06:51,000 --> 00:06:52,000
+Project managers.
+
+77
+00:06:52,000 --> 00:06:59,000
+UML diagrams can be used by project managers to plan and manage software development projects.
+
+78
+00:06:59,000 --> 00:07:07,000
+This can be achieved through the use case diagram, class diagram, activity diagram or other diagrams.
+
+79
+00:07:07,000 --> 00:07:09,000
+Business analysts.
+
+80
+00:07:09,000 --> 00:07:16,000
+Business analysts use UML to create use case diagrams which help in capturing and documenting functional
+
+81
+00:07:16,000 --> 00:07:19,000
+requirements from a user's perspective.
+
+82
+00:07:20,000 --> 00:07:26,000
+UML diagrams help bridge the gap between technical teams and business stakeholders.
+
+83
+00:07:27,000 --> 00:07:29,000
+Quality assurance and testing teams.
+
+84
+00:07:30,000 --> 00:07:37,000
+Kia professionals can benefit from UML diagrams to understand the system's expected behaviour and design
+
+85
+00:07:37,000 --> 00:07:38,000
+test cases accordingly.
+
+86
+00:07:39,000 --> 00:07:47,000
+Sequence diagrams and state machine diagrams, for example, can be valuable for testing stakeholders
+
+87
+00:07:47,000 --> 00:07:48,000
+and clients.
+
+88
+00:07:48,000 --> 00:07:55,000
+UML provides a visual language that is accessible to non-technical stakeholders and clients.
+
+89
+00:07:55,000 --> 00:08:02,000
+It allows them to understand the system's design and functionality, provide feedback and make informed
+
+90
+00:08:02,000 --> 00:08:03,000
+decisions.
+
+91
+00:08:04,000 --> 00:08:11,000
+As you can see, UML is a versatile modeling language that serves as a common visual communication tool
+
+92
+00:08:11,000 --> 00:08:17,000
+for diverse stakeholders involved in software development and system design.
+
+93
+00:08:17,000 --> 00:08:23,000
+It facilitates collaboration, improves understanding, and supports the creation of well-structured
+
+94
+00:08:23,000 --> 00:08:25,000
+software systems.
+
+95
+00:08:25,000 --> 00:08:31,000
+UML has gone through several versions and revisions since its inception.
+
+96
+00:08:31,000 --> 00:08:37,000
+Each version introduced new features, improvements and clarifications to the language.
+
+97
+00:08:38,000 --> 00:08:41,000
+On this slide you can review major versions of UML.
+
+98
+00:08:41,000 --> 00:08:43,000
+I will not read all this slide.
+
+99
+00:08:43,000 --> 00:08:48,000
+Feel free to put the video on pause and check the slide if you wish.
+
+100
+00:08:49,000 --> 00:08:54,000
+I just want to say that the latest version based on today is UML 2.5.
+
+101
+00:08:54,000 --> 00:09:03,000
+The UML 2.5 specification updated the notation or the shapes used in diagrams so they could represent
+
+102
+00:09:03,000 --> 00:09:06,000
+a wider range of concepts more clearly.
+
+103
+00:09:06,000 --> 00:09:12,000
+The specification document was extensively rewritten to make it easier to understand.
+
+104
+00:09:12,000 --> 00:09:16,000
+No new diagram types were added in UML 2.5.
+
+105
+00:09:16,000 --> 00:09:25,000
+The 14 diagram types that were previously defined in UML 2.0 are extended to cover the additional concepts
+
+106
+00:09:25,000 --> 00:09:29,000
+with many examples provided in the specification document.
+
+107
+00:09:29,000 --> 00:09:37,000
+As I already said, there are 14 diagrams defined by UML and we are going to learn them in the course.
+
+108
+00:09:37,000 --> 00:09:41,000
+We are going to have separate lessons dedicated to different diagrams.
+
+109
+00:09:41,000 --> 00:09:48,000
+But right now in scope of this lesson, let me make just a brief overview of diagrams in order to help
+
+110
+00:09:48,000 --> 00:09:54,000
+you understand what we are going to learn in this course and what are these diagrams are about.
+
+111
+00:09:54,000 --> 00:10:02,000
+But before we hold a brief review of UML diagrams, let's understand two main groups in which all diagrams
+
+112
+00:10:02,000 --> 00:10:04,000
+are divided in UML.
+
+113
+00:10:04,000 --> 00:10:08,000
+The diagrams are typically categorized into two main groups.
+
+114
+00:10:08,000 --> 00:10:12,000
+Behavior diagrams and structure diagrams.
+
+115
+00:10:12,000 --> 00:10:19,000
+These categories help classify UML diagrams based on their primary focus and purpose.
+
+116
+00:10:20,000 --> 00:10:25,000
+Behavior diagrams focus on modeling the dynamic aspects of a system.
+
+117
+00:10:26,000 --> 00:10:33,000
+They illustrate how the components or objects within the system interact and behave over time.
+
+118
+00:10:34,000 --> 00:10:37,000
+Examples of UML behavior diagrams include.
+
+119
+00:10:37,000 --> 00:10:38,000
+Use.
+
+120
+00:10:38,000 --> 00:10:39,000
+Case Diagram.
+
+121
+00:10:39,000 --> 00:10:41,000
+Activity Diagram.
+
+122
+00:10:41,000 --> 00:10:43,000
+State Machine Diagram.
+
+123
+00:10:43,000 --> 00:10:44,000
+Sequence Diagram.
+
+124
+00:10:44,000 --> 00:10:46,000
+Communication Diagram.
+
+125
+00:10:46,000 --> 00:10:47,000
+Interaction Overview.
+
+126
+00:10:47,000 --> 00:10:48,000
+Diagram.
+
+127
+00:10:48,000 --> 00:10:50,000
+Timing Diagram.
+
+128
+00:10:50,000 --> 00:10:52,000
+Structure Diagrams.
+
+129
+00:10:52,000 --> 00:10:58,000
+On the other hand, emphasize the static structure or composition of a system.
+
+130
+00:10:58,000 --> 00:11:03,000
+They depict the elements that make up the system and their relationships.
+
+131
+00:11:03,000 --> 00:11:07,000
+Examples of human structure diagrams include.
+
+132
+00:11:07,000 --> 00:11:08,000
+Class Diagram.
+
+133
+00:11:08,000 --> 00:11:09,000
+Object Diagram.
+
+134
+00:11:09,000 --> 00:11:10,000
+Package Diagram.
+
+135
+00:11:10,000 --> 00:11:12,000
+Component Diagram.
+
+136
+00:11:12,000 --> 00:11:13,000
+Composite Structure.
+
+137
+00:11:13,000 --> 00:11:14,000
+Diagram.
+
+138
+00:11:14,000 --> 00:11:16,000
+Deployment Diagram.
+
+139
+00:11:16,000 --> 00:11:17,000
+Profile Diagram.
+
+140
+00:11:18,000 --> 00:11:25,000
+These two categories help users select the appropriate diagram type based on whether they want to represent
+
+141
+00:11:25,000 --> 00:11:30,000
+the static structure of the system or its dynamic behavior.
+
+142
+00:11:30,000 --> 00:11:38,000
+This classification helps in effectively communicating different aspects of a software or system design.
+
+143
+00:11:39,000 --> 00:11:45,000
+Let me just make a brief overview of each diagram just to highlight their main purposes.
+
+144
+00:11:45,000 --> 00:11:53,000
+Use case diagram illustrates the functional requirements of a system by showing how users interact with
+
+145
+00:11:53,000 --> 00:11:53,000
+it.
+
+146
+00:11:54,000 --> 00:12:01,000
+Class diagram represents the static structure of a system by modeling classes, their attributes and
+
+147
+00:12:01,000 --> 00:12:02,000
+relationships.
+
+148
+00:12:03,000 --> 00:12:09,000
+Object diagram provides a snapshot of runtime instances of classes in the system.
+
+149
+00:12:10,000 --> 00:12:17,000
+Package diagram organizes related elements into packages to manage system complexity.
+
+150
+00:12:18,000 --> 00:12:24,000
+Component diagram depicts the physical components and their interactions in a system.
+
+151
+00:12:25,000 --> 00:12:34,000
+Composite structure diagram focuses on internal structure, including ports, ports and connectors.
+
+152
+00:12:34,000 --> 00:12:37,000
+Deployment diagram Models.
+
+153
+00:12:37,000 --> 00:12:41,000
+The physical deployment of software components in a networked environment.
+
+154
+00:12:42,000 --> 00:12:48,000
+Activity diagram describes workflow and the flow of actions or activities within a system.
+
+155
+00:12:49,000 --> 00:12:56,000
+State machine diagram represents the behavior of an object or system in response to events.
+
+156
+00:12:57,000 --> 00:13:03,000
+Sequence diagram shows interactions between objects in a chronological sequence.
+
+157
+00:13:04,000 --> 00:13:10,000
+Communication diagram emphasizes the relationships between objects and their interactions.
+
+158
+00:13:11,000 --> 00:13:18,000
+Interaction Overview diagram combines various interaction diagrams to provide an overview of complex
+
+159
+00:13:18,000 --> 00:13:19,000
+interactions.
+
+160
+00:13:20,000 --> 00:13:27,000
+Timing diagram focuses on the timing and constraints of interactions in real time systems.
+
+161
+00:13:28,000 --> 00:13:29,000
+Profile diagram.
+
+162
+00:13:30,000 --> 00:13:37,000
+Customizes for specific domains or platforms using stereotypes and tagged values.
+
+163
+00:13:37,000 --> 00:13:43,000
+All other details about each diagram we going to learn in separate lessons.
+
+164
+00:13:43,000 --> 00:13:44,000
+Let's continue.
+
+165
+00:13:45,000 --> 00:13:51,000
+In order to be able to proceed with the course and learn in the most efficient way, we're going to
+
+166
+00:13:51,000 --> 00:13:54,000
+have a lot of practical activity and practical exercises.
+
+167
+00:13:55,000 --> 00:14:02,000
+And to draw UML diagrams, we need special software, special applications that supports UML syntax.
+
+168
+00:14:02,000 --> 00:14:07,000
+On this slide, I'd like to make an overview of tools that you can use during this course to practice
+
+169
+00:14:07,000 --> 00:14:11,000
+your skills in creation of UML diagrams.
+
+170
+00:14:11,000 --> 00:14:19,000
+There are numerous tools available for creating UML diagrams ranging from free and open source options
+
+171
+00:14:19,000 --> 00:14:22,000
+to commercial products with advanced features.
+
+172
+00:14:22,000 --> 00:14:25,000
+Again, I'm not going to read all the slide.
+
+173
+00:14:25,000 --> 00:14:31,000
+Please feel free to pause the video for a minute and review all tools listed on the slide.
+
+174
+00:14:32,000 --> 00:14:38,000
+I will just highlight the most popular and suitable tools for UML diagramming in my opinion.
+
+175
+00:14:38,000 --> 00:14:46,000
+Lucidchart A web based diagramming tool that supports UML diagrams and offers collaboration features.
+
+176
+00:14:47,000 --> 00:14:52,000
+Diagrams dot net previously known and popular as Draw.io.
+
+177
+00:14:52,000 --> 00:15:00,000
+An open source online diagramming tool that supports UML diagrams and can be used directly in your web
+
+178
+00:15:00,000 --> 00:15:01,000
+browser.
+
+179
+00:15:02,000 --> 00:15:03,000
+Visual paradigm.
+
+180
+00:15:03,000 --> 00:15:11,000
+A comprehensive UML modeling tool that offers a free community edition and a more advanced paid editions.
+
+181
+00:15:11,000 --> 00:15:12,000
+Miro.
+
+182
+00:15:12,000 --> 00:15:19,000
+Miro is a collaborative online whiteboard platform that can be used for a wide range of diagramming
+
+183
+00:15:19,000 --> 00:15:23,000
+and visual collaboration tasks, including diagramming.
+
+184
+00:15:24,000 --> 00:15:31,000
+While Miro is not specifically designed as a UML diagramming tool, it is versatile and flexible enough
+
+185
+00:15:31,000 --> 00:15:37,000
+to create UML diagrams if you prefer to work in a collaborative online environment.
+
+186
+00:15:38,000 --> 00:15:44,000
+Star uml an open source uml modeling tools that is user friendly and extensible.
+
+187
+00:15:45,000 --> 00:15:52,000
+Most of these tools that you can see on the slide offer a range of diagram types and features to suit
+
+188
+00:15:52,000 --> 00:15:54,000
+various needs and preferences.
+
+189
+00:15:54,000 --> 00:16:00,000
+The choice of a tool depends on your specific requirements, including the complexity of your project,
+
+190
+00:16:00,000 --> 00:16:05,000
+your budget and your preferred interface and collaboration features.
+
+191
+00:16:05,000 --> 00:16:13,000
+Many of them offer free trial versions or community editions that you can explore before making a decision.
+
+192
+00:16:13,000 --> 00:16:20,000
+If you read the slide and you still have some specific questions about any tool, please do not hesitate
+
+193
+00:16:20,000 --> 00:16:25,000
+to post your question below the video and I will be happy to answer.
+
+194
+00:16:26,000 --> 00:16:27,000
+In scope of our course.
+
+195
+00:16:27,000 --> 00:16:34,000
+I'm going to show you a lot of different examples and I will use diagrams dot net, mostly because they
+
+196
+00:16:34,000 --> 00:16:42,000
+provide all necessary tools to work with UML rich features and good conditions for free plan in real
+
+197
+00:16:42,000 --> 00:16:49,000
+world software engineering and system design projects, professionals often need to tailor UML to address
+
+198
+00:16:49,000 --> 00:16:52,000
+the unique requirements of their domains.
+
+199
+00:16:52,000 --> 00:16:59,000
+I don't want to use saying that UML is limited to its standard notation and semantics, and I want you
+
+200
+00:16:59,000 --> 00:17:05,000
+to understand how neat in UML customization can be implemented.
+
+201
+00:17:05,000 --> 00:17:09,000
+UML can be customized with the UML profiles.
+
+202
+00:17:09,000 --> 00:17:17,000
+Profiles enable UML to more accurately and precisely represent complex systems and domain specific concepts.
+
+203
+00:17:18,000 --> 00:17:18,000
+In UML.
+
+204
+00:17:18,000 --> 00:17:26,000
+Profiles are a powerful feature that allows you to extend the UML modeling language to accommodate domain
+
+205
+00:17:26,000 --> 00:17:29,000
+specific concepts, notations and semantics.
+
+206
+00:17:29,000 --> 00:17:35,000
+Profiles provide a way to customize and tailor UML to specific industries.
+
+207
+00:17:35,000 --> 00:17:40,000
+Applications or modeling needs to understand what profiles are.
+
+208
+00:17:40,000 --> 00:17:43,000
+Let's learn key components of a profile.
+
+209
+00:17:43,000 --> 00:17:45,000
+The first one.
+
+210
+00:17:45,000 --> 00:17:46,000
+Stereotypes.
+
+211
+00:17:46,000 --> 00:17:53,000
+Stereotypes are used to define new kinds of modeling elements or to add specific characteristics to
+
+212
+00:17:53,000 --> 00:17:55,000
+existing UML elements.
+
+213
+00:17:55,000 --> 00:18:03,000
+Stereotypes are applied to elements such as classes, attributes and operations to give them the main
+
+214
+00:18:03,000 --> 00:18:05,000
+specific meanings.
+
+215
+00:18:05,000 --> 00:18:07,000
+Tact Values.
+
+216
+00:18:07,000 --> 00:18:12,000
+Tact Values are name value pairs associated with stereotypes.
+
+217
+00:18:12,000 --> 00:18:18,000
+They provide a way to attach additional information or properties to UML elements.
+
+218
+00:18:19,000 --> 00:18:20,000
+Constraints.
+
+219
+00:18:20,000 --> 00:18:27,000
+Constraints defined using the object, constraint, language, or other modeling languages allow you
+
+220
+00:18:27,000 --> 00:18:34,000
+to specify rules and conditions that must be satisfied by elements with specific stereotypes.
+
+221
+00:18:34,000 --> 00:18:35,000
+Extensions.
+
+222
+00:18:36,000 --> 00:18:42,000
+Extensions define how UML elements are extended or specialized using stereotypes.
+
+223
+00:18:43,000 --> 00:18:47,000
+They specify which stereotypes apply to which elements.
+
+224
+00:18:48,000 --> 00:18:49,000
+Profiles.
+
+225
+00:18:49,000 --> 00:18:55,000
+A profile is a container for stereotypes, text values, constraints and extensions.
+
+226
+00:18:55,000 --> 00:19:01,000
+It provides a way to package and reuse the customizations created for a specific domain.
+
+227
+00:19:01,000 --> 00:19:10,000
+Let's learn why you may have a need to use or to define a profile and where we can use profiles.
+
+228
+00:19:11,000 --> 00:19:12,000
+Customization.
+
+229
+00:19:12,000 --> 00:19:19,000
+Profiles are used to customize UML for particular industries or modeling purposes such as real time
+
+230
+00:19:19,000 --> 00:19:23,000
+systems, business modeling or software development.
+
+231
+00:19:24,000 --> 00:19:25,000
+Clarity and precision.
+
+232
+00:19:25,000 --> 00:19:33,000
+Profiles improve the clarity and precision of UML diagrams by adding domain specific notations and semantics,
+
+233
+00:19:33,000 --> 00:19:37,000
+making models more meaningful to stakeholders within a specific domain.
+
+234
+00:19:38,000 --> 00:19:46,000
+Interoperability profiles can enhance interoperability by defining standardized modeling, conventions
+
+235
+00:19:46,000 --> 00:19:52,000
+and semantics for a given domain facilitating communication between different stakeholders.
+
+236
+00:19:53,000 --> 00:19:58,000
+Among some examples of profiles, it is worth to mention the following ones.
+
+237
+00:19:58,000 --> 00:20:00,000
+Sysml Profile.
+
+238
+00:20:00,000 --> 00:20:07,000
+The systems modeling language is a profile of UML tailored for systems engineering, particularly for
+
+239
+00:20:07,000 --> 00:20:11,000
+modeling complex systems and systems of systems.
+
+240
+00:20:12,000 --> 00:20:13,000
+Mark Profile.
+
+241
+00:20:14,000 --> 00:20:22,000
+The modeling and analysis of real time and embedded systems profile extends UML for modeling real time
+
+242
+00:20:22,000 --> 00:20:23,000
+and embedded systems.
+
+243
+00:20:24,000 --> 00:20:27,000
+UML profiles for specific industries.
+
+244
+00:20:27,000 --> 00:20:34,000
+Various industries, such as healthcare, finance and telecommunications have developed UML profiles
+
+245
+00:20:34,000 --> 00:20:37,000
+to address their specific modeling needs.
+
+246
+00:20:37,000 --> 00:20:42,000
+So you can check whether there are some UML profile exists in your industry.
+
+247
+00:20:42,000 --> 00:20:49,000
+Profiles in HTML provide a powerful way to extend the modeling language to match the unique requirements
+
+248
+00:20:49,000 --> 00:20:58,000
+of various domains making UML a flexible and adaptable modeling tool for a wide range of applications.
+
+249
+00:20:58,000 --> 00:21:05,000
+UML plays several important roles in the modern software development process, helping developers,
+
+250
+00:21:05,000 --> 00:21:09,000
+architects and stakeholders throughout the software development life cycle.
+
+251
+00:21:10,000 --> 00:21:14,000
+Here are some key roles that UML plays in modern software development.
+
+252
+00:21:15,000 --> 00:21:16,000
+Requirements.
+
+253
+00:21:16,000 --> 00:21:18,000
+Analysis and Elicitation.
+
+254
+00:21:18,000 --> 00:21:20,000
+System Design and Architecture.
+
+255
+00:21:21,000 --> 00:21:22,000
+Behavioral Modeling.
+
+256
+00:21:23,000 --> 00:21:25,000
+Communication and Collaboration.
+
+257
+00:21:25,000 --> 00:21:27,000
+Documentation.
+
+258
+00:21:27,000 --> 00:21:29,000
+Code Generation.
+
+259
+00:21:29,000 --> 00:21:33,000
+Interesting things that some UML modeling tools offer.
+
+260
+00:21:33,000 --> 00:21:40,000
+Code generation capabilities allowing developers to automatically generate code from UML diagrams which
+
+261
+00:21:40,000 --> 00:21:42,000
+can accelerate the development process.
+
+262
+00:21:42,000 --> 00:21:50,000
+But of course, this is not the main way of creating the code because auto generation code tools can't
+
+263
+00:21:50,000 --> 00:21:56,000
+handle requirements for code style or some specific business logic or complex cases.
+
+264
+00:21:57,000 --> 00:21:58,000
+Testing and Validation.
+
+265
+00:21:58,000 --> 00:22:00,000
+Project Planning.
+
+266
+00:22:00,000 --> 00:22:07,000
+We already discussed that UML diagrams such as use case diagrams and activity diagrams can assist in
+
+267
+00:22:07,000 --> 00:22:11,000
+project planning by defining project scope, milestones and dependencies.
+
+268
+00:22:12,000 --> 00:22:14,000
+Communication and collaboration.
+
+269
+00:22:14,000 --> 00:22:21,000
+UML diagrams provide a common visual language for communication between technical and non-technical
+
+270
+00:22:21,000 --> 00:22:26,000
+stakeholders, ensuring that everyone has a shared understanding of the system.
+
+271
+00:22:26,000 --> 00:22:28,000
+Maintenance and refactoring.
+
+272
+00:22:28,000 --> 00:22:36,000
+Model driven development in model driven development models serve as a primary artifacts for driving
+
+273
+00:22:36,000 --> 00:22:40,000
+the development process with code generated from the models.
+
+274
+00:22:41,000 --> 00:22:49,000
+So in conclusion, I want to say that UML is a versatile and widely adopted modeling language that plays
+
+275
+00:22:49,000 --> 00:22:56,000
+a crucial role in modern software development by facilitating requirements, analysis, design, documentation,
+
+276
+00:22:56,000 --> 00:22:59,000
+communication, testing and maintenance.
+
+277
+00:22:59,000 --> 00:23:07,000
+Its ability to capture both structural and behavioral aspects of a system makes it a valuable tool for
+
+278
+00:23:07,000 --> 00:23:09,000
+software development.
+
+279
+00:23:09,000 --> 00:23:12,000
+That's all what I wanted to share with you in this lesson.
+
+280
+00:23:12,000 --> 00:23:15,000
+Let's recap what we have learned today.
+
+281
+00:23:16,000 --> 00:23:19,000
+In this lesson, we learned what is.
+
+282
+00:23:20,000 --> 00:23:25,000
+I told you evolution of UML through the description of its different versions.
+
+283
+00:23:25,000 --> 00:23:33,000
+Now you understand why UML is important for you and are aware of the typical project roles that make
+
+284
+00:23:33,000 --> 00:23:34,000
+use of UML.
+
+285
+00:23:35,000 --> 00:23:42,000
+We reviewed main groups of UML diagrams and we reviewed 14 UML diagrams.
+
+286
+00:23:42,000 --> 00:23:47,000
+Then I made an overview of tools that you can use to draw UML diagrams.
+
+287
+00:23:47,000 --> 00:23:51,000
+We learned more about profiles in UML.
+
+288
+00:23:51,000 --> 00:23:52,000
+What are they?
+
+289
+00:23:52,000 --> 00:23:55,000
+Why we need them and what they consist of.
+
+290
+00:23:55,000 --> 00:24:03,000
+And at the end of the lesson, we learned what your role is in the modern software development process.
+
+291
+00:24:04,000 --> 00:24:05,000
+That's all for this video.
+
+292
+00:24:06,000 --> 00:24:07,000
+Thanks a lot for your attention.
+
+293
+00:24:07,000 --> 00:24:11,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/001 Diagrams.net-App.url b/105 - Behavioral Diagrams/001 Diagrams.net-App.url
new file mode 100644
index 0000000000000000000000000000000000000000..180c2019e20331cc9d18cb54a09e71ffe6cf73ae
--- /dev/null
+++ b/105 - Behavioral Diagrams/001 Diagrams.net-App.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://app.diagrams.net/
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/001 Use Case Diagram_en.srt b/105 - Behavioral Diagrams/001 Use Case Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..274c77feb795350139d87bf3c86c195f087d0b95
--- /dev/null
+++ b/105 - Behavioral Diagrams/001 Use Case Diagram_en.srt
@@ -0,0 +1,1304 @@
+1
+00:00:06,000 --> 00:00:09,000
+Hello dear students, in this lesson we are going to learn use case diagram.
+
+2
+00:00:10,000 --> 00:00:14,000
+Today we are going to learn everything you need to know about use case diagram.
+
+3
+00:00:14,000 --> 00:00:21,000
+I'm going to explain you key elements of use case diagram including actor use case relationships and
+
+4
+00:00:21,000 --> 00:00:22,000
+system boundary.
+
+5
+00:00:22,000 --> 00:00:30,000
+We will also talk about different types of relationships like association, generalization include and
+
+6
+00:00:30,000 --> 00:00:31,000
+extend.
+
+7
+00:00:31,000 --> 00:00:34,000
+After that I'm going to present you a real life example.
+
+8
+00:00:34,000 --> 00:00:40,000
+Together will create and review use case diagram for online shopping system under review.
+
+9
+00:00:40,000 --> 00:00:43,000
+We will learn the interface of diagrams dot net.
+
+10
+00:00:44,000 --> 00:00:50,000
+After this lesson you will have practical experience to work with diagrams dot net tool and create use
+
+11
+00:00:50,000 --> 00:00:51,000
+case diagrams.
+
+12
+00:00:51,000 --> 00:00:53,000
+Let's start our lesson.
+
+13
+00:00:53,000 --> 00:00:59,000
+And let's start from explanation of what a use case diagram is in UML.
+
+14
+00:00:59,000 --> 00:01:05,000
+A use case diagram is a type of behavioral diagram that illustrates how a system interacts with external
+
+15
+00:01:05,000 --> 00:01:10,000
+entities, actors, to achieve specific goals or tasks.
+
+16
+00:01:10,000 --> 00:01:16,000
+Use case diagrams are commonly used in software engineering and system design to provide a high level
+
+17
+00:01:16,000 --> 00:01:22,000
+view of a system's functionality and the relationships between the system and its users or external
+
+18
+00:01:22,000 --> 00:01:23,000
+components.
+
+19
+00:01:23,000 --> 00:01:29,000
+Use case diagrams are used to capture and visualize the functional requirements of a system.
+
+20
+00:01:30,000 --> 00:01:36,000
+They provide a high level overview of what the system does, its capabilities, and the way in which
+
+21
+00:01:36,000 --> 00:01:42,000
+users or external entities interact with it to accomplish specific tasks or objectives.
+
+22
+00:01:42,000 --> 00:01:47,000
+These diagrams establish the boundaries of the system under consideration.
+
+23
+00:01:47,000 --> 00:01:52,000
+They help identify what's inside the system and what's external to it.
+
+24
+00:01:53,000 --> 00:02:00,000
+Actors are entities that interact with the system, and the use cases represent the specific functionalities
+
+25
+00:02:00,000 --> 00:02:01,000
+or features of the system.
+
+26
+00:02:02,000 --> 00:02:08,000
+This distinction is crucial for defining the scope of the system in order to be able to work with.
+
+27
+00:02:08,000 --> 00:02:11,000
+Use case diagram and create use case diagram.
+
+28
+00:02:11,000 --> 00:02:14,000
+You need to understand its key elements.
+
+29
+00:02:14,000 --> 00:02:16,000
+Let's learn them now.
+
+30
+00:02:16,000 --> 00:02:18,000
+Here are the key elements of use.
+
+31
+00:02:18,000 --> 00:02:20,000
+Case diagram number one.
+
+32
+00:02:21,000 --> 00:02:22,000
+Actors.
+
+33
+00:02:22,000 --> 00:02:27,000
+Actors represent external entities that interact with the system.
+
+34
+00:02:27,000 --> 00:02:31,000
+Actors can be people, other software systems, or hardware devices.
+
+35
+00:02:31,000 --> 00:02:37,000
+Each actor is depicted as a stick figure or another symbol on the diagram.
+
+36
+00:02:37,000 --> 00:02:43,000
+Actors are connected to use cases to show the enrollment in specific functionalities.
+
+37
+00:02:44,000 --> 00:02:45,000
+Use cases.
+
+38
+00:02:45,000 --> 00:02:50,000
+Use cases are individual functionalities or specific features of the system.
+
+39
+00:02:50,000 --> 00:02:55,000
+They describe a system's behavior or how it responds to external action.
+
+40
+00:02:55,000 --> 00:03:01,000
+Use cases are represented as ovals or ellipses on the diagram.
+
+41
+00:03:01,000 --> 00:03:09,000
+Each use case is associated with one or more actors, indicating who can initiate or participate in
+
+42
+00:03:09,000 --> 00:03:10,000
+the use case.
+
+43
+00:03:11,000 --> 00:03:12,000
+Relationships.
+
+44
+00:03:13,000 --> 00:03:14,000
+Relationships in use.
+
+45
+00:03:14,000 --> 00:03:20,000
+Case diagrams describe how actors and use cases are related to each other, and we are going to review
+
+46
+00:03:20,000 --> 00:03:24,000
+different types of relationships on the separate slide in a minute.
+
+47
+00:03:25,000 --> 00:03:26,000
+System boundary.
+
+48
+00:03:27,000 --> 00:03:33,000
+Use case diagrams typically include a boundary box that encloses all the actors and use cases.
+
+49
+00:03:33,000 --> 00:03:39,000
+This boundary distinguishes what is part of the system from what is external to it.
+
+50
+00:03:39,000 --> 00:03:45,000
+Use case diagrams are valuable tools for visualizing and communicating system functionality, requirements,
+
+51
+00:03:45,000 --> 00:03:50,000
+and user interactions in a simplified and easily understandable manner.
+
+52
+00:03:50,000 --> 00:03:57,000
+They serve as a basis for capturing and documenting the functional requirements of a system, and are
+
+53
+00:03:57,000 --> 00:04:01,000
+essential in the early stages of system design and software development.
+
+54
+00:04:01,000 --> 00:04:05,000
+So let's learn what types of relationships are supported in use.
+
+55
+00:04:05,000 --> 00:04:06,000
+Case diagram.
+
+56
+00:04:06,000 --> 00:04:07,000
+They are.
+
+57
+00:04:08,000 --> 00:04:09,000
+Association.
+
+58
+00:04:09,000 --> 00:04:16,000
+It is a straight line connecting an actor to a use case, showing that the actor is associated with
+
+59
+00:04:16,000 --> 00:04:17,000
+that use case.
+
+60
+00:04:17,000 --> 00:04:20,000
+It represents a communication link.
+
+61
+00:04:21,000 --> 00:04:22,000
+Generalization.
+
+62
+00:04:22,000 --> 00:04:30,000
+It is shown on the diagram as a solid line with an arrow head from a specific use case to a more general
+
+63
+00:04:30,000 --> 00:04:37,000
+use case, illustrating that the specific use case inherits the behavior and attributes of the general
+
+64
+00:04:37,000 --> 00:04:38,000
+use case.
+
+65
+00:04:39,000 --> 00:04:46,000
+Important thing to mention here is that generalization may be applied not only to use cases, but also
+
+66
+00:04:46,000 --> 00:04:47,000
+to actors.
+
+67
+00:04:47,000 --> 00:04:51,000
+For example, employee will be a general actor.
+
+68
+00:04:51,000 --> 00:04:53,000
+Software developer, project manager.
+
+69
+00:04:53,000 --> 00:05:01,000
+Office administrator can be considered as specialized actors, and according to logic, the instances
+
+70
+00:05:01,000 --> 00:05:06,000
+of the more specific actor may be substituted for instances of more general actor.
+
+71
+00:05:06,000 --> 00:05:08,000
+Include.
+
+72
+00:05:08,000 --> 00:05:16,000
+Include is shown on the diagram as a dashed line with an arrow head from one use case to another, indicating
+
+73
+00:05:16,000 --> 00:05:20,000
+that one use case includes the functionality of another.
+
+74
+00:05:20,000 --> 00:05:23,000
+It is used to represent common or shared behavior.
+
+75
+00:05:24,000 --> 00:05:31,000
+Extent is also shown as a dashed line with an arrow hat from one use case to another, indicating than
+
+76
+00:05:31,000 --> 00:05:35,000
+one use case extends the behavior of another under certain conditions.
+
+77
+00:05:36,000 --> 00:05:38,000
+Usually near the dashed line.
+
+78
+00:05:38,000 --> 00:05:43,000
+You specify whether it's include relationship or extent.
+
+79
+00:05:43,000 --> 00:05:50,000
+Later in the lesson on real example, I will show you the difference between include and extend and
+
+80
+00:05:50,000 --> 00:05:52,000
+you will understand it better.
+
+81
+00:05:53,000 --> 00:05:56,000
+Today we are going to have practical activity.
+
+82
+00:05:56,000 --> 00:05:58,000
+So let's come up with some example.
+
+83
+00:05:58,000 --> 00:06:01,000
+I'm going to explain you the example on the slide.
+
+84
+00:06:01,000 --> 00:06:08,000
+And then we'll use special tool for diagramming in order to create this use case diagram.
+
+85
+00:06:09,000 --> 00:06:14,000
+Let's create a simple example of a use case diagram for an online shopping system.
+
+86
+00:06:14,000 --> 00:06:19,000
+In this example we will identify some actors use cases and relationships.
+
+87
+00:06:20,000 --> 00:06:22,000
+So let's start with actors.
+
+88
+00:06:22,000 --> 00:06:25,000
+In this example we are going to have two actors.
+
+89
+00:06:25,000 --> 00:06:33,000
+Customer represents the users of the online shopping system who browse and make purchases, and administrator
+
+90
+00:06:33,000 --> 00:06:37,000
+represents an admin who manages products, orders and customer accounts.
+
+91
+00:06:38,000 --> 00:06:40,000
+We're going to have the following use cases.
+
+92
+00:06:40,000 --> 00:06:42,000
+The first one.
+
+93
+00:06:42,000 --> 00:06:47,000
+Browse products allows the customer to search and view products in their online store.
+
+94
+00:06:47,000 --> 00:06:53,000
+The second one, Add to Cart, permits the customer to add items to their shopping cart.
+
+95
+00:06:53,000 --> 00:06:59,000
+Third, remove from cart enables a customer to remove items from the shopping cart.
+
+96
+00:07:00,000 --> 00:07:01,000
+View cart.
+
+97
+00:07:01,000 --> 00:07:05,000
+Allows the customer to see the items in their shopping cart.
+
+98
+00:07:05,000 --> 00:07:06,000
+Proceed to checkout.
+
+99
+00:07:06,000 --> 00:07:10,000
+Let the customer start the order and payment process.
+
+100
+00:07:10,000 --> 00:07:16,000
+Make payment allows the customer to enter payment information and complete the purchase.
+
+101
+00:07:16,000 --> 00:07:18,000
+Manage products.
+
+102
+00:07:18,000 --> 00:07:22,000
+Manage physical products and manage digital products.
+
+103
+00:07:22,000 --> 00:07:28,000
+Enables the administrator to add, edit or remove products from the online store.
+
+104
+00:07:28,000 --> 00:07:29,000
+Manage orders.
+
+105
+00:07:29,000 --> 00:07:33,000
+Allows the administrator to view and manage customer orders.
+
+106
+00:07:33,000 --> 00:07:35,000
+Manage customer accounts.
+
+107
+00:07:35,000 --> 00:07:42,000
+Permits the administrator to manage customer accounts such as creating, editing, or deactivating them.
+
+108
+00:07:43,000 --> 00:07:46,000
+And as you may understand, this is just an example.
+
+109
+00:07:46,000 --> 00:07:53,000
+We don't have a goal to describe all possible use cases of such online shop as Amazon, right?
+
+110
+00:07:53,000 --> 00:07:57,000
+We have a goal to understand the process and use case diagram.
+
+111
+00:07:57,000 --> 00:08:04,000
+The set of use cases always can be bigger and if you want, you can come up with even more examples.
+
+112
+00:08:04,000 --> 00:08:07,000
+Let's review what relationships we are going to have here.
+
+113
+00:08:08,000 --> 00:08:12,000
+The customer actor is associated with the following use cases.
+
+114
+00:08:12,000 --> 00:08:13,000
+Browse products.
+
+115
+00:08:14,000 --> 00:08:15,000
+Add to cart.
+
+116
+00:08:15,000 --> 00:08:16,000
+Remove from cart.
+
+117
+00:08:16,000 --> 00:08:17,000
+View cart.
+
+118
+00:08:17,000 --> 00:08:19,000
+Proceed to checkout.
+
+119
+00:08:19,000 --> 00:08:20,000
+Make payment.
+
+120
+00:08:20,000 --> 00:08:22,000
+Proceed to checkout.
+
+121
+00:08:22,000 --> 00:08:24,000
+Use case includes the make payment.
+
+122
+00:08:24,000 --> 00:08:25,000
+Use case.
+
+123
+00:08:26,000 --> 00:08:30,000
+The administrator actor is associated with the following use cases.
+
+124
+00:08:30,000 --> 00:08:32,000
+Manage products.
+
+125
+00:08:32,000 --> 00:08:33,000
+Manage physical products.
+
+126
+00:08:33,000 --> 00:08:35,000
+Manage digital products.
+
+127
+00:08:35,000 --> 00:08:36,000
+Manage orders.
+
+128
+00:08:36,000 --> 00:08:38,000
+Manage customer accounts.
+
+129
+00:08:38,000 --> 00:08:44,000
+There will be generalization relationship between manage physical and digital products and manage products.
+
+130
+00:08:44,000 --> 00:08:46,000
+Use case.
+
+131
+00:08:46,000 --> 00:08:49,000
+So I believe you understand our imaginary case.
+
+132
+00:08:49,000 --> 00:08:56,000
+Anyway, if you have any questions, please do not hesitate to ask your questions below the video and
+
+133
+00:08:56,000 --> 00:08:57,000
+I will be happy to answer.
+
+134
+00:08:58,000 --> 00:09:04,000
+And right now, let me share my screen and review practical example of use case diagram.
+
+135
+00:09:04,000 --> 00:09:10,000
+In previous lesson, we did an overview of different tools that you can use to create UML diagrams and
+
+136
+00:09:10,000 --> 00:09:15,000
+taking into account this is the first time we are going to use this tool.
+
+137
+00:09:15,000 --> 00:09:22,000
+Let me also make an interface overview of diagrams dot net previously known as Draw.io.
+
+138
+00:09:22,000 --> 00:09:24,000
+So everything is simple.
+
+139
+00:09:24,000 --> 00:09:28,000
+You go to diagrams dot net in your browser.
+
+140
+00:09:28,000 --> 00:09:30,000
+The first popup may be different.
+
+141
+00:09:30,000 --> 00:09:38,000
+You may be asked whether you want to create a new diagram, or to open an existing diagram, or in case
+
+142
+00:09:38,000 --> 00:09:45,000
+you are not logged in into your Google account, you may be asked where you want to store your diagram.
+
+143
+00:09:45,000 --> 00:09:52,000
+For example, you can select to store your diagram in Google Drive in OneDrive at your hard drive,
+
+144
+00:09:52,000 --> 00:09:55,000
+and you can also find few more options here.
+
+145
+00:09:56,000 --> 00:10:00,000
+In most cases, you can close, pop up and go to the editor straight away.
+
+146
+00:10:00,000 --> 00:10:03,000
+But for the sake of the demo, let's select that.
+
+147
+00:10:03,000 --> 00:10:06,000
+I want to create a new chart, a new diagram.
+
+148
+00:10:06,000 --> 00:10:07,000
+Why?
+
+149
+00:10:07,000 --> 00:10:13,000
+I wanted to show you this, because you can use different templates to boost creation of your own diagram.
+
+150
+00:10:13,000 --> 00:10:16,000
+You can select not only UML diagrams.
+
+151
+00:10:16,000 --> 00:10:22,000
+There are some charts that you can use during your business presentations or when you make work.
+
+152
+00:10:22,000 --> 00:10:24,000
+Breakdown structure.
+
+153
+00:10:24,000 --> 00:10:28,000
+There are block schemes, mind maps, and lots more.
+
+154
+00:10:28,000 --> 00:10:32,000
+I recommend you to spend some time to explore existing templates.
+
+155
+00:10:32,000 --> 00:10:38,000
+You can start with any template and reuse visual elements when you will work on your own diagram.
+
+156
+00:10:38,000 --> 00:10:42,000
+There is a useful set of cloud diagrams that you can use.
+
+157
+00:10:42,000 --> 00:10:49,000
+There is no template for use case diagram because it is relatively simple and you can create it from
+
+158
+00:10:49,000 --> 00:10:50,000
+scratch.
+
+159
+00:10:50,000 --> 00:10:53,000
+One will have lessons about more complex diagrams.
+
+160
+00:10:53,000 --> 00:10:54,000
+Definitely.
+
+161
+00:10:54,000 --> 00:11:02,000
+We are going to use templates to kick off designing process, but for now let me just close it here.
+
+162
+00:11:02,000 --> 00:11:05,000
+On the right you can find configuration of the view.
+
+163
+00:11:05,000 --> 00:11:10,000
+You can choose paper size, select orientation like portrait or landscape.
+
+164
+00:11:10,000 --> 00:11:16,000
+But I will not touch it because usually when you draw a diagram and add new elements, it is extended
+
+165
+00:11:16,000 --> 00:11:17,000
+automatically.
+
+166
+00:11:18,000 --> 00:11:22,000
+So we learned key elements of use case diagram.
+
+167
+00:11:22,000 --> 00:11:23,000
+Let's start drawing it.
+
+168
+00:11:24,000 --> 00:11:28,000
+To find elements that I need I would use search bar.
+
+169
+00:11:28,000 --> 00:11:32,000
+For example, if you need an actor you just type actor.
+
+170
+00:11:32,000 --> 00:11:33,000
+Click on it.
+
+171
+00:11:33,000 --> 00:11:34,000
+And here it is.
+
+172
+00:11:34,000 --> 00:11:38,000
+You can see that there are different icons to depict actor.
+
+173
+00:11:38,000 --> 00:11:40,000
+You can select the one you like the most.
+
+174
+00:11:41,000 --> 00:11:44,000
+In our imaginary case we have two actors.
+
+175
+00:11:44,000 --> 00:11:47,000
+Let's select the actors and give names to them.
+
+176
+00:11:47,000 --> 00:11:50,000
+We have customer and administrator actors.
+
+177
+00:11:50,000 --> 00:11:54,000
+Just click on the actor and start typing and text below.
+
+178
+00:11:54,000 --> 00:11:58,000
+The actor will be updated automatically when you keep typing.
+
+179
+00:11:59,000 --> 00:12:01,000
+Let me add boundary boxes.
+
+180
+00:12:01,000 --> 00:12:07,000
+As you remember from the description, we can use system boundary to distinguish what is part of the
+
+181
+00:12:07,000 --> 00:12:10,000
+system from what is external to it.
+
+182
+00:12:10,000 --> 00:12:14,000
+To be honest, there is multiple ways of how you can approach the visualization.
+
+183
+00:12:14,000 --> 00:12:21,000
+Even in our simple example, you can create system boundary box for the whole online shop system.
+
+184
+00:12:21,000 --> 00:12:28,000
+But will it help you to make your use case diagram looks clearer and more readable?
+
+185
+00:12:28,000 --> 00:12:29,000
+Because this is the main goal.
+
+186
+00:12:29,000 --> 00:12:33,000
+Why we use diagram clear visualization, right?
+
+187
+00:12:33,000 --> 00:12:40,000
+You will find huge amount of best practices and styles of how to do the same things in UML, but the
+
+188
+00:12:40,000 --> 00:12:45,000
+main things that you need to remember is the goal of why we are doing this.
+
+189
+00:12:45,000 --> 00:12:52,000
+And you do this visualization to simplify understanding and share your vision with other people.
+
+190
+00:12:52,000 --> 00:12:58,000
+In my online shopping system example, it is not necessary to have a system boundary box for the entire
+
+191
+00:12:58,000 --> 00:12:59,000
+system.
+
+192
+00:12:59,000 --> 00:13:03,000
+In my opinion, it would be better to create two groups.
+
+193
+00:13:03,000 --> 00:13:08,000
+You can call them two subsystems or two group of use cases.
+
+194
+00:13:08,000 --> 00:13:13,000
+These boxes can represent the scope of each actor's interaction with the system.
+
+195
+00:13:13,000 --> 00:13:16,000
+Here is how you can approach it.
+
+196
+00:13:16,000 --> 00:13:18,000
+Customer use case group.
+
+197
+00:13:18,000 --> 00:13:25,000
+Inside this box, you can place the use cases related to customer interactions such as browse products,
+
+198
+00:13:25,000 --> 00:13:32,000
+add to cart, remove from cart, view cart, proceed to checkout and make payment.
+
+199
+00:13:32,000 --> 00:13:34,000
+We are going to create use cases in a minute.
+
+200
+00:13:35,000 --> 00:13:37,000
+Administrator use case group.
+
+201
+00:13:38,000 --> 00:13:45,000
+Inside this box, you can place the use cases related to administrator actions, including manage products,
+
+202
+00:13:45,000 --> 00:13:51,000
+manage digital products, manage physical products, manage orders, and manage customer accounts.
+
+203
+00:13:52,000 --> 00:13:58,000
+By doing this, you visually separate the functionalities and responsibilities of customers and administrators
+
+204
+00:13:58,000 --> 00:13:59,000
+within the system.
+
+205
+00:13:59,000 --> 00:14:07,000
+Each box represents the context for the associated actor or role, while a system boundary box can be
+
+206
+00:14:07,000 --> 00:14:10,000
+used to encompass the entire system.
+
+207
+00:14:10,000 --> 00:14:18,000
+It is not always required, especially when you want to highlight distinct subsystems or roles within
+
+208
+00:14:18,000 --> 00:14:19,000
+the system.
+
+209
+00:14:19,000 --> 00:14:25,000
+In this case, using separate boxes for the actors can provide a more detailed and clear representation
+
+210
+00:14:25,000 --> 00:14:27,000
+of your online shopping system.
+
+211
+00:14:27,000 --> 00:14:31,000
+If you want, you can combine these two subsystems.
+
+212
+00:14:31,000 --> 00:14:37,000
+These two groups of use cases into one boundary box that is called online shop system.
+
+213
+00:14:37,000 --> 00:14:40,000
+You can use different elements for system boundary.
+
+214
+00:14:41,000 --> 00:14:48,000
+For example, I just search with a boundary keyword and select this system boundary element.
+
+215
+00:14:48,000 --> 00:14:52,000
+Double click on text in order to adjust text elements.
+
+216
+00:14:52,000 --> 00:14:56,000
+I would call the first area customer use cases.
+
+217
+00:14:56,000 --> 00:15:02,000
+Then I just click control and C and control V to copy and paste it.
+
+218
+00:15:02,000 --> 00:15:05,000
+The second area I would name administrator use cases.
+
+219
+00:15:06,000 --> 00:15:12,000
+And create the system boundary box for online shop system.
+
+220
+00:15:13,000 --> 00:15:16,000
+Now we are ready to add actually use cases.
+
+221
+00:15:17,000 --> 00:15:23,000
+According to our example, we have multiple use cases in the similar way we can find use case icon in
+
+222
+00:15:23,000 --> 00:15:24,000
+the shape library.
+
+223
+00:15:24,000 --> 00:15:30,000
+We already talked about use cases when I did an overview of our example today.
+
+224
+00:15:30,000 --> 00:15:34,000
+So let me just create all necessary use cases according to the slide.
+
+225
+00:15:35,000 --> 00:15:41,000
+As you can see, I distributed different use cases into different boundary boxes when all necessary
+
+226
+00:15:41,000 --> 00:15:49,000
+use cases are created, and when I finish putting them into the corresponding boxes, we need to create
+
+227
+00:15:49,000 --> 00:15:50,000
+relationships.
+
+228
+00:15:50,000 --> 00:15:57,000
+In our case, we are going to use associations, generalizations and include relationships.
+
+229
+00:15:57,000 --> 00:16:04,000
+I connect actors with use cases using the association line that a straight line without arrows.
+
+230
+00:16:04,000 --> 00:16:06,000
+It represents a communication link.
+
+231
+00:16:07,000 --> 00:16:15,000
+They include relationship signifies that one use case includes the functionality of another and the
+
+232
+00:16:15,000 --> 00:16:17,000
+normal or expected conditions.
+
+233
+00:16:17,000 --> 00:16:25,000
+In our example, make payment is not an optional extension, but an integral part of the standard checkout
+
+234
+00:16:25,000 --> 00:16:26,000
+process.
+
+235
+00:16:26,000 --> 00:16:32,000
+Earlier in the lesson, we learned types of relationships on the use case diagram and we also learned
+
+236
+00:16:32,000 --> 00:16:33,000
+extent relationship.
+
+237
+00:16:33,000 --> 00:16:37,000
+So let's learn the difference between include and extend.
+
+238
+00:16:37,000 --> 00:16:40,000
+And let's learn when to use what.
+
+239
+00:16:41,000 --> 00:16:42,000
+Include relationship.
+
+240
+00:16:43,000 --> 00:16:47,000
+Use include relationship when one use case involves the functionality of another.
+
+241
+00:16:47,000 --> 00:16:50,000
+Use case under normal or expected conditions.
+
+242
+00:16:50,000 --> 00:16:56,000
+In other words, one use case is a part of the main flow of another use case.
+
+243
+00:16:56,000 --> 00:17:02,000
+The included use case is optional and can be executed independently of the included use case.
+
+244
+00:17:02,000 --> 00:17:08,000
+The include relationship is typically used to represent common or shared behavior among different use
+
+245
+00:17:08,000 --> 00:17:09,000
+cases.
+
+246
+00:17:09,000 --> 00:17:14,000
+The included use case is executed within the context of the included use case.
+
+247
+00:17:15,000 --> 00:17:21,000
+For example, in an online shopping system, the make payment use case may include the update inventory
+
+248
+00:17:21,000 --> 00:17:22,000
+use case.
+
+249
+00:17:22,000 --> 00:17:30,000
+Because making a payment typically involves updating the inventory of purchased items taking into account.
+
+250
+00:17:30,000 --> 00:17:36,000
+This is the first lesson about use case diagram, and I don't want to overcomplicate our example.
+
+251
+00:17:36,000 --> 00:17:43,000
+I didn't add a lot of related use cases, but I believe you understand how you can build relationships
+
+252
+00:17:43,000 --> 00:17:50,000
+between use cases, and even in our current use case, we can add one more use case that is called Update
+
+253
+00:17:50,000 --> 00:17:52,000
+Inventory and Make payment.
+
+254
+00:17:52,000 --> 00:17:54,000
+Use case would include.
+
+255
+00:17:54,000 --> 00:17:55,000
+Update inventory.
+
+256
+00:17:55,000 --> 00:17:56,000
+Use case.
+
+257
+00:17:56,000 --> 00:17:58,000
+Extend relationship.
+
+258
+00:17:58,000 --> 00:18:03,000
+Use the extend relationship when one use case can be optionally extended by another.
+
+259
+00:18:03,000 --> 00:18:07,000
+Use case under specific conditions or exceptional situations.
+
+260
+00:18:07,000 --> 00:18:14,000
+The extended use case is not always part of the main flow, but adds functionality in specific scenarios.
+
+261
+00:18:14,000 --> 00:18:19,000
+The extended use case is not executed within the context of the extended use case.
+
+262
+00:18:19,000 --> 00:18:24,000
+By default, it only occurs when certain conditions are met.
+
+263
+00:18:24,000 --> 00:18:32,000
+The extend the relationship is used to represent additional optional behaviors that can occur in specific
+
+264
+00:18:32,000 --> 00:18:33,000
+circumstances.
+
+265
+00:18:33,000 --> 00:18:41,000
+For example, in the online shopping system, make payment might extend proceed to checkout to handle
+
+266
+00:18:41,000 --> 00:18:47,000
+cases where a customer wants to make a special payment arrangement, for example.
+
+267
+00:18:47,000 --> 00:18:48,000
+Financing.
+
+268
+00:18:48,000 --> 00:18:49,000
+Do you feel the difference?
+
+269
+00:18:49,000 --> 00:18:57,000
+When make payment extends, proceed to checkout use case and when proceed to checkout use case include.
+
+270
+00:18:57,000 --> 00:18:58,000
+Make payment.
+
+271
+00:18:58,000 --> 00:19:05,000
+So let me visualize the difference for you in case I can make payment in my online shop following different
+
+272
+00:19:05,000 --> 00:19:06,000
+flows.
+
+273
+00:19:06,000 --> 00:19:13,000
+For example, I can top up my account in online shop, or I can make online payment because I took credit
+
+274
+00:19:13,000 --> 00:19:15,000
+in online shop.
+
+275
+00:19:15,000 --> 00:19:22,000
+In these cases, make payment will extend proceed to checkout under specific condition.
+
+276
+00:19:22,000 --> 00:19:27,000
+So basically we will use make payment use case during proceeding to checkout.
+
+277
+00:19:27,000 --> 00:19:34,000
+On the other hand, in case in your online shop, the only way of making payment is through the checkout
+
+278
+00:19:34,000 --> 00:19:36,000
+process and make payment.
+
+279
+00:19:36,000 --> 00:19:43,000
+Use case is used under normal conditions and it is the part of the main flow of another use case.
+
+280
+00:19:43,000 --> 00:19:46,000
+In this case we will have include relationship.
+
+281
+00:19:47,000 --> 00:19:48,000
+So use include.
+
+282
+00:19:48,000 --> 00:19:56,000
+When you have shared or common functionality that is always part of a use case and the use extend when
+
+283
+00:19:56,000 --> 00:20:01,000
+you have optional additional functionality that occurs under specific conditions.
+
+284
+00:20:02,000 --> 00:20:06,000
+Also, I promised to show you example of generalization.
+
+285
+00:20:06,000 --> 00:20:09,000
+Manage physical products and manage digital products.
+
+286
+00:20:09,000 --> 00:20:13,000
+Would have arrows in the direction of manage products use case.
+
+287
+00:20:13,000 --> 00:20:21,000
+This is because manage products is a base use case that includes common product management functionality
+
+288
+00:20:21,000 --> 00:20:27,000
+and manage physical and digital products are specialized use case and they inherit the behavior and
+
+289
+00:20:27,000 --> 00:20:34,000
+attributes of manage products, but can introduce specific features or actions related to their respective
+
+290
+00:20:34,000 --> 00:20:35,000
+product types.
+
+291
+00:20:35,000 --> 00:20:43,000
+Physical and digital create arrow is super simple when you hover mouse over the use case, there are
+
+292
+00:20:43,000 --> 00:20:45,000
+different arrows appear.
+
+293
+00:20:45,000 --> 00:20:49,000
+Just click on the arrow and arrow will be created.
+
+294
+00:20:49,000 --> 00:20:50,000
+That's it.
+
+295
+00:20:50,000 --> 00:20:52,000
+It is really easy.
+
+296
+00:20:52,000 --> 00:20:58,000
+In order to save the diagram, just click save and select where you want to save diagram.
+
+297
+00:20:58,000 --> 00:21:03,000
+In my case, I want to save diagram into my Google Drive and share it with you.
+
+298
+00:21:03,000 --> 00:21:10,000
+You need just follow the instructions that you can see to login into your Google Drive and specify path
+
+299
+00:21:10,000 --> 00:21:13,000
+to the folder where you want to save the diagram.
+
+300
+00:21:13,000 --> 00:21:17,000
+I'm going to share with you my diagram in read only mode.
+
+301
+00:21:17,000 --> 00:21:24,000
+You can download it and work with it in order to adjust or reuse some elements, you can find the link
+
+302
+00:21:24,000 --> 00:21:26,000
+in attachments to the lesson.
+
+303
+00:21:26,000 --> 00:21:28,000
+And remember team.
+
+304
+00:21:28,000 --> 00:21:33,000
+In case you would have any questions, please do not hesitate to post your questions below the video
+
+305
+00:21:33,000 --> 00:21:35,000
+and I will be happy to answer.
+
+306
+00:21:36,000 --> 00:21:40,000
+So let's make a summary about the use case diagram.
+
+307
+00:21:40,000 --> 00:21:47,000
+Use case diagrams are crucial in software engineering for representing system functionality, because
+
+308
+00:21:47,000 --> 00:21:54,000
+they offer a clear and organized way to capture, document, and communicate the essential aspects of
+
+309
+00:21:54,000 --> 00:21:55,000
+systems behavior.
+
+310
+00:21:55,000 --> 00:22:03,000
+They serve as a bridge between user requirements and the actual design and development of a system,
+
+311
+00:22:03,000 --> 00:22:08,000
+ensuring that it aligns with the needs and expectations of its users.
+
+312
+00:22:08,000 --> 00:22:13,000
+As you may see, use case diagram has high level of abstraction.
+
+313
+00:22:13,000 --> 00:22:21,000
+Personally, I use use case diagram on the initial stages of a system design to understand key actors
+
+314
+00:22:21,000 --> 00:22:24,000
+and behaviors that system should support.
+
+315
+00:22:25,000 --> 00:22:25,000
+That's all.
+
+316
+00:22:25,000 --> 00:22:27,000
+What I wanted to share with you today.
+
+317
+00:22:27,000 --> 00:22:30,000
+Let's recap what we have learned in the lesson.
+
+318
+00:22:31,000 --> 00:22:33,000
+Today we learned use case diagram.
+
+319
+00:22:34,000 --> 00:22:41,000
+I explained key elements of use case diagram, including actor use case relationships and system boundary.
+
+320
+00:22:41,000 --> 00:22:49,000
+We also learned different kind of relationships in use case diagram including association, generalization
+
+321
+00:22:49,000 --> 00:22:51,000
+include and extend.
+
+322
+00:22:51,000 --> 00:22:58,000
+We reviewed real life example of use case diagram for online shop system with different actors.
+
+323
+00:22:58,000 --> 00:23:03,000
+And I showed you how you can use diagrams dot net tool for UML diagram.
+
+324
+00:23:04,000 --> 00:23:05,000
+That's all for today.
+
+325
+00:23:05,000 --> 00:23:07,000
+Thanks a lot for your attention.
+
+326
+00:23:07,000 --> 00:23:10,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/001 Use-Case-Diagram-from-the-lesson.url b/105 - Behavioral Diagrams/001 Use-Case-Diagram-from-the-lesson.url
new file mode 100644
index 0000000000000000000000000000000000000000..0143dbea423f80c0e7dc1dbdfe0f7d591e9182b4
--- /dev/null
+++ b/105 - Behavioral Diagrams/001 Use-Case-Diagram-from-the-lesson.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1YiRc9iwOFDI5BNV3KP8dnz9fzwaTtyyK/view?usp=sharing
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/002 Sequence Diagram_en.srt b/105 - Behavioral Diagrams/002 Sequence Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..0f13852909cbb7210e388d75bd9c2655d97c9d0b
--- /dev/null
+++ b/105 - Behavioral Diagrams/002 Sequence Diagram_en.srt
@@ -0,0 +1,1232 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello, Tim.
+
+2
+00:00:06,000 --> 00:00:12,000
+In this lesson we are going to learn such popular and useful diagram as sequence diagram.
+
+3
+00:00:12,000 --> 00:00:16,000
+This is the diagram that I use very often at my job.
+
+4
+00:00:16,000 --> 00:00:21,000
+Let's review agenda and understand in details what we are going to talk about today.
+
+5
+00:00:21,000 --> 00:00:27,000
+We are going to start this lesson from the general definition of sequence diagram and understanding
+
+6
+00:00:27,000 --> 00:00:28,000
+what it is.
+
+7
+00:00:28,000 --> 00:00:35,000
+I will explain you key elements of sequence diagram, including lifelines, messages, activation bars,
+
+8
+00:00:35,000 --> 00:00:37,000
+return messages and fragments.
+
+9
+00:00:38,000 --> 00:00:43,000
+We will also learn different types of messages and different types of fragments.
+
+10
+00:00:43,000 --> 00:00:49,000
+And to have hands on experience with a sequence diagram, we are going to have a real life practical
+
+11
+00:00:49,000 --> 00:00:50,000
+example.
+
+12
+00:00:50,000 --> 00:00:55,000
+We will create sequence diagram to describe user registration flow.
+
+13
+00:00:55,000 --> 00:00:59,000
+This will help you to understand sequence diagrams better.
+
+14
+00:00:59,000 --> 00:01:01,000
+Let's start our lesson.
+
+15
+00:01:01,000 --> 00:01:07,000
+And as I already said, let's start from learning the definition of a sequence diagram.
+
+16
+00:01:07,000 --> 00:01:15,000
+A sequence diagram is a behavioral UML diagram used in software engineering to visualize the interactions
+
+17
+00:01:15,000 --> 00:01:20,000
+and flow of communication between various objects or components in a system.
+
+18
+00:01:20,000 --> 00:01:27,000
+It primarily focuses on the dynamic behavior of a system, showing how different parts of the system
+
+19
+00:01:27,000 --> 00:01:31,000
+collaborate to achieve a specific functionality or use case.
+
+20
+00:01:32,000 --> 00:01:37,000
+To better understand sequence diagram, we need to understand its key elements.
+
+21
+00:01:38,000 --> 00:01:41,000
+Key elements and concepts of sequence diagram include.
+
+22
+00:01:42,000 --> 00:01:43,000
+Actor.
+
+23
+00:01:43,000 --> 00:01:50,000
+An actor is not an object or component within the system, but rather represents an external entity
+
+24
+00:01:50,000 --> 00:01:52,000
+or user interacting with the system.
+
+25
+00:01:53,000 --> 00:01:56,000
+Actors are typically depicted as stick figures.
+
+26
+00:01:57,000 --> 00:02:04,000
+They are used to show the external entities that initiate or participate in interactions with the system.
+
+27
+00:02:04,000 --> 00:02:08,000
+Actors can be human users, other systems, or external components.
+
+28
+00:02:09,000 --> 00:02:17,000
+Actors often serve as initiators of use cases or scenarios, and are essential for modeling the external
+
+29
+00:02:17,000 --> 00:02:20,000
+interactions and requirements of the system.
+
+30
+00:02:21,000 --> 00:02:24,000
+This next element I would like to talk about is lifeline.
+
+31
+00:02:25,000 --> 00:02:32,000
+Lifelines represent objects, components or actors within the system that participate in the sequence
+
+32
+00:02:32,000 --> 00:02:34,000
+of interactions.
+
+33
+00:02:34,000 --> 00:02:38,000
+Each lifeline is typically represented by a vertical line.
+
+34
+00:02:39,000 --> 00:02:41,000
+The next component is message.
+
+35
+00:02:42,000 --> 00:02:49,000
+Messages are represented as arrows or lines connecting lifelines, and shows the flow of communication
+
+36
+00:02:49,000 --> 00:02:52,000
+or interactions between them.
+
+37
+00:02:52,000 --> 00:03:00,000
+They can be synchronous blocking or asynchronous, non-blocking, or represent various types of interactions
+
+38
+00:03:01,000 --> 00:03:02,000
+in a minute.
+
+39
+00:03:02,000 --> 00:03:07,000
+We are going to review different types of messages that exist on a sequence diagram.
+
+40
+00:03:07,000 --> 00:03:09,000
+Activation bars.
+
+41
+00:03:09,000 --> 00:03:17,000
+Activation bars, which are usually represented as horizontal lines extending from a lifeline, shows
+
+42
+00:03:17,000 --> 00:03:23,000
+a period during which an object is actively engaged in a particular interaction.
+
+43
+00:03:23,000 --> 00:03:30,000
+They help illustrate when an object is processing a message and when it is idle.
+
+44
+00:03:31,000 --> 00:03:38,000
+Activation bars help in visualizing the sequence of activities and the relative timing of actions between
+
+45
+00:03:38,000 --> 00:03:39,000
+objects in the diagram.
+
+46
+00:03:39,000 --> 00:03:45,000
+They provide a way to show how long an object remains active during the interaction.
+
+47
+00:03:46,000 --> 00:03:47,000
+Return messages.
+
+48
+00:03:47,000 --> 00:03:54,000
+Return messages indicate a response from the receiving lifeline to the sender, often representing the
+
+49
+00:03:54,000 --> 00:03:57,000
+return of control and data back to the sender.
+
+50
+00:03:58,000 --> 00:03:59,000
+Fragments.
+
+51
+00:03:59,000 --> 00:04:06,000
+Fragments are used to show conditions, loops, alternatives, and other control structures within the
+
+52
+00:04:06,000 --> 00:04:11,000
+sequence diagram, making it possible to depict more complex scenarios.
+
+53
+00:04:11,000 --> 00:04:18,000
+Sequence diagrams are valuable tools for software developers and designers to understand and document
+
+54
+00:04:18,000 --> 00:04:25,000
+the behavior of a system, especially in scenarios involving multiple objects and their interactions.
+
+55
+00:04:26,000 --> 00:04:33,000
+They help in identifying potential issues, clarifying the order of operations, and ensuring that the
+
+56
+00:04:33,000 --> 00:04:36,000
+system functions as intended.
+
+57
+00:04:36,000 --> 00:04:43,000
+These diagrams are particularly useful in the design and analysis phases of software development, and
+
+58
+00:04:43,000 --> 00:04:50,000
+are often used in combination with other UML diagrams, such as class diagrams and use case diagrams
+
+59
+00:04:50,000 --> 00:04:57,000
+to provide a comprehensive view of a system's architecture and behavior in a sequence diagram.
+
+60
+00:04:57,000 --> 00:05:03,000
+There are several types of messages that can be used to represent interactions and communication between
+
+61
+00:05:03,000 --> 00:05:05,000
+objects or lifelines.
+
+62
+00:05:05,000 --> 00:05:12,000
+These messages convey different aspects of the interactions and help in describing the behavior of the
+
+63
+00:05:12,000 --> 00:05:13,000
+system.
+
+64
+00:05:14,000 --> 00:05:18,000
+The main types of messages in a sequence diagram include.
+
+65
+00:05:18,000 --> 00:05:20,000
+Synchronous message.
+
+66
+00:05:20,000 --> 00:05:28,000
+This is a regular blocking message that represents a call from one object to another, where the sender
+
+67
+00:05:28,000 --> 00:05:33,000
+waits for the receiver to process the message and return control.
+
+68
+00:05:33,000 --> 00:05:36,000
+It is depicted with a solid arrowed line.
+
+69
+00:05:37,000 --> 00:05:38,000
+Call message.
+
+70
+00:05:38,000 --> 00:05:43,000
+Basically, this is just another naming for synchronous message.
+
+71
+00:05:44,000 --> 00:05:48,000
+The next type of message is asynchronous message.
+
+72
+00:05:49,000 --> 00:05:56,000
+An asynchronous message represents a non-blocking call where the sender doesn't wait for the receiver
+
+73
+00:05:56,000 --> 00:05:58,000
+to process the message.
+
+74
+00:05:58,000 --> 00:06:01,000
+It is shown with a dashed arrow line.
+
+75
+00:06:02,000 --> 00:06:09,000
+Asynchronous messages are often used to depict events or activities that can be processed independently.
+
+76
+00:06:09,000 --> 00:06:11,000
+Return message.
+
+77
+00:06:11,000 --> 00:06:18,000
+A return message is used to show the response or return of control from the receiver back to the sender
+
+78
+00:06:18,000 --> 00:06:20,000
+after processing.
+
+79
+00:06:20,000 --> 00:06:21,000
+A synchronous message.
+
+80
+00:06:21,000 --> 00:06:29,000
+It is represented within a dashed line with a labeled arrow hat, connecting the receiver's activation
+
+81
+00:06:29,000 --> 00:06:32,000
+bar back to the sender's activation bar.
+
+82
+00:06:33,000 --> 00:06:34,000
+Great message.
+
+83
+00:06:34,000 --> 00:06:40,000
+A great message is used to depict the creation of a new object or instance.
+
+84
+00:06:40,000 --> 00:06:48,000
+It is shown with a dashed line that terminates with a box or rectangle representing the new object.
+
+85
+00:06:48,000 --> 00:06:51,000
+This is commonly used to illustrate object instantiation.
+
+86
+00:06:52,000 --> 00:06:54,000
+Destroy message.
+
+87
+00:06:54,000 --> 00:06:59,000
+The destroy message is used to indicate the termination or destruction of an object.
+
+88
+00:06:59,000 --> 00:07:04,000
+It is represented by a large x at the end of a message line.
+
+89
+00:07:05,000 --> 00:07:07,000
+Self massage.
+
+90
+00:07:07,000 --> 00:07:13,000
+A self massage is a message sent from an object or a lifeline to itself.
+
+91
+00:07:13,000 --> 00:07:18,000
+Illustrates an internal processing or method call within the same object.
+
+92
+00:07:18,000 --> 00:07:24,000
+It is represented as a looped arrow or line that returns to the same lifeline.
+
+93
+00:07:25,000 --> 00:07:27,000
+Lost message.
+
+94
+00:07:27,000 --> 00:07:34,000
+A lost message symbolizes a message that is sent but not received by the intended recipient.
+
+95
+00:07:34,000 --> 00:07:39,000
+It is depicted with a diagonal line through the message arrow.
+
+96
+00:07:39,000 --> 00:07:41,000
+Found message.
+
+97
+00:07:41,000 --> 00:07:47,000
+A found message indicates a message that was lost but later found and received.
+
+98
+00:07:47,000 --> 00:07:51,000
+It is shown as a wavy line through the message arrow.
+
+99
+00:07:52,000 --> 00:07:53,000
+Recursive message.
+
+100
+00:07:54,000 --> 00:08:02,000
+A recursive message is a self-referential message in a sequence diagram that represents an object sending
+
+101
+00:08:02,000 --> 00:08:03,000
+a message to itself.
+
+102
+00:08:03,000 --> 00:08:09,000
+It typically indicates a recursive or repetitive behaviour within the same object.
+
+103
+00:08:10,000 --> 00:08:12,000
+Duration message.
+
+104
+00:08:12,000 --> 00:08:17,000
+A duration message is not a standard term in the UML specification.
+
+105
+00:08:17,000 --> 00:08:24,000
+However, it is possible to represent the duration of an activity of the time taken by an object to
+
+106
+00:08:24,000 --> 00:08:27,000
+process a message within a sequence diagram.
+
+107
+00:08:27,000 --> 00:08:34,000
+This is often done by extending the activation bar of the lifeline to indicate the time taken for an
+
+108
+00:08:34,000 --> 00:08:35,000
+activity or process.
+
+109
+00:08:36,000 --> 00:08:43,000
+These message types allow you to effectively capture the flow of interactions and behaviors between
+
+110
+00:08:43,000 --> 00:08:50,000
+objects or components in a sequence diagram, making it a powerful tool for representing the dynamic
+
+111
+00:08:50,000 --> 00:08:54,000
+aspects of a system or a particular use case.
+
+112
+00:08:54,000 --> 00:09:01,000
+In the UML sequence diagram, fragments are used to depict various control structures and conditions
+
+113
+00:09:01,000 --> 00:09:05,000
+that can occur during the interaction between objects or lifelines.
+
+114
+00:09:05,000 --> 00:09:12,000
+Fragments help represent more complex scenarios and the dynamic behavior of a system.
+
+115
+00:09:12,000 --> 00:09:16,000
+Some common types of fragments in a sequence diagram include.
+
+116
+00:09:17,000 --> 00:09:26,000
+Alternative is the alt fragment represents a condition where one of several alternative message sequences
+
+117
+00:09:26,000 --> 00:09:29,000
+will be executed based on a specified condition.
+
+118
+00:09:29,000 --> 00:09:33,000
+It is often used to show branching behavior.
+
+119
+00:09:33,000 --> 00:09:41,000
+Each branch within an alt fragment is labeled with a condition, and the diagram typically includes
+
+120
+00:09:41,000 --> 00:09:44,000
+one default branch to handle other cases.
+
+121
+00:09:45,000 --> 00:09:46,000
+Option.
+
+122
+00:09:46,000 --> 00:09:53,000
+The opt fragment is used to represent optional behaviors that may or may not be executed, depending
+
+123
+00:09:53,000 --> 00:09:54,000
+on a specific condition.
+
+124
+00:09:54,000 --> 00:09:59,000
+It is typically used when an interaction is optional.
+
+125
+00:10:00,000 --> 00:10:00,000
+Loop.
+
+126
+00:10:01,000 --> 00:10:07,000
+The loop fragment indicates that a particular sequence of messages or interactions should be repeated
+
+127
+00:10:07,000 --> 00:10:13,000
+a specified number of times, or until a certain condition is met.
+
+128
+00:10:14,000 --> 00:10:15,000
+Parallel.
+
+129
+00:10:15,000 --> 00:10:23,000
+The PA fragment is used to represent concurrent behavior where multiple interactions can happen simultaneously.
+
+130
+00:10:23,000 --> 00:10:27,000
+It helps illustrate parallel processing within the system.
+
+131
+00:10:28,000 --> 00:10:29,000
+Critical.
+
+132
+00:10:29,000 --> 00:10:35,000
+The critical fragment is used to indicate a section of the sequence that is considered critical, and
+
+133
+00:10:35,000 --> 00:10:38,000
+should be executed with high priority.
+
+134
+00:10:39,000 --> 00:10:40,000
+Strict.
+
+135
+00:10:40,000 --> 00:10:48,000
+The strict fragment enforces strict ordering of messages, ensuring that messages inside the fragment
+
+136
+00:10:48,000 --> 00:10:51,000
+are processed in the exact order they are shown.
+
+137
+00:10:52,000 --> 00:10:53,000
+Assertion.
+
+138
+00:10:53,000 --> 00:11:01,000
+The assert fragment is used to specify a condition that must be true at a certain point in the sequence.
+
+139
+00:11:01,000 --> 00:11:07,000
+If the condition is not met, it can lead to an error or alternative handling.
+
+140
+00:11:08,000 --> 00:11:09,000
+Region.
+
+141
+00:11:09,000 --> 00:11:16,000
+A region fragment is a specific type of fragment that represents a portion of a sequence diagram, where
+
+142
+00:11:16,000 --> 00:11:23,000
+only one thread or object can execute the contained messages or interactions at any given time.
+
+143
+00:11:23,000 --> 00:11:31,000
+It is used to indicate exclusive access or synchronization, often related to concurrent or multi-threaded
+
+144
+00:11:31,000 --> 00:11:31,000
+systems.
+
+145
+00:11:33,000 --> 00:11:40,000
+Negative and negative fragment indicates a worthless or unimportant communication in the sequence.
+
+146
+00:11:40,000 --> 00:11:46,000
+It is used to show that a particular message or interaction doesn't have a significant impact on the
+
+147
+00:11:46,000 --> 00:11:48,000
+overall behavior of the system.
+
+148
+00:11:49,000 --> 00:11:50,000
+Reference.
+
+149
+00:11:50,000 --> 00:11:54,000
+A reference fragment refers to another sequence diagram.
+
+150
+00:11:54,000 --> 00:12:00,000
+This is used to create a modular or reusable structure in your sequence diagrams.
+
+151
+00:12:00,000 --> 00:12:07,000
+By referencing another diagram, you can encapsulate and simplify complex interactions, improve the
+
+152
+00:12:07,000 --> 00:12:12,000
+readability of your diagrams, and promote reusability.
+
+153
+00:12:13,000 --> 00:12:20,000
+These fragments allow you to model a wide range of scenarios in your sequence diagrams, making them
+
+154
+00:12:20,000 --> 00:12:27,000
+more expressive and useful for representing the dynamic behavior and control flow of your system.
+
+155
+00:12:27,000 --> 00:12:34,000
+Depending on the complexity of your interactions, you can use one or more of these fragments to accurately
+
+156
+00:12:34,000 --> 00:12:37,000
+capture the behavior of the system.
+
+157
+00:12:37,000 --> 00:12:44,000
+To be honest, I believe you will not use all these fragments in each your sequence diagram.
+
+158
+00:12:44,000 --> 00:12:50,000
+I want to make you a true professional and teach you everything I know, but in reality, everything
+
+159
+00:12:50,000 --> 00:12:53,000
+is going to be simpler, so don't worry.
+
+160
+00:12:54,000 --> 00:13:01,000
+I still encourage you to pause the video and learn different types of fragments, but like I said,
+
+161
+00:13:01,000 --> 00:13:06,000
+you are not going to use all these fragments in each your sequence diagram.
+
+162
+00:13:06,000 --> 00:13:07,000
+Let's continue.
+
+163
+00:13:08,000 --> 00:13:13,000
+And to make sure that you learned new material, we need to do some practice.
+
+164
+00:13:13,000 --> 00:13:19,000
+Usually it is easier to understand new concepts on real examples.
+
+165
+00:13:19,000 --> 00:13:25,000
+That's why in this lesson we are going to have practical exercise and we'll create our own sequence
+
+166
+00:13:25,000 --> 00:13:27,000
+diagram for real life example.
+
+167
+00:13:28,000 --> 00:13:35,000
+Here is an example of sequence diagram related to an IT and software development scenario is a process
+
+168
+00:13:35,000 --> 00:13:37,000
+of user registration on a website.
+
+169
+00:13:38,000 --> 00:13:44,000
+Let's discuss the example first, and after that we will jump to creation of a sequence diagram.
+
+170
+00:13:45,000 --> 00:13:54,000
+So participants of this sequence diagram will be user registration page registration service database
+
+171
+00:13:54,000 --> 00:13:56,000
+and mail service.
+
+172
+00:13:56,000 --> 00:14:00,000
+We are going to visualize the following scenario.
+
+173
+00:14:00,000 --> 00:14:04,000
+The user navigates to the website's registration page.
+
+174
+00:14:04,000 --> 00:14:10,000
+The user enters registration details including username, email, and password.
+
+175
+00:14:10,000 --> 00:14:13,000
+User submits the registration form.
+
+176
+00:14:14,000 --> 00:14:18,000
+The registration service receives the registration request.
+
+177
+00:14:19,000 --> 00:14:26,000
+The registration service sends a registration request to the database to check for username availability.
+
+178
+00:14:26,000 --> 00:14:32,000
+The database checks and responds with the user names availability status.
+
+179
+00:14:32,000 --> 00:14:40,000
+If the username is available, the registration service sends a request to store the user's data in
+
+180
+00:14:40,000 --> 00:14:41,000
+the database.
+
+181
+00:14:41,000 --> 00:14:47,000
+The database stores the user's data and responds with a success status.
+
+182
+00:14:47,000 --> 00:14:54,000
+The registration server sends a request to email service to send a confirmation email request to the
+
+183
+00:14:54,000 --> 00:14:55,000
+user.
+
+184
+00:14:55,000 --> 00:15:00,000
+The email service sends a confirmation email to the user.
+
+185
+00:15:00,000 --> 00:15:05,000
+The user receives the email and clicks on the confirmation link.
+
+186
+00:15:06,000 --> 00:15:11,000
+The registration service receives the confirmation request and verifies the email.
+
+187
+00:15:12,000 --> 00:15:19,000
+The registration service updates the user status in the database to confirm the user is redirected to
+
+188
+00:15:19,000 --> 00:15:21,000
+the My Account page.
+
+189
+00:15:22,000 --> 00:15:29,000
+This example showcases the sequence of interactions during user registration on a website, which is
+
+190
+00:15:29,000 --> 00:15:31,000
+a common scenario in software development.
+
+191
+00:15:31,000 --> 00:15:36,000
+And it remember team at any moment in the lesson.
+
+192
+00:15:36,000 --> 00:15:42,000
+In case you feel that something is not clear for you, please do not hesitate to ask your questions.
+
+193
+00:15:43,000 --> 00:15:45,000
+I'm always just two clicks away from you.
+
+194
+00:15:46,000 --> 00:15:50,000
+Just post your question below the video and I will be happy to answer.
+
+195
+00:15:51,000 --> 00:15:55,000
+So I believe that you understand the real life example.
+
+196
+00:15:56,000 --> 00:16:00,000
+Now it is time to understand how it can be reflected on the UML diagram.
+
+197
+00:16:01,000 --> 00:16:08,000
+I already did an overview of the interface of diagrams dot net tool in the lesson about use case diagram.
+
+198
+00:16:08,000 --> 00:16:11,000
+That's why I wouldn't stop on this too much.
+
+199
+00:16:11,000 --> 00:16:17,000
+In case you would have any question regarding interface or how to do something, ask questions below
+
+200
+00:16:17,000 --> 00:16:18,000
+the video.
+
+201
+00:16:18,000 --> 00:16:24,000
+So to create new diagram you can just click on file then select create.
+
+202
+00:16:24,000 --> 00:16:30,000
+You can find different templates on the UML sections that can boost design and process.
+
+203
+00:16:31,000 --> 00:16:34,000
+I can even see two different templates for sequence diagram.
+
+204
+00:16:35,000 --> 00:16:37,000
+You can select the one you like the most.
+
+205
+00:16:38,000 --> 00:16:44,000
+It will help you to reuse existing elements and to not draw everything from scratch.
+
+206
+00:16:44,000 --> 00:16:46,000
+Then click create.
+
+207
+00:16:46,000 --> 00:16:50,000
+Select the folder where you would like to store the diagram.
+
+208
+00:16:52,000 --> 00:16:56,000
+Then you can choose to open the diagram in a new window.
+
+209
+00:16:56,000 --> 00:16:58,000
+And now we can start diagramming.
+
+210
+00:17:00,000 --> 00:17:07,000
+Basically, there is not so much things to explain here in terms of interface and interaction with elements
+
+211
+00:17:07,000 --> 00:17:11,000
+in the similar way like we already did in the previous lesson.
+
+212
+00:17:11,000 --> 00:17:16,000
+When you select element and start typing, the text is updated.
+
+213
+00:17:16,000 --> 00:17:19,000
+You can copy and paste elements if you need.
+
+214
+00:17:20,000 --> 00:17:23,000
+Also, you can remove elements that you don't need.
+
+215
+00:17:24,000 --> 00:17:27,000
+Personally, I find such templates useful.
+
+216
+00:17:27,000 --> 00:17:30,000
+It is easier for me to start with.
+
+217
+00:17:30,000 --> 00:17:37,000
+But in case you find this template confusing, you can always start from scratch and find all relative
+
+218
+00:17:37,000 --> 00:17:40,000
+elements in the icons library.
+
+219
+00:17:40,000 --> 00:17:42,000
+In order to save your time.
+
+220
+00:17:42,000 --> 00:17:48,000
+During the video recording, I prepared the visualization of the examples that we have just discussed.
+
+221
+00:17:48,000 --> 00:17:53,000
+You can find the reference to the same diagram in attachments to the video.
+
+222
+00:17:53,000 --> 00:17:58,000
+You can open it, copy it, and try to change it as you wish.
+
+223
+00:17:58,000 --> 00:18:05,000
+In order to understand it better, let me walk you through the sequence diagram of the registration
+
+224
+00:18:05,000 --> 00:18:05,000
+process.
+
+225
+00:18:06,000 --> 00:18:12,000
+User navigates to the registration page after request to the resource is completed.
+
+226
+00:18:12,000 --> 00:18:19,000
+Registration page is returned back to the client to our user in sequence diagrams.
+
+227
+00:18:19,000 --> 00:18:27,000
+Arrows pointing to the left are often depicted as dashed arrows to indicate the return or response messages
+
+228
+00:18:27,000 --> 00:18:29,000
+like we already discussed.
+
+229
+00:18:29,000 --> 00:18:37,000
+This convention helps distinguish response messages from regular messages, which are typically represented
+
+230
+00:18:37,000 --> 00:18:39,000
+by solid arrows.
+
+231
+00:18:39,000 --> 00:18:42,000
+Now user can proceed with the next step.
+
+232
+00:18:42,000 --> 00:18:44,000
+Enter registration details.
+
+233
+00:18:44,000 --> 00:18:50,000
+After that, user clicks submit button and submits registration form.
+
+234
+00:18:51,000 --> 00:18:54,000
+The data is sent to the registration service.
+
+235
+00:18:54,000 --> 00:18:58,000
+Registration service is a module, component, or class.
+
+236
+00:18:59,000 --> 00:19:01,000
+It doesn't matter on this level of abstraction.
+
+237
+00:19:01,000 --> 00:19:03,000
+Basically, this is something.
+
+238
+00:19:03,000 --> 00:19:09,000
+What is in charge of processing data from the registration form and perform next steps.
+
+239
+00:19:10,000 --> 00:19:17,000
+After that, registration service uses data from the database to check if the username selected by user
+
+240
+00:19:17,000 --> 00:19:18,000
+is available.
+
+241
+00:19:19,000 --> 00:19:23,000
+And here I would like to remind you that this is just an example.
+
+242
+00:19:23,000 --> 00:19:23,000
+Okay.
+
+243
+00:19:23,000 --> 00:19:30,000
+Because to check if username is available, you don't necessarily need to wait until this stage.
+
+244
+00:19:30,000 --> 00:19:37,000
+Theoretically, you can send a Ajax request from the front end to check if a username is available,
+
+245
+00:19:37,000 --> 00:19:37,000
+right?
+
+246
+00:19:38,000 --> 00:19:42,000
+But in that case, this sequence diagram would look in a different way.
+
+247
+00:19:42,000 --> 00:19:49,000
+And I give you this comment in order you to understand how a sequence diagram can help you to structure
+
+248
+00:19:49,000 --> 00:19:53,000
+your thoughts and architecture of your system.
+
+249
+00:19:53,000 --> 00:19:59,000
+Here is my story based on my real experience when you deal with multiple stakeholders.
+
+250
+00:19:59,000 --> 00:20:06,000
+Each stakeholder has its own opinion and if they tell you that they are on the same page, don't believe
+
+251
+00:20:06,000 --> 00:20:06,000
+them.
+
+252
+00:20:07,000 --> 00:20:14,000
+Just take a few minutes to create a simple sequence diagram like I did here, and walk them through
+
+253
+00:20:14,000 --> 00:20:20,000
+the diagram step by step, explaining what will happen and in which order.
+
+254
+00:20:20,000 --> 00:20:26,000
+And you will be surprised to learn that each stakeholder thought about completely different things.
+
+255
+00:20:26,000 --> 00:20:33,000
+That's why I really encourage you to use sequence diagrams in order to describe behavior of your system,
+
+256
+00:20:34,000 --> 00:20:36,000
+and regarding the business requirements.
+
+257
+00:20:36,000 --> 00:20:39,000
+I already made the note that this is just an example.
+
+258
+00:20:39,000 --> 00:20:45,000
+In order to demo sequence diagram and business rules may be completely different in reality.
+
+259
+00:20:45,000 --> 00:20:50,000
+Of course, this is relatively simplified way of user registration.
+
+260
+00:20:50,000 --> 00:20:56,000
+If you are a student of my course Java from zero to first job, then you understand how complex registration
+
+261
+00:20:56,000 --> 00:20:58,000
+process may be.
+
+262
+00:20:59,000 --> 00:21:05,000
+In that course, my students and I developed an online shop from scratch, including Registration flow.
+
+263
+00:21:06,000 --> 00:21:08,000
+On top of what is described here.
+
+264
+00:21:08,000 --> 00:21:15,000
+You can have some special rules for password validation or verification of the partner link in cookies.
+
+265
+00:21:16,000 --> 00:21:21,000
+Generation of the own referral code and many other different things.
+
+266
+00:21:21,000 --> 00:21:28,000
+In order to not over complicate this example, I would let you focus on the key things and understand
+
+267
+00:21:28,000 --> 00:21:30,000
+the main concept.
+
+268
+00:21:30,000 --> 00:21:35,000
+And in case you would like to complicate this scenario, you can always do so.
+
+269
+00:21:35,000 --> 00:21:40,000
+But the tool sets that you would need to use would be the same as in our example.
+
+270
+00:21:40,000 --> 00:21:42,000
+I hope you understand my point.
+
+271
+00:21:43,000 --> 00:21:49,000
+So we check the username in the database, and we learned that this username is still available.
+
+272
+00:21:49,000 --> 00:21:51,000
+And we can proceed.
+
+273
+00:21:51,000 --> 00:21:55,000
+Then we proceed with the saving data into the database.
+
+274
+00:21:56,000 --> 00:22:02,000
+After receiving confirmation that user details are saved in the database, we can request email service
+
+275
+00:22:02,000 --> 00:22:05,000
+to send email confirmation link to our user.
+
+276
+00:22:06,000 --> 00:22:09,000
+Then confirmation email is sent to the user.
+
+277
+00:22:10,000 --> 00:22:13,000
+Our user clicks on the confirmation link.
+
+278
+00:22:13,000 --> 00:22:21,000
+Status of user is changed to the confirmed in the database, and user is redirected to the My Account
+
+279
+00:22:21,000 --> 00:22:21,000
+page.
+
+280
+00:22:21,000 --> 00:22:22,000
+That's it.
+
+281
+00:22:23,000 --> 00:22:30,000
+And pay attention also to the important thing this sequence diagram presents success case.
+
+282
+00:22:30,000 --> 00:22:36,000
+For example, you may have separate sequence diagram to describe the flow in case it is not possible
+
+283
+00:22:36,000 --> 00:22:39,000
+to save user with a selected username.
+
+284
+00:22:39,000 --> 00:22:42,000
+How system would behave in this case?
+
+285
+00:22:42,000 --> 00:22:44,000
+What are next steps?
+
+286
+00:22:44,000 --> 00:22:49,000
+So usually you can describe sequence diagram for different scenarios.
+
+287
+00:22:49,000 --> 00:22:51,000
+That's how it works.
+
+288
+00:22:51,000 --> 00:22:57,000
+After learning theory about sequence diagram and having practical example about sequence diagram, we
+
+289
+00:22:57,000 --> 00:22:59,000
+are ready to make conclusions about it.
+
+290
+00:22:59,000 --> 00:23:07,000
+A sequence diagram is a valuable tool in UML that serves as a powerful means of visually representing
+
+291
+00:23:07,000 --> 00:23:14,000
+and documenting the dynamic behavior of a system, emphasizing the interactions and communication between
+
+292
+00:23:14,000 --> 00:23:18,000
+objects, components, or actors over time.
+
+293
+00:23:19,000 --> 00:23:26,000
+Sequence diagrams are essential for modeling and understanding the dynamic behavior of complex systems,
+
+294
+00:23:26,000 --> 00:23:34,000
+making them an integral part of the toolbox for system designers, software engineers, architects,
+
+295
+00:23:34,000 --> 00:23:37,000
+and other professionals in various fields.
+
+296
+00:23:37,000 --> 00:23:45,000
+They facilitate effective communication and documentation of how objects, components, or actors interact
+
+297
+00:23:45,000 --> 00:23:49,000
+to achieve specific functionalities and use cases in a system.
+
+298
+00:23:49,000 --> 00:23:54,000
+And now let's recap what we have learned today in the lesson.
+
+299
+00:23:54,000 --> 00:23:56,000
+We have learned a lot of things today.
+
+300
+00:23:56,000 --> 00:23:59,000
+We learned what a sequence diagram is.
+
+301
+00:23:59,000 --> 00:24:06,000
+Now you know key elements of a sequence diagram, including lifelines, messages, activation bars,
+
+302
+00:24:06,000 --> 00:24:08,000
+return messages, and fragments.
+
+303
+00:24:08,000 --> 00:24:13,000
+We learned different types of messages and different types of fragments.
+
+304
+00:24:14,000 --> 00:24:20,000
+Also, we reviewed practical example and learned how to create sequence diagram on practice.
+
+305
+00:24:20,000 --> 00:24:24,000
+We created sequence diagram for user registration flow.
+
+306
+00:24:25,000 --> 00:24:26,000
+That's all for this lesson.
+
+307
+00:24:26,000 --> 00:24:28,000
+Thanks a lot for your attention.
+
+308
+00:24:28,000 --> 00:24:31,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/002 Sequence-Diagram-User-Registration.url b/105 - Behavioral Diagrams/002 Sequence-Diagram-User-Registration.url
new file mode 100644
index 0000000000000000000000000000000000000000..f750dc2eebf2e2af4e3f0c8f6ab9b7bdfe3c7842
--- /dev/null
+++ b/105 - Behavioral Diagrams/002 Sequence-Diagram-User-Registration.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1jKwTxt1gHIKBXXjpFbBAYX5QzJkojFHS/view?usp=sharing
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/003 Activity Diagram_en.srt b/105 - Behavioral Diagrams/003 Activity Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..130cb7ddd4230692a6ebc5c47c54ba49135defd9
--- /dev/null
+++ b/105 - Behavioral Diagrams/003 Activity Diagram_en.srt
@@ -0,0 +1,1132 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello again!
+
+2
+00:00:06,000 --> 00:00:10,000
+In this lesson we are going to learn activity diagram.
+
+3
+00:00:10,000 --> 00:00:15,000
+We are going to start the lesson from learning the definition of activity diagram.
+
+4
+00:00:15,000 --> 00:00:18,000
+Then we'll review components of activity diagram.
+
+5
+00:00:18,000 --> 00:00:26,000
+We'll learn what activity action initial node, final node, decision node, fork node, join node,
+
+6
+00:00:26,000 --> 00:00:29,000
+object flow and other components are.
+
+7
+00:00:30,000 --> 00:00:36,000
+To understand better what activity diagram is, we'll compare it with a sequence diagram.
+
+8
+00:00:36,000 --> 00:00:43,000
+We will also understand when to use activity diagram in which cases and scenarios.
+
+9
+00:00:43,000 --> 00:00:47,000
+And as always, we are going to have practical exercise.
+
+10
+00:00:47,000 --> 00:00:52,000
+In the lesson we'll create activity diagram for order processing workflow.
+
+11
+00:00:52,000 --> 00:00:54,000
+Let's start our lesson.
+
+12
+00:00:54,000 --> 00:00:58,000
+Let's start from the definition of the activity diagram.
+
+13
+00:00:58,000 --> 00:01:05,000
+An activity diagram is a type of behavioral diagram in the Unified Modeling Language that is used to
+
+14
+00:01:05,000 --> 00:01:13,000
+represent the workflow of flow of activities within a system, business process, or software application.
+
+15
+00:01:13,000 --> 00:01:21,000
+Activity diagrams are particularly useful for modeling dynamic aspects of a system, showing the sequence
+
+16
+00:01:21,000 --> 00:01:24,000
+of activities and how they interact with each other.
+
+17
+00:01:25,000 --> 00:01:29,000
+It can models a concurrent and sequential activities.
+
+18
+00:01:29,000 --> 00:01:35,000
+Activity diagrams can depict concurrent activities using forks and join nodes.
+
+19
+00:01:35,000 --> 00:01:44,000
+Fork nodes split the control flow into multiple parallel flows, while join nodes merge them back into
+
+20
+00:01:44,000 --> 00:01:45,000
+a single flow.
+
+21
+00:01:45,000 --> 00:01:50,000
+In a minute we are going to learn all components of activity diagram.
+
+22
+00:01:50,000 --> 00:01:57,000
+Activity diagrams are valuable tool for system designers, architects, software developers and business
+
+23
+00:01:57,000 --> 00:02:04,000
+analysts to model and understand the behavior and dynamics of a system or process.
+
+24
+00:02:04,000 --> 00:02:12,000
+They help in visualizing complex workflows, identifying potential bottlenecks, and ensuring that all
+
+25
+00:02:12,000 --> 00:02:16,000
+aspects of a process are well documented and understood.
+
+26
+00:02:17,000 --> 00:02:24,000
+Activity diagrams, and consists of various components and elements that are used to represent the flow
+
+27
+00:02:24,000 --> 00:02:28,000
+of activities and interactions within a system or process.
+
+28
+00:02:28,000 --> 00:02:32,000
+Here are the main components and elements of activity diagrams.
+
+29
+00:02:32,000 --> 00:02:33,000
+Activity.
+
+30
+00:02:34,000 --> 00:02:42,000
+An activity is a fundamental element in an activity diagram, and represents a specific action or operation
+
+31
+00:02:42,000 --> 00:02:43,000
+in the system or process.
+
+32
+00:02:44,000 --> 00:02:51,000
+Activities can range from simple operations like print and voice to more complex processes like order
+
+33
+00:02:51,000 --> 00:02:52,000
+processing.
+
+34
+00:02:53,000 --> 00:03:00,000
+Behavior can be categorized into one or more actions which collectively form an activity.
+
+35
+00:03:00,000 --> 00:03:07,000
+Essentially, an activity can be described as a network of nodes interconnected by edges.
+
+36
+00:03:07,000 --> 00:03:16,000
+These edges illustrate the progression of execution and may contain various types of nodes, including
+
+37
+00:03:16,000 --> 00:03:20,000
+action nodes, control nodes, or object nodes.
+
+38
+00:03:20,000 --> 00:03:26,000
+Action, and action is a type of activity that represents a basic unit of work.
+
+39
+00:03:26,000 --> 00:03:33,000
+It can be a simple atomic action, like sending an email or more complex action, like invoking a mass
+
+40
+00:03:34,000 --> 00:03:35,000
+in a software system.
+
+41
+00:03:36,000 --> 00:03:37,000
+Initial note.
+
+42
+00:03:37,000 --> 00:03:42,000
+The initial note marks the starting point of the activity diagram.
+
+43
+00:03:42,000 --> 00:03:46,000
+It is typically represented as a field circle.
+
+44
+00:03:46,000 --> 00:03:50,000
+There can be only one initial note in an activity diagram.
+
+45
+00:03:51,000 --> 00:03:52,000
+Final node.
+
+46
+00:03:52,000 --> 00:04:00,000
+The final node marks the endpoint of the activity diagram and is represented as a bullseye or filled
+
+47
+00:04:00,000 --> 00:04:02,000
+circle with a border.
+
+48
+00:04:02,000 --> 00:04:06,000
+Dependent on how flow of execution will go.
+
+49
+00:04:06,000 --> 00:04:09,000
+Theoretically, you may have multiple final nodes.
+
+50
+00:04:10,000 --> 00:04:18,000
+Flow of control transitions or control flows represents the sequence of activities and the order in
+
+51
+00:04:18,000 --> 00:04:20,000
+which they are executed.
+
+52
+00:04:21,000 --> 00:04:27,000
+Arrows connect activities and shows the flow of control from one activity to another.
+
+53
+00:04:27,000 --> 00:04:28,000
+Decision node.
+
+54
+00:04:29,000 --> 00:04:32,000
+Decision nodes or they are called.
+
+55
+00:04:32,000 --> 00:04:39,000
+Sometimes decision boxes are used to represent decision points or branches in the workflow.
+
+56
+00:04:40,000 --> 00:04:47,000
+They are usually depicted as a diamond shape and have multiple outgoing transitions, each associated
+
+57
+00:04:47,000 --> 00:04:52,000
+with a condition or guard that determines the path to be taken.
+
+58
+00:04:53,000 --> 00:04:54,000
+Merge node.
+
+59
+00:04:54,000 --> 00:04:59,000
+Merge nodes are used to combine multiple control flows back into one.
+
+60
+00:05:00,000 --> 00:05:07,000
+They are typically depicted as a diamond shape with a multiple incoming flows and single outgoing flow.
+
+61
+00:05:08,000 --> 00:05:09,000
+Fork node.
+
+62
+00:05:09,000 --> 00:05:16,000
+Fork nodes are used to split a single control flow into multiple parallel flows.
+
+63
+00:05:16,000 --> 00:05:19,000
+They are often represented as a black bar.
+
+64
+00:05:20,000 --> 00:05:21,000
+Join node.
+
+65
+00:05:22,000 --> 00:05:28,000
+Join nodes are used to match multiple parallel flows back into a single flow.
+
+66
+00:05:29,000 --> 00:05:31,000
+They are also depicted as a black bar.
+
+67
+00:05:32,000 --> 00:05:38,000
+If both fork and join nodes are depicted as black bars, then how to distinguish them.
+
+68
+00:05:39,000 --> 00:05:47,000
+Fork node usually has single incoming flow and multiple outgoing flows, and join node has multiple
+
+69
+00:05:47,000 --> 00:05:51,000
+incoming flows and single outgoing flow.
+
+70
+00:05:51,000 --> 00:05:58,000
+And in this case, the next logical question would be what is the difference between merge and join
+
+71
+00:05:58,000 --> 00:05:58,000
+node?
+
+72
+00:05:59,000 --> 00:06:08,000
+A merge node combines multiple incoming control flows into a single outgoing flow, while a join node
+
+73
+00:06:08,000 --> 00:06:16,000
+synchronizes multiple incoming flows based on conditions or constraints before allowing them to proceed
+
+74
+00:06:16,000 --> 00:06:17,000
+as a single flow.
+
+75
+00:06:18,000 --> 00:06:23,000
+In other words, join requires both activities that are coming in to be completed.
+
+76
+00:06:23,000 --> 00:06:28,000
+Merge just waits for one of incoming activities to be completed.
+
+77
+00:06:29,000 --> 00:06:30,000
+Join blocks.
+
+78
+00:06:30,000 --> 00:06:32,000
+Merge doesn't.
+
+79
+00:06:33,000 --> 00:06:34,000
+Object node.
+
+80
+00:06:34,000 --> 00:06:40,000
+Object nodes are used to represent data or objects passed between activities.
+
+81
+00:06:40,000 --> 00:06:46,000
+They can be depicted as rectangles with the object or data name inside.
+
+82
+00:06:46,000 --> 00:06:47,000
+Swim lanes.
+
+83
+00:06:48,000 --> 00:06:54,000
+Swim lanes are used to group activities based on the responsible entity or organizational unit.
+
+84
+00:06:54,000 --> 00:07:01,000
+They provide a visual way to show which parts of the system or which actor is responsible for specific
+
+85
+00:07:01,000 --> 00:07:02,000
+activities.
+
+86
+00:07:02,000 --> 00:07:05,000
+Swim lanes can be horizontal or vertical.
+
+87
+00:07:06,000 --> 00:07:08,000
+Activity partition.
+
+88
+00:07:08,000 --> 00:07:13,000
+Activity partitions are used to categorize activities within a diagram.
+
+89
+00:07:14,000 --> 00:07:20,000
+They are similar to swimlanes, but are typically used for more complex structuring of activities.
+
+90
+00:07:20,000 --> 00:07:26,000
+Partitions can be nested, allowing for heirarchical organization.
+
+91
+00:07:26,000 --> 00:07:33,000
+Activity diagrams can be divided into partitions which can represent different organizational units,
+
+92
+00:07:33,000 --> 00:07:36,000
+actors, or other categories.
+
+93
+00:07:36,000 --> 00:07:42,000
+Partitions help to show which elements are responsible for particular activities.
+
+94
+00:07:42,000 --> 00:07:44,000
+Notes and comments.
+
+95
+00:07:44,000 --> 00:07:51,000
+Notes and comments can be added to the diagram to provide additional information or explanations about
+
+96
+00:07:51,000 --> 00:07:54,000
+specific elements, conditions or decisions.
+
+97
+00:07:55,000 --> 00:07:56,000
+Object flow.
+
+98
+00:07:56,000 --> 00:08:01,000
+Object flows shows the movement of object or data between activities.
+
+99
+00:08:01,000 --> 00:08:06,000
+They are represented by arrows with the object name or data type.
+
+100
+00:08:07,000 --> 00:08:09,000
+Interruptible region.
+
+101
+00:08:09,000 --> 00:08:17,000
+Interruptible regions are used to indicate portions of the diagram, where activities can be interrupted
+
+102
+00:08:17,000 --> 00:08:22,000
+by an external event or signal expansion region.
+
+103
+00:08:22,000 --> 00:08:30,000
+Expansion regions are used to represent iterative or parallel processing of activities, such as loops
+
+104
+00:08:30,000 --> 00:08:32,000
+or parallel executions.
+
+105
+00:08:32,000 --> 00:08:38,000
+These components and elements are used to create a visual representation of the activities, decisions,
+
+106
+00:08:38,000 --> 00:08:42,000
+and data flows within a system or process.
+
+107
+00:08:42,000 --> 00:08:49,000
+Activity diagrams are valuable for understanding and communicating the dynamic behavior of a system,
+
+108
+00:08:49,000 --> 00:08:55,000
+whether it's a software application or business process or any other complex system.
+
+109
+00:08:55,000 --> 00:09:01,000
+Some of my students may be wondering, so what is the difference between sequence and activity diagrams
+
+110
+00:09:01,000 --> 00:09:05,000
+and how they're different and when to use what?
+
+111
+00:09:05,000 --> 00:09:11,000
+If you don't skip lessons, I believe that you already watched lesson about sequence diagram and you
+
+112
+00:09:11,000 --> 00:09:13,000
+can understand what I'm talking about.
+
+113
+00:09:14,000 --> 00:09:20,000
+So let's try to learn activity diagram better through its comparison with the sequence diagram.
+
+114
+00:09:21,000 --> 00:09:28,000
+Activity diagrams and sequence diagrams are both types of UML diagrams, but they serve different purposes
+
+115
+00:09:28,000 --> 00:09:32,000
+and focus on different aspects of a system or process.
+
+116
+00:09:32,000 --> 00:09:37,000
+Here's a key differences between activity diagrams and sequence diagrams.
+
+117
+00:09:38,000 --> 00:09:44,000
+If we talk about purpose and focus in activity diagram, we have the following purpose.
+
+118
+00:09:44,000 --> 00:09:52,000
+Activity diagrams focus on modeling the dynamic aspects of a system, emphasizing the workflow and the
+
+119
+00:09:52,000 --> 00:09:55,000
+sequence of activities or actions.
+
+120
+00:09:55,000 --> 00:10:02,000
+They are primarily used to represent high level business processes, use cases, or the flow of actions
+
+121
+00:10:02,000 --> 00:10:04,000
+within a system.
+
+122
+00:10:04,000 --> 00:10:11,000
+They show how activities relate to one another and may involve actors or entities responsible for those
+
+123
+00:10:11,000 --> 00:10:12,000
+activities.
+
+124
+00:10:13,000 --> 00:10:20,000
+And if we talk about sequence diagram, then we can say that purpose of sequence diagrams focus on modeling
+
+125
+00:10:20,000 --> 00:10:28,000
+the interactions between objects or components within a system, with emphasis on the sequence and timing
+
+126
+00:10:28,000 --> 00:10:30,000
+of those interactions.
+
+127
+00:10:30,000 --> 00:10:36,000
+They typically used to represent the behavior of specific scenarios or interactions between objects,
+
+128
+00:10:36,000 --> 00:10:39,000
+often within the context of a use case.
+
+129
+00:10:39,000 --> 00:10:45,000
+Sequence diagrams emphasize the order in which messages are exchanged between objects.
+
+130
+00:10:45,000 --> 00:10:50,000
+Let's use another criteria for comparison representation of time.
+
+131
+00:10:51,000 --> 00:10:56,000
+Activity diagrams do not explicitly represent the timing of actions or messages.
+
+132
+00:10:56,000 --> 00:11:00,000
+They are primarily concerned with the flow of activities.
+
+133
+00:11:00,000 --> 00:11:07,000
+Sequence diagrams explicitly represent the timing and order of messages exchanged between objects,
+
+134
+00:11:07,000 --> 00:11:11,000
+allowing you to show the chronological sequence of events.
+
+135
+00:11:11,000 --> 00:11:18,000
+Another difference activity diagrams are suitable for representing high level processes, use cases,
+
+136
+00:11:18,000 --> 00:11:21,000
+business workflows, or system level activities.
+
+137
+00:11:22,000 --> 00:11:29,000
+On the other hand, sequence diagrams are used to illustrate interactions, collaborations, and scenarios
+
+138
+00:11:29,000 --> 00:11:34,000
+involving objects or components, often in the context of a specific use case.
+
+139
+00:11:35,000 --> 00:11:42,000
+Activity diagrams are generally used to represent high level processes, like I already said, making
+
+140
+00:11:42,000 --> 00:11:47,000
+them suitable for modelling complex business processes or system level workflows.
+
+141
+00:11:47,000 --> 00:11:54,000
+Sequence diagrams are typically more detailed and are used to depict specific interactions and object
+
+142
+00:11:54,000 --> 00:12:00,000
+behaviour, making them well suited for modelling detailed system interactions.
+
+143
+00:12:00,000 --> 00:12:07,000
+So based on this comparison, you can make a conclusion that activity diagrams are primarily used for
+
+144
+00:12:07,000 --> 00:12:12,000
+modeling the work flow and activities within a system or process.
+
+145
+00:12:12,000 --> 00:12:19,000
+While sequence diagrams focus on modeling the interactions and messages exchanged between objects or
+
+146
+00:12:19,000 --> 00:12:20,000
+components.
+
+147
+00:12:21,000 --> 00:12:23,000
+So when to use what?
+
+148
+00:12:23,000 --> 00:12:26,000
+When to select activity diagram of a sequence diagram.
+
+149
+00:12:26,000 --> 00:12:33,000
+For example, the choice between these two diagram types depends on the specific model and needs, and
+
+150
+00:12:33,000 --> 00:12:38,000
+the level of detail required for your system or process representation.
+
+151
+00:12:39,000 --> 00:12:46,000
+Use activity diagrams when you want to model the workflow of high level business processes within a
+
+152
+00:12:46,000 --> 00:12:47,000
+system.
+
+153
+00:12:47,000 --> 00:12:51,000
+You need to illustrate the sequence of activities and actions in a use case.
+
+154
+00:12:51,000 --> 00:12:57,000
+You want to show the responsibilities of different actors or organizational units in a process.
+
+155
+00:12:57,000 --> 00:13:04,000
+You need to provide a visual representation of a system's dynamic behavior at a higher level of abstraction.
+
+156
+00:13:04,000 --> 00:13:09,000
+You are interested in how activities relate to one another in the process.
+
+157
+00:13:09,000 --> 00:13:18,000
+Use sequence diagrams when you want to model interactions and collaborations between objects or components
+
+158
+00:13:18,000 --> 00:13:19,000
+in a system.
+
+159
+00:13:19,000 --> 00:13:25,000
+You need to depict the chronological sequence of messages and method calls between objects.
+
+160
+00:13:25,000 --> 00:13:33,000
+You are interested in, showing the timing and order of interactions within a specific use case or scenario.
+
+161
+00:13:33,000 --> 00:13:39,000
+You want to highlight the dynamic behavior of objects and the flow of control in a detailed manner.
+
+162
+00:13:39,000 --> 00:13:46,000
+You need to identify and analyze the sequence of events and object interactions in your system.
+
+163
+00:13:46,000 --> 00:13:51,000
+So now I believe it is clear when to use which diagram.
+
+164
+00:13:51,000 --> 00:13:57,000
+And as usual, let's come up with some practical example and illustrate it with activity diagram.
+
+165
+00:13:58,000 --> 00:14:03,000
+This will give you a better understanding of activity diagram and will help you to learn its key elements
+
+166
+00:14:03,000 --> 00:14:05,000
+by example.
+
+167
+00:14:05,000 --> 00:14:09,000
+And we are going to have example from the online shop system.
+
+168
+00:14:09,000 --> 00:14:15,000
+We will describe the order processing workflow with the help of activity diagram.
+
+169
+00:14:15,000 --> 00:14:22,000
+The activity diagram illustrates the workflow involved in processing and fulfilling customer orders
+
+170
+00:14:22,000 --> 00:14:24,000
+in e-commerce system.
+
+171
+00:14:24,000 --> 00:14:27,000
+We are going to have the following swimlanes.
+
+172
+00:14:27,000 --> 00:14:29,000
+Customer sales department.
+
+173
+00:14:29,000 --> 00:14:30,000
+Warehouse.
+
+174
+00:14:31,000 --> 00:14:34,000
+We are going to have the following actions.
+
+175
+00:14:34,000 --> 00:14:35,000
+Customer.
+
+176
+00:14:35,000 --> 00:14:35,000
+Places.
+
+177
+00:14:35,000 --> 00:14:36,000
+Order.
+
+178
+00:14:36,000 --> 00:14:43,000
+The customer initiates the order placement process by selecting products and providing shipping information.
+
+179
+00:14:43,000 --> 00:14:45,000
+The next action.
+
+180
+00:14:45,000 --> 00:14:47,000
+Sales department receives order.
+
+181
+00:14:48,000 --> 00:14:53,000
+The sales department is responsible for receiving and reviewing incoming orders.
+
+182
+00:14:54,000 --> 00:14:56,000
+Verify product availability.
+
+183
+00:14:56,000 --> 00:15:01,000
+The sales department checks the warehouse to confirm product availability.
+
+184
+00:15:01,000 --> 00:15:03,000
+Prepare order.
+
+185
+00:15:03,000 --> 00:15:09,000
+If products are available, the warehouse prepares the order for shipment.
+
+186
+00:15:09,000 --> 00:15:14,000
+If there are no products available, then we need to notify customer.
+
+187
+00:15:14,000 --> 00:15:17,000
+Notify customer of shipment.
+
+188
+00:15:17,000 --> 00:15:24,000
+The sales department notifies the customer about the shipment status and provides tracking information.
+
+189
+00:15:24,000 --> 00:15:26,000
+Customer receives order.
+
+190
+00:15:27,000 --> 00:15:32,000
+The customer receives and acknowledges the receipt of the order.
+
+191
+00:15:32,000 --> 00:15:35,000
+We're going to have one decision point.
+
+192
+00:15:36,000 --> 00:15:37,000
+Product availability.
+
+193
+00:15:37,000 --> 00:15:41,000
+After verifying product availability, there is a decision point.
+
+194
+00:15:41,000 --> 00:15:46,000
+If products are available, the process continues to prepare order.
+
+195
+00:15:46,000 --> 00:15:53,000
+If products are not available, the sales department informs the customer flow of control.
+
+196
+00:15:53,000 --> 00:15:59,000
+Activities are connected by control flows indicating the sequence in which they are performed.
+
+197
+00:16:00,000 --> 00:16:07,000
+This activity diagram provides an overview of the order processing workflow, demonstrating how different
+
+198
+00:16:07,000 --> 00:16:11,000
+actors or units are involved at various stages of the process.
+
+199
+00:16:11,000 --> 00:16:19,000
+It showcases the activities and responsibilities of the customer sales department and warehouse in fulfilling
+
+200
+00:16:19,000 --> 00:16:21,000
+customer orders.
+
+201
+00:16:21,000 --> 00:16:25,000
+Please note that this is a simplified example.
+
+202
+00:16:25,000 --> 00:16:32,000
+Depending on the online shop system, there may be additional activities and interactions involved in
+
+203
+00:16:32,000 --> 00:16:33,000
+order processing.
+
+204
+00:16:33,000 --> 00:16:39,000
+But even this simplified example would be sufficient for us to practice our skills.
+
+205
+00:16:39,000 --> 00:16:43,000
+So we review the example and what we are going to draw.
+
+206
+00:16:43,000 --> 00:16:49,000
+Now, in case you have any questions, please do not hesitate to post your questions below the video
+
+207
+00:16:49,000 --> 00:16:51,000
+and I will be happy to answer.
+
+208
+00:16:51,000 --> 00:16:58,000
+And now let me start screen sharing and review with your activity diagram for our example.
+
+209
+00:16:58,000 --> 00:17:04,000
+If you don't skip lessons in the course, then I assume that you are already familiar with diagrams.
+
+210
+00:17:04,000 --> 00:17:07,000
+Dot net tool for UML drawing.
+
+211
+00:17:07,000 --> 00:17:14,000
+That's why I don't stop for too long on the explanation of the interface, in case you would have any
+
+212
+00:17:14,000 --> 00:17:15,000
+questions.
+
+213
+00:17:15,000 --> 00:17:19,000
+As always, just post your question below the video.
+
+214
+00:17:20,000 --> 00:17:26,000
+I just wanted to draw attention to existing templates for activity diagrams, and the sections are two
+
+215
+00:17:26,000 --> 00:17:27,000
+templates.
+
+216
+00:17:27,000 --> 00:17:32,000
+You can select the one you like the most to boost the design and process.
+
+217
+00:17:32,000 --> 00:17:34,000
+They are similar.
+
+218
+00:17:34,000 --> 00:17:37,000
+In order to save your time.
+
+219
+00:17:37,000 --> 00:17:41,000
+During the lesson, I prepared example and want to review it with you.
+
+220
+00:17:41,000 --> 00:17:45,000
+You can find this example in attachments to the lesson.
+
+221
+00:17:45,000 --> 00:17:50,000
+You can copy it and play with it in order to understand activity diagram better.
+
+222
+00:17:51,000 --> 00:17:56,000
+Here in example you can see that on top of three swimlanes I have another one.
+
+223
+00:17:56,000 --> 00:18:00,000
+This is often referred to as a composite swimlane.
+
+224
+00:18:00,000 --> 00:18:08,000
+A composite swimlane allows for a high level of organization and categorization in an activity diagram.
+
+225
+00:18:08,000 --> 00:18:09,000
+In a composite swim.
+
+226
+00:18:10,000 --> 00:18:18,000
+The main or top level swimlane represents a broader category or entity, while the sub swim lanes grouped
+
+227
+00:18:18,000 --> 00:18:23,000
+within it represent more specific units, actors or components.
+
+228
+00:18:23,000 --> 00:18:30,000
+This hierarchical arrangement is useful when you want to show a high level overview of responsibilities
+
+229
+00:18:30,000 --> 00:18:33,000
+or categorization within a system or process.
+
+230
+00:18:34,000 --> 00:18:38,000
+In our case, the main swimlane is called Order Management Hub.
+
+231
+00:18:39,000 --> 00:18:46,000
+This name implies that the main Swimlane serves as a central hub for managing orders where the sales
+
+232
+00:18:46,000 --> 00:18:51,000
+department, warehouse, and customer play important roles.
+
+233
+00:18:51,000 --> 00:18:58,000
+I choose a name for the main Swimlane, as it represents the overall context or entity that this sub
+
+234
+00:18:58,000 --> 00:19:06,000
+swimlanes interact with, and other swimlanes are called Customer Sales Department warehouse.
+
+235
+00:19:06,000 --> 00:19:07,000
+So let's review.
+
+236
+00:19:08,000 --> 00:19:09,000
+What do we have here?
+
+237
+00:19:09,000 --> 00:19:13,000
+I will walk you through actions that we have here.
+
+238
+00:19:13,000 --> 00:19:15,000
+We have initial node.
+
+239
+00:19:15,000 --> 00:19:20,000
+As you can see order processing workflow is initiated by customer.
+
+240
+00:19:21,000 --> 00:19:22,000
+Customer places.
+
+241
+00:19:22,000 --> 00:19:26,000
+An order sales department receives an order.
+
+242
+00:19:26,000 --> 00:19:32,000
+Sales department initiates verification of products availability in the warehouse.
+
+243
+00:19:32,000 --> 00:19:36,000
+And as I already mentioned, this is relatively simple example, right?
+
+244
+00:19:37,000 --> 00:19:44,000
+Our goal right now is to learn the toolset and understand how we can visualize more complex flows,
+
+245
+00:19:44,000 --> 00:19:51,000
+because in reality, sales department or some kind of service that is responsible for order processing
+
+246
+00:19:51,000 --> 00:19:58,000
+can perform multiple checks in parallel, and it will lead us to more complex workflow.
+
+247
+00:19:58,000 --> 00:20:04,000
+But for the sake of the current demo, today we are going to have pretty straightforward workflow.
+
+248
+00:20:05,000 --> 00:20:12,000
+Then we have a decision node in case product is not available at the moment at warehouse sales department
+
+249
+00:20:12,000 --> 00:20:18,000
+got notified and then sales department notifies customer that product is not available.
+
+250
+00:20:18,000 --> 00:20:23,000
+In case product is available, then it is prepared for shipment.
+
+251
+00:20:24,000 --> 00:20:30,000
+Sales department notifies customer about the shipment and provides customer with tracking number.
+
+252
+00:20:30,000 --> 00:20:34,000
+Once order is received, the process is finished.
+
+253
+00:20:34,000 --> 00:20:40,000
+As you can see, we have two final nodes depending on the flow of execution.
+
+254
+00:20:40,000 --> 00:20:43,000
+That's how activity diagram looks like.
+
+255
+00:20:43,000 --> 00:20:48,000
+As usual, adding new activities and connecting them is super simple.
+
+256
+00:20:48,000 --> 00:20:55,000
+When you hover mouse over activity, you can click on arrow and select the visual icon that you want
+
+257
+00:20:55,000 --> 00:20:55,000
+to create.
+
+258
+00:20:56,000 --> 00:21:00,000
+After that, you can move this activity and place it in different swim lanes.
+
+259
+00:21:01,000 --> 00:21:08,000
+Another interesting thing to consider that swim lanes can be vertical like this shown here.
+
+260
+00:21:08,000 --> 00:21:10,000
+And they can be horizontal too.
+
+261
+00:21:10,000 --> 00:21:16,000
+So it is only up to you and your preferences which one to choose.
+
+262
+00:21:16,000 --> 00:21:21,000
+So we learned enough theory about activity diagram with a practical example.
+
+263
+00:21:22,000 --> 00:21:24,000
+Now we are ready to make conclusions.
+
+264
+00:21:25,000 --> 00:21:30,000
+Activity diagrams serve as a visual representation of a system's dynamic behavior.
+
+265
+00:21:31,000 --> 00:21:38,000
+They offer a clear and structured means of illustrating the flow of activities, actions, and interactions
+
+266
+00:21:38,000 --> 00:21:40,000
+within a system.
+
+267
+00:21:40,000 --> 00:21:47,000
+These diagrams are widely applicable, serving the needs of both technical and non-technical audiences
+
+268
+00:21:47,000 --> 00:21:52,000
+in domains ranging from a software development to business process modeling.
+
+269
+00:21:53,000 --> 00:22:01,000
+They excel in modeling complex workflows, parallel processes, and conditional flows, making them
+
+270
+00:22:01,000 --> 00:22:08,000
+an invaluable tool for enhancing communication, process analysis, and system design and development.
+
+271
+00:22:09,000 --> 00:22:11,000
+That's all what I planned to review with you today.
+
+272
+00:22:11,000 --> 00:22:15,000
+Let's recap what we have learned from the lesson.
+
+273
+00:22:16,000 --> 00:22:18,000
+Today we learned what activity diagram is.
+
+274
+00:22:19,000 --> 00:22:27,000
+We learned its key components like activity, initial node, final node, decision node, fork node,
+
+275
+00:22:27,000 --> 00:22:29,000
+object flow and others.
+
+276
+00:22:29,000 --> 00:22:36,000
+To understand better what activity diagram is, I compared it with a sequence diagram and explained
+
+277
+00:22:36,000 --> 00:22:37,000
+you the difference.
+
+278
+00:22:37,000 --> 00:22:41,000
+We learned when it is better to use activity diagram.
+
+279
+00:22:41,000 --> 00:22:44,000
+And we reviewed real life example.
+
+280
+00:22:44,000 --> 00:22:48,000
+We created activity diagram for order processing workflow.
+
+281
+00:22:48,000 --> 00:22:49,000
+That's it.
+
+282
+00:22:50,000 --> 00:22:52,000
+Thanks a lot for your attention.
+
+283
+00:22:52,000 --> 00:22:55,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/003 Activity-Diagram-Order-Processing-Workflow.url b/105 - Behavioral Diagrams/003 Activity-Diagram-Order-Processing-Workflow.url
new file mode 100644
index 0000000000000000000000000000000000000000..c0979f4b45e54eae276701f55d8b0ee9cdf71907
--- /dev/null
+++ b/105 - Behavioral Diagrams/003 Activity-Diagram-Order-Processing-Workflow.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/143L1NC2o3io8Kfjzh6g-1Zui4qUpHGRJ/view?usp=sharing
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/004 State Machine Diagram_en.srt b/105 - Behavioral Diagrams/004 State Machine Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..897a0be41cfa2070d9c2bd6d1e37a84c0107ffb8
--- /dev/null
+++ b/105 - Behavioral Diagrams/004 State Machine Diagram_en.srt
@@ -0,0 +1,1208 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello team!
+
+2
+00:00:06,000 --> 00:00:10,000
+In this lesson we are going to learn state machine diagram.
+
+3
+00:00:10,000 --> 00:00:14,000
+We are going to start the lesson from the definition of state machine diagram.
+
+4
+00:00:14,000 --> 00:00:17,000
+We will discuss different types of state machine diagrams.
+
+5
+00:00:17,000 --> 00:00:23,000
+I will explain you what behavioral and protocol state machine diagrams are.
+
+6
+00:00:23,000 --> 00:00:27,000
+Then we will start learning elements of state machine diagram.
+
+7
+00:00:27,000 --> 00:00:35,000
+We will learn what a state is and different types of state transition guards triggers and other elements.
+
+8
+00:00:35,000 --> 00:00:39,000
+And then I prepared two practical examples for you.
+
+9
+00:00:39,000 --> 00:00:44,000
+The first example will be simple one and the second one will be more complex.
+
+10
+00:00:44,000 --> 00:00:49,000
+After this lesson you will be able to read and create state machine diagrams.
+
+11
+00:00:49,000 --> 00:00:51,000
+Let's start our lesson.
+
+12
+00:00:52,000 --> 00:00:59,000
+A state machine diagram, also known as a state diagram or state chart diagram, is a type of behavioral
+
+13
+00:00:59,000 --> 00:01:05,000
+diagram used in software engineering and systems modeling to represent the dynamic behavior of a system
+
+14
+00:01:05,000 --> 00:01:06,000
+or an entity.
+
+15
+00:01:07,000 --> 00:01:14,000
+State machine diagrams are particularly useful for modeling the life cycle or state transitions of objects,
+
+16
+00:01:14,000 --> 00:01:16,000
+components, or entire systems.
+
+17
+00:01:17,000 --> 00:01:23,000
+It turns out to be an efficient way of modeling the interactions and collaborations in the external
+
+18
+00:01:23,000 --> 00:01:24,000
+entities and the system.
+
+19
+00:01:25,000 --> 00:01:29,000
+It models event based systems to handle the state of an object.
+
+20
+00:01:29,000 --> 00:01:34,000
+It also defines several distinct states of a component within the system.
+
+21
+00:01:34,000 --> 00:01:38,000
+Each object component has a specific state.
+
+22
+00:01:38,000 --> 00:01:45,000
+State machine diagrams are valuable tools for visualizing and understanding the dynamic behavior of
+
+23
+00:01:45,000 --> 00:01:52,000
+systems, making them a crucial part of system modeling and design in various domains, including software
+
+24
+00:01:52,000 --> 00:01:56,000
+engineering, control systems, and telecommunications.
+
+25
+00:01:56,000 --> 00:02:03,000
+They help in documenting how a system responds to events and how it transitions between different states.
+
+26
+00:02:04,000 --> 00:02:07,000
+There are two key types of state machine diagram.
+
+27
+00:02:08,000 --> 00:02:12,000
+There are behavioral state machine and protocol state machine diagrams.
+
+28
+00:02:12,000 --> 00:02:16,000
+Let's try to understand what is the difference between them.
+
+29
+00:02:16,000 --> 00:02:18,000
+Behavioral state machine.
+
+30
+00:02:18,000 --> 00:02:25,000
+A behavioral state machine primarily focuses on modeling the behavior of an object within the system.
+
+31
+00:02:25,000 --> 00:02:32,000
+It records how an object responds to various events and transitions between different states in response
+
+32
+00:02:32,000 --> 00:02:33,000
+to those events.
+
+33
+00:02:34,000 --> 00:02:40,000
+It can be used to depict the internal behavior and implementation of a specific entity or component
+
+34
+00:02:40,000 --> 00:02:41,000
+in the system.
+
+35
+00:02:41,000 --> 00:02:48,000
+This means that it may detail the methods, functions, and actions performed when transitioning between
+
+36
+00:02:48,000 --> 00:02:48,000
+states.
+
+37
+00:02:49,000 --> 00:02:55,000
+Behavioral state machines are often used to model the behavior of software components or objects.
+
+38
+00:02:55,000 --> 00:03:02,000
+They are especially useful in software engineering to represent the dynamic behavior of classes or instances
+
+39
+00:03:02,000 --> 00:03:04,000
+in an object oriented system.
+
+40
+00:03:04,000 --> 00:03:05,000
+Protocol.
+
+41
+00:03:05,000 --> 00:03:06,000
+State machine.
+
+42
+00:03:06,000 --> 00:03:13,000
+A protocol state machine, on the other hand, is more concerned with capturing the behavior of a communication
+
+43
+00:03:13,000 --> 00:03:18,000
+protocol or a system's interactions with external entities.
+
+44
+00:03:18,000 --> 00:03:26,000
+It is used to represent how the state of a protocol changes in response to events or messages, and
+
+45
+00:03:26,000 --> 00:03:28,000
+how it interacts with other systems.
+
+46
+00:03:29,000 --> 00:03:31,000
+Unlike behavioral state machines.
+
+47
+00:03:31,000 --> 00:03:37,000
+Protocol state machines do not depict the internal implementation of a specific component.
+
+48
+00:03:37,000 --> 00:03:43,000
+They focus on the interactions and state changes at a higher level, without detailing the specific
+
+49
+00:03:43,000 --> 00:03:46,000
+actions taken during the transitions.
+
+50
+00:03:46,000 --> 00:03:52,000
+Protocol state machines are commonly used to model communication protocols, network interactions,
+
+51
+00:03:52,000 --> 00:03:57,000
+and how systems interact with each other in a distributed environment.
+
+52
+00:03:57,000 --> 00:04:03,000
+They help visualize the sequence of message exchanges and state changes during these interactions.
+
+53
+00:04:04,000 --> 00:04:11,000
+In a state machine diagram, various elements are used to represent the state's transitions and behaviors
+
+54
+00:04:11,000 --> 00:04:13,000
+of a system or an object.
+
+55
+00:04:13,000 --> 00:04:19,000
+These elements provide a detailed and comprehensive view of the system's dynamic behavior.
+
+56
+00:04:19,000 --> 00:04:24,000
+Now I would like to review with you key elements of state machine diagram.
+
+57
+00:04:25,000 --> 00:04:26,000
+State.
+
+58
+00:04:26,000 --> 00:04:33,000
+State represents specific condition or situation in the system or object's life cycle.
+
+59
+00:04:33,000 --> 00:04:37,000
+They are the primary building blocks of a state machine diagram.
+
+60
+00:04:38,000 --> 00:04:44,000
+States are typically depicted as rectangles with rounded corners, and they're labeled with a name.
+
+61
+00:04:44,000 --> 00:04:49,000
+The name provides a description of the state in a traffic light system.
+
+62
+00:04:49,000 --> 00:04:52,000
+For example, you might have states like red, yellow, and green.
+
+63
+00:04:53,000 --> 00:04:55,000
+This is a very simplified example.
+
+64
+00:04:55,000 --> 00:04:58,000
+We are going to have another examples later in the lesson.
+
+65
+00:04:59,000 --> 00:05:00,000
+Transition.
+
+66
+00:05:00,000 --> 00:05:04,000
+Transitions defines the movement from one state to another.
+
+67
+00:05:04,000 --> 00:05:11,000
+They specify the conditions or events that trigger the transition and the actions taken during the transition.
+
+68
+00:05:11,000 --> 00:05:14,000
+Transitions are represented by arrows.
+
+69
+00:05:14,000 --> 00:05:15,000
+Connecting states.
+
+70
+00:05:15,000 --> 00:05:20,000
+The arrow may have a label indicating the triggering event or condition.
+
+71
+00:05:20,000 --> 00:05:24,000
+Guards and actions can be associated with transitions.
+
+72
+00:05:24,000 --> 00:05:27,000
+We are going to learn what guards are in a minute.
+
+73
+00:05:28,000 --> 00:05:33,000
+An example of transition may be a transition from the green state to the yellow state.
+
+74
+00:05:33,000 --> 00:05:40,000
+In a traffic light diagram that might be labeled timer expired as a triggering event.
+
+75
+00:05:41,000 --> 00:05:42,000
+Initial state.
+
+76
+00:05:42,000 --> 00:05:48,000
+The initial state marks the starting point of the state machine diagram, indicating where the system
+
+77
+00:05:48,000 --> 00:05:51,000
+or object begins its life cycle.
+
+78
+00:05:51,000 --> 00:05:55,000
+An initial state is represented as a solid black circle.
+
+79
+00:05:55,000 --> 00:06:01,000
+For example, in a document approval process is the initial state could represent draft.
+
+80
+00:06:02,000 --> 00:06:03,000
+Final state.
+
+81
+00:06:03,000 --> 00:06:10,000
+The final state represents the end of a process or a particular life cycle, indicating the completion
+
+82
+00:06:10,000 --> 00:06:12,000
+of a state machine's execution.
+
+83
+00:06:12,000 --> 00:06:19,000
+A final state is depicted as a circle with a border in a purchase order system, the final state might
+
+84
+00:06:19,000 --> 00:06:21,000
+be labeled order complete.
+
+85
+00:06:22,000 --> 00:06:24,000
+Decision point.
+
+86
+00:06:24,000 --> 00:06:30,000
+A decision point is used to represent a point in the state machine diagram, where a decision or choice
+
+87
+00:06:30,000 --> 00:06:32,000
+is made based on a condition or event.
+
+88
+00:06:32,000 --> 00:06:39,000
+The decision point is represented as a diamond shaped element in the diagram, and it is typically labeled
+
+89
+00:06:39,000 --> 00:06:41,000
+with a description of the decision.
+
+90
+00:06:41,000 --> 00:06:47,000
+In a traffic light system, a decision point might be used to determine whether the light should transition
+
+91
+00:06:47,000 --> 00:06:51,000
+from green to yellow based on the condition timer expired.
+
+92
+00:06:52,000 --> 00:06:54,000
+Guards and triggers.
+
+93
+00:06:54,000 --> 00:06:58,000
+Guards and triggers are conditions that must be met for a transition to occur.
+
+94
+00:06:59,000 --> 00:07:06,000
+Guards are Boolean conditions, while triggers are events or signals that initiate a transition.
+
+95
+00:07:06,000 --> 00:07:10,000
+Guards are expressed within square brackets on the transition arrow.
+
+96
+00:07:10,000 --> 00:07:15,000
+While triggers are typically labeled on the transition arrow.
+
+97
+00:07:16,000 --> 00:07:23,000
+A guard on a transition might specify that a door can only be opened when a specific key is inserted.
+
+98
+00:07:24,000 --> 00:07:27,000
+So what is the difference between guards and triggers?
+
+99
+00:07:27,000 --> 00:07:35,000
+One more time guards are used to specify Boolean conditions that must be met for a transition to occur.
+
+100
+00:07:35,000 --> 00:07:42,000
+They are evaluated as true or false, and the transition is taken only when the guard condition is true.
+
+101
+00:07:43,000 --> 00:07:49,000
+Guards are typically expressed within square brackets on the transition arrow, indicating the condition
+
+102
+00:07:49,000 --> 00:07:52,000
+that determines whether the transition is enabled.
+
+103
+00:07:53,000 --> 00:08:02,000
+For example, condition or price is more than 100, and triggers are events or signals that initiate
+
+104
+00:08:02,000 --> 00:08:03,000
+transition.
+
+105
+00:08:03,000 --> 00:08:11,000
+They represent external events or actions that cause the state machine to move from one state to another.
+
+106
+00:08:11,000 --> 00:08:15,000
+Triggers can be based on user interactions or system events.
+
+107
+00:08:16,000 --> 00:08:22,000
+Triggers are typically labeled on the transition arrow, indicating the event or signal that triggers
+
+108
+00:08:22,000 --> 00:08:22,000
+a transition.
+
+109
+00:08:23,000 --> 00:08:25,000
+Usually without square brackets.
+
+110
+00:08:25,000 --> 00:08:28,000
+For example, event or button pressed.
+
+111
+00:08:28,000 --> 00:08:29,000
+And that's it.
+
+112
+00:08:30,000 --> 00:08:37,000
+The main difference between guards and triggers is that guards are condition based and evaluate to true
+
+113
+00:08:37,000 --> 00:08:44,000
+or false, whereas triggers are event based and represents the occurrence of an event or signal that
+
+114
+00:08:44,000 --> 00:08:45,000
+causes a transition.
+
+115
+00:08:46,000 --> 00:08:49,000
+Here is a brief example to illustrate the difference.
+
+116
+00:08:49,000 --> 00:08:51,000
+Let's say you have a traffic light system.
+
+117
+00:08:51,000 --> 00:08:56,000
+You might have a transition from the red state to green with a guard condition.
+
+118
+00:08:56,000 --> 00:08:59,000
+Traffic light timer expired.
+
+119
+00:08:59,000 --> 00:09:04,000
+This means the transition can only occur if the traffic light timer has expired.
+
+120
+00:09:04,000 --> 00:09:06,000
+A condition based guard.
+
+121
+00:09:07,000 --> 00:09:14,000
+You might have a transition from the red state to green triggered by the event pedestrian button pressed.
+
+122
+00:09:14,000 --> 00:09:21,000
+In this case, the transition occurs when someone presses the pedestrian button, which is an event
+
+123
+00:09:21,000 --> 00:09:22,000
+based trigger.
+
+124
+00:09:23,000 --> 00:09:29,000
+Concurrency or shogunal regions in systems with parallel behavior.
+
+125
+00:09:29,000 --> 00:09:34,000
+You can use orthogonal regions to model concurrent states.
+
+126
+00:09:34,000 --> 00:09:38,000
+This indicates that multiple states can be active simultaneously.
+
+127
+00:09:39,000 --> 00:09:46,000
+Our signal regions are depicted using dashed lines dividing the state machine into multiple regions.
+
+128
+00:09:46,000 --> 00:09:53,000
+Each region can contain its own set of states, transitions, and activities, and they execute concurrently.
+
+129
+00:09:53,000 --> 00:10:00,000
+As an example, in a multiplayer game, one orthogonal region might represent player interactions,
+
+130
+00:10:00,000 --> 00:10:04,000
+while another represents the game world simulation.
+
+131
+00:10:05,000 --> 00:10:12,000
+These elements collectively make up UML state machine diagram, providing a comprehensive way to model
+
+132
+00:10:12,000 --> 00:10:16,000
+the dynamic behavior of systems, objects, and processes.
+
+133
+00:10:16,000 --> 00:10:22,000
+They allow for the representation of complex state transitions, actions, and conditions in a clear
+
+134
+00:10:22,000 --> 00:10:24,000
+and organized manner.
+
+135
+00:10:24,000 --> 00:10:27,000
+We already learned what a state is, right?
+
+136
+00:10:27,000 --> 00:10:28,000
+So just to recap.
+
+137
+00:10:28,000 --> 00:10:35,000
+In a state machine diagram, a state represents a specific condition or situation in the life cycle
+
+138
+00:10:35,000 --> 00:10:39,000
+or behavior of a system, object or process.
+
+139
+00:10:39,000 --> 00:10:45,000
+States are fundamental building blocks of a state machine diagram, and they used to describe the different
+
+140
+00:10:45,000 --> 00:10:48,000
+modes of phases that an entity can exist in.
+
+141
+00:10:48,000 --> 00:10:55,000
+Each state defines a set of behaviors, transitions, and actions that occur when the system or object
+
+142
+00:10:55,000 --> 00:10:57,000
+is in that particular condition.
+
+143
+00:10:58,000 --> 00:11:03,000
+In addition to the initial and final state that we have just learned, there are several other types
+
+144
+00:11:03,000 --> 00:11:06,000
+of states that can be used in a state machine diagram.
+
+145
+00:11:07,000 --> 00:11:09,000
+And now we are going to learn them.
+
+146
+00:11:09,000 --> 00:11:10,000
+Simple state.
+
+147
+00:11:11,000 --> 00:11:16,000
+A simple state represents a basic condition or mode that the system or object can be in.
+
+148
+00:11:17,000 --> 00:11:21,000
+It doesn't contain substates or hierarchical structures.
+
+149
+00:11:21,000 --> 00:11:27,000
+Simple states are often used to depict straightforward, non complex conditions in a system.
+
+150
+00:11:28,000 --> 00:11:34,000
+Composite state A composite state is a state that can contain one or more substates.
+
+151
+00:11:34,000 --> 00:11:41,000
+It is used to represent more complex conditions or modes that can be further broken down into smaller,
+
+152
+00:11:41,000 --> 00:11:42,000
+more detailed states.
+
+153
+00:11:42,000 --> 00:11:47,000
+Composite states help in organizing and simplifying the diagram.
+
+154
+00:11:47,000 --> 00:11:54,000
+A composite state groups related states together providing a high level view of system behavior.
+
+155
+00:11:55,000 --> 00:11:59,000
+A composite state is a state that encloses all the sub states.
+
+156
+00:11:59,000 --> 00:12:04,000
+It is represented as a rectangle within a larger state.
+
+157
+00:12:05,000 --> 00:12:12,000
+In a car system, a driving state may be a composite state with sub states like accelerating, cruising,
+
+158
+00:12:12,000 --> 00:12:13,000
+and braking.
+
+159
+00:12:14,000 --> 00:12:16,000
+Submachine state.
+
+160
+00:12:16,000 --> 00:12:23,000
+A submachine state is a state that embeds a separate state machine diagram within the current state
+
+161
+00:12:23,000 --> 00:12:24,000
+machine diagram.
+
+162
+00:12:24,000 --> 00:12:31,000
+It allows you to encapsulate a complex or detailed behavior in a separate diagram, and then reference
+
+163
+00:12:31,000 --> 00:12:36,000
+it in the main state machine, promoting modularity and reusability.
+
+164
+00:12:36,000 --> 00:12:37,000
+History.
+
+165
+00:12:37,000 --> 00:12:38,000
+State.
+
+166
+00:12:38,000 --> 00:12:45,000
+A history state is used to remember the most recent sub state that was active within a composite state
+
+167
+00:12:45,000 --> 00:12:47,000
+before it was exited.
+
+168
+00:12:47,000 --> 00:12:53,000
+This is useful for returning to a specific sub state when re-entering the composite state.
+
+169
+00:12:54,000 --> 00:12:59,000
+A history state is represented as a small circle with an H inside.
+
+170
+00:12:59,000 --> 00:13:03,000
+Let's reuse the example in the user login process.
+
+171
+00:13:03,000 --> 00:13:10,000
+A history state might remember whether the user was the logged in or logged out state before.
+
+172
+00:13:11,000 --> 00:13:17,000
+In case you would have any questions, please do not hesitate to ask your questions below the video
+
+173
+00:13:17,000 --> 00:13:22,000
+and I will be happy to answer to help you understand the state diagram better.
+
+174
+00:13:22,000 --> 00:13:24,000
+I want to review with you real life example.
+
+175
+00:13:25,000 --> 00:13:31,000
+I believe it would be easier to understand when you will see example that would be familiar to you.
+
+176
+00:13:31,000 --> 00:13:37,000
+Let's review example for online shopping state machine diagram.
+
+177
+00:13:37,000 --> 00:13:43,000
+In our example, we are going to model the behavior of a user interacting with an online shop, including
+
+178
+00:13:43,000 --> 00:13:49,000
+the various states and transitions as they browse products, add items to the cart, and complete a
+
+179
+00:13:49,000 --> 00:13:50,000
+purchase.
+
+180
+00:13:51,000 --> 00:13:57,000
+The state machine diagram should capture the primary states and transitions involved in this process.
+
+181
+00:13:58,000 --> 00:14:00,000
+We're going to have the following states.
+
+182
+00:14:00,000 --> 00:14:06,000
+Home represents the home page where users begin browse products.
+
+183
+00:14:06,000 --> 00:14:10,000
+Represents the page where users can view and search for products.
+
+184
+00:14:11,000 --> 00:14:15,000
+This can be product listing page or other kind of pages.
+
+185
+00:14:16,000 --> 00:14:17,000
+View product details.
+
+186
+00:14:18,000 --> 00:14:23,000
+Represents the page where users can see detailed information about a specific product.
+
+187
+00:14:24,000 --> 00:14:32,000
+Shopping cart represents the user's shopping cart where they can view and manage the items they have
+
+188
+00:14:32,000 --> 00:14:32,000
+added.
+
+189
+00:14:33,000 --> 00:14:39,000
+Out represents the checkout process where users provide shipping and payment details.
+
+190
+00:14:40,000 --> 00:14:46,000
+Order confirmation represents the final page after a successful purchase.
+
+191
+00:14:46,000 --> 00:14:52,000
+End represents the end of users interaction within the system.
+
+192
+00:14:52,000 --> 00:14:55,000
+We are going to have the following transitions.
+
+193
+00:14:55,000 --> 00:15:00,000
+Transition from home to browse products when the user selects browse products.
+
+194
+00:15:01,000 --> 00:15:05,000
+Transition from browse products to view product details when the user selects a product.
+
+195
+00:15:05,000 --> 00:15:07,000
+For more information.
+
+196
+00:15:07,000 --> 00:15:13,000
+Transition from view product details to browse products when the user decides to get back to products.
+
+197
+00:15:13,000 --> 00:15:18,000
+Browsing in case the product removed wasn't added to a cart.
+
+198
+00:15:18,000 --> 00:15:24,000
+Transition from browse products to shopping cart when the user adds an item to their cart.
+
+199
+00:15:24,000 --> 00:15:30,000
+User can add products to cart from the product listing page, for example, transition from shopping
+
+200
+00:15:30,000 --> 00:15:36,000
+cart to browse products in case user wants to review more products and add more products into shopping
+
+201
+00:15:36,000 --> 00:15:36,000
+cart.
+
+202
+00:15:36,000 --> 00:15:42,000
+Transition from view product details to shopping cart when the user adds the product to their cart.
+
+203
+00:15:43,000 --> 00:15:49,000
+This transition describes the case when the user opened product details and decided to add products
+
+204
+00:15:49,000 --> 00:15:50,000
+from the product details view.
+
+205
+00:15:51,000 --> 00:15:56,000
+Transition from shopping cart to checkout when the user initiates the checkout process.
+
+206
+00:15:57,000 --> 00:15:59,000
+Transition from checkout to browse products.
+
+207
+00:15:59,000 --> 00:16:05,000
+When the user decided to add few more products to the cart before proceeding to checkout.
+
+208
+00:16:06,000 --> 00:16:10,000
+Transition from checkout to shopping cart when the user wants to adjust.
+
+209
+00:16:10,000 --> 00:16:18,000
+Shopping cart, for example, is to remove some items from the cart or to change amount of items selected.
+
+210
+00:16:18,000 --> 00:16:23,000
+Transition from checkout to order confirmation when the purchase is successful.
+
+211
+00:16:23,000 --> 00:16:28,000
+Transition from order confirmation back to home to start a new shopping session.
+
+212
+00:16:28,000 --> 00:16:33,000
+Transition from order confirmation to end when users session is over.
+
+213
+00:16:33,000 --> 00:16:35,000
+Initial state.
+
+214
+00:16:35,000 --> 00:16:40,000
+Session start represents the initiation of the user's shopping session.
+
+215
+00:16:40,000 --> 00:16:47,000
+Final state end represents the successful completion of the user's interaction with the system.
+
+216
+00:16:48,000 --> 00:16:51,000
+Okay, so we learned enough theory.
+
+217
+00:16:51,000 --> 00:16:57,000
+We reviewed the examples that we are going to implement, and now it is time to implement this diagram.
+
+218
+00:16:57,000 --> 00:17:03,000
+We are ready to proceed with the real life example and review state machine diagram on practice.
+
+219
+00:17:03,000 --> 00:17:08,000
+I described our example in text and here you can see it on the diagram.
+
+220
+00:17:08,000 --> 00:17:14,000
+I prepared this diagram before the lesson in order to not waste your time during the video.
+
+221
+00:17:14,000 --> 00:17:17,000
+As always, you can find the diagram in attachments to the video.
+
+222
+00:17:18,000 --> 00:17:22,000
+You can copy it and play with it in order to understand the diagram better.
+
+223
+00:17:23,000 --> 00:17:29,000
+Regarding the elements that you can see on the diagram, I reused elements from State Machine template
+
+224
+00:17:29,000 --> 00:17:34,000
+that is available under the group when you create new diagram.
+
+225
+00:17:34,000 --> 00:17:38,000
+So like in all previous lessons I just copy and paste elements.
+
+226
+00:17:38,000 --> 00:17:45,000
+If I need to duplicate some element or just hover mouse over element and click on arrow and create new
+
+227
+00:17:45,000 --> 00:17:46,000
+element.
+
+228
+00:17:47,000 --> 00:17:52,000
+All principles of the interaction with the elements of the diagram, the same as we learned in previous
+
+229
+00:17:52,000 --> 00:17:53,000
+lessons.
+
+230
+00:17:53,000 --> 00:17:56,000
+That's why I wouldn't stop too much on operations.
+
+231
+00:17:57,000 --> 00:18:01,000
+I did not very complex example on purpose.
+
+232
+00:18:01,000 --> 00:18:03,000
+I want you to understand mechanics.
+
+233
+00:18:03,000 --> 00:18:04,000
+JUStrillionEMEMBER.
+
+234
+00:18:04,000 --> 00:18:10,000
+How much I wrote to describe possible states and transitions in our system, and how nice it looks at
+
+235
+00:18:10,000 --> 00:18:13,000
+one place here on the diagram.
+
+236
+00:18:13,000 --> 00:18:18,000
+Instead of thousands words, you just document states and transitions.
+
+237
+00:18:18,000 --> 00:18:21,000
+Put this into your knowledge base and that's it.
+
+238
+00:18:21,000 --> 00:18:28,000
+Now each team member can open state machine diagram and understand what is happening inside the system.
+
+239
+00:18:28,000 --> 00:18:35,000
+We can see that the session may be initiated in our online shop and that we start from the home page.
+
+240
+00:18:35,000 --> 00:18:40,000
+Then we can browse products, view product details and go to Shopping cart.
+
+241
+00:18:41,000 --> 00:18:43,000
+Pay attention to arrows here.
+
+242
+00:18:43,000 --> 00:18:45,000
+These are our transitions.
+
+243
+00:18:45,000 --> 00:18:52,000
+It is enough to have a brief look at arrows between these three states, and you can understand from
+
+244
+00:18:52,000 --> 00:18:54,000
+where to where you can navigate.
+
+245
+00:18:55,000 --> 00:19:01,000
+For example, you can add products and navigate to the shopping cart from the browse product state or
+
+246
+00:19:01,000 --> 00:19:03,000
+from view product details state.
+
+247
+00:19:04,000 --> 00:19:05,000
+It doesn't matter.
+
+248
+00:19:05,000 --> 00:19:11,000
+You can navigate back to browse product state from the shopping cart and from the view product details
+
+249
+00:19:11,000 --> 00:19:16,000
+state, and you can navigate to the checkout only from the shopping cart state.
+
+250
+00:19:16,000 --> 00:19:22,000
+Even if you want to add new products during checkout, you can navigate back to Browse Product state.
+
+251
+00:19:23,000 --> 00:19:28,000
+Or in case you want to adjust the shopping cart, change the amount of products, or remove some products
+
+252
+00:19:28,000 --> 00:19:29,000
+from the cart.
+
+253
+00:19:29,000 --> 00:19:33,000
+You can navigate back to the shopping cart from the checkout.
+
+254
+00:19:33,000 --> 00:19:40,000
+After checkout, you are moved into order confirmation state and after that you have an option is to
+
+255
+00:19:40,000 --> 00:19:47,000
+navigate back to the home page and start all the process from scratch, or just end the session.
+
+256
+00:19:47,000 --> 00:19:50,000
+Do you see the power of state machine diagram?
+
+257
+00:19:50,000 --> 00:19:56,000
+How easily and clearly it can describe different states and transitions between states.
+
+258
+00:19:56,000 --> 00:20:02,000
+So now you know how to use state machine diagram and you can use it when it will be needed.
+
+259
+00:20:02,000 --> 00:20:07,000
+Now let's review a little bit more complex example with more elements.
+
+260
+00:20:07,000 --> 00:20:12,000
+I want you to press video on pause and review this example by yourself.
+
+261
+00:20:12,000 --> 00:20:17,000
+Let's imagine that you joined new project and you found this diagram in the knowledge base.
+
+262
+00:20:18,000 --> 00:20:20,000
+Would you be able to read it?
+
+263
+00:20:20,000 --> 00:20:24,000
+I believe that after this lesson you should understand this diagram.
+
+264
+00:20:24,000 --> 00:20:31,000
+In case you can't understand something, just post a question below the video and I will answer it.
+
+265
+00:20:31,000 --> 00:20:37,000
+Once you finished the review, you can press play button again and we will continue.
+
+266
+00:20:37,000 --> 00:20:44,000
+As you can see, this scenario considers more cases like for example, different branches in case user
+
+267
+00:20:44,000 --> 00:20:48,000
+visits the online shop the first time already has an account.
+
+268
+00:20:48,000 --> 00:20:55,000
+Also, there is scenario to cover case in case you search for product, but unfortunately you can't
+
+269
+00:20:55,000 --> 00:20:56,000
+find it.
+
+270
+00:20:56,000 --> 00:21:02,000
+There are also scenarios with review of shopping cart, adjusting shopping cart by removing items,
+
+271
+00:21:02,000 --> 00:21:04,000
+checkout and final state.
+
+272
+00:21:04,000 --> 00:21:09,000
+As you can see, this example is a little bit more complex because it covers different cases.
+
+273
+00:21:10,000 --> 00:21:15,000
+I believe that reviewing more examples will help you to understand state machine diagram.
+
+274
+00:21:16,000 --> 00:21:19,000
+And we already reviewed two examples Learn Siri.
+
+275
+00:21:20,000 --> 00:21:24,000
+I believe we are ready to make conclusions about state machine diagram.
+
+276
+00:21:24,000 --> 00:21:30,000
+A state machine diagram is a powerful visual representation used in software engineering and systems
+
+277
+00:21:30,000 --> 00:21:36,000
+design to model the behavior of an object, system, or process.
+
+278
+00:21:36,000 --> 00:21:44,000
+It consists of states, transitions, and events, offering a clear and intuitive way to understand
+
+279
+00:21:44,000 --> 00:21:48,000
+how a system responds to different inputs and conditions.
+
+280
+00:21:48,000 --> 00:21:55,000
+State machine diagrams are particularly valuable in applications where an object or system can exist
+
+281
+00:21:55,000 --> 00:22:01,000
+in different states, and must transition between them based on specific events or conditions.
+
+282
+00:22:01,000 --> 00:22:08,000
+They help designers and developers create well structured and easily maintainable software by clearly
+
+283
+00:22:08,000 --> 00:22:13,000
+defining the possible states and allowable transitions within a system.
+
+284
+00:22:14,000 --> 00:22:20,000
+The primary advantage of using state machine diagrams is the ability to simplify complex systems by
+
+285
+00:22:20,000 --> 00:22:24,000
+breaking them down into manageable states and transitions.
+
+286
+00:22:24,000 --> 00:22:31,000
+This visual representation aids in both the analysis and development phases of a project, ensuring
+
+287
+00:22:31,000 --> 00:22:38,000
+that the behavior of a system is well understood and that potential issues are identified early.
+
+288
+00:22:39,000 --> 00:22:43,000
+State machine diagrams are essential tools in software development.
+
+289
+00:22:43,000 --> 00:22:50,000
+Real time systems and even hardware design contribute to more efficient, reliable and maintainable
+
+290
+00:22:50,000 --> 00:22:56,000
+systems through the clear depiction of state dependent behavior and transitions.
+
+291
+00:22:56,000 --> 00:22:59,000
+That's all what I wanted to review with you today.
+
+292
+00:22:59,000 --> 00:23:02,000
+Let's recap what we have learned in this lesson.
+
+293
+00:23:02,000 --> 00:23:05,000
+We learned what a state machine diagram is.
+
+294
+00:23:05,000 --> 00:23:09,000
+I explained you different types of a state machine diagrams.
+
+295
+00:23:09,000 --> 00:23:14,000
+We talked about behavioral state machine and protocol state machine diagrams.
+
+296
+00:23:15,000 --> 00:23:22,000
+We learned elements of state machine diagram including state transition guard triggers and others.
+
+297
+00:23:23,000 --> 00:23:25,000
+Together we reviewed different types of state.
+
+298
+00:23:26,000 --> 00:23:28,000
+And we reviewed two practical examples.
+
+299
+00:23:28,000 --> 00:23:33,000
+The first example was a simple one and the second one was more complex.
+
+300
+00:23:34,000 --> 00:23:36,000
+That's all for this lesson.
+
+301
+00:23:36,000 --> 00:23:37,000
+Thanks a lot for your attention.
+
+302
+00:23:37,000 --> 00:23:40,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/004 State-Machine-Diagram-Online-Shop.url b/105 - Behavioral Diagrams/004 State-Machine-Diagram-Online-Shop.url
new file mode 100644
index 0000000000000000000000000000000000000000..f2d014df071de4fb4c7ef64ad14aa56360114f8b
--- /dev/null
+++ b/105 - Behavioral Diagrams/004 State-Machine-Diagram-Online-Shop.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1ALoKremFTcRk_6AWIQrH6hId2P2-WBud/view?usp=sharing
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/005 Communication Diagram (formerly known as Collaboration Diagram)_en.srt b/105 - Behavioral Diagrams/005 Communication Diagram (formerly known as Collaboration Diagram)_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..a62b40cd4540b90d9a4de4ab393fe94754480ac3
--- /dev/null
+++ b/105 - Behavioral Diagrams/005 Communication Diagram (formerly known as Collaboration Diagram)_en.srt
@@ -0,0 +1,968 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello dear students.
+
+2
+00:00:06,000 --> 00:00:13,000
+In this lesson we are going to learn communication diagram formally known as Collaboration Diagram.
+
+3
+00:00:13,000 --> 00:00:17,000
+We are going to start the lesson from the definition of the communication diagram.
+
+4
+00:00:18,000 --> 00:00:25,000
+Then we will talk about the difference between the terminology of collaboration and communication diagrams.
+
+5
+00:00:26,000 --> 00:00:31,000
+There are a lot of similarities between the communication and sequence diagram.
+
+6
+00:00:31,000 --> 00:00:37,000
+So in order to understand communication diagram better, I want to explain you how it is different from
+
+7
+00:00:37,000 --> 00:00:39,000
+the sequence diagram.
+
+8
+00:00:39,000 --> 00:00:43,000
+Then we will learn elements of communication diagram.
+
+9
+00:00:43,000 --> 00:00:48,000
+Namely we will learn objects, links, actors and messages.
+
+10
+00:00:48,000 --> 00:00:52,000
+And at the end of the lesson we are going to review real life example.
+
+11
+00:00:52,000 --> 00:00:56,000
+We will create communication diagram for online shop.
+
+12
+00:00:56,000 --> 00:00:58,000
+Let's start our lesson.
+
+13
+00:00:58,000 --> 00:01:06,000
+A communication diagram is one of the behavioral diagrams used in the Unified Modeling Language to visualize
+
+14
+00:01:06,000 --> 00:01:12,000
+and model the interactions and relationships between objects or elements within a system.
+
+15
+00:01:12,000 --> 00:01:18,000
+Communication diagrams are valuable for visualizing the dynamic behavior of a system, understanding
+
+16
+00:01:18,000 --> 00:01:25,000
+how objects collaborate to accomplish specific tasks, and identifying potential issues or bottlenecks
+
+17
+00:01:25,000 --> 00:01:27,000
+in the communication flow.
+
+18
+00:01:28,000 --> 00:01:34,000
+They are particularly useful for modeling real time systems, complex interactions, and scenarios where
+
+19
+00:01:34,000 --> 00:01:38,000
+the sequence of messages and interactions is critical.
+
+20
+00:01:38,000 --> 00:01:46,000
+So communication diagrams are powerful tool with a framework for capturing and documenting the dynamic
+
+21
+00:01:46,000 --> 00:01:53,000
+aspects of a system, making them a valuable part of the software development process, especially during
+
+22
+00:01:53,000 --> 00:01:55,000
+the analysis and design phases.
+
+23
+00:01:55,000 --> 00:02:01,000
+Sometimes you may find in internet information about collaboration diagram.
+
+24
+00:02:01,000 --> 00:02:06,000
+So what is the difference between collaboration and communication diagrams?
+
+25
+00:02:06,000 --> 00:02:09,000
+Essentially these are the same things.
+
+26
+00:02:10,000 --> 00:02:17,000
+Communication diagrams, sometimes referred to as collaboration diagrams, focus on illustrating the
+
+27
+00:02:17,000 --> 00:02:24,000
+dynamic aspects of a system by showing how objects or components collaborate to achieve a specific task
+
+28
+00:02:24,000 --> 00:02:26,000
+or scenario.
+
+29
+00:02:26,000 --> 00:02:33,000
+Collaboration diagram is an older term for what is now commonly referred to as a communication diagram
+
+30
+00:02:33,000 --> 00:02:34,000
+in UML.
+
+31
+00:02:35,000 --> 00:02:42,000
+The terminology in UML has evolved over time, and the term communication diagram replaced collaboration
+
+32
+00:02:42,000 --> 00:02:48,000
+diagram to more accurately describe the purpose and content of the diagram.
+
+33
+00:02:48,000 --> 00:02:56,000
+The change in terminology reflects a shift in emphasis from the structural aspects of modeling, as
+
+34
+00:02:56,000 --> 00:03:04,000
+implied by collaboration to the dynamic and behavioral aspects of modeling, specifically, focusing
+
+35
+00:03:04,000 --> 00:03:11,000
+on the interactions and communication between objects or participants in the system.
+
+36
+00:03:11,000 --> 00:03:19,000
+While the underlying concepts remain largely the same, the term communication diagram better conveys
+
+37
+00:03:19,000 --> 00:03:26,000
+the diagrams primary purpose, which is to depict the flow of messages and interactions between objects
+
+38
+00:03:26,000 --> 00:03:28,000
+during a particular scenario.
+
+39
+00:03:28,000 --> 00:03:34,000
+I believe that based on the definition of communication diagram, you may have a question what is the
+
+40
+00:03:34,000 --> 00:03:37,000
+difference between communication and sequence diagrams?
+
+41
+00:03:37,000 --> 00:03:42,000
+And both of them represent relationship between objects in a system.
+
+42
+00:03:42,000 --> 00:03:49,000
+Let's try to learn what communication diagram is by comparing it with the sequence diagram.
+
+43
+00:03:49,000 --> 00:03:57,000
+As already said, communication diagram and sequence diagram are both types of UML diagrams used to
+
+44
+00:03:57,000 --> 00:04:03,000
+model the interactions and relationships between objects or participants in a system.
+
+45
+00:04:03,000 --> 00:04:09,000
+However, they have different emphases and graphical representations.
+
+46
+00:04:10,000 --> 00:04:11,000
+Focus.
+
+47
+00:04:11,000 --> 00:04:18,000
+Communication diagrams emphasize the interactions and communication between objects in a system, focusing
+
+48
+00:04:18,000 --> 00:04:25,000
+on the dynamic aspects of how objects collaborate to achieve a specific task or scenario.
+
+49
+00:04:25,000 --> 00:04:31,000
+They are particularly useful for showing the sequence of messages and the timing of interactions between
+
+50
+00:04:31,000 --> 00:04:32,000
+objects.
+
+51
+00:04:32,000 --> 00:04:40,000
+On the other hand, sequence diagram emphasizes the chronological sequence of interactions between objects,
+
+52
+00:04:40,000 --> 00:04:45,000
+highlighting the order in which messages are sent and received.
+
+53
+00:04:45,000 --> 00:04:52,000
+They provide a more detailed view of the interactions and can depict conditions, loops, and branching
+
+54
+00:04:52,000 --> 00:04:54,000
+in the sequence of messages.
+
+55
+00:04:55,000 --> 00:04:58,000
+Layout and presentation and communication diagrams.
+
+56
+00:04:58,000 --> 00:05:06,000
+Objects are typically placed horizontally across the diagram, and messages between them are represented
+
+57
+00:05:06,000 --> 00:05:08,000
+with arrows connecting the objects.
+
+58
+00:05:09,000 --> 00:05:15,000
+In sequence diagrams, objects are represented as vertical lifelines, and the messages are shown as
+
+59
+00:05:15,000 --> 00:05:22,000
+horizontal arrows between the lifelines, with a clear time axis running from top to bottom.
+
+60
+00:05:22,000 --> 00:05:27,000
+This makes it easier to visualize the temporal ordering of messages.
+
+61
+00:05:27,000 --> 00:05:29,000
+Complexity.
+
+62
+00:05:29,000 --> 00:05:34,000
+Communication diagrams tend to be less detailed than sequence diagrams.
+
+63
+00:05:34,000 --> 00:05:41,000
+They are better suited for showing high level interaction patterns and the flow of messages in a straightforward
+
+64
+00:05:41,000 --> 00:05:41,000
+manner.
+
+65
+00:05:42,000 --> 00:05:49,000
+Sequence diagram are capable of depicting complex scenarios and capturing more sophisticated details
+
+66
+00:05:49,000 --> 00:05:56,000
+of interactions, making them suitable for modelling scenarios with branching, conditional behaviour,
+
+67
+00:05:56,000 --> 00:05:59,000
+loops and alternative paths.
+
+68
+00:05:59,000 --> 00:06:00,000
+Usage.
+
+69
+00:06:00,000 --> 00:06:06,000
+Communication diagrams are often used for high level system understanding, illustrating the dynamic
+
+70
+00:06:06,000 --> 00:06:09,000
+collaboration between objects in a simplified way.
+
+71
+00:06:10,000 --> 00:06:14,000
+They are also helpful for emphasizing communication patterns.
+
+72
+00:06:14,000 --> 00:06:21,000
+Sequence diagrams are commonly used for detailed modeling of specific scenarios, requirements, and
+
+73
+00:06:21,000 --> 00:06:22,000
+use cases.
+
+74
+00:06:22,000 --> 00:06:28,000
+They're valuable for understanding and specifying the exact sequence of events during interactions.
+
+75
+00:06:28,000 --> 00:06:36,000
+So as you can see, collaboration diagrams and sequence diagrams serve different purposes within the
+
+76
+00:06:36,000 --> 00:06:37,000
+notation.
+
+77
+00:06:37,000 --> 00:06:44,000
+Collaboration diagrams are better for showing high level interaction patterns and emphasizing communication
+
+78
+00:06:44,000 --> 00:06:51,000
+between objects, while sequence diagrams are more suitable for detailing the chronological order of
+
+79
+00:06:51,000 --> 00:06:54,000
+messages, especially in complex scenarios.
+
+80
+00:06:54,000 --> 00:07:01,000
+The choice between them depends on the level of detail and focus you require in your modeling.
+
+81
+00:07:02,000 --> 00:07:08,000
+Let's learn key elements of communication diagram and understand what does it consist of?
+
+82
+00:07:09,000 --> 00:07:11,000
+Let's review them one by one.
+
+83
+00:07:12,000 --> 00:07:16,000
+Objects or like they're also called participants.
+
+84
+00:07:17,000 --> 00:07:24,000
+Objects or participants are represented as rectangles with the object's name written inside the rectangle.
+
+85
+00:07:25,000 --> 00:07:31,000
+Objects represent various elements within the system, which could be instances of classes, components,
+
+86
+00:07:31,000 --> 00:07:35,000
+or other entities that play a role in the interaction.
+
+87
+00:07:36,000 --> 00:07:37,000
+Links.
+
+88
+00:07:37,000 --> 00:07:44,000
+The link is an instance of association which associates the objects and actors.
+
+89
+00:07:44,000 --> 00:07:51,000
+It serves as a representation of the relationship between objects through which messages are exchanged,
+
+90
+00:07:51,000 --> 00:07:54,000
+and is denoted by a solid line.
+
+91
+00:07:54,000 --> 00:08:01,000
+The link helps an object to connect with or navigate to another object, such that the message flows
+
+92
+00:08:01,000 --> 00:08:03,000
+are attached to links.
+
+93
+00:08:04,000 --> 00:08:05,000
+Actor.
+
+94
+00:08:05,000 --> 00:08:06,000
+An email.
+
+95
+00:08:06,000 --> 00:08:07,000
+Communication diagrams.
+
+96
+00:08:07,000 --> 00:08:14,000
+The term actor is often used to represent a participant or entity that interacts with the system.
+
+97
+00:08:14,000 --> 00:08:23,000
+An actor typically denotes an external entity, such as a user or another system that initiates communication
+
+98
+00:08:23,000 --> 00:08:25,000
+with the system being modeled.
+
+99
+00:08:25,000 --> 00:08:30,000
+Actors are not part of the system itself, but interact with it.
+
+100
+00:08:31,000 --> 00:08:32,000
+Messages.
+
+101
+00:08:32,000 --> 00:08:36,000
+Messages are represented by arrows on the diagram.
+
+102
+00:08:36,000 --> 00:08:44,000
+An arrow points from the sender to the receiver, with a label indicating the message name, and optionally
+
+103
+00:08:44,000 --> 00:08:46,000
+additional information.
+
+104
+00:08:46,000 --> 00:08:50,000
+Messages depict the communication or interaction between objects.
+
+105
+00:08:51,000 --> 00:08:58,000
+Self message A self message is a message where the sender and receiver are the same object.
+
+106
+00:08:58,000 --> 00:09:02,000
+It indicates that an object is sending a message to itself.
+
+107
+00:09:02,000 --> 00:09:09,000
+Self messages are used to represent an object's internal actions or self invoked behaviors.
+
+108
+00:09:09,000 --> 00:09:11,000
+In a communication diagram.
+
+109
+00:09:11,000 --> 00:09:18,000
+The primary focus is on illustrating the dynamic aspects of how objects interact, collaborate, and
+
+110
+00:09:18,000 --> 00:09:23,000
+communicate to achieve specific tasks or scenarios within the system.
+
+111
+00:09:23,000 --> 00:09:30,000
+The notation used for these elements helps to visually represent the flow of messages and the timing
+
+112
+00:09:30,000 --> 00:09:32,000
+of interactions between objects.
+
+113
+00:09:32,000 --> 00:09:38,000
+And as usual, we're going to have a practical example in order to understand communication diagram
+
+114
+00:09:38,000 --> 00:09:38,000
+better.
+
+115
+00:09:39,000 --> 00:09:41,000
+Let's review example first.
+
+116
+00:09:41,000 --> 00:09:43,000
+And then I will start screen sharing.
+
+117
+00:09:43,000 --> 00:09:47,000
+And we are going to see how example is implemented.
+
+118
+00:09:47,000 --> 00:09:51,000
+I want to demo communication diagram on the example of online shop.
+
+119
+00:09:52,000 --> 00:09:58,000
+Examples of online shop are usually straightforward and clear because everyone knows how online shop
+
+120
+00:09:58,000 --> 00:10:01,000
+works and it is easier to understand.
+
+121
+00:10:02,000 --> 00:10:04,000
+We're going to have the following objects.
+
+122
+00:10:04,000 --> 00:10:06,000
+Homepage.
+
+123
+00:10:06,000 --> 00:10:06,000
+Product.
+
+124
+00:10:06,000 --> 00:10:07,000
+Inventory.
+
+125
+00:10:07,000 --> 00:10:08,000
+Product.
+
+126
+00:10:08,000 --> 00:10:10,000
+Shopping cart.
+
+127
+00:10:10,000 --> 00:10:11,000
+Order.
+
+128
+00:10:11,000 --> 00:10:12,000
+User order.
+
+129
+00:10:12,000 --> 00:10:13,000
+History.
+
+130
+00:10:13,000 --> 00:10:14,000
+Order.
+
+131
+00:10:14,000 --> 00:10:15,000
+Confirmation.
+
+132
+00:10:15,000 --> 00:10:15,000
+Email.
+
+133
+00:10:16,000 --> 00:10:22,000
+We're going to have one external actor who will be our customer regarding messages.
+
+134
+00:10:22,000 --> 00:10:28,000
+This is just an example, and you can come up with any messages you wish, depending on the level of
+
+135
+00:10:28,000 --> 00:10:31,000
+details you want to achieve on the communication diagram.
+
+136
+00:10:32,000 --> 00:10:36,000
+For the sake of today's example, I recommend the following messages.
+
+137
+00:10:37,000 --> 00:10:45,000
+Get home page, search view product, add to cart checkout record order.
+
+138
+00:10:46,000 --> 00:10:47,000
+Send email.
+
+139
+00:10:48,000 --> 00:10:49,000
+Edit cart.
+
+140
+00:10:49,000 --> 00:10:50,000
+Remove from cart.
+
+141
+00:10:51,000 --> 00:10:53,000
+Back to search.
+
+142
+00:10:53,000 --> 00:10:54,000
+Back to store.
+
+143
+00:10:55,000 --> 00:10:58,000
+Pay attention to the number of messages.
+
+144
+00:10:58,000 --> 00:11:03,000
+As you can see, each message is numbered according to its sequence of invocation.
+
+145
+00:11:04,000 --> 00:11:11,000
+The first message in a communication diagram is always numbered one, the second is two, and so on.
+
+146
+00:11:11,000 --> 00:11:19,000
+You can indicate that a message is nested under a parent message, by adding a decimal point and incremental
+
+147
+00:11:19,000 --> 00:11:22,000
+digits to parent's sequence number.
+
+148
+00:11:23,000 --> 00:11:29,000
+Also, pay attention to message 1.6 A and 1.6 B.
+
+149
+00:11:29,000 --> 00:11:35,000
+This specific numbering tells us that these two communications happen in parallel.
+
+150
+00:11:35,000 --> 00:11:43,000
+So after successful checkout, we create an order and redirect request to user order history and at
+
+151
+00:11:43,000 --> 00:11:48,000
+the same time, in the separate thread of execution, we send confirmation email.
+
+152
+00:11:48,000 --> 00:11:49,000
+Is it clear now?
+
+153
+00:11:50,000 --> 00:11:56,000
+Our task would be to build links between objects and describe messages between sender and receiver to
+
+154
+00:11:56,000 --> 00:11:58,000
+describe purchase flow.
+
+155
+00:11:59,000 --> 00:12:05,000
+This would be a great example because we had similar example with state machine diagram, and during
+
+156
+00:12:05,000 --> 00:12:10,000
+the implementation you will have opportunity to compare different types of diagrams.
+
+157
+00:12:10,000 --> 00:12:15,000
+In case you have any questions about example or about communication diagram, before we jump to the
+
+158
+00:12:15,000 --> 00:12:22,000
+practical exercise, please do not hesitate to ask your questions below the video and I will be happy
+
+159
+00:12:22,000 --> 00:12:23,000
+to answer.
+
+160
+00:12:24,000 --> 00:12:29,000
+You can spend some time and try to create diagram by yourself using description.
+
+161
+00:12:29,000 --> 00:12:31,000
+This would be a good exercise.
+
+162
+00:12:31,000 --> 00:12:39,000
+You would spend some time thinking about the implementation and once you try to implement the diagram
+
+163
+00:12:39,000 --> 00:12:45,000
+by yourself, you can continue watching the video and take a look at my version of the diagram.
+
+164
+00:12:46,000 --> 00:12:51,000
+The first thing that I would like to mention is that I didn't find suitable template for communication
+
+165
+00:12:51,000 --> 00:12:52,000
+diagram.
+
+166
+00:12:53,000 --> 00:12:58,000
+That's why I created it from scratch in the tool that is called diagrams dot net.
+
+167
+00:12:58,000 --> 00:13:05,000
+You can just create an empty diagram, and then you can use elements from the icons library and add
+
+168
+00:13:05,000 --> 00:13:06,000
+them on the diagram.
+
+169
+00:13:07,000 --> 00:13:11,000
+So as you can see, I added all objects that we talked about.
+
+170
+00:13:12,000 --> 00:13:19,000
+I connected all of them with solid lines, and I depicted masses to show how objects communicate with
+
+171
+00:13:19,000 --> 00:13:20,000
+each other.
+
+172
+00:13:20,000 --> 00:13:26,000
+Here you can see our actor, our customer who is navigated to the home page of online shop.
+
+173
+00:13:27,000 --> 00:13:35,000
+They can search for products in product inventory and in case they liked something, they can view product
+
+174
+00:13:35,000 --> 00:13:37,000
+on product details page.
+
+175
+00:13:37,000 --> 00:13:42,000
+Product can be added to the cart having products in cart.
+
+176
+00:13:42,000 --> 00:13:47,000
+Customer can proceed to check out and in case checkout was successful.
+
+177
+00:13:47,000 --> 00:13:54,000
+Information about order is recorded to the database and customer is redirected to the user or the history
+
+178
+00:13:54,000 --> 00:13:56,000
+and in parallel.
+
+179
+00:13:56,000 --> 00:14:04,000
+Customer receives confirmation via email and in case customer changed mind, they can edit cart for
+
+180
+00:14:04,000 --> 00:14:09,000
+example, remove items from cart and in case product is removed from cart.
+
+181
+00:14:09,000 --> 00:14:16,000
+Customer can be navigated to the product to select different size of the t shirt or select different
+
+182
+00:14:16,000 --> 00:14:18,000
+color of the product.
+
+183
+00:14:18,000 --> 00:14:24,000
+And in case customer decided to find completely different thing, they can be navigated to product inventory,
+
+184
+00:14:24,000 --> 00:14:30,000
+to product search and be back to the home page of online shop or simply leave it.
+
+185
+00:14:31,000 --> 00:14:39,000
+I believe that you can also note that objects participate in a collaboration come in two flavors supplier
+
+186
+00:14:39,000 --> 00:14:40,000
+and client.
+
+187
+00:14:40,000 --> 00:14:47,000
+Supplier objects are the objects that supplies a message that is being called and therefore receives
+
+188
+00:14:47,000 --> 00:14:48,000
+a message.
+
+189
+00:14:48,000 --> 00:14:55,000
+Client objects call methods on supplier objects and therefore send messages.
+
+190
+00:14:55,000 --> 00:15:00,000
+And as you can see, objects on the diagram are changing roles.
+
+191
+00:15:00,000 --> 00:15:07,000
+Sometimes one object acts as a supplier, in other cases it acts as a client.
+
+192
+00:15:07,000 --> 00:15:08,000
+So.
+
+193
+00:15:08,000 --> 00:15:11,000
+So this is how communication diagram looks like.
+
+194
+00:15:11,000 --> 00:15:17,000
+The interesting thing is that you can easily convert communication diagram into sequence diagram and
+
+195
+00:15:17,000 --> 00:15:18,000
+vice versa.
+
+196
+00:15:18,000 --> 00:15:22,000
+Sequence diagram can be transformed to the communication diagram.
+
+197
+00:15:23,000 --> 00:15:26,000
+We already talked at the beginning of the lesson.
+
+198
+00:15:26,000 --> 00:15:28,000
+What is the difference between them?
+
+199
+00:15:28,000 --> 00:15:33,000
+So depending on your goals you can select what you want to choose.
+
+200
+00:15:33,000 --> 00:15:35,000
+Sequence or communication diagram.
+
+201
+00:15:36,000 --> 00:15:43,000
+To be honest, in my opinion and based on my experience, sequence diagrams are used more often.
+
+202
+00:15:43,000 --> 00:15:50,000
+It doesn't mean that there is no sense in using of communication diagram, but this is just my observations.
+
+203
+00:15:52,000 --> 00:15:54,000
+Take a look at the second example.
+
+204
+00:15:54,000 --> 00:15:56,000
+This example is more complex one.
+
+205
+00:15:56,000 --> 00:16:01,000
+You can see that all the system is represented as a separate object.
+
+206
+00:16:02,000 --> 00:16:07,000
+And there are other participants of online shop that all the system communicates with.
+
+207
+00:16:08,000 --> 00:16:10,000
+Different flows are visualized here.
+
+208
+00:16:10,000 --> 00:16:16,000
+For example login flow, product search flow and order creation flow.
+
+209
+00:16:16,000 --> 00:16:23,000
+The thing that I would like to highlight here is that communication diagram allows you to show communications
+
+210
+00:16:23,000 --> 00:16:26,000
+on the high level, on the level of all system.
+
+211
+00:16:26,000 --> 00:16:29,000
+If only you would decide to use sequence diagram.
+
+212
+00:16:29,000 --> 00:16:35,000
+More likely you would describe each of these flows with a separate sequence diagram.
+
+213
+00:16:35,000 --> 00:16:43,000
+But with communication diagram you can include more things on one diagram, but sacrificing with details.
+
+214
+00:16:43,000 --> 00:16:46,000
+So now we reviewed the second example.
+
+215
+00:16:46,000 --> 00:16:51,000
+I believe we are ready now to make a conclusion about communication diagram.
+
+216
+00:16:51,000 --> 00:16:58,000
+In conclusion, communication diagrams and provide a powerful means of visualizing and modeling the
+
+217
+00:16:58,000 --> 00:17:05,000
+dynamic interactions and collaborations between objects or participants within a system.
+
+218
+00:17:05,000 --> 00:17:13,000
+These diagrams serve as a valuable tool for software developers, system analysts, and designers to
+
+219
+00:17:13,000 --> 00:17:19,000
+gain a deeper understanding of how different elements within a system work together to achieve specific
+
+220
+00:17:19,000 --> 00:17:21,000
+tasks and scenarios.
+
+221
+00:17:21,000 --> 00:17:28,000
+Communication diagrams emphasize the flow of messages, sequence of interactions, and the timing of
+
+222
+00:17:28,000 --> 00:17:34,000
+events, making them particularly useful for capturing the dynamic behavior of a system.
+
+223
+00:17:34,000 --> 00:17:41,000
+Furthermore, communication diagrams promote effective communication among project stakeholders, helping
+
+224
+00:17:41,000 --> 00:17:46,000
+to bridge the gap between technical and non-technical team members.
+
+225
+00:17:46,000 --> 00:17:53,000
+They offer a clear and intuitive representation of the system's behavior, helping with requirements
+
+226
+00:17:53,000 --> 00:18:00,000
+analysis, design, and documentation by highlighting the relationships and interactions between objects.
+
+227
+00:18:00,000 --> 00:18:08,000
+Communication diagrams contribute to better system comprehension, design improvements, and the identification
+
+228
+00:18:08,000 --> 00:18:14,000
+of potential issues in the communication flow, ultimately supporting the development of more robust
+
+229
+00:18:14,000 --> 00:18:16,000
+and efficient software systems.
+
+230
+00:18:16,000 --> 00:18:20,000
+That's all what I wanted to review and discuss with you today.
+
+231
+00:18:20,000 --> 00:18:24,000
+Let's recap what we have learned from the lesson today.
+
+232
+00:18:24,000 --> 00:18:27,000
+We learned what a communication diagram is.
+
+233
+00:18:27,000 --> 00:18:32,000
+I explained you that collaboration and communication diagrams are the same thing.
+
+234
+00:18:32,000 --> 00:18:37,000
+Also, we learned the difference between communication and sequence diagram.
+
+235
+00:18:37,000 --> 00:18:43,000
+I believe that you understand that they have a lot of things in common, and one diagram can be converted
+
+236
+00:18:43,000 --> 00:18:45,000
+into another diagram.
+
+237
+00:18:45,000 --> 00:18:48,000
+But still these are different diagrams.
+
+238
+00:18:49,000 --> 00:18:55,000
+We learned elements of communication diagram including object links, messages, actor.
+
+239
+00:18:55,000 --> 00:19:02,000
+And at the end of the lesson we reviewed real life example of communication diagram for online shop.
+
+240
+00:19:02,000 --> 00:19:04,000
+That's all for today.
+
+241
+00:19:04,000 --> 00:19:06,000
+Thanks a lot for your attention.
+
+242
+00:19:06,000 --> 00:19:09,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/005 Communication-Diagram-Online-Shop.url b/105 - Behavioral Diagrams/005 Communication-Diagram-Online-Shop.url
new file mode 100644
index 0000000000000000000000000000000000000000..be51c1ac08a322446cd7c4e16cd686e2e4144c15
--- /dev/null
+++ b/105 - Behavioral Diagrams/005 Communication-Diagram-Online-Shop.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1UEvW3SNSvip3ceBsQ9nYTsuShdjaQQvQ/view?usp=sharing
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/006 Timing Diagram_en.srt b/105 - Behavioral Diagrams/006 Timing Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..6809f95efa4de68157b983001c9f8340e4120254
--- /dev/null
+++ b/105 - Behavioral Diagrams/006 Timing Diagram_en.srt
@@ -0,0 +1,1096 @@
+1
+00:00:05,000 --> 00:00:10,000
+Hello dear students, in this lesson we are going to learn timing diagram.
+
+2
+00:00:10,000 --> 00:00:15,000
+As always, we are going to start the lesson from learning the definition of the timing diagram.
+
+3
+00:00:15,000 --> 00:00:19,000
+I will explain you the purpose and goal of timing diagram.
+
+4
+00:00:19,000 --> 00:00:25,000
+This should help you to understand when and in which cases it is applicable to use.
+
+5
+00:00:25,000 --> 00:00:28,000
+Timing diagram in real life.
+
+6
+00:00:28,000 --> 00:00:31,000
+Then we will learn elements of timing diagram.
+
+7
+00:00:31,000 --> 00:00:33,000
+I will explain you what lifelines.
+
+8
+00:00:33,000 --> 00:00:34,000
+Value.
+
+9
+00:00:34,000 --> 00:00:35,000
+Lifelines.
+
+10
+00:00:35,000 --> 00:00:36,000
+State lifelines.
+
+11
+00:00:36,000 --> 00:00:37,000
+Duration.
+
+12
+00:00:37,000 --> 00:00:38,000
+Constraints.
+
+13
+00:00:38,000 --> 00:00:39,000
+Time constraints.
+
+14
+00:00:39,000 --> 00:00:40,000
+Destruction.
+
+15
+00:00:40,000 --> 00:00:45,000
+Occurrence messages are and how they are depicted on the diagram.
+
+16
+00:00:45,000 --> 00:00:51,000
+And at the end of the lesson we are going to review real life example of timing diagram and have some
+
+17
+00:00:51,000 --> 00:00:53,000
+practical activity with timing diagram.
+
+18
+00:00:53,000 --> 00:00:55,000
+Let's start our lesson.
+
+19
+00:00:56,000 --> 00:01:02,000
+Let's start from the learning the definition and understanding of what timing diagram is.
+
+20
+00:01:02,000 --> 00:01:09,000
+A timing diagram and UML is a type of behavioral diagram that is used to represent the behavior of a
+
+21
+00:01:09,000 --> 00:01:11,000
+system or object over time.
+
+22
+00:01:11,000 --> 00:01:19,000
+It focuses on the interactions and sequences of events that occur in a system or between objects in
+
+23
+00:01:19,000 --> 00:01:21,000
+a system with respect to time.
+
+24
+00:01:21,000 --> 00:01:29,000
+Timing diagrams are particularly useful for modeling and visualizing real time systems, where timing
+
+25
+00:01:29,000 --> 00:01:32,000
+and synchronization of events are critical.
+
+26
+00:01:32,000 --> 00:01:39,000
+It consists of a graph or waveform that depicts the state of a lifeline at a specific point of time.
+
+27
+00:01:39,000 --> 00:01:48,000
+It illustrates how conditions are altered both inside and between lifelines alongside linear time axis.
+
+28
+00:01:49,000 --> 00:01:56,000
+Timing diagrams are commonly used for real time and embedded systems, where it is essential to model
+
+29
+00:01:56,000 --> 00:01:59,000
+the timing and synchronization of events accurately.
+
+30
+00:01:59,000 --> 00:02:06,000
+They can help in analyzing the behavior of a system over time and ensuring that it meets its timing
+
+31
+00:02:06,000 --> 00:02:07,000
+requirements.
+
+32
+00:02:08,000 --> 00:02:12,000
+Think of a timing diagram as an inverted sequence diagram.
+
+33
+00:02:12,000 --> 00:02:20,000
+In a timing diagram, time passes on the x axis from left to right, with different components of the
+
+34
+00:02:20,000 --> 00:02:24,000
+system that interact with each other on the y axis.
+
+35
+00:02:25,000 --> 00:02:30,000
+Timing diagrams show how long each step of process takes.
+
+36
+00:02:30,000 --> 00:02:38,000
+Use them to identify which steps of process require too much time, and to find areas for improvement.
+
+37
+00:02:38,000 --> 00:02:43,000
+Let's learn the goals that we try to achieve using timing diagram.
+
+38
+00:02:43,000 --> 00:02:50,000
+Knowing the goals and purposes of timing diagram, you will know when to use timing diagram and in which
+
+39
+00:02:50,000 --> 00:02:52,000
+cases it is applicable.
+
+40
+00:02:52,000 --> 00:02:58,000
+Timing diagrams in the context of system modelling, particularly in the field of real time and embedded
+
+41
+00:02:58,000 --> 00:03:02,000
+systems, serve several important purposes and goals.
+
+42
+00:03:02,000 --> 00:03:08,000
+These diagrams are designed to provide a clear representation of the timing and sequencing of events
+
+43
+00:03:08,000 --> 00:03:11,000
+and interactions within a system.
+
+44
+00:03:11,000 --> 00:03:15,000
+Here are the main purposes and goals of timing diagrams.
+
+45
+00:03:15,000 --> 00:03:16,000
+The first one.
+
+46
+00:03:16,000 --> 00:03:19,000
+Visualization of timing behavior.
+
+47
+00:03:19,000 --> 00:03:25,000
+The primary purpose of timing diagrams is to visually represent the behavior of a system or components
+
+48
+00:03:25,000 --> 00:03:26,000
+over time.
+
+49
+00:03:27,000 --> 00:03:33,000
+They provide an intuitive and graphical view of how events unfold with respect to time.
+
+50
+00:03:34,000 --> 00:03:35,000
+Diamond's analysis.
+
+51
+00:03:36,000 --> 00:03:42,000
+Diamond diagrams help in analyzing the timing of events and interactions within a system.
+
+52
+00:03:43,000 --> 00:03:50,000
+They allow designers to ensure that events meet their timing constraints and requirements, helping
+
+53
+00:03:50,000 --> 00:03:54,000
+in performance optimization and avoiding timing issues.
+
+54
+00:03:54,000 --> 00:03:56,000
+Synchronization modeling.
+
+55
+00:03:57,000 --> 00:04:03,000
+Timing diagrams are used to model and illustrate the synchronization of activities and interactions
+
+56
+00:04:03,000 --> 00:04:07,000
+among different components or objects in a system.
+
+57
+00:04:07,000 --> 00:04:13,000
+They help ensure that multiple actions occur in a coordinated manner.
+
+58
+00:04:13,000 --> 00:04:15,000
+Real time system design.
+
+59
+00:04:15,000 --> 00:04:21,000
+In the context of real time systems, timing diagrams are essential for modeling and designing systems
+
+60
+00:04:21,000 --> 00:04:29,000
+where timely response and synchronization are critical, such as in automotive control systems, robotics,
+
+61
+00:04:29,000 --> 00:04:31,000
+and telecommunications.
+
+62
+00:04:32,000 --> 00:04:33,000
+Diamond constraints.
+
+63
+00:04:33,000 --> 00:04:34,000
+Definition.
+
+64
+00:04:35,000 --> 00:04:41,000
+Timing diagrams enables a specification of precise timing constraints for events and interactions,
+
+65
+00:04:42,000 --> 00:04:47,000
+ensuring that certain operations complete within specific time intervals.
+
+66
+00:04:48,000 --> 00:04:50,000
+Parallel and concurrent behavior.
+
+67
+00:04:51,000 --> 00:04:57,000
+They help in depicting and understanding parallel and concurrent behavior, where multiple components
+
+68
+00:04:57,000 --> 00:05:03,000
+or processes run simultaneously and need to synchronize or communicate with each other.
+
+69
+00:05:04,000 --> 00:05:06,000
+Verification and validation.
+
+70
+00:05:06,000 --> 00:05:11,000
+Timing diagrams are used for the verification and validation of system behavior.
+
+71
+00:05:12,000 --> 00:05:19,000
+They allow designers to ensure that the system's timing meets the desired requirements, and that no
+
+72
+00:05:19,000 --> 00:05:21,000
+timing related issues exist.
+
+73
+00:05:22,000 --> 00:05:24,000
+Communication and documentation.
+
+74
+00:05:25,000 --> 00:05:31,000
+They serve as a means of communication between system designers, engineers, and stakeholders.
+
+75
+00:05:32,000 --> 00:05:39,000
+Diamond diagrams provide a clear and standardized way to document and discuss diamond related aspects
+
+76
+00:05:39,000 --> 00:05:40,000
+of a system.
+
+77
+00:05:41,000 --> 00:05:46,000
+Debugging and troubleshooting when issues arise in real time system.
+
+78
+00:05:46,000 --> 00:05:53,000
+Timing diagrams can help in diagnosing problems and understanding the sequence of events that may have
+
+79
+00:05:53,000 --> 00:05:56,000
+led to errors or unexpected behavior.
+
+80
+00:05:57,000 --> 00:05:59,000
+System performance evaluation.
+
+81
+00:06:00,000 --> 00:06:07,000
+Timing diagrams assist in assessing the performance of a system by visualizing the timing of events.
+
+82
+00:06:07,000 --> 00:06:12,000
+This is crucial for optimizing system efficiency and responsiveness.
+
+83
+00:06:13,000 --> 00:06:14,000
+Design validation.
+
+84
+00:06:15,000 --> 00:06:22,000
+Timing diagrams help in validating the correctness of systems design, ensuring that it meets its intended
+
+85
+00:06:22,000 --> 00:06:25,000
+behavior and timing requirements.
+
+86
+00:06:25,000 --> 00:06:27,000
+Education and training.
+
+87
+00:06:27,000 --> 00:06:33,000
+Timing diagrams are also used as educational tools to help students and professionals understand the
+
+88
+00:06:33,000 --> 00:06:38,000
+principles of timing and sequencing in complex systems.
+
+89
+00:06:38,000 --> 00:06:46,000
+So the purpose and goals of timing diagrams in or other modeling notations are centered around modeling,
+
+90
+00:06:46,000 --> 00:06:53,000
+analyzing, and communicating the timing behavior of a system with an emphasis on real time and time
+
+91
+00:06:53,000 --> 00:06:57,000
+sensitive applications where precise timing is critical.
+
+92
+00:06:57,000 --> 00:07:00,000
+Let's learn elements of timing diagram.
+
+93
+00:07:00,000 --> 00:07:07,000
+Timing diagrams in consist of several elements that help to represent the behavior and timing aspects
+
+94
+00:07:07,000 --> 00:07:10,000
+of a system or components within it.
+
+95
+00:07:10,000 --> 00:07:12,000
+Let's review them one by one.
+
+96
+00:07:13,000 --> 00:07:21,000
+Lifeline is a lifeline, as implied by its name, serves to depict a distinct element within the interaction,
+
+97
+00:07:21,000 --> 00:07:26,000
+representing an individual entity that participates in the interaction.
+
+98
+00:07:26,000 --> 00:07:29,000
+It is identified by the Classifier's name.
+
+99
+00:07:29,000 --> 00:07:37,000
+It portrays its purpose to show the entities, objects, or components participating in the interaction
+
+100
+00:07:37,000 --> 00:07:39,000
+and their life spans.
+
+101
+00:07:39,000 --> 00:07:44,000
+It can be positioned within a swim lane or a diagram frame.
+
+102
+00:07:45,000 --> 00:07:47,000
+Value lifeline.
+
+103
+00:07:47,000 --> 00:07:54,000
+Value lifeline illustrates the variation in the value of an item as time progresses.
+
+104
+00:07:54,000 --> 00:08:02,000
+The x axis represents elapsed time measured in the selected units, similar to a state lifeline.
+
+105
+00:08:03,000 --> 00:08:11,000
+The value alterations are indicated between the intersecting horizontal lines which occur at each transition
+
+106
+00:08:11,000 --> 00:08:12,000
+in value.
+
+107
+00:08:13,000 --> 00:08:20,000
+Value lifelines in timing diagrams illustrate the time dependent changes in a specific items.
+
+108
+00:08:20,000 --> 00:08:25,000
+Value helping in the visualization of data evolution over time.
+
+109
+00:08:25,000 --> 00:08:31,000
+Various lifelines are presented on the x axis denoting elapsed time.
+
+110
+00:08:31,000 --> 00:08:37,000
+Intersecting horizontal lines for valid transitions, labels, and visual examples to provide a clear
+
+111
+00:08:37,000 --> 00:08:41,000
+representation of how values change temporally.
+
+112
+00:08:41,000 --> 00:08:45,000
+State lifeline in timing diagrams.
+
+113
+00:08:45,000 --> 00:08:52,000
+A state lifeline is used to illustrate continuous changes in the state of a classifier or attributes.
+
+114
+00:08:52,000 --> 00:09:01,000
+It offers a structured view of how an item's state evolves over time, with the x axis depicting elapsed
+
+115
+00:09:01,000 --> 00:09:06,000
+time and the y axis labeling the possible states the item can assume.
+
+116
+00:09:07,000 --> 00:09:15,000
+This visualization is particularly useful for modeling dynamic attributes and their continuous transformations,
+
+117
+00:09:15,000 --> 00:09:18,000
+facilitating the analysis of dynamic systems.
+
+118
+00:09:19,000 --> 00:09:25,000
+A state lifeline and timing diagrams is used to visually represent continuous state changes of a classifier
+
+119
+00:09:25,000 --> 00:09:32,000
+or attributes over time, helping in the modeling and analysis of dynamic systems.
+
+120
+00:09:32,000 --> 00:09:40,000
+State lifelines use an x axis to denote elapsed time, while the y axis labels the possible states that
+
+121
+00:09:40,000 --> 00:09:47,000
+the item can assume, offering a structured representation of state evolution in the diagram.
+
+122
+00:09:47,000 --> 00:09:49,000
+Duration constraint.
+
+123
+00:09:49,000 --> 00:09:56,000
+It specifies the minimum and maximum time that an event or message should take to complete.
+
+124
+00:09:56,000 --> 00:10:04,000
+A duration constraint is an interval based constraint that relates to a specified duration range.
+
+125
+00:10:05,000 --> 00:10:12,000
+It is used to assess whether the constraint is met within the defined duration or not.
+
+126
+00:10:12,000 --> 00:10:17,000
+Duration constraints share their semantics with other constraints.
+
+127
+00:10:18,000 --> 00:10:24,000
+A graphical link between the duration interval and the entity it restricts can be used to represent
+
+128
+00:10:24,000 --> 00:10:26,000
+a duration constraint.
+
+129
+00:10:26,000 --> 00:10:33,000
+The purpose of a duration constraint is to define a constraint on a specified duration interval, allowing
+
+130
+00:10:33,000 --> 00:10:39,000
+for the assessment of whether a particular constraint is satisfied within the temporal range.
+
+131
+00:10:39,000 --> 00:10:46,000
+Duration constraints can be represented graphically with a linkage between the duration interval and
+
+132
+00:10:46,000 --> 00:10:48,000
+the entity it restricts.
+
+133
+00:10:48,000 --> 00:10:54,000
+While violated constraints identified by a negative trace indicating system failure.
+
+134
+00:10:54,000 --> 00:10:56,000
+Time constraint.
+
+135
+00:10:56,000 --> 00:11:03,000
+A time constraint as an interval constraint relating to a time interval serves as a temporal expression
+
+136
+00:11:03,000 --> 00:11:06,000
+for determining constraint satisfaction.
+
+137
+00:11:06,000 --> 00:11:12,000
+The semantics of these time constraints are provided by the constraints they define.
+
+138
+00:11:12,000 --> 00:11:20,000
+A time constraint serves to specify timing constraints in a time interval, enabling the assessment
+
+139
+00:11:20,000 --> 00:11:26,000
+of whether a given constraint is met or not within the specified time frame.
+
+140
+00:11:27,000 --> 00:11:33,000
+Time constraints are visually represented by a graphical association between the time interval and the
+
+141
+00:11:33,000 --> 00:11:39,000
+entities, a constraint often depicted as a small line connecting the time interval and an occurrence.
+
+142
+00:11:39,000 --> 00:11:41,000
+Specification.
+
+143
+00:11:41,000 --> 00:11:43,000
+Destruction adherence.
+
+144
+00:11:43,000 --> 00:11:49,000
+A destruction occurrence signifies the moment when an instance is terminated, typically represented
+
+145
+00:11:49,000 --> 00:11:52,000
+by a message on a lifeline.
+
+146
+00:11:52,000 --> 00:12:00,000
+It may result in the destruction of other objects owned by the composition of this instance, ensuring
+
+147
+00:12:00,000 --> 00:12:05,000
+that no further events occur after the destruction event on that lifeline.
+
+148
+00:12:05,000 --> 00:12:10,000
+This occurrence is symbolized by a cross located at the end of a lifeline.
+
+149
+00:12:11,000 --> 00:12:18,000
+The purpose of a destruction occurrence is to mark the point in a sequence when an instance is terminated,
+
+150
+00:12:18,000 --> 00:12:25,000
+and may result in the destruction of related objects, signifying the end of its life cycle within a
+
+151
+00:12:25,000 --> 00:12:25,000
+system.
+
+152
+00:12:26,000 --> 00:12:32,000
+Destruction occurrences are visually represented by a cross symbol at the end of a lifeline, denoting
+
+153
+00:12:32,000 --> 00:12:39,000
+the instances destruction and ensuring that no further events occur for that lifeline.
+
+154
+00:12:40,000 --> 00:12:41,000
+Message.
+
+155
+00:12:41,000 --> 00:12:47,000
+Message represents an interaction or communication between objects and components.
+
+156
+00:12:48,000 --> 00:12:54,000
+The purpose of a message is to show the flow of information, control or messages between entities in
+
+157
+00:12:54,000 --> 00:12:55,000
+the system.
+
+158
+00:12:55,000 --> 00:13:03,000
+It is depicted as an arrow connecting lifelines with optional labels to describe the message type.
+
+159
+00:13:04,000 --> 00:13:06,000
+We learned enough theory to be prepared.
+
+160
+00:13:06,000 --> 00:13:10,000
+For a practical example, let's discuss requirements for our practical example.
+
+161
+00:13:10,000 --> 00:13:18,000
+Now I want us to draw a timing diagram for regular website and depict page rendering process.
+
+162
+00:13:18,000 --> 00:13:27,000
+We are going to have different lifelines, namely web user, web browser, DNS resolver, servlet data
+
+163
+00:13:27,000 --> 00:13:29,000
+access JSP.
+
+164
+00:13:30,000 --> 00:13:34,000
+As you can see, this will be application built with Java Enterprise Edition.
+
+165
+00:13:35,000 --> 00:13:39,000
+Servlet is a server side implementation of Http protocol.
+
+166
+00:13:39,000 --> 00:13:44,000
+JSP is the technology to create dynamic web content.
+
+167
+00:13:44,000 --> 00:13:52,000
+DNS resolver will resolve the main namespaces to provide web browser with exact IP address of web application
+
+168
+00:13:52,000 --> 00:13:54,000
+using just domain name.
+
+169
+00:13:54,000 --> 00:14:01,000
+In case you have any questions, please post your questions below the video and I will be happy to answer.
+
+170
+00:14:02,000 --> 00:14:06,000
+Each lifeline may have different combinations of states.
+
+171
+00:14:06,000 --> 00:14:14,000
+For example idle waiting processing, viewing, sending response, viewing state will be only for web
+
+172
+00:14:14,000 --> 00:14:21,000
+user, and I encourage you to sync which states will be applicable for which lifeline.
+
+173
+00:14:21,000 --> 00:14:25,000
+Feel free to add other states in case you think they're needed.
+
+174
+00:14:26,000 --> 00:14:27,000
+On the diagram.
+
+175
+00:14:27,000 --> 00:14:32,000
+You can use time constraints, messages and other elements that we learned.
+
+176
+00:14:33,000 --> 00:14:35,000
+So now this time for a demo.
+
+177
+00:14:35,000 --> 00:14:40,000
+You can put video on pause and try to implement this diagram by yourself.
+
+178
+00:14:41,000 --> 00:14:47,000
+And once you are done, you can continue watching the video and take a look at my solution.
+
+179
+00:14:48,000 --> 00:14:52,000
+Let me start screen sharing and explain you how I draw this diagram.
+
+180
+00:14:53,000 --> 00:14:57,000
+As always, you can find the reference to my diagram in attachments to the lesson.
+
+181
+00:14:58,000 --> 00:15:04,000
+You can download my version and explore it in order to understand timing diagram better.
+
+182
+00:15:04,000 --> 00:15:11,000
+In order to save your time during the video lesson, I draw this diagram before the lesson and prepare
+
+183
+00:15:11,000 --> 00:15:12,000
+it it for you.
+
+184
+00:15:13,000 --> 00:15:18,000
+Don't worry, I will still highlight important advices that would help you to draw this diagram.
+
+185
+00:15:18,000 --> 00:15:23,000
+First of all, you need to add elements from 2.5 group.
+
+186
+00:15:23,000 --> 00:15:29,000
+If you still didn't do so, just click on the button here more figures.
+
+187
+00:15:30,000 --> 00:15:34,000
+And here you can include collections that are not included by default.
+
+188
+00:15:34,000 --> 00:15:38,000
+In this particular case we need to add 2.5.
+
+189
+00:15:38,000 --> 00:15:45,000
+Just click apply and all icons from 2.5 collection will be added on the left.
+
+190
+00:15:46,000 --> 00:15:50,000
+So there are elements that you're already familiar with.
+
+191
+00:15:50,000 --> 00:15:56,000
+For example, frame lines, text elements, arrows.
+
+192
+00:15:56,000 --> 00:16:00,000
+But there are some new elements that I recommend you to use.
+
+193
+00:16:00,000 --> 00:16:02,000
+For example duration constraint.
+
+194
+00:16:02,000 --> 00:16:08,000
+Just type duration and look for this element in the icons library.
+
+195
+00:16:08,000 --> 00:16:09,000
+Here it is.
+
+196
+00:16:09,000 --> 00:16:12,000
+Another element that you need is connector.
+
+197
+00:16:12,000 --> 00:16:14,000
+It is not regular horizontal line.
+
+198
+00:16:15,000 --> 00:16:16,000
+You can do not.
+
+199
+00:16:16,000 --> 00:16:18,000
+Straight lifelines.
+
+200
+00:16:18,000 --> 00:16:19,000
+Wizard.
+
+201
+00:16:19,000 --> 00:16:21,000
+Let me show you how.
+
+202
+00:16:26,000 --> 00:16:28,000
+I will make it look thinner.
+
+203
+00:16:28,000 --> 00:16:33,000
+Now, can you see that you have different points on the line?
+
+204
+00:16:33,000 --> 00:16:37,000
+You can use them to change the direction of the line.
+
+205
+00:16:37,000 --> 00:16:41,000
+Usually I stretch it to the diagonal like this.
+
+206
+00:16:41,000 --> 00:16:47,000
+And then I take control point in order to make right angle.
+
+207
+00:16:47,000 --> 00:16:50,000
+And you can repeat this trick any amount of times you need.
+
+208
+00:16:50,000 --> 00:16:56,000
+And in this way I build these lines that you can see on the diagram.
+
+209
+00:16:56,000 --> 00:17:02,000
+If you do this the first time it can be time consuming, but you will get used to it.
+
+210
+00:17:02,000 --> 00:17:06,000
+So just be patient and practice a little bit.
+
+211
+00:17:06,000 --> 00:17:07,000
+Okay.
+
+212
+00:17:07,000 --> 00:17:12,000
+Let me now explain what is happening here on our diagram.
+
+213
+00:17:12,000 --> 00:17:14,000
+As you can see we start from the web user.
+
+214
+00:17:15,000 --> 00:17:16,000
+User is idle.
+
+215
+00:17:16,000 --> 00:17:21,000
+Then URL is typed into web browser and user is waiting.
+
+216
+00:17:21,000 --> 00:17:24,000
+That's how states are changed.
+
+217
+00:17:25,000 --> 00:17:32,000
+At the same time, web browser is moved to the processing state from the idle state, and while DNS
+
+218
+00:17:32,000 --> 00:17:40,000
+resolver resolves our URL, web browser is waiting once URL is resolved.
+
+219
+00:17:40,000 --> 00:17:45,000
+Web browser gets notified and it changes state to processing.
+
+220
+00:17:45,000 --> 00:17:51,000
+This time, the browser will generate and send Http requests to the servlet.
+
+221
+00:17:51,000 --> 00:17:58,000
+If your student of my Java from zero to first job course, then you already know that servlet is a server
+
+222
+00:17:58,000 --> 00:18:03,000
+side entity that implements server side contract of Http protocol.
+
+223
+00:18:04,000 --> 00:18:07,000
+You can see I used duration constraint here.
+
+224
+00:18:07,000 --> 00:18:13,000
+Duration constraint also can be applied to messages like we already learned.
+
+225
+00:18:13,000 --> 00:18:19,000
+So Http request is supposed to take between 50 and 200 milliseconds.
+
+226
+00:18:20,000 --> 00:18:25,000
+Servlet needs to ask for data and request goes to data access.
+
+227
+00:18:25,000 --> 00:18:32,000
+Data is returned to the servlet servlet needed this data in order to populate all required placeholders
+
+228
+00:18:32,000 --> 00:18:33,000
+on the page.
+
+229
+00:18:34,000 --> 00:18:37,000
+JSP stands for Java Server Pages.
+
+230
+00:18:37,000 --> 00:18:43,000
+If you are not familiar with Java Enterprise Edition, I can just briefly remind you that JSP is a technology
+
+231
+00:18:43,000 --> 00:18:46,000
+for dynamic web pages generation.
+
+232
+00:18:47,000 --> 00:18:57,000
+JSP page is processed first because JSP page is translated into servlet resolves all tags, custom tags,
+
+233
+00:18:57,000 --> 00:19:04,000
+JSP tags, variables, attributes, and servlet generates HTML markup.
+
+234
+00:19:04,000 --> 00:19:10,000
+For all this, we set duration constraint between 10 and 100 milliseconds.
+
+235
+00:19:11,000 --> 00:19:16,000
+After that response is sent back to the web browser, another duration constraint is here.
+
+236
+00:19:17,000 --> 00:19:21,000
+As you can see, this can take between 100 to 500 milliseconds.
+
+237
+00:19:22,000 --> 00:19:28,000
+And after that, our browser is moved from the waiting state to the processing state back again.
+
+238
+00:19:28,000 --> 00:19:36,000
+This time, the browser has between 10 to 100 milliseconds to present content that it received.
+
+239
+00:19:37,000 --> 00:19:44,000
+And once content is presented, web user changes state to viewing and enjoying the web content.
+
+240
+00:19:45,000 --> 00:19:51,000
+This is example of the simplified flow, but I believe that you understood key principles and you will
+
+241
+00:19:51,000 --> 00:19:55,000
+be able to create timing diagram for other cases too.
+
+242
+00:19:55,000 --> 00:19:58,000
+We learned theory and had practical exercises.
+
+243
+00:19:58,000 --> 00:20:02,000
+Now we are ready to make a conclusion about timing diagram.
+
+244
+00:20:02,000 --> 00:20:03,000
+In conclusion.
+
+245
+00:20:03,000 --> 00:20:11,000
+Timing diagrams are a powerful tool in the world of system modeling and design, particularly in the
+
+246
+00:20:11,000 --> 00:20:14,000
+domain of real time and time sensitive systems.
+
+247
+00:20:14,000 --> 00:20:22,000
+This diagrams enables a visual representation of the timing and sequencing of events, interactions,
+
+248
+00:20:22,000 --> 00:20:29,000
+and behaviors within a system, offering a clear and intuitive way to capture the temporal aspects of
+
+249
+00:20:29,000 --> 00:20:30,000
+system operation.
+
+250
+00:20:31,000 --> 00:20:37,000
+Timing diagrams are really good at specifying timing constraints, assessing system performance, and
+
+251
+00:20:37,000 --> 00:20:41,000
+verifying that a system meets its timing requirements.
+
+252
+00:20:41,000 --> 00:20:49,000
+Furthermore, timing diagrams play a pivotal role in the design, analysis, and optimization of complex
+
+253
+00:20:49,000 --> 00:20:52,000
+systems where precise timing is essential.
+
+254
+00:20:52,000 --> 00:20:59,000
+They allow system designers to model the dynamic behavior of entities, define temporal constraints,
+
+255
+00:20:59,000 --> 00:21:03,000
+and identify potential performance bottlenecks.
+
+256
+00:21:03,000 --> 00:21:07,000
+By offering a standardized means of communication and documentation.
+
+257
+00:21:07,000 --> 00:21:14,000
+Timing diagrams facilitate collaboration among engineers, ensuring a shared understanding of a system's
+
+258
+00:21:14,000 --> 00:21:15,000
+timing behavior.
+
+259
+00:21:16,000 --> 00:21:23,000
+In essence, timing diagrams serve as an invaluable tool for engineers and designers in their quest
+
+260
+00:21:23,000 --> 00:21:30,000
+to create efficient, responsive, and reliable systems across a range of domains, from automotive
+
+261
+00:21:30,000 --> 00:21:34,000
+control systems to telecommunications and beyond.
+
+262
+00:21:35,000 --> 00:21:35,000
+That's all.
+
+263
+00:21:35,000 --> 00:21:37,000
+What I wanted to share with you today.
+
+264
+00:21:37,000 --> 00:21:40,000
+Let's recap what we have learned from this lesson.
+
+265
+00:21:41,000 --> 00:21:44,000
+In the lesson we learned what a timing diagram is.
+
+266
+00:21:44,000 --> 00:21:45,000
+In UML.
+
+267
+00:21:46,000 --> 00:21:49,000
+I explained you purpose and role of timing diagram.
+
+268
+00:21:50,000 --> 00:21:56,000
+So now you know when and in which cases it is recommended to use timing diagram and when it is applicable.
+
+269
+00:21:57,000 --> 00:22:04,000
+We learned key elements of timing diagram, including lifelines, value lifelines, state lifelines,
+
+270
+00:22:04,000 --> 00:22:09,000
+duration, constraints, time constraints, distraction, occurrence, and messages.
+
+271
+00:22:10,000 --> 00:22:14,000
+And at the end of the lesson, we revealed a practical example of timing diagram.
+
+272
+00:22:15,000 --> 00:22:18,000
+That's all what I wanted to share with you in this lesson.
+
+273
+00:22:18,000 --> 00:22:19,000
+Thanks a lot for your attention.
+
+274
+00:22:19,000 --> 00:22:23,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/006 Timing-Diagram-Website-Loading.url b/105 - Behavioral Diagrams/006 Timing-Diagram-Website-Loading.url
new file mode 100644
index 0000000000000000000000000000000000000000..ee85ba063434a7cba21f2d6bb82f7d898c392b73
--- /dev/null
+++ b/105 - Behavioral Diagrams/006 Timing-Diagram-Website-Loading.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1yzrkRZqzy3vwHdGhxcyf-WKiRCY9co68/view?usp=sharing
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/007 Interaction Overview Diagram_en.srt b/105 - Behavioral Diagrams/007 Interaction Overview Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..ac629e2c5466a9bb1c70c013bca8c6df76beaac6
--- /dev/null
+++ b/105 - Behavioral Diagrams/007 Interaction Overview Diagram_en.srt
@@ -0,0 +1,968 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello Jim.
+
+2
+00:00:06,000 --> 00:00:10,000
+In this lesson we are going to learn Interaction overview diagram.
+
+3
+00:00:10,000 --> 00:00:16,000
+We are going to start the lesson from learning the definition of interaction overview diagram.
+
+4
+00:00:16,000 --> 00:00:20,000
+Taking into account it consists of other diagrams.
+
+5
+00:00:20,000 --> 00:00:25,000
+Would also share with you the concept of group of interaction diagrams.
+
+6
+00:00:25,000 --> 00:00:30,000
+I will explain you what diagrams are included into the interaction diagrams group.
+
+7
+00:00:30,000 --> 00:00:35,000
+Then we'll discuss purpose and goals of interaction overview diagram.
+
+8
+00:00:35,000 --> 00:00:39,000
+Also, we'll learn elements of interaction overview diagram.
+
+9
+00:00:39,000 --> 00:00:44,000
+And at the end of the lesson we are going to practice our skills on real example.
+
+10
+00:00:44,000 --> 00:00:46,000
+Let's start our lesson.
+
+11
+00:00:46,000 --> 00:00:50,000
+Let's start from the definition of interaction overview diagram.
+
+12
+00:00:50,000 --> 00:00:57,000
+An interaction overview diagram is a type of behavioral diagram in UML, used to visualize the flow
+
+13
+00:00:57,000 --> 00:01:04,000
+of control and interactions between different parts of a system, or between multiple use cases or scenarios.
+
+14
+00:01:04,000 --> 00:01:12,000
+It is a variant of the activity diagram, where the nodes are the interactions or interaction occurrences.
+
+15
+00:01:12,000 --> 00:01:18,000
+The diagram is particularly useful when you want to provide an overview of how different interactions
+
+16
+00:01:18,000 --> 00:01:22,000
+in a system or different scenarios relate to each other.
+
+17
+00:01:23,000 --> 00:01:29,000
+Interaction overview diagram shows relationships and interactions between various parts of a system,
+
+18
+00:01:29,000 --> 00:01:36,000
+typically using a combination of interaction fragments from other UML diagrams such as sequence diagrams,
+
+19
+00:01:36,000 --> 00:01:41,000
+communication diagrams, timing diagrams, or activity diagrams.
+
+20
+00:01:41,000 --> 00:01:46,000
+They help in illustrating how different scenarios or use cases are interconnected.
+
+21
+00:01:47,000 --> 00:01:51,000
+Let's learn more about group of interaction diagrams in UML.
+
+22
+00:01:51,000 --> 00:01:57,000
+A group of interaction diagrams is a collection of different types of diagrams that are used to model
+
+23
+00:01:57,000 --> 00:02:02,000
+and visualize interactions, communication, and behaviors within a system.
+
+24
+00:02:02,000 --> 00:02:10,000
+Interaction diagrams are a subset of UML diagrams that focus on illustrating how objects, components,
+
+25
+00:02:10,000 --> 00:02:18,000
+or entities in a system interact with each other, particularly in the context of use cases or scenarios.
+
+26
+00:02:18,000 --> 00:02:25,000
+The group of four interaction diagrams in UML, which includes interaction overview diagrams, timing
+
+27
+00:02:25,000 --> 00:02:31,000
+diagrams, sequence diagrams, and communication diagrams, collectively serve various purposes and
+
+28
+00:02:31,000 --> 00:02:37,000
+provide different perspectives on how interactions and behaviors are represented within a system.
+
+29
+00:02:38,000 --> 00:02:46,000
+Interactive overview diagram in UML aggregates or combine elements from all the three types of diagrams.
+
+30
+00:02:46,000 --> 00:02:51,000
+Sequence diagram, communication diagram, and timing diagrams.
+
+31
+00:02:51,000 --> 00:02:58,000
+Interaction overview diagrams act as a high level container that integrates and connects these different
+
+32
+00:02:58,000 --> 00:03:05,000
+diagram types to provide a holistic view of how they relate to each other within a system or scenario.
+
+33
+00:03:05,000 --> 00:03:14,000
+This integration allows you to create a comprehensive visualization of interactions, control, flow,
+
+34
+00:03:14,000 --> 00:03:20,000
+and behavior, making it a valuable tool for modeling complex systems or use cases.
+
+35
+00:03:20,000 --> 00:03:26,000
+In this course, we learned all of the interaction diagrams, and in this lesson we are going to learn
+
+36
+00:03:26,000 --> 00:03:29,000
+the final one interaction overview diagram.
+
+37
+00:03:30,000 --> 00:03:36,000
+Let's learn goals and purposes of the interaction overview diagram to understand it better.
+
+38
+00:03:36,000 --> 00:03:42,000
+The interaction overview diagram and serves several goals and purposes, including.
+
+39
+00:03:42,000 --> 00:03:50,000
+System overview provide an overview of how different interactions scenarios relate within a system,
+
+40
+00:03:50,000 --> 00:03:54,000
+allowing for a high level understanding of system behavior.
+
+41
+00:03:54,000 --> 00:03:57,000
+Integration of multiple interactions.
+
+42
+00:03:57,000 --> 00:04:04,000
+Combine and integrate multiple types of interactions such as sequence diagrams, communication diagrams,
+
+43
+00:04:04,000 --> 00:04:11,000
+timing diagrams, and activity diagrams to depict complex scenarios in a single diagram.
+
+44
+00:04:11,000 --> 00:04:20,000
+Modeling alternate paths illustrate various alternative paths or scenarios that can occur within a system,
+
+45
+00:04:20,000 --> 00:04:25,000
+making it easier to visualize and analyze different possibilities.
+
+46
+00:04:25,000 --> 00:04:32,000
+Control flow visualization shows the flow of control between different interactions and how they are
+
+47
+00:04:32,000 --> 00:04:38,000
+connected, making it clear how control is passed from one interaction to another.
+
+48
+00:04:39,000 --> 00:04:46,000
+Use case modeling assist in use case modeling by demonstrating how different use cases interact with
+
+49
+00:04:46,000 --> 00:04:52,000
+each other, or how a single use case can have multiple paths and scenarios.
+
+50
+00:04:52,000 --> 00:04:55,000
+Decision points and merging.
+
+51
+00:04:55,000 --> 00:05:02,000
+Highlight decision points where control flow branches based on conditions, and merge points where different
+
+52
+00:05:02,000 --> 00:05:05,000
+control flows come together after branching.
+
+53
+00:05:06,000 --> 00:05:12,000
+High level abstraction provides a high level abstraction, focusing on the structure of interactions
+
+54
+00:05:12,000 --> 00:05:17,000
+and the relationships between them, without delving into the fine grained details.
+
+55
+00:05:17,000 --> 00:05:19,000
+Communication context.
+
+56
+00:05:19,000 --> 00:05:25,000
+Offer context for interactions by showing how different entities communicate and interact with each
+
+57
+00:05:25,000 --> 00:05:27,000
+other in the system.
+
+58
+00:05:28,000 --> 00:05:34,000
+Understanding dependencies help in understanding dependencies and relationships between different parts
+
+59
+00:05:34,000 --> 00:05:35,000
+of the system.
+
+60
+00:05:35,000 --> 00:05:41,000
+Helping in the identification of potential bottlenecks or areas for optimization.
+
+61
+00:05:42,000 --> 00:05:49,000
+Documentation and communication serve as a documentation and communication tool for developers, designers
+
+62
+00:05:49,000 --> 00:05:55,000
+and stakeholders to understand and discuss the systems, behavior and interactions.
+
+63
+00:05:56,000 --> 00:06:02,000
+Testing and validation support testing and validation efforts by providing a visual representation of
+
+64
+00:06:02,000 --> 00:06:05,000
+how different scenarios are expected to behave.
+
+65
+00:06:06,000 --> 00:06:08,000
+Planning and decision making.
+
+66
+00:06:08,000 --> 00:06:14,000
+Facilitate planning and decision making by allowing stakeholders to assess the implications of different
+
+67
+00:06:14,000 --> 00:06:17,000
+interaction paths and make informed choices.
+
+68
+00:06:18,000 --> 00:06:24,000
+Overall, interaction overview diagrams are valuable for providing a holistic view of a system's behavior
+
+69
+00:06:24,000 --> 00:06:30,000
+and interactions, making them a useful tool in software modeling, design, and communication.
+
+70
+00:06:31,000 --> 00:06:34,000
+Now it is time to learn elements of interaction.
+
+71
+00:06:34,000 --> 00:06:35,000
+Overview diagram.
+
+72
+00:06:36,000 --> 00:06:43,000
+The elements of an interaction overview diagram in UML include a mix of elements borrowed from other
+
+73
+00:06:43,000 --> 00:06:50,000
+UML diagrams, such as sequence diagrams, communication diagrams, and activity diagrams, and specialized
+
+74
+00:06:50,000 --> 00:06:55,000
+elements for illustrating the overview of interactions within a system.
+
+75
+00:06:55,000 --> 00:06:59,000
+The key elements of an interaction overview diagram are.
+
+76
+00:06:59,000 --> 00:07:01,000
+Frame the central frame.
+
+77
+00:07:01,000 --> 00:07:07,000
+Typically, a box or rectangle, represents the main flow of control in the diagram.
+
+78
+00:07:07,000 --> 00:07:14,000
+It encloses and contains all other elements representing the overall context for the interactions.
+
+79
+00:07:15,000 --> 00:07:17,000
+Interaction fragments.
+
+80
+00:07:17,000 --> 00:07:22,000
+Interaction fragments are used to depict specific interactions or scenarios.
+
+81
+00:07:22,000 --> 00:07:29,000
+These can include fragments from sequence diagrams, communication diagrams, and activity diagrams.
+
+82
+00:07:29,000 --> 00:07:36,000
+Interaction fragments can be placed within the frame to represent different parts of the interaction.
+
+83
+00:07:37,000 --> 00:07:38,000
+Decision node.
+
+84
+00:07:38,000 --> 00:07:44,000
+Decision nodes are used to represent decision points in the flow of control.
+
+85
+00:07:44,000 --> 00:07:51,000
+They determine which interaction fragment to execute based on a condition or choice.
+
+86
+00:07:51,000 --> 00:07:58,000
+Lines entering and exiting the diamond shape indicate different paths based on conditions.
+
+87
+00:07:59,000 --> 00:08:00,000
+Match note.
+
+88
+00:08:00,000 --> 00:08:09,000
+Match notes are used to show where different control flows converge or merge back together after branching
+
+89
+00:08:09,000 --> 00:08:10,000
+at a decision point.
+
+90
+00:08:10,000 --> 00:08:15,000
+They help in simplifying the diagram by reducing complexity.
+
+91
+00:08:16,000 --> 00:08:17,000
+Control flow.
+
+92
+00:08:17,000 --> 00:08:24,000
+Control flow lines and arrows connect elements representing the flow of control between different interaction
+
+93
+00:08:24,000 --> 00:08:25,000
+fragments.
+
+94
+00:08:25,000 --> 00:08:27,000
+Decision nodes and merge nodes.
+
+95
+00:08:27,000 --> 00:08:31,000
+They show how control is transferred between elements.
+
+96
+00:08:32,000 --> 00:08:33,000
+Lifelines.
+
+97
+00:08:33,000 --> 00:08:39,000
+Lifelines are vertical, dashed lines typically originating from the top of the frame.
+
+98
+00:08:39,000 --> 00:08:46,000
+They represent the entities, objects, or actors involved in the interactions and provide a context
+
+99
+00:08:46,000 --> 00:08:49,000
+for the messages exchanged between them.
+
+100
+00:08:50,000 --> 00:08:51,000
+Messages.
+
+101
+00:08:51,000 --> 00:08:56,000
+Messages are represented using arrows and lines connecting lifelines.
+
+102
+00:08:56,000 --> 00:09:01,000
+They depict the communication and interactions between different entities within the system.
+
+103
+00:09:01,000 --> 00:09:07,000
+Messages can be synchronous or asynchronous depending on the type of interaction.
+
+104
+00:09:08,000 --> 00:09:09,000
+Activation bars.
+
+105
+00:09:10,000 --> 00:09:16,000
+Activation bars, often found in sequence diagrams, are used to indicate the periods during which an
+
+106
+00:09:16,000 --> 00:09:20,000
+entity is actively engaged in an interaction.
+
+107
+00:09:20,000 --> 00:09:24,000
+They provide a visual timeline for the lifelines.
+
+108
+00:09:24,000 --> 00:09:26,000
+Object nodes.
+
+109
+00:09:26,000 --> 00:09:33,000
+In activity diagram fragments, object nodes can be used to represent objects and data flows within
+
+110
+00:09:33,000 --> 00:09:34,000
+an interaction.
+
+111
+00:09:35,000 --> 00:09:36,000
+Control nodes.
+
+112
+00:09:37,000 --> 00:09:43,000
+Control nodes, such as initial nodes and final nodes, can be used in activity diagram fragments to
+
+113
+00:09:43,000 --> 00:09:46,000
+control the flow of activities.
+
+114
+00:09:47,000 --> 00:09:48,000
+Swimlanes.
+
+115
+00:09:48,000 --> 00:09:57,000
+In some cases, swimlanes can be added to group lifelines based on roles, departments or other categorizations
+
+116
+00:09:57,000 --> 00:10:00,000
+to provide additional clarity in complex diagrams.
+
+117
+00:10:01,000 --> 00:10:08,000
+All these elements work together to create a visual representation of how different interactions, scenarios,
+
+118
+00:10:08,000 --> 00:10:12,000
+and control flow paths are interconnected within a system.
+
+119
+00:10:13,000 --> 00:10:19,000
+Interaction overview diagrams help in providing a high level overview of the system's behavior and how
+
+120
+00:10:19,000 --> 00:10:22,000
+different entities interact and communicate.
+
+121
+00:10:22,000 --> 00:10:28,000
+To be honest, it is not so many things to learn about interaction overview diagram because in very,
+
+122
+00:10:28,000 --> 00:10:35,000
+very simplified words it is like an activity diagram as it includes other diagrams.
+
+123
+00:10:35,000 --> 00:10:43,000
+And in this case, the most important thing is that you learn all other diagrams that interaction overview
+
+124
+00:10:43,000 --> 00:10:44,000
+diagram consists of.
+
+125
+00:10:44,000 --> 00:10:53,000
+Is it clear and as always for practical purposes, let me describe some real life example, some case.
+
+126
+00:10:53,000 --> 00:10:58,000
+And then we are going to see how this interaction overview diagram is implemented.
+
+127
+00:10:58,000 --> 00:11:03,000
+So our diagram will consist of the following elements.
+
+128
+00:11:03,000 --> 00:11:07,000
+Reference fragments schedule inspection.
+
+129
+00:11:07,000 --> 00:11:15,000
+Main funnels inspection report print reports to client and believes that you remember why and when we
+
+130
+00:11:15,000 --> 00:11:17,000
+need to use reference fragments.
+
+131
+00:11:17,000 --> 00:11:25,000
+Reference fragments in UML are used when you want to represent interactions, scenarios, or parts of
+
+132
+00:11:25,000 --> 00:11:31,000
+a system within a diagram, but you don't want to provide all the details of that interaction or scenario
+
+133
+00:11:31,000 --> 00:11:33,000
+in the current diagram.
+
+134
+00:11:33,000 --> 00:11:39,000
+Instead, you want to reference another diagram of fragment where the detailed information can be found,
+
+135
+00:11:39,000 --> 00:11:44,000
+and we are going to use reference fragments in our interaction overview diagram.
+
+136
+00:11:45,000 --> 00:11:49,000
+There are other elements that are going to be present on our interaction.
+
+137
+00:11:49,000 --> 00:11:50,000
+Overview diagram.
+
+138
+00:11:51,000 --> 00:11:52,000
+Sequence diagram.
+
+139
+00:11:52,000 --> 00:11:53,000
+Interaction.
+
+140
+00:11:53,000 --> 00:12:02,000
+Describe sequence diagram with two actors Inspector assistant and Inspector Inspector assistant.
+
+141
+00:12:02,000 --> 00:12:10,000
+Fill in report and submit report to inspection service and Inspector also uses inspection service to
+
+142
+00:12:10,000 --> 00:12:13,000
+review report and complete report.
+
+143
+00:12:13,000 --> 00:12:16,000
+Then we're going to have a decision node.
+
+144
+00:12:17,000 --> 00:12:23,000
+If you remember it is depicted as a diamond in case report is not approved.
+
+145
+00:12:23,000 --> 00:12:29,000
+We are getting back to schedule inspection fragment in case report was approved.
+
+146
+00:12:29,000 --> 00:12:35,000
+Then we come to the fork node and we parallel to processes.
+
+147
+00:12:35,000 --> 00:12:40,000
+We'll describe them again as reference fragments that I already mentioned.
+
+148
+00:12:40,000 --> 00:12:45,000
+They are finalized inspection report and print report to client.
+
+149
+00:12:46,000 --> 00:12:49,000
+These two processes can happen in parallel.
+
+150
+00:12:49,000 --> 00:12:52,000
+And then we have final state.
+
+151
+00:12:52,000 --> 00:12:55,000
+That's what we are going to implement today.
+
+152
+00:12:55,000 --> 00:13:01,000
+In case you have any questions, please do not hesitate to post your questions below the video and I
+
+153
+00:13:01,000 --> 00:13:02,000
+will be happy to answer.
+
+154
+00:13:03,000 --> 00:13:09,000
+And as usual, I would recommend you to press this video on pause and to draw the diagram by yourself
+
+155
+00:13:09,000 --> 00:13:11,000
+first and only then.
+
+156
+00:13:11,000 --> 00:13:18,000
+I recommend you to watch my solution, because by this moment in the course, you are supposed to know
+
+157
+00:13:18,000 --> 00:13:22,000
+everything what is needed in order to draw this diagram.
+
+158
+00:13:22,000 --> 00:13:24,000
+But of course you need more practice.
+
+159
+00:13:24,000 --> 00:13:28,000
+And that's why I'm going to share with you my solution.
+
+160
+00:13:28,000 --> 00:13:34,000
+So if you are ready, you can press play button again and continue watching this video.
+
+161
+00:13:34,000 --> 00:13:41,000
+In this case I created Blank Diagram and then started adding elements using search in icons library.
+
+162
+00:13:42,000 --> 00:13:44,000
+So here is start state.
+
+163
+00:13:45,000 --> 00:13:49,000
+Then flow goes to the schedule inspection reference fragment.
+
+164
+00:13:50,000 --> 00:13:57,000
+Let me remind you one more time why we use reference fragments and how to read them in interaction overview
+
+165
+00:13:57,000 --> 00:14:06,000
+diagrams and some other types of interaction diagrams, you may encounter fragments labeled with ref
+
+166
+00:14:06,000 --> 00:14:08,000
+in the top left corner.
+
+167
+00:14:08,000 --> 00:14:15,000
+This label stands for reference and indicates that the fragment is a reference to another diagram or
+
+168
+00:14:15,000 --> 00:14:16,000
+interaction.
+
+169
+00:14:16,000 --> 00:14:23,000
+It is a way to reuse or refer to an existing interaction diagram or fragment, rather than explicitly
+
+170
+00:14:23,000 --> 00:14:29,000
+depicting all the details of that interaction within the current diagram.
+
+171
+00:14:29,000 --> 00:14:37,000
+When you see a ref label, it means that the details of the interaction or scenario described by that
+
+172
+00:14:37,000 --> 00:14:40,000
+fragment can be found in another diagram.
+
+173
+00:14:40,000 --> 00:14:49,000
+By referencing external diagrams, UML promotes modularity and reusability, allowing you to avoid redundancy
+
+174
+00:14:49,000 --> 00:14:52,000
+and keep your diagrams more concise.
+
+175
+00:14:53,000 --> 00:14:59,000
+This is particularly useful in situations where you want to break down a complex system or scenario
+
+176
+00:14:59,000 --> 00:15:07,000
+into smaller, manageable parts and represent each part in separate diagrams for clarity and maintainability.
+
+177
+00:15:07,000 --> 00:15:11,000
+The ref label is an interaction overview diagram.
+
+178
+00:15:11,000 --> 00:15:18,000
+For example, can link to a separate sequence diagram, communication diagram, or other relevant interaction
+
+179
+00:15:18,000 --> 00:15:23,000
+diagrams where the full details of that interaction are described.
+
+180
+00:15:24,000 --> 00:15:31,000
+By using references, you can maintain a clear and organized structure in your UML diagrams, making
+
+181
+00:15:31,000 --> 00:15:37,000
+it easier to manage and understand complex systems or scenarios without overwhelming a single diagram
+
+182
+00:15:37,000 --> 00:15:39,000
+with too much detail.
+
+183
+00:15:40,000 --> 00:15:47,000
+The text inside the square, labeled ref in an interaction diagram typically refers to the name or label
+
+184
+00:15:47,000 --> 00:15:49,000
+of another diagram.
+
+185
+00:15:49,000 --> 00:15:53,000
+This label serves as a reference to that specific diagram.
+
+186
+00:15:54,000 --> 00:16:01,000
+To find the related diagram, you should look for a diagram within your model that has the same name
+
+187
+00:16:01,000 --> 00:16:05,000
+as the one specified with the ref fragment.
+
+188
+00:16:05,000 --> 00:16:08,000
+Then control flow goes to the sequence diagram.
+
+189
+00:16:09,000 --> 00:16:17,000
+This annotation is the interaction in the top left corner of an interaction fragment in a diagram typically
+
+190
+00:16:17,000 --> 00:16:20,000
+represents a sequence diagram interaction.
+
+191
+00:16:20,000 --> 00:16:28,000
+This label indicates that the content within the interaction fragment is part of, or a reference to
+
+192
+00:16:28,000 --> 00:16:29,000
+a sequence diagram.
+
+193
+00:16:29,000 --> 00:16:36,000
+Sequence diagrams are used in UML to depict the interactions and messages exchanged between objects
+
+194
+00:16:36,000 --> 00:16:39,000
+or entities in a system over time.
+
+195
+00:16:39,000 --> 00:16:44,000
+When you see an interaction in an interaction fragment, it means that.
+
+196
+00:16:44,000 --> 00:16:47,000
+The fragment is related to a sequence diagram.
+
+197
+00:16:47,000 --> 00:16:55,000
+The content within this fragment will describe or reference the interactions and messages as they occur
+
+198
+00:16:55,000 --> 00:16:57,000
+in a sequence over time.
+
+199
+00:16:58,000 --> 00:17:05,000
+The interaction label helps you identify the type of interaction diagram and the specific diagram it
+
+200
+00:17:05,000 --> 00:17:12,000
+refers to, making it clear that the fragment is a sequence diagram or a reference to one.
+
+201
+00:17:13,000 --> 00:17:16,000
+As you can see here we have two actors like we discussed.
+
+202
+00:17:16,000 --> 00:17:26,000
+So Inspector assistant fill in report and submits it to the inspection Service and Inspector Reviews
+
+203
+00:17:26,000 --> 00:17:28,000
+report and completes the report.
+
+204
+00:17:29,000 --> 00:17:32,000
+Then we have decision node and we have two options.
+
+205
+00:17:32,000 --> 00:17:37,000
+Either inspection report is approved or not approved.
+
+206
+00:17:37,000 --> 00:17:41,000
+In case it is not approved we are going back to schedule inspection.
+
+207
+00:17:41,000 --> 00:17:47,000
+Main in case report is approved the flow goes to the fork node.
+
+208
+00:17:47,000 --> 00:17:52,000
+And if you remember fork node elements parallels execution.
+
+209
+00:17:52,000 --> 00:17:58,000
+So in case something can be done in parallel we can parallel execution using fork node.
+
+210
+00:17:58,000 --> 00:18:06,000
+And here you can see two reference fragments finalize inspection report and print report to client.
+
+211
+00:18:06,000 --> 00:18:07,000
+That's it.
+
+212
+00:18:07,000 --> 00:18:10,000
+After this we reached final state.
+
+213
+00:18:11,000 --> 00:18:14,000
+This is an example of interaction overview diagram.
+
+214
+00:18:14,000 --> 00:18:20,000
+You can see that it consists of different elements that we already learned from other diagrams.
+
+215
+00:18:20,000 --> 00:18:24,000
+So I believe that we are ready to make a conclusion.
+
+216
+00:18:24,000 --> 00:18:31,000
+The interaction overview diagram in HTML is a powerful tool for providing a high level view of how various
+
+217
+00:18:31,000 --> 00:18:38,000
+interactions, scenarios, and paths within a system or use case connect and interrelate.
+
+218
+00:18:38,000 --> 00:18:45,000
+By integrating elements from different types of interaction diagrams such as sequence diagrams, communication
+
+219
+00:18:45,000 --> 00:18:54,000
+diagrams, activity diagrams, timing diagrams, it enables modelers to depict the complex relationships
+
+220
+00:18:54,000 --> 00:19:00,000
+within a system without overwhelming viewers with excessive detail.
+
+221
+00:19:00,000 --> 00:19:07,000
+The use of decision and merge nodes allows for the representation of branching and merging in the control
+
+222
+00:19:07,000 --> 00:19:13,000
+flow, making it a valuable asset for use case modeling and system design.
+
+223
+00:19:14,000 --> 00:19:21,000
+It promotes clarity and organization, offers a holistic understanding of the system's behavior, and
+
+224
+00:19:21,000 --> 00:19:28,000
+enhances modularity and reusability by referencing detailed diagrams, thereby facilitating the management
+
+225
+00:19:28,000 --> 00:19:33,000
+of complex systems and the collaboration of design teams.
+
+226
+00:19:33,000 --> 00:19:42,000
+In summary, the Interaction overview diagram excels in providing a high level yet structured representation
+
+227
+00:19:42,000 --> 00:19:45,000
+of interactions and behaviors in a system.
+
+228
+00:19:45,000 --> 00:19:53,000
+It balances the need for both an overview and specific details, making it an invaluable tool for designers
+
+229
+00:19:53,000 --> 00:19:57,000
+and modelers working with complex systems and use cases.
+
+230
+00:19:58,000 --> 00:20:01,000
+That's all what I wanted to share with you in this lesson.
+
+231
+00:20:01,000 --> 00:20:04,000
+Let's recap what we have learned in the video.
+
+232
+00:20:05,000 --> 00:20:09,000
+So in this lesson we learned interaction overview diagram.
+
+233
+00:20:09,000 --> 00:20:12,000
+We learned group of interaction diagrams.
+
+234
+00:20:12,000 --> 00:20:16,000
+And you know that interaction diagram consists of communication diagram.
+
+235
+00:20:16,000 --> 00:20:18,000
+Interaction overview diagram.
+
+236
+00:20:18,000 --> 00:20:20,000
+Sequence diagram and timing diagram.
+
+237
+00:20:21,000 --> 00:20:25,000
+I explained to you the purpose and goals of interaction overview diagram.
+
+238
+00:20:26,000 --> 00:20:29,000
+Also, we learned elements of interaction overview diagram.
+
+239
+00:20:29,000 --> 00:20:36,000
+And at the end of the lesson we reviewed practical example in order to practice gained knowledge.
+
+240
+00:20:37,000 --> 00:20:39,000
+That's all for this lesson.
+
+241
+00:20:39,000 --> 00:20:41,000
+Thanks a lot for your attention.
+
+242
+00:20:41,000 --> 00:20:44,000
+Have a great day and see you in the next lesson.
+
diff --git a/105 - Behavioral Diagrams/007 Interaction-Overview-Diagram-Inspection.url b/105 - Behavioral Diagrams/007 Interaction-Overview-Diagram-Inspection.url
new file mode 100644
index 0000000000000000000000000000000000000000..4727d201ef7db6af93664262d36475f6671bbbfe
--- /dev/null
+++ b/105 - Behavioral Diagrams/007 Interaction-Overview-Diagram-Inspection.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1ngWHeeiu-nzYreqqKp6m-A0_E-PmocKF/view?usp=sharing
\ No newline at end of file
diff --git a/105 - Behavioral Diagrams/external-links.txt b/105 - Behavioral Diagrams/external-links.txt
new file mode 100644
index 0000000000000000000000000000000000000000..20e04564be00558c66c1dda42c35144bf3ffa196
--- /dev/null
+++ b/105 - Behavioral Diagrams/external-links.txt
@@ -0,0 +1,24 @@
+
+001 Diagrams.net-App
+https://app.diagrams.net/
+
+001 Use-Case-Diagram-from-the-lesson
+https://drive.google.com/file/d/1YiRc9iwOFDI5BNV3KP8dnz9fzwaTtyyK/view?usp=sharing
+
+002 Sequence-Diagram-User-Registration
+https://drive.google.com/file/d/1jKwTxt1gHIKBXXjpFbBAYX5QzJkojFHS/view?usp=sharing
+
+003 Activity-Diagram-Order-Processing-Workflow
+https://drive.google.com/file/d/143L1NC2o3io8Kfjzh6g-1Zui4qUpHGRJ/view?usp=sharing
+
+004 State-Machine-Diagram-Online-Shop
+https://drive.google.com/file/d/1ALoKremFTcRk_6AWIQrH6hId2P2-WBud/view?usp=sharing
+
+005 Communication-Diagram-Online-Shop
+https://drive.google.com/file/d/1UEvW3SNSvip3ceBsQ9nYTsuShdjaQQvQ/view?usp=sharing
+
+006 Timing-Diagram-Website-Loading
+https://drive.google.com/file/d/1yzrkRZqzy3vwHdGhxcyf-WKiRCY9co68/view?usp=sharing
+
+007 Interaction-Overview-Diagram-Inspection
+https://drive.google.com/file/d/1ngWHeeiu-nzYreqqKp6m-A0_E-PmocKF/view?usp=sharing
diff --git a/106 - Structural Diagrams/001 Class Diagram_en.srt b/106 - Structural Diagrams/001 Class Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..ec2ab1f59d83d8eaf0802001a5ff7f8f61c4362d
--- /dev/null
+++ b/106 - Structural Diagrams/001 Class Diagram_en.srt
@@ -0,0 +1,1856 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello team.
+
+2
+00:00:06,000 --> 00:00:09,000
+Today we are going to learn class diagram.
+
+3
+00:00:09,000 --> 00:00:13,000
+We are going to start the lesson from learning the definition of the class diagram.
+
+4
+00:00:13,000 --> 00:00:16,000
+We will discuss goals of class diagram.
+
+5
+00:00:16,000 --> 00:00:22,000
+This will help you to understand when to use class diagram in which cases.
+
+6
+00:00:22,000 --> 00:00:25,000
+Then we are going to learn elements of class diagram.
+
+7
+00:00:25,000 --> 00:00:35,000
+We will learn such elements as class, association, aggregation, composition, dependency, generalization,
+
+8
+00:00:35,000 --> 00:00:38,000
+interfaces and enumeration.
+
+9
+00:00:39,000 --> 00:00:46,000
+While talking about associations and their visualization on class diagram, I will explain you how to
+
+10
+00:00:46,000 --> 00:00:52,000
+notate multiplicity and cardinality on the class diagram, and at the end of the lesson we will review
+
+11
+00:00:52,000 --> 00:00:56,000
+practical exercise and we will see class diagram on practice.
+
+12
+00:00:56,000 --> 00:00:58,000
+Let's start our lesson.
+
+13
+00:00:59,000 --> 00:01:04,000
+Let's start from learning the definition of class diagram and understand what it is about.
+
+14
+00:01:04,000 --> 00:01:11,000
+A class diagram in UML is a visual representation that shows the structure and relationships of classes
+
+15
+00:01:11,000 --> 00:01:13,000
+within a software system.
+
+16
+00:01:13,000 --> 00:01:20,000
+It is widely used in software engineering to model the static aspects of a system, particularly the
+
+17
+00:01:20,000 --> 00:01:24,000
+classes, their attributes, and the associations between them.
+
+18
+00:01:25,000 --> 00:01:29,000
+A class diagram in UML is primarily a structural diagram.
+
+19
+00:01:29,000 --> 00:01:36,000
+It focuses on representing the static structure of a system, including classes, their attributes,
+
+20
+00:01:36,000 --> 00:01:39,000
+methods, and relationships between classes.
+
+21
+00:01:39,000 --> 00:01:45,000
+It doesn't capture the dynamic behavior or interactions between objects during runtime.
+
+22
+00:01:45,000 --> 00:01:51,000
+Instead, it provides a blueprint for the organization of classes and their relationships within the
+
+23
+00:01:51,000 --> 00:01:52,000
+software system.
+
+24
+00:01:53,000 --> 00:01:58,000
+To model the dynamic aspects and behaviors of a system, you would typically use other types of UML
+
+25
+00:01:58,000 --> 00:02:03,000
+diagrams, such as sequence diagrams, activity diagrams, or state diagrams.
+
+26
+00:02:04,000 --> 00:02:11,000
+These behavioral diagrams are used to illustrate how objects or components interact with each other,
+
+27
+00:02:11,000 --> 00:02:18,000
+and how the system responds to various events and scenarios, but behavioral diagrams will learn in
+
+28
+00:02:18,000 --> 00:02:23,000
+other section of the course, and in this lesson we will focus only on the class diagram.
+
+29
+00:02:24,000 --> 00:02:31,000
+In order to understand class diagram better, let's understand its goals and purposes and when it is
+
+30
+00:02:31,000 --> 00:02:32,000
+recommended to use it.
+
+31
+00:02:33,000 --> 00:02:41,000
+Goal number one structural representation plus diagrams are used to provide a visual structural representation
+
+32
+00:02:41,000 --> 00:02:42,000
+of a software system.
+
+33
+00:02:42,000 --> 00:02:49,000
+They show the building blocks, classes and how they are connected, offering a clear picture of the
+
+34
+00:02:49,000 --> 00:02:49,000
+system.
+
+35
+00:02:50,000 --> 00:02:51,000
+Static elements.
+
+36
+00:02:51,000 --> 00:02:53,000
+Model and classes.
+
+37
+00:02:53,000 --> 00:03:01,000
+Class diagrams help model the classes in a system defining their attributes, data, and methods.
+
+38
+00:03:01,000 --> 00:03:02,000
+Behavior.
+
+39
+00:03:03,000 --> 00:03:08,000
+These are key concepts in the object oriented programming approach.
+
+40
+00:03:08,000 --> 00:03:14,000
+This modeling serves as a blueprint for designing and implementing the software.
+
+41
+00:03:14,000 --> 00:03:18,000
+The third goal understanding relationships.
+
+42
+00:03:19,000 --> 00:03:26,000
+Class diagrams illustrate the relationships between classes, including inheritance, associations,
+
+43
+00:03:26,000 --> 00:03:29,000
+dependency, aggregations, and other.
+
+44
+00:03:30,000 --> 00:03:35,000
+This helps in understanding how different parts of the system interact.
+
+45
+00:03:36,000 --> 00:03:37,000
+Documentation.
+
+46
+00:03:37,000 --> 00:03:42,000
+Class diagrams are a valuable tool for documenting software designs.
+
+47
+00:03:42,000 --> 00:03:49,000
+They serve as a reference for developers and stakeholders, helping to convey the system structure and
+
+48
+00:03:49,000 --> 00:03:50,000
+design decisions.
+
+49
+00:03:50,000 --> 00:03:52,000
+Design validation.
+
+50
+00:03:52,000 --> 00:03:59,000
+Class diagrams help validate the design of a software system before actual implementation.
+
+51
+00:03:59,000 --> 00:04:04,000
+Ensuring that the structure aligns with the project's requirements and goals.
+
+52
+00:04:05,000 --> 00:04:06,000
+Modularity.
+
+53
+00:04:06,000 --> 00:04:13,000
+They promote modular design by breaking down a complex system into manageable classes, making it easy
+
+54
+00:04:13,000 --> 00:04:17,000
+to maintain and extend the software in the future.
+
+55
+00:04:18,000 --> 00:04:20,000
+Identify and reusability.
+
+56
+00:04:20,000 --> 00:04:27,000
+Class diagrams can reveal opportunities for code reuse by identifying common attributes and methods
+
+57
+00:04:27,000 --> 00:04:30,000
+that can be shared across multiple classes.
+
+58
+00:04:30,000 --> 00:04:32,000
+Security planning.
+
+59
+00:04:32,000 --> 00:04:39,000
+These diagrams assist in planning security measures by defining access control and visibility for class
+
+60
+00:04:39,000 --> 00:04:45,000
+attributes and methods, helping to protect sensitive data and functionalities.
+
+61
+00:04:45,000 --> 00:04:52,000
+Collaboration class diagrams encourage collaboration among team members by providing a common visual
+
+62
+00:04:52,000 --> 00:04:55,000
+language for discussing and designing the software system.
+
+63
+00:04:56,000 --> 00:05:02,000
+Being a software architect, you can create class diagram and share it with the whole engineering team
+
+64
+00:05:02,000 --> 00:05:07,000
+and be sure that everyone will understand your thoughts and ideas.
+
+65
+00:05:08,000 --> 00:05:15,000
+Reverse engineering class diagrams can be used to reverse engineer an existing code base, helping developers
+
+66
+00:05:15,000 --> 00:05:20,000
+understand and document a system's they did not originally design.
+
+67
+00:05:21,000 --> 00:05:28,000
+Quality assurance class diagrams support quality assurance efforts by enabling testers to understand
+
+68
+00:05:28,000 --> 00:05:33,000
+the structure of the software and design test cases accordingly.
+
+69
+00:05:33,000 --> 00:05:40,000
+System integration class diagrams help in the integration of different system components and external
+
+70
+00:05:40,000 --> 00:05:45,000
+libraries by illustrating how classes interact with each other.
+
+71
+00:05:45,000 --> 00:05:49,000
+So these are key goals of class diagram.
+
+72
+00:05:49,000 --> 00:05:54,000
+Let's now understand when it is recommended to use class diagram in which cases.
+
+73
+00:05:55,000 --> 00:06:02,000
+Design phase class diagrams are commonly used during the initial design phase of software development.
+
+74
+00:06:02,000 --> 00:06:07,000
+They help software architects and designers plan the structure of the system.
+
+75
+00:06:08,000 --> 00:06:13,000
+Using of class diagrams may be also helpful during modeling of complex systems.
+
+76
+00:06:13,000 --> 00:06:19,000
+When working on a complex software project with multiple components and interactions, class diagrams
+
+77
+00:06:19,000 --> 00:06:25,000
+serve as a valuable tool for simplifying and visualizing the system structure.
+
+78
+00:06:25,000 --> 00:06:31,000
+They provide a clear overview of the classes and their associations, making it easier to manage system
+
+79
+00:06:31,000 --> 00:06:32,000
+complexity.
+
+80
+00:06:33,000 --> 00:06:40,000
+Class diagrams often used during the communication and collaboration with class diagrams, you can easily
+
+81
+00:06:40,000 --> 00:06:43,000
+convey your thoughts and ideas.
+
+82
+00:06:43,000 --> 00:06:49,000
+They serve as a common visual language for discussing and understanding the systems architecture.
+
+83
+00:06:49,000 --> 00:06:56,000
+You can use class diagrams in meetings, presentations, and documentation to explain the software structure
+
+84
+00:06:56,000 --> 00:06:58,000
+and foster shared understanding.
+
+85
+00:07:00,000 --> 00:07:01,000
+Code generation.
+
+86
+00:07:01,000 --> 00:07:05,000
+Class diagrams can be used as a basis for generating code.
+
+87
+00:07:05,000 --> 00:07:11,000
+Many software development tools support automatic code generation from class diagrams.
+
+88
+00:07:11,000 --> 00:07:17,000
+This accelerates the coding phase by translating the design into executable code.
+
+89
+00:07:18,000 --> 00:07:21,000
+Refactoring and system maintenance.
+
+90
+00:07:21,000 --> 00:07:25,000
+When you need to refactor or make modifications to an existing software system.
+
+91
+00:07:25,000 --> 00:07:32,000
+Class diagrams help you comprehend the current structure and plan necessary changes.
+
+92
+00:07:32,000 --> 00:07:38,000
+They help in identifying areas that require improvements or optimizations.
+
+93
+00:07:38,000 --> 00:07:41,000
+Software engineering education.
+
+94
+00:07:41,000 --> 00:07:47,000
+Class diagrams are frequently used in software engineering education to teach students about software
+
+95
+00:07:47,000 --> 00:07:50,000
+design principles and UML notation.
+
+96
+00:07:50,000 --> 00:07:57,000
+They serve as a practical and visual way to introduce students to the concepts of object oriented design.
+
+97
+00:07:58,000 --> 00:08:04,000
+And before we jump to practical examples and exercises, we need to learn elements of class diagram.
+
+98
+00:08:04,000 --> 00:08:06,000
+Let's learn them one by one.
+
+99
+00:08:07,000 --> 00:08:10,000
+The first element class.
+
+100
+00:08:10,000 --> 00:08:16,000
+The primary element in class diagram representing a blueprint for objects in a system.
+
+101
+00:08:17,000 --> 00:08:24,000
+It includes the class name, attributes and methods, and taking into account this is key element of
+
+102
+00:08:24,000 --> 00:08:25,000
+class diagram.
+
+103
+00:08:25,000 --> 00:08:27,000
+Let's learn this element in details.
+
+104
+00:08:28,000 --> 00:08:33,000
+It has three sections upper section, middle section and lower section.
+
+105
+00:08:34,000 --> 00:08:36,000
+Upper section.
+
+106
+00:08:36,000 --> 00:08:43,000
+The top segment includes the class name, which serves as a representation of objects with shared relationships,
+
+107
+00:08:43,000 --> 00:08:46,000
+attributes, operations, and meanings.
+
+108
+00:08:46,000 --> 00:08:50,000
+It is recommended to follow rules when you represent the class.
+
+109
+00:08:50,000 --> 00:08:54,000
+Capitalize the initial letter of the class name.
+
+110
+00:08:54,000 --> 00:08:58,000
+Place the class name in the center of the upper section.
+
+111
+00:08:58,000 --> 00:09:02,000
+A class name must be written in bold format.
+
+112
+00:09:02,000 --> 00:09:06,000
+The name of the abstract class should be written in italics.
+
+113
+00:09:06,000 --> 00:09:07,000
+Format.
+
+114
+00:09:08,000 --> 00:09:09,000
+Middle section.
+
+115
+00:09:09,000 --> 00:09:15,000
+The middle segment consists of attributes that define the characteristics of the class, and if you're
+
+116
+00:09:15,000 --> 00:09:22,000
+familiar with object oriented programming and its principles, you should remember that there is encapsulation
+
+117
+00:09:22,000 --> 00:09:30,000
+principle, and to implement this principle, different access modifiers exist to set and control access
+
+118
+00:09:30,000 --> 00:09:31,000
+to class attributes.
+
+119
+00:09:32,000 --> 00:09:37,000
+To show different access modifiers on the diagram, we use different notations.
+
+120
+00:09:37,000 --> 00:09:46,000
+For public access modifier, we can use plus sign for protected hash, sign for package, private tilde
+
+121
+00:09:46,000 --> 00:09:50,000
+character, and for private access minus sign.
+
+122
+00:09:50,000 --> 00:09:56,000
+And of course, you should never forget that each attribute should be named with meaningful name that
+
+123
+00:09:56,000 --> 00:10:02,000
+will explain its usage inside the class and which characteristics of the class it describes.
+
+124
+00:10:03,000 --> 00:10:06,000
+There is a specific attribute notation you specify.
+
+125
+00:10:06,000 --> 00:10:10,000
+Access modifier first, then goes attributes name.
+
+126
+00:10:10,000 --> 00:10:18,000
+Then you put colon and after colon you specify attribute type lower section.
+
+127
+00:10:18,000 --> 00:10:25,000
+The lower part contains methods or operations presented in a list format, with each method described
+
+128
+00:10:25,000 --> 00:10:26,000
+on a single line.
+
+129
+00:10:26,000 --> 00:10:30,000
+This section illustrates how a class interacts with data.
+
+130
+00:10:31,000 --> 00:10:38,000
+The same rules regarding access modifiers are applied to methods to use plus minus, hash or tilde character,
+
+131
+00:10:38,000 --> 00:10:44,000
+to specify different access modifiers to specific behavior inside the class.
+
+132
+00:10:44,000 --> 00:10:52,000
+This method also after method name will put colon and then we specify return type like this.
+
+133
+00:10:52,000 --> 00:10:56,000
+We can specify value of what type will be returned from the method.
+
+134
+00:10:57,000 --> 00:10:59,000
+Method can have parameters.
+
+135
+00:10:59,000 --> 00:11:07,000
+If method has parameters, you need to include the data type and the parameter name as part of the method
+
+136
+00:11:07,000 --> 00:11:07,000
+signature.
+
+137
+00:11:07,000 --> 00:11:15,000
+Within the method compartment of the class, you just write name of the parameter colon and specify
+
+138
+00:11:15,000 --> 00:11:18,000
+type of the parameter or.
+
+139
+00:11:18,000 --> 00:11:20,000
+There is another popular notation.
+
+140
+00:11:20,000 --> 00:11:24,000
+Just specify types separated by commas.
+
+141
+00:11:24,000 --> 00:11:32,000
+Using parameters name is helpful in case you want to help readers understand what this parameter for,
+
+142
+00:11:32,000 --> 00:11:40,000
+but in case it is obvious based on the context and method name, not necessarily to specify parameter
+
+143
+00:11:40,000 --> 00:11:43,000
+name, you can just specify parameters type.
+
+144
+00:11:43,000 --> 00:11:48,000
+So it is great that we learned the main element of class diagram.
+
+145
+00:11:48,000 --> 00:11:50,000
+Let's also learn other elements.
+
+146
+00:11:51,000 --> 00:11:59,000
+Let's talk about different types of relationships and elements that are used to represent relationships
+
+147
+00:11:59,000 --> 00:12:00,000
+on a class diagram.
+
+148
+00:12:01,000 --> 00:12:01,000
+They are.
+
+149
+00:12:02,000 --> 00:12:03,000
+Association.
+
+150
+00:12:03,000 --> 00:12:05,000
+Aggregation.
+
+151
+00:12:05,000 --> 00:12:06,000
+Composition.
+
+152
+00:12:06,000 --> 00:12:07,000
+Dependency.
+
+153
+00:12:07,000 --> 00:12:09,000
+Generalization.
+
+154
+00:12:09,000 --> 00:12:13,000
+Let's learn what are they and what is also important.
+
+155
+00:12:13,000 --> 00:12:15,000
+Let's understand the difference between them.
+
+156
+00:12:16,000 --> 00:12:19,000
+I am going to start with association.
+
+157
+00:12:19,000 --> 00:12:26,000
+Association represents a relationship between classes, showing that objects of one class are related
+
+158
+00:12:26,000 --> 00:12:28,000
+to objects of another class.
+
+159
+00:12:28,000 --> 00:12:35,000
+It is depicted as a simple line connecting the participating classes with an optional label describing
+
+160
+00:12:35,000 --> 00:12:37,000
+the nature of the association.
+
+161
+00:12:38,000 --> 00:12:41,000
+What is the difference from aggregation and composition?
+
+162
+00:12:42,000 --> 00:12:47,000
+Associations indicate a weaker, more general relationship between classes.
+
+163
+00:12:48,000 --> 00:12:55,000
+Objects in the associated classes have independent life cycles and may exist without each other.
+
+164
+00:12:56,000 --> 00:13:03,000
+An association example is between student and course classes that show that students are enrolled in
+
+165
+00:13:03,000 --> 00:13:04,000
+courses.
+
+166
+00:13:05,000 --> 00:13:12,000
+Both objects may have independent life cycles, but there is an association.
+
+167
+00:13:12,000 --> 00:13:18,000
+Students will be enrolled in courses and courses will have multiple students.
+
+168
+00:13:18,000 --> 00:13:22,000
+There is one more important term you need to learn regarding association.
+
+169
+00:13:23,000 --> 00:13:26,000
+You need to learn what multiplicity is.
+
+170
+00:13:26,000 --> 00:13:31,000
+Another name that describes the same concept is cardinality.
+
+171
+00:13:31,000 --> 00:13:38,000
+In the context of UML diagrams, to describe the number of instances or occurrences of one class that
+
+172
+00:13:38,000 --> 00:13:46,000
+are related to the instances of another class in an association or relationship is called multiplicity.
+
+173
+00:13:46,000 --> 00:13:54,000
+While both terms are often used interchangeably, multiplicity is more commonly used in the UML specification
+
+174
+00:13:54,000 --> 00:13:57,000
+and is a preferred term when discussing UML diagrams.
+
+175
+00:13:58,000 --> 00:14:04,000
+So when working with UML diagrams, it is more accurate to use the term multiplicity to describe the
+
+176
+00:14:04,000 --> 00:14:08,000
+number of instances related in an association.
+
+177
+00:14:08,000 --> 00:14:16,000
+However, it is not uncommon to hear cardinality used informally to refer to the same concept, especially
+
+178
+00:14:16,000 --> 00:14:19,000
+in general discussions about relationships between classes.
+
+179
+00:14:19,000 --> 00:14:26,000
+In general, there are three groups of relationships one to many, many to many, and 1 to 1.
+
+180
+00:14:26,000 --> 00:14:30,000
+Multiplicity is represented using range notations.
+
+181
+00:14:30,000 --> 00:14:39,000
+Let's run common multiplicity types for association relationships in UML, exactly one denoted as one.
+
+182
+00:14:39,000 --> 00:14:46,000
+It means that each instance of one class is associated with exactly one instance of the other class.
+
+183
+00:14:46,000 --> 00:14:50,000
+This is often used to represent a 1 to 1 relationship.
+
+184
+00:14:51,000 --> 00:14:52,000
+0 or 1.
+
+185
+00:14:52,000 --> 00:15:00,000
+It indicates that an instance of one class may be associated with 0 or 1 instance of the other class.
+
+186
+00:15:00,000 --> 00:15:08,000
+This is also used for 1 to 1 relationships, when one class instance may or may not be associated with
+
+187
+00:15:08,000 --> 00:15:09,000
+other class.
+
+188
+00:15:10,000 --> 00:15:11,000
+Zero or more.
+
+189
+00:15:12,000 --> 00:15:18,000
+This means that an instance of one class can be associated with zero or more instances of the other
+
+190
+00:15:18,000 --> 00:15:19,000
+class.
+
+191
+00:15:19,000 --> 00:15:24,000
+It is commonly used for one to many or many to many relationships.
+
+192
+00:15:24,000 --> 00:15:25,000
+One or more.
+
+193
+00:15:26,000 --> 00:15:34,000
+It signifies that each instance of one class is associated with one or more instances of the other class.
+
+194
+00:15:34,000 --> 00:15:40,000
+This is typically used to represent one to many relationships, where each instance must be associated
+
+195
+00:15:40,000 --> 00:15:44,000
+with at least one instance of the other class.
+
+196
+00:15:44,000 --> 00:15:45,000
+Many to many.
+
+197
+00:15:45,000 --> 00:15:52,000
+This notation describes the case when instances of one class may be associated with multiple instances
+
+198
+00:15:52,000 --> 00:15:58,000
+of another class, and instance of another class may be associated with multiple instances of another
+
+199
+00:15:58,000 --> 00:15:59,000
+class.
+
+200
+00:16:00,000 --> 00:16:08,000
+Bounded range in this case is a multiplicity is bounded within a specific range where M represents the
+
+201
+00:16:08,000 --> 00:16:14,000
+minimum number of associations and n represents the maximum number of associations.
+
+202
+00:16:14,000 --> 00:16:21,000
+For example, two five would mean that each instance of one class is associated with at least two,
+
+203
+00:16:21,000 --> 00:16:25,000
+but no more than five instances of other class.
+
+204
+00:16:26,000 --> 00:16:32,000
+These multiplicity types provide a way to describe the relationships between classes in UML diagrams,
+
+205
+00:16:32,000 --> 00:16:38,000
+allowing you to specify how many instances of one class are associated with instances of another class.
+
+206
+00:16:39,000 --> 00:16:45,000
+The choice of multiplicity depends on the specific requirements and constraints of your modeling scenario.
+
+207
+00:16:47,000 --> 00:16:51,000
+Let's continue learning relationships elements on the class diagram.
+
+208
+00:16:51,000 --> 00:16:53,000
+Association has two specific forms.
+
+209
+00:16:53,000 --> 00:16:56,000
+They are aggregation and composition.
+
+210
+00:16:56,000 --> 00:17:00,000
+Let's learn what are they and what is the difference between them?
+
+211
+00:17:00,000 --> 00:17:01,000
+Aggregation.
+
+212
+00:17:02,000 --> 00:17:05,000
+Aggregation relationship represents the.
+
+213
+00:17:05,000 --> 00:17:07,000
+Has a relationship between classes.
+
+214
+00:17:08,000 --> 00:17:13,000
+Represents a whole part relationship where one class.
+
+215
+00:17:13,000 --> 00:17:18,000
+The whole contains or is composed of the other classes.
+
+216
+00:17:18,000 --> 00:17:26,000
+The parts shown as a line with an empty diamond shape on the diamond, and connecting the whole class
+
+217
+00:17:26,000 --> 00:17:28,000
+to the port class.
+
+218
+00:17:28,000 --> 00:17:35,000
+In human notation, the diamond symbol for aggregation and composition should point from the port,
+
+219
+00:17:35,000 --> 00:17:43,000
+contain class to the whole containing class, and how aggregation is different from composition.
+
+220
+00:17:43,000 --> 00:17:50,000
+Aggregation implies a weaker relationship where parts can exist independently of the whole.
+
+221
+00:17:51,000 --> 00:18:00,000
+For example, an aggregation between car which is a whole, and wheel which is a part, represent that
+
+222
+00:18:00,000 --> 00:18:03,000
+a car is composed of wheels.
+
+223
+00:18:03,000 --> 00:18:06,000
+In case you want to change wheels.
+
+224
+00:18:06,000 --> 00:18:09,000
+Wheels keep existing without car, right?
+
+225
+00:18:09,000 --> 00:18:16,000
+So they can exist independently and can be installed to another car later.
+
+226
+00:18:16,000 --> 00:18:18,000
+That is what aggregation is about.
+
+227
+00:18:19,000 --> 00:18:20,000
+Composition.
+
+228
+00:18:20,000 --> 00:18:28,000
+Composition relationships also represent the has a relationship but employ a stronger inclusion.
+
+229
+00:18:29,000 --> 00:18:36,000
+It represents a strong whole part relationship, where the existence of the whole class is dependent
+
+230
+00:18:36,000 --> 00:18:38,000
+on its parts.
+
+231
+00:18:38,000 --> 00:18:45,000
+Depicted as a line with a solid diamond shape on the diamond and connecting the whole class to the part
+
+232
+00:18:45,000 --> 00:18:47,000
+class and one more time.
+
+233
+00:18:47,000 --> 00:18:49,000
+What is the difference from aggregation?
+
+234
+00:18:49,000 --> 00:18:57,000
+Composition implies a stronger relationship, where the whole class manages the life cycle of its parts,
+
+235
+00:18:57,000 --> 00:19:01,000
+and parts can't exist without the whole.
+
+236
+00:19:02,000 --> 00:19:10,000
+For example, competition between house, the hall and room, which is the part indicate that a room
+
+237
+00:19:10,000 --> 00:19:13,000
+can't exist without a house.
+
+238
+00:19:13,000 --> 00:19:20,000
+If you remove house object, all rooms will be removed too, because rooms can't exist outside of the
+
+239
+00:19:20,000 --> 00:19:23,000
+house and house controls.
+
+240
+00:19:23,000 --> 00:19:25,000
+Life cycle of rooms.
+
+241
+00:19:26,000 --> 00:19:29,000
+That's how aggregation is different from the composition.
+
+242
+00:19:30,000 --> 00:19:31,000
+Dependency.
+
+243
+00:19:32,000 --> 00:19:39,000
+It shows that one class depends on another class, typically in terms of method parameters, local variables,
+
+244
+00:19:39,000 --> 00:19:41,000
+or other interactions.
+
+245
+00:19:42,000 --> 00:19:49,000
+Represented as a dashed line with an arrowhead pointing from the dependent class to the class it relies
+
+246
+00:19:49,000 --> 00:19:49,000
+on.
+
+247
+00:19:50,000 --> 00:19:52,000
+How it is different from association.
+
+248
+00:19:53,000 --> 00:20:00,000
+Dependency is a looser relationship, indicating that one class uses the services of another, but it
+
+249
+00:20:00,000 --> 00:20:03,000
+doesn't imply a strong structural link.
+
+250
+00:20:03,000 --> 00:20:10,000
+For example, consider a library class that needs to perform a search operation on a database.
+
+251
+00:20:10,000 --> 00:20:14,000
+It relies on a database class to execute the search.
+
+252
+00:20:14,000 --> 00:20:22,000
+In this case, the library class has a dependency on the database class because it uses services provided
+
+253
+00:20:22,000 --> 00:20:26,000
+by the database class to perform its search operation.
+
+254
+00:20:27,000 --> 00:20:34,000
+This relationship is typically depicted using a dashed arrow from library to database in a class diagram.
+
+255
+00:20:34,000 --> 00:20:41,000
+In this scenario, the library class is dependent on the database class for a specific task, which
+
+256
+00:20:41,000 --> 00:20:44,000
+is a clear case of a dependency relationship.
+
+257
+00:20:45,000 --> 00:20:46,000
+Generalization.
+
+258
+00:20:47,000 --> 00:20:51,000
+In some literature it is also called inheritance.
+
+259
+00:20:51,000 --> 00:20:55,000
+It describes the same thing and the same notation is used.
+
+260
+00:20:56,000 --> 00:20:57,000
+Itrillionepresents.
+
+261
+00:20:57,000 --> 00:21:05,000
+The generalization specialization relationship, where a more specific class subclass is derived from
+
+262
+00:21:05,000 --> 00:21:07,000
+a more general class.
+
+263
+00:21:07,000 --> 00:21:13,000
+Superclass represents the is a relationship where one class is a subclass.
+
+264
+00:21:13,000 --> 00:21:18,000
+Inherits the attributes and behaviors of another class, the superclass.
+
+265
+00:21:19,000 --> 00:21:25,000
+It is depicted as a solid line with an arrowhead pointing from the specialized class to the general
+
+266
+00:21:25,000 --> 00:21:26,000
+class.
+
+267
+00:21:26,000 --> 00:21:35,000
+For example, generalization from animal general type to dog specific class to show that a dog is a
+
+268
+00:21:35,000 --> 00:21:36,000
+type of an animal.
+
+269
+00:21:37,000 --> 00:21:42,000
+Let's talk about other elements that can be depicted on the class diagram.
+
+270
+00:21:42,000 --> 00:21:43,000
+Interfaces.
+
+271
+00:21:44,000 --> 00:21:50,000
+Interfaces are similar to classes, but define a contract of methods that implementing classes must
+
+272
+00:21:50,000 --> 00:21:51,000
+adhere to.
+
+273
+00:21:51,000 --> 00:21:58,000
+They are depicted similar to classes, but you use interface word in angle brackets before the interface
+
+274
+00:21:58,000 --> 00:21:58,000
+name.
+
+275
+00:21:59,000 --> 00:22:06,000
+Interfaces are connected to the classes that implement them using a dashed line with a closed, unfilled
+
+276
+00:22:06,000 --> 00:22:11,000
+arrowhead pointing from the implementing class towards the interface.
+
+277
+00:22:12,000 --> 00:22:18,000
+This arrow indicates the direction of the relationship, showing that the class is implementing the
+
+278
+00:22:18,000 --> 00:22:19,000
+interface.
+
+279
+00:22:19,000 --> 00:22:26,000
+The connection line goes from the class to the interface and the arrow head points towards the interface.
+
+280
+00:22:26,000 --> 00:22:29,000
+So dashed line was empty.
+
+281
+00:22:29,000 --> 00:22:37,000
+Arrow head means implement an interface, and in case of inheritance, generalization or in simple words
+
+282
+00:22:37,000 --> 00:22:41,000
+in the meaning of extend, solid line was empty.
+
+283
+00:22:41,000 --> 00:22:45,000
+Arrow head is used from the specialized class to the general class.
+
+284
+00:22:46,000 --> 00:22:47,000
+Is it clear now?
+
+285
+00:22:47,000 --> 00:22:52,000
+I want you to remember all these notations because they have specific meanings.
+
+286
+00:22:52,000 --> 00:22:57,000
+It is like knowing language in case you would express your thoughts correctly.
+
+287
+00:22:57,000 --> 00:23:05,000
+All developers, all engineering team across all the globe will understand your thoughts in the way
+
+288
+00:23:05,000 --> 00:23:06,000
+you expect.
+
+289
+00:23:07,000 --> 00:23:08,000
+Enumeration.
+
+290
+00:23:08,000 --> 00:23:12,000
+There are also some specifics in the notation of enumerations.
+
+291
+00:23:13,000 --> 00:23:16,000
+You need to use special word before enumeration name.
+
+292
+00:23:16,000 --> 00:23:24,000
+Just write enumeration in angle brackets and only then type the name of the enumeration class, and
+
+293
+00:23:24,000 --> 00:23:26,000
+then you can list the enumerations.
+
+294
+00:23:27,000 --> 00:23:32,000
+And similar to other UML diagrams, you can use nodes on the class diagram.
+
+295
+00:23:32,000 --> 00:23:40,000
+Nodes are way to include comments or documentation to make the diagram more informative and easier to
+
+296
+00:23:40,000 --> 00:23:41,000
+understand.
+
+297
+00:23:41,000 --> 00:23:48,000
+In HTML, you can add nodes to your diagram using a node symbol, which is rectangle with a folded corner
+
+298
+00:23:48,000 --> 00:23:53,000
+and an associated connector line to the element you want to annotate.
+
+299
+00:23:54,000 --> 00:24:01,000
+Inside the node symbol, you can include text to describe the associated class relationship or any other
+
+300
+00:24:01,000 --> 00:24:04,000
+parts of the diagram that requires additional context.
+
+301
+00:24:04,000 --> 00:24:05,000
+Amazing!
+
+302
+00:24:05,000 --> 00:24:09,000
+We did a great job and we learned key elements of class diagram.
+
+303
+00:24:09,000 --> 00:24:14,000
+Let's review example now that we are going to use for drawing class diagram.
+
+304
+00:24:15,000 --> 00:24:16,000
+In this lesson.
+
+305
+00:24:16,000 --> 00:24:17,000
+I have an interesting task for you.
+
+306
+00:24:18,000 --> 00:24:24,000
+Imagine that you are a software architect or tech lead on your project, and you need to implement order
+
+307
+00:24:24,000 --> 00:24:26,000
+processing system together with the team.
+
+308
+00:24:26,000 --> 00:24:32,000
+But before implementing it and distribute work between different team members, you need to explain
+
+309
+00:24:32,000 --> 00:24:35,000
+them how everything is going to work.
+
+310
+00:24:35,000 --> 00:24:38,000
+To do this, you need to create class diagram.
+
+311
+00:24:38,000 --> 00:24:41,000
+So we are going to have the following classes.
+
+312
+00:24:41,000 --> 00:24:43,000
+Customer order.
+
+313
+00:24:43,000 --> 00:24:45,000
+Product category.
+
+314
+00:24:45,000 --> 00:24:46,000
+Payment.
+
+315
+00:24:46,000 --> 00:24:47,000
+Cash.
+
+316
+00:24:47,000 --> 00:24:48,000
+Check.
+
+317
+00:24:48,000 --> 00:24:49,000
+Cart.
+
+318
+00:24:49,000 --> 00:24:56,000
+Using your understanding of online shop, try to build connections between classes.
+
+319
+00:24:56,000 --> 00:25:03,000
+I want you to understand where we are going to have association, aggregation or other kind of relationships.
+
+320
+00:25:03,000 --> 00:25:10,000
+Think about multiplicity to try to think what attributes classes are going to have with what access
+
+321
+00:25:10,000 --> 00:25:16,000
+modifiers, which methods, with what parameters, and which return types.
+
+322
+00:25:16,000 --> 00:25:21,000
+These classes are going to have I want to encourage thinking process.
+
+323
+00:25:21,000 --> 00:25:27,000
+You already know key elements of class diagram, and we already learned how to use diagrams dot net
+
+324
+00:25:27,000 --> 00:25:29,000
+tool to create UML diagrams.
+
+325
+00:25:29,000 --> 00:25:32,000
+So try to draw this diagram by yourself.
+
+326
+00:25:32,000 --> 00:25:38,000
+And once you try it you can continue watching this video and review my solution.
+
+327
+00:25:38,000 --> 00:25:44,000
+So now I will start screen sharing and I will share with you my solution for this task.
+
+328
+00:25:44,000 --> 00:25:50,000
+As always, you can find the reference to the UML diagram from the lesson in attachments to the video.
+
+329
+00:25:51,000 --> 00:25:57,000
+You can copy it and reuse some elements if you want for learning purposes or just understand better
+
+330
+00:25:57,000 --> 00:25:58,000
+class diagram.
+
+331
+00:25:59,000 --> 00:26:05,000
+The first thing that I want to start with is that you can use template for class diagram that exists
+
+332
+00:26:05,000 --> 00:26:07,000
+in diagrams dot net too.
+
+333
+00:26:07,000 --> 00:26:13,000
+When you click create you can find class diagram among basic templates.
+
+334
+00:26:13,000 --> 00:26:15,000
+This is a good point to start with.
+
+335
+00:26:15,000 --> 00:26:21,000
+You can copy and paste elements or just find icons that you need in the icons library.
+
+336
+00:26:22,000 --> 00:26:27,000
+You can see here three sections of the class element to work faster with it.
+
+337
+00:26:27,000 --> 00:26:31,000
+You can just do mouse, right click and select duplicate.
+
+338
+00:26:31,000 --> 00:26:38,000
+In such way auto formatting will be applied and you can just move new racket between different sections
+
+339
+00:26:38,000 --> 00:26:42,000
+and not be bothered about broken formatting.
+
+340
+00:26:42,000 --> 00:26:44,000
+That's super easy.
+
+341
+00:26:44,000 --> 00:26:45,000
+Just like this.
+
+342
+00:26:45,000 --> 00:26:49,000
+Now let's review classes, their attributes and methods.
+
+343
+00:26:50,000 --> 00:26:52,000
+The first class is customer.
+
+344
+00:26:52,000 --> 00:26:55,000
+I decided to add few fields.
+
+345
+00:26:55,000 --> 00:26:58,000
+ID first name, last name and email.
+
+346
+00:26:58,000 --> 00:27:04,000
+Of course, this is not the full list, because the goal of this exercise is to understand how we can
+
+347
+00:27:04,000 --> 00:27:09,000
+build class diagram depending on the level of details that you want to achieve.
+
+348
+00:27:09,000 --> 00:27:11,000
+You can add more attributes if you want.
+
+349
+00:27:11,000 --> 00:27:18,000
+For example, we can add such attributes as password, partner code, status of the account, amount
+
+350
+00:27:18,000 --> 00:27:21,000
+of money on the account, orders, history, and lots more.
+
+351
+00:27:21,000 --> 00:27:27,000
+But for the sake of the current example and to describe all the processing, I will not overwhelm this
+
+352
+00:27:27,000 --> 00:27:29,000
+diagram with a lot of fields.
+
+353
+00:27:30,000 --> 00:27:36,000
+Pay attention that all fields have private access modifier, and I didn't specify neither getters nor
+
+354
+00:27:36,000 --> 00:27:38,000
+setters methods.
+
+355
+00:27:38,000 --> 00:27:44,000
+If you are familiar with object oriented programming, then you should be aware that we use special
+
+356
+00:27:44,000 --> 00:27:51,000
+methods that are in charge of reading data from private attributes and set data to the class attributes
+
+357
+00:27:51,000 --> 00:27:55,000
+in order to control access to them.
+
+358
+00:27:55,000 --> 00:28:02,000
+But why I didn't specify them here in the UML class diagram, it is not necessary to specify getters
+
+359
+00:28:02,000 --> 00:28:06,000
+and setters for every attribute of a class explicitly.
+
+360
+00:28:06,000 --> 00:28:13,000
+UML class diagram primarily focus on capturing the static structure and relationships of a class, including
+
+361
+00:28:13,000 --> 00:28:17,000
+its attributes, methods, and associations.
+
+362
+00:28:17,000 --> 00:28:24,000
+The class diagram provides an overview of the class structure and behavior without diving into the implementation.
+
+363
+00:28:24,000 --> 00:28:31,000
+Details like getters and setters, including getters and setters in the class diagram is not a common
+
+364
+00:28:31,000 --> 00:28:38,000
+practice, but you can do it for clarity if it is essential for understanding the class behavior, especially
+
+365
+00:28:38,000 --> 00:28:46,000
+in cases where the class interface is complex, or if you want to emphasize the access methods for specific
+
+366
+00:28:46,000 --> 00:28:47,000
+attributes.
+
+367
+00:28:47,000 --> 00:28:50,000
+Let's continue and review the next class.
+
+368
+00:28:51,000 --> 00:28:53,000
+The next class is order.
+
+369
+00:28:53,000 --> 00:28:58,000
+As you can see, customer class is associated with order class.
+
+370
+00:28:58,000 --> 00:29:05,000
+One customer can have multiple orders and each order can be associated only with one customer.
+
+371
+00:29:06,000 --> 00:29:09,000
+This is one to many relationship.
+
+372
+00:29:10,000 --> 00:29:12,000
+All, the class has multiple fields.
+
+373
+00:29:12,000 --> 00:29:13,000
+Creation date.
+
+374
+00:29:13,000 --> 00:29:14,000
+Status.
+
+375
+00:29:14,000 --> 00:29:15,000
+Items.
+
+376
+00:29:15,000 --> 00:29:16,000
+Customer ID.
+
+377
+00:29:17,000 --> 00:29:22,000
+Customer ID is needed to build connection between customer and order.
+
+378
+00:29:23,000 --> 00:29:30,000
+As you can see, items is a list of products that are part of the orders object state.
+
+379
+00:29:31,000 --> 00:29:34,000
+Of course, you can come up with different designs here.
+
+380
+00:29:34,000 --> 00:29:41,000
+Among other popular options to think about is to declare a shopping cart class and convert products
+
+381
+00:29:41,000 --> 00:29:45,000
+from cart to products list in order class.
+
+382
+00:29:45,000 --> 00:29:48,000
+This is just another option to think about.
+
+383
+00:29:49,000 --> 00:29:50,000
+Among my assets.
+
+384
+00:29:50,000 --> 00:29:52,000
+You can see the following ones.
+
+385
+00:29:52,000 --> 00:29:56,000
+Calculate total price at item to order.
+
+386
+00:29:56,000 --> 00:29:58,000
+Remove item from order.
+
+387
+00:29:58,000 --> 00:30:06,000
+Get items in case method has parameters, I specify parameters name and type.
+
+388
+00:30:06,000 --> 00:30:11,000
+Also, I specify return type for each method as we learned during the lesson.
+
+389
+00:30:12,000 --> 00:30:16,000
+So taking into account list of products is a part of order object.
+
+390
+00:30:16,000 --> 00:30:21,000
+We need to create connection between order and product classes.
+
+391
+00:30:21,000 --> 00:30:30,000
+Check yourself how this type of association is called when one part is a part of the whole, but part
+
+392
+00:30:30,000 --> 00:30:32,000
+can exist independently.
+
+393
+00:30:32,000 --> 00:30:38,000
+We learned this form of association today and it is called aggregation.
+
+394
+00:30:38,000 --> 00:30:45,000
+The relationship between the product and order classes can be considered as many to many relationship,
+
+395
+00:30:45,000 --> 00:30:52,000
+as each order can consist of multiple products, and each product can be part of multiple orders.
+
+396
+00:30:52,000 --> 00:31:00,000
+For example, a customer may order several different products in a single order, resulting in a one
+
+397
+00:31:00,000 --> 00:31:02,000
+to many relationship from order to product.
+
+398
+00:31:03,000 --> 00:31:10,000
+Or another example, multiple customers may order the same product in their respective orders.
+
+399
+00:31:10,000 --> 00:31:15,000
+This also creates a one to many relationship from product to order.
+
+400
+00:31:16,000 --> 00:31:23,000
+Therefore, the relationship between product and order is bidirectional, indicating a many to many
+
+401
+00:31:23,000 --> 00:31:24,000
+relationship.
+
+402
+00:31:24,000 --> 00:31:31,000
+In UML class diagrams, you can use multiplicity to represent this many to many relationship.
+
+403
+00:31:32,000 --> 00:31:38,000
+As a general rule, I don't need to specify getters and setters here, but I just want to highlight
+
+404
+00:31:38,000 --> 00:31:45,000
+that Getprice method is important part of product class, because this method will be used during the
+
+405
+00:31:45,000 --> 00:31:48,000
+calculation of total order price.
+
+406
+00:31:49,000 --> 00:31:50,000
+Category.
+
+407
+00:31:50,000 --> 00:31:54,000
+Category class is a basis for category objects.
+
+408
+00:31:54,000 --> 00:32:01,000
+These objects are used to separate all products into smaller groups and increase user experience, navigation
+
+409
+00:32:01,000 --> 00:32:04,000
+and searching of what customer wants.
+
+410
+00:32:04,000 --> 00:32:11,000
+The multiplicity between product and category classes typically represents a many to many relationship.
+
+411
+00:32:11,000 --> 00:32:18,000
+For example, in an e-commerce system, a clothing category can include many different clothing products,
+
+412
+00:32:18,000 --> 00:32:23,000
+indicating a one to many relationship from category to product.
+
+413
+00:32:23,000 --> 00:32:31,000
+And another example a t shirt product could belong to both the clothing category and the summer sale
+
+414
+00:32:31,000 --> 00:32:32,000
+category.
+
+415
+00:32:32,000 --> 00:32:37,000
+This also establishes a one to many relationship from product to category.
+
+416
+00:32:38,000 --> 00:32:46,000
+Given these bi directional relationships, it is apparent that the product and category classes share
+
+417
+00:32:46,000 --> 00:32:48,000
+a many to many relationship.
+
+418
+00:32:48,000 --> 00:32:52,000
+And regarding fields and methods, there is nothing special here.
+
+419
+00:32:52,000 --> 00:32:53,000
+Remember team, is it?
+
+420
+00:32:53,000 --> 00:32:55,000
+In case you have any question.
+
+421
+00:32:55,000 --> 00:32:56,000
+No need to wait.
+
+422
+00:32:56,000 --> 00:33:00,000
+You can just post your question below the video and I will be happy to answer.
+
+423
+00:33:01,000 --> 00:33:05,000
+For the sake of example, I also wanted to create an abstract class.
+
+424
+00:33:05,000 --> 00:33:09,000
+Can you see how notation is different in payment class?
+
+425
+00:33:10,000 --> 00:33:18,000
+I use italics format for abstract class name and there are three child classes cash, bank, cheque
+
+426
+00:33:18,000 --> 00:33:19,000
+and card.
+
+427
+00:33:19,000 --> 00:33:22,000
+Do you remember how this relationship is called?
+
+428
+00:33:22,000 --> 00:33:24,000
+Generalization.
+
+429
+00:33:24,000 --> 00:33:31,000
+Each child class gives its own implementation of process payment method and has specific attributes
+
+430
+00:33:31,000 --> 00:33:33,000
+for each payment method.
+
+431
+00:33:33,000 --> 00:33:36,000
+And I forgot to mention one more thing.
+
+432
+00:33:36,000 --> 00:33:39,000
+Association between order and payment is 1 to 1.
+
+433
+00:33:39,000 --> 00:33:48,000
+One order can be paid only once, so there will be only one payment object always associated with only
+
+434
+00:33:48,000 --> 00:33:49,000
+one order object.
+
+435
+00:33:50,000 --> 00:33:51,000
+That's it.
+
+436
+00:33:51,000 --> 00:33:54,000
+That's how a class diagram looks like.
+
+437
+00:33:54,000 --> 00:33:59,000
+I believe after this practical example, you have better understanding of how to create your own class
+
+438
+00:33:59,000 --> 00:34:00,000
+diagram.
+
+439
+00:34:00,000 --> 00:34:06,000
+And in case you would have any questions, please ask your questions below the video and I will be happy
+
+440
+00:34:06,000 --> 00:34:07,000
+to answer.
+
+441
+00:34:07,000 --> 00:34:10,000
+Let's make a conclusion about class diagram.
+
+442
+00:34:11,000 --> 00:34:19,000
+In conclusion, class diagram is a fundamental component of that serves as a powerful tool for visualizing
+
+443
+00:34:19,000 --> 00:34:23,000
+and designing the structural aspects of a software system.
+
+444
+00:34:23,000 --> 00:34:30,000
+This diagram offers a bird's eye view of the system's static structure, providing a blueprint for the
+
+445
+00:34:30,000 --> 00:34:36,000
+classes, their attributes, methods, and the relationships among them.
+
+446
+00:34:36,000 --> 00:34:42,000
+By encapsulating the essence of the system's objects and their interactions.
+
+447
+00:34:42,000 --> 00:34:48,000
+Class diagrams facilitate clear communication among software development teams, stakeholders, and
+
+448
+00:34:48,000 --> 00:34:55,000
+developers, ensuring a shared understanding of the system's architecture and enabling efficient software
+
+449
+00:34:55,000 --> 00:34:56,000
+development.
+
+450
+00:34:57,000 --> 00:35:04,000
+Additionally, class diagrams play a pivotal role in the early stages of system design, guidance and
+
+451
+00:35:04,000 --> 00:35:10,000
+modeling process and fostering maintainability and extensibility in the software system.
+
+452
+00:35:10,000 --> 00:35:18,000
+They not only help in identifying potential improvements and optimizations, but also lay the foundation
+
+453
+00:35:18,000 --> 00:35:25,000
+for other UML diagrams that delve into dynamic behavior and deployment aspects.
+
+454
+00:35:25,000 --> 00:35:33,000
+Thus, class diagrams are indispensable in creating a well structured and robust software system, making
+
+455
+00:35:33,000 --> 00:35:39,000
+them an essential tool in the arsenal of the modern software engineering practices.
+
+456
+00:35:39,000 --> 00:35:43,000
+Now let's recap what we have learned today from the lesson.
+
+457
+00:35:43,000 --> 00:35:46,000
+Today we learned what a class diagram is.
+
+458
+00:35:46,000 --> 00:35:53,000
+Now you know goals of class diagram and when to use class diagram, in which cases we learned different
+
+459
+00:35:53,000 --> 00:36:02,000
+elements of class diagram such as class association, aggregation, composition, dependency, generalization,
+
+460
+00:36:02,000 --> 00:36:04,000
+interfaces and enumeration.
+
+461
+00:36:04,000 --> 00:36:11,000
+And at the end of the lesson we reviewed real life example class diagrams that visualize all the processing.
+
+462
+00:36:11,000 --> 00:36:13,000
+That's all for today.
+
+463
+00:36:13,000 --> 00:36:15,000
+Thanks a lot for your attention.
+
+464
+00:36:15,000 --> 00:36:17,000
+Have a great day and see you in the next lesson.
+
diff --git a/106 - Structural Diagrams/001 Class-Diagram-Order-Processing.url b/106 - Structural Diagrams/001 Class-Diagram-Order-Processing.url
new file mode 100644
index 0000000000000000000000000000000000000000..77ef05ee626438592393d1f000d50ecf297596b4
--- /dev/null
+++ b/106 - Structural Diagrams/001 Class-Diagram-Order-Processing.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1JT9iraGj_-ETCLGK9TCFfOb4E8qf6LSh/view?usp=sharing
\ No newline at end of file
diff --git a/106 - Structural Diagrams/002 Object Diagram_en.srt b/106 - Structural Diagrams/002 Object Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..100171bbce5692583f5c343075cc36af492d3107
--- /dev/null
+++ b/106 - Structural Diagrams/002 Object Diagram_en.srt
@@ -0,0 +1,868 @@
+1
+00:00:05,000 --> 00:00:09,000
+Hello dear students, in this lesson we are going to learn object diagram.
+
+2
+00:00:09,000 --> 00:00:14,000
+We are going to start the lesson from learning the definition of the object diagram.
+
+3
+00:00:14,000 --> 00:00:18,000
+Then we will compare class diagram with object diagram.
+
+4
+00:00:18,000 --> 00:00:24,000
+By understanding the differences we will be able to understand object diagram better.
+
+5
+00:00:24,000 --> 00:00:28,000
+Then we will learn goals and purposes of object diagram.
+
+6
+00:00:28,000 --> 00:00:33,000
+I am sure that this will help to understand when to use object diagram, in which cases.
+
+7
+00:00:33,000 --> 00:00:37,000
+Also we are going to learn elements of object diagram.
+
+8
+00:00:37,000 --> 00:00:42,000
+And at the end of the lesson, we are going to have a practical exercise in order to practice our skills
+
+9
+00:00:42,000 --> 00:00:43,000
+on real life.
+
+10
+00:00:43,000 --> 00:00:44,000
+Example.
+
+11
+00:00:44,000 --> 00:00:46,000
+Let's start our lesson.
+
+12
+00:00:47,000 --> 00:00:50,000
+Let's start from learning the definition of object diagram.
+
+13
+00:00:50,000 --> 00:00:58,000
+An object diagram in UML is a visual representation used in software engineering to illustrate the structure
+
+14
+00:00:58,000 --> 00:00:59,000
+of a system.
+
+15
+00:00:59,000 --> 00:01:05,000
+It focuses on the objects that exist within a system and their relationships.
+
+16
+00:01:05,000 --> 00:01:08,000
+The object diagram is a structural diagram.
+
+17
+00:01:08,000 --> 00:01:14,000
+It focuses on representing the static structure of a system by illustrating the objects, classes,
+
+18
+00:01:14,000 --> 00:01:17,000
+attributes, and relationships between them.
+
+19
+00:01:17,000 --> 00:01:23,000
+It provides a snapshot of the system structure at a specific point in time.
+
+20
+00:01:23,000 --> 00:01:27,000
+But how object diagram is different from the class diagram.
+
+21
+00:01:27,000 --> 00:01:29,000
+Let's try to answer this question.
+
+22
+00:01:30,000 --> 00:01:36,000
+Object diagrams are dependent on the class diagram as they are derived from the class diagram.
+
+23
+00:01:36,000 --> 00:01:40,000
+Object diagram represents an instance of a class diagram.
+
+24
+00:01:41,000 --> 00:01:48,000
+So let's try to understand better what an object diagram is by comparing it with class diagram.
+
+25
+00:01:48,000 --> 00:01:56,000
+Class diagrams primarily focus on providing a structural view of the system, depicting classes, the
+
+26
+00:01:56,000 --> 00:01:58,000
+attributes and relationships between classes.
+
+27
+00:01:58,000 --> 00:02:04,000
+It includes classes, abstract classes, interfaces, and enumerations, which serve as a blueprints
+
+28
+00:02:04,000 --> 00:02:05,000
+for objects.
+
+29
+00:02:06,000 --> 00:02:10,000
+We can find properties, attributes, and behaviors.
+
+30
+00:02:10,000 --> 00:02:13,000
+Methods of classes on a class diagram.
+
+31
+00:02:14,000 --> 00:02:22,000
+Class diagram also shows associations, dependencies, generalizations, and more between classes.
+
+32
+00:02:22,000 --> 00:02:29,000
+It provides a high level abstraction of the system, emphasizing the static structure rather than specific
+
+33
+00:02:29,000 --> 00:02:30,000
+instances.
+
+34
+00:02:31,000 --> 00:02:36,000
+It is often used during the design phase to plan the structure of a system.
+
+35
+00:02:36,000 --> 00:02:44,000
+On the other hand, object diagrams provide a snapshot of the instances objects in a system and their
+
+36
+00:02:44,000 --> 00:02:48,000
+relationships at the specific point in time.
+
+37
+00:02:48,000 --> 00:02:57,000
+Object diagram usually includes objects that are instances of classes and links to represent relationships
+
+38
+00:02:57,000 --> 00:02:59,000
+between objects at a specific moment.
+
+39
+00:03:00,000 --> 00:03:06,000
+It deals with specific instances of classes, providing a more concrete and detailed view compared to
+
+40
+00:03:06,000 --> 00:03:08,000
+class diagrams.
+
+41
+00:03:08,000 --> 00:03:15,000
+It is often used to represent the state of the system at a runtime, showing actual instances and their
+
+42
+00:03:15,000 --> 00:03:16,000
+connections.
+
+43
+00:03:17,000 --> 00:03:22,000
+So how I would describe connection between class and object diagrams.
+
+44
+00:03:22,000 --> 00:03:25,000
+I would say that they complement each other.
+
+45
+00:03:25,000 --> 00:03:34,000
+Object diagrams complement class diagrams, while class diagrams provide a blueprint for system structure.
+
+46
+00:03:34,000 --> 00:03:40,000
+Object diagrams show how instances of those classes interact at a particular moment.
+
+47
+00:03:40,000 --> 00:03:46,000
+Class diagrams are used for designing the static structure of a system, emphasizing classes and their
+
+48
+00:03:46,000 --> 00:03:47,000
+relationships.
+
+49
+00:03:47,000 --> 00:03:54,000
+While object diagrams provide a more specific and concrete view by illustrating instances of those classes
+
+50
+00:03:54,000 --> 00:03:57,000
+and their relationships at runtime.
+
+51
+00:03:58,000 --> 00:04:01,000
+Let's now learn goals and purposes of object diagram.
+
+52
+00:04:02,000 --> 00:04:06,000
+The primary goals and purposes of an object diagram include.
+
+53
+00:04:06,000 --> 00:04:08,000
+Instance representation.
+
+54
+00:04:08,000 --> 00:04:15,000
+Object diagrams provide a snapshot view of the instances objects in a system at a specific point in
+
+55
+00:04:15,000 --> 00:04:16,000
+time.
+
+56
+00:04:16,000 --> 00:04:22,000
+They show how these objects relate to each other and what is also important.
+
+57
+00:04:22,000 --> 00:04:28,000
+Object diagram presents the state of each specific object during the specific moment of runtime.
+
+58
+00:04:29,000 --> 00:04:31,000
+Concrete understanding.
+
+59
+00:04:31,000 --> 00:04:38,000
+Object diagrams offer a more concrete and detailed understanding of the system by depicting actual instances
+
+60
+00:04:38,000 --> 00:04:40,000
+of classes and their relationships.
+
+61
+00:04:41,000 --> 00:04:43,000
+Runtime view.
+
+62
+00:04:43,000 --> 00:04:49,000
+Object diagrams are often used to represent the state of the system during runtime.
+
+63
+00:04:49,000 --> 00:04:55,000
+They help visualize how objects collaborate and interact during the execution of the system.
+
+64
+00:04:55,000 --> 00:05:03,000
+Testing and debugging object diagrams can be valuable during testing and debugging process, providing
+
+65
+00:05:03,000 --> 00:05:10,000
+insights into the actual instances and their relationships, helping to identify issues related to object
+
+66
+00:05:10,000 --> 00:05:11,000
+interactions.
+
+67
+00:05:11,000 --> 00:05:18,000
+Communication object diagrams facilitate clear communication among stakeholders by offering a visual
+
+68
+00:05:18,000 --> 00:05:22,000
+representation of specific scenarios within the system.
+
+69
+00:05:22,000 --> 00:05:27,000
+They can be used to discuss and validate specific instances and their relationships.
+
+70
+00:05:28,000 --> 00:05:29,000
+Scenario.
+
+71
+00:05:29,000 --> 00:05:30,000
+Illustration.
+
+72
+00:05:30,000 --> 00:05:37,000
+Object diagrams are effective for illustrating specific scenarios or use cases by showing how objects
+
+73
+00:05:37,000 --> 00:05:40,000
+collaborate and exist in a given situation.
+
+74
+00:05:41,000 --> 00:05:43,000
+Relationship verification.
+
+75
+00:05:44,000 --> 00:05:50,000
+Object diagrams help verify that the relationships defined in class diagrams are correctly implemented
+
+76
+00:05:50,000 --> 00:05:55,000
+at runtime by depicting the actual instances and their connections.
+
+77
+00:05:56,000 --> 00:05:58,000
+Complement and class diagrams.
+
+78
+00:05:59,000 --> 00:06:06,000
+Object diagrams complement class diagrams, providing a more detailed and dynamic view of the system,
+
+79
+00:06:06,000 --> 00:06:12,000
+enhancing the understanding gained from the more abstract class diagrams.
+
+80
+00:06:12,000 --> 00:06:18,000
+So, as you can see, the main goals of object diagrams include providing a concrete representation
+
+81
+00:06:18,000 --> 00:06:20,000
+of instances in a system.
+
+82
+00:06:20,000 --> 00:06:22,000
+Helping in debugging and testing.
+
+83
+00:06:22,000 --> 00:06:25,000
+Offering a runtime view.
+
+84
+00:06:25,000 --> 00:06:30,000
+Facilitating communication and validating relationships specified in class diagrams.
+
+85
+00:06:31,000 --> 00:06:34,000
+When it is recommended to use object diagrams.
+
+86
+00:06:34,000 --> 00:06:37,000
+Let's answer this question together.
+
+87
+00:06:37,000 --> 00:06:44,000
+Object diagrams are particularly useful in several scenarios during the software development life cycle.
+
+88
+00:06:44,000 --> 00:06:48,000
+Here are some situations where using an object diagram is beneficial.
+
+89
+00:06:49,000 --> 00:06:51,000
+System implementation.
+
+90
+00:06:52,000 --> 00:06:59,000
+Object diagrams help visualize and understand how instances of classes interact during the runtime of
+
+91
+00:06:59,000 --> 00:07:00,000
+a system.
+
+92
+00:07:00,000 --> 00:07:04,000
+This is particularly valuable during the implementation phase.
+
+93
+00:07:05,000 --> 00:07:12,000
+Testing and debugging object diagrams are helpful for debugging and testing, providing a clear representation
+
+94
+00:07:12,000 --> 00:07:20,000
+of specific instances and their relationships to identify and resolve issues related to object interactions.
+
+95
+00:07:20,000 --> 00:07:27,000
+You can visualize the state of different objects in the specific moment of time when defect or error
+
+96
+00:07:27,000 --> 00:07:28,000
+happens.
+
+97
+00:07:28,000 --> 00:07:34,000
+You can visualize how objects are connected between each other, and this will give you a better picture
+
+98
+00:07:34,000 --> 00:07:38,000
+of what is going on in the system when error happens, for example.
+
+99
+00:07:39,000 --> 00:07:40,000
+Scenario.
+
+100
+00:07:40,000 --> 00:07:41,000
+Illustration.
+
+101
+00:07:41,000 --> 00:07:49,000
+Object diagrams are effective for illustrating specific scenarios or use cases demonstrating how objects
+
+102
+00:07:49,000 --> 00:07:51,000
+collaborate in a particular situation.
+
+103
+00:07:52,000 --> 00:07:54,000
+Verification of relationships.
+
+104
+00:07:55,000 --> 00:08:01,000
+Object diagrams help verify that the relationships defined in the class diagrams are correctly implemented
+
+105
+00:08:01,000 --> 00:08:02,000
+at the runtime.
+
+106
+00:08:02,000 --> 00:08:07,000
+This is valuable for ensuring that the system behaves as intended.
+
+107
+00:08:08,000 --> 00:08:15,000
+Real world scenarios when you want to show how classes and their relationships are realized in a concrete,
+
+108
+00:08:15,000 --> 00:08:17,000
+real world context.
+
+109
+00:08:17,000 --> 00:08:20,000
+Object diagrams become crucial.
+
+110
+00:08:21,000 --> 00:08:22,000
+State representation.
+
+111
+00:08:22,000 --> 00:08:29,000
+Object diagrams are effective for representing the state of the system at a specific moment, helping
+
+112
+00:08:29,000 --> 00:08:34,000
+to understand how objects exist and collaborate during that state.
+
+113
+00:08:35,000 --> 00:08:38,000
+Let's now talk about elements of object diagram.
+
+114
+00:08:38,000 --> 00:08:43,000
+To be honest, there is not so many things to talk about here.
+
+115
+00:08:44,000 --> 00:08:51,000
+If you watched lesson about class diagram where we removed class element, then you already know the
+
+116
+00:08:51,000 --> 00:08:53,000
+key elements of object diagram.
+
+117
+00:08:53,000 --> 00:09:00,000
+The main element of object diagram is object and we use class icon to visualize it.
+
+118
+00:09:01,000 --> 00:09:07,000
+It consists from the class name, list of attributes, and specification of their values.
+
+119
+00:09:08,000 --> 00:09:09,000
+Methods are.
+
+120
+00:09:09,000 --> 00:09:15,000
+Operations or behaviors are typically not directly depicted on object diagrams.
+
+121
+00:09:15,000 --> 00:09:22,000
+Object diagrams primarily focus on representing the instances of classes, their relationships, and
+
+122
+00:09:22,000 --> 00:09:26,000
+the current state of the system at a specific point in time.
+
+123
+00:09:26,000 --> 00:09:33,000
+While attributes may be shown within the object rectangles to represent the current values.
+
+124
+00:09:33,000 --> 00:09:39,000
+Methods are generally considered part of the behavior of the class rather than the state.
+
+125
+00:09:40,000 --> 00:09:46,000
+In case there are multiple objects of the same type, you can come up with some prefix and use it with
+
+126
+00:09:46,000 --> 00:09:53,000
+indexing, or to use full variables names in order to visualize state of execution of your program.
+
+127
+00:09:54,000 --> 00:10:00,000
+And in this way, it would be easier for you and readers of the diagram to build relations between the
+
+128
+00:10:00,000 --> 00:10:03,000
+diagram and the code in program.
+
+129
+00:10:03,000 --> 00:10:12,000
+For example, if you have multiple objects of department type, just use the one column and object type,
+
+130
+00:10:12,000 --> 00:10:16,000
+then D two column and object type.
+
+131
+00:10:16,000 --> 00:10:22,000
+Again, these are names or identifiers assigned to individual objects.
+
+132
+00:10:22,000 --> 00:10:25,000
+Instances of classes in the object diagram.
+
+133
+00:10:26,000 --> 00:10:32,000
+The letter D in this example, followed by a number or identifier, helps differentiate between different
+
+134
+00:10:32,000 --> 00:10:39,000
+instances of the same class, especially when multiple objects of the same class exist in the diagram.
+
+135
+00:10:40,000 --> 00:10:46,000
+Next to attributes, put equal sign and specify value of each attribute.
+
+136
+00:10:47,000 --> 00:10:49,000
+Another element is linked.
+
+137
+00:10:49,000 --> 00:10:52,000
+You can connect objects between each other.
+
+138
+00:10:53,000 --> 00:10:56,000
+Use association element for that.
+
+139
+00:10:57,000 --> 00:10:59,000
+In UML object diagrams.
+
+140
+00:10:59,000 --> 00:11:06,000
+Regular associations are commonly used to depict relationships between objects, while aggregation and
+
+141
+00:11:06,000 --> 00:11:11,000
+composition relationships are theoretically applicable in object diagrams.
+
+142
+00:11:11,000 --> 00:11:14,000
+They are less commonly used in practice.
+
+143
+00:11:15,000 --> 00:11:22,000
+The reason for this is that object diagrams typically focus on representing specific instances of classes
+
+144
+00:11:22,000 --> 00:11:28,000
+at a particular point in time, and the finer nuances of aggregation and composition.
+
+145
+00:11:28,000 --> 00:11:35,000
+Relationships may be more relevant at the class level rather than the instance level, and will be depicted
+
+146
+00:11:35,000 --> 00:11:39,000
+on the class diagram instead of the object diagram.
+
+147
+00:11:40,000 --> 00:11:44,000
+Let's review requirements for examples that we are going to draw today.
+
+148
+00:11:44,000 --> 00:11:46,000
+Everything is simple.
+
+149
+00:11:46,000 --> 00:11:49,000
+I suggest us to visualize the following scenario.
+
+150
+00:11:50,000 --> 00:11:51,000
+We have five objects.
+
+151
+00:11:51,000 --> 00:11:52,000
+They are.
+
+152
+00:11:53,000 --> 00:11:53,000
+Company.
+
+153
+00:11:54,000 --> 00:11:56,000
+The first marketing department.
+
+154
+00:11:56,000 --> 00:11:59,000
+The second I.T. department.
+
+155
+00:11:59,000 --> 00:12:02,000
+Both of them are objects of department type.
+
+156
+00:12:03,000 --> 00:12:08,000
+One employee object and anonymous object contact information.
+
+157
+00:12:09,000 --> 00:12:11,000
+What is anonymous object?
+
+158
+00:12:11,000 --> 00:12:18,000
+An anonymous object, in the context of programming and object oriented languages, refers to an object
+
+159
+00:12:18,000 --> 00:12:23,000
+that is created without assigning it a specific name or identifier.
+
+160
+00:12:23,000 --> 00:12:30,000
+Instead of creating an object and giving it a name like assigning it to a variable, an anonymous object
+
+161
+00:12:30,000 --> 00:12:35,000
+is created on the fly for a specific purpose or immediate use.
+
+162
+00:12:35,000 --> 00:12:43,000
+The term anonymous object is more commonly used in the context of languages that allow object creation
+
+163
+00:12:43,000 --> 00:12:46,000
+and manipulation, without explicitly naming the object.
+
+164
+00:12:47,000 --> 00:12:52,000
+It emphasizes the idea that the object doesn't have a persistent identifier.
+
+165
+00:12:52,000 --> 00:12:56,000
+It exists temporarily for a specific purpose.
+
+166
+00:12:56,000 --> 00:13:02,000
+The following connections between objects to departments are associated with a company.
+
+167
+00:13:03,000 --> 00:13:10,000
+Employee is associated with the first department, marketing department and contact information.
+
+168
+00:13:10,000 --> 00:13:16,000
+Object is associated with employee object regarding class attributes and state of objects.
+
+169
+00:13:16,000 --> 00:13:18,000
+I'll leave it up to you.
+
+170
+00:13:18,000 --> 00:13:20,000
+Come up with some meaningful data.
+
+171
+00:13:20,000 --> 00:13:21,000
+That's it.
+
+172
+00:13:22,000 --> 00:13:29,000
+As always, I encourage you to try to draw the diagram first and once you try it, you can come back
+
+173
+00:13:29,000 --> 00:13:33,000
+to this video and review my solution and my diagram.
+
+174
+00:13:33,000 --> 00:13:39,000
+In case you have any questions, feel free to post your questions below the video and I will be happy
+
+175
+00:13:39,000 --> 00:13:40,000
+to answer.
+
+176
+00:13:41,000 --> 00:13:45,000
+To draw object diagram I'm going to use diagrams dot net tool.
+
+177
+00:13:46,000 --> 00:13:49,000
+I will not use any of predefined templates.
+
+178
+00:13:50,000 --> 00:13:57,000
+I started from the blank template and used basically just two elements from our icons library.
+
+179
+00:13:57,000 --> 00:14:00,000
+It is just class diagram and association.
+
+180
+00:14:01,000 --> 00:14:04,000
+As you can see, I created instances of all objects.
+
+181
+00:14:05,000 --> 00:14:07,000
+I have two instances of department type.
+
+182
+00:14:07,000 --> 00:14:11,000
+That's why I used D1 and D2 identifiers.
+
+183
+00:14:11,000 --> 00:14:15,000
+Or you can use variable names in case they are not known.
+
+184
+00:14:16,000 --> 00:14:21,000
+The main goal is to achieve the best possible readability of the diagram.
+
+185
+00:14:22,000 --> 00:14:25,000
+I added properties and set up values for them.
+
+186
+00:14:25,000 --> 00:14:32,000
+That's why you can see that such type of diagram can be useful during troubleshooting of some specific
+
+187
+00:14:32,000 --> 00:14:37,000
+situation that happened at runtime, or during the defect fixing.
+
+188
+00:14:37,000 --> 00:14:43,000
+We can use object diagram to visualize the state of the system at the specific moment of time.
+
+189
+00:14:43,000 --> 00:14:50,000
+There was also requirement about visualization of anonymous object and here it is.
+
+190
+00:14:50,000 --> 00:14:52,000
+Contact information.
+
+191
+00:14:52,000 --> 00:14:55,000
+I didn't specify that it is assigned to any variable.
+
+192
+00:14:55,000 --> 00:15:00,000
+I just created association with employee object and that's it.
+
+193
+00:15:00,000 --> 00:15:06,000
+And here in node I specified how this may look like in the source code.
+
+194
+00:15:06,000 --> 00:15:14,000
+So basically during the instantiation of the employee object you just created contact information object
+
+195
+00:15:14,000 --> 00:15:18,000
+without assigning it to any specific variable in the source code.
+
+196
+00:15:19,000 --> 00:15:22,000
+And this is how it can be visualized.
+
+197
+00:15:22,000 --> 00:15:23,000
+That's it.
+
+198
+00:15:23,000 --> 00:15:24,000
+Regarding the diagram.
+
+199
+00:15:24,000 --> 00:15:27,000
+Let's make a conclusion about object diagram.
+
+200
+00:15:28,000 --> 00:15:35,000
+In conclusion, the object diagram in UML serves as a powerful visual tool for representing specific
+
+201
+00:15:35,000 --> 00:15:40,000
+instances of classes within a system at a given point in time.
+
+202
+00:15:40,000 --> 00:15:47,000
+It allows software designers and stakeholders to gain a concrete understanding of how objects interact
+
+203
+00:15:47,000 --> 00:15:52,000
+and collaborate during runtime by providing a snapshot of the system state.
+
+204
+00:15:52,000 --> 00:16:00,000
+Object diagrams enhance the comprehension of complex systems, helping in the identification of relationships,
+
+205
+00:16:00,000 --> 00:16:03,000
+associations, and instances.
+
+206
+00:16:03,000 --> 00:16:10,000
+The diagrams simplicity and focus on real world scenarios make it a valuable asset during the design,
+
+207
+00:16:10,000 --> 00:16:14,000
+testing, and debugging phases of software development.
+
+208
+00:16:14,000 --> 00:16:19,000
+Facilitating clear communication among team members and stakeholders.
+
+209
+00:16:19,000 --> 00:16:24,000
+Let's recap now what we have learned today from the lesson.
+
+210
+00:16:25,000 --> 00:16:26,000
+We learned object diagram.
+
+211
+00:16:27,000 --> 00:16:31,000
+Now you know the difference between class diagram and object diagram.
+
+212
+00:16:31,000 --> 00:16:35,000
+Also, we discussed goals and purposes of object diagram.
+
+213
+00:16:36,000 --> 00:16:43,000
+You learned when to use object diagram in which cases I explained elements of object diagram.
+
+214
+00:16:43,000 --> 00:16:47,000
+And at the end of the lesson we reviewed real life practical example.
+
+215
+00:16:48,000 --> 00:16:49,000
+That's all for this lesson.
+
+216
+00:16:49,000 --> 00:16:51,000
+Thanks a lot for your attention.
+
+217
+00:16:51,000 --> 00:16:54,000
+Have a great day and see you in the next lesson.
+
diff --git a/106 - Structural Diagrams/002 Object-Diagram-Company-Structure.url b/106 - Structural Diagrams/002 Object-Diagram-Company-Structure.url
new file mode 100644
index 0000000000000000000000000000000000000000..8ad727936be05cec8e2e100ec1d7b90656a3a9a6
--- /dev/null
+++ b/106 - Structural Diagrams/002 Object-Diagram-Company-Structure.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1hBULzktjLu634lIz7dA7GNp0RXOnScay/view?usp=sharing
\ No newline at end of file
diff --git a/106 - Structural Diagrams/003 Component Diagram_en.srt b/106 - Structural Diagrams/003 Component Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..14c477bc30933ce30875759a68465ec552c155cb
--- /dev/null
+++ b/106 - Structural Diagrams/003 Component Diagram_en.srt
@@ -0,0 +1,1192 @@
+1
+00:00:05,000 --> 00:00:10,000
+Hello dear students, in this lesson we are going to learn Component diagram.
+
+2
+00:00:10,000 --> 00:00:14,000
+We are going to start the lesson from learning the definition of component diagram.
+
+3
+00:00:14,000 --> 00:00:20,000
+We are going to learn what a component is and why this diagram is called component diagram.
+
+4
+00:00:20,000 --> 00:00:24,000
+I will explain goals and purposes of component diagram.
+
+5
+00:00:24,000 --> 00:00:30,000
+We will discuss when and in which cases it is recommended to use this type of diagram.
+
+6
+00:00:30,000 --> 00:00:37,000
+Also, we will learn such elements of component diagram as component assembly, connector and interface,
+
+7
+00:00:38,000 --> 00:00:40,000
+port and dependency relationship.
+
+8
+00:00:41,000 --> 00:00:46,000
+And at the end of the lesson, we'll create our own component diagram in order to practice our skills.
+
+9
+00:00:47,000 --> 00:00:48,000
+Let's start our lesson.
+
+10
+00:00:49,000 --> 00:00:54,000
+Let's start the lesson from learning the definition of component diagram.
+
+11
+00:00:54,000 --> 00:01:01,000
+A component diagram is a type of structural diagram in UML that is used to model the high level structure
+
+12
+00:01:01,000 --> 00:01:02,000
+of a software system.
+
+13
+00:01:02,000 --> 00:01:09,000
+It focuses on the organization of the components or building blocks that make up a system and their
+
+14
+00:01:09,000 --> 00:01:10,000
+relationships.
+
+15
+00:01:10,000 --> 00:01:18,000
+Components can represent physical entities like libraries, files, or executables, or they can represent
+
+16
+00:01:18,000 --> 00:01:21,000
+logical entities like classes or modules.
+
+17
+00:01:21,000 --> 00:01:28,000
+The primary purpose of component Diagram is to visualize how different components interact and collaborate
+
+18
+00:01:28,000 --> 00:01:29,000
+within the system.
+
+19
+00:01:29,000 --> 00:01:36,000
+A component diagram serves the purpose of breaking down a large system into smaller, more manageable
+
+20
+00:01:36,000 --> 00:01:41,000
+components by representing the components and their relationships.
+
+21
+00:01:41,000 --> 00:01:45,000
+A component diagram contributes to forming an executable system.
+
+22
+00:01:45,000 --> 00:01:50,000
+It shows how various components come together to create a functioning system.
+
+23
+00:01:51,000 --> 00:01:57,000
+The diagram visualizes both the relationships between these components and their overall organization
+
+24
+00:01:57,000 --> 00:01:59,000
+within the system.
+
+25
+00:01:59,000 --> 00:02:06,000
+The visual representation helps stakeholders understand how different parts of the system work together.
+
+26
+00:02:06,000 --> 00:02:11,000
+So a component is a key concept of the component diagram.
+
+27
+00:02:11,000 --> 00:02:13,000
+But what is a component?
+
+28
+00:02:13,000 --> 00:02:20,000
+Like we already talked about, components can represent physical entities like libraries files or executables.
+
+29
+00:02:20,000 --> 00:02:25,000
+Or they can represent logical entities like classes or modules.
+
+30
+00:02:25,000 --> 00:02:33,000
+Components are often described as black boxes because they are internal workings are abstracted away.
+
+31
+00:02:33,000 --> 00:02:38,000
+Their behavior is defined by the interfaces they provide and require.
+
+32
+00:02:38,000 --> 00:02:46,000
+This means that you can use a component without needing to know its internal complexities, much like
+
+33
+00:02:46,000 --> 00:02:50,000
+interacting with a device without knowing its inner workings.
+
+34
+00:02:50,000 --> 00:02:55,000
+Components in this context are individual units of the system.
+
+35
+00:02:55,000 --> 00:02:58,000
+They are replaceable and executable entities.
+
+36
+00:02:58,000 --> 00:03:05,000
+The implementation details of a component are typically hidden, and components rely on interfaces to
+
+37
+00:03:05,000 --> 00:03:07,000
+execute functions.
+
+38
+00:03:07,000 --> 00:03:12,000
+Let's learn now what a main goals and purposes of component diagram.
+
+39
+00:03:12,000 --> 00:03:15,000
+The first one decomposing a large system.
+
+40
+00:03:16,000 --> 00:03:23,000
+A primary purpose of a component diagram is to decompose a complex large system into smaller, more
+
+41
+00:03:23,000 --> 00:03:25,000
+comprehensible components.
+
+42
+00:03:26,000 --> 00:03:31,000
+This decomposition helps in managing the system's complexity and promotes modularity.
+
+43
+00:03:32,000 --> 00:03:34,000
+System architecture.
+
+44
+00:03:34,000 --> 00:03:35,000
+Visualization.
+
+45
+00:03:35,000 --> 00:03:42,000
+Component diagrams help visualize and represent the high level architecture of a software system, showing
+
+46
+00:03:42,000 --> 00:03:46,000
+the major building blocks and their relationships.
+
+47
+00:03:46,000 --> 00:03:49,000
+This helps in understanding the system structure.
+
+48
+00:03:50,000 --> 00:03:52,000
+Component reusability.
+
+49
+00:03:52,000 --> 00:03:59,000
+Component diagrams promote component reusability by clearly defining and organizing components.
+
+50
+00:03:59,000 --> 00:04:06,000
+It becomes easier to reuse them in different parts of the system or in other projects.
+
+51
+00:04:06,000 --> 00:04:08,000
+Dependency analysis.
+
+52
+00:04:08,000 --> 00:04:15,000
+This type of diagram provides a means to analyze and understand dependencies between components.
+
+53
+00:04:15,000 --> 00:04:21,000
+This is crucial for managing the relationships between different parts of the system, and ensuring
+
+54
+00:04:21,000 --> 00:04:26,000
+that changes in one component do not disrupt the entire system.
+
+55
+00:04:27,000 --> 00:04:28,000
+System documentation.
+
+56
+00:04:29,000 --> 00:04:34,000
+Component diagrams are valuable for documenting the architecture of a software system.
+
+57
+00:04:34,000 --> 00:04:41,000
+They serve as a reference for system designers, developers, and maintainers, helping them understand
+
+58
+00:04:41,000 --> 00:04:42,000
+the system structure.
+
+59
+00:04:43,000 --> 00:04:45,000
+Modularity and maintainability.
+
+60
+00:04:46,000 --> 00:04:52,000
+Component diagrams encourage modularity, which makes systems more maintainable.
+
+61
+00:04:52,000 --> 00:04:59,000
+It is easier to make changes to a single component without affecting the entire system, provided that
+
+62
+00:04:59,000 --> 00:05:02,000
+components interface remains consistent.
+
+63
+00:05:03,000 --> 00:05:05,000
+System design and planning.
+
+64
+00:05:05,000 --> 00:05:11,000
+Component diagram plays a crucial role in system design and planning, allowing designers to see how
+
+65
+00:05:11,000 --> 00:05:15,000
+different components fit together and how they interact.
+
+66
+00:05:15,000 --> 00:05:19,000
+This is essential for making informed design decisions.
+
+67
+00:05:20,000 --> 00:05:21,000
+Communication.
+
+68
+00:05:22,000 --> 00:05:27,000
+Component diagrams facilitate communication among development teams and stakeholders.
+
+69
+00:05:27,000 --> 00:05:34,000
+They provide a visual representation that is easier to understand and discuss, making it a valuable
+
+70
+00:05:34,000 --> 00:05:36,000
+tool for collaboration.
+
+71
+00:05:37,000 --> 00:05:38,000
+Integration planning.
+
+72
+00:05:38,000 --> 00:05:44,000
+They help in planning the integration of various components into the system.
+
+73
+00:05:44,000 --> 00:05:50,000
+Designers can identify the interfaces required for proper integration, reducing integration issues
+
+74
+00:05:50,000 --> 00:05:52,000
+during development.
+
+75
+00:05:53,000 --> 00:05:54,000
+Testing and quality assurance.
+
+76
+00:05:55,000 --> 00:05:57,000
+Component diagrams assist in planning.
+
+77
+00:05:57,000 --> 00:06:02,000
+Testing strategies by showing the components and their interactions.
+
+78
+00:06:02,000 --> 00:06:07,000
+This is essential for quality assurance and ensuring that the system behaves as expected.
+
+79
+00:06:08,000 --> 00:06:13,000
+Scalability and extensibility by representing the systems architecture.
+
+80
+00:06:13,000 --> 00:06:20,000
+Component diagrams enable architects to plan for system scalability and extensibility.
+
+81
+00:06:20,000 --> 00:06:26,000
+They can determine how new components can be added or existing ones extended.
+
+82
+00:06:27,000 --> 00:06:28,000
+Resource allocation.
+
+83
+00:06:28,000 --> 00:06:35,000
+They can help allocate system resource effectively by understanding the components and their dependencies.
+
+84
+00:06:35,000 --> 00:06:42,000
+Architects can make resource allocation decisions, such as where to deploy certain components based
+
+85
+00:06:42,000 --> 00:06:48,000
+on key goals and purposes of the component diagram, and believe you can already understand when it
+
+86
+00:06:48,000 --> 00:06:51,000
+is recommended to use component Diagram and in which cases.
+
+87
+00:06:52,000 --> 00:06:58,000
+But still, let's sum it up and understand in which cases using of component diagram may be a good choice.
+
+88
+00:06:58,000 --> 00:07:00,000
+System design and planning.
+
+89
+00:07:00,000 --> 00:07:06,000
+Component diagrams are essential in the early stages of system design and planning.
+
+90
+00:07:06,000 --> 00:07:12,000
+They provide a visual representation of the system's architecture, helping designers define major components
+
+91
+00:07:12,000 --> 00:07:18,000
+and their relationships, which is crucial for making informed design decisions.
+
+92
+00:07:18,000 --> 00:07:20,000
+Modular system development.
+
+93
+00:07:21,000 --> 00:07:26,000
+Component diagrams are valuable when aiming to develop modular software systems.
+
+94
+00:07:26,000 --> 00:07:33,000
+They assist in breaking down complex systems into smaller, manageable components, promoting modularity
+
+95
+00:07:33,000 --> 00:07:36,000
+and facilitating component based development.
+
+96
+00:07:37,000 --> 00:07:38,000
+Dependency analysis.
+
+97
+00:07:39,000 --> 00:07:43,000
+Use component diagrams to analyze dependencies between system components.
+
+98
+00:07:43,000 --> 00:07:50,000
+These diagrams help you identify how components rely on each other, making it easier to manage and
+
+99
+00:07:50,000 --> 00:07:55,000
+minimize dependencies, reducing potential issues during development.
+
+100
+00:07:55,000 --> 00:07:57,000
+Integration planning.
+
+101
+00:07:57,000 --> 00:08:01,000
+When integrating third party libraries or modules into a project.
+
+102
+00:08:01,000 --> 00:08:06,000
+Component diagrams help plan and visualize the integration process.
+
+103
+00:08:06,000 --> 00:08:11,000
+They enable you to understand how the external components fit into the overall system.
+
+104
+00:08:12,000 --> 00:08:14,000
+Communication and collaboration.
+
+105
+00:08:14,000 --> 00:08:18,000
+Component diagrams serve as a powerful communication tool.
+
+106
+00:08:18,000 --> 00:08:24,000
+They help in conveying architectural concepts to development teams, stakeholders, and clients.
+
+107
+00:08:24,000 --> 00:08:32,000
+Fostering collaboration and ensuring a common understanding of the system structure among project participants.
+
+108
+00:08:33,000 --> 00:08:34,000
+System documentation.
+
+109
+00:08:35,000 --> 00:08:39,000
+Component diagrams are a crucial part of a system documentation.
+
+110
+00:08:39,000 --> 00:08:47,000
+They provide a clear and concise representation of the system structure, which can be used for reference
+
+111
+00:08:47,000 --> 00:08:50,000
+and as documentation for developers and stakeholders.
+
+112
+00:08:51,000 --> 00:08:53,000
+Legacy system analysis.
+
+113
+00:08:53,000 --> 00:09:00,000
+When working with legacy systems, component diagrams can help in reverse engineering the existing architecture
+
+114
+00:09:00,000 --> 00:09:04,000
+and identifying opportunities for improvement and modernization.
+
+115
+00:09:04,000 --> 00:09:11,000
+These use cases highlight the importance of component diagrams in system design, modularity, dependency
+
+116
+00:09:11,000 --> 00:09:17,000
+analysis, integration, and effective communication in software engineering projects.
+
+117
+00:09:17,000 --> 00:09:23,000
+And before we jump to practical examples and exercises, let's learn key elements of component Diagram
+
+118
+00:09:23,000 --> 00:09:27,000
+and understand how they are notated on the diagram.
+
+119
+00:09:27,000 --> 00:09:33,000
+In a component diagram, there are several elements or components that work together to represent the
+
+120
+00:09:33,000 --> 00:09:36,000
+structure and relationships within the software system.
+
+121
+00:09:36,000 --> 00:09:39,000
+Let's review these elements one by one.
+
+122
+00:09:40,000 --> 00:09:43,000
+The first element is the most important one component.
+
+123
+00:09:44,000 --> 00:09:48,000
+A component is a central element in a component diagram.
+
+124
+00:09:48,000 --> 00:09:51,000
+It represents a self-contained part of the system.
+
+125
+00:09:51,000 --> 00:09:58,000
+Components can be physical executables, files, libraries, or logical classes.
+
+126
+00:09:58,000 --> 00:09:59,000
+Modules.
+
+127
+00:09:59,000 --> 00:10:05,000
+Components are typically depicted as rectangles with special character in the top right corner, and
+
+128
+00:10:05,000 --> 00:10:14,000
+contains components named inside assembly, connector and interface, also known as ball and socket
+
+129
+00:10:14,000 --> 00:10:20,000
+notation and assembly connector, is used to show the relationships and connections between components
+
+130
+00:10:20,000 --> 00:10:22,000
+within the system.
+
+131
+00:10:22,000 --> 00:10:27,000
+It represents how components are combined to create a more comprehensive system.
+
+132
+00:10:28,000 --> 00:10:36,000
+Interfaces in component diagrams show how components are wired together and interact with each other.
+
+133
+00:10:37,000 --> 00:10:44,000
+The assembly connector allows linking the components required interface represented with a semi-circle
+
+134
+00:10:44,000 --> 00:10:53,000
+and a solid line, with the provided interface represented with a circle and solid line of another component.
+
+135
+00:10:53,000 --> 00:10:59,000
+This shows that one component is providing the service that the other is required.
+
+136
+00:11:00,000 --> 00:11:08,000
+Most likely you have a question how to identify from which side I need to specify semi-circle and from
+
+137
+00:11:08,000 --> 00:11:10,000
+which side I need to specify circle.
+
+138
+00:11:10,000 --> 00:11:13,000
+Let's figure it out together.
+
+139
+00:11:13,000 --> 00:11:17,000
+Imagine that we have two components order and product.
+
+140
+00:11:18,000 --> 00:11:22,000
+And we want to show that order contains product and requires products.
+
+141
+00:11:22,000 --> 00:11:23,000
+Interface.
+
+142
+00:11:24,000 --> 00:11:31,000
+The standard convention in component diagrams is that semi-circle side of the assembly connector points
+
+143
+00:11:31,000 --> 00:11:36,000
+from the container or assembly to the port being contained.
+
+144
+00:11:37,000 --> 00:11:44,000
+This means that the product component is the port, and the order component is the whole or assembly
+
+145
+00:11:44,000 --> 00:11:46,000
+that contains the part.
+
+146
+00:11:46,000 --> 00:11:55,000
+To clarify, one more time order containing component is the assembly of the whole and product contained
+
+147
+00:11:55,000 --> 00:11:59,000
+component is the part that is within the assembly or hall.
+
+148
+00:12:00,000 --> 00:12:07,000
+The assembly connector with a semi-circle side should point from order to product to represent the containment
+
+149
+00:12:07,000 --> 00:12:09,000
+relationship accurately.
+
+150
+00:12:10,000 --> 00:12:17,000
+The part with a semicircle is called required interface, and part with a circle is called Provided
+
+151
+00:12:17,000 --> 00:12:18,000
+Interface.
+
+152
+00:12:18,000 --> 00:12:22,000
+The next element we are going to talk about is port.
+
+153
+00:12:22,000 --> 00:12:29,000
+A port is a point of connection on a component that allows it to interact with other components.
+
+154
+00:12:29,000 --> 00:12:35,000
+Ports are often used to represent the interaction points of a component with its surroundings.
+
+155
+00:12:36,000 --> 00:12:42,000
+Using ports with component diagrams allows for service or behavior to be specified to its environment,
+
+156
+00:12:42,000 --> 00:12:47,000
+as well as a service or behavior that a component requires.
+
+157
+00:12:48,000 --> 00:12:52,000
+Ports may specify inputs and outputs as they can operate.
+
+158
+00:12:52,000 --> 00:12:53,000
+Bidirectionally.
+
+159
+00:12:53,000 --> 00:12:59,000
+Ports are typically shown as small squares on the boundary of the component representing interaction
+
+160
+00:12:59,000 --> 00:13:00,000
+points.
+
+161
+00:13:01,000 --> 00:13:03,000
+Dependency relationship.
+
+162
+00:13:03,000 --> 00:13:08,000
+Although you can show more detail about the relationship between two components using the ball and socket
+
+163
+00:13:09,000 --> 00:13:16,000
+notation provided interface and required interface that we already learned, or assembly connector,
+
+164
+00:13:16,000 --> 00:13:22,000
+you can just as well use a dependency arrow to show the relationship between two components.
+
+165
+00:13:23,000 --> 00:13:28,000
+A dependency relationship indicates that one component relies on another component.
+
+166
+00:13:28,000 --> 00:13:34,000
+It represents a connection between components, where one component uses the services or functionalities
+
+167
+00:13:34,000 --> 00:13:36,000
+provided by another.
+
+168
+00:13:36,000 --> 00:13:44,000
+Dependencies are shown as arrows, with a dashed line connecting the dependent component to the component
+
+169
+00:13:44,000 --> 00:13:45,000
+it depends on.
+
+170
+00:13:46,000 --> 00:13:49,000
+So we learn key elements of component diagram.
+
+171
+00:13:50,000 --> 00:13:53,000
+Let's now review examples that we are going to draw today.
+
+172
+00:13:53,000 --> 00:14:00,000
+In order to help you understand component diagram we are going to use simple and straightforward example.
+
+173
+00:14:00,000 --> 00:14:06,000
+I like to explain different concepts on the example of online shops, because all of us are familiar
+
+174
+00:14:06,000 --> 00:14:13,000
+with online shops, and it would be easier for you to understand the example on the component diagram,
+
+175
+00:14:13,000 --> 00:14:16,000
+I would like to show the following components.
+
+176
+00:14:16,000 --> 00:14:18,000
+Product order.
+
+177
+00:14:18,000 --> 00:14:26,000
+Customer account order is going to have two ports with required interfaces for product details and for
+
+178
+00:14:26,000 --> 00:14:32,000
+customer details, and product and customer components will provide interfaces.
+
+179
+00:14:32,000 --> 00:14:36,000
+We'll establish association between account and customer.
+
+180
+00:14:36,000 --> 00:14:43,000
+And I want us to visualize dependency between order and account during the payment process.
+
+181
+00:14:44,000 --> 00:14:49,000
+As always, I would recommend you to spend some time thinking about how you would draw this diagram.
+
+182
+00:14:49,000 --> 00:14:56,000
+Try to do it by yourself and then come back to this video and we'll review my solution together.
+
+183
+00:14:57,000 --> 00:15:04,000
+As usual, you can find the reference to the UML diagram and examples that I prepared for you in attachments
+
+184
+00:15:04,000 --> 00:15:05,000
+to the lesson.
+
+185
+00:15:05,000 --> 00:15:10,000
+Feel free to copy it and work with it to understand component Diagram better.
+
+186
+00:15:11,000 --> 00:15:17,000
+In case you would have any questions, please post your questions below the video and I will be happy
+
+187
+00:15:17,000 --> 00:15:17,000
+to answer.
+
+188
+00:15:18,000 --> 00:15:25,000
+I believe that by this moment in our course you are already experienced user of diagrams dot net tool.
+
+189
+00:15:25,000 --> 00:15:31,000
+Like we already discussed in previous lessons, feel free to check that you added all required icons
+
+190
+00:15:31,000 --> 00:15:32,000
+that you need.
+
+191
+00:15:33,000 --> 00:15:40,000
+For example, I recommend you to add 2.5 group because it contains icons that we need for this lesson.
+
+192
+00:15:41,000 --> 00:15:44,000
+Use search bar to find required icons.
+
+193
+00:15:44,000 --> 00:15:47,000
+For example, we can start from creating components.
+
+194
+00:15:47,000 --> 00:15:52,000
+Just add all required components in the icons library.
+
+195
+00:15:52,000 --> 00:15:54,000
+You have such element as port.
+
+196
+00:15:54,000 --> 00:15:56,000
+With required interface.
+
+197
+00:15:56,000 --> 00:16:03,000
+You can use it to add to the order, and you can select port with provided interface and add it to the
+
+198
+00:16:03,000 --> 00:16:05,000
+product and customer components.
+
+199
+00:16:06,000 --> 00:16:09,000
+Let's talk about ports and assembly connectors.
+
+200
+00:16:09,000 --> 00:16:16,000
+My students ask me whether they need to use ports together with assembly connectors or not, because
+
+201
+00:16:16,000 --> 00:16:21,000
+very often assembly connectors are used without ports by just connecting components.
+
+202
+00:16:21,000 --> 00:16:22,000
+And that's it.
+
+203
+00:16:23,000 --> 00:16:29,000
+So let's try to answer this question and understand when to use ports with assembly connectors, and
+
+204
+00:16:29,000 --> 00:16:34,000
+when we can use just assembly connectors in component diagrams.
+
+205
+00:16:34,000 --> 00:16:41,000
+The use of assembly connectors together with port icons is not necessarily required to represent component
+
+206
+00:16:41,000 --> 00:16:42,000
+connections.
+
+207
+00:16:42,000 --> 00:16:49,000
+Assembly connectors are typically used to show how components are connected or assembled together,
+
+208
+00:16:49,000 --> 00:16:54,000
+and ports are used to indicate interaction points on components.
+
+209
+00:16:54,000 --> 00:17:01,000
+Whether you use assembly connectors together with port icons depends on the level of detail and clarity
+
+210
+00:17:01,000 --> 00:17:03,000
+you want to convey in your diagram.
+
+211
+00:17:03,000 --> 00:17:06,000
+Let's review some considerations.
+
+212
+00:17:07,000 --> 00:17:09,000
+Assembly connectors and ports together.
+
+213
+00:17:09,000 --> 00:17:16,000
+If you want to show both how components are assembled and the specific interaction points between them,
+
+214
+00:17:16,000 --> 00:17:20,000
+you can use assembly connectors along with port icons.
+
+215
+00:17:20,000 --> 00:17:26,000
+This approach provides a more detailed and comprehensive representation of the system's architecture.
+
+216
+00:17:27,000 --> 00:17:35,000
+Assembly connectors only if you primarily focus on how components are connected or assembled, and you
+
+217
+00:17:35,000 --> 00:17:41,000
+are not concerned with showing specific interaction points, you can use assembly connectors without
+
+218
+00:17:41,000 --> 00:17:43,000
+using port icons.
+
+219
+00:17:43,000 --> 00:17:50,000
+This simplifies the diagram and can be useful when the interaction points are not the main emphasis.
+
+220
+00:17:51,000 --> 00:17:58,000
+Port icons only if you want to emphasize the interaction points on components, but are not particularly
+
+221
+00:17:58,000 --> 00:18:02,000
+concerned with showing how components are assembled or connected.
+
+222
+00:18:02,000 --> 00:18:05,000
+You can use port icons alone.
+
+223
+00:18:05,000 --> 00:18:10,000
+This approach is appropriate when you want to highlight the interfaces and interaction capabilities
+
+224
+00:18:10,000 --> 00:18:11,000
+of the components.
+
+225
+00:18:12,000 --> 00:18:15,000
+So I decided to visualize it in this way.
+
+226
+00:18:15,000 --> 00:18:21,000
+But you already know that you can use assembly connectors with or without ports.
+
+227
+00:18:21,000 --> 00:18:26,000
+The next thing to consider is the use of association on the component diagram.
+
+228
+00:18:27,000 --> 00:18:32,000
+You can see that at simple association between customer component and account component.
+
+229
+00:18:33,000 --> 00:18:39,000
+Can I use straight line between components and can I use simple association on the component diagram?
+
+230
+00:18:40,000 --> 00:18:46,000
+In a component diagram, it is allowed to use a straight line between components to represent a general
+
+231
+00:18:46,000 --> 00:18:49,000
+relationship or association between them.
+
+232
+00:18:50,000 --> 00:18:55,000
+This type of connection is typically referred to as an association relationship.
+
+233
+00:18:55,000 --> 00:19:01,000
+Here are some key points about association relationships represented by straight lines in component
+
+234
+00:19:01,000 --> 00:19:02,000
+diagrams.
+
+235
+00:19:03,000 --> 00:19:05,000
+Association relationship.
+
+236
+00:19:05,000 --> 00:19:12,000
+This is a basic type of connection that signifies a general or unspecified relationship between components.
+
+237
+00:19:12,000 --> 00:19:19,000
+It doesn't convey specific details about the nature of the relationship, such as dependency or aggregation.
+
+238
+00:19:20,000 --> 00:19:21,000
+Use.
+
+239
+00:19:21,000 --> 00:19:28,000
+Straight lines are used to show that there is some form of connection or interaction between the components,
+
+240
+00:19:28,000 --> 00:19:32,000
+but the specific details of the relationship are not emphasized.
+
+241
+00:19:33,000 --> 00:19:34,000
+No arrows.
+
+242
+00:19:35,000 --> 00:19:41,000
+Unlike dependency relationships, association relationships typically do not have arrows at the ends
+
+243
+00:19:41,000 --> 00:19:42,000
+of the line.
+
+244
+00:19:43,000 --> 00:19:45,000
+Simplified connection.
+
+245
+00:19:45,000 --> 00:19:51,000
+Association relationships are often used for simplicity when you want to show that components are related,
+
+246
+00:19:51,000 --> 00:19:54,000
+without getting into the specific type of relationship.
+
+247
+00:19:55,000 --> 00:20:01,000
+While association relationships can be used, it's important to note that if the nature of the relationship
+
+248
+00:20:01,000 --> 00:20:08,000
+is more specific, it may be better to use appropriate notation for that specific relationship, such
+
+249
+00:20:08,000 --> 00:20:14,000
+as dependency arrow for dependency relationships or assembly connectors to show component assembly.
+
+250
+00:20:15,000 --> 00:20:21,000
+However, using a straight line for a general association is allowed and can be a useful way to represent
+
+251
+00:20:21,000 --> 00:20:24,000
+less specific connections between components.
+
+252
+00:20:24,000 --> 00:20:29,000
+For the sake of the demo, I decided also to use association in our example.
+
+253
+00:20:30,000 --> 00:20:37,000
+I didn't specify association as a component diagram specific element, because this is a general element
+
+254
+00:20:37,000 --> 00:20:43,000
+that we use in different UML diagrams, and we already learned it in previous lessons.
+
+255
+00:20:43,000 --> 00:20:48,000
+So we visualized all the connections besides the last one.
+
+256
+00:20:48,000 --> 00:20:50,000
+How I can visualize payment.
+
+257
+00:20:51,000 --> 00:20:56,000
+How the connection between order component and account component will look like.
+
+258
+00:20:56,000 --> 00:21:00,000
+To visualize the relationship between the account and all the components.
+
+259
+00:21:00,000 --> 00:21:07,000
+Where I want to represent the payment from the account, I should use a dependency relationship.
+
+260
+00:21:07,000 --> 00:21:15,000
+A dependency relationship in a component diagram indicates that one component relies on or uses another
+
+261
+00:21:15,000 --> 00:21:17,000
+component to some extent.
+
+262
+00:21:17,000 --> 00:21:23,000
+In this case, the order component is dependent on the account component as it relies on the account
+
+263
+00:21:23,000 --> 00:21:25,000
+in order to complete payment.
+
+264
+00:21:25,000 --> 00:21:30,000
+Here is how you can represent this using a dependency relationship.
+
+265
+00:21:30,000 --> 00:21:37,000
+Connect the order component to the account component using a dashed line with an arrow pointing from
+
+266
+00:21:37,000 --> 00:21:40,000
+the order component to the account component.
+
+267
+00:21:40,000 --> 00:21:46,000
+This visually conveys that order component depends on the account component for payment processing,
+
+268
+00:21:46,000 --> 00:21:51,000
+without specifying the nature of the payment processing in detail.
+
+269
+00:21:51,000 --> 00:21:57,000
+Because as you remember on the component diagram, we don't do deep dive in details.
+
+270
+00:21:57,000 --> 00:22:03,000
+We use this type of diagram for high level design and visualizing connection between components.
+
+271
+00:22:03,000 --> 00:22:04,000
+And here we are.
+
+272
+00:22:05,000 --> 00:22:08,000
+That's how our component diagram looks like.
+
+273
+00:22:08,000 --> 00:22:11,000
+Let's make a conclusion about component diagram.
+
+274
+00:22:12,000 --> 00:22:19,000
+In conclusion, the component diagram is a vital modeling tool that offers a high level structural view
+
+275
+00:22:19,000 --> 00:22:21,000
+of a software systems architecture.
+
+276
+00:22:22,000 --> 00:22:28,000
+It provides a clear and intuitive representation of a system's components and their relationships.
+
+277
+00:22:29,000 --> 00:22:35,000
+Component diagrams are particularly valuable in breaking down complex systems into smaller, more manageable
+
+278
+00:22:35,000 --> 00:22:41,000
+parts, promoting modularity and facilitating component based development.
+
+279
+00:22:41,000 --> 00:22:47,000
+They serve as a communication bridge between architects, designers, developers, and stakeholders,
+
+280
+00:22:47,000 --> 00:22:53,000
+ensuring a common understanding of the system structure and helping in effective collaboration throughout
+
+281
+00:22:53,000 --> 00:22:55,000
+the software development process.
+
+282
+00:22:55,000 --> 00:23:03,000
+Furthermore, component diagrams are instrumental in system design and planning, documentation, dependency
+
+283
+00:23:03,000 --> 00:23:07,000
+analysis, integration, and quality assurance overall.
+
+284
+00:23:08,000 --> 00:23:14,000
+Component diagrams play a significant role in simplifying the design and understanding of complex systems,
+
+285
+00:23:14,000 --> 00:23:21,000
+making them an indispensable tool in the field of software engineering and system architecture.
+
+286
+00:23:22,000 --> 00:23:25,000
+Let's recap what we have learned from the lesson.
+
+287
+00:23:25,000 --> 00:23:27,000
+We learned component diagram.
+
+288
+00:23:27,000 --> 00:23:30,000
+Now we know what a component is and why.
+
+289
+00:23:30,000 --> 00:23:33,000
+This diagram type is called component diagram.
+
+290
+00:23:34,000 --> 00:23:40,000
+Now, you know, goals and purposes of component diagram and when in which cases it is recommended to
+
+291
+00:23:40,000 --> 00:23:41,000
+use it.
+
+292
+00:23:41,000 --> 00:23:48,000
+We learned such elements of component diagram as component assembly, connector and interface, port
+
+293
+00:23:48,000 --> 00:23:50,000
+and dependency relationship.
+
+294
+00:23:50,000 --> 00:23:56,000
+And at the end of the lesson we reviewed practical real life example of component diagram in order to
+
+295
+00:23:56,000 --> 00:23:58,000
+practice our skills.
+
+296
+00:23:58,000 --> 00:24:00,000
+That's all for this lesson.
+
+297
+00:24:00,000 --> 00:24:02,000
+Thanks a lot for your attention.
+
+298
+00:24:02,000 --> 00:24:05,000
+Have a great day and see you in the next lesson.
+
diff --git a/106 - Structural Diagrams/003 Component-Diagram-Order-Processing.url b/106 - Structural Diagrams/003 Component-Diagram-Order-Processing.url
new file mode 100644
index 0000000000000000000000000000000000000000..43326a9f4a01846083b122fc0be39b0eb0f166bd
--- /dev/null
+++ b/106 - Structural Diagrams/003 Component-Diagram-Order-Processing.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1c-RAD_hDU4hWXL3KjB-7dq2hG5xJfkMH/view?usp=sharing
\ No newline at end of file
diff --git a/106 - Structural Diagrams/004 Package Diagram_en.srt b/106 - Structural Diagrams/004 Package Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..1e9b9b997e67d6e0736b7734169bdfb1ce24420a
--- /dev/null
+++ b/106 - Structural Diagrams/004 Package Diagram_en.srt
@@ -0,0 +1,1120 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello team!
+
+2
+00:00:06,000 --> 00:00:09,000
+In this lesson we are going to learn package diagram.
+
+3
+00:00:09,000 --> 00:00:14,000
+We are going to start the lesson from learning the definition of the package diagram.
+
+4
+00:00:14,000 --> 00:00:18,000
+I'm going to explain goals and purposes of package diagram.
+
+5
+00:00:18,000 --> 00:00:23,000
+And this will help us to answer the next question when to use package diagram.
+
+6
+00:00:24,000 --> 00:00:30,000
+Then we are going to learn elements of package diagram and notations of these elements.
+
+7
+00:00:30,000 --> 00:00:36,000
+I will explain what is the difference between access dependency and import dependency.
+
+8
+00:00:36,000 --> 00:00:42,000
+And at the end of the lesson we are going to review real life example of order processing system.
+
+9
+00:00:42,000 --> 00:00:44,000
+Let's start our lesson.
+
+10
+00:00:45,000 --> 00:00:48,000
+Let's start from Lenin's definition of the package diagram.
+
+11
+00:00:49,000 --> 00:00:56,000
+A package diagram in UML is a type of structural diagrams that shows how different elements are organized
+
+12
+00:00:56,000 --> 00:00:57,000
+into packages.
+
+13
+00:00:57,000 --> 00:01:03,000
+It is used to depict the organization and arrangement of model elements in a system.
+
+14
+00:01:04,000 --> 00:01:10,000
+Packages are used to group related elements, providing a modular structure to the system design.
+
+15
+00:01:10,000 --> 00:01:16,000
+Let's learn more about key element of package diagram and basic rules of package notation.
+
+16
+00:01:16,000 --> 00:01:19,000
+I'm talking about package element.
+
+17
+00:01:20,000 --> 00:01:28,000
+In UML, a package is a fundamental organizational element that helps in structuring a model or system.
+
+18
+00:01:28,000 --> 00:01:36,000
+It acts as a container for various model elements such as classes, interfaces, and other packages,
+
+19
+00:01:36,000 --> 00:01:41,000
+allowing for better organization, modularity, and management of complex systems.
+
+20
+00:01:41,000 --> 00:01:46,000
+Here are some basic rules and notations for representing packages in UML.
+
+21
+00:01:47,000 --> 00:01:48,000
+Package symbol.
+
+22
+00:01:48,000 --> 00:01:54,000
+A package is typically represented as a rectangle with a small tab at the top.
+
+23
+00:01:54,000 --> 00:02:00,000
+The tab is folded down, creating a shape that resembles an open folder.
+
+24
+00:02:01,000 --> 00:02:02,000
+Package name.
+
+25
+00:02:03,000 --> 00:02:07,000
+The name of the package is written inside the rectangle.
+
+26
+00:02:07,000 --> 00:02:14,000
+It is essential to provide a meaningful and descriptive name that reflects the contents or purpose of
+
+27
+00:02:14,000 --> 00:02:15,000
+the package.
+
+28
+00:02:16,000 --> 00:02:17,000
+Nested packages.
+
+29
+00:02:18,000 --> 00:02:25,000
+If a package contains all the packages, these nested packages are depicted inside the parent package.
+
+30
+00:02:25,000 --> 00:02:32,000
+The nested packages are represented as smaller rectangles within the larger package rectangle.
+
+31
+00:02:32,000 --> 00:02:34,000
+Dependencies.
+
+32
+00:02:34,000 --> 00:02:38,000
+Dependencies between packages can be indicated by using arrows.
+
+33
+00:02:38,000 --> 00:02:44,000
+A dependency arrow points from the dependent package to the package on which it depends.
+
+34
+00:02:44,000 --> 00:02:48,000
+Dashed arrows are commonly used to represent dependencies.
+
+35
+00:02:49,000 --> 00:02:55,000
+A little bit later in the lesson, we're going to talk about different types of dependencies on a package
+
+36
+00:02:55,000 --> 00:02:56,000
+diagram.
+
+37
+00:02:57,000 --> 00:02:58,000
+Access control.
+
+38
+00:02:59,000 --> 00:03:06,000
+Visibility of the elements within a package can be specified using access control modifiers such as
+
+39
+00:03:06,000 --> 00:03:12,000
+plus for public, minus for private, and hash sign for protected.
+
+40
+00:03:13,000 --> 00:03:17,000
+This, symbols are placed before the name of the element within the package.
+
+41
+00:03:18,000 --> 00:03:19,000
+Stereotypes.
+
+42
+00:03:19,000 --> 00:03:26,000
+Stereotypes can be applied to package to provide additional information about their role or purpose.
+
+43
+00:03:26,000 --> 00:03:31,000
+For example, a stereotype might be used to indicate that the package represents a subsystem.
+
+44
+00:03:32,000 --> 00:03:39,000
+Remember to keep notation simple and clear using common symbols and conventions to enhance the understanding
+
+45
+00:03:39,000 --> 00:03:42,000
+of the package structure within the model.
+
+46
+00:03:43,000 --> 00:03:45,000
+Let's learn goals of package diagram.
+
+47
+00:03:46,000 --> 00:03:50,000
+The goals and purposes of package diagram in UML include.
+
+48
+00:03:50,000 --> 00:03:51,000
+The first one.
+
+49
+00:03:51,000 --> 00:03:52,000
+Modularity.
+
+50
+00:03:53,000 --> 00:03:59,000
+Packages in a package diagram help in organizing and structuring the system into modular components.
+
+51
+00:03:59,000 --> 00:04:06,000
+This promotes modularity, making it easier to manage and understand the system's complexity.
+
+52
+00:04:06,000 --> 00:04:07,000
+Organization.
+
+53
+00:04:07,000 --> 00:04:14,000
+The diagram provides a visual representation of how different elements are organized into packages,
+
+54
+00:04:14,000 --> 00:04:18,000
+helping stakeholders understand the high level structure of the system.
+
+55
+00:04:19,000 --> 00:04:27,000
+Communication package diagrams serve as a communication tool between stakeholders, including developers,
+
+56
+00:04:27,000 --> 00:04:29,000
+designers, and business analysts.
+
+57
+00:04:29,000 --> 00:04:34,000
+They provide a common understanding of the systems, architecture and design.
+
+58
+00:04:34,000 --> 00:04:36,000
+Dependency management.
+
+59
+00:04:36,000 --> 00:04:44,000
+Package diagrams show dependencies between packages, highlighting the relationships and interactions
+
+60
+00:04:44,000 --> 00:04:46,000
+among different components.
+
+61
+00:04:46,000 --> 00:04:53,000
+This is crucial for managing dependencies and ensuring that changes to one part of the system do not
+
+62
+00:04:53,000 --> 00:04:55,000
+affect others.
+
+63
+00:04:55,000 --> 00:05:04,000
+System design package diagram helps in the design phase by allowing designers to plan and allocate components
+
+64
+00:05:04,000 --> 00:05:05,000
+effectively.
+
+65
+00:05:05,000 --> 00:05:12,000
+Design decisions can be visualized and the impact of changes on the overall system structure can be
+
+66
+00:05:12,000 --> 00:05:13,000
+assessed.
+
+67
+00:05:13,000 --> 00:05:16,000
+Subsystem representation.
+
+68
+00:05:16,000 --> 00:05:22,000
+Package diagrams are often used to represent subsystems within a larger system.
+
+69
+00:05:22,000 --> 00:05:28,000
+This helps in dividing a complex system into manageable and comprehensible parts.
+
+70
+00:05:29,000 --> 00:05:31,000
+Reuse and maintainability.
+
+71
+00:05:31,000 --> 00:05:37,000
+By organizing elements into packages, it becomes easier to identify reusable components.
+
+72
+00:05:37,000 --> 00:05:44,000
+This supports the principles of software engineering, such as encapsulation and maintainability.
+
+73
+00:05:45,000 --> 00:05:46,000
+Documentation.
+
+74
+00:05:47,000 --> 00:05:52,000
+Package diagrams provide a visual form of documentation for the systems architecture.
+
+75
+00:05:52,000 --> 00:06:00,000
+They offer a concise and understandable representation that can be used for both technical and non-technical
+
+76
+00:06:00,000 --> 00:06:01,000
+audiences.
+
+77
+00:06:02,000 --> 00:06:04,000
+Modelling large systems.
+
+78
+00:06:04,000 --> 00:06:11,000
+In large systems, package diagrams are particularly valuable for modelling and representing the overall
+
+79
+00:06:11,000 --> 00:06:12,000
+structure.
+
+80
+00:06:12,000 --> 00:06:21,000
+They allow developers to focus on specific parts of the system without being overwhelmed by its entirety.
+
+81
+00:06:21,000 --> 00:06:24,000
+Analysis during system analysis.
+
+82
+00:06:24,000 --> 00:06:31,000
+Package diagrams help in identifying and defining the main components and their relationships.
+
+83
+00:06:31,000 --> 00:06:39,000
+This contributes to a better understanding of the system requirements, so the primary goals of a package
+
+84
+00:06:39,000 --> 00:06:46,000
+diagram are to enhance the comprehension, organization, and communication of a system's architecture
+
+85
+00:06:46,000 --> 00:06:47,000
+and design.
+
+86
+00:06:48,000 --> 00:06:54,000
+Based on goals that we have learned, it will be easier for you to understand the advantages of package
+
+87
+00:06:54,000 --> 00:07:02,000
+diagram and when it is recommended, to use package diagram, in which cases package diagrams in UML
+
+88
+00:07:02,000 --> 00:07:08,000
+are recommended to be used in various scenarios to enhance the understanding, organization, and communication
+
+89
+00:07:08,000 --> 00:07:10,000
+of a system's architecture.
+
+90
+00:07:11,000 --> 00:07:18,000
+Here are some situations where using a package diagram is particularly beneficial using in large and
+
+91
+00:07:18,000 --> 00:07:20,000
+complex systems.
+
+92
+00:07:20,000 --> 00:07:25,000
+Package diagrams are especially useful when dealing with large and complex systems.
+
+93
+00:07:25,000 --> 00:07:33,000
+They help break down the system into manageable and understandable modules, making it easier to comprehend.
+
+94
+00:07:33,000 --> 00:07:36,000
+Using during system planning and design.
+
+95
+00:07:36,000 --> 00:07:43,000
+During the planning and design phase of a system, package diagrams are valuable for structuring and
+
+96
+00:07:43,000 --> 00:07:45,000
+organizing components.
+
+97
+00:07:45,000 --> 00:07:52,000
+They assist in making design decisions and allocating responsibilities to different parts of the system.
+
+98
+00:07:53,000 --> 00:07:55,000
+Subsystem representation.
+
+99
+00:07:55,000 --> 00:07:59,000
+When a system consists of multiple subsystems or modules.
+
+100
+00:07:59,000 --> 00:08:06,000
+Package diagrams help represent these subsystems and illustrate their relationships.
+
+101
+00:08:06,000 --> 00:08:10,000
+This is particularly relevant in large scale software development.
+
+102
+00:08:11,000 --> 00:08:13,000
+Dependency analysis.
+
+103
+00:08:13,000 --> 00:08:17,000
+If you need to analyze dependencies between different parts of a system.
+
+104
+00:08:17,000 --> 00:08:21,000
+A package diagram provides a clear visual representation.
+
+105
+00:08:21,000 --> 00:08:25,000
+This is crucial for managing and minimizing dependencies.
+
+106
+00:08:26,000 --> 00:08:27,000
+Documentation.
+
+107
+00:08:27,000 --> 00:08:34,000
+Package diagrams contribute to documentation efforts by providing a visual representation of the system's
+
+108
+00:08:34,000 --> 00:08:35,000
+architecture.
+
+109
+00:08:35,000 --> 00:08:41,000
+This can be valuable for both current and future development teams.
+
+110
+00:08:42,000 --> 00:08:49,000
+Modeling component based systems in systems that are designed using a component based approach.
+
+111
+00:08:49,000 --> 00:08:56,000
+Package diagrams are instrumental in illustrating how different components are organized and interact
+
+112
+00:08:56,000 --> 00:08:57,000
+with each other.
+
+113
+00:08:58,000 --> 00:09:01,000
+Identifying reusable components.
+
+114
+00:09:01,000 --> 00:09:08,000
+When looking to identify and promote component reuse, package diagrams help in visualizing the structure
+
+115
+00:09:08,000 --> 00:09:14,000
+of the system and identifying components that can be reused in different contexts.
+
+116
+00:09:15,000 --> 00:09:16,000
+System analysis.
+
+117
+00:09:16,000 --> 00:09:24,000
+During the analysis phase of system development, package diagrams help in identifying major components,
+
+118
+00:09:24,000 --> 00:09:27,000
+their relationships, and their responsibilities.
+
+119
+00:09:27,000 --> 00:09:32,000
+This contributes to a better understanding of system requirements.
+
+120
+00:09:32,000 --> 00:09:40,000
+So package diagrams are recommended in situations where there is a need to represent, communicate and
+
+121
+00:09:40,000 --> 00:09:47,000
+manage the structure of a system, particularly when dealing with large, complex or modular systems.
+
+122
+00:09:48,000 --> 00:09:56,000
+Now let's learn and review key elements of package diagrams that you need to use to draw package diagrams.
+
+123
+00:09:56,000 --> 00:09:58,000
+The first one package.
+
+124
+00:09:58,000 --> 00:10:07,000
+We already reviewed this element at the beginning of the lesson, but let's sum it up A package is a
+
+125
+00:10:07,000 --> 00:10:16,000
+fundamental organizational element that contains and organizes various elements such as classes, interfaces,
+
+126
+00:10:16,000 --> 00:10:24,000
+and other packages represented as a rectangle with a small tab at the top resembling an open folder.
+
+127
+00:10:25,000 --> 00:10:28,000
+The package name is written inside the rectangle.
+
+128
+00:10:29,000 --> 00:10:34,000
+Packages provide modularity, helping to structure and organize a system.
+
+129
+00:10:34,000 --> 00:10:41,000
+They serve as a container for related elements, contributing to a more understandable and manageable
+
+130
+00:10:41,000 --> 00:10:42,000
+system.
+
+131
+00:10:42,000 --> 00:10:42,000
+Design.
+
+132
+00:10:43,000 --> 00:10:46,000
+Another element is dependency.
+
+133
+00:10:46,000 --> 00:10:53,000
+A dependency represents a relationship between two packages, indicating that changes in one package
+
+134
+00:10:53,000 --> 00:10:55,000
+may affect the other.
+
+135
+00:10:56,000 --> 00:11:04,000
+Shown as an arrow pointing from the dependent package to the package it depends on.
+
+136
+00:11:04,000 --> 00:11:07,000
+Dashed arrows are often used for dependencies.
+
+137
+00:11:08,000 --> 00:11:15,000
+Dependencies help manage the relationships between different parts of the system and assist in understanding
+
+138
+00:11:15,000 --> 00:11:19,000
+the impact of changes on interconnected elements.
+
+139
+00:11:20,000 --> 00:11:26,000
+When we talk about dependencies, it is worth to mention two types of dependencies.
+
+140
+00:11:26,000 --> 00:11:30,000
+They are import dependency and access dependency.
+
+141
+00:11:31,000 --> 00:11:33,000
+Let's review them one by one.
+
+142
+00:11:34,000 --> 00:11:35,000
+Import dependency.
+
+143
+00:11:36,000 --> 00:11:44,000
+Import dependency is a relationship between two packages where one package, known as the client package,
+
+144
+00:11:44,000 --> 00:11:50,000
+imports or uses another package known as a supplier package.
+
+145
+00:11:50,000 --> 00:11:59,000
+It denotes that elements within the client package depend on or reference elements in the supplier package.
+
+146
+00:12:00,000 --> 00:12:03,000
+Like a dependency, it is shown as dashed arrow.
+
+147
+00:12:04,000 --> 00:12:10,000
+Import dependencies are used to signify that elements in the client package rely on elements from the
+
+148
+00:12:10,000 --> 00:12:12,000
+supplier package.
+
+149
+00:12:12,000 --> 00:12:19,000
+This can include using classes, interfaces, or other components defined in the supplier package.
+
+150
+00:12:20,000 --> 00:12:29,000
+Axis dependency represents a relationship between two packages, where one package needs to access the
+
+151
+00:12:29,000 --> 00:12:33,000
+contents, such as classes or interfaces of another package.
+
+152
+00:12:33,000 --> 00:12:42,000
+It denotes a stronger form of dependencies and import, indicating a need for explicit access to the
+
+153
+00:12:42,000 --> 00:12:44,000
+elements in the accessed package.
+
+154
+00:12:45,000 --> 00:12:50,000
+This type of dependency is also represented by a dashed arrow.
+
+155
+00:12:50,000 --> 00:12:55,000
+So import and access dependency are visualized in the similar way.
+
+156
+00:12:55,000 --> 00:13:00,000
+The only difference is just an inscription that goes near the arrow.
+
+157
+00:13:01,000 --> 00:13:08,000
+Access dependencies are used when a package not only imports elements from another package, but also
+
+158
+00:13:08,000 --> 00:13:11,000
+requires explicit access to those elements.
+
+159
+00:13:11,000 --> 00:13:19,000
+This is often associated with the need for visibility, such as when a package needs to access protected
+
+160
+00:13:19,000 --> 00:13:22,000
+or private members of another package.
+
+161
+00:13:23,000 --> 00:13:24,000
+Visibility.
+
+162
+00:13:24,000 --> 00:13:29,000
+Visibility specifies the access level of elements within a package.
+
+163
+00:13:29,000 --> 00:13:30,000
+Public.
+
+164
+00:13:30,000 --> 00:13:31,000
+Private.
+
+165
+00:13:31,000 --> 00:13:33,000
+Protected or package.
+
+166
+00:13:33,000 --> 00:13:34,000
+Private.
+
+167
+00:13:35,000 --> 00:13:37,000
+Symbols such as plus for public.
+
+168
+00:13:37,000 --> 00:13:39,000
+Minus for private.
+
+169
+00:13:39,000 --> 00:13:41,000
+Hash sign for protected.
+
+170
+00:13:41,000 --> 00:13:42,000
+Tilde for package.
+
+171
+00:13:42,000 --> 00:13:43,000
+Private.
+
+172
+00:13:43,000 --> 00:13:46,000
+Are placed before the name of the element.
+
+173
+00:13:47,000 --> 00:13:53,000
+Visibility helps define the scope of access to elements within a package.
+
+174
+00:13:53,000 --> 00:13:57,000
+Supporting principles of encapsulation and access control.
+
+175
+00:13:58,000 --> 00:13:59,000
+Stereotype.
+
+176
+00:14:00,000 --> 00:14:05,000
+A stereotype provides additional information about the role or purpose of a package.
+
+177
+00:14:06,000 --> 00:14:13,000
+Stereotypes are denoted by placing the stereotype name within angle brackets above the package name.
+
+178
+00:14:13,000 --> 00:14:21,000
+Stereotypes help convey the intended use or meaning of a package, providing context and helping in
+
+179
+00:14:21,000 --> 00:14:24,000
+understanding of its role in the system.
+
+180
+00:14:24,000 --> 00:14:31,000
+The elements that we reviewed work together to create a visual representation of the organization,
+
+181
+00:14:31,000 --> 00:14:38,000
+relationships, and structure of a system in a package diagram contributing to effective communication
+
+182
+00:14:38,000 --> 00:14:39,000
+and system design.
+
+183
+00:14:39,000 --> 00:14:43,000
+Let me describe requirements for our practical example task.
+
+184
+00:14:43,000 --> 00:14:49,000
+As always, I want to give you an opportunity to create diagram first and practice your skills.
+
+185
+00:14:49,000 --> 00:14:54,000
+And then I suggest to review my version of the diagram.
+
+186
+00:14:54,000 --> 00:15:02,000
+We're going to draw a package diagram for the track or the scenario in an online shopping stores order
+
+187
+00:15:02,000 --> 00:15:03,000
+processing system.
+
+188
+00:15:04,000 --> 00:15:11,000
+The system should facilitate tracking information for products ordered by customers, where customers
+
+189
+00:15:11,000 --> 00:15:18,000
+input is a tracking serial number, and the system updates the current shipping status for the customer.
+
+190
+00:15:19,000 --> 00:15:21,000
+We're going to have the following packages.
+
+191
+00:15:22,000 --> 00:15:23,000
+The UI framework.
+
+192
+00:15:23,000 --> 00:15:24,000
+Track order.
+
+193
+00:15:25,000 --> 00:15:26,000
+Shipping.
+
+194
+00:15:26,000 --> 00:15:27,000
+Order details.
+
+195
+00:15:28,000 --> 00:15:32,000
+These packages are going to have the following dependencies.
+
+196
+00:15:32,000 --> 00:15:38,000
+The track order module should access information from the Order Details package.
+
+197
+00:15:38,000 --> 00:15:41,000
+Use the access stereotype to the node.
+
+198
+00:15:41,000 --> 00:15:43,000
+Dual dependency.
+
+199
+00:15:44,000 --> 00:15:51,000
+Allow shipping package to import track order for efficient navigation of shipping information.
+
+200
+00:15:52,000 --> 00:15:59,000
+Establish dependency between track order package and UI framework representing the modules connection
+
+201
+00:15:59,000 --> 00:16:01,000
+to the user interface.
+
+202
+00:16:01,000 --> 00:16:02,000
+This is going to be.
+
+203
+00:16:02,000 --> 00:16:04,000
+Access dependency.
+
+204
+00:16:04,000 --> 00:16:11,000
+The access dependency from the UI framework to the track order package signifies that UI may need to
+
+205
+00:16:11,000 --> 00:16:16,000
+interact with, or display information related to order tracking.
+
+206
+00:16:16,000 --> 00:16:24,000
+This relationship allows the UI to access the tracking functionality provided by the Track Order module,
+
+207
+00:16:24,000 --> 00:16:27,000
+to present relevant details to the user.
+
+208
+00:16:27,000 --> 00:16:31,000
+Order details imports UI framework.
+
+209
+00:16:31,000 --> 00:16:37,000
+Why the Order Details package is responsible for managing and processing orders.
+
+210
+00:16:37,000 --> 00:16:44,000
+To update users on the status of their orders or to receive input such as tracking information, it
+
+211
+00:16:44,000 --> 00:16:47,000
+needs to interact with the user interface.
+
+212
+00:16:48,000 --> 00:16:49,000
+That's it.
+
+213
+00:16:49,000 --> 00:16:52,000
+Now it's your turn to draw this diagram.
+
+214
+00:16:53,000 --> 00:16:59,000
+So now you can put the video on pause and try to draw the diagram first.
+
+215
+00:16:59,000 --> 00:17:02,000
+Then you can come back to the lesson and resume the video.
+
+216
+00:17:03,000 --> 00:17:11,000
+Let me start screen sharing and share my vision and my way of how I draw package diagram for all the
+
+217
+00:17:11,000 --> 00:17:12,000
+processing system.
+
+218
+00:17:13,000 --> 00:17:18,000
+As always, you can find the link to the example in attachments to the video.
+
+219
+00:17:18,000 --> 00:17:23,000
+Feel free to use it in learning purposes in order to understand the diagram better.
+
+220
+00:17:24,000 --> 00:17:29,000
+I started the design from creation of the separate blank diagram.
+
+221
+00:17:29,000 --> 00:17:34,000
+To implement this diagram, we don't need a lot of different elements.
+
+222
+00:17:34,000 --> 00:17:40,000
+You can find package, element and dependency arrow easily in the icons library.
+
+223
+00:17:41,000 --> 00:17:43,000
+To initiate the design of the package diagram.
+
+224
+00:17:43,000 --> 00:17:47,000
+The first step is to create all required packages.
+
+225
+00:17:47,000 --> 00:17:55,000
+They are UI framework that is our UI that is responsible for interaction with end user.
+
+226
+00:17:55,000 --> 00:18:03,000
+Here we are going to have components responsible for entering data and presenting data to end user.
+
+227
+00:18:04,000 --> 00:18:09,000
+Track order responsible for providing tracking information.
+
+228
+00:18:10,000 --> 00:18:11,000
+Shipping.
+
+229
+00:18:11,000 --> 00:18:14,000
+Provides shipping details.
+
+230
+00:18:14,000 --> 00:18:15,000
+Order details.
+
+231
+00:18:16,000 --> 00:18:19,000
+Stores information about orders.
+
+232
+00:18:19,000 --> 00:18:24,000
+And the only thing that is left is to draw all required dependencies.
+
+233
+00:18:24,000 --> 00:18:31,000
+The track order module obtains all the details from the Order Details module, while all the details
+
+234
+00:18:31,000 --> 00:18:36,000
+needs information about the tracking provided by the customer.
+
+235
+00:18:36,000 --> 00:18:44,000
+This results in a dual axis dependency denoted by the axis stereotype.
+
+236
+00:18:45,000 --> 00:18:52,000
+The shipping module imports the track order module, facilitating easier navigation to obtain shipping
+
+237
+00:18:52,000 --> 00:18:53,000
+information.
+
+238
+00:18:54,000 --> 00:19:01,000
+All the details inputs UI framework module to be able to receive input such as tracking information.
+
+239
+00:19:02,000 --> 00:19:09,000
+The track order module is mapped with a dependency to the UI framework, completing the package diagram
+
+240
+00:19:09,000 --> 00:19:11,000
+for the order processing subsystem.
+
+241
+00:19:11,000 --> 00:19:19,000
+This connection ensures seamless interaction between track order module and the user interface for a
+
+242
+00:19:19,000 --> 00:19:21,000
+comprehensive user experience.
+
+243
+00:19:22,000 --> 00:19:23,000
+So we are done.
+
+244
+00:19:24,000 --> 00:19:30,000
+This designed package diagram encapsulates the dependencies and relationships between the track order,
+
+245
+00:19:30,000 --> 00:19:37,000
+order details, shipping and UI framework modules offering a structured representation of the order
+
+246
+00:19:37,000 --> 00:19:41,000
+processing system for the track order scenario.
+
+247
+00:19:41,000 --> 00:19:47,000
+And before we finish the lesson, I want to show you a more complex example.
+
+248
+00:19:47,000 --> 00:19:53,000
+In order to give you understanding of how package diagram may look like in enterprise application.
+
+249
+00:19:54,000 --> 00:20:01,000
+A common application of a package diagram is to illustrate the hierarchical associations between packages
+
+250
+00:20:01,000 --> 00:20:08,000
+and other packages or objects, where each package serves as a representation of a namespace.
+
+251
+00:20:08,000 --> 00:20:16,000
+On this slide, you can see a more complex example of package diagram, but basically it consists of
+
+252
+00:20:16,000 --> 00:20:21,000
+elements that we learned and follows the same rules that we already discussed.
+
+253
+00:20:21,000 --> 00:20:28,000
+I would say that the scale is different, and that is how package diagram may look like at Enterprise
+
+254
+00:20:28,000 --> 00:20:29,000
+Project.
+
+255
+00:20:29,000 --> 00:20:35,000
+In case you would have any questions, please do not hesitate to post your questions below the video
+
+256
+00:20:35,000 --> 00:20:37,000
+and I will be happy to answer.
+
+257
+00:20:38,000 --> 00:20:42,000
+We learned a lot of theory and reviewed multiple examples.
+
+258
+00:20:42,000 --> 00:20:46,000
+Now we are ready to make a conclusion about package diagram.
+
+259
+00:20:46,000 --> 00:20:54,000
+In conclusion, the package diagram serves as a powerful tool for visualizing and organizing the structural
+
+260
+00:20:54,000 --> 00:20:57,000
+elements and relationships within a complex system.
+
+261
+00:20:57,000 --> 00:21:05,000
+By encapsulating related components into cohesive packages, the diagram facilitates a high level of
+
+262
+00:21:05,000 --> 00:21:12,000
+abstraction, making it easier for stakeholders to comprehend the system's architecture.
+
+263
+00:21:12,000 --> 00:21:19,000
+The package diagram helps in promoting modularity, as it allows for the grouping of related elements
+
+264
+00:21:19,000 --> 00:21:28,000
+into distinct packages, fostering a clear and organized representation of a system's modules or subsystems
+
+265
+00:21:28,000 --> 00:21:35,000
+through the use of various UML notations such as dependencies and stereotypes.
+
+266
+00:21:35,000 --> 00:21:41,000
+The package diagram enables effective community creation between development teams, architects, and
+
+267
+00:21:41,000 --> 00:21:48,000
+other project stakeholders, fostering a shared understanding of the system's structure and organization.
+
+268
+00:21:49,000 --> 00:21:57,000
+The package diagram remains a valuable asset for documenting and convenes a high level design, ensuring
+
+269
+00:21:57,000 --> 00:22:03,000
+that stakeholders can easily navigate and comprehend relationships between different components.
+
+270
+00:22:04,000 --> 00:22:07,000
+Let's recap what we have learned from the lesson.
+
+271
+00:22:07,000 --> 00:22:10,000
+We learned what a package diagram is.
+
+272
+00:22:10,000 --> 00:22:18,000
+I explained the goals and purposes of package diagram, and this supposed to help you understand when
+
+273
+00:22:18,000 --> 00:22:22,000
+and in which cases it is recommended to use package diagram.
+
+274
+00:22:23,000 --> 00:22:26,000
+Also, we learned elements of a package diagram.
+
+275
+00:22:26,000 --> 00:22:33,000
+Now you know the difference between input and access dependencies and when to use each of them.
+
+276
+00:22:33,000 --> 00:22:40,000
+And at the end of the lesson we reviewed practical example of package diagram on the example of order
+
+277
+00:22:40,000 --> 00:22:41,000
+processing system.
+
+278
+00:22:42,000 --> 00:22:43,000
+That's all for this lesson.
+
+279
+00:22:43,000 --> 00:22:45,000
+Thanks a lot for your attention.
+
+280
+00:22:45,000 --> 00:22:49,000
+Have a great day and see you in the next lesson.
+
diff --git a/106 - Structural Diagrams/004 Package-Diagram-Order-Processing.url b/106 - Structural Diagrams/004 Package-Diagram-Order-Processing.url
new file mode 100644
index 0000000000000000000000000000000000000000..7f256ef7b41be625c27721d5c0c6185195365c62
--- /dev/null
+++ b/106 - Structural Diagrams/004 Package-Diagram-Order-Processing.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1gLNN0cdloKqcx_afh7Vdy3EIC5T-wry6/view?usp=sharing
\ No newline at end of file
diff --git a/106 - Structural Diagrams/005 Deployment Diagram_en.srt b/106 - Structural Diagrams/005 Deployment Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..b489fda53f962206e42f5e51433d3d4a768824d3
--- /dev/null
+++ b/106 - Structural Diagrams/005 Deployment Diagram_en.srt
@@ -0,0 +1,1044 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello team!
+
+2
+00:00:06,000 --> 00:00:09,000
+In this lesson we are going to learn deployment diagram.
+
+3
+00:00:09,000 --> 00:00:14,000
+We are going to start the lesson from learning the definition of deployment diagram.
+
+4
+00:00:14,000 --> 00:00:17,000
+I will explain goals and purposes of deployment diagram.
+
+5
+00:00:17,000 --> 00:00:24,000
+This will help you to understand in what cases it is recommended to use this type of diagram.
+
+6
+00:00:24,000 --> 00:00:28,000
+After that we are going to learn elements of deployment diagram.
+
+7
+00:00:28,000 --> 00:00:36,000
+We are going to learn what nodes, artifacts, components, deployment specifications are and other
+
+8
+00:00:36,000 --> 00:00:37,000
+elements.
+
+9
+00:00:37,000 --> 00:00:42,000
+And at the end of the lesson we'll review real life example of deployment diagram.
+
+10
+00:00:42,000 --> 00:00:44,000
+Let's start our lesson.
+
+11
+00:00:44,000 --> 00:00:48,000
+Let's start from learning the definition of deployment diagram.
+
+12
+00:00:48,000 --> 00:00:55,000
+A deployment diagram in UML shows how software and hardware components are distributed across different
+
+13
+00:00:55,000 --> 00:00:57,000
+nodes in a system.
+
+14
+00:00:57,000 --> 00:01:03,000
+It illustrates the physical arrangement of the system elements and their connections.
+
+15
+00:01:03,000 --> 00:01:12,000
+Nodes can represent hardware devices such as servers or routers, and artifacts like software components
+
+16
+00:01:12,000 --> 00:01:13,000
+or databases.
+
+17
+00:01:14,000 --> 00:01:21,000
+In simpler terms, it's like a map that displays where different parts of a system are located and how
+
+18
+00:01:21,000 --> 00:01:23,000
+they interact physically.
+
+19
+00:01:23,000 --> 00:01:28,000
+This diagram helps in understanding the deployment architecture of a system.
+
+20
+00:01:28,000 --> 00:01:35,000
+The connections between nodes indicate communication paths, often shown with arrows to represent the
+
+21
+00:01:35,000 --> 00:01:37,000
+direction of communication.
+
+22
+00:01:38,000 --> 00:01:45,000
+Deployment diagrams are useful for visualizing the physical structure of a system, understanding how
+
+23
+00:01:45,000 --> 00:01:47,000
+software and hardware interact.
+
+24
+00:01:47,000 --> 00:01:50,000
+Planning the distribution of components across a network.
+
+25
+00:01:51,000 --> 00:01:57,000
+I believe that you already understood when deployment diagrams may be useful, but let's learn more
+
+26
+00:01:57,000 --> 00:02:00,000
+about goals and purposes of deployment diagram.
+
+27
+00:02:00,000 --> 00:02:07,000
+The deployment diagram in serves several goals and purposes, providing a visual representation of the
+
+28
+00:02:07,000 --> 00:02:12,000
+physical arrangement of software and hardware components in a system.
+
+29
+00:02:12,000 --> 00:02:17,000
+On this slide, you can see main goals and purposes of deployment diagram.
+
+30
+00:02:17,000 --> 00:02:22,000
+The goal number one visualization of physical structure.
+
+31
+00:02:23,000 --> 00:02:28,000
+In order to provide a clear visual representation of how software and hardware elements are physically
+
+32
+00:02:28,000 --> 00:02:31,000
+distributed across nodes in a system.
+
+33
+00:02:31,000 --> 00:02:38,000
+It helps stakeholders understand the physical layout and connections between different components.
+
+34
+00:02:39,000 --> 00:02:42,000
+Understanding component distribution.
+
+35
+00:02:42,000 --> 00:02:49,000
+We can use deployment diagram to illustrate how software artifacts are deployed on hardware nodes.
+
+36
+00:02:49,000 --> 00:02:57,000
+It helps in understanding how components are distributed across servers, workstations, or other devices.
+
+37
+00:02:58,000 --> 00:03:02,000
+Communication pass was deployment diagram.
+
+38
+00:03:02,000 --> 00:03:06,000
+You can depict the communication paths between nodes.
+
+39
+00:03:06,000 --> 00:03:13,000
+It helps in visualizing how different components interact and communicate within the system.
+
+40
+00:03:14,000 --> 00:03:14,000
+System.
+
+41
+00:03:14,000 --> 00:03:16,000
+Planning and design.
+
+42
+00:03:16,000 --> 00:03:23,000
+Deployment diagram can assist in the planning and design of the overall system architecture.
+
+43
+00:03:23,000 --> 00:03:30,000
+It supports decision making process regarding the placement of software components on specific hardware
+
+44
+00:03:30,000 --> 00:03:33,000
+nodes, helping in system optimization.
+
+45
+00:03:33,000 --> 00:03:35,000
+Network configuration.
+
+46
+00:03:35,000 --> 00:03:42,000
+Deployment diagrams can be used to show the configuration of the network and the connections between
+
+47
+00:03:42,000 --> 00:03:43,000
+nodes.
+
+48
+00:03:43,000 --> 00:03:51,000
+It assists in understanding the network topology and how data flows between different parts of the system.
+
+49
+00:03:52,000 --> 00:03:54,000
+Deployment optimization.
+
+50
+00:03:55,000 --> 00:04:03,000
+Deployment diagrams can be used to identify opportunities for optimizing the deployment of components.
+
+51
+00:04:03,000 --> 00:04:10,000
+It enables stakeholders to assess the efficiency of the physical deployment and make adjustments for
+
+52
+00:04:10,000 --> 00:04:11,000
+better performance.
+
+53
+00:04:12,000 --> 00:04:14,000
+Communication with stakeholders.
+
+54
+00:04:15,000 --> 00:04:21,000
+One of the goal of deployment diagrams is to facilitate communication between different stakeholders,
+
+55
+00:04:21,000 --> 00:04:26,000
+including developers, system architects and project managers.
+
+56
+00:04:27,000 --> 00:04:33,000
+It provides a common visual language for discussing and understanding the physical aspects of the system.
+
+57
+00:04:34,000 --> 00:04:42,000
+The deployment diagram in UML aims to visually convey the physical structure of a system, help stakeholders
+
+58
+00:04:42,000 --> 00:04:49,000
+understand how components are distributed, illustrate communication paths, support system planning,
+
+59
+00:04:49,000 --> 00:04:57,000
+depict network configurations, optimize deployment, and facilitate communication among project stakeholders.
+
+60
+00:04:58,000 --> 00:05:00,000
+So let's sum it up.
+
+61
+00:05:00,000 --> 00:05:06,000
+Knowing what deployment diagram is and what its goals and purposes are.
+
+62
+00:05:06,000 --> 00:05:11,000
+Let's describe cases when it is recommended to use deployment diagram.
+
+63
+00:05:12,000 --> 00:05:18,000
+Deployment diagrams in UML are recommended in various situations where visual representation of the
+
+64
+00:05:18,000 --> 00:05:21,000
+physical structure of a system is beneficial.
+
+65
+00:05:21,000 --> 00:05:28,000
+On this slide, you can find some scenarios and cases where it is recommended to use deployment diagrams.
+
+66
+00:05:29,000 --> 00:05:36,000
+System architecture design using of deployment diagrams during the early stages of system design helps
+
+67
+00:05:36,000 --> 00:05:42,000
+in planning the physical architecture of the system, determining where different components will be
+
+68
+00:05:42,000 --> 00:05:42,000
+deployed.
+
+69
+00:05:43,000 --> 00:05:45,000
+Communication with stakeholders.
+
+70
+00:05:45,000 --> 00:05:52,000
+Deployment diagram may be useful when communicating the system architecture to non-technical stakeholders.
+
+71
+00:05:52,000 --> 00:05:59,000
+It provides a clear and intuitive visual representation, making it easier for non-technical individuals
+
+72
+00:05:59,000 --> 00:06:02,000
+to understand the deployment aspects of the system.
+
+73
+00:06:03,000 --> 00:06:05,000
+Network configuration.
+
+74
+00:06:05,000 --> 00:06:12,000
+Feel free to use deployment diagram during configuration or documentation of the network topology.
+
+75
+00:06:13,000 --> 00:06:19,000
+It is useful for network administrators to understand how different nodes are connected and how data
+
+76
+00:06:19,000 --> 00:06:21,000
+flows through the network.
+
+77
+00:06:22,000 --> 00:06:23,000
+Optimizing deployment.
+
+78
+00:06:24,000 --> 00:06:29,000
+It is recommended to use deployment diagram when you need to evaluate or optimize the deployment of
+
+79
+00:06:29,000 --> 00:06:30,000
+components.
+
+80
+00:06:31,000 --> 00:06:38,000
+It helps in identifying potential bottlenecks or areas for improvement in the physical distribution
+
+81
+00:06:38,000 --> 00:06:40,000
+of software and hardware elements.
+
+82
+00:06:41,000 --> 00:06:42,000
+Integration planning.
+
+83
+00:06:43,000 --> 00:06:49,000
+Deployment diagram may come in handy when you plan an integration of a new component or system.
+
+84
+00:06:49,000 --> 00:06:56,000
+It offers insights into how the new elements will fit into the existing deployment, and how they will
+
+85
+00:06:56,000 --> 00:06:58,000
+interact with other components.
+
+86
+00:06:59,000 --> 00:07:05,000
+Of course, it is recommended to use deployment diagrams throughout the development process for documentation
+
+87
+00:07:05,000 --> 00:07:06,000
+purposes.
+
+88
+00:07:06,000 --> 00:07:13,000
+Deployment diagram serves as a valuable documentation for developers, architects, and other team members
+
+89
+00:07:13,000 --> 00:07:16,000
+to reference the physical structure of the system.
+
+90
+00:07:17,000 --> 00:07:25,000
+System testing also deployment diagram useful for testing purposes and can be used during testing phases.
+
+91
+00:07:26,000 --> 00:07:33,000
+It helps testers understand the physical layout of the system, ensuring comprehensive testing of interactions
+
+92
+00:07:33,000 --> 00:07:35,000
+between components.
+
+93
+00:07:35,000 --> 00:07:42,000
+So as you can see, deployment diagrams are especially recommended in the early stages of the system
+
+94
+00:07:42,000 --> 00:07:48,000
+design during communication with stakeholders for network configuration.
+
+95
+00:07:48,000 --> 00:07:53,000
+Optimizing deployment, system maintenance, integration planning, documentation.
+
+96
+00:07:53,000 --> 00:07:55,000
+Collaboration in development teams.
+
+97
+00:07:55,000 --> 00:07:56,000
+System testing.
+
+98
+00:07:56,000 --> 00:07:58,000
+Security planning.
+
+99
+00:07:58,000 --> 00:08:04,000
+They provide a valuable visual representation of the physical aspects of system in various contexts.
+
+100
+00:08:05,000 --> 00:08:11,000
+Before jumping to the practical exercise, let's learn elements of deployment diagram.
+
+101
+00:08:12,000 --> 00:08:12,000
+Nodes.
+
+102
+00:08:13,000 --> 00:08:20,000
+Nodes represent physical entities such as hardware devices or computer servers, where software components
+
+103
+00:08:20,000 --> 00:08:21,000
+are deployed.
+
+104
+00:08:22,000 --> 00:08:28,000
+Nodes show the physical deployment environment and help visualize the distribution of components.
+
+105
+00:08:28,000 --> 00:08:32,000
+They are represented as a box with the nodes name.
+
+106
+00:08:33,000 --> 00:08:34,000
+Artifacts.
+
+107
+00:08:35,000 --> 00:08:40,000
+Artifacts are physical files or software components that are deployed on nodes.
+
+108
+00:08:41,000 --> 00:08:47,000
+Artifacts illustrate the actual software units being deployed and their relationships.
+
+109
+00:08:47,000 --> 00:08:53,000
+They are represented as rectangles typically labeled with the artifacts name.
+
+110
+00:08:54,000 --> 00:08:55,000
+Components.
+
+111
+00:08:56,000 --> 00:08:59,000
+Components represent modular parts of a system.
+
+112
+00:09:00,000 --> 00:09:06,000
+They show the logical units of the software and how they are distributed across nodes.
+
+113
+00:09:07,000 --> 00:09:11,000
+They are represented as rectangles with a component's name.
+
+114
+00:09:11,000 --> 00:09:19,000
+Usually these rectangles have small rectangles on the side in order to be able to distinguish artifact
+
+115
+00:09:19,000 --> 00:09:21,000
+from component icon.
+
+116
+00:09:22,000 --> 00:09:24,000
+Associations.
+
+117
+00:09:24,000 --> 00:09:30,000
+Associations show relationships and connections between nodes and components.
+
+118
+00:09:31,000 --> 00:09:37,000
+Associations illustrate how components are deployed on nodes and how nodes interact.
+
+119
+00:09:37,000 --> 00:09:43,000
+They're represented as lines connecting nodes and components, often with labels.
+
+120
+00:09:44,000 --> 00:09:45,000
+Dependencies.
+
+121
+00:09:46,000 --> 00:09:51,000
+Dependencies represent relationships between different elements in the deployment diagram.
+
+122
+00:09:51,000 --> 00:09:58,000
+They show the reliance of one element on another for successful deployment.
+
+123
+00:09:58,000 --> 00:10:05,000
+Dependencies are represented as dashed lines with arrows between related elements.
+
+124
+00:10:06,000 --> 00:10:07,000
+Communication pass.
+
+125
+00:10:08,000 --> 00:10:13,000
+Communication pass depicts connections and communication links between nodes.
+
+126
+00:10:13,000 --> 00:10:19,000
+They illustrate the flow of communication within the physical architecture.
+
+127
+00:10:20,000 --> 00:10:27,000
+Communication paths are represented as lines with arrows indicating the direction of communication.
+
+128
+00:10:27,000 --> 00:10:29,000
+Association.
+
+129
+00:10:29,000 --> 00:10:30,000
+Stereotypes.
+
+130
+00:10:30,000 --> 00:10:38,000
+Stereotypes like deploy, for example, in angle brackets, provide additional information about the
+
+131
+00:10:38,000 --> 00:10:40,000
+nature of the deployment relationship.
+
+132
+00:10:40,000 --> 00:10:47,000
+Stereotypes clarify the type of purpose of the association between nodes or components.
+
+133
+00:10:47,000 --> 00:10:50,000
+They are placed near the association line.
+
+134
+00:10:51,000 --> 00:10:53,000
+Manifest.
+
+135
+00:10:53,000 --> 00:11:01,000
+Manifest is a relationship between a component and an artifact, indicating that the component is implemented
+
+136
+00:11:01,000 --> 00:11:03,000
+by a specific artifact.
+
+137
+00:11:04,000 --> 00:11:09,000
+Manifestation links logical components to their physical implementations.
+
+138
+00:11:10,000 --> 00:11:16,000
+They're represented as a dashed line with an arrow from the component to the artifact.
+
+139
+00:11:17,000 --> 00:11:24,000
+The line is similar to the dependency line, but usually you specify that this is manifest like you
+
+140
+00:11:24,000 --> 00:11:25,000
+can see on the slide.
+
+141
+00:11:26,000 --> 00:11:28,000
+Deployment Specification.
+
+142
+00:11:28,000 --> 00:11:35,000
+A deployment specification defines the deployment properties of an artifact such as its location and
+
+143
+00:11:35,000 --> 00:11:37,000
+configuration details.
+
+144
+00:11:38,000 --> 00:11:43,000
+Deployment specifications provide additional details about the deployment environment.
+
+145
+00:11:43,000 --> 00:11:50,000
+They are represented as a rectangle attached to the artifact with a specification details inside.
+
+146
+00:11:50,000 --> 00:11:54,000
+So these are key elements of deployment diagram.
+
+147
+00:11:54,000 --> 00:11:57,000
+Now we are ready to move to an example.
+
+148
+00:11:58,000 --> 00:12:04,000
+I am going to describe example now, and I will give you an opportunity to draw the diagram according
+
+149
+00:12:04,000 --> 00:12:05,000
+to requirements.
+
+150
+00:12:05,000 --> 00:12:09,000
+After that, we are going to review my version of the diagram.
+
+151
+00:12:10,000 --> 00:12:17,000
+I am just going to share with you brief description of the example, and I want you to turn on your
+
+152
+00:12:17,000 --> 00:12:18,000
+imagination.
+
+153
+00:12:18,000 --> 00:12:25,000
+Feel free to draw the diagram as you understood, because we are learning now, and I want to leave
+
+154
+00:12:25,000 --> 00:12:32,000
+empty spaces in the task description deliberately in order, you can come up with your own version.
+
+155
+00:12:33,000 --> 00:12:38,000
+I suggest you to draw deployment diagram of the system for real estate purchasing.
+
+156
+00:12:39,000 --> 00:12:42,000
+It will consist of the following nodes.
+
+157
+00:12:42,000 --> 00:12:43,000
+Bank server.
+
+158
+00:12:44,000 --> 00:12:45,000
+Real estate server.
+
+159
+00:12:46,000 --> 00:12:47,000
+Individual machine.
+
+160
+00:12:47,000 --> 00:12:47,000
+Node.
+
+161
+00:12:48,000 --> 00:12:51,000
+Also, there are the following components.
+
+162
+00:12:51,000 --> 00:12:55,000
+Mortgage application on the bank server.
+
+163
+00:12:55,000 --> 00:12:58,000
+Real estate application on the real estate server.
+
+164
+00:12:58,000 --> 00:13:02,000
+Buyer application on individual machine.
+
+165
+00:13:02,000 --> 00:13:02,000
+Node.
+
+166
+00:13:03,000 --> 00:13:06,000
+I suggest you to visualize the following dependencies.
+
+167
+00:13:07,000 --> 00:13:11,000
+Mortgage application depends on a database artifact.
+
+168
+00:13:12,000 --> 00:13:16,000
+Real estate application depends on multiple listings.
+
+169
+00:13:16,000 --> 00:13:23,000
+Artifact and buyer application depends on mortgage application and real estate application.
+
+170
+00:13:23,000 --> 00:13:26,000
+Do not forget about associations.
+
+171
+00:13:26,000 --> 00:13:27,000
+Bank server.
+
+172
+00:13:27,000 --> 00:13:34,000
+Real estate server are connected to individual machine node, facilitating seamless communication and
+
+173
+00:13:34,000 --> 00:13:38,000
+data exchange within the real estate application ecosystem.
+
+174
+00:13:39,000 --> 00:13:42,000
+That's examples that we are going to work on today.
+
+175
+00:13:43,000 --> 00:13:50,000
+So, as we agreed, try to draw a diagram by yourself first and in case you are done with the task,
+
+176
+00:13:50,000 --> 00:13:55,000
+feel free to resume the video and we are going to proceed with review of my version.
+
+177
+00:13:56,000 --> 00:14:02,000
+As always in attachments to the lesson, you can find the link to my version of the deployment diagram.
+
+178
+00:14:03,000 --> 00:14:08,000
+I started with the creation of a blank diagram on the deployment diagram that we are going to create.
+
+179
+00:14:08,000 --> 00:14:16,000
+I want to show three distinct nodes that constitute a comprehensive application ecosystem for real estate
+
+180
+00:14:16,000 --> 00:14:17,000
+buyers.
+
+181
+00:14:17,000 --> 00:14:19,000
+There are following nodes.
+
+182
+00:14:19,000 --> 00:14:27,000
+Bank server represents the server infrastructure dedicated to handling banking processes, particularly
+
+183
+00:14:27,000 --> 00:14:30,000
+those related to mortgage applications.
+
+184
+00:14:31,000 --> 00:14:37,000
+Real Estate Server represents the server infrastructure responsible for managing real estate related
+
+185
+00:14:37,000 --> 00:14:43,000
+data and services, including the listings of properties in the virtual machine.
+
+186
+00:14:43,000 --> 00:14:48,000
+Node represents an individual node where a client application is deployed.
+
+187
+00:14:49,000 --> 00:14:56,000
+Client application is an application that is used by buyers to interact with the whole ecosystem, and
+
+188
+00:14:56,000 --> 00:15:02,000
+which acts as an end point for accessing the mortgage and real estate applications.
+
+189
+00:15:02,000 --> 00:15:06,000
+To depict these nodes, I used block element.
+
+190
+00:15:06,000 --> 00:15:09,000
+You can find it in icons library.
+
+191
+00:15:09,000 --> 00:15:11,000
+Let's draw components.
+
+192
+00:15:11,000 --> 00:15:14,000
+Now we have the following components.
+
+193
+00:15:14,000 --> 00:15:23,000
+Mortgage application A crucial component that resides in bank server node responsible for managing and
+
+194
+00:15:23,000 --> 00:15:25,000
+processing mortgage applications.
+
+195
+00:15:26,000 --> 00:15:33,000
+Real estate application, a component situated on the real estate server manages the extensive database
+
+196
+00:15:33,000 --> 00:15:35,000
+of real estate listings.
+
+197
+00:15:36,000 --> 00:15:44,000
+Buyer application A user facing component residing in the individual machine node serves as an interface
+
+198
+00:15:44,000 --> 00:15:51,000
+through which buyers interact with both the mortgage application and real estate application.
+
+199
+00:15:51,000 --> 00:15:54,000
+To draw components, you can simply find.
+
+200
+00:15:54,000 --> 00:15:56,000
+Component element in the icons library.
+
+201
+00:15:57,000 --> 00:16:02,000
+We shouldn't forget about artifacts in the bank server node.
+
+202
+00:16:02,000 --> 00:16:10,000
+I created custom database artifact and in real estate server node I created artifact that represents
+
+203
+00:16:10,000 --> 00:16:12,000
+multiple listings.
+
+204
+00:16:13,000 --> 00:16:14,000
+Let's talk about dependencies.
+
+205
+00:16:14,000 --> 00:16:18,000
+Now we're going to have the following dependencies.
+
+206
+00:16:19,000 --> 00:16:21,000
+Mortgage application dependency.
+
+207
+00:16:22,000 --> 00:16:29,000
+The mortgage application component depends on a database artifact that is situated in the same node.
+
+208
+00:16:29,000 --> 00:16:36,000
+Indicates that the mortgage application relies on a database for storing and retrieving mortgage related
+
+209
+00:16:36,000 --> 00:16:37,000
+data.
+
+210
+00:16:38,000 --> 00:16:41,000
+Real estate application dependency.
+
+211
+00:16:41,000 --> 00:16:49,000
+The real estate application component depends on a multiple listing artifact that is located in the
+
+212
+00:16:49,000 --> 00:16:50,000
+same node.
+
+213
+00:16:50,000 --> 00:16:57,000
+This dependency signifies that the real estate listing relies on a specialized artifact.
+
+214
+00:16:57,000 --> 00:16:59,000
+Managing multiple property listings.
+
+215
+00:17:00,000 --> 00:17:03,000
+Via application dependencies.
+
+216
+00:17:03,000 --> 00:17:11,000
+The by application component depends on both the mortgage application and real estate application.
+
+217
+00:17:11,000 --> 00:17:18,000
+This dependency illustrates that the buyer application relies on data and services provided by both
+
+218
+00:17:18,000 --> 00:17:23,000
+the mortgage application and real estate application components.
+
+219
+00:17:23,000 --> 00:17:28,000
+Pay attention that dependency arrow is connected with white circle.
+
+220
+00:17:28,000 --> 00:17:31,000
+Do you remember what this white circle means?
+
+221
+00:17:31,000 --> 00:17:33,000
+It is an interface.
+
+222
+00:17:34,000 --> 00:17:42,000
+The white circle represents an abstract communication point, which serves as an intermediary or a way
+
+223
+00:17:42,000 --> 00:17:44,000
+to depict communication between nodes.
+
+224
+00:17:45,000 --> 00:17:52,000
+It abstracts the actual communication process between nodes and emphasizes the connection point.
+
+225
+00:17:52,000 --> 00:17:57,000
+And from white circle we have the line that connects it with node.
+
+226
+00:17:57,000 --> 00:18:04,000
+The line extending from the white circle to the next component represents the continuation of the communication
+
+227
+00:18:04,000 --> 00:18:06,000
+path to the component.
+
+228
+00:18:06,000 --> 00:18:13,000
+In our previous lessons we already visualized dependencies, so I believe you would be able to find
+
+229
+00:18:13,000 --> 00:18:16,000
+dependency element without any problem.
+
+230
+00:18:16,000 --> 00:18:21,000
+Let's talk about associations that we shouldn't forget to draw.
+
+231
+00:18:22,000 --> 00:18:29,000
+There are associations between bank server node and individual machine node and between real estate
+
+232
+00:18:29,000 --> 00:18:32,000
+server node and individual machine node.
+
+233
+00:18:33,000 --> 00:18:41,000
+These associations represent the interconnection and communication paths between these nodes, allowing
+
+234
+00:18:41,000 --> 00:18:49,000
+seamless communication and data exchange within the mortgage and real estate application ecosystem.
+
+235
+00:18:49,000 --> 00:18:54,000
+And you can see that TCP IP protocol is used for communication.
+
+236
+00:18:54,000 --> 00:19:00,000
+And I note this with text label regarding association element.
+
+237
+00:19:00,000 --> 00:19:03,000
+You can also easily find it in the icons library.
+
+238
+00:19:04,000 --> 00:19:10,000
+This deployment diagram captures the architecture of a comprehensive application, highlighting the
+
+239
+00:19:10,000 --> 00:19:17,000
+dependencies among key components and the associations between nodes, facilitating effective communication
+
+240
+00:19:17,000 --> 00:19:20,000
+and functionality across the entire system.
+
+241
+00:19:21,000 --> 00:19:25,000
+Okay, so we reviewed a real life example.
+
+242
+00:19:25,000 --> 00:19:26,000
+We learned enough theory.
+
+243
+00:19:26,000 --> 00:19:30,000
+Let's now make a conclusion about deployment diagram.
+
+244
+00:19:30,000 --> 00:19:37,000
+In conclusion, a deployment diagram in UML is a valuable tool that provides a clear visual representation
+
+245
+00:19:37,000 --> 00:19:39,000
+of the physical structure of a system.
+
+246
+00:19:39,000 --> 00:19:46,000
+It helps in system design, communication with stakeholders, network configuration, optimization of
+
+247
+00:19:46,000 --> 00:19:52,000
+deployment, documentation, collaboration and development teams, system testing, and various other
+
+248
+00:19:52,000 --> 00:19:56,000
+aspects of the development and maintenance process.
+
+249
+00:19:57,000 --> 00:20:03,000
+By offering a comprehensive view of how software and hardware components are distributed and interact,
+
+250
+00:20:03,000 --> 00:20:11,000
+deployment diagrams play a crucial role in facilitating effective planning, communication, and decision
+
+251
+00:20:11,000 --> 00:20:14,000
+making throughout the life cycle of a system.
+
+252
+00:20:15,000 --> 00:20:16,000
+That's all for this lesson.
+
+253
+00:20:17,000 --> 00:20:20,000
+Let's recap what we have learned in the lesson.
+
+254
+00:20:21,000 --> 00:20:23,000
+We learned what deployment diagram is.
+
+255
+00:20:23,000 --> 00:20:27,000
+I explained the goals and purposes of deployment diagram.
+
+256
+00:20:27,000 --> 00:20:31,000
+Now you know in what cases it is recommended to use deployment diagram.
+
+257
+00:20:32,000 --> 00:20:38,000
+Also, we learned elements of deployment diagram and reviewed practical exercises and real life example
+
+258
+00:20:38,000 --> 00:20:40,000
+of deployment diagram.
+
+259
+00:20:40,000 --> 00:20:41,000
+That's it.
+
+260
+00:20:41,000 --> 00:20:43,000
+Thanks a lot for your attention.
+
+261
+00:20:43,000 --> 00:20:46,000
+Have a great day and see you in the next lesson.
+
diff --git a/106 - Structural Diagrams/005 Deployment-Diagram-Example.url b/106 - Structural Diagrams/005 Deployment-Diagram-Example.url
new file mode 100644
index 0000000000000000000000000000000000000000..2a44376344583fa8c9847abfe756c23aff3a7007
--- /dev/null
+++ b/106 - Structural Diagrams/005 Deployment-Diagram-Example.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1Q2sS_Dkp9I9vRXWVkqsEwoEKkmQYajwm/view?usp=sharing
\ No newline at end of file
diff --git a/106 - Structural Diagrams/006 Composite Structure Diagram_en.srt b/106 - Structural Diagrams/006 Composite Structure Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..b3b2622a71fdaa9d1f7cae95194821cdf8619865
--- /dev/null
+++ b/106 - Structural Diagrams/006 Composite Structure Diagram_en.srt
@@ -0,0 +1,1232 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello team!
+
+2
+00:00:06,000 --> 00:00:10,000
+In this lesson we are going to learn composite structure diagram.
+
+3
+00:00:10,000 --> 00:00:14,000
+We're going to start the lesson from learning the definition of composite structure diagram.
+
+4
+00:00:15,000 --> 00:00:22,000
+I will explain such a basic concept as classifier because I'm going to use this term a lot during the
+
+5
+00:00:22,000 --> 00:00:23,000
+lesson.
+
+6
+00:00:23,000 --> 00:00:28,000
+After that we will learn goals and purposes of the composite structure diagram.
+
+7
+00:00:28,000 --> 00:00:33,000
+I'm going to explain you in which cases it is recommended to use this type of diagram.
+
+8
+00:00:33,000 --> 00:00:38,000
+Then we will learn elements that make up this type of diagram.
+
+9
+00:00:39,000 --> 00:00:43,000
+And at the end of the lesson we are going to review real life example.
+
+10
+00:00:43,000 --> 00:00:45,000
+Let's start our lesson.
+
+11
+00:00:46,000 --> 00:00:52,000
+As always, let's start from learning the definition of composite structure diagram and what it is about.
+
+12
+00:00:52,000 --> 00:00:59,000
+In a composite structure diagram is a type of structural diagram that shows the internal structure of
+
+13
+00:00:59,000 --> 00:01:05,000
+a classifier, including its interaction points to other parts of the system.
+
+14
+00:01:05,000 --> 00:01:13,000
+It shows the configuration and relationship of parts that together performs the behavior of the containing
+
+15
+00:01:13,000 --> 00:01:14,000
+classifier.
+
+16
+00:01:15,000 --> 00:01:21,000
+Class elements have been described in great detail in the section on class diagrams.
+
+17
+00:01:21,000 --> 00:01:27,000
+This section describes the way classes can be displayed as a composite elements.
+
+18
+00:01:27,000 --> 00:01:32,000
+Exposing interfaces and containing ports and ports.
+
+19
+00:01:32,000 --> 00:01:40,000
+This diagram illustrates the components, classes, interfaces, collaborations, and their relationships
+
+20
+00:01:40,000 --> 00:01:41,000
+within a system.
+
+21
+00:01:41,000 --> 00:01:47,000
+The composite structure diagram is particularly useful when you want to depict the structure of a complex
+
+22
+00:01:47,000 --> 00:01:53,000
+class, emphasizing the interactions and connections between its parts.
+
+23
+00:01:54,000 --> 00:02:01,000
+It's often used to model the static aspects of a system, representing the way components are organized
+
+24
+00:02:01,000 --> 00:02:05,000
+and how they interact at a structural level.
+
+25
+00:02:05,000 --> 00:02:13,000
+The diagram helps in understanding the organization of a class and the relationships between its components,
+
+26
+00:02:13,000 --> 00:02:16,000
+helping in the design and analysis of complex systems.
+
+27
+00:02:16,000 --> 00:02:23,000
+It provides a visual representation of how the parts of class collaborate to achieve the desired functionality.
+
+28
+00:02:24,000 --> 00:02:30,000
+As you noticed, I used the term classifier and I will keep using it during today's lesson.
+
+29
+00:02:30,000 --> 00:02:34,000
+Let's understand the meaning of this term in scope of this lesson.
+
+30
+00:02:34,000 --> 00:02:42,000
+In the context of UML and composite structure diagrams, a classifier is a general term that refers
+
+31
+00:02:42,000 --> 00:02:46,000
+to a category of elements that share common characteristics.
+
+32
+00:02:46,000 --> 00:02:49,000
+In this context, a classifier can be.
+
+33
+00:02:50,000 --> 00:02:51,000
+Gloss.
+
+34
+00:02:51,000 --> 00:02:58,000
+A gloss is a blueprint for objects, defining attributes and operations that the objects of the class
+
+35
+00:02:58,000 --> 00:02:59,000
+will have.
+
+36
+00:02:59,000 --> 00:03:05,000
+It represents a set of objects with similar properties, behaviors, and relationships.
+
+37
+00:03:06,000 --> 00:03:07,000
+Interface.
+
+38
+00:03:08,000 --> 00:03:15,000
+An interface defines a contract for a set of operations that a class or a component must implement.
+
+39
+00:03:15,000 --> 00:03:22,000
+It specifies the signatures of the operations but doesn't provide their implementation.
+
+40
+00:03:23,000 --> 00:03:24,000
+Collaboration.
+
+41
+00:03:25,000 --> 00:03:26,000
+A collaboration is a classifier.
+
+42
+00:03:26,000 --> 00:03:29,000
+Thatrillionepresents a group of elements.
+
+43
+00:03:29,000 --> 00:03:34,000
+For example classes components working together to perform collective behavior.
+
+44
+00:03:34,000 --> 00:03:38,000
+It emphasizes the cooperation between these elements.
+
+45
+00:03:38,000 --> 00:03:39,000
+Use case.
+
+46
+00:03:40,000 --> 00:03:46,000
+While less common in composite structure diagrams, a use case can also be considered as a classifier.
+
+47
+00:03:47,000 --> 00:03:54,000
+A use case represents a specific functionality or behavior that a system provides to its users.
+
+48
+00:03:55,000 --> 00:04:03,000
+In essence, a classifier is a generic term that encompasses different types of elements, and in the
+
+49
+00:04:03,000 --> 00:04:10,000
+context of a composite structure diagram, it is typically a class or a structured classifier, which
+
+50
+00:04:10,000 --> 00:04:11,000
+can include classes.
+
+51
+00:04:11,000 --> 00:04:13,000
+Interface collaborations.
+
+52
+00:04:13,000 --> 00:04:14,000
+ET cetera.
+
+53
+00:04:14,000 --> 00:04:21,000
+The classifier defines the structure, behavior, and relationships of the elements it represents within
+
+54
+00:04:21,000 --> 00:04:22,000
+the diagram.
+
+55
+00:04:22,000 --> 00:04:28,000
+Let's try to understand goals and purposes of composite structure diagram.
+
+56
+00:04:28,000 --> 00:04:34,000
+This type of diagram has various goals and purposes, so let's review them one by one.
+
+57
+00:04:35,000 --> 00:04:37,000
+Illustrate internal structure.
+
+58
+00:04:38,000 --> 00:04:44,000
+A composite structure diagram helps to illustrate the internal structure of a class or a system.
+
+59
+00:04:45,000 --> 00:04:52,000
+It shows how classes, components, and other structural elements are organized and interact within
+
+60
+00:04:52,000 --> 00:04:53,000
+a larger system.
+
+61
+00:04:54,000 --> 00:04:55,000
+Model.
+
+62
+00:04:55,000 --> 00:04:56,000
+Complex systems.
+
+63
+00:04:56,000 --> 00:05:03,000
+This type of diagram is particularly useful for modeling complex systems, where a class or a component
+
+64
+00:05:03,000 --> 00:05:06,000
+is composed of other classes or components.
+
+65
+00:05:06,000 --> 00:05:14,000
+It provides a clear visual representation of the relationships and collaborations among the internal
+
+66
+00:05:14,000 --> 00:05:14,000
+parts.
+
+67
+00:05:16,000 --> 00:05:18,000
+Clarify component interaction.
+
+68
+00:05:18,000 --> 00:05:25,000
+It helps in clarifying how different components and classes within a system interact and collaborate
+
+69
+00:05:25,000 --> 00:05:27,000
+to achieve specific functionalities.
+
+70
+00:05:27,000 --> 00:05:33,000
+This can be essential for understanding the overall behavior and functioning of the system.
+
+71
+00:05:34,000 --> 00:05:36,000
+Detail component relationships.
+
+72
+00:05:37,000 --> 00:05:43,000
+The diagram allows you to detail relationships between classes, components, ports, and connectors.
+
+73
+00:05:43,000 --> 00:05:50,000
+This level of detail is valuable when designing systems that involve intricate interactions between
+
+74
+00:05:50,000 --> 00:05:51,000
+different elements.
+
+75
+00:05:52,000 --> 00:05:55,000
+Facilitate design and analysis.
+
+76
+00:05:55,000 --> 00:06:02,000
+Composite structure diagrams help in the design and analysis phases of system development.
+
+77
+00:06:02,000 --> 00:06:09,000
+They provide a visual tool for architects and designers to plan and analyze the structure of a system,
+
+78
+00:06:09,000 --> 00:06:13,000
+making it easier to identify potential issues or improvements.
+
+79
+00:06:14,000 --> 00:06:17,000
+Emphasized component roles.
+
+80
+00:06:17,000 --> 00:06:23,000
+The diagram emphasizes the roles played by different components or classes within a system.
+
+81
+00:06:23,000 --> 00:06:29,000
+This can be crucial for understanding the responsibilities of each part and how they contribute to the
+
+82
+00:06:29,000 --> 00:06:31,000
+overall functionality.
+
+83
+00:06:31,000 --> 00:06:33,000
+Enhance communication.
+
+84
+00:06:33,000 --> 00:06:39,000
+The visual nature of composite structure diagrams makes them effective communication tools.
+
+85
+00:06:39,000 --> 00:06:45,000
+They facilitate communication among stakeholders, including developers, designers, and other team
+
+86
+00:06:45,000 --> 00:06:49,000
+members, by providing a common understanding of the system's structure.
+
+87
+00:06:50,000 --> 00:06:59,000
+So as you can see, composite structure diagrams in UML serve as powerful tools for modeling and understanding
+
+88
+00:06:59,000 --> 00:07:06,000
+the internal structure of different classifiers, classes, and systems, supporting various aspects
+
+89
+00:07:06,000 --> 00:07:08,000
+of the software development life cycle.
+
+90
+00:07:09,000 --> 00:07:16,000
+Understanding goals and purposes of composite structure diagram should help us to understand when and
+
+91
+00:07:16,000 --> 00:07:19,000
+in which cases it is recommended to use this type of diagram.
+
+92
+00:07:20,000 --> 00:07:27,000
+A composite structure diagram in UML is used in various scenarios where you need to illustrate and understand
+
+93
+00:07:27,000 --> 00:07:31,000
+the internal structure and interactions within a complex system.
+
+94
+00:07:32,000 --> 00:07:36,000
+Here are some situations where using a composite structure diagram is beneficial.
+
+95
+00:07:37,000 --> 00:07:43,000
+Complex class structures use complex structure diagrams when dealing with classifiers.
+
+96
+00:07:43,000 --> 00:07:52,000
+Classes are components that have a complex internal structure involving multiple parts and their relationships.
+
+97
+00:07:53,000 --> 00:07:54,000
+System architecture.
+
+98
+00:07:54,000 --> 00:07:54,000
+Design.
+
+99
+00:07:55,000 --> 00:08:02,000
+When designing the architecture of a system, especially one with complex interactions between components,
+
+100
+00:08:03,000 --> 00:08:09,000
+a composite structure diagram can help visualize how different parts contribute to the overall system
+
+101
+00:08:09,000 --> 00:08:10,000
+functionality.
+
+102
+00:08:11,000 --> 00:08:13,000
+Component based development.
+
+103
+00:08:13,000 --> 00:08:19,000
+In component based development, where a system is built by composing reusable components.
+
+104
+00:08:19,000 --> 00:08:26,000
+Composite structure diagrams provide a way to depict how these components are organized and interconnected.
+
+105
+00:08:28,000 --> 00:08:30,000
+Modeling internal behavior.
+
+106
+00:08:30,000 --> 00:08:37,000
+If you need to model and analyze the internal behavior of a class, including how its parts collaborate
+
+107
+00:08:37,000 --> 00:08:41,000
+to achieve specific tasks, a composite structure diagram is valuable.
+
+108
+00:08:42,000 --> 00:08:44,000
+Understanding collaboration.
+
+109
+00:08:45,000 --> 00:08:51,000
+When you want to emphasize a collaboration between classes or components and illustrate how they work
+
+110
+00:08:51,000 --> 00:08:56,000
+together to achieve a common goal, a composite structure diagram can be useful.
+
+111
+00:08:57,000 --> 00:09:02,000
+Detailed system analysis during the analysis phase of system development.
+
+112
+00:09:02,000 --> 00:09:09,000
+Use composite structure diagrams to conduct a detailed examination of the relationships and interactions
+
+113
+00:09:09,000 --> 00:09:11,000
+within a system's structure.
+
+114
+00:09:12,000 --> 00:09:14,000
+Designing complex systems.
+
+115
+00:09:15,000 --> 00:09:22,000
+When designing complex software systems with multiple interacting components, the diagram helps in
+
+116
+00:09:22,000 --> 00:09:29,000
+organizing and visualizing the internal structure to ensure a coherent and efficient design.
+
+117
+00:09:30,000 --> 00:09:31,000
+Identifying dependencies.
+
+118
+00:09:31,000 --> 00:09:39,000
+Use composite structure diagrams to identify and understand dependencies between different parts inside
+
+119
+00:09:39,000 --> 00:09:44,000
+the classifier, helping in managing and minimizing coupling.
+
+120
+00:09:45,000 --> 00:09:50,000
+So the main thing that I want you to remember is that you should use composite structure diagrams when
+
+121
+00:09:50,000 --> 00:09:57,000
+you need to represent and understand the internal structure of a class or a system, especially in situations
+
+122
+00:09:57,000 --> 00:10:02,000
+involving complexity, collaboration, and detailed system analysis.
+
+123
+00:10:03,000 --> 00:10:10,000
+Before review of real life example, let's understand elements that composite structure diagram usually
+
+124
+00:10:10,000 --> 00:10:11,000
+consists of.
+
+125
+00:10:12,000 --> 00:10:13,000
+Class element.
+
+126
+00:10:14,000 --> 00:10:21,000
+It represents a class or a structured classifier, including its attributes, operations, and other
+
+127
+00:10:21,000 --> 00:10:22,000
+structural elements.
+
+128
+00:10:23,000 --> 00:10:26,000
+It is shown as a rectangle with a class name.
+
+129
+00:10:26,000 --> 00:10:27,000
+Attributes.
+
+130
+00:10:27,000 --> 00:10:28,000
+Parts.
+
+131
+00:10:28,000 --> 00:10:31,000
+Operations inside.
+
+132
+00:10:32,000 --> 00:10:41,000
+Port A port is an element that represents a set of one or more instances which are owned by a container
+
+133
+00:10:41,000 --> 00:10:43,000
+classifier instance.
+
+134
+00:10:43,000 --> 00:10:50,000
+So, for example, if a diagram instance owned a set of graphical elements, then the graphical elements
+
+135
+00:10:50,000 --> 00:10:53,000
+could be represented as ports.
+
+136
+00:10:53,000 --> 00:10:58,000
+If it were useful to do so to model some kind of relationship between them.
+
+137
+00:10:58,000 --> 00:11:07,000
+So ports illustrate the internal components or parts of a classifier class and their relationships.
+
+138
+00:11:08,000 --> 00:11:14,000
+A part is shown as a rectangle contained within the body of a class element.
+
+139
+00:11:15,000 --> 00:11:17,000
+Collaboration.
+
+140
+00:11:17,000 --> 00:11:23,000
+The collaboration represents a group of elements working together to perform collective behavior.
+
+141
+00:11:24,000 --> 00:11:30,000
+It illustrates how different classifiers or components collaborate to achieve a specific goal.
+
+142
+00:11:31,000 --> 00:11:37,000
+It is shown as dashed ellipse containing the names of the collaborating elements.
+
+143
+00:11:38,000 --> 00:11:47,000
+Port A port indicates the presence of a port on a class of port, facilitating the understanding of
+
+144
+00:11:47,000 --> 00:11:51,000
+interactions within the external environment.
+
+145
+00:11:51,000 --> 00:11:58,000
+It highlights specific points where a port interacts with its surroundings.
+
+146
+00:11:58,000 --> 00:12:03,000
+It is shown as a small square on the side of a class or a part.
+
+147
+00:12:04,000 --> 00:12:05,000
+Connector.
+
+148
+00:12:06,000 --> 00:12:13,000
+Connector represents relationships between different elements, such as associations or dependencies.
+
+149
+00:12:13,000 --> 00:12:18,000
+It shows connections between classifiers, classes, ports, and ports.
+
+150
+00:12:19,000 --> 00:12:23,000
+It is shown as a line that connects elements.
+
+151
+00:12:24,000 --> 00:12:25,000
+Multiplicity.
+
+152
+00:12:25,000 --> 00:12:32,000
+Multiplicity specifies the number of instances or elements participating in a relationship.
+
+153
+00:12:33,000 --> 00:12:39,000
+It defines how many instances of an element are connected to another class or a part.
+
+154
+00:12:40,000 --> 00:12:44,000
+It is shown as a numerical range near the association line.
+
+155
+00:12:46,000 --> 00:12:46,000
+Rho.
+
+156
+00:12:47,000 --> 00:12:53,000
+Rho specifies the roles that a part plays within the context of the container classifier.
+
+157
+00:12:54,000 --> 00:12:59,000
+It clarifies the specific function or purpose of a part within a class.
+
+158
+00:12:59,000 --> 00:13:04,000
+It is shown after a part name, usually separated by a colon.
+
+159
+00:13:06,000 --> 00:13:07,000
+Role binding.
+
+160
+00:13:07,000 --> 00:13:16,000
+A role binding connector is drawn from a collaboration to the classifier that fulfills the role.
+
+161
+00:13:16,000 --> 00:13:22,000
+It is shown as a dashed line with the name of the role as the classifier and.
+
+162
+00:13:23,000 --> 00:13:24,000
+Interfaces.
+
+163
+00:13:25,000 --> 00:13:30,000
+Interfaces are a bit like classes, but they have some rules.
+
+164
+00:13:30,000 --> 00:13:37,000
+All the things an interface does are public and abstract and they don't come with default plan.
+
+165
+00:13:38,000 --> 00:13:43,000
+Also, everything inside an interface must stay constant.
+
+166
+00:13:43,000 --> 00:13:50,000
+On a diagram, when you see an interface, it looks like a class box with the word interface.
+
+167
+00:13:50,000 --> 00:13:56,000
+It is depicted either as a class element within a rectangle featuring the interface keyword.
+
+168
+00:13:57,000 --> 00:14:06,000
+Its name is italicized to signify its abstract nature, or it may be represented as a circle.
+
+169
+00:14:06,000 --> 00:14:09,000
+Provided and required interfaces.
+
+170
+00:14:09,000 --> 00:14:13,000
+The two types provided and required.
+
+171
+00:14:13,000 --> 00:14:19,000
+Provided means the class gives the operations from the interface.
+
+172
+00:14:19,000 --> 00:14:24,000
+Shown by drawing a link between the class and the interface.
+
+173
+00:14:24,000 --> 00:14:31,000
+Required means that the class can talk to another class that gives the operations from the interface,
+
+174
+00:14:31,000 --> 00:14:36,000
+shown by drawing a link between the class and the interface.
+
+175
+00:14:36,000 --> 00:14:38,000
+Look at it like this.
+
+176
+00:14:38,000 --> 00:14:46,000
+I provided interface looks like a ball on a stick on the edge of a cloth, while a required interface
+
+177
+00:14:46,000 --> 00:14:51,000
+looks like a cop on a stick on the edge of a classifier element.
+
+178
+00:14:52,000 --> 00:14:58,000
+These elements collectively form a composite structure diagram, providing a comprehensive representation
+
+179
+00:14:58,000 --> 00:15:02,000
+of the internal structure and relationship within a class or a system.
+
+180
+00:15:02,000 --> 00:15:08,000
+We learned elements of a composite structure diagram, and now we are ready to review requirements for
+
+181
+00:15:08,000 --> 00:15:10,000
+a real life example.
+
+182
+00:15:10,000 --> 00:15:14,000
+We are going to create a composite structure diagram of the computer.
+
+183
+00:15:14,000 --> 00:15:16,000
+This is going to be simplified.
+
+184
+00:15:16,000 --> 00:15:24,000
+Version will not specify all possible details and interactions, but we will specify enough details
+
+185
+00:15:24,000 --> 00:15:26,000
+to practice our skills.
+
+186
+00:15:26,000 --> 00:15:32,000
+Because at the end of the day, the main thing for you is to understand key principles, and after that
+
+187
+00:15:32,000 --> 00:15:35,000
+you can scale your knowledge on bigger diagrams.
+
+188
+00:15:36,000 --> 00:15:41,000
+For example, you can just add new elements, but principle would be the same.
+
+189
+00:15:42,000 --> 00:15:48,000
+So in scope of this lesson, we are going to draw a diagram that will have the following parts.
+
+190
+00:15:49,000 --> 00:15:50,000
+Power supply unit.
+
+191
+00:15:50,000 --> 00:15:52,000
+Hard disk drive.
+
+192
+00:15:52,000 --> 00:15:53,000
+Main board.
+
+193
+00:15:53,000 --> 00:15:55,000
+Optical drive.
+
+194
+00:15:55,000 --> 00:15:56,000
+Memory module.
+
+195
+00:15:56,000 --> 00:15:58,000
+Central processing unit.
+
+196
+00:15:59,000 --> 00:16:04,000
+Each of ports should have ports and be connected to other ports.
+
+197
+00:16:04,000 --> 00:16:07,000
+We're going to have the following connections.
+
+198
+00:16:07,000 --> 00:16:10,000
+Main board is connected with all elements.
+
+199
+00:16:11,000 --> 00:16:18,000
+On top of that, optical drive is connected with power supply unit, and hard disk drive is also connected
+
+200
+00:16:18,000 --> 00:16:20,000
+with power supply unit.
+
+201
+00:16:20,000 --> 00:16:24,000
+And not mandatory, but additional task for you.
+
+202
+00:16:24,000 --> 00:16:26,000
+In case you are familiar with electronics.
+
+203
+00:16:26,000 --> 00:16:30,000
+Feel free to specify interfaces for connectors.
+
+204
+00:16:30,000 --> 00:16:33,000
+Apply your imagination.
+
+205
+00:16:33,000 --> 00:16:36,000
+This is not a task with strict requirements.
+
+206
+00:16:36,000 --> 00:16:40,000
+Feel free to implement it as you understand.
+
+207
+00:16:41,000 --> 00:16:48,000
+As always, I recommend you to put the video on pause and draw the diagram first using requirements
+
+208
+00:16:48,000 --> 00:16:49,000
+by yourself.
+
+209
+00:16:49,000 --> 00:16:50,000
+Try to do this.
+
+210
+00:16:50,000 --> 00:16:54,000
+Think about this in case you have any questions.
+
+211
+00:16:54,000 --> 00:16:59,000
+Do not hesitate to ask your questions below the video and I will be happy to answer.
+
+212
+00:16:59,000 --> 00:17:07,000
+And once you try to draw the diagram, resume the video and I will show you my version of the diagram.
+
+213
+00:17:08,000 --> 00:17:11,000
+So I started with a blank diagram.
+
+214
+00:17:11,000 --> 00:17:20,000
+I used class element from the icons library to create PC element, and inside I used rectangles to create
+
+215
+00:17:20,000 --> 00:17:26,000
+our parts in diagrams dot net two you have different elements for rectangles.
+
+216
+00:17:26,000 --> 00:17:33,000
+For example an icons library, you can use artifact element or simply rectangle element.
+
+217
+00:17:33,000 --> 00:17:36,000
+These are visually similar icons.
+
+218
+00:17:37,000 --> 00:17:40,000
+I write name of the part and its role.
+
+219
+00:17:40,000 --> 00:17:47,000
+You can see that I created all parts that we discussed when we reviewed the slide with requirements.
+
+220
+00:17:48,000 --> 00:17:52,000
+Each port has port or sometimes multiple ports.
+
+221
+00:17:53,000 --> 00:18:00,000
+Also, I specified multiplicity, and here is an important point that I would like to draw your attention
+
+222
+00:18:00,000 --> 00:18:01,000
+to.
+
+223
+00:18:01,000 --> 00:18:02,000
+Not necessarily.
+
+224
+00:18:02,000 --> 00:18:09,000
+You have to specify multiplicity on top of connector line sometimes, and you can find this in other
+
+225
+00:18:09,000 --> 00:18:11,000
+real life examples.
+
+226
+00:18:11,000 --> 00:18:16,000
+Multiplicity is specified in square brackets inside port element.
+
+227
+00:18:17,000 --> 00:18:25,000
+Like here for example, you can see that we have one main board, one optical drive, one power supply
+
+228
+00:18:25,000 --> 00:18:25,000
+unit.
+
+229
+00:18:25,000 --> 00:18:34,000
+Besides memory module, pay attention that I have two slots in my main board and I have two memory modules.
+
+230
+00:18:34,000 --> 00:18:39,000
+This is just practical hint that you can use in your diagrams to.
+
+231
+00:18:40,000 --> 00:18:47,000
+And the rest of the things is visualization of connectors and details of connections to highlight how
+
+232
+00:18:47,000 --> 00:18:49,000
+internal parts interact between each other.
+
+233
+00:18:50,000 --> 00:18:56,000
+As you can see here, the lines that connect ports, we call them connectors.
+
+234
+00:18:56,000 --> 00:18:59,000
+I specify details of connector interfaces.
+
+235
+00:18:59,000 --> 00:19:07,000
+This port is related to electronics and probably there is not too much sense to explain you the details,
+
+236
+00:19:07,000 --> 00:19:09,000
+but I believe you got the point.
+
+237
+00:19:10,000 --> 00:19:16,000
+In case you would have any questions, feel free to ask questions below the video and I will be happy
+
+238
+00:19:16,000 --> 00:19:16,000
+to answer.
+
+239
+00:19:17,000 --> 00:19:24,000
+Let me just share with you some key points of electronics just for your general education, and so that
+
+240
+00:19:24,000 --> 00:19:27,000
+you can understand this example and this diagram better.
+
+241
+00:19:28,000 --> 00:19:36,000
+For example, you can see that I specified Sata interface and I specify where is Sata device and Sata
+
+242
+00:19:36,000 --> 00:19:37,000
+host port.
+
+243
+00:19:38,000 --> 00:19:45,000
+Sata host and Sata device refer to components in a serial ATA storage system.
+
+244
+00:19:46,000 --> 00:19:53,000
+Sata is a standard interface used for connecting storage devices such as hard drives, solid state drives,
+
+245
+00:19:53,000 --> 00:19:59,000
+and optical drives to a computer's motherboard or host controller.
+
+246
+00:19:59,000 --> 00:20:07,000
+The Sata host is typically the controller on the computer's motherboard, or a separate expansion card
+
+247
+00:20:07,000 --> 00:20:10,000
+that manages and controls Sota devices.
+
+248
+00:20:10,000 --> 00:20:16,000
+It serves as the interface between the computer system and the connected storage devices.
+
+249
+00:20:17,000 --> 00:20:24,000
+The Sata host controller is responsible for sending and receiving data between the computer and the
+
+250
+00:20:24,000 --> 00:20:25,000
+Sata devices.
+
+251
+00:20:26,000 --> 00:20:31,000
+A Sata device refers to the storage component connected to the Sata host.
+
+252
+00:20:31,000 --> 00:20:39,000
+This can include various storage devices such as hard disk drives, solid state drives, or optical
+
+253
+00:20:39,000 --> 00:20:40,000
+drives.
+
+254
+00:20:40,000 --> 00:20:47,000
+Sata devices use the Sata interface to communicate with the Sata host controller, enabling the transfer
+
+255
+00:20:47,000 --> 00:20:51,000
+of data between the storage device and the computer.
+
+256
+00:20:51,000 --> 00:20:55,000
+Also specified details for pin connectors.
+
+257
+00:20:55,000 --> 00:21:01,000
+For example, let's use this 115 pin F and 15 pin M.
+
+258
+00:21:02,000 --> 00:21:07,000
+Typically refer to connectors commonly used in electronic devices.
+
+259
+00:21:07,000 --> 00:21:10,000
+Here is what these notations generally mean.
+
+260
+00:21:11,000 --> 00:21:12,000
+15 pin.
+
+261
+00:21:13,000 --> 00:21:18,000
+This indicates that the connector has 15 pins of electrical contacts.
+
+262
+00:21:18,000 --> 00:21:26,000
+Each pin serves a specific function, such as transmitting data, providing power, or facilitating
+
+263
+00:21:26,000 --> 00:21:28,000
+communication between devices.
+
+264
+00:21:29,000 --> 00:21:29,000
+EFF.
+
+265
+00:21:30,000 --> 00:21:34,000
+The EFF often denotes the gender of the connector.
+
+266
+00:21:35,000 --> 00:21:40,000
+F stands for female and M stands for male.
+
+267
+00:21:40,000 --> 00:21:48,000
+A female connector typically has receptacles or holes to accept the pins from a male connector, and
+
+268
+00:21:48,000 --> 00:21:56,000
+the male connector typically has protruding pins that fit into receptacles or holes of a female connector.
+
+269
+00:21:57,000 --> 00:22:05,000
+You can also see that I used PGA dim and socket terms too.
+
+270
+00:22:06,000 --> 00:22:10,000
+I would just make a brief overview of these ones if you are interested.
+
+271
+00:22:11,000 --> 00:22:14,000
+PGA stands for pin grid array.
+
+272
+00:22:14,000 --> 00:22:23,000
+PGA is a type of CPU packaging where the pins of the processor are arranged in a grid on the underside
+
+273
+00:22:23,000 --> 00:22:24,000
+of the chip.
+
+274
+00:22:24,000 --> 00:22:29,000
+These pins fit into matching socket on the motherboard.
+
+275
+00:22:29,000 --> 00:22:36,000
+PJ is a common packaging method for CPUs, providing a secure connection between the processor and the
+
+276
+00:22:36,000 --> 00:22:37,000
+motherboard.
+
+277
+00:22:37,000 --> 00:22:41,000
+It allows for easy replacement or upgrade of CPUs.
+
+278
+00:22:42,000 --> 00:22:48,000
+Gim stands for dual in-line Memory module.
+
+279
+00:22:50,000 --> 00:22:56,000
+M is a type of memory module used in computers for storing primary data.
+
+280
+00:22:56,000 --> 00:23:04,000
+It contains a series of dynamic random access memory chips on a small circuit board, with pins on both
+
+281
+00:23:04,000 --> 00:23:05,000
+sides.
+
+282
+00:23:06,000 --> 00:23:12,000
+G I am so used for system memory in desktops, laptops, and servers.
+
+283
+00:23:12,000 --> 00:23:21,000
+They provide a higher capacity for memory storage compared to earlier memory modules like S I amps.
+
+284
+00:23:21,000 --> 00:23:24,000
+That stands for single in-line memory modules.
+
+285
+00:23:25,000 --> 00:23:34,000
+Socket A socket is a connector on the motherboard that accepts a specific type of processor package.
+
+286
+00:23:34,000 --> 00:23:41,000
+It is a component that allows the CPU to be mounted and connected to the rest of the computer system.
+
+287
+00:23:42,000 --> 00:23:47,000
+The circuit serves as the interface between the processor and the motherboard.
+
+288
+00:23:47,000 --> 00:23:52,000
+It provides power, communication, and physical support for the CPU.
+
+289
+00:23:52,000 --> 00:23:57,000
+Different CPU types may require different socket designs.
+
+290
+00:23:57,000 --> 00:24:03,000
+And now when we learn theory about composite structure diagram, and after we created real life example
+
+291
+00:24:03,000 --> 00:24:06,000
+of this type diagram, let's make a conclusion.
+
+292
+00:24:07,000 --> 00:24:13,000
+In conclusion, a composite structure diagram in UML is a powerful tool for visually representing the
+
+293
+00:24:13,000 --> 00:24:16,000
+internal structure of a class or a system.
+
+294
+00:24:16,000 --> 00:24:24,000
+It allows us to break down complex structures into manageable parts, illustrating how classes, components,
+
+295
+00:24:24,000 --> 00:24:30,000
+collaborations, and their relationships work together to achieve specific functionalities.
+
+296
+00:24:31,000 --> 00:24:38,000
+This type of diagram is particularly useful in scenarios involving complex class structures, system
+
+297
+00:24:38,000 --> 00:24:45,000
+architecture design, and detailed system analysis by providing a clear and intuitive visual depiction.
+
+298
+00:24:45,000 --> 00:24:52,000
+Composite structure diagrams help in the design, communication and understanding of complex software
+
+299
+00:24:52,000 --> 00:24:59,000
+systems, facilitating collaboration among stakeholders throughout the software development life cycle.
+
+300
+00:25:00,000 --> 00:25:00,000
+That's it.
+
+301
+00:25:01,000 --> 00:25:03,000
+Let's recap what we have learned in the lesson.
+
+302
+00:25:04,000 --> 00:25:08,000
+In the lesson, we learned what a composite structure diagram is.
+
+303
+00:25:09,000 --> 00:25:14,000
+I explained your goals and purposes of a composite structure diagram also.
+
+304
+00:25:14,000 --> 00:25:17,000
+Now you know when to use this type of diagram.
+
+305
+00:25:18,000 --> 00:25:23,000
+We learned elements of composite structure diagram and we reviewed real life example.
+
+306
+00:25:24,000 --> 00:25:27,000
+That's all what I wanted to review with you today.
+
+307
+00:25:27,000 --> 00:25:28,000
+Thanks a lot for your attention.
+
+308
+00:25:28,000 --> 00:25:32,000
+Have a great day and see you in the next lesson.
+
diff --git a/106 - Structural Diagrams/006 Composite-Structure-Diagram-PC.url b/106 - Structural Diagrams/006 Composite-Structure-Diagram-PC.url
new file mode 100644
index 0000000000000000000000000000000000000000..73012db41dab6c30dd3f434d2349aabde395bceb
--- /dev/null
+++ b/106 - Structural Diagrams/006 Composite-Structure-Diagram-PC.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1N3akUJToBbzFRTZk3l4OVQRAdPXL7AQC/view?usp=sharing
\ No newline at end of file
diff --git a/106 - Structural Diagrams/007 Profile Diagram_en.srt b/106 - Structural Diagrams/007 Profile Diagram_en.srt
new file mode 100644
index 0000000000000000000000000000000000000000..68fbb403b598992bec3d325b33218b596d42570d
--- /dev/null
+++ b/106 - Structural Diagrams/007 Profile Diagram_en.srt
@@ -0,0 +1,1048 @@
+1
+00:00:05,000 --> 00:00:06,000
+Hello team!
+
+2
+00:00:06,000 --> 00:00:09,000
+In this lesson we are going to learn profile diagram.
+
+3
+00:00:09,000 --> 00:00:14,000
+We are going to start the lesson from learning the definition of profile diagram.
+
+4
+00:00:14,000 --> 00:00:17,000
+Then we will learn its goals and purposes.
+
+5
+00:00:17,000 --> 00:00:25,000
+This will help us to understand use cases and situations when it is recommended to use profile diagram.
+
+6
+00:00:25,000 --> 00:00:31,000
+In the lesson, we will learn elements of profile diagram in order to be able to create it from scratch
+
+7
+00:00:31,000 --> 00:00:33,000
+when it will be needed.
+
+8
+00:00:33,000 --> 00:00:38,000
+And at the end of the lesson we are going to review real life example of profile diagram.
+
+9
+00:00:38,000 --> 00:00:40,000
+Let's start our lesson.
+
+10
+00:00:41,000 --> 00:00:47,000
+Let's start from learning the definition of profile diagram and understanding what it is about.
+
+11
+00:00:47,000 --> 00:00:55,000
+In a profile diagram is a type of structural diagram used to extend and customize the UML meta model
+
+12
+00:00:55,000 --> 00:00:58,000
+for a particular domain or platform.
+
+13
+00:00:58,000 --> 00:01:07,000
+It helps in tailoring the UML to suit specific needs by defining stereotypes, tagged values, and constraints.
+
+14
+00:01:08,000 --> 00:01:15,000
+A profile in UML is a collection of stereotypes and their definitions, which allows you to extend the
+
+15
+00:01:15,000 --> 00:01:18,000
+vocabulary of use for a specific purpose.
+
+16
+00:01:18,000 --> 00:01:26,000
+A stereotype is a mechanism for extending the UML metamodel by defining new kinds of elements, or refining
+
+17
+00:01:26,000 --> 00:01:27,000
+existing ones.
+
+18
+00:01:28,000 --> 00:01:34,000
+Text values are used to attach additional information to model elements.
+
+19
+00:01:34,000 --> 00:01:42,000
+Extension mechanisms allow refining standard semantics in strictly additive manner, preventing them
+
+20
+00:01:42,000 --> 00:01:44,000
+from contradicting standard semantics.
+
+21
+00:01:45,000 --> 00:01:52,000
+Profiles are defined using stereotypes, tagged value definitions, and constraints, which are applied
+
+22
+00:01:52,000 --> 00:01:58,000
+to specific model elements like classes, attributes, operations, and activities.
+
+23
+00:01:59,000 --> 00:02:05,000
+A profile is a collection of such extensions that collectively customize UML for a particular domain.
+
+24
+00:02:05,000 --> 00:02:13,000
+For example, for aerospace, health care, financial or platform Java for Enterprise Edition or.
+
+25
+00:02:13,000 --> 00:02:18,000
+Net for example, let's learn goals and purposes of profile diagram.
+
+26
+00:02:18,000 --> 00:02:24,000
+The profile diagram in UML serves several goals and purposes, including.
+
+27
+00:02:24,000 --> 00:02:27,000
+Customization of UML for specific domains.
+
+28
+00:02:28,000 --> 00:02:35,000
+This goal is about tailoring the UML metamodel to suit the specific needs of a particular domain or
+
+29
+00:02:35,000 --> 00:02:36,000
+industry.
+
+30
+00:02:37,000 --> 00:02:43,000
+The purpose is to enable the modeling of concepts and relationships that are specific to a certain application
+
+31
+00:02:43,000 --> 00:02:48,000
+area, making the modeling language more expressive and relevant.
+
+32
+00:02:49,000 --> 00:02:51,000
+Extension of metamodel.
+
+33
+00:02:51,000 --> 00:02:59,000
+This goal is about extending the vocabulary of UML by defining new stereotypes, tagged values and constraints.
+
+34
+00:03:00,000 --> 00:03:09,000
+Profile diagram allows modelers to create specialized types of elements or refine existing ones, providing
+
+35
+00:03:09,000 --> 00:03:12,000
+a more detailed and domain specific representation.
+
+36
+00:03:13,000 --> 00:03:16,000
+Representation of platform specific details.
+
+37
+00:03:16,000 --> 00:03:23,000
+With profile diagram, you can capture platform specific details or implementation considerations.
+
+38
+00:03:23,000 --> 00:03:30,000
+This type of diagram facilitates communication between different stakeholders such as analysts, designers,
+
+39
+00:03:30,000 --> 00:03:32,000
+and developers.
+
+40
+00:03:32,000 --> 00:03:36,000
+By incorporating platform specific information into the modeling language.
+
+41
+00:03:37,000 --> 00:03:40,000
+Enhancement of model semantics.
+
+42
+00:03:41,000 --> 00:03:48,000
+You can use profile diagram to enrich the semantics of UML models by introducing domain specific concepts
+
+43
+00:03:48,000 --> 00:03:49,000
+and constraints.
+
+44
+00:03:50,000 --> 00:03:57,000
+It helps to improve the precision and accuracy of human models by incorporating additional information
+
+45
+00:03:57,000 --> 00:04:01,000
+that is crucial for a specific context or application.
+
+46
+00:04:02,000 --> 00:04:04,000
+Improve documentation.
+
+47
+00:04:05,000 --> 00:04:12,000
+Profile diagram provides a clear and concise documentation mechanism for the customization of UML.
+
+48
+00:04:12,000 --> 00:04:19,000
+You can use Profile Diagram to document the stereotypes, tagged values, and constraints applied to
+
+49
+00:04:19,000 --> 00:04:25,000
+model elements, helping to maintain and understand the customized profile.
+
+50
+00:04:26,000 --> 00:04:29,000
+Facilitation of moral consistency.
+
+51
+00:04:29,000 --> 00:04:36,000
+This goal is about ensuring consistency in the application of stereotypes and constraints throughout
+
+52
+00:04:36,000 --> 00:04:37,000
+the modeling process.
+
+53
+00:04:38,000 --> 00:04:46,000
+Profile diagram helps modelers adhere the predefined rules and guidelines by explicitly specifying constraints
+
+54
+00:04:46,000 --> 00:04:52,000
+within the profile, promoting consistency and correctness in model development.
+
+55
+00:04:53,000 --> 00:05:00,000
+Overall, the profile diagram in UML serves as a powerful tool for adapting the modeling language to
+
+56
+00:05:00,000 --> 00:05:07,000
+diverse contexts, enhancing its applicability in various industries and domains.
+
+57
+00:05:08,000 --> 00:05:14,000
+After learning and understanding goals of profile diagram, let's define use cases when it is recommended
+
+58
+00:05:14,000 --> 00:05:16,000
+to use profile diagram.
+
+59
+00:05:17,000 --> 00:05:24,000
+The use of profile diagrams in UML is recommended in specific cases, where customization and extension
+
+60
+00:05:24,000 --> 00:05:27,000
+of the standard UML metamodel are necessary.
+
+61
+00:05:28,000 --> 00:05:33,000
+Here are some situations where using profile diagrams is beneficial.
+
+62
+00:05:33,000 --> 00:05:36,000
+Specialized domains.
+
+63
+00:05:36,000 --> 00:05:43,000
+It is recommended to use profile diagram when modeling in a specialized domain or industries that require
+
+64
+00:05:43,000 --> 00:05:50,000
+additional concepts, relationships, or constraints not adequately represented in standard UML.
+
+65
+00:05:51,000 --> 00:05:59,000
+Profile diagrams allow you to extend to accommodate domain specific modeling requirements, making the
+
+66
+00:05:59,000 --> 00:06:04,000
+language more suitable for representing concepts unique to the given domain.
+
+67
+00:06:04,000 --> 00:06:06,000
+Platform specific modeling.
+
+68
+00:06:07,000 --> 00:06:13,000
+Use this type of diagram when capturing platform specific details or implementation considerations are
+
+69
+00:06:13,000 --> 00:06:14,000
+crucial.
+
+70
+00:06:14,000 --> 00:06:21,000
+Profile diagrams enable the incorporation of platform specific information into the modeling language,
+
+71
+00:06:21,000 --> 00:06:27,000
+facilitating communication between different stakeholders, including designers and developers.
+
+72
+00:06:27,000 --> 00:06:30,000
+Customizing for a specific application.
+
+73
+00:06:30,000 --> 00:06:38,000
+It is recommended to use Profile Diagram when the standard UML elements and relationships need to be
+
+74
+00:06:38,000 --> 00:06:43,000
+adopted or refined to meet the needs of a specific application or project.
+
+75
+00:06:43,000 --> 00:06:49,000
+Profile diagrams allow you to create custom stereotypes, tag values, and constraints, tailoring the
+
+76
+00:06:49,000 --> 00:06:52,000
+modeling language to the unique requirements of the application.
+
+77
+00:06:53,000 --> 00:06:56,000
+Defining modeling standards.
+
+78
+00:06:56,000 --> 00:06:58,000
+Use profile diagram.
+
+79
+00:06:58,000 --> 00:07:05,000
+When an organization or a team wants to establish and enforce modeling standards across projects.
+
+80
+00:07:06,000 --> 00:07:13,000
+Profile diagrams help define and document standardized stereotypes, tagged values and constraints,
+
+81
+00:07:13,000 --> 00:07:17,000
+ensuring consistency and adherence to modeling guidelines.
+
+82
+00:07:19,000 --> 00:07:22,000
+Integration with external tools or frameworks.
+
+83
+00:07:22,000 --> 00:07:28,000
+Use profile diagram when integrating UML models with external tools, frameworks, or code generation
+
+84
+00:07:28,000 --> 00:07:31,000
+tools that require additional information.
+
+85
+00:07:31,000 --> 00:07:38,000
+Profile diagrams allow you to specify the necessary details, such as platform specific annotations
+
+86
+00:07:38,000 --> 00:07:43,000
+or code generation hints, to support seamless integration with external tools and technologies.
+
+87
+00:07:44,000 --> 00:07:47,000
+Expressing conceptual abstractions.
+
+88
+00:07:47,000 --> 00:07:54,000
+Use profile diagram when modeling requires expressing conceptual abstractions beyond what is provided
+
+89
+00:07:54,000 --> 00:07:57,000
+by standard UML profile diagrams.
+
+90
+00:07:57,000 --> 00:08:04,000
+Enables the creation of custom stereotypes to represent higher level abstractions, providing a more
+
+91
+00:08:04,000 --> 00:08:09,000
+expressive and accurate representation of the system being modeled.
+
+92
+00:08:09,000 --> 00:08:17,000
+So profile diagrams in UML are recommended when there is a need for customization, specialization,
+
+93
+00:08:17,000 --> 00:08:23,000
+or extension of the modeling language to better align with the unique requirements of a particular domain,
+
+94
+00:08:23,000 --> 00:08:25,000
+application, or project.
+
+95
+00:08:25,000 --> 00:08:33,000
+They provide a flexible mechanism for adapting to diverse contexts and ensuring that the modeling language
+
+96
+00:08:33,000 --> 00:08:35,000
+remains relevant and effective.
+
+97
+00:08:36,000 --> 00:08:40,000
+Let's review elements that profile diagram usually consists of.
+
+98
+00:08:40,000 --> 00:08:42,000
+We'll review them one by one.
+
+99
+00:08:43,000 --> 00:08:46,000
+And we are going to start from the meta class.
+
+100
+00:08:46,000 --> 00:08:53,000
+Meta class is a fundamental concept in the UML that plays a crucial role in defining the structure and
+
+101
+00:08:53,000 --> 00:09:01,000
+behavior of all other classes within the meta model, and the standard meta classes is essential for
+
+102
+00:09:01,000 --> 00:09:04,000
+comprehending the foundational principles of UML.
+
+103
+00:09:05,000 --> 00:09:09,000
+Let's delve into the description, purpose, and notation of meta classes.
+
+104
+00:09:10,000 --> 00:09:15,000
+A meta class is a class whose instances are themselves classes.
+
+105
+00:09:15,000 --> 00:09:22,000
+In UML, Metaclasses defines a structure, behavior, and properties of other classes, including other
+
+106
+00:09:22,000 --> 00:09:23,000
+meta classes.
+
+107
+00:09:23,000 --> 00:09:31,000
+Metaclasses sit at the top of the class hierarchy, forming the foundation for all classes in the UML
+
+108
+00:09:31,000 --> 00:09:32,000
+meta model.
+
+109
+00:09:33,000 --> 00:09:40,000
+Meta classes provide a way to define the essential characteristics that all classes in UML must have.
+
+110
+00:09:40,000 --> 00:09:47,000
+They serve as a blueprint for creating regular classes, associations, stereotypes, and other modeling
+
+111
+00:09:47,000 --> 00:09:48,000
+elements within UML.
+
+112
+00:09:49,000 --> 00:09:52,000
+For example, let's review dependency.
+
+113
+00:09:52,000 --> 00:09:57,000
+The dependency metaclass represents a relationship where one element depends on another.
+
+114
+00:09:57,000 --> 00:10:01,000
+It is used to model various dependencies between elements.
+
+115
+00:10:01,000 --> 00:10:04,000
+So dependency can be considered as a metaclass.
+
+116
+00:10:05,000 --> 00:10:13,000
+In UML diagrams, meta classes are often denoted with a distinctive notation, typically using a stereotyped
+
+117
+00:10:13,000 --> 00:10:16,000
+class symbol with a stereotype name metaclass.
+
+118
+00:10:17,000 --> 00:10:19,000
+Another element is profile.
+
+119
+00:10:19,000 --> 00:10:27,000
+The profile is a container for stereotypes, tagged values, constraints, and other customization elements.
+
+120
+00:10:27,000 --> 00:10:33,000
+It represents a collection of such elements tailored for a specific purpose or domain.
+
+121
+00:10:33,000 --> 00:10:40,000
+This element is used to encapsulate and organize the customization elements that extend or refine the
+
+122
+00:10:40,000 --> 00:10:41,000
+UML metamodel.
+
+123
+00:10:42,000 --> 00:10:47,000
+It is displayed as a labeled rectangle with the name of the profile at the top.
+
+124
+00:10:48,000 --> 00:10:50,000
+Stereotype.
+
+125
+00:10:50,000 --> 00:10:55,000
+Stereotypes define new types of modeling elements or refine existing ones.
+
+126
+00:10:55,000 --> 00:11:00,000
+They extend the UML metamodel by introducing domain specific concepts.
+
+127
+00:11:00,000 --> 00:11:04,000
+Stereotypes allow you to increase vocabulary of UML.
+
+128
+00:11:04,000 --> 00:11:11,000
+You can add create new model elements derived from existing ones, but that have specific properties
+
+129
+00:11:11,000 --> 00:11:13,000
+that are suitable to your problem domain.
+
+130
+00:11:13,000 --> 00:11:21,000
+Stereotypes are used to introduce new building blocks that speak the language of your domain.
+
+131
+00:11:21,000 --> 00:11:25,000
+It allows you to introduce new graphical symbols.
+
+132
+00:11:26,000 --> 00:11:34,000
+For example, when modeling a network, you might need to have symbols for router, switches, hub,
+
+133
+00:11:34,000 --> 00:11:35,000
+etcetera.
+
+134
+00:11:35,000 --> 00:11:41,000
+So this element is used to customize and extend the modeling language to represent specific concepts
+
+135
+00:11:41,000 --> 00:11:50,000
+in a given domain, represented as a labeled rectangle attached to the base element being stereotyped.
+
+136
+00:11:51,000 --> 00:11:52,000
+Extension.
+
+137
+00:11:52,000 --> 00:12:00,000
+The extension relationship indicates how a stereotype is applied to a base element, creating an instance
+
+138
+00:12:00,000 --> 00:12:02,000
+of the stereotype element.
+
+139
+00:12:02,000 --> 00:12:10,000
+It is used to show the relationship between a stereotype and the base element it customizes or extends.
+
+140
+00:12:11,000 --> 00:12:16,000
+Represented by a line with an arrow from the stereotype to the base element.
+
+141
+00:12:17,000 --> 00:12:18,000
+Tact value.
+
+142
+00:12:18,000 --> 00:12:25,000
+Tact values are additional properties or characteristics associated with the stereotyped elements to
+
+143
+00:12:25,000 --> 00:12:27,000
+provide extra information.
+
+144
+00:12:28,000 --> 00:12:34,000
+This element is used to attach specific data on metadata to stereotype elements.
+
+145
+00:12:34,000 --> 00:12:41,000
+For example, consider a release team responsible for assembling, testing, and deployment of a system.
+
+146
+00:12:41,000 --> 00:12:48,000
+In such case, it is necessary to keep a track on version and test results of the main subsystem.
+
+147
+00:12:48,000 --> 00:12:52,000
+Test values are used to add such info.
+
+148
+00:12:53,000 --> 00:12:58,000
+That values are displayed as name value pairs within the stereotype compartment.
+
+149
+00:12:59,000 --> 00:13:01,000
+Constraint.
+
+150
+00:13:01,000 --> 00:13:08,000
+Constraints specify rules or conditions that apply to the use of stereotypes or other model elements
+
+151
+00:13:08,000 --> 00:13:10,000
+within the profile.
+
+152
+00:13:10,000 --> 00:13:18,000
+Constraints are used to enforce rules and guidelines for the application of stereotypes and other customization
+
+153
+00:13:18,000 --> 00:13:19,000
+elements.
+
+154
+00:13:19,000 --> 00:13:27,000
+For example, in development of real time system, it is necessary to decorate the model with some necessary
+
+155
+00:13:27,000 --> 00:13:29,000
+information, such as response time.
+
+156
+00:13:30,000 --> 00:13:35,000
+A constraint can be attached to one or more model elements shown as a node.
+
+157
+00:13:36,000 --> 00:13:43,000
+Constraints are typically written in object constraint language or a similar language, and associated
+
+158
+00:13:43,000 --> 00:13:46,000
+with a stereotype or other elements.
+
+159
+00:13:47,000 --> 00:13:54,000
+These elements collectively form a profile diagram, providing a means to customize, extend, and tailor
+
+160
+00:13:54,000 --> 00:13:59,000
+the modeling language for specific domains, applications, or projects.
+
+161
+00:13:59,000 --> 00:14:06,000
+The diagram visually represents how stereotypes extensions detect values and constraints interact within
+
+162
+00:14:06,000 --> 00:14:07,000
+the defined profile.
+
+163
+00:14:08,000 --> 00:14:11,000
+For this lesson, I prepared real life example.
+
+164
+00:14:11,000 --> 00:14:13,000
+Let's review requirements for the example.
+
+165
+00:14:14,000 --> 00:14:20,000
+I will be honest with you, this type of diagram is not the most obvious thing to learn, and usually
+
+166
+00:14:20,000 --> 00:14:26,000
+my students have a lot of challenges with this type of diagram in comparison with other diagrams.
+
+167
+00:14:26,000 --> 00:14:32,000
+That's why let's make it simple and I will help you to understand this diagram.
+
+168
+00:14:33,000 --> 00:14:36,000
+Great ECB profile element.
+
+169
+00:14:36,000 --> 00:14:40,000
+ECB stands for Enterprise Java Beans.
+
+170
+00:14:40,000 --> 00:14:43,000
+You don't need to understand the concept of ECB.
+
+171
+00:14:43,000 --> 00:14:51,000
+The only thing that you need to understand is that ECB introduced some platform specific terms and concepts.
+
+172
+00:14:51,000 --> 00:14:58,000
+And we are going to use profile diagram to extend and customize default elements to be able to create
+
+173
+00:14:58,000 --> 00:15:00,000
+ECB specific diagrams.
+
+174
+00:15:01,000 --> 00:15:06,000
+And with this profile diagram we'll introduce our custom stereotypes.
+
+175
+00:15:06,000 --> 00:15:10,000
+Inside the profile element we'll place our stereotypes.
+
+176
+00:15:11,000 --> 00:15:15,000
+We are going to use metaclass component.
+
+177
+00:15:15,000 --> 00:15:24,000
+It should be extended with egb bin stereotype and egb bin stereotype is extended with entity and session
+
+178
+00:15:24,000 --> 00:15:25,000
+stereotypes.
+
+179
+00:15:25,000 --> 00:15:32,000
+Session stereotype enchant has stacked value state which has enum type.
+
+180
+00:15:33,000 --> 00:15:34,000
+That's it.
+
+181
+00:15:34,000 --> 00:15:41,000
+And to help you understand how it is applied in practice, on the side of the diagram, I want you to
+
+182
+00:15:41,000 --> 00:15:44,000
+create element using profiles that we created.
+
+183
+00:15:44,000 --> 00:15:51,000
+Create session customer element with stateless state property and visualize it.
+
+184
+00:15:51,000 --> 00:15:53,000
+That's all requirements.
+
+185
+00:15:54,000 --> 00:16:01,000
+As always, I recommend you to put this video on pause and try to draw a diagram by yourself first.
+
+186
+00:16:01,000 --> 00:16:06,000
+And when you are done, feel free to resume the video and review my version of the diagram.
+
+187
+00:16:06,000 --> 00:16:11,000
+Also, you can find the link to my version of the diagram in attachments to the video lesson.
+
+188
+00:16:12,000 --> 00:16:15,000
+This will help you to understand profile diagram better.
+
+189
+00:16:16,000 --> 00:16:21,000
+So let me start screen sharing and review of my version of the diagram.
+
+190
+00:16:22,000 --> 00:16:24,000
+I started with a blank diagram.
+
+191
+00:16:24,000 --> 00:16:29,000
+I used package element from icons library to visualize profile.
+
+192
+00:16:29,000 --> 00:16:37,000
+Then I used rectangle element to create metaclass component Egb bin, stereotype entity and session
+
+193
+00:16:37,000 --> 00:16:38,000
+stereotypes.
+
+194
+00:16:39,000 --> 00:16:46,000
+I decided to use class icon for session stereotype because I like the feature of auto formatting.
+
+195
+00:16:46,000 --> 00:16:52,000
+When you add properties below the line that separates name of the element and its properties.
+
+196
+00:16:52,000 --> 00:16:56,000
+Anyway, you can use any other combinations of rectangle and lines.
+
+197
+00:16:56,000 --> 00:17:01,000
+The main thing is to separate name of the stereotype and tagged value.
+
+198
+00:17:02,000 --> 00:17:05,000
+To visualize relationships between all these elements are used.
+
+199
+00:17:05,000 --> 00:17:10,000
+Generalization arrow and you can see clear and straightforward Iraqi.
+
+200
+00:17:11,000 --> 00:17:16,000
+This is extension relationships that we talked about on previous slide.
+
+201
+00:17:16,000 --> 00:17:23,000
+And here on the side you can see session been customer with stateless state.
+
+202
+00:17:23,000 --> 00:17:31,000
+Taking into account we extend component metaclass I use component element from icons library to visualize
+
+203
+00:17:31,000 --> 00:17:32,000
+this element.
+
+204
+00:17:32,000 --> 00:17:36,000
+That's how profile can be applied in your domain.
+
+205
+00:17:37,000 --> 00:17:45,000
+One of the questions that my students ask me is why we should create profiles, and why we can't simply
+
+206
+00:17:45,000 --> 00:17:50,000
+use stereotypes straight away on our diagram, like in case with customer buying.
+
+207
+00:17:50,000 --> 00:17:56,000
+Descriptions are relatively straightforward, especially if you are familiar with the domain, right?
+
+208
+00:17:56,000 --> 00:18:00,000
+So what is the benefit of profile diagram in this case?
+
+209
+00:18:00,000 --> 00:18:07,000
+The benefit becomes clearer when you consider the broader context of a large modeling project, or when
+
+210
+00:18:07,000 --> 00:18:13,000
+you need to consistently apply a set of stereotypes, constraints, and tagged values across multiple
+
+211
+00:18:13,000 --> 00:18:14,000
+diagrams.
+
+212
+00:18:14,000 --> 00:18:16,000
+Let's break it down.
+
+213
+00:18:16,000 --> 00:18:23,000
+If you are working on a small project or creating a single diagram directly using stereotypes like session
+
+214
+00:18:23,000 --> 00:18:25,000
+egbin can be straightforward.
+
+215
+00:18:26,000 --> 00:18:34,000
+It is simple and may suit your immediate needs, but profile diagram has the following purpose.
+
+216
+00:18:34,000 --> 00:18:41,000
+The profile diagram becomes powerful in larger projects or situations where you want to maintain consistency
+
+217
+00:18:41,000 --> 00:18:43,000
+across various diagrams.
+
+218
+00:18:43,000 --> 00:18:48,000
+Instead of repeating the same stereotypes in every diagram, you can define them.
+
+219
+00:18:48,000 --> 00:18:51,000
+Once in a profile diagram.
+
+220
+00:18:51,000 --> 00:18:58,000
+In the profile diagram, you establish a set of stereotypes, their relationships, and any constraints.
+
+221
+00:18:59,000 --> 00:19:05,000
+This becomes a reusable profile that you can apply consistently throughout your project.
+
+222
+00:19:05,000 --> 00:19:13,000
+So the primary purpose of a profile diagram is to create a standardized set of customizations, stereotypes,
+
+223
+00:19:13,000 --> 00:19:18,000
+constraints, etcetera that can be easily reused across different diagrams.
+
+224
+00:19:18,000 --> 00:19:25,000
+It provides a centralized way to manage these customizations and advantages of a profile diagram in
+
+225
+00:19:25,000 --> 00:19:27,000
+this case are obvious.
+
+226
+00:19:27,000 --> 00:19:34,000
+Consistency ensures that the same stereotypes and customizations are used consistently across multiple
+
+227
+00:19:34,000 --> 00:19:35,000
+diagrams.
+
+228
+00:19:35,000 --> 00:19:36,000
+Maintenance.
+
+229
+00:19:36,000 --> 00:19:42,000
+If you need to modify a stereotype or add new ones, you can do it in one place.
+
+230
+00:19:42,000 --> 00:19:47,000
+The profile diagram and have those changes reflected throughout the project.
+
+231
+00:19:48,000 --> 00:19:49,000
+Visibility.
+
+232
+00:19:49,000 --> 00:19:56,000
+Once you define a profile, you can apply it to various diagrams, making it efficient and reducing
+
+233
+00:19:56,000 --> 00:19:59,000
+redundancy communication.
+
+234
+00:19:59,000 --> 00:20:05,000
+It helps communicate modeling conventions and standards within a team or organization.
+
+235
+00:20:06,000 --> 00:20:14,000
+So while using stereotypes directly may be suitable for smaller projects or individual diagrams, profile
+
+236
+00:20:14,000 --> 00:20:20,000
+diagrams shine when you are managing larger, more complex projects where maintaining consistency and
+
+237
+00:20:20,000 --> 00:20:22,000
+reusability is crucial.
+
+238
+00:20:22,000 --> 00:20:29,000
+They provide a systematic way to organize and apply customizations across your modeling efforts.
+
+239
+00:20:29,000 --> 00:20:33,000
+We learned theory and we reviewed Practical example.
+
+240
+00:20:33,000 --> 00:20:36,000
+Now we are ready to make a conclusion about profile diagram.
+
+241
+00:20:37,000 --> 00:20:44,000
+In conclusion, the profile diagram in UML is a crucial tool for customizing and extending the modeling
+
+242
+00:20:44,000 --> 00:20:48,000
+language to suit specific domains or industries.
+
+243
+00:20:48,000 --> 00:20:55,000
+It allows the definition of stereotypes, text values, and constraints, enabling a more expressive
+
+244
+00:20:55,000 --> 00:21:01,000
+representation of the system and supporting the adaptation of for specialized contexts.
+
+245
+00:21:01,000 --> 00:21:08,000
+The key elements, including profiles, stereotypes, extensions, stacked values, and constraints
+
+246
+00:21:08,000 --> 00:21:11,000
+collectively contribute to the customization process.
+
+247
+00:21:11,000 --> 00:21:19,000
+Stereotypes introduce new modeling elements or refine existing ones, while extensions establish relationships
+
+248
+00:21:19,000 --> 00:21:22,000
+between stereotypes and base elements.
+
+249
+00:21:23,000 --> 00:21:31,000
+This flexibility empowers modelers to tailor UML effectively, ensuring a precise and contextually relevant
+
+250
+00:21:31,000 --> 00:21:35,000
+depiction of systems in a diverse applications.
+
+251
+00:21:35,000 --> 00:21:36,000
+That's it.
+
+252
+00:21:37,000 --> 00:21:40,000
+Let's recap what we have learned from the lesson.
+
+253
+00:21:41,000 --> 00:21:43,000
+We learned what a profile diagram is.
+
+254
+00:21:43,000 --> 00:21:50,000
+Now you know goals and purposes of a profile diagram I explained use cases and when it is recommended
+
+255
+00:21:50,000 --> 00:21:52,000
+to use profile diagram.
+
+256
+00:21:52,000 --> 00:21:59,000
+Also, we learned elements of profile diagram in order to be able to create this diagram from scratch
+
+257
+00:21:59,000 --> 00:22:00,000
+when it will be needed.
+
+258
+00:22:00,000 --> 00:22:04,000
+And at the end of the lesson we reviewed real life example.
+
+259
+00:22:04,000 --> 00:22:05,000
+That's all.
+
+260
+00:22:05,000 --> 00:22:08,000
+What I wanted to share with you today in the lesson.
+
+261
+00:22:08,000 --> 00:22:10,000
+Thanks a lot for your attention.
+
+262
+00:22:10,000 --> 00:22:13,000
+Have a great day and see you in the next lesson.
+
diff --git a/106 - Structural Diagrams/007 Profile-Diagram-EJB-Profile.url b/106 - Structural Diagrams/007 Profile-Diagram-EJB-Profile.url
new file mode 100644
index 0000000000000000000000000000000000000000..5b2ec0232282d4263e0d003334ba414dddab2024
--- /dev/null
+++ b/106 - Structural Diagrams/007 Profile-Diagram-EJB-Profile.url
@@ -0,0 +1,2 @@
+[InternetShortcut]
+URL=https://drive.google.com/file/d/1qBpP6aG6xDtsIFgTUpCnLi7SNbslQ8zn/view?usp=sharing
\ No newline at end of file