Section: New Results
Primitives for adaptable and evolvable components
Participants : Mario Bravetti, Ivan Lanese, Michael Lienhardt, Jacopo Mauro, Marco Pistore, Davide Sangiorgi, Gianluigi Zavattaro.
In Focus we study linguistic primitives for components, and models for them following the process calculus approach. A special emphasis is given to the adaptability and evolvability of the components — important issue in complex software systems. Components indeed are often used in contexts that had not been predicted at the time when the components were built. Moreover, the needs and the requirements on a system may change over time: one may find that the original specification was incomplete or ambiguous, or new needs may arise that had not been predicted at design time. As designing and deploying a system is costly, it is important that the system be capable of evolving and adapting itself to changes in the surrounding environment.
Models and linguistic constructs for adaptability and evolvability of components are studied in [34] and [19] . The key features of the component model in [34] are: a hierarchical structure of components; the capacity to move, update, wrap components; method interfaces for components; and capacities to isolate and distribute components. In the model in [19] , adaptable processes have a location and can be subject to dynamic update actions at runtime (related to this paper is also [20] ).
In [22] we provide an adaptation approach that can automatically adapt business processes to run-time context changes that impede achievement of a business goal. We define a formal framework that adopts planning techniques to automatically derive necessary adaptation activities on demand. The adaptation consists in identifying recovery activities that guarantee that the execution of a business process can be successfully resumed and, as a consequence, the business goals are achieved. The solution proposed is evaluated on a real-world scenario from the logistics domain.
Adaptability and evolvability are major concerns in Software Product Lines. The EU Hats project has developed the idea of delta-oriented programming (DOP) as a technique for implementing Software Product Lines based on modifications (add, remove, modify) to a core object-oriented program. Such modifications can introduce errors into a program, when type signatures of classes are modified. To overcome this problem we have introduced [54] a type system for delta-oriented programs. The system is based on row polymorphism, a well-known method in type systems for records.