WEBVTT 00:11.570 --> 00:12.560 OK, good. 00:12.740 --> 00:18.290 Last section, so now in this section, we're going to talk about packaging your model. 00:18.570 --> 00:22.040 You're coming home, you're doing your workshop now it's time to document it. 00:23.210 --> 00:29.300 So now you probably have a large set of classes that you found during the workshop and you didn't maybe 00:29.300 --> 00:35.840 didn't have time to start to differentiate them out in different clusters and in packages and in smaller 00:35.840 --> 00:39.500 subsets because you were focusing on actually getting everything down. 00:39.830 --> 00:43.430 But now you will, like, make your model as readable as possible. 00:43.430 --> 00:46.130 You would like to make your model as readable as possible. 00:46.340 --> 00:54.020 So then you can use a technique called packaging so you can actually divide your model into smaller 00:54.410 --> 01:00.650 chunks and then you can actually document each chunk and they can also document the chunks, so to speak, 01:00.650 --> 01:01.760 on a larger level. 01:01.760 --> 01:03.410 And the chunks are called packages. 01:03.920 --> 01:07.420 So this whole section is about packaging your model. 01:07.850 --> 01:10.460 So I'm going to give you an overview about packaging. 01:10.470 --> 01:13.130 I'm going to give you guidelines how you actually do packaging. 01:13.310 --> 01:17.810 We're going to talk about how you evaluate the package structure, your own or somebody else's. 01:18.020 --> 01:25.310 And we're going to talk about how you how you derive the dependencies between the packages. 01:25.490 --> 01:30.020 And then we are going to have some exercises where actually you are packaging a model yourself. 01:31.070 --> 01:31.600 Very good. 01:31.730 --> 01:34.000 So let's start with this overview lecture. 01:35.690 --> 01:38.010 Divide and conquer Julius Caesar. 01:38.180 --> 01:39.410 This is what it is about. 01:39.590 --> 01:47.120 So you have two large set of elements with too much detail and you need to start the divided to be able 01:47.120 --> 01:48.590 to conquer the complexity. 01:51.100 --> 01:58.210 And we are using packages, so packages and I've already shown this in you mail, what kind of notation 01:58.210 --> 02:05.360 it is for it, but your package, smaller bits into cohesive, larger homes, which together makes up 02:05.360 --> 02:06.240 the subdomain. 02:06.730 --> 02:09.890 You can then speak about and refer between the subdomains. 02:09.910 --> 02:11.320 And what do I mean by that? 02:12.880 --> 02:15.610 So what I mean with cohesive, larger holes. 02:15.890 --> 02:23.410 So if you think about Lego, I don't know if you done any Lego recently, but in Lego nowadays, the 02:23.950 --> 02:30.910 small Lego blocks are actually divided into small plastic bags with a number on them and they're not 02:30.910 --> 02:31.660 divided. 02:33.400 --> 02:38.680 Saying that we have all blue blocks here and all red blocks here, an old yellow box here, for example, 02:38.980 --> 02:46.090 they are divided because the blocks within each plastic bag have some thing in common. 02:46.240 --> 02:52.740 They are used to achieve a function usually, and that means that they are cohesive. 02:52.750 --> 02:56.430 So they have something in common that they are building up some larger hole. 02:56.470 --> 03:02.380 So maybe the stuff in this bag, this will be the engine and the stuff here will be the chances, for 03:02.380 --> 03:03.370 example, of a car. 03:05.790 --> 03:12.660 So packaging is used to deal with the complexity in a model by decomposing it into smaller chunks, 03:12.660 --> 03:14.400 that's quite easy to understand. 03:14.430 --> 03:15.450 So here's how it looks. 03:15.480 --> 03:23.040 So we have X and Y, we have A, B and C, and let's say that X and Y are more more cohesive with each 03:23.040 --> 03:28.950 other than A, B and C, then you can create two packages and the package will also have a dependency. 03:29.140 --> 03:30.360 OK, nice and easy. 03:33.380 --> 03:39.450 An example, a little bit laundry example, let's take asset finance business of some kind. 03:39.740 --> 03:42.770 So here you might have products in the bottom. 03:43.430 --> 03:44.880 So we have parties. 03:44.900 --> 03:48.370 We have agreements that are connecting the parties with the products. 03:48.740 --> 03:50.060 We have receivables. 03:50.060 --> 03:51.290 We have payables. 03:51.440 --> 03:52.730 We have invoices. 03:52.730 --> 03:54.290 We have supplier invoices. 03:54.290 --> 03:55.730 We have incoming payments. 03:55.730 --> 03:57.100 We have outgoing payments. 03:57.500 --> 04:02.180 So these are all subdomains, so to speak, in this larger domain. 04:02.180 --> 04:07.190 And each of the packages here actually includes quite large set of classes usually. 04:07.490 --> 04:13.340 So when it comes to parties, for example, you're talking about different types of parties and billing 04:13.340 --> 04:14.510 addresses and so on. 04:14.780 --> 04:19.130 When it comes to products, you have the products and the different pricing and the parameters of the 04:19.130 --> 04:20.210 product products. 04:20.510 --> 04:24.470 When it comes to invoices, for example, you have invoices and invoice lines and. 04:25.470 --> 04:32.160 And different types of currency conversion between different emotions and so on, so there are each 04:32.160 --> 04:35.010 subdomain could be quite complex in its own. 04:35.430 --> 04:41.760 And hence if you did a complete conceptual map of that complete domain, that will be a very complex 04:41.760 --> 04:42.000 one. 04:43.320 --> 04:49.180 So then it's a very good thing to use packages to divide and conquer here. 04:49.830 --> 04:54.660 So what you also see here is that we are actually looking at the package diagram on an higher level. 04:54.960 --> 05:00.060 So that could be used to actually hide the details in the class diagram. 05:00.240 --> 05:04.110 But still, we are getting quite much knowledge from the package diagram. 05:04.120 --> 05:10.830 So we're actually getting the the collected dependencies between the different elements within the packages 05:10.830 --> 05:13.520 with each and with other elements in the other packages. 05:14.250 --> 05:21.090 So we can actually directly see here which subdomains there are dependent on, on other subdomains. 05:23.250 --> 05:26.400 So that was the first overview lectured about packaging. 05:26.430 --> 05:31.860 Now I'm going to give you some guidelines how you actually do it, and then we're going to run into 05:32.310 --> 05:34.410 how we evaluate packages. 05:34.860 --> 05:35.190 Good.