OW2 FraSCAti Feature Model

The OW2 FraSCAti Software Product Line (SPL) allows users to build highly "à la carte", configurable and extensible Service Component Architecture (SCA) runtime platforms according to both their application requirements and target system constraints. The variability of OW2 FraSCAti SPL is captured by a feature model.

The OW2 FraSCAti feature model is a compact representation of all OW2 FraSCAti features and their constraints, which captures all possible OW2 FraSCAti configurations. Each OW2 FraSCAti feature is a distinctive user-visible plugin of the OW2 FraSCAti SPL (e.g. Web Service binding support, BPEL implementation support, a Java compiler used). An OW2 FraSCAti configuration is a set of the OW2 FraSCAti features which describes a member of OW2 FraSCAti SPL: the member contains a feature if and only if the feature is in its configuration. An OW2 FraSCAti configuration is permitted by the OW2 FraSCAti feature model if and only if it does not violate constraints imposed by the model. The OW2 FraSCAti feature model can be visually represented by OW2 FraSCAti feature diagrams, which are basically and-or trees with feature cardinalities.

OW2 FraSCAti feature model with FAMILIAR

The OW2 FraSCAti feature model is composed of 63 features (18 mandatory features and 45 optional features), generating 1 684 077 600 distinct OW2 FraSCAti configurations.

Following listing provides the OW2 FraSCAti feature model described in FAMILIAR (for FeAture Model scrIpt Language for manIpulation and Automatic Reasoning):

fmFraSCAti = FM (
  //
  // Features.
  //
  FraSCAti: ScaParser AssemblyFactory ComponentFactory [BindingFactory] [Explorer] [Fscript] [JMX] [RemoteManagement];
  ScaParser : Metamodels ;
  Metamodels : MM_SCA [MM_FraSCAti] [MM_Tuscany] [MM_UPnP] [MM_Native] ;
  AssemblyFactory : Implementations Interfaces Bindings PropertyTypes ;
  Implementations : Implementation_Composite Implementation_Java [Implementation_BPEL] [Implementation_Spring] [Implementation_Fractal] [Implementation_OSGi] [Implementation_Script] [Implementation_Resource] ;
  Implementation_OSGi : ( Apache_Felix | Equinox | Knopflerfish ) ;
  Implementation_Script : [BeanShell] [FScript] [Groovy] [JavaScript] [JRuby] [Jython] [Xquery] ;
  Interfaces : Interface_Java [Interface_WSDL] [Interface_Native] ;
  Bindings : Binding_SCA [Binding_WS] [Binding_JMS] [Binding_JavaRMI] [Binding_HTTP] [Binding_JSON_RPC] [Binding_REST] [Binding_UPnP] [Binding_JNA] ;
  PropertyTypes : Property_Java Property_XSD [Property_JAXB] ;
  ComponentFactory : MembraneFactories [MembraneGeneration] ;
  MembraneFactories : MF_Tinfi [MF_OSGi] [MF_Julia] ;
  MembraneGeneration : MembraneGenerators [JavaCompilers] ;
  MembraneGenerators : [MG_Tinfi] [MG_OSGi] ;
  JavaCompilers : ( JDK6 | JDT ) ;

  //
  // Constraints.
  //
  AssemblyFactory -> ScaParser ;
  AssemblyFactory -> ComponentFactory ;
  Implementation_Composite -> MM_SCA ;
  Implementation_Java -> MM_SCA ;
  Implementation_BPEL -> MM_SCA ;
  Implementation_BPEL -> Interface_WSDL ;
  Implementation_Spring -> MM_SCA ;
  Implementation_Fractal -> MM_FraSCAti ;
  Implementation_OSGi -> MM_FraSCAti ;
  Implementation_OSGi -> MF_OSGi ;
  MF_OSGi -> Implementation_OSGi ;
  Implementation_OSGi -> MG_OSGi ;
  MG_OSGi -> Implementation_OSGi ;
  MF_OSGi -> MG_OSGi ;
  MG_OSGi -> MF_OSGi ;
  Implementation_Script-> MM_FraSCAti ;
  FScript -> Fscript ;
  Implementation_Resource-> MM_Tuscany ;
  Interface_Java -> MM_SCA ;
  Interface_WSDL -> MM_SCA ;
  Interface_Native -> MM_Native ;
  Binding_SCA -> MM_SCA ;
  Binding_WS -> MM_SCA ;
  Binding_WS -> BindingFactory ;
  Binding_JMS -> MM_SCA ;
  Binding_JMS -> BindingFactory ;
  Binding_JavaRMI -> MM_FraSCAti ;
  Binding_JavaRMI -> BindingFactory ;
  Binding_HTTP -> MM_Tuscany ;
  Binding_JSON_RPC -> MM_FraSCAti ;
  Binding_JSON_RPC -> BindingFactory ;
  Binding_REST -> MM_FraSCAti ;
  Binding_REST -> BindingFactory ;
  Binding_UPnP -> MM_UPnP ;
  Binding_UPnP -> BindingFactory ;
  Binding_JNA -> MM_Native ;
  Explorer -> AssemblyFactory ;
  Explorer -> BindingFactory ;
  Explorer -> Implementation_Fractal ;
  Fscript -> AssemblyFactory ;
  Fscript -> BindingFactory ;
  Fscript -> Implementation_Fractal ;
  JMX -> AssemblyFactory ;
  RemoteManagement -> AssemblyFactory ;
  RemoteManagement -> Binding_REST ;
  RemoteManagement -> Fscript ;
)

