I'm very unsatisfied, confused and unconvinced by the relationship between an Application Component and an Application Function.
The Application Component is described as 'encapsulation of application functionality', and Application Function is specified as 'describing the internal behaviour of an application component'.
However, the Application Layer Metamodel, describes the relationship between these two elements as an Application Component being assigned to and Application Function.
From the description on the individual elements it would seem that an Application Component is composed of Application Functions. Or even, to be more abstract, that the Application Function is assigned to an Application Component.
Either way it really is unsatisfactory for a function to be assigned to a component. For example, does a Phone have a Voice Call Function, or is a Voice Call Function assigned to a Phone, or is a Phone assigned to a Voice Call Function?
I think it makes sense that a function be assigned to a component. However I am assuming that the archimate component is itself an archetype rather than a concrete software or hardware component (as in uml component or deployment models). It would make sense that an (archetypal) component would comprise functions, and those functions are in turn realised by some other expression of software or hardware structure. So, your archetypal phone would comprise a voice call function, but that function would in turn be realised by some set of software and hardware that comprise your actual phone. Hummm....now I’m confusing myself!