WEBVTT 00:11.060 --> 00:12.050 OK, very good. 00:13.430 --> 00:19.250 So that was pattern recognition when you're finding patterns in the actual model you're building up 00:19.640 --> 00:21.620 during the workshop or after we had documented it. 00:23.390 --> 00:28.070 Now we're going to talk about conceptual patterns, and that's more generic patterns that you can have 00:28.070 --> 00:29.660 in your --, in your tools. 00:30.290 --> 00:36.200 And then you bring in to the workshops and utilize during the workshop or during the documentation phase. 00:37.460 --> 00:42.860 And it's a very powerful tool and actually sometimes even too powerful. 00:42.950 --> 00:43.700 I would talk to you. 00:43.700 --> 00:44.270 Why that? 00:46.490 --> 00:55.340 So patterns are used to document the solution or recurring design problems, and it is then contextualized 00:55.340 --> 00:57.610 and used in a specific problem context. 00:57.620 --> 01:00.110 So pattern is a general description here. 01:00.440 --> 01:05.690 And once you know about the pattern, you know how it is described, then you can utilize that in a 01:05.690 --> 01:08.920 concrete situation when you are building your specific model. 01:10.640 --> 01:17.630 So design patterns was actually invented in the housebuilding domain by house building architect called 01:17.990 --> 01:20.630 Christophe Alexander in 1979. 01:21.200 --> 01:27.830 And it was actually then introduced in the software business development industry as late as in the 01:27.830 --> 01:28.490 mid 90s. 01:28.490 --> 01:30.890 But then it kind of took off very fast. 01:30.890 --> 01:37.220 So it came I think the first pattern started to emerge around ninety five, 96, 97 maybe. 01:37.490 --> 01:41.630 And then they became very, very popular around that time. 01:41.630 --> 01:47.390 And everybody now if you're a software developer, you probably already know dozens of patterns like 01:47.390 --> 01:49.130 proxy and strategy and so on. 01:49.970 --> 01:50.630 Flyweight, 01:53.630 --> 01:59.210 if you're only working with business modeling or actually not done any type of modeling before, then 01:59.210 --> 02:01.220 you might not know exactly what it is. 02:01.460 --> 02:07.010 So I will walk through here an example of a very typical pattern and I will show you how they usually 02:07.010 --> 02:10.520 are described if you buy a book about patterns and so on. 02:11.000 --> 02:16.790 And then in the coming lectures, I will also introduce some specific patterns I won't go through and 02:16.790 --> 02:18.980 all the patterns in the world because there are so many. 02:19.250 --> 02:25.970 And but my idea here is that you should learn how to use patterns and a little bit about what type patterns 02:25.970 --> 02:31.910 there exist and not to fall into the traps, but also try to utilize its power. 02:32.090 --> 02:35.270 And then you need to look at all the patterns you read about patterns yourself. 02:35.990 --> 02:41.720 But so an example, and I've shown you this example maybe a couple of times already, and maybe this 02:41.720 --> 02:47.330 is if you're working in a business to business modeling domain, this is probably the most common pattern 02:47.330 --> 02:49.250 you will get in, you will bump into. 02:50.550 --> 02:57.210 So the contract, so you have a contract and a contract is regular, you can use one of many products 02:58.140 --> 03:04.190 and a contract is connected to a party class in two different ways, at least. 03:04.200 --> 03:08.160 So we have one or many clients and one of many suppliers. 03:08.670 --> 03:13.110 And each party could be involved in multiple contracts. 03:13.110 --> 03:16.960 And you can be clients and some contracts and suppliers and other contracts. 03:17.580 --> 03:23.010 So that's the most generic form of what it is to be a contract and how contract, party and product 03:23.010 --> 03:23.700 are related. 03:25.320 --> 03:27.660 And that could be implied in many, many situations. 03:27.690 --> 03:29.220 So here's three examples. 03:29.340 --> 03:35.610 Flight ticket is the type of contract right where you have it for a specific flight, which is the product 03:36.060 --> 03:37.320 and you have a good party. 03:37.320 --> 03:38.750 Who's in the role of a passenger? 03:38.760 --> 03:41.040 I have other parties which are the airline companies. 03:41.230 --> 03:47.010 OK, you have a credit agreement regarding the product of a leasing where the priority is disposal customer. 03:47.010 --> 03:53.880 And you have the Lazaro's actually lending you the money and you have a license agreement regarding 03:53.880 --> 03:59.430 health class license, which is the product with the parties, the facilities, buying the license. 03:59.610 --> 04:04.260 And you have the concept developer who owns the the the license for the health class. 04:04.770 --> 04:08.220 So Almaz are three identical structures. 04:08.220 --> 04:12.660 You see, even if I use different terms on the concepts here and actually different terms of the rules, 04:12.990 --> 04:17.340 the structure is identical and that's the structure of the contract pattern. 04:19.740 --> 04:26.100 So usually when you are done modeling in a workshop and you are starting talking about something, then 04:26.100 --> 04:29.700 you should have your council to set our patterns up in your mind. 04:30.030 --> 04:35.460 And they you should try to start comparing what you're hearing with common patterns that arise, because 04:35.460 --> 04:37.860 the patterns could help you ask questions. 04:38.190 --> 04:43.050 And they could also be introduced and shown to the user to say this is something like this. 04:43.290 --> 04:45.590 Isn't this kind of like a pattern and so on. 04:45.690 --> 04:47.500 And if it is a pattern, what is the product really? 04:47.500 --> 04:47.860 And so on. 04:48.630 --> 04:52.260 So there could be very, very powerful and drive. 04:52.770 --> 04:54.390 The whole work should forward. 04:55.230 --> 05:01.560 However, as I should say, and I have already said it, there could be some that would be too powerful, 05:01.560 --> 05:08.490 because if you are too inspired about all those patterns, it tend to be a overcomplicating model maybe 05:08.490 --> 05:13.560 that you're creating or that you're introducing stuff that is not relevant in these concrete situations. 05:13.560 --> 05:15.810 So you have to be a little bit careful. 05:15.810 --> 05:21.120 And that's also something you have to learn by practicing this work to kind of learn to use them or 05:21.120 --> 05:22.050 to stop using them. 05:24.520 --> 05:29.470 But then how is the pattern described then, if you're picking up a pattern book, you start reading 05:29.470 --> 05:31.570 about a pattern, what is to expect? 05:31.580 --> 05:33.040 How are they usually described? 05:33.430 --> 05:35.500 Yeah, first of all, they need to have a name. 05:35.510 --> 05:37.770 And this example was the contract contractor here. 05:37.790 --> 05:39.550 The name is Contract. 05:39.550 --> 05:39.870 Right. 05:40.540 --> 05:44.850 The the name should be short and catchy and easy to remember. 05:44.890 --> 05:51.720 So there is a lot of good patterns, names out there, as I said, proxy strategy and so on. 05:52.000 --> 05:53.320 They are typical patterns. 05:53.320 --> 05:57.900 And if you know that name, then you kind of get and grasp the concept about a pattern. 05:58.240 --> 06:01.420 Then you can have that as a shorthand saying is this like a strategy? 06:01.420 --> 06:02.770 Should we do this as a strategy? 06:03.130 --> 06:08.410 Then everybody that knows about the strategy pattern knows exactly what to do, or is this a typical 06:08.410 --> 06:13.540 party pattern or is this a typical contract pattern or is this a typical thing, information pattern 06:16.030 --> 06:21.640 where they can be like a metaphor for the real world, like, as I said, strategy or mediator and so 06:21.640 --> 06:21.820 on. 06:22.670 --> 06:30.760 And this example was a contract, simply put on the pattern description should also have an intent, 06:30.760 --> 06:33.670 describing it in a little bit more general purpose way. 06:34.740 --> 06:38.850 So, for example, contracts and agreements are a main building block in most business situations. 06:38.860 --> 06:41.010 This pattern gives guidelines on how to model them. 06:41.310 --> 06:42.160 OK, very good. 06:42.460 --> 06:45.430 That's one way of describing what it is about. 06:46.780 --> 06:50.380 They should also have an applicability applicability section. 06:50.380 --> 06:54.500 What it describes actually, in which iteration is you generally apply this. 06:54.970 --> 07:00.760 So use it in all situations when designing flexible business and design systems such as banks, insurance 07:00.760 --> 07:03.640 companies, retailers, online services and many, many more. 07:04.060 --> 07:08.860 So that's just to kind of point you in the right direction, where to start looking for a situation 07:08.860 --> 07:11.620 where it could be applicable of using this pattern. 07:12.790 --> 07:14.130 Then it comes to the structure. 07:14.140 --> 07:17.710 So here you actually describes the structure of the actual solution. 07:18.700 --> 07:21.350 Sometimes the structure is a little bit larger than you're using. 07:21.370 --> 07:27.700 So if I'm having a contract related to products and here I actually have an association that contracts 07:27.700 --> 07:33.040 could have subcontracts as well, and also saying they usually would like to have a contract tied maybe 07:33.250 --> 07:37.600 as a power type to be able to reason about them before I actually have some contracts. 07:38.860 --> 07:41.410 So maybe that's the complete structure. 07:41.410 --> 07:46.630 But I'm not I doesn't I don't have to use the complete structure when I'm applying. 07:48.550 --> 07:53.070 Then after that, the different participants in that structure needs to be described. 07:53.110 --> 07:55.640 So I need to describe what a contract is. 07:55.660 --> 08:01.840 So the main participant in the pattern is the contract that regulates the specific usage of the product. 08:02.050 --> 08:07.990 In one unique usage of it, contracts could refer to other contracts such as subframe agreement and 08:07.990 --> 08:09.120 drawn down deals. 08:09.130 --> 08:12.130 Yeah, so that's the relation between contracts. 08:12.550 --> 08:17.710 The party represents the involved legal entities in the contract, such as a person, government or 08:17.710 --> 08:18.310 a company. 08:18.490 --> 08:22.090 The partner plays a specific role in the context of a specific contract. 08:22.090 --> 08:24.470 Right contract type. 08:24.490 --> 08:29.380 There are many different types of contracts that behave in different ways, such as frame agreements 08:29.590 --> 08:31.060 and higher purchase agreements. 08:32.020 --> 08:37.550 And lastly, product is the item being agreed upon between the involved parties. 08:38.230 --> 08:39.340 OK, very good. 08:39.370 --> 08:44.260 So there are I've described the structure first and then I describe the involved participants in the 08:44.260 --> 08:44.800 structure. 08:45.670 --> 08:51.460 Then I need to describe the kind of pros and cons, well, the consequences of using this pattern, 08:51.460 --> 08:58.060 because this is the way generically when it comes to all types of of the mechanisms that you're using 08:58.060 --> 09:00.760 for building a model, they both have pros and cons. 09:01.010 --> 09:06.180 There's no such way as a silver bullet where we can combine everything and everything just got better. 09:06.910 --> 09:12.270 So describes how it solves the solution, but also the trade offs that you need to make here. 09:12.320 --> 09:18.520 So by separating the parties and product with a contract concept, it makes it easier to handle general 09:18.520 --> 09:24.060 product level terms and specific contract level terms, as well as changing terms or contracts. 09:24.580 --> 09:30.100 However, introducing the pattern could lead to complicated structure, to a too complicated structure 09:30.100 --> 09:30.890 were not needed. 09:31.720 --> 09:38.620 So here we are saying that the pros are that we're getting flexibility and to be able to handle generic 09:38.620 --> 09:41.350 terms separately for contract terms. 09:41.350 --> 09:46.030 But we also introducing a concept that might not be something that they're using in the business at 09:46.030 --> 09:46.720 this moment. 09:47.000 --> 09:49.210 We're actually separating the product from the contract. 09:51.370 --> 09:53.650 I don't think that that is a big problem just in this case. 09:53.650 --> 10:01.360 But you see the point here that you have both pros and cons for using a pattern and then you need to 10:01.360 --> 10:02.470 show some examples. 10:02.470 --> 10:06.670 So already shown you three examples of the contracts are when you're describing a pattern, then you 10:06.670 --> 10:09.990 probably also then show a couple of examples how it could be applied. 10:10.300 --> 10:12.880 So here's the credit agreement with the leasing and the party. 10:13.150 --> 10:20.530 Here's the ad service agreement regarding a service search network, ad service and the user and the 10:20.530 --> 10:21.820 search engine and so on. 10:23.130 --> 10:29.370 So those are kind of two different examples of how to apply the pattern, and then you also have to 10:29.370 --> 10:34.420 show the pattern is usually contextualized in a larger set of other patterns. 10:34.470 --> 10:37.220 So here we focused about the contract pattern. 10:37.590 --> 10:43.020 But there is also a pattern that is actually called the party pattern, where we describe how you can 10:43.020 --> 10:49.350 organize a party and structure parties generically without talking about the contextual context that 10:49.350 --> 10:50.160 they could be part of. 10:51.360 --> 10:56.400 And there's also actually another pattern called product, which is used to deal with product complexity. 10:57.000 --> 11:01.980 And there could be another pattern called business event history, which handles events that happens 11:01.980 --> 11:02.950 to a contract and so on. 11:02.970 --> 11:10.290 So you need to put the pattern in the context of other patterns as well, because you're usually dealing 11:10.290 --> 11:14.320 dealing with a system of patterns that relate to each other in one or another way. 11:15.390 --> 11:21.030 And then lastly, and maybe and of course, very importantly, who actually found out about this pattern? 11:21.030 --> 11:24.660 Who may who kind of discovered a pattern, described it the first time. 11:25.050 --> 11:30.120 So the contract pattern is something described by someone called Monifa or Fowler is great software 11:30.120 --> 11:32.360 architect, leading figure and software development. 11:33.600 --> 11:36.530 And he's also writing books about business development. 11:36.530 --> 11:37.290 That is very good. 11:37.290 --> 11:42.090 And he wrote a book called Analysis Patterns a long time ago. 11:42.390 --> 11:46.650 And the way he described the contract pattern, other presidents have also described the contract pattern 11:46.650 --> 11:49.800 or tweaks to it as to other suites. 11:49.800 --> 11:54.540 Actually, among the spanker enhanced Erick Erickson and their other great book called My Business Modeling 11:54.540 --> 11:55.160 with UML. 11:55.710 --> 12:02.880 And there are other books as well and sites out that are describing the contract pattern and different 12:02.880 --> 12:03.640 various ways. 12:04.950 --> 12:12.840 So that's usually the the different sections that you describe, patterning from the name to the source 12:12.840 --> 12:18.270 and the credit, including the structure and the participants and the intent and consequences and so 12:18.270 --> 12:21.890 on, to summarize them patterns. 12:21.900 --> 12:26.170 So patterns are used to document the solution of a recurring design problem. 12:26.450 --> 12:32.490 OK, and there are very, very valuable tool to have in your toolkit when you're doing conceptual modeling. 12:32.490 --> 12:35.340 And actually the more patterns you know, the better it is. 12:35.360 --> 12:42.510 I would say the more powerful you will be as a facilitator of the workshop and trying to resolve problems 12:42.510 --> 12:43.770 that arise during the workshop. 12:44.160 --> 12:47.370 And but sometimes they actually can be too valuable. 12:47.370 --> 12:50.970 And at least I think this is a risk in the beginning when you start learning about patterns because 12:50.970 --> 12:52.480 you will have these aha moments. 12:52.480 --> 12:54.900 We think that this is so great. 12:55.080 --> 12:56.530 I can model everything now. 12:56.850 --> 13:02.880 The problem is that it's the business experts that needs to tell you you should only use and apply the 13:02.880 --> 13:04.770 patterns if they make sense for them. 13:05.010 --> 13:05.440 Right. 13:06.360 --> 13:12.060 So it is very easy to start over, use patterns and making model overcomplicated when they're not needed, 13:13.140 --> 13:17.970 which also maybe results in overcomplicated databases later on if you're trying to do this. 13:18.180 --> 13:20.490 I do support system for this and so on and so on. 13:20.880 --> 13:23.900 So keep it simple but powerful. 13:25.470 --> 13:27.390 So some useful patterns to look up. 13:27.390 --> 13:32.460 Maybe I'll just list them here and then you have to look at them yourself and you can probably find 13:32.460 --> 13:34.920 out a lot of information on the net if you search on this. 13:35.520 --> 13:41.310 So, for example, pancakes on the two suites and or business monolingualism book and they describe 13:41.310 --> 13:46.890 active role, business definition, business event, result, history, contract corruption, Tatian 13:46.890 --> 13:53.640 document employment, geographical location, organization and party product data management thing information, 13:54.060 --> 13:57.240 the title item type object value. 13:57.510 --> 14:05.280 And Martin Fowler in his book is describing accountability post account transactions, options, order, 14:05.280 --> 14:10.110 money, product inventory, quantity and there's yeah. 14:10.110 --> 14:11.270 Numbers of other people. 14:11.280 --> 14:16.350 Then Silverstone is another one that is working more on database patterns, but they are often very 14:16.350 --> 14:19.560 generic and logical, so you can use them on a business level as well. 14:19.890 --> 14:23.270 He's also describing invoice, for example, and party as well. 14:24.030 --> 14:27.570 So start reading and looking at patterns. 14:27.570 --> 14:29.700 That's a very powerful tool to use. 14:30.840 --> 14:31.470 Very good. 14:32.160 --> 14:36.130 So the next couple of lectures is actually going to be some pattern examples. 14:36.160 --> 14:41.760 I'm going to rush into some concrete patterns and how you can use them in different scenarios for using 14:41.760 --> 14:43.140 them in in workshops. 14:43.320 --> 14:45.540 And when you document good workshops, good.