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.
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 ; )
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
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.
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: