Principle of preservation of Aspect between Layers.
There is a long-standing anomaly in ArchiMate whereby Active Structures and Behaviours in the Application Layer are realized in the Technology Layer as Passive Structures (Artifacts).
There should be a principle in the language design that whenever realization is used between Layers, the Aspect cannot be changed. There are 2 examples worth discussing:
-
Application Component is realized by an Artifact. This is ‘developer’ thinking; a UML component is eventually realized as some kind of code file executable by an operating system, so that relationship path would seem logical to a developer. However, an Active Structure has become a Passive Structure, so that’s not a valid realization at all. By making something (more) ‘real’ it’s nature, i.e. its role in the architecture, should not be changed. A valid realization of an Application Component would be Systems Software, really a Container, because the role of a Component in the Application Layer is to execute Processes and Functions, and that role should be preserved. The corresponding ‘code file’ is in fact a Data Object, realized by an Artifact.
-
Application Process is realized by an Artifact. Same argument, this time a Behaviour has become a Passive Structure, which doesn’t make sense. What’s actually happening is that the Application Process has become a Technology Process, when we look at it in the Technology domain. This of course re-opens that whole can of worms discussing Application Software vs. Systems Software!