FXL Project – Introduction
The software of the future must be flexible in order to adapt to continuous change. The Flexible XML-based Languages (FXL) project is a research project that uses the universal basis of xApproach and other modeling approaches to provide consistent solutions for varying tasks in current software applications. By illustrating the use of FXL/xApproach principles in several contexts, e.g. industrial projects concerning Service-Oriented Architectures (SOAs), Web Services, it’s general relevance can be underscored. The following sections help to introduce related background information and the current fields of application.
The XML-based Approach (xApproach)
xApproach is a term for some basic principles that repeatedly emerged within the FXL project. First of all, it describes the fact that every document of a certain non-XML-based programming language can be alternatively converted into a XML-based representation/model (see Figure 1). This xLang model does not require a special format, e.g. specific element names, but implies the fact that a reverse converter can create the original representation (with or without information loss). Additionally, each model can be equipped with several views (plain-text, graphical, etc.) that are optimized for specific needs.
Figure 1: Representation Principle
The second principle concerns the aspect of model transformation capabilities. Every document xLang can be easily transformed into a derived document xLang* that differs from the original document with, for example, changed functionality or structure. Let’s take an example – united gaming. The transformation T1..Tn are described with the help of XML transformation languages (like XSLT, xQuery, TL1.0, etc.) and can be executed via new or common tools (e.g., a pipeline controller PC for XSLT-tasks). Figure 2 depicts the underlying process.
Figure 2: Transformation Principle
Both principles suffice to reap several advantages concerning different fields of application. Some of them are mentioned below:
1. Creation of Domain-specific Languages (based on XML models that can be easily integrated in MDSD approaches and tool chains such as MDA/UML, EMF/eCore, etc.)
2. Customization of Software/Software Generators (removal/modification of existing code blocks, insertion of new code blocks, (de)activation, etc.)
3. Technology Mapping (e.g. mapping from a high-level abstraction to low-level technologies or languages)
4. Separation of Concerns (realization of crosscutting concerns, dynamic or static weaving via XML transformations, etc.)
5. XML Binding (e.g. to realize correlations between xLang documents and objects )…