1%
2% Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3%
4% SPDX-License-Identifier: CC-BY-SA-4.0
5%
6
7\chapter{Introduction}
8CAmkES is a component platform for embedded microkernel-based systems, offering
9many of the standard features available in component platforms.
10Some relevant features of CAmkES that are not common to all component platforms
11are:
12\begin{itemize}
13  \item \emph{Explicit composite components.} CAmkES components can be
14    assembled to form a re-usable composite, that can then be referenced within
15    a containing system.
16  \item \emph{Multiple instantiation of a single component.} Multiple copies of
17    a component can exist within a system, distinguished by different
18    identifiers.
19  \item \emph{Multiple implementations of an interface.} A single component can
20    implement an interface more than once. This can be useful for providing a
21    dedicated interface for each client or functionally different
22    implementations.
23  \item \emph{Distinction between active and passive components.} Components
24    can have a thread of control or be invoked via an event loop. CAmkES
25    distinguishes these modes of operation at an architectural level.
26  \item \emph{``Provides'' interfaces can be left unsatisfied at runtime.} When
27    a component implements a given interface, it does not have to be connected
28    to a component that uses that interface. The converse is not true.
29  \item \emph{Hardware devices are components.} Hardware devices can be
30    specified in ADL that generates interface methods for accessing the device.
31\end{itemize}
32