WEBVTT 00:10.690 --> 00:11.620 OK, very good. 00:12.370 --> 00:18.790 We're off running in this next section, so this is going to be about we just talked about models in 00:18.790 --> 00:23.090 general, so let's narrow down it a little bit and talk about what I call domain models. 00:24.130 --> 00:26.680 So what is a domain model and what is a domain? 00:27.820 --> 00:33.290 So a domain is the thing that enclose the content of a particular field of knowledge. 00:33.880 --> 00:39.510 So we talked, for example, about the concept used to describe and understand you to me before. 00:39.880 --> 00:45.190 So we talked about commerce and curriculum and section and lectures and lecture completion rate, for 00:45.310 --> 00:46.780 instance, and so on and so on. 00:46.780 --> 00:52.690 A user's students, those are all part of the udemy domain. 00:53.170 --> 00:53.610 Right? 00:53.620 --> 00:58.370 So the Unimin domain is the thing that encapsulates that whole area. 01:00.190 --> 01:07.340 So it is the boundary around a particular knowledge field and it's kind of recursive. 01:08.020 --> 01:13.480 So, for example, we can talk about retail banking, right? 01:14.410 --> 01:18.850 We can talk about in the broader sense, there are all kinds of different types of banks. 01:19.270 --> 01:19.660 Right. 01:19.930 --> 01:27.170 And all the banks, the individual banks are actually part of a even larger domain national bank and 01:27.190 --> 01:32.230 which includes the central bank maybe and other institutions that are important in this and the regulatory 01:32.230 --> 01:33.270 institutions and so on. 01:33.760 --> 01:39.190 And then we can narrow it down and say within retail banking in general, we can talk about the specific 01:39.430 --> 01:44.080 retail bank so we can narrow and broaden the scope of a particular domain. 01:44.470 --> 01:44.920 Right. 01:44.980 --> 01:46.960 So that's the kind of recursive ness of it. 01:48.100 --> 01:51.570 It's like a Russian doll, but it's also layered in abstraction. 01:52.060 --> 01:59.920 So, for example, I can talk about a particular subject and I maybe can talk about it using terms and 01:59.920 --> 02:04.810 concepts from biology so I can describe it using terms like cell DNA and so on. 02:05.380 --> 02:11.300 I can also maybe describe the same thing, but using terminology more from chemistry, like talking 02:11.300 --> 02:13.690 about molecules or reactions and so on. 02:14.080 --> 02:15.940 And you see, there is no worry. 02:15.940 --> 02:18.490 It's not a it's a little bit of a gray scale. 02:18.820 --> 02:21.640 Which concepts are part of biology and chemistry here. 02:21.640 --> 02:22.780 But I think you get the point. 02:23.890 --> 02:30.550 I can talk about them using kind of more physics concepts like an atom and force CIS and so on. 02:31.760 --> 02:36.670 And I can even understand maybe using quantum physics terms here, like spins and quarks and so on, 02:37.100 --> 02:42.590 so you can actually describe the thing on different levels of abstraction. 02:42.770 --> 02:46.180 So the recursive nature was more like that. 02:46.190 --> 02:51.980 You can broaden the scope and can talk about more things, but you can't on the same abstraction level 02:52.280 --> 02:56.480 and then you can actually go up and down in terms of abstraction as well. 02:58.690 --> 03:01.810 So what is then a conceptual domain model? 03:03.740 --> 03:12.560 So that model should try to encapsulate the experts knowledge and expertise language so any domain can 03:12.560 --> 03:14.290 be described on a conceptual level. 03:14.300 --> 03:19.220 And we understand that now because we see that most of the conserver actually stuff that we create. 03:19.250 --> 03:23.140 So they are status functions that we actually jointly agree on exists. 03:24.800 --> 03:31.460 So it includes the concept used by the experts in that particular domain, and they use it to create 03:31.820 --> 03:35.340 and understand and develop theories and systems within that domain. 03:35.750 --> 03:42.260 So that's the language to use to express both current situations and future problems and maybe also 03:42.260 --> 03:44.150 future solutions to those problems. 03:46.790 --> 03:52.760 And the interesting thing here is that depending on who you are, you will have different. 03:52.760 --> 03:58.110 Of course, the experts will have a lot of different concepts in their domain. 03:58.130 --> 03:59.900 So take this particular example. 04:00.230 --> 04:06.530 So it's like maybe a programmer or a hardware guy and he will have understanding about what the processes 04:06.530 --> 04:10.250 and the thread and file and memory and pipe network and CPU. 04:10.430 --> 04:13.370 Right Seargent. 04:13.400 --> 04:19.130 They will have a conceptual model and domain model, including words like pacemaker, tachycardia, 04:19.130 --> 04:21.830 artery, scalpel, scissors and so on. 04:23.780 --> 04:27.920 A banker would have terms like investment loan, syndication, interest and annuity. 04:30.110 --> 04:36.230 However, what is a little bit interesting about this is that there is also a distinction that people 04:36.230 --> 04:36.710 use. 04:36.710 --> 04:43.250 And when we talk about problem domain in solution domain, so the conceptual model is explicitly chosen 04:43.250 --> 04:46.100 to be independent of design and solution concerns. 04:46.310 --> 04:52.820 So, for example, if you have this banker, he would think in terms in his problem domain, in terms 04:52.820 --> 04:58.190 of priority agreement, payment, asset and product, so to speak, but maybe the solution domain will 04:58.190 --> 05:00.260 be creating maybe an I.T. solution for this. 05:01.400 --> 05:08.960 We need to talk in terms of a Java component called party database table that is implemented using a 05:08.960 --> 05:15.920 skill that is called party, maybe something called hibernate, and that is dependent on the general 05:15.920 --> 05:17.820 concept of a Java class and so on. 05:18.290 --> 05:21.740 So those concepts are very tied to what it is to be programming 05:24.080 --> 05:27.320 and creating a solution for that domain. 05:27.500 --> 05:30.540 So they are said to be part of the on the solution domain instead. 05:31.250 --> 05:35.490 However, what is important here is that this problem solution distinction is is relative. 05:35.600 --> 05:37.020 So it depends on who you ask. 05:37.220 --> 05:42.350 So if you ask this business person here, they will probably say that this party agreement, payment, 05:42.350 --> 05:44.480 loan, Hassidim products part of the problem domain. 05:45.440 --> 05:53.120 And but if you ask the programmer, they might say that the problem domain for them is actually Java 05:53.120 --> 05:58.640 component and hibernate in part in Eskil, because from the hardware guys perspective, that's a problem 05:58.640 --> 06:03.560 domain because the solution domain is actually just talking about files and a type of the file is an 06:03.560 --> 06:08.360 executable that creates a process and a process can include multiple threads and so on. 06:09.890 --> 06:12.450 So that's kind of a solution to Maine for that problem to Maine. 06:12.740 --> 06:17.300 So this is actually in the eye of the beholder, actually, if it's a solution to Maine or a problem 06:17.300 --> 06:17.690 to Maine. 06:18.170 --> 06:24.110 And that's actually quite important to have in mind, because sometimes people can start arguing about 06:24.110 --> 06:27.530 whether something is part of the problem domain and some of it's part of the solution to Maine that's 06:27.530 --> 06:30.890 depend on where where are you, where you have your perspective kind of. 06:32.850 --> 06:37.230 So what is then a business domain model, so a business domain model? 06:38.400 --> 06:44.400 It includes the concept that a business experts use and which it doesn't have to be named, said a business 06:44.400 --> 06:51.210 expert, to be kind of the general barriers of all that language, so to speak, and the language and 06:51.210 --> 06:57.390 the terms and concepts they use to think about this, to understand it, and to create new scenarios 06:57.390 --> 06:58.680 in within that domain. 06:59.340 --> 07:01.340 Those concepts are part of the business domain. 07:01.680 --> 07:08.610 It's usually independent on any organization or exactly how it's executed or software systems. 07:08.880 --> 07:12.240 So usually in terms include the the. 07:13.760 --> 07:17.540 That in the Arabic language, more and more or less, and that language could be used to implement it 07:17.540 --> 07:23.480 in different ways usually, and it's also detailed to a level that makes sense for the business expert 07:23.630 --> 07:28.310 so they can actually execute all the business logic that is needed using the terms. 07:28.430 --> 07:34.760 So it's actually if it's not including enough concepts, then they cannot describe all the business 07:34.760 --> 07:38.450 logic, but it usually doesn't include more concerned than they need. 07:38.720 --> 07:44.480 And that's also why languages tend to grow when the business grow. 07:47.840 --> 07:52.340 It's not only information that is this is also a huge mistake, I would say that sometimes people think 07:52.340 --> 07:57.680 that it's only stuff that we actually store in our databases to report our part of our domain business 07:57.680 --> 07:58.360 domain model. 07:58.940 --> 08:01.790 But you really need to think about a lot of other stuff as well. 08:02.010 --> 08:03.320 So take the simple example. 08:03.320 --> 08:10.130 You have a person that is concerned about what is of being actually a person, a real world person like 08:10.130 --> 08:10.510 this. 08:11.090 --> 08:14.120 So an instance of a person is a real person, right? 08:15.050 --> 08:19.370 Then you can have a concept of person information, which is information about that person. 08:19.370 --> 08:22.400 And an instance of that is not a person. 08:22.400 --> 08:27.010 That's a kind of chunk of papers with ink on it, probably. 08:27.710 --> 08:35.690 So we could have both the concept of a person of information about a person and the concept of a person 08:35.690 --> 08:37.580 in our business domain model. 08:37.580 --> 08:40.400 If they are important and we shouldn't. 08:41.180 --> 08:46.460 It's a little bit confusing to try to mix them into one concept because then you have a hard time actually 08:46.460 --> 08:51.630 deciding what instances there exists based on that concept. 08:53.150 --> 08:57.530 So business concept models do not just include what we have in our databases. 08:57.530 --> 09:02.090 That is also important, even if a large chunk of it might be represented in databases as well. 09:03.980 --> 09:04.460 Very good. 09:04.820 --> 09:09.440 So that was the second lecture in this section we're going in, the one we talked about domain models, 09:09.440 --> 09:10.100 more generic.