<?xml version="1.0" encoding="UTF-8" ?><!-- generator=Zoho Sites --><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><atom:link href="https://www.reflektis.nl/blogs/Modelling/feed" rel="self" type="application/rss+xml"/><title>reflektis - Blog , Modelling</title><description>reflektis - Blog , Modelling</description><link>https://www.reflektis.nl/blogs/Modelling</link><lastBuildDate>Mon, 07 Sep 2026 14:32:00 +0200</lastBuildDate><generator>http://zoho.com/sites/</generator><item><title><![CDATA[The Live Domain]]></title><link>https://www.reflektis.nl/blogs/post/the-live-domain</link><description><![CDATA[Conway's Game of Life Prompted by an old discussion on Reddit (link expired), kicked off by the question: &quot;Please explain OOP to me in the langua ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_lYJc4_b4Q-eXVzUv2gplnQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_kx6ZGRiURoCwlT6TOqiE1w" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_VhzHtD4aS_q2Hig-tIYuag" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_eIeA0zpVS9a6OOkg2XExGg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><div class="wp-block-image size-full wp-image-7754"><figure class="aligncenter size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/life6b.gif" alt="" class="wp-image-12038"/><figcaption>Conway's Game of Life</figcaption></figure></div>
<p>Prompted by an old discussion on Reddit (link expired), kicked off by the question: &quot;Please explain OOP to me in the language of a five-year old&quot;, I found myself musing on the reasons computing seems to stay stuck in the Middle Ages.</p><p>It is not for lack of great minds or vision. In fact, I have the impression, the problem seems to be that nobody ever seems to read anything. Why is that? Is there some kind of unspoken consensus that, since we are in the area of computing science which is soooo new and changing so rapidly, that anything older than 1 year should&nbsp;already be considered obsolete?</p><p>Let's catalogue a few of the main misconceptions, shall we?</p><h3 id="h-it-is-all-about-automation">It is all&nbsp;about automation</h3><p>Basically, this misconception is foremost in the minds of most people wrestling with IT in the context of business or society. We see computers as a kind of machine. A machine is seen as something that helps us, humans, do things. What things? Well, things we already did, such as computing (the mathematical kind), searching, manufacturing, accounting, writing.</p><p>If this is your underlying (and, usually, totally subconscious) assumption, then it is almost impossible to see the hidden treasures (and, yes, dangers, but we will come to that later). You live in a world that does not need to change, really. Or rather I should say: you do not need to change. Everything remains as it was, it is just that computers are doing some of it. You do the same things. It is the old Western metaphor of the inanimate world just being there to serve us, superior and <a href="https://blog.reflektis.nl/ai-has-no-body/">in some ways detached</a>, human beings. Computers, the internet, it's all just machinery. It is like&nbsp;a steam engine or clockwork. More complex perhaps, but intrinsically the same.</p><h3 id="h-older-than-1-year-is-irrelevant">Older than 1 year is irrelevant</h3><p>We live in an era of change. At least that is the slogan. Constant change, and we are wrestling to keep up. As individuals, as enterprises. We are constantly introducing &quot;new&quot; ways of coping with those changes, we are officially adhering to the religion of change.</p><p>And since these changes are so ubiquitous, we can not rely on the past any more. Past knowledge or experience no longer applies, so anything thought of in the past has become irrelevant.</p><h3 id="h-computing-is-an-independent-discipline">Computing is an independent discipline</h3><figure class="wp-block-image"><a href="https://commons.wikimedia.org/wiki/File%3AIllustrated_proverb-_Blind_men_and_an_elephant.jpg"><img src="https://upload.wikimedia.org/wikipedia/commons/1/17/Illustrated_proverb-_Blind_men_and_an_elephant.jpg" alt="Illustrated proverb- Blind men and an elephant"/></a><figcaption>The Elephant and the Blind Men</figcaption></figure><p>Well, for that matter, I have a deeply disturbin feeling that <em>any</em> discipline is seen as an independent one.</p><p>Did any of you read Isaac Asimov's book &quot;Foundation&quot; (part 1 of the famous Foundation Trilogy)? Maybe not. The book started to take form in 1942. But it talked about a problem&nbsp;Asimov, as a biochemist, was acutely confronted with: the splintering of scientific disciplines akin to the blind men and the elephant. Each discipline functioning in a silo, and the scientific community endlessly repeating what other scientists have said earlier.</p><h3 id="h-ethics-don-t-really-come-into-play">Ethics don't really come into play</h3><p>When I started studying physics and mathematics on the university of Utrecht, The Netherlands, I was shocked to find that I was the only student in my year taking on a parallel course in &quot;Philosophy of Science&quot;. I could not understand how my fellow students thought they could be effective scientists (I must admit, at the time my main ambition was to be a famous scientist) if they were not taking into account the broader view, in fact as broad as is feasible for a mere individual.</p><h3 id="h-it-s-about-data">It's about data</h3><p>This is one of the misconceptions that I worry about most. It creates an endless stream of misery and problems (it's too much, there are privacy concerns, and all this stuff about semantics, how to structure it, to name a few). Why is it about data? Or, still awful but slightly less so, about information? There is already too much information! (maybe you like my article on <a href="https://www.reflektis.com/blog/inverted-big-data/">The Inversion of Big Data</a>, or, about the undervalued distinction between data and information: <a href="https://blog.reflektis.nl/business-intelligence-een-andere-definitie/">Business Intelligence, an alternate definition</a>)</p><h2 id="h-the-solution">The solution</h2><p>The solution has been around for a long long time. Almost unnoticed, although not really because a malformed and drilled-down interpretation of it is what you currently see all around: personal computers are a direct offspring of one of the most misunderstood projects of the past century, done by the Learning Research&nbsp;Group at Xerox PARC.</p><p>A central concept that was realised by that group was something called a <em>live domain</em>. In fact this domain, which bootstrapped for the first time in October 1972, was not just live in the domain part, but <em>everything</em> was live: <a href="https://en.wikipedia.org/wiki/Turtles_all_the_way_down">&quot;turtles all the way down&quot;</a>: the operating system, the application development environment, even the compiler! Maybe the world is not yet mature enough to embrace that concept wholly, but a part of it is, and it is about time too.</p><p>That part is where the business logic or domain logic of the architecture lives.</p><p>Every architecture is wrestling with the problem of where to put the business functionality. Even how to discover that functionality is a problem, resulting in an endless stream of books purporting to offer help.</p><p>The centre of any logical architecture should be a simulation model of the organisation. What do I mean with a simulation model?</p><ol><li>It is executable and able to run independently from other components (such as a database or a front-end) <ol><li>&quot;independently&quot; is implemented by &quot;connecting&quot; those components with event publishing on state changes</li></ol></li><li>It &quot;reflects&quot; the real organisation (but there is something magical in the reflection: <a href="https://blog.reflektis.nl/the-mirrored-world/">The Mirrored World</a>) (ed. 2022: related to the recent term <a href="https://blog.reflektis.nl/digital-twins-done-right/">&quot;Digital Twin&quot;</a>)</li><li>It is time-aware: changes of state are events on one or more timelines (<a href="https://en.wikipedia.org/wiki/Reverse_computation">time warp</a> should be possible!). Every state is time-bound!</li></ol><p>It is quite a different thing to have a simulation model instead of a reified data model, which is what almost every organisation currently has. Not even an information model, mind you, but a data model. It is left to the viewer, the user, through a handicapped tool called a front-end, to make something of the mess, hopefully approaching something that can be called information.</p><p>I will leave it up to the reader to come up with the infinite possibilities that will be exposed if you do this - I will come back to you on this in a later article. In the meantime: why did I show the picture above this article? Anyone?</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 19 Jan 2017 13:00:50 +0100</pubDate></item><item><title><![CDATA[The ArchiMate metamodel]]></title><link>https://www.reflektis.nl/blogs/post/archimate-metamodel-uml</link><description><![CDATA[This article introduces a complete, navigable and clickable representation of the ArchiMate metamodel standard. The model is created using UML. This i ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_AEEywv58RlGCu1O0__ilpQ" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_s_xxjzSiR6-RPB8fhUTIuA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_SlRk7zjXQFaF9cdz0Wvi4g" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_hQWCxTxfQk69kEzxAFxxjQ" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="has-drop-cap">This article introduces a complete, navigable and clickable representation of the ArchiMate metamodel standard. The model is created using UML. This is not because I wanted to translate ArchiMate into UML, but because UML should be well-suited to define a language such as ArchiMate in. And after all, also the standard itself defines its metamodel using something that looks like UML. In fact I think the ArchiMate forum should decide to formally specify ArchiMate in UML and &quot;own&quot; the UML profile for tool vendors and other interested parties to keep up.</p><h2>Metamodelling and ArchiMate</h2><p>Any language needs a specification. What are the rules? What is the format (its syntax)?</p><p>ArchiMate is no different. Its specification is part of the standard, published in document format by the Open Group, of which you can find the latest version here:</p><ul><li>ArchiMate 3.1: <a href="http://pubs.opengroup.org/architecture/archimate3-doc/">http://pubs.opengroup.org/architecture/archimate3-doc/</a></li></ul><p>The language specification consists partly of what ArchiMate calls its metamodel. For language designers the use of this term in the context of ArchiMate is somewhat problematic, because what ArchiMate calls a <em>metamodel</em> should more properly be defined as a <em>class model</em>. Also the lack of a proper metamodel layer in ArchiMate is revealed by the fact that ArchiMate is not specified in itself, but in what should be regarded as a handicapped UML.</p><p>Many people, including myself, have argued for ArchiMate to be specified as a UML profile. Unfortunately this has not happened yet.</p><p>(OMG is actually working on this, and the effort is well underway, even to the level of MOF definitions, which I was very happy to learn)</p><p>The reasons can only be speculated upon, since most of the tool vendors were forced to do exactly that anyway. Language users (i.e. architects) need a &quot;proper&quot; metamodel, but that is much more so&nbsp;for tool builders. In fact I would think that the language designers need this as well because I cannot for the life of me imagine how I would go about working on the next version of the standard without a proper metamodel, accessible through a repository-based representation such as the one introduced here. But anyway.</p><p>Probably as a result of this, the language specification is inconsistent, ambiguous and contains several errors. This has improved somewhat in the latest 3.1 version. This article and especially the models will show these problems because the effort of creating the UML models of the standard made these problems explicit.</p><p>The goal of this article is to represent the ArchiMate metamodel as published by the Open Group in a slightly improved format, using &quot;correct&quot; UML. Doing that enabled me to:</p><ol><li>create (better) UML profiles for use in tools (using an XMI version of the metamodel)</li><li>create much more usable documentation of the standard itself: <ol><li>clickable ArchiMate concepts, linking to the specification of that concept. For an example, please visit the model, for example the <a href="https://www.reflektis.com/repos/archimate-3.0.1/index.html?guid=6CA0B403-69F2-462b-B260-A5D520A80955">Business Service</a> concept)</li><li>diagrams with all defined/allowed relations of a specific ArchiMate concept (for an example, please visit the model, for example the <a href="https://www.reflektis.com/repos/archimate-3.0.1/index.html?guid=2CA497F2-7490-4695-AE71-11675D758195">Artefact</a> concept). The standard itself for example provides a table with all allowed relations, containing several errors which are hoped to be corrected soon.</li></ol></li><li>create a &quot;one-pager&quot; of the entire metamodel (something Gerben Wierda also did for his book Mastering ArchiMate, on the 2.1 and 3.0.1 version of ArchiMate) or those parts you want to focus on</li><li>extend the metamodel for specific customers</li><li>and of course, for this article, detect and document problems (errors, ambiguities or vagueness) in the standard as published ?</li></ol><p>In fact I realised when creating this model that for me as an architect this is an infinitely more usable version of the specification than a stupid thing like a book with pictures.</p><p>The metamodel can also be downloaded in XMI format, for you to use in your tool of choice:</p><ul><li>ArchiMate 3.1.xmi (currently under development)</li></ul><h3>About ArchiMate&nbsp;metamodels</h3><p>The metamodel for the 3.1 version of the standard is exported in HTML format. To view the metamodel, please use these links:</p><ul><li>ArchiMate 3.1 metamodel (currently under development)</li></ul><p>As said earlier, the UML this article refers to should be &quot;correct&quot;. Please let me know if you notice issues. However, a few remarks should be kept in mind:</p><ol><li>The use of colours is in line with the use in the standard. In 2.1 colours were used, in the 3.x standard shades of grey were used. We tried to comply to the colouring scheme in the standard.</li><li>Attempts have been made to create diagrams that are in line (mainly the layout) with those in the standard as much as possible. The goal was not to improve ArchiMate, but to detect/repair some of its problems.</li><li>Multiplicity will be added in the future. <a href="http://pubs.opengroup.org/architecture/archimate2-doc/chap02.html#_ftnref1">As ArchiMate 2.1 states</a> (the 3.x standard is ominously silent on this…), most of the relations are zero or more (* in UML parlance) except where explicitly stated differently. Note that when ArchiMate talks about <em>cardinality</em>, UML (on the class level) talks about <em>multiplicity</em>.</li><li>The direction of a relation is still not clear. It is clear what it means in ArchiMate, and what it means in UML, but the semantics of direction in ArchiMate are different from those in UML. We stick&nbsp;to the ArchiMate semantics for now, but I think this disparity is one of the big problems in ArchiMate. In my view, direction is about dependencies, but that is not how ArchiMate sees it.</li><li>In this article, stereotypes (for relations or classes) have not been used. Obviously, if you want to create a UML profile for ArchiMate, this must be done.</li></ol><h2>The ArchiMate 3.1 metamodel</h2><p>Work is underway, please be patient.</p><h2>The ArchiMate 3.0.1 metamodel</h2><p>For the entire model, please visit&nbsp;<a href="https://www.reflektis.com/repos/archimate-3.0.1">ArchiMate 3.0.1 metamodel</a>.</p><div class="wp-block-image"><figure class="aligncenter size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/25B4D7A5-04F4-4ec6-8BEC-648DFD530570.png" alt="" class="wp-image-12277"/><figcaption>Top-Level Hierarchy : Logical Diagram</figcaption></figure></div>
<p>The metamodel for ArchiMate 3.0.1, from a language specification perspective, is an improvement over its predecessor. All concepts have now been defined in the model. The above diagram shows the top-level concepts, the most generic ones, this time also including the relationships. It almost looks like a real metamodel!</p><p>Of course in the standard these are just pictures, so my hope is you will find these models useful. If you do, please do not hesitate to like this page using the LinkedIn and Twitter buttons in the top right!</p><h2>List of detected issues</h2><p>Below is a summary of the issues that I have stumbled on in making the models. The chapter in the standard is provided so that you can compare what the standard says with my proposed changes. The diagram in my repository is also hyperlinked for your convenience.</p><p><span style="color:rgb(255, 0, 0);">The&nbsp;elements hyperlinks do not always work correctly (sorry, this is due to the way the tool generated the HTML report, I am working on correcting this).</span></p><h3><a id="3.0_issues"></a>ArchiMate 3.0.1 issues</h3><h4>&quot;Core Element&quot; and &quot;Element&quot;</h4><p>There is talk of &quot;Core Element&quot;, but it seems equivalent to what is also referred to as &quot;Element&quot;.</p><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap04.html%23%5FToc451757940">4.1: Behavior and Structure Elements</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=8EC646E0-4EAC-47e2-BA7D-ADAF633C623C">Behavior and Structure</a></li><li>For completeness I added the <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=5932C784-AA28-4e68-BB40-7EFC1496483A">Collaboration</a> concept, which is also an abstract class.</li><li>There is a problem in the standard with the abstract classes <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA67.htm">External Behavior Element</a> and <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA66.htm">External Active Structure Element</a>. These classes are nowhere explicitly specialised, for example a <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA48.htm">Business Service</a> should be an <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA67.htm">External Behavior Element</a>. I expect these diagrams to be added in the next revision of the standard.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap04.html%23%5FToc451757944">4.2: Specializations of Structure and Behavior Elements</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=D261A7F6-89A5-4c3f-851E-3ED3A66C728E">Specialisations of Core Elements</a></li><li>This diagram is not followed through with the specific subclasses of <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA92.htm">Process</a>, <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA70.htm">Function</a> and <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA76.htm">Interaction</a>. Although it would potentially introduce multiple inheritance, these subclasses should be added, for example <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA46.htm">Business Process</a> as a subclass of <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA92.htm">Process</a>. Note that multiple inheritance in metamodels is not a problem, but should be avoided in &quot;instance&quot; models. The Business Process/Function/Interaction element is completely equivalent to Business Internal Behavior Element.</li></ol><h4><a href="http://pubs.opengroup.org/architecture/archimate3-doc/chap05.html#_Toc451757951">5: Relationships</a></h4><p><b>Notes:</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=950F96D2-11FE-4421-9F98-DFDB2A729642">Relationships</a></li><li>The associations between <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA95.htm">Relationship</a> and <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA63.htm">Element</a> show the labels as UML. In the ArchiMate standard (p. 22) these are shown on the other end.</li><li>ArchiMate does not specify the multiplicity on the other side (related from). We show that an Element can participate in zero or more relations.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap08.html%23%5FToc451758004">8.2: Active Structure Elements</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=589CDB01-1D1C-4663-903D-E804D4C16F52">Business Internal Active Structure Elements</a></li><li>The standard does not explicitly specify a <strong>generalisation</strong> relation between <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA42.htm">Business Internal Active Structure Element</a> and <a href="https://www.reflektis.com/repos/archimate-3.0/EARoot/EA77.htm">Internal Active Structure Element</a>. That seems to be an error.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap08.html%23%5FToc451758010">8.3: Behavior Elements</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=9F54B11F-21D7-4f14-AE20-7594FE188427">Business Internal Behaviour Elements</a></li><li>One expects this diagram to repeat in the Application and Technology layers. It does not.</li><li>I have added the <strong>generalisation</strong> to <a href="%24element%3A%2F%2F%257B4E7EB1E2-5809-4890-9426-1CC97A72AD9E%257D">Internal Behavior Element</a>, which seems to be lacking from the standard.</li><li>There is a consistency problem with <a href="%24diagram%3A%2F%2F%257BD261A7F6-89A5-4c3f-851E-3ED3A66C728E%257D">Specialisations of Core Elements</a> diagram. This problem needs to be resolved!</li></ol><h4>Application Function/Process/Interaction</h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=5932C784-AA28-4e68-BB40-7EFC1496483A">Application Function/Process/Interaction</a></li><li>This diagram has been added to model the not-really-existing <a href="%24element%3A%2F%2F%257B812CCC6A-2B75-462b-A511-6D11E09F26C3%257D">Application Process/Function/Interaction</a> concept properly. As was mentioned with the <a href="%24element%3A%2F%2F%257BFE2A6D20-30CA-42a3-A649-161CE933DA5E%257D">Business Internal Behavior</a> concept, this concept should be named &quot;Application Internal Behavior&quot; for consistency.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap10.html%23%5FToc451758045">10.1: Technology Layer Metamodel</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=5932C784-AA28-4e68-BB40-7EFC1496483A">Technology</a></li><li>As is noted with the concept, the <a href="%24element%3A%2F%2F%257B768084AD-271B-4506-BB2B-472DA1ECBE6B%257D">Technology Process/Function/Interaction</a> should be named &quot;Technology Internal Behavior&quot;.</li></ol><h4>Technology Internal Behavior</h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=5932C784-AA28-4e68-BB40-7EFC1496483A">Technology Internal Behaviour</a></li><li>This diagram does not occur in the standard. Nowhere in the standard metamodel diagrams a Technology Function, Process or Interaction is shown, but its shared <strong>generalisation</strong>, incorrectly named <a href="%24element%3A%2F%2F%257B768084AD-271B-4506-BB2B-472DA1ECBE6B%257D">Technology Process/Function/Interaction</a> is.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap11.html%23%5FToc451758068">11.1: Physical Elements Metamodel</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=5932C784-AA28-4e68-BB40-7EFC1496483A">Physical</a></li><li>In the standard (p. 91) the <strong>assignment</strong> between <a href="%24element%3A%2F%2F%257BC191B822-FF38-46d6-89E4-38BDCBE4F71C%257D">Equipment</a> and <a href="%24element%3A%2F%2F%257B768084AD-271B-4506-BB2B-472DA1ECBE6B%257D">Technology Process/Function/Interaction</a> is shown explicitly. However since this relation is implied by the already existing one between <a href="%24element%3A%2F%2F%257B1E1E4B14-C113-4496-9C9C-B0EF9ADEF32D%257D">Node</a> and Technology Process/Function/Interaction in the <a href="%24diagram%3A%2F%2F%257BE38E18C4-C1D5-47fd-90AE-A4FFB216513F%257D">Technology diagram</a> and thus inherited by Equipment, it is omitted here.</li><li>The <strong>accesses</strong> relation between Technology Process/Function/Interaction as shown in the standard (p. 91) is also omitted here, since it is inherited from the same relation between Technology Object and Technology Process/Function/Interaction in the diagram <a href="%24diagram%3A%2F%2F%257BE38E18C4-C1D5-47fd-90AE-A4FFB216513F%257D">Technology</a>.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap12.html%23%5FToc451758079">12.1: Alignment of Business Layer and lower layers</a></h4><p><b>Notes</b></p><p>Quite a few problems with this metamodel in the standard (p. 96).</p><ol><li>Diagrams Relationships between Business Layer and Application Layer Elements, and <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=5932C784-AA28-4e68-BB40-7EFC1496483A">Relationships between Business Layer and Technology Layer Elements</a></li><li>The Business Actor/Role element should be the <a href="%24element%3A%2F%2F%257BAE79051E-BFC2-47f6-B443-FEEF05B023CB%257D">Business Internal Active Structure Element</a> since also a <a href="%24element%3A%2F%2F%257B5CF8FE2C-2013-4c98-B936-A04E2A95D70F%257D">Business Collaboration</a> can use an <a href="%24element%3A%2F%2F%257BA30074F5-58AF-46c1-B33B-D1361388F896%257D">Application Service</a>. We have put the correct element in this diagram.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap13.html%23%5FToc451758083">13.1: Implementation and Migration Elements Metamodel</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=5932C784-AA28-4e68-BB40-7EFC1496483A">Implementation and Migration</a></li><li>The <strong>accesses</strong> relation between <a href="%24element%3A%2F%2F%257BC4CC6048-5053-48e5-A307-CCF02BE06C6C%257D">Implementation Event</a> and <a href="%24element%3A%2F%2F%257B7A48ECD8-0B5D-4db5-8B4C-6AEB3517670F%257D">Deliverable</a> as shown in the standard (p. 99) is omitted here since it is inherited from the one between <a href="%24element%3A%2F%2F%257BE194505F-EBAC-4137-ABC6-B72752BBB6F6%257D">Event</a> and <a href="%24element%3A%2F%2F%257B88122AD7-7F3C-4ef2-A1EA-D995B982CD03%257D">Passive Structure Element</a> as shown in this diagram.</li><li>Same thing for all the <strong>trigger/flows</strong> between <a href="%24element%3A%2F%2F%257BE194505F-EBAC-4137-ABC6-B72752BBB6F6%257D">Event</a> subclasses.</li></ol><h4><a href="inet%3A%2F%2Fhttp%3A%2F%2Fpubs.opengroup.org%2Farchitecture%2Farchimate3-doc%2Fchap13.html%23%5FToc451758093">13.4: Cross-Aspect Dependencies</a></h4><p><b>Notes</b></p><ol><li>Diagram <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=3C5A2FEF-99BA-44d6-A035-BCCC81F547CD">Relationships of Motivation Elements with Implementation and Migration Elements</a></li><li>Because of the <strong>realization</strong> relationship between <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=B354B8CF-3ACE-40f9-9505-3D31B99980AC">Composite Element</a> and <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=7A48ECD8-0B5D-4db5-8B4C-6AEB3517670F">Deliverable</a> the same kind of relation is superfluous in the other diagram between <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=7A48ECD8-0B5D-4db5-8B4C-6AEB3517670F">Deliverable</a> and <a href="https://www.reflektis.com/repos/archimate-3.0/index.html?guid=D1D2B0E4-B88E-43eb-BD11-92E365FD129C">Plateau</a>.</li></ol></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Tue, 03 Jan 2017 21:31:07 +0100</pubDate></item><item><title><![CDATA[SmallSim]]></title><link>https://www.reflektis.nl/blogs/post/smallsim</link><description><![CDATA[SmallSim Logo SmallSim is a&nbsp;business process simulation&nbsp;tool. It&nbsp;helps building complex business models, and then execute these models. ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_hTad8dKDTpqjhST1JfRmLw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_Xzm698gqTfGy4h6p_tDgTQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_r6mXAPzfSNOVK4lj7jhCTw" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_EdmHFq4PTpKQ2CK_ilUm2g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><div class="wp-block-image"><figure class="alignright size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/sms220.png" alt="" class="wp-image-12157"/><figcaption>SmallSim Logo</figcaption></figure></div>
<p class="has-drop-cap">SmallSim is a&nbsp;business process simulation&nbsp;tool. It&nbsp;helps building complex business models, and then execute these models. With SmallSim you create <em>executable models.</em> The important differentiating characteristic of SmallSim is that SmallSim is not only executable, but it executes inside a full-fledged simulation environment.</p><p>These business models can be the centre of a business-centred software architecture for enterprise systems (also called the Business Domain or Domain Component).</p><p>Using these models you can keep these systems aligned with the business while the technology with which these systems are built changes. Now this technology is J2EE, last year it was Cobol, and next year it will be whatever. As you can read in my article on <a href="https://blog.reflektis.nl/business-centred-architecturen-i/">Business-Centred Architectures</a>&nbsp;there are many advantages in using a business-centred architecture. The base characteristic of such architectures is the strict uncoupling of the business domain components with technological components. This results in a robust and scalable architecture.</p><p>The following description is mostly based on a version of SmallSim of several years ago. We are working on a new version which will be multiplatform again (SmallSim became Windows-only for usability reasons that seemed valid at the time) and has a vastly improved look and feel. However, time and money constraints make it impossible to predict when this version will be available.</p><p>SmallSim originated from a research project on the University of Groningen, The Netherlands, at the Faculty of Management Science. It was also used in the curriculum for business modelling and simulation for a few years.</p><figure class="wp-block-image alignnone size-full wp-image-7101"><img src="https://blog.reflektis.nl/wp-content/uploads/smallsim_main-1.png" alt="" class="wp-image-12307"/><figcaption>SmallSim Main Window</figcaption></figure><h2>Key features of SmallSim</h2><ul class="check"><li>SmallSim is a generic simulation environment for building simulation models</li><li>SmallSim offers improved and scalable modelling possibilities due to the consistent use of object-oriented&nbsp;modelling</li><li>SmallSim offers full stochastic features such as probability distributions</li><li>SmallSim enables you to build complex models quickly and simply, many times faster than traditional simulation solutions!</li><li>SmallSim was originally developed in close co-operation with the Faculty of Management of the University of Groningen, the Netherlands, with the main champion dr. A.C.M.A. (Ap) Rutges who used the tool with his lectures on business modelling.</li></ul><h2>Credits</h2><ul class="zebra"><li>Dr. A.C.M.A. Rutges, from the Faculty of Management, University of Groningen</li><li><a title="Bart Vijfschaft on LinkedIn" href="http://nl.linkedin.com/in/bartvijfschaft" target="_blank">Bart Vijfschaft</a> for some statistical components of the tool</li><li>Students of the course BMT-7 (in 1995-1996), who were (mis-)used for testing the product extensively!</li></ul><hr class="wp-block-separator system-pagebreak"/><p class="none">SmallSim's main strength comes from the fact that it models problem domains in an object-oriented way. In this respect it differs from the main simulation modelling tools such as <a title="ARIS Express" href="http://www.ariscommunity.com/aris-express">Aris</a>,&nbsp;<a href="http://www.arenasimulation.com/">®Arena</a> or BP$im™ and Taylor II. These tools take a <em>process-oriented</em> approach, which also is the approach taken by current&nbsp;standards such as <a title="BPMN Information Home" href="http://www.bpmn.org">BPMN</a> (Business Process Model and Notation). The best thing to compare SmallSim with is not with these tools and standards, but with object oriented modelling languages such as <a title="Object Management Group - UML" href="http://www.uml.org">UML</a>. The difference is however that:</p><ul><li>SmallSim models are <strong>executable</strong> with full stochastic capabilities - we prefer to say they are <strong>simulatable</strong></li><li>execution can be monitored to provide rich statistical information and analysis</li><li>strategies can be evaluated in advanced scenario factories</li></ul><p class="none">Many process-centric tools, for example for workflow modelling, offer simulation-like facilities. In fact we ourselves built such a modelling tool, <a href="https://blog.reflektis.nl/logsim/">LogSim</a>. They enable you to build “virtual” organisations and run the simulation to see how well your design holds under “realistic” circumstances. Well, these circumstances are actually not so realistic, as any simulation expert will be able to tell you. Realistic simulations entail full stochastic behaviour, taking into consideration many different kinds of error-handling (for example to allow for run-in periods to dampen fluctuations in start-up situations). It is possible to achieve comparable results with well-crafted simulation tools. Our extensive experience with advanced simulations has shown us as much. But this can only be achieved by experienced simulation experts, and the resulting models often are complex and very hard to modify or tailor to changing conditions. The resulting models are also hard to explain to business experts.</p><p class="none">Another Dutch company, <a href="http://www.bwise.com" target="_blank">BWise</a>, attempted to develop tools along comparable lines. The difference, again, lies in the emphasis reflektis puts on modelling from an object-oriented and component-based perspective, compared to which the half-hearted but probably well-meant attempts of BWise fall short in many respects.</p><p class="none">In SmallSim, you define <em>object types</em>. For example in modelling a mail office, an object type or class could be a <span style="font-family:&quot;courier new&quot;, courier;">Customer Teller</span> (see illustration).</p><figure class="wp-block-image alignnone size-full wp-image-7102"><img src="https://blog.reflektis.nl/wp-content/uploads/smalls3-1.png" alt="" class="wp-image-12308"/><figcaption>Customer Teller</figcaption></figure><p>The class <span style="font-family:&quot;courier new&quot;, courier;">Teller</span> contains the description of its instances, objects that are sometimes created and destroyed during the run of a simulation, or live during the entire simulation. Three aspects of objects can be specified: Arrivals, Attributes and Tasks.</p><h3 class="separator">Arrivals</h3><p class="none">An Arrival is a specification of the lifetime of the object: is it always available? Or is it entering the simulation, and if so, with which arrival schedule?&nbsp;Stochastic arrival times can be specified here. You can also specify arrivals that are drawn from real world measurements.</p><h3 class="separator">Attributes</h3><p class="none">Attributes are slots containing values, which can be numbers, strings, dates and so on. These attributes are available during the lifetime of the object, and can be used in the behaviour specification, described in Tasks. They remember the state of the actual object, the instance that is living inside the simulated business world. For example it could be the age of a product, used to determine the chance of breakdown.</p><h3 class="separator">Tasks</h3><p class="none">A Task is the actual <em>behaviour</em> of the object, as you can see in the illustration above. It contains a list of activities, which will be sequentially executed by the object during its lifetime. The list might contain one or more loops, which implies that the object will remain executing those tasks while the loop condition is true (potentially forever), or jumps (analogous to a goto).</p><p class="none">There is a quite extensive list of standard activities to choose from, but SmallSim is completely extendible. You are free to specify <em>custom activities</em>, which are written using the powerful Smalltalk language. In the code for these custom activities you have access to the attributes and other activities of the object, as well as the direct collaborators of the object, i.e. those simulation elements that are connected with it on the canvas. In fact this creates infinite possibilities for creating models that can be as complex as you want them to be, and since the Smalltalk scripting language is exceptionally suited for describing complex business behaviour (Smalltalk has sometimes been designated as &quot;the DSL of DSL's&quot;) you can do this in the most simple way.</p><h3 class="separator">Comment</h3><p>A Comment contains a textual description that can be used as documentation of the object.</p><p>These classes are placed on a <strong>canvas</strong>, as you can see in the first illustration. After placing these basic building blocks on the SmallSim canvas, behaviour and properties are defined for each class object, as well as relations between the elements. This is done in exactly the same way as object-oriented modelling is done. Several approaches can be chosen, we prefer the <a href="http://web.archive.org/web/20050313085708/http%3A//www.wirfs-brock.com%3A80/pages/resources.html">Responsibility-Driven Design </a>Approach (Rebecca Wirfs-Brock) combined with CRC sessions to model the behaviour of each object. In these sessions we can build the model live, with immediate feedback to the business experts, to validate the model and play with it.</p><p class="none">Definition of behaviour in SmallSim is characterised by the addition of stochastic variables. Methods or operations are specified with a certain duration. In a method many actions can be specified, such as:</p><ol><li>Acquire, release and consume fixed and shared resources</li><li>Wait for a specified duration (hold)</li><li>Wait for or signal specified conditions that can be shared among many objects (i.e. a signal)</li><li>Specify certain sections of tasks inside a loop</li><li>Specify any action using scripts with many templates to choose from, or write your own script</li><li>Create new objects or resources</li><li>Stop the simulation</li></ol><p class="none">Below you can see the tasks list of a Customer object. The loop element of the list is selected. Not only can you specify behaviour of active objects, you can use attributes as information needed for an objects´ behaviour. For example when an objects´ age has reached a certain amount, another path of action is taken (inside a loop or switch).</p><figure class="wp-block-image alignnone size-full wp-image-7103"><img src="https://blog.reflektis.nl/wp-content/uploads/smalls4-1.png" alt="" class="wp-image-12310"/><figcaption>Customer Simulation Object</figcaption></figure><p class="none">An important aspect of active objects is their <em>arrival</em>. Arrivals of objects are specified according to stochastic patterns. Arrivals can be stochastic, but also fixed, or upon other events. Each active object can create other active objects (or schedule them to arrive in the simulation at a specified time).</p><p class="none">With these predefined behaviours you can model almost any problem, but the powerful scripting language enables you to write your own scripts for behaviour of any complexity. Since the scripting language is Smalltalk, the full functionality of a full fledged programming language is at your disposal.</p><h2 class="none">Resources</h2><p class="none">SmallSim distinguishes between <em>active</em> objects (of which a property dialog is shown above) and <em>passive</em> objects. Passive objects are used as <em>resources</em> in the simulation. Resources are used to synchronise behaviour of active objects. The active objects compete for access to the resources, and the resources specify whether concurrent access is allowed and how (waiting line behaviour).</p><h2 class="none">Run Configurations</h2><p class="none">After specifying the structure of your problem domain, the next thing to specify is the <em>run configuration</em>. This entails setting up special runs in batch- or interactive mode, and specifying what information you want to gather. After running the simulation, you can inspect the gathered information, for statistical analysis, and to further fine-tune your simulation runs.</p><h2>Probability Distributions</h2><p class="none">SmallSim supports all relevant&nbsp;probability distributions, all of which built on industry-strength random number generators (a shortcoming of many comparable tools, because they often re-use random numbers generated from the standard programming language libraries in C# or Java). The following distributions are available:</p><ol><li>Uniform</li><li>Exponential</li><li><em>m</em>-Erlang</li><li>Gamma</li><li>Weibull</li><li>Normal</li><li>Lognormal</li><li>Beta</li><li>Pearson Type V and VI</li><li>Triangular</li><li>Empirical Distributions (from external datasets).</li><li>Bernoulli</li><li>Discrete Uniform</li><li>Binomial</li><li>Geometric</li><li>Negative Binomial</li><li>Poisson</li></ol></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 14 Dec 2015 20:09:22 +0100</pubDate></item><item><title><![CDATA[LogSim]]></title><link>https://www.reflektis.nl/blogs/post/logsim</link><description><![CDATA[Introducing LogSim Note: LogSim is not to be confused with the British company Logistics Simulation Ltd., or with a log-making simulation program from ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_WthoYUftTYiAtHBeFE5BQg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_I9WMZIofSCiqkSDstuRZcA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_CYZjfMQdTfaU5qtMo7vcgQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_lzvA48GoTfGJ_lJG2le7TA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><h3 id="introducing-logsim">Introducing LogSim</h3><p class="has-cyan-bluish-gray-color has-text-color has-small-font-size">Note: LogSim is not to be confused with the British company Logistics Simulation Ltd., or with a log-making simulation program from HALCO Software.</p><p class="has-drop-cap">LogSim is a process modelling and mining tool. It aims to help in creating <em>executable</em> business process models. LogSim is a business process modelling tool with integrated, full-fledged simulation facilities. In LogSim you not only build business models, but you <em>execute</em> them, you let them run while the software gathers all kinds of metrics to help you statistically evaluate your models for effectiveness, cost, speed etc. LogSim helps in detecting bottlenecks in your current solution so that you can improve your business performance.</p><p>Business process models are important in many contexts. They are used for optimising businesses, as tools for reaching a more mature level, as input for creating&nbsp;SOA’s, etc. Most service oriented platforms, such as <a href="http://www.tibco.com/?gclid">Tibco</a>, <a href="http://www.cordys.com/">Cordys</a>, <a href="http://www.sap.com/">SAP</a> and <a href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation">WCF</a> or <a href="http://www.microsoft.com/en-us/biztalk/">BizTalk</a> require some kind of&nbsp;process models, and they usually offer their own environment in which you can specify them. However, those environments do not help in actually measuring the performance of your solution. Before you can do that with any level of accuracy, you need to implement the process, run it for a minimum amount of time, and gather metrics. With LogSim you don’t need to do&nbsp;that. With LogSim you can build your models, play with them, and when you are satisfied your solution can perform according to your requirements, you can implement them on your platform of choice.</p><p>Currently LogSim is a proof-of-concept. The product does not offer functionality you might wish, such as export to <a href="http://en.wikipedia.org/wiki/Business_Process_Execution_Language">BPEL</a>. Also conformance to <a href="http://www.omg.org/spec/BPMN/2.0/">BPMN 2.0</a> is not fleshed out yet, although it is on the roadmap for version 4. It still is a one-man project so our resources are (yes, we are looking for funding) limited. However we believe we already offer more, especially in creating high-quality process models, than others, so we invite you to give LogSim a try.</p><a href="https://www.reflektis.training/embedcoursewidget?layout=type1&amp;fontColor=%23FFFFFF&amp;buttonText=View%20Course&amp;courseId=13995000000181023&amp;buttonColor=%23FA7B00" target="_blank">https://www.reflektis.training/embedcoursewidget?layout=type1&amp;fontColor=%23FFFFFF&amp;buttonText=View%20Course&amp;courseId=13995000000181023&amp;buttonColor=%23FA7B00</a><h3 id="history">History</h3><p>LogSim originated from a research project that took place in 1992-94 on the University of Groningen, The Netherlands, at the Faculty of Management Science. It was a collaborative effort with Moret, Ernst &amp; Young Management Consultants, that&nbsp;wanted to provide their clients with a tool that enabled them to model their business processes. For this they had developed a modelling language called <a href="#LMN"><em>Logistic Model and Notation</em> (LMN)</a>, but they had envisioned that “just” making models and pictures was not enough: to build robust business process models you need to be able to <em>run</em> them, using a robust simulation environment that supports scenario’s, stochastic events, statistical monitoring etc.</p><p>In the course of 1993 and 1994 various versions of LogSim were produced, showing a gradual increase in understanding the power of combining a modelling language (which already existed and was used extensively, although only as a notational tool) with a simulation environment (which also already existed in the form of <a href="http://localhost:8888/robvens/smallsim/">SmallSim</a>, a generic simulation environment that I developed). The 1.x versions were multiplatform and were actually developed on a Macintosh. The 2.x versions were Windows-specific for various reasons that seemed valid at the time.</p><p>In 2011 we rebooted the project, which resulted in LogSim 3 (a new version still using the original Logistic Model and Notation). We also started work on LogSim 4 (which does not use LMN anymore as the notation but a somewhat extended version of BPMN 2.0). These versions are again multiplatform and available on all supported platforms.</p><p>Currently the focus (as far as focus goes…) is on LogSim 3, so that we will flesh-out the simulation engine and statistical tooling before changing the notation.</p><h3 id="how-to-get-it">How to get it</h3><p>The software will be made available again soon.</p><h3 id="goals-of-logsim">Goals of LogSim</h3><p>LogSim wants to help in creating <em>realistic</em> models. Realistic models are models that reflect the actual complexity of real-world processes, in which stochastic events, uncertainty, waiting lines, in other words, <em>chaos</em>, make most models not optimal in practice.</p><p>Also LogSim wants to help the modellers in adapting models to reach goals like cost reductions and optimal efficiency. For this a model is not enough: you need to evaluate whether you are really choosing the correct strategies to reach those goals by playing with the different options and seeing the result of your decisions. Adapting your models should be as lightweight and simple a process as possible.</p><p>LMN (the modelling language used) was a remarkably prescient predecessor (10 years ahead!) of&nbsp;<a href="http://www.bpmn.org/" target="_blank" rel="noreferrer noopener">BPMN</a>&nbsp;(Business Process Model and Notation). Most of the building blocks of LMN can be mapped to BPMN elements very nicely, as we will explain below. But LogSim contains on top of these modelling facilities a complete and robust simulation environment. Using this environment you can actually&nbsp;run&nbsp;your processes, and validate them against realistic dynamic behaviour, such as waiting lines, stochastic arrivals etc. With LogSim you build&nbsp;executable business process models.</p><p>This is different from the executability BPMN offers, and the various vendor tools contained in the products mentioned earlier, such as Tibco. That is because of the high level of realism that is close to what you will encounter in the “real” world. <em>Executing</em> a BPMN model in a service bus or on a process automation platform is actually something completely different than <em>simulating</em> that model.</p><h3 id="logsim-4">LogSim 4</h3><p><em>Alpha version!</em></p><p>Work is in progress for version 3 and 4. While version 3 will still only support LMN, version 4 will use a somewhat extended version of the BPMN 2.0 notation and syntax in order to be more compliant to the standard as defined by the <a href="http://www.omg.org" target="_blank" rel="noreferrer noopener">OMG</a>. BPMN as such lacks a few essential elements to make it complete for simulation purposes, such as Waiting Lines, so we needed to find a solution for those issues that are as much in line with BPMN as possible.</p><p>The extensions that we deemed necessary for BPMN to be really simulatable are:</p><ol><li>Waiting Lines (there is no concept of queing in BPMN)</li><li>Stateful tokens (instead of the virtual placeholders in BPMN)</li><li>Stochastic distribution durations for sequence flows (instead of the instantaneous flow in BPMN)</li><li>Stochastic <a href="https://www.omg.org/dmn/">DMN</a> in Activities (and the connected Gateways)</li></ol><p>Probably some more will pop up in the test runs.</p><p>LogSim 4 will make it possible to build executable and <em>simulatable</em> BPMN models. Many environments and tools like <a href="https://www.bpsim.org/">BPSim</a> promise this, we know, but we believe we make a difference, because our approach is different. Simulation in LogSim is not an add-on to a modelling tool or language, but the modelling tool is built on top of a robust simulation environment, containing robust simulation features such as:</p><ol><li>run scenario building with bounded parameters</li><li>unattended runs and information gathering</li><li>industry-strength stochastic capabilities (probability distributions, random number generators)</li><li>run-in delays</li><li>and more!</li></ol><p>The same simulation engine was used in another tool we created earlier, <a href="https://blog.reflektis.nl/smallsim/">SmallSim</a>.</p><p>We hope to distribute the software free-of-charge again. Beta versions will be made available for those brave souls willing to participate in early reviews.</p><h3 id="logsim-3">LogSim 3</h3><p>We are currently mainly working on version 3. This is a new version of LogSim, however still using the original LMN for its language. We do this because we believe that the modelling language LMN (short for Logistic Model and Notation) still has many interesting features, and because at the moment our time-resources are very limited and bringing out this version can be done relatively fast, while the work for version 4 will take longer. Remember, LogSim is a spare-time, one-man project at the moment!</p><p>LogSim 3 is multiplatform and available on all supported platforms. In this case multiplatform really means what it says: it run bit-identical on Windows, Mac, Linux and many others. You can open and work on the same model on all those platforms.</p><p>LogSim 3 uses a business process modelling language called the <em>Logistic Model and Notation</em> (LMN). This language may be regarded as a predecessor (but in a way also as the next generation…!) of BPMN with some interesting features that made it especially suitable for simulating complex logistic processes. The main distinguishing feature is that LMN contains the concept of Waiting Lines, with full stochastic support.</p><p>The walkthrough below is using the&nbsp;LogSim 3 engine. The screens are produced on a Macintosh running Mac OS X, but LogSim 3 will run on all supported platforms, and will adopt the look-and-feel of the platform you use. The screen shots are already several years old, modern versions look somewhat better I assure you!</p><h4 id="workorder">Workorder</h4><p><em>Logistic Model and Notation</em>&nbsp;takes objects (defined with various properties) as central concepts, and models the flow of these objects through many stations or <a href="#transformator">Transformators</a> (see below) in a business.</p><p>These objects are called Workorders. In the real world these can be documents, actual products on which work is done (reflected by the changing attributes of the products during the flow), or abstract objects that you only use as placeholders for the process flow steps. The closest corresponding concept in BPMN is the <em>Token</em>, however there is a fundamental difference with BPMN in that in LMN a Workorder is stateful and can have an indefinite set of properties which can and will be modified during their processing in the execution flow, while in BPMN a token is stateless. And what is even more powerful: the modification of these properties is specified in stochastic terms as well!</p><h4 id="external-agent-and-event">External Agent and Event <img class="wp-image-12328" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/extinst256.png" alt=""/><img class="wp-image-12329" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/event256.png" alt=""/></h4><p>The objects (or work orders) flowing through the model are instantiated by External Agents, that send Events into the organisation we are modelling. These events effectively instantiate these objects, with default properties. This is similar to BPMN in that most processes are triggered from external pools by Message Flows. External Agents can also subscribe to receive Events from any element within the model, on certain specified moments.</p><figure class="wp-block-image aligncenter size-full" id="attachment_6933"><img src="https://blog.reflektis.nl/wp-content/uploads/event1.png" alt="" class="wp-image-11964"/><figcaption class="wp-element-caption">Event Actions</figcaption></figure><p>Objects (the Workorders) are created by Events. We can see here a specific kind of event called an <strong>Initial Event</strong> called <a href="http://www.swift.com/">SWIFT</a>-payment, creating objects every 25 minutes according to a stochastic distribution (in this case an exponential distribution).</p><figure class="wp-block-image aligncenter size-full" id="attachment_6935"><img src="https://blog.reflektis.nl/wp-content/uploads/event2.png" alt="" class="wp-image-11965"/><figcaption class="wp-element-caption">Event Attributes</figcaption></figure><p>The objects created by this Event have a set of characteristics, that you can see above. LogSim 3 supports 2 attributes, and an unlimited number of them (as long as the total of percentages is 100 percent of course). Each of these can optionally be assigned a due date, that is we specify that in order to comply with our business rules these objects should be processed after this period of time.</p><figure class="wp-block-image aligncenter size-full" id="attachment_6936"><img src="https://blog.reflektis.nl/wp-content/uploads/event3.png" alt="" class="wp-image-11966"/><figcaption class="wp-element-caption">Event Quantities</figcaption></figure><p>Finally we can specify how many objects or Workorders are created. Again, this quantity can be specified as a stochastic distribution. In this case just one, as a fixed quantity, is produced. But it could just as well have been any distribution quantity.</p><p>External Agents correspond to the <em>Triggers</em> of BPMN (usually in the form of Messsage Flows triggering a Message Start Event), originating from other parts of the process environment, called <em>(External) Pools</em> in BPMN.</p><h4 id="waiting-line">Waiting Line <img class="wp-image-12331" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/Waiting-Line.png" alt=""/></h4><p>These workorders are first dumped into the first Waiting Line, SWIFT-payment arrival in this case. Waiting Lines are interesting, and very important modelling constructs that are completely overlooked in BPMN. They represent the stochastic robustness of modelling in LogSim: it is precisely the stochastic aspect of reality that many modelling techniques fail to address properly, and which LogSim handles well. Waiting Lines do the trick.</p><p>BPMN explicitly chose to model only processes, and views waiting lines (or queues) as data structures. This is why there is no explicit way to model waiting lines in BPMN. The only way to “simulate” them is to create a specific <a href="http://www.processmodeling.info/posts/swimlane-lane-or-pool-learn-to-swim-first/">Pool</a> to dump the Workorders in, and processes that add to and take from the Pool, or use Data Stores to synchronise processes.</p><p>For the simulation facilities in LogSim Waiting Lines are very useful because they will gather any statistics you deem interesting, which helps a lot in determining the optimal process configuration.</p><figure class="wp-block-image aligncenter size-full" id="attachment_6944"><img src="https://blog.reflektis.nl/wp-content/uploads/waitingline.png" alt="" class="wp-image-12185"/><figcaption class="wp-element-caption">Waiting Line</figcaption></figure><p>In the Waiting Line shown here, there are no Workorders waiting, but since we have done a few&nbsp;runs many Workorders have passed through the waiting line. Click on the bar chart button and you will see a histogram of the period Workorders have been waiting inside the waiting line. We can also see that 168 Workorders have gone through this Waiting line:</p><figure class="wp-block-image aligncenter size-full" id="attachment_6945"><img src="https://blog.reflektis.nl/wp-content/uploads/waitingline2.png" alt="" class="wp-image-12317"/><figcaption class="wp-element-caption">Waiting Line Histogram</figcaption></figure><p>This information can be useful in determining whether your business process is optimal or not.</p><h4 id="transformator">Transformator <img class="wp-image-12332" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/transformator256.png" alt=""/></h4><p>Each Transformator is a metaphor of a <em>workplace</em>, where one or more Transformers (think of Transformers as your work force, active agents such as people, departments or machines) work on these objects. This work is modelled as changing one or more of the object’s properties, as explained above. This is an extremely powerful feature, and the most distinguishing one of LogSim, which significantly exceeds the possibilities in BPMN.</p><p>Transformators correspond to the <em>Activities</em> of BPMN.</p><figure class="wp-block-image aligncenter size-full" id="attachment_6946"><img src="https://blog.reflektis.nl/wp-content/uploads/LogSim02.png" alt="" class="wp-image-12052"/><figcaption class="wp-element-caption">Transformator</figcaption></figure><p>A Transformator&nbsp;is a certain activity or work on an object during a specified time interval, here a Uniform stochastic distribution between 0.3 and 0.6 minutes. Time spent in an Activity in BPMN cannot be specified.</p><p>During the work in this specific example no attributes are modified. However, these could be added to the list of transformations under “Actions”. Objects can have any number of basic scalar attributes, such as Strings, Numbers or Dates.</p><p>The actual work is not done by the <strong>Transformators</strong>, but by <strong>Transformers</strong>. This is analogous to the resources or capacity of an organisation. An Organisation (the containing entity in which the business processes are run) defines any number of them.&nbsp;These Transformers, or the work force, can be persons or other actors or roles such as computers or machines. They are allocated to one or more Transformators using a time schedule with priorities. For example, a desk employee is allocated to the front office during work hours with a priority of 60%, but to a manager with a priority of 70%, which implies that when the manager needs the employee, he or she is forced to stop working on front-office tasks. The activities performed by the Transformers (the workers) can be monitored and statistically analysed, in order to be able to make statements about the efficiency of a process scenario.</p><p>The next illustration shows the list of Transformers of an Organisation. The selected Transformer named “Central Computer 1” is allocated to two Transformators, “Receive SWIFT-payment” and “Book on VV-account”. This is done by selecting from a drop down list of currently defined Transformers (the blue rectangles in the model).</p><figure class="wp-block-image aligncenter size-full" id="attachment_6947"><img src="https://blog.reflektis.nl/wp-content/uploads/LogSim03.png" alt="" class="wp-image-12053"/><figcaption class="wp-element-caption">Transformers</figcaption></figure><p>Properties window for the workers in the model. This shows the list of workers, as well as the list of scheduled transformations.</p><h4 id="logistic-regulator">Logistic Regulator</h4><p>What makes LogSim special, and able to closely resemble the complex reality you want to model, is the fact that you can specify special stochastic flow controllers, called Logistic Regulators. There are four kinds:</p><ul><li><strong>Switch</strong>: switching on certain conditions (effectively branching the flow, or routing it)</li><li><strong>Splits</strong>: splitting objects to enable object copies to go through a different flow</li><li><strong>Joins</strong>: joining objects at specified points in the flow</li><li><strong>Timer</strong>: switching on time</li></ul><p>These components correspond almost one-to-one to the various&nbsp;<em>Gateways</em> in BPMN with some extra functionality:</p><figure class="wp-block-image aligncenter size-full" id="attachment_6948"><img src="https://blog.reflektis.nl/wp-content/uploads/LogSim04.png" alt="" class="wp-image-12054"/><figcaption class="wp-element-caption">Switch</figcaption></figure><p>Above you can see a Logistic Regulator, here a Switch, which routes objects (or work orders) based on a stochastic distribution. When the draw (similar to throwing a dice) from the distribution indicates success the object or Workorder is routed to the node named “prepare, relay”. A Switch corresponds to the combination of an <em>XOR gateway</em> in BPMN, and a previous <em>Decision Task</em>, because the Switch actually decides about the gate that is activated. Also the Data-based behaviour in BPMN is different: there the Gateway routes based on information created and provided in the previous Activity (actually the BPMN standard says &quot;any data known to the Process Instance&quot;). Here the Switch routes based on either properties of the Workorder, or on a probability. This makes it much easier for example to model failure incidents that occur statistically.</p><p>The flow of objects is continuously monitored, which enables you to analyse statistically what happens. Running different models can be used as a simple scenario analysis.</p><p>Below you can see an example of a finished model, modelling international payments through SWIFT.</p><figure class="wp-block-image aligncenter size-full" id="attachment_6949"><img src="https://blog.reflektis.nl/wp-content/uploads/LogSim01.png" alt="" class="wp-image-12051"/><figcaption class="wp-element-caption">Example LogSim Model</figcaption></figure><h4 id="splits-and-joins">Splits and Joins <img class="wp-image-12335" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/split256.png" alt=""/><img class="wp-image-12336" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/join256.png" alt=""/></h4><p>The application window showing a completed logistic model from which the previous illustrations are generated. The triangles are other flow controllers, called Splits, which effectively split the flow of control. Usually these Splits are later combined in controllers called Joins.&nbsp;The Join effectively combines objects into one new object, while keeping the accumulated flow information about the original objects. No information is lost.</p><p>Splits and Joins correspond closely to the concepts of <em>Parallel Gateway</em>, and <em>AND Gateway</em> in BPMN.</p><h4 id="timer">Timer <img class="wp-image-12334" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/timer256.png" alt=""/></h4><p>A LMN concept that has not been discussed so far is a Timer. This is a special Logistic Regulator that does not switch on attributes or probability distributions, but on time. For example, in weekends a support request is handled in a different way.</p><hr class="wp-block-separator has-alpha-channel-opacity"/><p>Click on the thumbnail below to see a finished model of a business process, in this case the processing of foreign bank SWIFT payments to a Dutch bank.</p><figure class="wp-block-image size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/logsim5_lightbox.gif" alt="" class="wp-image-12321"/><figcaption class="wp-element-caption">Complete LMN model of SWIFT payments</figcaption></figure><h2 id="lmn-elements">LMN Elements</h2><ul><li><img src="https://blog.reflektis.nl/wp-content/uploads/extinst.gif" style="width:32px;" class="wp-image-11967" alt=""/> External object: Objects external to the main process (external pools). Corresponds to external (black box) pools in BPMN.</li><li><img class="wp-image-12184" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/waitingline.gif" alt=""/> Waiting Line: Queues for stateful tokens, from which Transformators take their next job. No corresponding element in BPMN (unfortunately!).</li><li><img class="wp-image-12169" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/transformator.gif" alt=""/> Transformators: The workplace, where Transformers do their thing. Weak correspondence with BPMN Lanes, although the concept of Transformers in LMN is closer.</li><li><img class="wp-image-12035" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/join.gif" alt=""/> Join: A Logistic Regulator merging objects from several workflows Closely corresponds to a merging gateway (both Parallel and OR).</li><li><img src="https://blog.reflektis.nl/wp-content/uploads/split.gif" class="wp-image-12159" style="width:32px;" alt=""/> Split: A Logistic Regulator splitting objects across several workflows. Closely corresponds to a splitting Parallel or OR Gateway in BPMN.</li><li><img class="wp-image-12161" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/switch.gif" alt=""/> Switch: A Logistic Regulator containing logic to decide how to route objects. Corresponds to a combination of a Decision Task and an XOR Gateway in BPMN.</li><li><img class="wp-image-12188" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/workflow.gif" alt=""/> Workflow: The route taken by objects. Corresponds to a Sequence Flow in BPMN, with some additional properties such as latency (stochastically defined).</li><li><img class="wp-image-12323" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/Event.png" alt=""/> Event: Message sent out to external objects. Corresponds to a Message Flow in BPMN, with the constraint that this is only for messages out of the main pool to an external pool.</li><li><img class="wp-image-12324" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/Message.png" alt=""/> Message: Message sent in from external objects. Corresponds to a Message Flow in BPMN, with the constraint that this is only for messages from an external pool to the main pool.</li><li><img class="wp-image-12325" style="width:32px;" src="https://blog.reflektis.nl/wp-content/uploads/Timer.png" alt=""/> Timer: A Logistic Regulator for routing based on time. Decides which route to switch to based on time. Corresponds to an intermediate timer event in BPMN.</li></ul><h2 id="random-number-generation">Random number generation</h2><figure class="wp-block-image aligncenter size-full" id="attachment_6951"><img src="https://blog.reflektis.nl/wp-content/uploads/LogSim05.png" alt="" class="wp-image-12326"/><figcaption class="wp-element-caption">Random generator</figcaption></figure><p>Every stochastic aspect in the system is controlled by high quality random number generators. Both the random number generators as the stochastic distributions are built using the latest scientific research in that area.</p><p>You use the random generator to specify which one you want to use for a specific stochastic process. Several algorithms are available, and you can also provide your own file with “real” random numbers, or numbers obtained from event logs.</p><p>Random generators are the input for the broad spectrum of stochastic distributions that control the real events in the model:</p><h2 id="overview-of-stochastic-distributions-in-lmn">Overview of stochastic distributions in LMN</h2><ul><li><em>Bernoulli</em>: A model for the set of possible outcomes of any single experiment that asks a yes–no question This distribution is used to model a set of yes/no decisions, in the case that each decision is completely independent of the previous one. The Binomial distribution is a special case of the Bernoulli, for a set of 1.</li><li><em>Binomial</em>: A model for a single yes/no decision A decision needs to be made, usually a succes/failure experiment. A series of such experiments would result in a Bernoulli distribution.</li><li><em>Exponential</em>: The amount of time until some specific event occurs The Exponential distribution or the Gamma distribution is used to predict the wait time until future events occur. For example: The time between arrivals at an airport or train station. Or the amount of time until an equipment failure. Or even the amount of time until the next earthquake. The difference between the gamma distribution and exponential distribution is that the <strong>exponential distribution</strong> predicts the wait time until the first event. In contrast, the <strong>gamma distribution</strong> indicates the wait time until the k<sup>th</sup> event.</li><li><em>Fixed</em>: Not really a distribution! – it is a fixed value The same value is returned each time a sample is drawn from the distribution.</li><li><em>Gamma</em>: The wait time until the kth event Rarely used directly but it is an important distribution because it is used to generate other distributions that have much more use (e.g. Beta, Pearson etc). Closely resembles Weibull, which is often a better choice because it is much faster.</li><li><em>MErlang</em>:</li><li><em>Normal</em>:</li><li><em>Poisson</em>:</li><li><em>Triangular</em>:</li><li><em>Truncated Normal</em>:</li><li><em>Uniform</em>:</li><li><em>Weibull</em>:</li><li>Any custom distribution: LogSim allows you to specify any custom distribution, or import a set of variables, for example collected from real-world observations</li></ul><p>LogSim has originally been developed in close cooperation with Ernst &amp; Young Management Consultants. The original (that is, before we started working on the tool) <em>Logistic Model and Notation</em> (LMN)&nbsp;is published by the project members from Ernst &amp; Young, as far as I know only available in Dutch:</p><ul><li>Drs. N.A. Brand, ing. J.R.P. van der Kolk: <em>Werkstroomanalyse en -ontwerp: Het logistiek vriendelijk ontwerpen van informatiesystemen</em></li><li><a href="http://www.raamstijn.nl/eenblogjeom/index.php/informatiemanagement/4952-werkstromen-volgens-nico-brand-a-edwin-platier" target="_blank" rel="noreferrer noopener">Werkstromen volgens Nico Brand &amp; Edwin Platier</a></li></ul></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 10 Dec 2015 11:46:02 +0100</pubDate></item><item><title><![CDATA[Round instead of square]]></title><link>https://www.reflektis.nl/blogs/post/round-instead-square</link><description><![CDATA[This is a typical artefact from an architect: It consists of the typical modelling constructs found in those work products from architects: squares, bl ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_FDQTZoP1RfiW4XFR3S2-Rg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_tW9UAAypStqU2o96JBqE4A" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_5uWLtrEeSTqnaFpPtJ-t8w" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_I7ew0h9zTqq4XbITrb-KKw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p>This is a typical artefact from an architect:</p><figure class="wp-block-image"><img src="http://technology.ky.gov/SiteCollectionImages/architectureframework.jpg" alt=""/></figure><p class="has-drop-cap">It consists of the typical modelling constructs found in those work products from architects: squares, blocks, rectangular things stacked on each other. For many people, even architects I fear, architecture is more or less synonymous with stacking blocks in layers. The work products in <a title="TOGAF® Version 9.1 - The Open Group" href="http://www.opengroup.org/togaf/" target="_blank">TOGAF</a> are also named as such: <em>building blocks</em>. Blocks.</p><p>It reveals a mind set, a paradigm if you will, with which problems of an architectural nature are approached: decompose the world into understandable units, that are of an industrial, artificial, mechanical nature.</p><figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">http://youtu.be/SADPuUYF_4I</div>
</figure><p>It reminds me of an accident in a supermarket my wife went to last week. An assistant was filling crates with white cabbages, and when she walked away after the job, the cabbages started rolling and several rolled on the floor. Sure enough soon after that another crate, this time with mandarins, exhibited&nbsp;the same annoying behaviour. The assistant exclaimed: &quot;why does everything need to be round?&quot;</p><p>Indeed, several attempts have been made to create &quot;square&quot; food products, tomatoes, melons, etc. Soo much easier to handle, in transport and storage. Soo much easier to optimise the supply chain. If only nature produced square results…!</p><div class="wp-block-image"><figure class="aligncenter size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/210-Why-are-Watermelons-in-Japan-Square-Shaped.jpg" alt="" class="wp-image-12379"/><figcaption>Square melons</figcaption></figure></div>
<p>However, we all know (I hope…) that nature doesn't work that way. The reason nature's produce is usually some form of round is not to annoy us or to clog the supply chains. It has to do with other constraints that are perfectly logical in the context of another paradigm: that of immensely complex ecological systems operating under evolutionary constraints.</p><p>Enterprise architecture has to deal with complexity. The complexity of the enterprise, operating within an expanding economical and industrial world of competing entities. A complexity which has much more in common with ecological systems than with steam engines or clockworks, not to mention&nbsp;Lego.</p><div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://artofthebrickexhibit.com/assets/img/nathan.75d86a44.jpg" alt=""/><figcaption> Nathan Sawaya, the LEGO<sup>®</sup> Artist </figcaption></figure></div>
<p>It may produce nice art. But it is not alive. It is not evolving, changing, adapting, morphing.</p><p>Living nature is all that, and most of all: it is <em>not</em> square.</p><div class="wp-block-image"><figure class="aligncenter size-large"><img src="https://blog.reflektis.nl/wp-content/uploads/bubbles-54829_1920-1024x682.jpg" alt="" class="wp-image-11925"/></figure></div>
<p>In my country we had a writer/illustrator who, in my view, was an absolute genius: <a href="http://en.wikipedia.org/wiki/Marten_Toonder">Marten Toonder</a>. His books were a combination of cartoon-like illustrations and text, almost untranslatable because of his very Dutch idiom. He created an unforgettable character, called Kwetal (&quot;KnowAll&quot;), who was a kind of nature spirit:</p><div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img src="https://blog.reflektis.nl/wp-content/uploads/Toonder-Relatie-met-de-maatschappij-867x1024.jpg" alt="" class="wp-image-12380"/><figcaption>Kwetal (Copyright 1981, Marten Toonder)</figcaption></figure></div>
<p>Kwetal was quite impressed with the&nbsp;mental faculties of the main&nbsp;character called <a href="http://en.wikipedia.org/wiki/Oliver_B._Bumble" target="_blank">Ollie B. Bommel</a>&nbsp;(Oliver B. Bumble), which he referred to as &quot;denkraam&quot; (&quot;mental case&quot;), because he could think of things Kwetal could never do. Kwetal referred to the &quot;denkraam&quot; of normal humans as &quot;square&quot;, which meant somehow not able to grasp the totality of things. That is exactly what we need to do as architect, grasp the totality, create a holistic view of the enterprise (or the problem domain). And using all those squares matches nicely with the square &quot;denkraam&quot; of many architects. But it totally mismatches with the reality of the world, that chaotic, constantly changing, round reality! We want to force the reality in square pictures, and are annoyed it doesn't fit.</p><p>Many of the example models I propose in my articles use round representations. The <a href="https://blog.reflektis.nl/business-centred-architecturen-i/">Business-Centric Architecture</a> (sorry, currently in Dutch only) is exactly that. No layers, no rectangles, but round elements, arranged in circles. The difference may be trivial or even topologically no different from representations using rectangles. But it reveals a different mindset, and also functions (for me at least) as a reminder of that natural quality of chaos and roundness. And to work and think from that mental realm, and not the realm of mechanics and machines.</p><p>As <a title="Alan Kay" href="http://en.wikipedia.org/wiki/Alan_Kay" target="_blank">Alan Kay</a> remarked often, the computer revolution cannot really take place if we keep thinking of computers as steam engines or clockworks.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 17 Dec 2014 19:34:31 +0100</pubDate></item><item><title><![CDATA[The territory and the map]]></title><link>https://www.reflektis.nl/blogs/post/territory-map</link><description><![CDATA[Estimated reading time: 4 minutes The Map is not the Territory by Claudio Gatti Recent responses to my article on Mirr ors prompt ed me to attempt to clar ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_N7JXHEQERsGePv4_dOcQWg" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_QVGBWwEnRcOlcHy6OSKCLQ" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_qA9ZweB9SAeQe3ALamTq6g" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_IgjdGvY8T--yuhGWYFrqcg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="wp-block-yoast-seo-estimated-reading-time yoast-reading-time__wrapper"><span class="yoast-reading-time__icon"><svg style="vertical-align:-0.1em;"></svg></span><span class="yoast-reading-time__spacer" style="width:1em;"></span><span class="yoast-reading-time__descriptive-text">Estimated reading time: </span><span class="yoast-reading-time__reading-time">4</span><span class="yoast-reading-time__time-unit"> minutes</span></p><figure class="wp-block-image aligncenter"><a href="http://www.pbase.com/image/37636470"><img src="http://a4.pbase.com/u32/mtf_foto_studies/upload/37636470.TheMapisnottheTerritory1Border.jpg" alt="The Map is not the Territory by Claudio Gatti"/></a><figcaption class="wp-element-caption">The Map is not the Territory by Claudio Gatti</figcaption></figure><p class="has-drop-cap">Recent responses to my article on <a href="https://www.reflektis.com/blog/architecture-mirrors/">Mirr</a><a href="https://blog.reflektis.nl/there-is-no-architecture-only-mirrors/">ors prompt</a>ed me to attempt to clarify the approach in that article. I think there is a fundamental philosophical discovery to be made in what I try to say, and indeed some of those responses confirm that. But it is as much a path to discovery to me as it is to my readers.</p><p>Architects create models. Indeed they do.</p><p>People, human beings, use language. Certainly.</p><p>The two things are related. In fact they are the same cognitive function, with the same effect. It is creating a map of the world, and through that faculty called <em>language</em> being able to transfer that map to others without requiring them to actually have the same sensory input you had in prompting (and enabling!) you to create that map.</p><p>It is also called <em>symbolic representation</em>. What we human beings also do, one might say beyond creating those maps, is manipulate those maps, play with them, morph them. Sometimes so much so that in effect the result is a new thing, unrelated to any original sensory input, a map of a world that can only be called imaginary. This is called symbolic manipulation.</p><p>Symbolic manipulation is tremendously powerful. Those imaginary worlds are evoked with those maps. This is what we humans did for countless centuries, roaming the savannahs, sitting by the fireplace in the dusk, and telling stories. The power of storytelling — or should I say <em>story-listening</em>? One listens to a story, and immediately the images spring to life. You have no problems experiencing the story as vividly as you experience your &quot;real&quot; life.</p><p>We cycled through a series of powerful inventions that created ever powerful maps, after that first creative leap of genius that created language: drawing, writing, the printing press. Until we stumbled on an invention that was the same, but also in some fundamental way&nbsp;totally different. I am now referring to the invention of the modern computer.</p><p>I think that, in order to realise the tremendous hidden promise of this invention, we should learn to see what is different from the previous inventions, not what is the same. What is different is that within a computers' vast memory and ever growing processing powers those maps are beginning, tentatively and for now awfully handicapped, to hatch and spring to a life on their own. Until now those maps only lived in our minds, and the maps we created were static, representations frozen in time: pictures, writing. That is changing, and that change is a fundamental one, of that I am growing more and more convinced.</p><p>Some of the &quot;worlds&quot; we have created are almost entirely &quot;imaginary&quot;, that is, you cannot actually say they are related to sensory inputs or physical experience. The entire financial system is an example of such a world. However what we usually create in our computer systems of that &quot;world&quot; is static representations. Our accounts are not really &quot;alive&quot;. We do not let them. Why can we not let our credit account figure out how to manage itself? Why not create a new insurance product that is alive and tries to sell itself and compute the best business model based on knowledge regarding risks it accumulates itself during its deployment? It may sound somewhat convoluted, but the actual system I envision is not much different from what is usually created. The devil is in the details, and with this other approach I advocate only a few things need change (see the <a href="https://blog.reflektis.nl/active-passive-pattern/">Active-Passive Pattern</a> for an explanation on one of the characteristics of such a system).</p><p>For more, you will probably want to read these related articles:</p><ul class="wp-block-list"><li><a href="https://blog.reflektis.nl/through-the-looking-glass/">Through the Looking Glass</a>&nbsp;(i.a. on <a title="The Institute of General Semantics » On Alfred Korzybski" href="http://www.generalsemantics.org/the-general-semantics-learning-center/alfred-korzybski/">Alfred Korzybski</a> and the Structural Differential)</li><li><a href="https://blog.reflektis.nl/the-importance-of-metaphors/" target="_blank" rel="noreferrer noopener">The Importance of Metaphors</a>&nbsp;(i.a. on Alfred Korzybski and <a title="The Institute for Intercultural Studies: Gregory Bateson ..." href="http://www.interculturalstudies.org/Bateson/biography.html">Gregory Bateson</a>)</li><li><a href="https://blog.reflektis.nl/why-software-bites-back/">Why Software Bites Back</a>&nbsp;(i.a. on Gregory Bateson)</li></ul></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Fri, 14 Feb 2014 17:39:12 +0100</pubDate></item><item><title><![CDATA[There is no architecture. Only mirrors]]></title><link>https://www.reflektis.nl/blogs/post/there-is-no-architecture-only-mirrors</link><description><![CDATA[Do away with architectural models. What we need to see is the essence of architecture, which is something we realise in software: a mirror of the ente ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_ovwqoyokTKOur9M0oH3jXA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_yJhrcMttQP2EPqcNi8LFpA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_tsfdoWY6QCmJzx4ZFO0Gog" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_QKgKRLpMQ8KHPfSyxNHg0g" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="has-drop-cap">Do away with architectural models. What we need to see is the essence of architecture, which is something we realise in software: a mirror of the enterprise.</p><p>The idea is not new. It has always been surprising (and, to be honest, somewhat frustrating) that is hasn't been picked up as I thought it would. And should.</p><p>The book by David Gelernter:&nbsp;<a href="http://amzn.to/1WyyDs8">Mirror Worlds: or the Day Software Puts the Universe in a Shoebox...How It Will Happen and What It Will Mean</a>&nbsp;(1993)<span style="line-height:1.5em;">, summed it up so nicely. It succeeded (at least for me) in evoking an powerful image of software replicas of &quot;real&quot; things (like colleges or libraries), with the help of which so much more was possible. It aligned so nicely with my ideas about the computer revolution as a logical next step in the unfolding of our unique human faculty of language.</span></p><p>There is always the same conceptual interpretation of models, derived from mathematical models and such, that I find detrimental to the successful application of the power of the modern computer. Models are seen as &quot;simplifications&quot; of the &quot;real&quot; world. They show aspects or perspectives. Architects talk about viewpoints. You have different models for requirements, risks, structure, testing, etc. It is actually not much different from financial models, even in the personal finance domain: you tend to think your bookkeeping is a model just like the others, while the &quot;real&quot; world is something else, somewhere else. And, well, it is real.</p><p>Within the domain of finance this may be easier to argue. We are all starting to realise that money is not &quot;real&quot; at all! It is <em>numbers</em>. Before computers they were numbers in books. Now they are numbers in computers. Money does not &quot;exist&quot; at all, it is all virtual. So the step from using a bookkeeping system that is a &quot;model&quot; of your financial situation to a bookkeeping system that you can see as a thing in itself, no less &quot;real&quot; than what you originally thought as the &quot;real&quot; world, is not so big after all. This is a system living inside computers, as real as anything you can point to in the &quot;real&quot; world. The mental change that will enable you to exploit the power of the computer revolution to the max is just that: to see the system living inside software as an extension, a replica, a mirror of the &quot;real&quot; world. And a lot of tooling to keep both in sync.</p><p>Of course the problem is that we do not build our systems that way. Our systems are handicapped by a cognitive error.</p><p>Any architecture that confines itself to a bunch of matrices, lists, diagrams and documents, is bound to fall short on &quot;meaning&quot;. It only touches the surface of it. It does not extend our faculty of language but hinders it. It does not offer an extension of intelligence or communication, but creates a panoply of artefacts that everyone gets lost in.</p><p>Language was a fundamental invention that <a href="https://blog.reflektis.nl/de-ict-revolutie/">completely transformed the species that invented it</a>. That species of mammal subsequently enhanced that effect (of transformation) with the inventions of writing and the printing press. Now the modern computer is offering us the gift of another quantum leap in transformation. And we keep clinging to the past, to outdated modes of working. It is about automation, not about transformation. We do what we always did, only now with computers. We fail to see the essence of our human faculty of language which was to create an inner world of meaning, a reflection of the outer world of form. And then to start playing with that reflection and in advance of doing it in the world of form we could experiment in the world of thought.</p><p>Einstein did this. His breakthroughs in scientific models of our universe came from exactly that: <a title="Einstein's Most Famous Thought Experiment" href="http://www.pitt.edu/%7Ejdnorton/Goodies/Chasing_the_light/">thought experiments</a>. Experiments that did not need extensive equipment. Only the imaginative mind.</p><p>Only now we can extend and enhance that mind, that reflective power of symbolic thought, infinitely.</p><p>Architecture can be as simple as that: a reflection, a mirror of the real world. To play with. And with that it will help us create systems that are exponentially more powerful. All it requires is a mental reorientation.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Thu, 30 Jan 2014 10:41:41 +0100</pubDate></item><item><title><![CDATA[The satellite model]]></title><link>https://www.reflektis.nl/blogs/post/the-satellite-model</link><description><![CDATA[The satellite model is an alternative representation of complex architectures that is propagated by me as a more helpful metaphor than layered models ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_Y6ehkLiwT82tn6h_b_T6Kw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_3D02-puuTGuqQNEq6ExobA" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_1_MhdGBqTkeWaHq19fPTGQ" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_ToMnrwdOTGyZjbI2Khqnhw" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="has-drop-cap">The satellite model is an alternative representation of complex architectures that is propagated by me as a more helpful metaphor than layered models or complex graphs. It helps because it centres on the centre: the business or company domain. The model re-appears in many articles on my site, and in some representations by other authors:</p><ul><li><a title="Hexagonal Architecture" href="http://alistair.cockburn.us/Hexagonal%2Barchitecture">Alistair Cockburn Hexagonal Architecture</a></li><li>Robert Martin's plug-in architecture</li><li>Eric Evans' Domain Driven Architecture</li><li>Model-Driven Architecture (OMG)</li></ul><p>This article focusses on the simplicity and applicability of this model, which is actually a combination of some patterns:</p><ol><li>Adapter</li><li>Observer</li><li>Publish-Subscribe</li></ol><h3>Characteristics</h3><div class="wp-block-image"><figure class="aligncenter size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/image018.png" alt="" class="wp-image-12015"/><figcaption>Satellite Model</figcaption></figure></div>
<p>The main characteristic is the clear and unambiguous placement of what we call the business domain: in the centre. The most important location is reserved for it. What is the business domain? It is what the system does, its objectives, its strategies. It has nothing to do with tools, technology or ICT, or in fact anything that does not directly capture the semantics of the organisation.</p><p>This is not always easy to demarcate. Is an account in a bank a business concept? Or is it a temporary technical construct because we need to track transactions? We need to decide what to include in this domain, and what not. Several rules of thumb help in making these determinations. In the article on <a href="https://blog.reflektis.nl/exploratory-modelling-explained/">eXploratory Modelling</a> you can read about my favourite technique to elicit requirements from the domain experts, and about the importance of applying these two patterns:</p><ol><li><a href="https://blog.reflektis.nl/time-inversion-pattern/">Time Inversion Pattern</a></li><li><a href="https://blog.reflektis.nl/active-passive-pattern/">Active-Passive Pattern</a></li></ol><p>The domain is not a model or a specification, although it might be realised from them. The idea is to create a running system. Because you have applied the rules above, this is possible. There is no dependency in the domain on persistency services or any of the other technical services. More on these components of the architecture below.</p><p>The domain component could conceptually be seen as a replica of the &quot;real&quot; world. I often explain it as a <em>mirror world:</em> it is similar but not identical to the &quot;real&quot; world, mainly because the two patterns are applied. It is &quot;serviced&quot; by technical components with the sole purpose of keeping it in sync with the &quot;real&quot; world. Technical components are the satellites.</p><h3>Technical Components</h3><p>In the satellite model&nbsp;the domain is not only a model, but a running component. Say we have it deployed inside a JEE session. Now in order to keep it in sync we deploy a set of technical components around it. These are the satellites.</p><p>Common components are the Persistency Service and the User Interface Service. Others might be the Security Service, the Distribution Service, and many others. There is no dependency in the satellite model between the domain component and the satellites, the technical services. The only thing flowing from the domain to the technical services are <em>events</em>. The domain generates these events on relevant moments in its life, in order to keep the technical services up-to-date about changes. For example an insurance policy is prolongated.</p><p>As I've said, there is no dependency between the domain and any other components. The technical components are updated through events propagated from the domain. However, this is not done directly. We want the technical components to be <em>pluggable</em>, that is, they should be built and maintained independent from the domains they are connected to.</p><p>In order for this trick to work, we need what is called <em>adapters</em>.</p><h3>Adapters</h3><p>Although adapters almost look like magicians, doing the magic that makes it all possible: to create completely independent domain components and technical services and somehow link them together, they actually are the simplest things you can imagine.</p><p>But there may be a lot of them.</p><p>Adapters can be deployed with various strategies, but they all share some characteristics. They are, as I've said, extremely simple. They are parameterisable, that is you can inform them about the specific domain parts and technical service interfaces they need to work with. They are created and brought to life on instantiating the solution, the whole shebang of domain components and technical services, functioning as the glue between all parties involved.</p><h3>Advantages of the satellite model</h3><p>As I hopefully explained successfully, the satellite model is basically very simple and easy to understand, but facilitates very complex and large architectures. An important reason for that is the enforcement of the rule that the domain components should be completely technology-independent. This helps those implementing those components tremendously because they can focus on the complexity of the business domain, almost without any burden from changes in technologies, or pollutions from technological constraints. They are free to realise these components apart from the technological hype of the day, in close cooperation with the business.</p><p>Another advantage which should not be underestimated is that now we are able to use technology in a more standardised way. The technical services should be built in a much more generic fashion, with teams that need less or in some cases no knowledge of the complex business domains.</p><p>A conceptual advantage is one I always emphasise: the domain is in the centre. That is where it belongs, if not technically. This model explicitly focusses the attention on the centre, the domain, which helps us realise why we are doing all this. By the way, in the domain components themselves I champion placing the customer in the centre. Again a reminder of why we are doing all this in the first place.</p><h3>Conclusion</h3><p>Although brief, I hope this exposition helps in creating some enthusiasm with the readers about applying this model in their work. If you do something similar of have any suggestions on improving the model, or applying it in specific contexts, please do not hesitate to participate in the dialog by commenting below.</p></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Mon, 12 Nov 2012 13:01:57 +0100</pubDate></item><item><title><![CDATA[Add, Don't Modify Pattern]]></title><link>https://www.reflektis.nl/blogs/post/add-dont-modify-pattern</link><description><![CDATA[Intent We want to be able to grow our domain models. They must be infinitely scalable. Growing an already large model should not be more difficult than ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_1_1qIbeORkWl9CuHB_RtAA" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_uRmfq8woRhqAntj4TRv92Q" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_5pYUUaTpR6CWbmjP04_B4g" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_XA4mIA3XQpq9KUhpMdP9gg" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><h2>Intent</h2><p>We want to be able to grow our domain models. They must be infinitely scalable. Growing an already large model should not be more difficult than a small model. Change comes in two forms: changing existing functionality, or adding new. We want there to be as little difference as possible between the two, regarding testing, validating, and modelling.</p><h2>Also Known As</h2><p>No known current variants of this pattern are known to me.</p><h2>Example</h2><p>A banking system has functioned for years but now an invasive change is necessary: the format of the account numbering system needs to change from a proprietary 9-digit number to a standardised 20-digit one. Since this change will impact all existing accounts it seems to be a daunting job: all accounts will be touched, and this change may have numerous side effects. It may even be impossible to cover all test cases completely.</p><h2>Context</h2><p>Large, interdependent systems need a change that has rippling effects.</p><h2>Problem</h2><p>Even a small change can have massive consequences, making the changes in large, interdependent systems more and more expensive.</p><h2>Solution</h2><p>Don't change existing objects. Not for changing existing functionality, nor to add new functionality. Existing test cases should not need to be modified. Instead functionality is modified by adding more objects. Since the model has been created using <a href="https://blog.reflektis.nl/active-passive-pattern/">the Active/Passive pattern</a> it is a loosely coupled model that does not hinder us in doing this.</p><h2>Structure</h2><p>Existing objects will still be used by the existing part of the system. However new parts, those that need to work with the new format, will &quot;enhance&quot; those existing objects by reusing them. This is done by wrapping the existing bank accounts in a new bank account object, delegating all necessary behaviour to the existing object, but (as it were) enriching the object with the new behaviour.</p><h2>Variants</h2><p>The Decorator pattern from the Design Patterns book. In fact this is the possible implementation of this pattern.</p><h2>Known Uses</h2><h2>Consequences</h2><ul><li>Changes do not lead to mandatory changes to existing components</li><li>Test cases do not need to be modified (same rule applies: change will lead to new components, in this case test cases, not to changes to existing components, in this case test cases)</li><li>The system may only <em>grow</em>, this is a possible adversary effect of the applying the pattern. As with any pattern, it is not applied in isolation: you will still need to audit your solution for legacy migration, which will phase-out obsolete parts of the system.</li></ul><h2>See Also</h2><ul><li><a href="http://www.oodesign.com/open-close-principle.html" target="_blank">Open-Closed Principle</a></li></ul></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Sat, 30 Aug 2008 17:01:37 +0200</pubDate></item><item><title><![CDATA[De gespiegelde wereld]]></title><link>https://www.reflektis.nl/blogs/post/de-gespiegelde-wereld</link><description><![CDATA[Dit is de Nederlandse vertaling van The Mirrored World Estimated reading time: 4 minutes Software is de spiegelwereld, a digital twin. De buitenwereld i ]]></description><content:encoded><![CDATA[<div class="zpcontent-container blogpost-container "><div data-element-id="elm_ImC0h8qJRoWQ0H0hxUcHxw" data-element-type="section" class="zpsection "><style type="text/css"></style><div class="zpcontainer-fluid zpcontainer"><div data-element-id="elm_CiU9-XYcQvGZ2U8JrsnU6w" data-element-type="row" class="zprow zprow-container zpalign-items- zpjustify-content- " data-equal-column=""><style type="text/css"></style><div data-element-id="elm_9Bxm-eCXQ0C-Y5UVRJopPA" data-element-type="column" class="zpelem-col zpcol-12 zpcol-md-12 zpcol-sm-12 zpalign-self- "><style type="text/css"></style><div data-element-id="elm_c0qPhjsvS4Ov8ryXDoy6zA" data-element-type="text" class="zpelement zpelem-text "><style></style><div class="zptext zptext-align-center " data-editor="true"><div><p class="has-small-font-size">Dit is de Nederlandse vertaling van <a href="https://blog.reflektis.nl/the-mirrored-world/">The Mirrored World</a></p><p class="wp-block-yoast-seo-estimated-reading-time yoast-reading-time__wrapper"><span class="yoast-reading-time__icon"><svg style="vertical-align:-0.1em;"></svg></span><span class="yoast-reading-time__spacer" style="width:1em;"></span><span class="yoast-reading-time__descriptive-text">Estimated reading time: </span><span class="yoast-reading-time__reading-time">4</span><span class="yoast-reading-time__time-unit"> minutes</span></p><p class="has-drop-cap">Software is de spiegelwereld, a digital twin. De buitenwereld is de &quot;gewone&quot; wereld waarin wij leven. In toenemende mate zien we dat, met de groei van het internet en talloze software systemen waarmee we ons omringen en waar we in toenemende mate niet meer zonder kunnen, er sprake begint te zijn van &quot;twee ikken&quot;: de ik in de gewone buitenwereld, en ons ik in de binnenwereld, de persoon die wij zijn als we <a title="Google naar Rob Vens!" href="http://www.google.com/search?q=Rob%2BVens" target="_blank">googlen naar onze persoon</a>, de profielen op allerlei forums, de blog aanwezigheid van steeds meer mensen. De virtuele persoon die we in toenemende mate ook zijn.</p><p>Die twee ikken zijn volgens mij een aspect van wat software en taal in het algemeen op een abstractere manier aan het doen is, namelijk een replica van de buitenwereld in de &quot;binnenwereld&quot; creeëren. De enige manier die complexe ondersteuning door software mogelijk maakt op een schaalbare manier, is door die software te zien en te bouwen als een replica van die werkelijke wereld. Dit is hoe je een domein model (<a href="https://groups.yahoo.com/neo/groups/domaindrivendesign/info">domain driven design</a>) zou kunnen zien.</p><h3 class="wp-block-heading" id="h-het-domein">Het &quot;Domein&quot;</h3><p>Het domein, dat centraal staat in de <a href="https://blog.reflektis.nl/exploratory-modelling-explained/">domeingedreven architectuur</a>, is een simulatiemodel. Een replica van de buitenwereld. Een binnenwereld. Het is ook een actieve wereld: de componenten waaruit die wereld is opgebouwd zijn bezig, doen dingen, dingen die anders zijn dan in de &quot;werkelijke&quot; wereld, en dat verschil lijkt triviaal maar is dat niet. Een stukje uit Alice in Wonderland:</p><figure class="is-style-rounded wp-block-image alignright size-full"><img src="https://blog.reflektis.nl/wp-content/uploads/alice01.gif" alt="" class="wp-image-11898"/><figcaption class="wp-element-caption">Alice through the looking glass</figcaption></figure><blockquote class="is-style-default wp-block-quote"><p><em>Then she began looking about, and noticed that what could be seen from the old room was quite common and uninteresting, but that all the rest was a different as possible. For instance, the pictures on the wall next the fire seemed to be all alive, and the very clock on the chimney-piece (you know you can only see the back of it in the Looking-glass) had got the face of a little old man, and grinned at her.</em></p></blockquote><p>De twee werelden zijn synchroon, op een speciale manier, en&nbsp;<strong>adapters&nbsp;</strong>spelen daarin een belangrijke rol. Zij zijn de lijm, de magie zou je misschien kunnen zeggen. Zoals de wereld die Lewis Carroll verbeeldde, maar die wij altijd in onze geest hebben meegedragen.</p><h3 class="wp-block-heading" id="h-taal">Taal</h3><p>Taal, het label waaronder ik al deze artikelen op deze site plaats, is ook het label waaronder ik de ontwikkelingen rond de moderne computer plaats. In een ander artikel probeer ik een beeld te schetsen van wat taal is. Met taal is de mens begonnen een wereld te vorm te geven die misschien daarvoor ook al in zijn geest aanwezig was, maar dankzij de woorden die er aan gegeven werden concreter werden, en overdraagbaar naar anderen. Een virtuele wereld van verhalen, die een eigen leven zijn gaan leiden, verhalen die misschien honderduizenden jaren geleden begonnen zijn en waarvan de resten in onze huidige verhalen nog steeds teruggevonden kunnen worden. Verhalen die mede hebben bijgedragen aan onze psyche (de archetypen van Jung). In die verhalen brachten mensen de binnenwereld naar buiten, en de luisteraars weer naar binnen. De binnenwereld van verhalen is een aspect van ons mens-zijn.</p><p>Misschien is dat spiegelen de essentie van leven en intelligentie. Enige tijd terug zijn biologen in het nieuws gekomen met het concept &quot;spiegelneuronen&quot; (zie ook:&nbsp;<a title="Noorderlicht over spiegelneuronen" href="http://www.wetenschap24.nl/nieuws/artikelen/2009/april/Spiegelneuronen-kunnen-meer.html" target="_blank">Noorderlicht, VPRO).</a>&nbsp;De eigenschap voortdurend de omgeving te spiegelen is niet alleen in neuronen, wat gespecialiseerde cellen zijn, waargenomen, maar zelfs bij ééncellige organismen. In het boek van Jeff Hawkins,&nbsp;<a href="http://www.amazon.co.uk/Intelligence-Jeff-Hawkins/dp/0805078533" target="_blank">On Intelligence </a>, ontwikkelt de schrijver een theorie over de werking van onze hersenen die gebaseerd is op het &quot;weerspiegelen&quot; van de buitenwereld, waarbij de hersenen tevens voortdurend bezig zijn die twee werelden te synchroniseren, maar ook met het &quot;voorspellen&quot; van die buitenwereld.</p><p>Professor van den Berg in het boekje&nbsp;<a href="http://www.librarything.com/work/3657812" target="_blank">Zien : verstaan en verklaren van de visuele waarneming</a>&nbsp;, maakt hierin ook de observatie dat wanneer iemand binnen komt en we zien de betreffende persoon nog niet, dat onze ogen wel al, door de muur heen, die persoon volgen, vóórdat deze zichtbaar wordt in de deuropening. Dezelfde van den Berg, in zijn boek<a href="http://www.librarything.com/work/3902233" target="_blank">&nbsp;Leven in Meervoud</a>, maakte een diepe indruk op mij toen ik las over zijn waarnemingen betreffende &quot;meervoudige&quot; personen, iets dat volgens van den Berg pas is gaan optreden na de technologische ontwikkelingen van de moderne tijd. Wij zijn spiegelwezens!</p><p>Het artikel van Vannevar Bush, waarnaar ik op meerdere plekken verwijs, heeft het over&nbsp;<em>memen</em>, alsof het levende wezens zijn die alles met alles verbinden, een idee dat ten grondslag ligt aan het concept hyperlinking dat zo belangrijk is op het internet.</p><ul class="wp-block-yoast-seo-related-links yoast-seo-related-links"><li><a href="https://blog.reflektis.nl/veel-vragen-weinig-krijgen-computable/">Veel vragen, weinig krijgen - Computable</a></li><li><a href="https://blog.reflektis.nl/business-centred-architecturen-i/">Business Centred Architecturen I</a></li><li><a href="https://blog.reflektis.nl/why-software-bites-back/">Why Software Bites Back</a></li><li><a href="https://blog.reflektis.nl/business-centred-architecturen-iii/">Business Centred Architecturen III</a></li><li><a href="https://blog.reflektis.nl/enterprise-architectures-new-clothes-csc-blogs/">Enterprise Architecture’s New Clothes – CSC Blogs</a></li></ul></div></div>
</div></div></div></div></div></div> ]]></content:encoded><pubDate>Wed, 14 May 2008 17:05:58 +0200</pubDate></item></channel></rss>