ASOC (Automatic and Semantic OSGi Control) is a platform based on OSGi and semantic engineering tools having several objectives. First, it adds semantic reflexivity capabilities to the OSGi platform in order to make any deployed application in OSGi aware about the state of its components and their dependencies.
In fact, ASOC is based on automatically updated and maintained semantic models about any deployed application in an OSGi container. It also offers runtime semantic modeling and reasoning facilities to inject any extra high level knowledge related to the application and its execution environment.
For example, a system designer can add an applicative role at runtime for any deployed component in the platform. In this case, without stopping the running application, she/he can easily add a new class entitled "Role" and a new relationship "hasApplicativeRole" between this class and a predefined "Bundle" class.
The existing and the added knowledge can be used to analyze and detect particular situations where the system should adapt itself to the identified changes. This is done by semantic reasoning in ASOC. In fact, the system designer can create and run semantic rules at runtime to analyze its state and its environment.
In these rules, the designer can specify which are the actions to take in order to react to new situations. ASOC supports an extensible library of actions providing the possibility of stopping, starting and installing an OSGi bundle or invoking any OSGi service. The target bundles and services and the parameters of these actions can be inferred and not only statically specified.
To achieve these objectives, ASOC offers a service that allows:
- Semantic modeling and reasoning at runtime (application designers can inject any knowledge at runtime).
- Automatic runtime control of the system components (appliction designers can use the captured knowledge to analyze situations and automatically take decisions).
ASOC can be considered as a non intrusive platform for autonomous and self adaptive systems engineering. It doesn't change the habits of developers that are used to OSGi. They can deploy bundles like they used to do. ASOC automatically inspects all the deployed bundles and offers a semantic snapshot of what's happening in the OSGi container. The system designer can use the already captured knowledge and/or extend it by other relevant high level information in order to automatically analyze situations and apply the required actions when needed. This is achieved by creating SWRL rules that can be manually executed by the designer or automatically fired when a particular relevant change in the system state or environment is detected.
ASOC can be also a solid grounding for implementing and evaluating new research ideas related to self-adaptive software or to modeling at runtime in a more general manner. In contrast to other MDA based platforms which rely on complex and time consuming top-down model refinements, ASOC offers automatic and continuously updated semantic models that reflects the real state of the system. Moreover, any change in these models (through the defined actions) produces an automatic modification of the concerned system components.
ASOC combines the powerful advantages of semantic engineering and the highly dynamic and fault resistance aspects of the OSGI platform. Despite that the choice of OSGi is not a hard technical restriction, we intend to adapt our semantic modeling and reasoning at runtime approach to other platforms. We are also studying the port of ASOC to mobile devices such as smart phones, tablets and embedded systems.