When I was involved in research (from 2001 to 2008), I was mostly interested in:
- reflection and AOP in the context of object-oriented systems;
- component-based systems (CBSE) and software architecture;
- autonomic computing, in particular the dynamic reconfiguration of component-based systems;
- and finally DSLs.
See my full list of publications.
In 2001 I did a DEA (the French equivalent to a Master’s Degree) at EMN under the supervision of Thomas Ledoux. In this context I designed and implemented an (unnamed) runtime for dynamic adaptation of Java applications using reflective techniques.
The runtime was based on a MOP for Java which allowed to dynamically alter the behavior of Java objects by attaching/detaching meta-objects to base-level quasi-POJOs (there were a few restrictions on the base-level objects to make this work). Meta-objects attached to a base object intercept all method invocations sent to it and can interpret the message however they want, including calling the base behavior.
Given this infrastructure, I designed a DSL (and implemented the corresponding runtime) to specify adaptation policies. The role of policies was to decide automatically which base-level object should be associated with which meta-objects. The system supported two levels of policies:
- system policies defined abstract roles (e.g. “server”), and the corresponding meta-objects which must be attached to objects which perform this role. The list of meta-objects to use was not static, but based on dynamic rules which could depend on changes in environmental conditions (e.g. the presence and kind of network connectivity).
- application policies defined rules to associate concrete business objects from an application to system policies. These rules defined groups of business objects by predicates on their properties (e.g. “all instances of class
MailServerwhich have the
statusattribute set to
At runtime, the system monitored both the attributes of business objects used in application policies to dynamically re-evaluate the composition of objects groups. It also monitored the environmental conditions used by system policies to determine which kinds of meta-objects were required at each time to implement the system roles. Changes in any of these triggered the attachment/detachment of specific meta-objects to business-level objects, ensuring that at each point in time, each object had the exact set of meta-level objects required by both its current state and the environmental conditions.
- Une infrastructure pour middleware adaptable, P.-C. David, Rapport de DEA, Université de Nantes (equivalent to a Master’s Thesis), 2001.
- Dynamic Adaptability of Services in Enterprise JavaBeans Architecture, Z. Jarir, P.-C. David and T. Ledoux, in Seventh International Workshop on Component-Oriented Programming (WCOP’02) at ECOOP 2002, Malaga, Spain, June 2002.
- Dynamic Adaptation of Non-Functional Concerns, P.-C. David and T. Ledoux, in First International Workshop on Unanticipated Software Evolution (USE’02) at ECOOP 2002, Malaga, Spain, June 2002.
- An Infrastructure for Adaptable Middleware, P.-C. David and T. Ledoux, in Distributed Objects and Applications (DOA 2002), LNCS vol. 2519, pp. 773-790, Springer-Verlag, Irvine, California, October 2002.
PhD and postdocs
After the master, I continued working in the same team (then OBASCO, now ASCOLA), still under the supervision of Thomas Ledoux but with Pierre Cointe as my administrative advisor. The subject was a continuation of the same themes as the master, but with a focus on component-based systems and dynamic architecture reconfigurations (instead of plain OO reflection).
The goal was still to allow unanticipated adaptation of software systems by means of dynamic reconfigurations. I focused on the Fractal component model as a substrate. Fractal has the advantages of being very generic and dynamic (more than most industrial solutions), and benefits from a sophisticated, robust and highly flexible implementation (more than many research prototypes).
On top of Fractal, I designed and implemented the Safran system (Self-Adaptive FRactal compoNents). Safran was an extension of Fractal which allowed the dynamic attachment of reactive adaptation policies to any Fractal component. Concretely, Safran used the extensibility of the Fractal model to add a new optional controller to Fractal components whose API could be used to dynamically associate such policies to individual components.
Safran adaptation policies were expressed in a Domain-Specific Language based on the idea of Event-Condition-Action rules from active databases.
- The role of the Event is to detect changes in system’s environement (exogenous events) or in the system itself (endogenous events) and to trigger the execution of the rule when a matching event occurs.
- The role of the Condition is simply to filter events which are not of interest (maybe depending on the current state of the component). Given an event matching langage powerful enough, this part is not strictly required.
- The role of the Action is to specify the effect of the rule on the target component (the one on which the rule is attached). In Safran, the effect of a rule is a reconfiguration of the target component’s architecture. This may include its sub-components, and any component reachable from the target component (Safran did not allow to enforce any “scoping” on the effect of rules).
I designed and implemented Safran as a modular system, where each sub-system could be (and was) reused outside of Safran itself:
- The WildCAT framework was used to monitor the execution environment of the application and detect any changes in it which were mentioned in the Event part of an active rule.
- The FPath notation and the FScript language were used to specify the architecture reconfiguration to perform in the Action part of Safran rules. One interesting feature of FScript is that it ensured the atomicity of the reconfigurations, so that the target application would never be left running in an inconsistent state.
After the PhD, I did a postdoc at Orange Labs (then France Télécom R&D) and then worked as a research engineer in the OBASCO team (again) in the context of the Selfware project. In both cases, I continued working on WildCAT, FPath and FScript (but not much on Safran itself) and collaborated with several PhD students who worked on similar subjects, in particular Nagapraveen Jayaprakash (at Orange Labs) and Marc Léger (both at Orange Labs and in the OBASCO team at EMN).
- Développement de composants Fractal adaptatifs: un langage dédié à l’aspect d’adaptation (Development of self-adaptive Fractal components: a domain-specific language for the adaptation aspect), P.-C. David, PhD Thesis, École des Mines de Nantes and Université de Nantes, July 2005, in French.
- WildCAT: a generic framework for context-aware applications, P.-C. David and T. Ledoux, in Proceeding of MPAC’05, the 3rd International Workshop on Middleware for Pervasive and Ad-Hoc Computing, Grenoble, France, November 2005.
- An Aspect-Oriented Approach for Developing Self-Adaptive Fractal Components, Pierre-Charles David and Thomas Ledoux, in Proceedings of the 5th International Symposium on Software Composition (SC 2006), Lecture Notes in Computer Science, vol. 4089, Vienna, Austria, March 2006.
- FPath and FScript: Language support for navigation and reliable reconfiguration of Fractal architectures, P.-C. David, T. Ledoux, M. Léger and T. Coupaye, in Annals of Telecommunications: Special Issue on Software Components — The Fractal Initiative, Volume 64, n°1/2, Springer Paris, January/February 2009.
- WildCAT was published as Free Software on OW2 and is available at http://wildcat.ow2.org/. Note that the current version of WildCAT (2.0) is the work of Loris Bouzonnet and Nicolas Loriant. It is now quite different (and more sophisticated) than the last version I was involved in (1.0).
- FPath and FScript were also published as Free Software on OW2, but as a module of the Fractal project instead of an autonomous project. Both are available at http://fractal.ow2.org/fscript/.
- Full list of publications
- List of presentations which are not directly tied to a specific publication. Slides presented at workshops and conferences for an actual paper are available along with the paper on the publications page.
- I participated to the following research projects: