Section: Scientific Foundations
Functional Aspects for Components Applications and M.D.E.
Software engineering aims at being rationalized always more and begins to reach levels of productivity and reuse that come near to other fields such as mechanics or electronics. The challenge is to facilitate the production of software that are more and more complex, robust, maintainable and evolutive. Component oriented design is a recent step towards that productivity through re-usability. It allows the composition of "off the shelf" software entities, while preserving good properties on the software. The composition mechanisms are mainly used for construction and deployment phases, but the modelling phases are often not addressed by these ideas around composition.
After being considered only as documentation elements for a long time, models are gaining more and more importance in the software development lifecycle, as full software artefacts. The UML  standard contributes a lot to this mutation, with the identification and the structuration of models space dimensions and constructs. Models can nowadays be explicitly manipulated through metamodeling techniques, dedicated tools or processes such as the MDA  transformation chains. This is "Model Driven Engineering"  .
The main motivation is the reduction of delays and costs by the capitalization of design efforts (models) at each stage, and the automation, as far as possible, of transitions between these stages. Thus, it would be possible to separate high level business oriented models from low level architectural and technological ones, but also to reuse these models from one application to another. Indeed, once it is clear that models are full software ingredients, we are faced with new problems such as the possibility of their reusability and composability. As a consequence, models stand more and more as good candidates for the "design for reuse" quest and specific constructs are introduced to make them generic.
We want to investigate the idea that functional decomposition of models is a way for increased re-usability. Our interest takes place in the use of functional aspects which represent the various dimensions of a tackled domain. It is related to aspect oriented structuring, and design plans like the views, SOP  and Catalysis  approaches. We start from our previous works on the application of view structuring to object-oriented programming  , databases  ,  and software architectures  ,  .
The problem of the reuse of these functional aspects arises now. Indeed, this reuse must make it possible to improve the productivity and reliability in the field of information systems design. Several approaches propose the reuse of functional aspects in various forms, such as the design of reusable frameworks  or in the form of UML templates  .
Our goal is to 'disconnect' functional views from a specific domain in order to obtain functional components which will be adaptable to various contexts. This is a way for functional re-usability. Such a functional component has to capture a functional dimension with a high level of abstraction. Our idea is to introduce the notion of 'model components' parameterized by a 'required model' that produces a 'provided model'. Thus, the modelling phase can be seen as the assembly of such components by connecting provided model to required model. Note that component ports (specified by a model) can be more sophisticated than simple interfaces of objects or software components.
As a first step, we have formalized such a component model  and its associated design and assembly rules as an extension of the UML meta-model. We obtain adaptable model components that can be targeted to the EJB platform and the CORBA component model. We have realized an implementation of this work via an UML profile. The corresponding UML Objecteering module is available at http://www.lifl.fr/ mullera .
In  we compare techniques for composing and parameterizing models and keep the advantages of the later ones to specify reusable functional aspects. Model parameterization is related to templates notions, such that found in the UML scope. Applications of templates are numerous and various, with the result that its initial introduction in UML1.3 was deeply revisited and strengthened in the UML2 standard. Though its specification remains much more structural and verbal in  . Particularly, constraints lack a precise definition of the related template binding relationship. That is why we propose in  a set of OCL constraints  which strengthen the notion of model templates and facilitate its exploitation in construction processes. Our model components can be expressed by UML template packages. We also identify that the UML specification needs to be extended in order to make templates parameterizable by complex models. We are defining a set of OCL constraints which formalizes this extension. We use this extension in order to define a process where package templates are composed to build a system.
A second dimension of our work is concerned with the preservation of the 'functional aspects oriented design style' from the modelling phase to the exploitation phase. This approach gives several advantages: re-usability at the modelling phase leads to re-usability at the production phase, designers can trace the design work in the exploitation of the application. So our work can be a contribution to a seamless integration of modelling tools and component based platforms such as OpenCCM or EJB.
We identify some structural patterns which allow to target functional decomposition onto component platforms. In  , we present a composition-oriented approach grounded on the splitting of entities according to views requirements. Two original design patterns are formulated and capture the main issues of the approach. The first one is concerned with the management of the split component and its conceptual identity. The second one offers a solution for relationships among such components. These patterns improve evolution and traceability of views and can be applied to different technological platforms. An experimentation in the Fractal component model is presented in  which allows to envision the usage of Fractal controllers to manage split components. In  we focus on the reuse of functional aspects or views at the implementation level using adaptation techniques. The reuse of views is ensured by applying the adapter pattern  . We show how to compose the views pattern and the adaptation one. The result provides an implementation of reusable functional aspects that can be composed at the exploitation stage.
At a practical stage, all this work is gradually integrated in Case Tools (Objecteering, Eclipse Plugin), as functional aspect oriented modelling and design facilities to support model driven processes.