eclipse summit 2008 - thales - solfa
DESCRIPTION
SolFa is a software factory tool developed by ThalesTRANSCRIPT
Deploying Eclipse Modelling on an industrial scale with software factoriesBenoît Langlois, Thales/EPM
November 19 th, 2008
2 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Agenda
• What is SolFa?, Why SolFa?• Demo• Summary
3 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories What is SolFa?
• Objective:� Tool for mass-producing software with flexibility
� Support for complex generations
• Used techniques:� Generative technique : M2M, M2T, T2T, T2M transformations
� Product Line : capitalization and customization of core development
� DSL (Domain-Specific Language): Facilitating software development
4 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Position of SolFa in Eclipse
• SolFa is a Model-Driven Development tool
• The SolFa foundation is fully Eclipse-based:� Non-UI (JDT, PDE, Core), UI (SWT, JFace, Forms, Eclipse UI)
� EMF-based : Ecore, EMF Query, Validation, Transaction
� Transformation: JET, EMF Mapping
• Purpose regarding component viewpoint:� Not a new transformation engine or DSL editor
� Integration of available tools for software generation
� Introduction of needed formalism (e.g., generation pattern) and mechanism (e.g., generation orchestration)
• Purpose regarding user viewpoint:� Creation of off-the-shelf factories , common and specific to
different user communities
5 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Why SolFa?
• Need#1: Factory Component� Unit of generation with a clear objective of generation
� Unit of generation with a clear contract
� Explicit declaration of generation data organised by viewpoints
� Orchestration of the generation with a production plan
� Assembly of factory components
� Delegation
� Creation of heterogeneous and complex generations
6 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Why SolFa?
• Need#2: Exchange of Factory Components� Capitalisation and reuse between projects
� Definition of Factory Component portfolios , .i.e. sets of FCs with a common objective
7 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Why SolFa?
• Need#3: Abstraction
Developer
Domain Expert
Flexible, simple and practical solutionsTechnology/Business need-oriented
Implementation of technical solutions
Tool-oriented development
FC portfolios
DSL
8 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Paradigm of Factory Component
Asset
AssetDomain Expert
FCDeveloper
DSL
Domain Model
Editing FCExecuting FC
Sharing FC
Factory Component
Domain Technology
Meta-Domain Level:- Implementing a document editor- Implementing a document generator
Example for document production
Domain-Level:- Designing a document
Domain-Level:- Generating a document
9 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories
Eclipse
SolFa Engine
Software Factory Portfolio
SolFa Architecture
FC Edition Pattern (M2T)Orchestration
FC Execution
Bootstrap FC
Application DSL [Technological Slot]
Core FC (basic, utilities…)
Tool Infrastructure FC Common DSL FC
DSL FC
Uses
Application FCFC Portfolio for a
technology: Web services, reverse engineering,
business rules…
Factory DeveloperDomain Expert Tool
Tools
M2M,M2T,T2M,T2T
Java Code
Tool run from Java
Java Task
10 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo
• Demo #1� Presentation of SolFa Engine:
� Factory component edition and execution
� Pattern (M2T)
11 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Case Study
Model Mgt Generator
Model Edit Generator
Model Editor Generator
Domain Diagram Generator
Domain HTML Web-Site Generator
Library Application Library Model, Edit, Editor
ModelModel
Model API
Model Documentation
Diagram
12 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo: SolFa Engine / Factory Component
SolFa perspective
FCs (Factory components) being developed Deployed FCs
FC
generation data by
concerns
Orchestration
Delegation FC parameters
Parameter values
13 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo: SolFa Engine / Pattern
Patterns in a pattern library
14 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo: SolFa Engine / Pattern
15 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo: SolFa Engine / Pattern
Ordered list of pattern parameters, each parameter type = Model Class
Condition to apply a pattern
16 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo: SolFa Engine / Pattern
List of pattern methods
Order to apply methods
JET1
17 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo
• Demo #2� Portfolio example:
� DSL Family
18 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo: Document DSL
Html Report
Domain Expert
19 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Demo: DSL Family
Test DSLDocument DSL
SimilarityVariation
20 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories DSL Family
DSL Family
DSL Factory Model
Common DSL Generator
Test DSL
Test DSL Model
Test DSL Generator
Document DSL
Document DSL Model
Document DSL Generator
Customization
21 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Features of SolFa Engine
• Current state:� Edition and execution of factory component
� Declaration of generation data organised by viewpoints
� Assembly of factory components and generation orchestration
� Generation performed by Java tasks or patterns
� Pattern:� Example of viewpoint, with its own language and execution mode
� Pattern inheritance for generation customisation, e.g. EMF generation
� Provided: help, tutorials
• Future work:� [Started] Combination of Factory Component generation
� Pattern: Supporting other M2T engines than Jet1(e.g., Jet2, xPand)
� Supporting complex orchestrations
� Extensibility: ability to plug generation viewpoints
22 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Features of DSL Factory
• Current state:� Implementation of a DSL family portfolio:
� Generation of a DSL from a DSL model and a DSL factory
� Addressing common Query model needs, e.g. helper definition, test, document, diagram generation
� Common features:
� Foundations of an abstract syntax:� For tool-independence, queries are modelled and actions are generic� Definition of reusable DSL pieces, recursion…
� Generation of target artefacts from a DSL and FCs
• Future work:� Concrete syntax/Notation: Graphical-based on GMF
23 Deploying Eclipse Modelling on an industrial scale with software factories
SolFamde solution factories Thank You!
Contributors: Stephane Fournier, Guillaume Brocard
Questions