OW2 FraSCAti features

The list of OW2 FraSCAti features is:

    • Name: ScaParser

    • Description: Parse SCA composite, component type, constraining type, and contribution XML-based descriptors

    • Feature type: Mandatory

    • Feature dependencies: None

    • Children features:

        • Name: Metamodels

        • Description: Metamodels supported by the OW2 FraSCAti SCA Parser

        • Feature type: Mandatory

        • Feature dependencies: None

        • Children features:

            • Name: MM_SCA

            • Description: Eclipse OSOA/SCA metamodel

            • Feature type: Mandatory

            • Feature dependencies: None

            • Children features: None

            • Name: MM_FraSCAti

            • Description: Eclipse OSOA/SCA FraSCAti metamodel

            • Feature type: Optional

            • Feature dependencies: None

            • Children features: None

            • Name: MM_Tuscany

            • Description: Eclipse OSOA/SCA Tuscany metamodel

            • Feature type: Optional

            • Feature dependencies: None

            • Children features: None

            • Name: MM_UPnP

            • Description: OW2 FraSCAti UPnP metamodel

            • Feature type: Optional

            • Feature dependencies: None

            • Children features: None

            • Name: MM_Native

            • Description: OW2 FraSCAti Native metamodel

            • Feature type: Optional

            • Feature dependencies: None

            • Children features: None

    • Name: AssemblyFactory

    • Description: Check, generate and compile code, instantiate, and complete SCA composites

    • Feature type: Mandatory

    • Feature dependencies: ScaParser - ComponentFactory

    • Children features:

        • Name: Implementations

        • Description: Implementation languages supported by the OW2 FraSCAti Assembly Factory

        • Feature type: Mandatory

        • Feature dependencies: None

        • Children features:

            • Name: Implementation_Composite

            • Description: SCA composite-based implementation, i.e., <implementation.composite .../>

            • Feature type: Mandatory

            • Feature dependencies: MM_SCA

            • Children features: None

            • Name: Implementation_Java

            • Description: Java-based implementation, i.e., <implementation.java .../>

            • Feature type: Mandatory

            • Feature dependencies: MM_SCA

            • Children features: None

            • Name: Implementation_BPEL

            • Description: BPEL-based implementation, i.e., <implementation.bpel .../>

            • Feature type: Optional

            • Feature dependencies: MM_SCA - Interface_WSDL

            • Children features: None

            • Name: Implementation_Spring

            • Description: Spring application context-based implementation, i.e., <implementation.spring .../>

            • Feature type: Optional

            • Feature dependencies: MM_SCA

            • Children features: None

            • Name: Implementation_Fractal

            • Description: Fractal ADL-based implementation, i.e., <implementation.fractal .../>

            • Feature type: Optional

            • Feature dependencies: MM_FraSCAti

            • Children features: None

            • Name: Implementation_OSGi

            • Description: OSGi bundle-based implementation, i.e., <implementation.osgi .../>

            • Feature type: Optional

            • Feature dependencies: MM_FraSCAti - MF_OSGi - MG_OSGi

            • Children features: None

            • Children features:

                • Name: Apache_Felix

                • Description: SCA component implemented as OSGi bundles on top of Apache Felix

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: Equinox

                • Description: SCA component implemented as OSGi bundles on top of Equinox

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: Knopflerfish

                • Description: SCA component implemented as OSGi bundles on top of Knopflerfish

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

            • Name: Implementation_Script

            • Description: Scripting language-based implementation, i.e., <implementation.script .../>

            • Feature type: Optional

            • Feature dependencies: MM_FraSCAti

            • Children features:

                • Name: BeanShell

                • Description: SCA component implemented with BeanShell

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: FScript

                • Description: SCA component implemented with FScript

                • Feature type: Optional

                • Feature dependencies: Fscript

                • Children features: None

                • Name: Groovy

                • Description: SCA component implemented with Groovy

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: JavaScript

                • Description: SCA component implemented with JavaScript

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: JRuby

                • Description: SCA component implemented with JRuby

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: Jython

                • Description: SCA component implemented with Jython

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: Xquery

                • Description: SCA component implemented with Xquery

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

            • Name: Implementation_Resource

            • Description: Resource-based implementation, i.e., <implementation.resource .../>

            • Feature type: Optional

            • Feature dependencies: MM_Tuscany

            • Children features: None

        • Name: Interfaces

        • Description: Interface languages supported by the OW2 FraSCAti Assembly Factory

        • Feature type: Mandatory

        • Feature dependencies: None

        • Children features:

            • Name: Interface_Java

            • Description: Java interfaces, i.e., <interface.java .../>

            • Feature type: Mandatory

            • Feature dependencies: MM_SCA

            • Children features: None

            • Name: Interface_WSDL

            • Description: WSDL port types, i.e., <interface.wsdl .../>

            • Feature type: Optional

            • Feature dependencies: MM_SCA

            • Children features: None

            • Name: Interface_Native

            • Description: C headers, i.e., <interface.native .../>

            • Feature type: Optional

            • Feature dependencies: MM_Native

            • Children features: None

        • Name: Bindings

        • Description: Binding protocols supported by the OW2 FraSCAti Assembly Factory

        • Feature type: Mandatory

        • Feature dependencies: None

        • Children features:

            • Name: Binding_SCA

            • Description: SCA bindings, i.e., <binding.sca .../>

            • Feature type: Mandatory

            • Feature dependencies: MM_SCA

            • Children features: None

            • Name: Binding_WS

            • Description: Web Service bindings, i.e., <binding.ws .../>

            • Feature type: Optional

            • Feature dependencies: MM_SCA - BindingFactory

            • Children features: None

            • Name: Binding_JMS

            • Description: JMS bindings, i.e., <binding.jms .../>

            • Feature type: Optional

            • Feature dependencies: MM_SCA - BindingFactory

            • Children features: None

            • Name: Binding_JavaRMI

            • Description: Java RMI bindings, i.e., <binding.rmi .../>

            • Feature type: Optional

            • Feature dependencies: MM_FraSCAti - BindingFactory

            • Children features: None

            • Name: Binding_HTTP

            • Description: HTTP bindings, i.e., <binding.http .../>

            • Feature type: Optional

            • Feature dependencies: MM_Tuscany

            • Children features: None

            • Name: Binding_JSON_RPC

            • Description: JSON-RPC bindings, i.e., <binding.jsonrpc .../>

            • Feature type: Optional

            • Feature dependencies: MM_FraSCAti - BindingFactory

            • Children features: None

            • Name: Binding_REST

            • Description: REST bindings, i.e., <binding.rest .../>

            • Feature type: Optional

            • Feature dependencies: MM_FraSCAti - BindingFactory

            • Children features: None

            • Name: Binding_UPnP

            • Description: UPnP bindings, i.e., <binding.upnp .../>

            • Feature type: Optional

            • Feature dependencies: MM_UPnP - BindingFactory

            • Children features: None

            • Name: Binding_JNA

            • Description: JNA bindings, i.e., <binding.jna .../>

            • Feature type: Optional

            • Feature dependencies: MM_Native

            • Children features: None

        • Name: PropertyTypes

        • Description: Property types supported by the OW2 FraSCAti Assembly Factory

        • Feature type: Mandatory

        • Feature dependencies: None

        • Children features:

            • Name: Property_Java

            • Description: Java-based property types

            • Feature type: Mandatory

            • Feature dependencies: None

            • Children features: None

            • Name: Property_XSD

            • Description: XSD-based property types

            • Feature type: Mandatory

            • Feature dependencies: None

            • Children features: None

            • Name: Property_JAXB

            • Description: JAXB-based property types

            • Feature type: Optional

            • Feature dependencies: None

            • Children features: None

    • Name: ComponentFactory

    • Description: Generate and instantiate SCA components

    • Feature type: Mandatory

    • Feature dependencies: None

    • Children features:

        • Name: MembraneFactories

        • Description: Component membranes supported by the OW2 FraSCAti Component Factory

        • Feature type: Mandatory

        • Feature dependencies: None

        • Children features:

            • Name: MF_Tinfi

            • Description: OW2 FraSCAti Tinfi membrane factory

            • Feature type: Mandatory

            • Feature dependencies: None

            • Children features: None

            • Name: MF_OSGi

            • Description: OW2 Fractal Juliac OSGi membrane factory

            • Feature type: Optional

            • Feature dependencies: Implementation_OSGi - MG_OSGi

            • Children features: None

            • Name: MF_Julia

            • Description: OW2 Fractal Julia membrane factory

            • Feature type: Optional

            • Feature dependencies: None

            • Children features: None

        • Name: MembraneGeneration

        • Description: Component membrane generation by OW2 FraSCAti Component Factory

        • Feature type: Optional

        • Feature dependencies: None

        • Children features:

            • Name: MembraneGenerators

            • Description: Component membrane generators supported by OW2 FraSCAti Component Factory

            • Feature type: Mandatary

            • Feature dependencies: None

            • Children features:

                • Name: MG_Tinfi

                • Description: OW2 FraSCAti Tinfi membrane generator

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: MG_OSGi

                • Description: OW2 Fractal Juliac OSGi membrane generator

                • Feature type: Optional

                • Feature dependencies: Implementation_OSGi - MF_OSGi

                • Children features: None

            • Name: JavaCompilers

            • Description: Java compilers used to compile generated component membranes

            • Feature type: Optional

            • Feature dependencies: None

            • Children features:

                • Name: JDK6

                • Description: JDK6 Java compiler

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

                • Name: JDT

                • Description: Eclipse Java compiler

                • Feature type: Optional

                • Feature dependencies: None

                • Children features: None

    • Name: BindingFactory

    • Description: Generate and instantiate SCA bindings

    • Feature type: Optional

    • Feature dependencies: None

    • Children features: None

    • Name: Explorer

    • Description: GUI to introspect and reconfigure SCA composites

    • Feature type: Optional

    • Feature dependencies: AssemblyFactory - BindingFactory - Implementation_Fractal

    • Children features: None

    • Name: Fscript

    • Description: Scripting DSL to introspect and reconfigure SCA composites

    • Feature type: Optional

    • Feature dependencies: AssemblyFactory - BindingFactory - Implementation_Fractal

    • Children features: None

    • Name: JMX

    • Description: Introspect and reconfigure SCA composites from a JMX client

    • Feature type: Optional

    • Feature dependencies: AssemblyFactory

    • Children features: None

    • Name: RemoteManagement

    • Description: Introspect and reconfigure SCA composites remotely

    • Feature type: Optional

    • Feature dependencies: AssemblyFactory - Fscript - Binding_REST

    • Children features: None

OW2 FraSCAti feature diagram with S2T2

Following figure shows the OW2 FraSCAti feature diagram with the S2T2 Configurator tool. Green boxes represent mandatory FraSCAti features present in all FraSCAti configurations, white boxes are optional FraSCAti features, black lines represent child features, and green arrows represent feature dependencies.

OW2 FraSCAti feature model at S.P.L.O.T.

The OW2 FraSCAti feature model is available online at S.P.L.O.T. - Software Product Lines Online Tools, under the feature model named OW2-FraSCAti-1.4. S.P.L.O.T. provides several SPL online tools as a feature model editor, some automated analysis, a product configuration tool, and a feature model repository.

Following figure shows the S.P.L.O.T. feature model editor applied to the OW2 FraSCAti feature model:

Following figure shows some S.P.L.O.T. automated analysis applied to the OW2 FraSCAti feature model:

Following figure shows the S.P.L.O.T. product configuration tool applied to the OW2 FraSCAti feature model: