Component-based software engineering (CBSE) [32] and software architecture [30] have become mature and very active fields of study. Both can be traced back to an early vision of systematically produced software [24] and are primarily concerned with the construction of software systems by composition or assembly of software components, with well-defined interfaces and explicit dependencies. Nowadays, it is generally recognized that component-based software engineering and software architecture approaches are crucial to the development, deployment, management, and maintenance of large, dependable software systems [6]. Several component models and associated architecture description languages (i.e., notations for defining components and component assemblages) have been defined in the past 15 years. In large part, this diversity stems from differences in application domains targeted by the different models, as well as differences in choices for component interconnection and composition capabilities (much as there exists today a wealth of models and languages for concurrency). In the face of this diversity, the Fractal component model [10]—a programming language-independent component model for the construction of highly configurable software systems introduced by France Telecom and INRIA in 2001—was designed from the outset to allow arbitrary forms of component interconnection and component composition and to allow other component models to be derived as Fractal personalities. To achieve this, the Fractal model combines ideas from three main sources: (1) CBSE and software architecture, (2) reflective systems [18], and (3) configurable and adaptable distributed systems, (notably, the OpenORB [7] system and its associated OpenCOM component model [12]). From CBSE and software architecture, Fractal inherits basic concepts for the modular construction of software systems: software components, interfaces, and explicit connections (called bindings) between them. Notably, these concepts allow for the (recursive) construction and management of hierarchical component architectures possibly with sharing (a subcomponent can be part of several parent components) this last feature being an originality of Fractal. From reflective systems, Fractal inherits the idea that components can exhibit meta-level behavior reifying, through appropriate interfaces (called controller interfaces), their internal structure, and behavior. From configurable Ann. Telecommun. (2009) 64:1–4 DOI 10.1007/s12243-009-0086-1
Read full abstract