WEBVTT 00:11.300 --> 00:15.750 Great last lecture in this section about workshopping. 00:15.860 --> 00:22.190 So when you're doing your diagramming, when you're putting out your classes and your association on 00:22.190 --> 00:28.280 your diagram during the workshop or afterwards, when you're documented, you could do it in many different 00:28.280 --> 00:29.070 ways, of course. 00:29.450 --> 00:36.550 And what would you what you would like to do is to create a diagram that is as easy as possible to read. 00:36.920 --> 00:44.690 People shouldn't have trouble reading it because and understanding just the semantics of of of UML. 00:44.990 --> 00:47.680 They should try to focus on understanding the concepts. 00:48.860 --> 00:51.390 So that is about diagram composition. 00:51.770 --> 00:57.530 So here, I'm going to give you a lot of experience based knowledge. 00:57.530 --> 01:03.470 So I've been developing diagrams for concept models and other types of models as well for nearly six 01:03.610 --> 01:04.790 years professionally. 01:04.790 --> 01:06.550 And you learn a lot. 01:06.800 --> 01:09.750 So here, I'm going to give you some of the highlights. 01:09.770 --> 01:12.560 What do you think about what you should think about when you do this? 01:13.790 --> 01:21.080 So the most crystal clear conceptual model semantically can easily be made impossible to understand 01:21.080 --> 01:22.470 by lousy composition. 01:23.060 --> 01:25.340 So let's take a concrete example here. 01:26.670 --> 01:30.920 Let's take two semantically equivalent diagrams. 01:31.040 --> 01:34.830 So they are expressing exactly the same thing, these two diagrams. 01:36.080 --> 01:37.880 So here's the first one 01:40.490 --> 01:42.500 and here's the second one. 01:46.790 --> 01:48.560 So which one is easiest to understand? 01:51.630 --> 02:03.030 I would probably go with the right one, right, but the thing here to think about is why is that easier 02:03.030 --> 02:06.660 to understand than the first one since they're semantically? 02:06.660 --> 02:10.720 If you just follow all the lines here, you will see that they are equivalent. 02:12.690 --> 02:15.150 So why is that? 02:15.780 --> 02:18.450 It's about patterns, of course. 02:19.080 --> 02:21.060 So give the brain what it wants. 02:21.510 --> 02:29.520 So the brain would like to first, on a phenomenological level, it actually reads the model without 02:29.520 --> 02:34.500 actually reading the what is written inside a concept and everything like that. 02:35.280 --> 02:42.090 Just by the way, you compose your diagram, you actually are saying a lot to the brain before it starts 02:42.090 --> 02:47.280 to actually understand the more detailed meaning of the classes and associations. 02:48.300 --> 02:55.920 So some tricks of the trade here and diagram composition than first one, avoid crossing lines so the 02:55.920 --> 03:00.550 brains get distracted on which route to follow when reading out the semantics from the diagram. 03:00.930 --> 03:08.310 So if you do something like this, the brain has to go a long path before it actually reaches the the 03:08.310 --> 03:10.170 target and end destination. 03:11.220 --> 03:18.890 Sometimes you might need to do it, but at least try to avoid the crossing a line here because the crossing 03:18.890 --> 03:25.350 of lines then at each crossing the brain gets a little bit distracted to see which which way to follow 03:25.350 --> 03:25.720 here. 03:27.090 --> 03:32.370 So instead of doing that, you could have done this, which is much, much easier to understand. 03:32.550 --> 03:40.050 So the association that goes back from A to A is kept close to a, of course, and that association 03:40.050 --> 03:42.920 going from A to B, and it's the shortest path here. 03:43.410 --> 03:45.150 And you don't need any crossing lines. 03:45.300 --> 03:48.820 You should always at least try to remove all the crossing lines. 03:48.840 --> 03:56.220 Of course, there there are situations where you just need to have them but try to to to remove them, 03:56.370 --> 04:02.370 even if sometimes you actually have to do the association a little bit longer path, it might be better 04:02.370 --> 04:03.780 than crossing the lines. 04:05.760 --> 04:14.070 OK, second islands of clusters, so try to place interrelated concepts close and separate them out 04:14.070 --> 04:15.870 from other interrelated concepts. 04:16.740 --> 04:23.820 So if you have something like this, so here's a couple of classes you cannot in this picture see which 04:23.820 --> 04:29.340 classes are actually interrelated or it's much harder to see what this is actually the equivalent of 04:29.340 --> 04:30.090 doing this. 04:30.900 --> 04:39.270 So once we have analyzed the above, we actually see that a DCB are closely related. 04:39.630 --> 04:45.960 They have a lot of associations between each other and FHC are actually quite closely related. 04:46.230 --> 04:49.470 And there's only one association going between the clusters. 04:50.910 --> 04:53.520 And here's where were you as a facilitator. 04:53.520 --> 04:56.460 And documenter needs to be very skilled. 04:56.730 --> 05:01.140 You need to be able to spot those patterns before anyone else is bottom them. 05:01.390 --> 05:07.470 And usually if I'm doing the modelling myself on the workshop, I actually try to fix all those things 05:07.500 --> 05:12.210 as we go along in the workshop because the diagram needs to be easier to understand. 05:13.210 --> 05:15.270 So I just need a bit of a complex example. 05:15.270 --> 05:22.140 But as I said, here's something you really need to train to get to get good at trying to separate class 05:22.140 --> 05:23.670 clusters of all classes. 05:26.710 --> 05:29.000 Try to enforce cohesiveness. 05:29.050 --> 05:35.440 So what I mean by that, so place concepts with close semantic connection, close and separate that 05:35.440 --> 05:41.860 out from other closely related, no matter the number of relations, if they belong together, they 05:41.860 --> 05:42.170 do. 05:42.790 --> 05:48.520 So here we have a couple of classes in the top here, like party agreement, product price, product 05:48.530 --> 05:49.840 address, payment plan. 05:51.010 --> 05:55.020 You probably know that parties have addresses. 05:55.810 --> 06:00.700 It's not that common that the agreement to have an address is the party in the agreement that address 06:00.700 --> 06:02.740 the payment plan is related to the agreement. 06:02.740 --> 06:09.970 And the price of the product is, of course, related to the product, so that it's a good way to start 06:09.970 --> 06:16.510 to separate things that semantically belong together in one kind of loose way. 06:18.450 --> 06:21.660 That also makes the diagram easier to understand and read. 06:24.000 --> 06:30.690 And also make key concept stand out, so highlight key concepts using size and line size. 06:31.330 --> 06:38.220 So the key concepts are the gates into the storytelling and make them easy to find. 06:38.250 --> 06:44.670 So when you start telling your story about your diagram, so when you are going to describe your diagram, 06:44.670 --> 06:51.840 either in textual form or when you're going to actually communicated after you documented it, you usually 06:51.840 --> 06:53.360 start with the key concept. 06:53.380 --> 06:58.770 So you usually start either by, for example, starting about agreements or starting about the priorities. 06:58.770 --> 07:05.910 You can have agreements or product and so on, usually not start with a kind of aggregated, aggregated 07:05.910 --> 07:07.410 concept to an agreement. 07:09.410 --> 07:15.410 So if you have, again, the same classes here, again, party and disagreement, payment plan, product 07:15.410 --> 07:21.440 and product price, there are some of these there are Kanakis citizens in the domain and some of them 07:21.440 --> 07:23.260 are more dependent citizens. 07:23.840 --> 07:30.140 So you could then just note them actually as the key concepts they are. 07:30.530 --> 07:36.950 So you could highlight them a little bit better in the diagram by actually increasing line size and 07:36.950 --> 07:39.180 also increasing the size of the concept. 07:39.200 --> 07:41.460 That's a very good trick that I usually do. 07:41.750 --> 07:46.880 So the main concepts in a couple of places in the diagram, I make a little bit larger and highlight 07:46.880 --> 07:50.660 them so that it's easier to come in to know where to start looking. 07:52.910 --> 07:54.960 Try to be consistent in your lifestyle. 07:55.580 --> 08:00.180 So use the same lifestyle in the complete diagram and do not mix different styles. 08:00.590 --> 08:02.660 That's also to minimize the distraction. 08:03.980 --> 08:10.610 So if you take an example here, we have actually used kind of four different line stars in one in the 08:10.610 --> 08:11.530 same diagram. 08:11.990 --> 08:14.420 Instead, you should use it. 08:14.420 --> 08:19.010 Either do this or you should do that or you should do that. 08:20.060 --> 08:26.210 But pick one of them and stay with that in the same diagram, at least because otherwise also that becomes 08:26.210 --> 08:26.920 a distraction. 08:29.800 --> 08:36.640 The last one I would like to talk about is what I call the client supplier to DeCota me here, so try 08:36.640 --> 08:44.160 to separate out clients from suppliers in the model and try to place suppliers either lower down since 08:44.170 --> 08:50.740 they are more fundamental or higher up because they're considered on higher abstraction, but do not 08:50.740 --> 08:52.480 do both in the same direction. 08:52.530 --> 08:58.420 And what I mean, we clients, suppliers here, if I have in this diagram A, B and C as classes and 08:58.420 --> 09:04.180 I have a generalization between you and C and I have an association between A and B, an association 09:04.180 --> 09:10.660 between CMB, and they also have the inevitability of going to be that means that you should follow 09:10.660 --> 09:17.410 the direction of the arrow, both in the for the associations navigability and also the arrow in the 09:17.410 --> 09:26.740 generalization relationship here and in the case with A and C, then A is the client to C and C is the 09:26.740 --> 09:36.520 supplier to A right for and B again A is the client for B and B is the supply for A and C is declined 09:36.520 --> 09:40.980 for B, B is the supplier for A Forese. 09:40.990 --> 09:41.320 Sorry. 09:43.060 --> 09:54.550 So what you should try to do is to get the clients either below the suppliers or the suppliers below 09:54.550 --> 10:00.580 the clients, depending on a little bit of what you're trying to do to describe. 10:02.280 --> 10:03.360 So do this instead. 10:03.930 --> 10:13.500 So in this case, will have a which in this case is the most specific class because that's a client 10:13.500 --> 10:22.050 of both C and B, and then we have C because C is actually also client or B, and then we have B, that 10:22.050 --> 10:24.810 is the most fundamental class. 10:25.530 --> 10:34.740 And I usually try to put the suppliers in at the bottom of the chart because that holds around very 10:34.740 --> 10:36.990 well with a layered architecture. 10:37.020 --> 10:43.410 When we talked about the layers of abstraction, you usually tend to have the most abstract and more 10:43.590 --> 10:46.500 generic stuff in the bottom of the diagram. 10:48.210 --> 10:50.640 So that's how I usually do it. 10:51.640 --> 10:54.960 Um, and then you should try to do that for the whole diagram. 10:55.200 --> 10:59.220 So the most generic parts are in the in the bottom part of the diagram. 11:00.630 --> 11:03.300 So as I said, these are just rules of thumb. 11:03.300 --> 11:12.870 In the end, every situation is unique, but still those are very that I've found from my experience, 11:12.870 --> 11:18.140 very useful techniques to learn and you should actually learn it. 11:18.630 --> 11:24.150 So they are fluent for you in the same way that if you're fluent in playing piano, you don't think 11:24.150 --> 11:27.390 about actually that you're just putting down your fingers. 11:28.860 --> 11:32.160 You are just thinking about the music you would like to create. 11:32.160 --> 11:34.200 And it needs to be actually the same for you. 11:34.200 --> 11:40.110 When it comes to a workshop, a situation where you do the modelling, you should just have those types 11:40.110 --> 11:41.640 of tools within you. 11:41.830 --> 11:47.910 So exactly directly when you spot the patterns and you know who you are trying to model the concrete 11:47.910 --> 11:52.950 situations, you are trying not to cross in lines, you're trying to separate out concepts are semantically 11:53.220 --> 11:53.750 together. 11:53.760 --> 11:56.310 You're trying to separate Alden's of clusters and so on. 11:56.490 --> 11:58.380 That's something you just do naturally. 11:59.490 --> 12:04.080 So you don't have to think about that because you need to focus on listening on what people are saying 12:04.080 --> 12:04.530 instead. 12:06.350 --> 12:07.670 OK, very good. 12:07.860 --> 12:13.290 So that was the end of the lecture about Dinham composition, and that was actually the last lecture 12:13.290 --> 12:14.090 in this section. 12:14.100 --> 12:20.310 So now we're rushing off into the last section on the whole course, which is about packaging. 12:20.610 --> 12:22.770 So that's when you coming home after workshop. 12:22.770 --> 12:27.780 Usually you're probably not doing the packaging at the workshop depending on your how much time you 12:27.780 --> 12:28.020 have. 12:28.440 --> 12:34.140 But usually when you're documenting the result, you start finding finding the different clusters and 12:34.140 --> 12:36.570 then you package the clusters together in packages. 12:36.870 --> 12:38.310 Barrigan See you there.