ASOC is based on two layers: the model layer and the runtime layer. The first layer contains the two main models of our platform. The first model, application's functional model, describes the components of the system, their services and their dependencies. The second model contains the necessary classes and associations that describe the application and the user environment. According to these two models, the system designer can specify rules to analyze the application context situation and to automatically take actions when needed such as invoking a service, installing, starting and stopping components. These rules can guarantee the autonomous self properties of the system. The runtime layer contains the application components and sensors that gather information about the application and its environment and disseminate them to the model layer. With these sensors, ASOC guarantees having the required knowledge about the application state in the model layer. This state can be consequently analyzed and associated to actions when needed through the self-properties rules. The actions are automatically transposed on the application components by the ASOC main module and the resulting changes are also transmitted to the model layer. the left part of the ASOC architecture above, which concerns the context model and monitors is kept free to define by the system designer. Any relevant context model can be used or created at runtime without disrupting the application components. The right part of this architecture is completely developed according to the OSGI platform.
Despite that OSGi is not a hard technical restriction, we are studying the generalisation of ASOC to other SCA compliant platforms.