In a previous post, I asked What is wrong with this picture? It was a diagram about a bank offering a telbanking solution to their customers. I asked readers to try to find the problem and within a day or so they did. Here is the expanded story.
Let’s start with the picture again:
And the explanation that came with it:
A bank offers the product ‘Telebanking account‘ to its customers. Opening an account as well as application support (i.e., helpdesk and the like), are modeled as business services realized by the ‘Customer relations department‘. As part of the product, the customer can make use of a banking service which offers application services realized by the Telebanking application, such as electronic ‘Money transfer‘ and requesting ‘Account status‘.
First, let us redraw the diagram without Nesting and with more extended labels to make matters more clear:
Now, we expand the derived relation from Application Services to the Banking Business Service:
This makes it clear that as modeled, the Application Services are used by a Business Process of the Bank’s Employees, not of the Customer Business Actor.
Now, might this still be OK if we would say that the Banking Business Service is a Business Service performed by an automated Business Process so we don’t model Bank Employees using the Telebanking application instead of the Customer? For that we would have to add an Assignment from the Telebanking Application Component to the Provide Banking Business Process:
I renamed the Business Process and Business Service to ‘Automated Banking’ so it is clear what is being offered. This would in fact be the pattern that I have put in Mastering ArchiMate as the pattern for automated business behaviour, but not quite with that intention and certainly not with the idea that via this pattern the Application Services are still exposed to the user of the (in this case Banking) Business Service. So, I have removed the Application Service from the Product Aggregate. If I Nest that, I get:
And we have a Product that is purely defined at the Business Layer. Actually, we can leave the Application Services out of this picture as they are not longer relevant for our model of what we offer the customer: it has become ‘internal detail’. So we get:
This is a clean solution, but it hides the core of what the Customer gets: the use of the Telebanking environment. If we want that in and we want to stay close to the original diagram, we could do this:
Where the Automated Banking Application Services is Composed of the Account Status and Money Transfer Application Services. We now have that overall element that was in the original diagram. Un-Nest it and it becomes:
I personally think this Composite doesn’t really add something useful. We can leave it out and get:
And if we Nest that we get:
Which — if I wanted to model the original diagram, and with the Contract added — would probably be my preferred solution.
You can wonder why the original modeller wanted that Banking service on top of those Application Services? Was he or she maybe unhappy with the idea that the Application Services had no representation at the Business Layer? Maybe he or she should shave realised that the Application Services are used by the Business Layer of the Customer’s Architecture.
A bonus question: where did I find the original diagram? :D