-
Notifications
You must be signed in to change notification settings - Fork 0
SAFRAN
SAFRAN is an extension to the Fractal Component Model in order to provide a dynamic platform that supports context-based self-adaptive applications. SAFRAN disseminates separation of concerns ideas proposing considering adaptation as an aspect, and so, enables a clear separation between business code and adaptation code. More specifically, the proposed solution basis itself on Event-based Aspect-Oriented Programming (EAOP), which uses events as pointcuts that indicate when the adaptation policies (advice) should be triggered. In essence, the idea is similar to other solutions that propose the use of adaptation policies based on Event-Condition-Action (ECA) rules.
In SAFRAN, application components can have an attached adaptation manager, which uses ECA-based policies to guide the reconfiguration process. On those policies, the adaptation actions are written in FScript, a Domain Specific Language (DSL), which was especially proposed in order to have a controlled expressiveness, limiting reconfiguration actions in order to guarantee that the applications can not be lead to an inconsistent state. FScript is a simple procedural language, which supports all the operations offered by the Fractal component model, including, component creation, architecture introspection and reconfiguration. An interesting point concerning FScript is that it simplifies the navigation over the application architecture through the use of another embedded language, called FPath, which has a syntax similar to XPath. This same language can also be used to specify conditions over the events and their properties.
As previously described, the triggering of an adaptation action is based on the occurrence of events, which can be internal, such as a method invocation, or external (related to the application context), such as memory allocation. In SAFRAN, those external events are triggered by WildCAT, which is uncharged of managing the context. The context elements are split in domains, which are modeled as trees of resources, each containing a set of attributes (name, value) pairs.
Despite its contributions, we identified some important concerns related to SAFRAN. Firstly, they present a limited discussion concerning eventual interference between rules. Secondly, their reconfiguration scripts are relatively low-level requiring an expert developer in order to implement them. Thirdly, they can only adapt using predefined events, so it is not possible to combine these events in order to consider high-level events defined in accordance with application's needs. In DSOA, we use models@runtime in order to raise the abstraction level and enable simplify the reconfiguration actions.