SlideShare a Scribd company logo
How to Build Your Own
Product Modeling Environment
Tim Geisler
webXcerpt Software GmbH
tg@webxcerpt.com
CWG 2012, Berlin 2012-05-08
Product Modeling Environments
Product Modeling Environments:
Single Transactions
Product Modeling Environments:
PMEVC
Product Modeling Environments:
Eclipse-based SME
VClipse
● Eclipse-based textual
product modeling
environment
● for VC and IPC
● based on Xtext / EMF
● Open Source
Eclipse Public
License
www.vclipse.org
VClipse - VCML
● Textual language for
SAP objects
● Embedded languages
for dependencies
(procedures, conditions,
and constraints)
IDE for VCML
Validation
Content Assist
Quickfixes
Cross References
IDE for VCML
Outline
TemplatesFolding
Rename
refactoring
Where used?
Interface to SAP ECC (ALE, RFC)
● RFC interface
− Create, Read, Update, Delete
− Extract recursively: model extraction
● ALE interface
− Sending models via IDocs (PDR)
● Delta calculation
− Compute and send only changed objects
● „One-click delta deployment“
− Send delta via PDR, automatic processing in SAP
Graphical or Textual
Product Modeling?
Deutsch limit:
You can’t have
more than 50
visual primitives
on the screen at
the same time.
Focus on Textual Product Models
● Dependencies are written in textual languages
● Teamwork support through mature version
control systems
● Powerful tools exist and can be used for free:
− Difference tools, search, replace, ...
● Enables offline product modeling
● More information is visible on a screen
● Text-based product modeling environments are
easy to create with today's frameworks
Specialized Modeling Environments
Why Own Specialized PME?
● Product modeling environments from SAP
have to suit all models of all SAP customers
● Customer-specific product modeling is not
supported
− Naming conventions
− Coding conventions
− Variant functions
− …
● Customer's notions not used
− Not everything is a material, class, or characteristic
VClipse is Not (Yet) Your Own PME
● not (yet) customer-specific
● Several layers to extend Vclipse:
− As a user / modeler
− As a (Java) programmer
− As a contributor
Extending VClipse – as Modeler
Define your own templates
E.g., template for determining amount of a material
(specific coding convention)
Extending VClipse – as Programmer
Write your own plugins / extend VClipse plugins
Specific validation rules
● e.g. naming conventions
Resulting validation in
VCML editor
VcmlJavaValidator.java
Extending VClipse – as Programmer
Coding conventions / Framework code
● Classes and dependencies are required by
the „framework“ for different functionalities
● Validation rules should check
− if a certain procedure or dependency
net is present,
then certain classes must be present.
− the order of procedures
− …
● Templates (by a modeler)
− The classification and configuration
profile could be generated by a
template.
Extending VClipse – as Programmer
● Specific „intelligent“ templates
Implementation:
Specific Support for Variant Functions
● Implement specific validation
● Implement specific code templates
PFunction Z_COPY_DEFAULT_MV (
GEN_CSTIC_1_NAME = 'MVCSTIC1'
GEN_CSTIC_2_NAME = 'MVCSTIC2'
GEN_INSTANCE = 'PARENT'
)
name of multivalued characteristic
one of SELF, PARENT, ROOT
compatible type
Specifying Variant Functions
import "cstics.vcml" // contains all cstic definitions
variantfunction Z_COPY_DEFAULT_MV "Copy default values (MV)" {
GEN_CSTIC_1_NAME : in CharacteristicNameMV
GEN_CSTIC_2_NAME : in CharacteristicNameMV
GEN_INSTANCE : in CharacteristicValues
}
VCML
Validation
VCML
Templates
CML integration
Java
implementation
stub
Documentation
ABAP
implementation
stub
VCML
Tooltips
Variantfunction
object
Generating Artifacts:
Extending VClipse – as Contributor
Testing language VCMLT for VCML models
(contributed to VClipse by Winfried Kung)
See talk by
Tim Geisler and Christophe Faure
Track 3, 11:15 – 12:00
Conceptual Gap
● SAP VC's concepts
● Implementation
● Standard languages
● Transactions
● VClipse
● Your concepts
● Specification
● Your languages
● Your own
modeling environment
Your Own Modeling Language
● Why?
− Tailored to your concepts and needs
− Means for specifying the product model
− Means for communication with the domain expert
− Formal specification language
● Overcome the gap by generating VCML code
Example: ConfigModeler @
RFC
Editor/IDE
Editor/IDE
ConfigModeler
VClipse
CML
VCML
Code Generation
ConfigModeler – Initial Idea
StandardizedStandardized
productproduct
descriptionsdescriptions
FormalizedFormalized
productproduct
descriptionsdescriptions ConfigModeler + VClipse
Eclipse-based IDEs
code generation
CML as
specification and
documentation language
CWG 2010 Vienna
CWG 2011 Cologne
ConfigModeler – Languages
CMLUI: User Interface
CML: Product model
CMLT: Test cases
When to Create Own Language and
Product Modeling Environment?
● Schematic product specifications
● Similarly structured products
● Schematic translation
● Schematic implementation
● Model migration from legacy to SAP
− intermediate language with manipulation
possibilities (refactoring, commented code, …)
● …
My Own Product-Modeling Environment
RFC
Editor/IDE
Editor/IDE
my ConfigModeler
VClipse
myCML
VCML
my Code Generation
Editor/IDE
my ConfigModeler
myCML
my Code
Generation
Grammar
Metamodel Scoping
Validation
Target
Architecture
Code
Generation
VClipse
Adaptions
Exports /
Reports
Graphical
Views
Import from
Legacy
Configurators
Defining your
Modeling-Language Grammar
● using the Xtext grammar language
● from this grammar, the following is derived:
− metamodel (Ecore + Java classes)
− parser
− editor with syntax highlighting, cross references,
content assist, outline, folding, ...
Defining your
Modeling-Language Metamodel
Represents all product models in the domain
(like a schema)
● EMF Ecore Meta Model
● Generated from grammar or defined separately
● Source of transformation
Scoping
Visibility of Objects for Cross References
The implementation (really that short!):
Defining your
Target Architecture
Clear: SAP Variant Configuration
Open aspects:
− Naming conventions
− Which objects should be modeled?
− Constraints / conditions on values?
− BOM calculation
− Use of variant tables
− Use of certain variant functions
− …
Might be very company-specific!
Code Generation
Task: map myCML models (instances of your
metamodel) to VCML models
● Respect your target architecture
● Either generate VCML as text
− Model to text transformation languages
− e.g. templating languages or frameworks
● or generate VCML as data structure
− Model to model transformation languages
− e.g. Java, Eclipse Xtend
IDE Adaptions
● Xtext-based editors are highly extensible and
configurable through dependency injection
using Google Guice without modifying
framework code.
− Implement your desired behaviour by subclassing
standard implementations.
− Bind your defined subclass using dependency
injection.
● Nearly each part of system can be adapted and
replaced.
Effort
Effort
● Prototype for small language can be build in
about a week
Is This a New Idea?
No, in software engineering this idea is called
Model-Driven Software Development
● Huge number of frameworks, tools,
knowledgeable people, … exist.
● Current trend is to go from general UML models
− to Domain-Specific Modeling
− using Domain-Specific Languages
Extending VClipse vs
Own Modeling Language
● With VClipse, you can start small.
− Need to learn only the required parts of the
technology stack to implement
− Usable with minimal training effort
● Possible improvements are bigger with own
modeling language approach.
Experiences at NSN
● Own modeling language (CML) used for 2/3 of all live
product models
● Fully integrated side languages (UI, help texts, testing)
● Semi-automatic migration from legacy configurators
● VClipse mainly used as a backend to ConfigModeler
● Manual VCML editing mainly used for prototyping
● NSN-specific extensions to VCML just recently
implemented
● Modelers even implemented a third level
(they generate CML for certain classes of products)
Summary
● Eclipse-based external textual modeling
environments
● Various possibilites to extend VClipse
● Build own textual modeling language on top
● MDSD approach applied to product modeling
● Modern frameworks like Xtext allow quick
implementation
● Approach successfully in production at NSN
VClipse - Try It Out
● Ready-to-run from memory stick
● Eclipse 3.7.2 (Indigo) for Windows 32bit / 64 bit
● VClipse installed
● configured for CWG sandbox use
● VClipse sources – ready to change
● Sample workspace
How to Build Your Own Product-Modeling Environment?

More Related Content

What's hot

Rhapsody Software
Rhapsody SoftwareRhapsody Software
Rhapsody SoftwareBill Duncan
 
Rhapsody Eclipse
Rhapsody EclipseRhapsody Eclipse
Rhapsody EclipseBill Duncan
 
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSEInstalling Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
Fraser Chadburn
 
MPHS RC Design Flow
MPHS RC Design FlowMPHS RC Design Flow
MPHS RC Design Flow
Marco Santambrogio
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
Michael Vorburger
 
Product wise computer vision development
Product wise computer vision developmentProduct wise computer vision development
Product wise computer vision developmentYoss Cohen
 
CAN FD Stack Introduction & Related FAQ
CAN FD Stack Introduction & Related FAQCAN FD Stack Introduction & Related FAQ
CAN FD Stack Introduction & Related FAQ
Embitel Technologies (I) PVT LTD
 
Getting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in AdaGetting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in Ada
Frank Braun
 
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
mfrancis
 
Comparison of Programming Platforms
Comparison of Programming PlatformsComparison of Programming Platforms
Comparison of Programming Platforms
Anup Hariharan Nair
 
Randomization and Constraints - Workshop at BMS College
Randomization and Constraints - Workshop at BMS CollegeRandomization and Constraints - Workshop at BMS College
Randomization and Constraints - Workshop at BMS College
Ramdas Mozhikunnath
 
Model-Driven Development for Safety-Critical Software
Model-Driven Development for Safety-Critical SoftwareModel-Driven Development for Safety-Critical Software
Model-Driven Development for Safety-Critical Software
gjuljo
 
Ui Modeling In Action With PMF, e4(XWT) And EGF
Ui Modeling In Action With PMF, e4(XWT) And EGFUi Modeling In Action With PMF, e4(XWT) And EGF
Ui Modeling In Action With PMF, e4(XWT) And EGFBENOIT_LANGLOIS
 
Buildingwebapplicationswith.net
Buildingwebapplicationswith.netBuildingwebapplicationswith.net
Buildingwebapplicationswith.netKolagani Veera
 
Rational Functional Tester
Rational Functional TesterRational Functional Tester
Rational Functional TesterRavi Anand
 

What's hot (20)

Rhapsody Software
Rhapsody SoftwareRhapsody Software
Rhapsody Software
 
Rhapsody Eclipse
Rhapsody EclipseRhapsody Eclipse
Rhapsody Eclipse
 
Diwakar Nag
Diwakar NagDiwakar Nag
Diwakar Nag
 
desktop_resume
desktop_resumedesktop_resume
desktop_resume
 
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSEInstalling Installing IBM Rational Rhapsody Designer and Architect for MBSE
Installing Installing IBM Rational Rhapsody Designer and Architect for MBSE
 
MPHS RC Design Flow
MPHS RC Design FlowMPHS RC Design Flow
MPHS RC Design Flow
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
 
Product wise computer vision development
Product wise computer vision developmentProduct wise computer vision development
Product wise computer vision development
 
CAN FD Stack Introduction & Related FAQ
CAN FD Stack Introduction & Related FAQCAN FD Stack Introduction & Related FAQ
CAN FD Stack Introduction & Related FAQ
 
RFT - Ashish Mathur
RFT - Ashish MathurRFT - Ashish Mathur
RFT - Ashish Mathur
 
Getting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in AdaGetting started with IBM Rational Rhapsody in Ada
Getting started with IBM Rational Rhapsody in Ada
 
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
Workflow for Development, Release and Versioning with OSGi / bndtools- Real W...
 
Comparison of Programming Platforms
Comparison of Programming PlatformsComparison of Programming Platforms
Comparison of Programming Platforms
 
Randomization and Constraints - Workshop at BMS College
Randomization and Constraints - Workshop at BMS CollegeRandomization and Constraints - Workshop at BMS College
Randomization and Constraints - Workshop at BMS College
 
Model-Driven Development for Safety-Critical Software
Model-Driven Development for Safety-Critical SoftwareModel-Driven Development for Safety-Critical Software
Model-Driven Development for Safety-Critical Software
 
Resume
ResumeResume
Resume
 
Ui Modeling In Action With PMF, e4(XWT) And EGF
Ui Modeling In Action With PMF, e4(XWT) And EGFUi Modeling In Action With PMF, e4(XWT) And EGF
Ui Modeling In Action With PMF, e4(XWT) And EGF
 
Buildingwebapplicationswith.net
Buildingwebapplicationswith.netBuildingwebapplicationswith.net
Buildingwebapplicationswith.net
 
Cv1_Ganesh_Parange
Cv1_Ganesh_ParangeCv1_Ganesh_Parange
Cv1_Ganesh_Parange
 
Rational Functional Tester
Rational Functional TesterRational Functional Tester
Rational Functional Tester
 

Viewers also liked

Modeling Environment for Product Configuration in an ERP System
Modeling Environment for Product Configuration in an ERP SystemModeling Environment for Product Configuration in an ERP System
Modeling Environment for Product Configuration in an ERP SystemJoão Magalhães
 
Marketing own product ppt
Marketing own product pptMarketing own product ppt
Marketing own product ppt
faezaa
 
CPQ - An Introduction
CPQ - An IntroductionCPQ - An Introduction
CPQ - An Introduction
Sarah Baker
 
Configure-Price-Quote (CPQ) Software Solutions
Configure-Price-Quote (CPQ) Software SolutionsConfigure-Price-Quote (CPQ) Software Solutions
Configure-Price-Quote (CPQ) Software Solutions
Pieter Fourie
 
How to build an Intranet portal in SharePoint using out of the box features
How to build an Intranet portal in SharePoint using out of the box featuresHow to build an Intranet portal in SharePoint using out of the box features
How to build an Intranet portal in SharePoint using out of the box features
Gregory Zelfond
 
Product Differentiation
Product DifferentiationProduct Differentiation
Product Differentiation
Vidur Pandit
 
CPQ Solution Study
CPQ Solution StudyCPQ Solution Study
CPQ Solution Study
Demand Metric
 
Marketing new product launch ppt
Marketing new product launch pptMarketing new product launch ppt
Marketing new product launch ppt
bilal khan
 
Fruit punch - Launching a New Product - Marketing
Fruit punch - Launching a New Product - MarketingFruit punch - Launching a New Product - Marketing
Fruit punch - Launching a New Product - Marketing
Cotecna Inspection
 
Product planning & development
Product planning & developmentProduct planning & development
Product planning & developmentSoma Giri
 
Project on biscuits,business studies project work, 12 class business project ...
Project on biscuits,business studies project work, 12 class business project ...Project on biscuits,business studies project work, 12 class business project ...
Project on biscuits,business studies project work, 12 class business project ...
Ravi Singh
 
26 Product Launch Strategies
26 Product Launch Strategies 26 Product Launch Strategies
26 Product Launch Strategies
Wise Words Consulting
 
Product launch ppt
Product launch pptProduct launch ppt
Product launch ppt
Prateek Mishra
 
XII Marketing Project Work
XII Marketing Project WorkXII Marketing Project Work
XII Marketing Project Work
Rahil Jain
 
New product marketing (perfume)
New product marketing (perfume)New product marketing (perfume)
New product marketing (perfume)
Shajar Ali
 

Viewers also liked (15)

Modeling Environment for Product Configuration in an ERP System
Modeling Environment for Product Configuration in an ERP SystemModeling Environment for Product Configuration in an ERP System
Modeling Environment for Product Configuration in an ERP System
 
Marketing own product ppt
Marketing own product pptMarketing own product ppt
Marketing own product ppt
 
CPQ - An Introduction
CPQ - An IntroductionCPQ - An Introduction
CPQ - An Introduction
 
Configure-Price-Quote (CPQ) Software Solutions
Configure-Price-Quote (CPQ) Software SolutionsConfigure-Price-Quote (CPQ) Software Solutions
Configure-Price-Quote (CPQ) Software Solutions
 
How to build an Intranet portal in SharePoint using out of the box features
How to build an Intranet portal in SharePoint using out of the box featuresHow to build an Intranet portal in SharePoint using out of the box features
How to build an Intranet portal in SharePoint using out of the box features
 
Product Differentiation
Product DifferentiationProduct Differentiation
Product Differentiation
 
CPQ Solution Study
CPQ Solution StudyCPQ Solution Study
CPQ Solution Study
 
Marketing new product launch ppt
Marketing new product launch pptMarketing new product launch ppt
Marketing new product launch ppt
 
Fruit punch - Launching a New Product - Marketing
Fruit punch - Launching a New Product - MarketingFruit punch - Launching a New Product - Marketing
Fruit punch - Launching a New Product - Marketing
 
Product planning & development
Product planning & developmentProduct planning & development
Product planning & development
 
Project on biscuits,business studies project work, 12 class business project ...
Project on biscuits,business studies project work, 12 class business project ...Project on biscuits,business studies project work, 12 class business project ...
Project on biscuits,business studies project work, 12 class business project ...
 
26 Product Launch Strategies
26 Product Launch Strategies 26 Product Launch Strategies
26 Product Launch Strategies
 
Product launch ppt
Product launch pptProduct launch ppt
Product launch ppt
 
XII Marketing Project Work
XII Marketing Project WorkXII Marketing Project Work
XII Marketing Project Work
 
New product marketing (perfume)
New product marketing (perfume)New product marketing (perfume)
New product marketing (perfume)
 

Similar to How to Build Your Own Product-Modeling Environment?

Accelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application DevelopmentAccelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application Development
Micro Focus
 
Accelerating time to delivery - Modern tools for COBOL development
Accelerating time to delivery - Modern tools for COBOL developmentAccelerating time to delivery - Modern tools for COBOL development
Accelerating time to delivery - Modern tools for COBOL development
Micro Focus
 
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Fwdays
 
Asp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareAsp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech Software
Ritwik Das
 
EclipseCon Eu 2012 - Build your own System Engineering workbench
EclipseCon Eu 2012 - Build your own System Engineering workbenchEclipseCon Eu 2012 - Build your own System Engineering workbench
EclipseCon Eu 2012 - Build your own System Engineering workbench
melbats
 
Prism library and MVVM
Prism library and MVVMPrism library and MVVM
Prism library and MVVM
Jiri Danihelka
 
Zero to Portlet in 20 minutes or less
Zero to Portlet in 20 minutes or lessZero to Portlet in 20 minutes or less
Zero to Portlet in 20 minutes or less
Davalen LLC
 
Accelerating time to delivery modern tools for cobol development
Accelerating time to delivery modern tools for cobol developmentAccelerating time to delivery modern tools for cobol development
Accelerating time to delivery modern tools for cobol development
Micro Focus
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product Lines
Markus Voelter
 
What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !
Cédric Brun
 
Put the Power of Cloud-based Modeling to Work - Spotlight Session
Put the Power of Cloud-based Modeling to Work - Spotlight SessionPut the Power of Cloud-based Modeling to Work - Spotlight Session
Put the Power of Cloud-based Modeling to Work - Spotlight Session
Obeo
 
Visual studio 2019 launch
Visual studio 2019 launch Visual studio 2019 launch
Visual studio 2019 launch
Charlin Agramonte
 
Tech Days 2015: Model Based Development with QGen
Tech Days 2015: Model Based Development with QGenTech Days 2015: Model Based Development with QGen
Tech Days 2015: Model Based Development with QGen
AdaCore
 
Introduction to computer programming.pdf
Introduction to computer programming.pdfIntroduction to computer programming.pdf
Introduction to computer programming.pdf
HasankaNayanjith
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
Ulrich Krause
 
Developing sites with Magnolia 4 / STK
Developing sites with Magnolia 4 / STKDeveloping sites with Magnolia 4 / STK
Developing sites with Magnolia 4 / STK
guest0afb3
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
Istvan Rath
 
.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development
명신 김
 
Serverless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIsServerless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIs
Nordic APIs
 
Introduction to Visual studio 2012
Introduction to Visual studio 2012 Introduction to Visual studio 2012
Introduction to Visual studio 2012
Prashant Chaudhary
 

Similar to How to Build Your Own Product-Modeling Environment? (20)

Accelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application DevelopmentAccelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application Development
 
Accelerating time to delivery - Modern tools for COBOL development
Accelerating time to delivery - Modern tools for COBOL developmentAccelerating time to delivery - Modern tools for COBOL development
Accelerating time to delivery - Modern tools for COBOL development
 
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
Oleksii Moskalenko "Continuous Delivery of ML Pipelines to Production"
 
Asp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareAsp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech Software
 
EclipseCon Eu 2012 - Build your own System Engineering workbench
EclipseCon Eu 2012 - Build your own System Engineering workbenchEclipseCon Eu 2012 - Build your own System Engineering workbench
EclipseCon Eu 2012 - Build your own System Engineering workbench
 
Prism library and MVVM
Prism library and MVVMPrism library and MVVM
Prism library and MVVM
 
Zero to Portlet in 20 minutes or less
Zero to Portlet in 20 minutes or lessZero to Portlet in 20 minutes or less
Zero to Portlet in 20 minutes or less
 
Accelerating time to delivery modern tools for cobol development
Accelerating time to delivery modern tools for cobol developmentAccelerating time to delivery modern tools for cobol development
Accelerating time to delivery modern tools for cobol development
 
Model-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product LinesModel-Driven Development in the context of Software Product Lines
Model-Driven Development in the context of Software Product Lines
 
What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !What the heck is Eclipse Modeling and why should you care !
What the heck is Eclipse Modeling and why should you care !
 
Put the Power of Cloud-based Modeling to Work - Spotlight Session
Put the Power of Cloud-based Modeling to Work - Spotlight SessionPut the Power of Cloud-based Modeling to Work - Spotlight Session
Put the Power of Cloud-based Modeling to Work - Spotlight Session
 
Visual studio 2019 launch
Visual studio 2019 launch Visual studio 2019 launch
Visual studio 2019 launch
 
Tech Days 2015: Model Based Development with QGen
Tech Days 2015: Model Based Development with QGenTech Days 2015: Model Based Development with QGen
Tech Days 2015: Model Based Development with QGen
 
Introduction to computer programming.pdf
Introduction to computer programming.pdfIntroduction to computer programming.pdf
Introduction to computer programming.pdf
 
An Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPagesAn Introduction To Model  View  Controller In XPages
An Introduction To Model  View  Controller In XPages
 
Developing sites with Magnolia 4 / STK
Developing sites with Magnolia 4 / STKDeveloping sites with Magnolia 4 / STK
Developing sites with Magnolia 4 / STK
 
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worldsmbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
 
.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development.NET Fundamentals and Business Application Development
.NET Fundamentals and Business Application Development
 
Serverless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIsServerless Functions and Machine Learning: Putting the AI in APIs
Serverless Functions and Machine Learning: Putting the AI in APIs
 
Introduction to Visual studio 2012
Introduction to Visual studio 2012 Introduction to Visual studio 2012
Introduction to Visual studio 2012
 

Recently uploaded

2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
Hironori Washizaki
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 

Recently uploaded (20)

2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024SWEBOK and Education at FUSE Okinawa 2024
SWEBOK and Education at FUSE Okinawa 2024
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 

How to Build Your Own Product-Modeling Environment?

  • 1. How to Build Your Own Product Modeling Environment Tim Geisler webXcerpt Software GmbH tg@webxcerpt.com CWG 2012, Berlin 2012-05-08
  • 6. VClipse ● Eclipse-based textual product modeling environment ● for VC and IPC ● based on Xtext / EMF ● Open Source Eclipse Public License www.vclipse.org
  • 7. VClipse - VCML ● Textual language for SAP objects ● Embedded languages for dependencies (procedures, conditions, and constraints)
  • 8. IDE for VCML Validation Content Assist Quickfixes Cross References
  • 10. Interface to SAP ECC (ALE, RFC) ● RFC interface − Create, Read, Update, Delete − Extract recursively: model extraction ● ALE interface − Sending models via IDocs (PDR) ● Delta calculation − Compute and send only changed objects ● „One-click delta deployment“ − Send delta via PDR, automatic processing in SAP
  • 11. Graphical or Textual Product Modeling? Deutsch limit: You can’t have more than 50 visual primitives on the screen at the same time.
  • 12. Focus on Textual Product Models ● Dependencies are written in textual languages ● Teamwork support through mature version control systems ● Powerful tools exist and can be used for free: − Difference tools, search, replace, ... ● Enables offline product modeling ● More information is visible on a screen ● Text-based product modeling environments are easy to create with today's frameworks
  • 14. Why Own Specialized PME? ● Product modeling environments from SAP have to suit all models of all SAP customers ● Customer-specific product modeling is not supported − Naming conventions − Coding conventions − Variant functions − … ● Customer's notions not used − Not everything is a material, class, or characteristic
  • 15. VClipse is Not (Yet) Your Own PME ● not (yet) customer-specific ● Several layers to extend Vclipse: − As a user / modeler − As a (Java) programmer − As a contributor
  • 16. Extending VClipse – as Modeler Define your own templates E.g., template for determining amount of a material (specific coding convention)
  • 17. Extending VClipse – as Programmer Write your own plugins / extend VClipse plugins Specific validation rules ● e.g. naming conventions Resulting validation in VCML editor VcmlJavaValidator.java
  • 18. Extending VClipse – as Programmer Coding conventions / Framework code ● Classes and dependencies are required by the „framework“ for different functionalities ● Validation rules should check − if a certain procedure or dependency net is present, then certain classes must be present. − the order of procedures − … ● Templates (by a modeler) − The classification and configuration profile could be generated by a template.
  • 19. Extending VClipse – as Programmer ● Specific „intelligent“ templates Implementation:
  • 20. Specific Support for Variant Functions ● Implement specific validation ● Implement specific code templates PFunction Z_COPY_DEFAULT_MV ( GEN_CSTIC_1_NAME = 'MVCSTIC1' GEN_CSTIC_2_NAME = 'MVCSTIC2' GEN_INSTANCE = 'PARENT' ) name of multivalued characteristic one of SELF, PARENT, ROOT compatible type
  • 21. Specifying Variant Functions import "cstics.vcml" // contains all cstic definitions variantfunction Z_COPY_DEFAULT_MV "Copy default values (MV)" { GEN_CSTIC_1_NAME : in CharacteristicNameMV GEN_CSTIC_2_NAME : in CharacteristicNameMV GEN_INSTANCE : in CharacteristicValues } VCML Validation VCML Templates CML integration Java implementation stub Documentation ABAP implementation stub VCML Tooltips Variantfunction object Generating Artifacts:
  • 22. Extending VClipse – as Contributor Testing language VCMLT for VCML models (contributed to VClipse by Winfried Kung) See talk by Tim Geisler and Christophe Faure Track 3, 11:15 – 12:00
  • 23. Conceptual Gap ● SAP VC's concepts ● Implementation ● Standard languages ● Transactions ● VClipse ● Your concepts ● Specification ● Your languages ● Your own modeling environment
  • 24. Your Own Modeling Language ● Why? − Tailored to your concepts and needs − Means for specifying the product model − Means for communication with the domain expert − Formal specification language ● Overcome the gap by generating VCML code
  • 26. ConfigModeler – Initial Idea StandardizedStandardized productproduct descriptionsdescriptions FormalizedFormalized productproduct descriptionsdescriptions ConfigModeler + VClipse Eclipse-based IDEs code generation CML as specification and documentation language CWG 2010 Vienna CWG 2011 Cologne
  • 27. ConfigModeler – Languages CMLUI: User Interface CML: Product model CMLT: Test cases
  • 28. When to Create Own Language and Product Modeling Environment? ● Schematic product specifications ● Similarly structured products ● Schematic translation ● Schematic implementation ● Model migration from legacy to SAP − intermediate language with manipulation possibilities (refactoring, commented code, …) ● …
  • 29. My Own Product-Modeling Environment RFC Editor/IDE Editor/IDE my ConfigModeler VClipse myCML VCML my Code Generation
  • 30.
  • 31. Editor/IDE my ConfigModeler myCML my Code Generation Grammar Metamodel Scoping Validation Target Architecture Code Generation VClipse Adaptions Exports / Reports Graphical Views Import from Legacy Configurators
  • 32. Defining your Modeling-Language Grammar ● using the Xtext grammar language ● from this grammar, the following is derived: − metamodel (Ecore + Java classes) − parser − editor with syntax highlighting, cross references, content assist, outline, folding, ...
  • 33. Defining your Modeling-Language Metamodel Represents all product models in the domain (like a schema) ● EMF Ecore Meta Model ● Generated from grammar or defined separately ● Source of transformation
  • 34. Scoping Visibility of Objects for Cross References The implementation (really that short!):
  • 35. Defining your Target Architecture Clear: SAP Variant Configuration Open aspects: − Naming conventions − Which objects should be modeled? − Constraints / conditions on values? − BOM calculation − Use of variant tables − Use of certain variant functions − … Might be very company-specific!
  • 36. Code Generation Task: map myCML models (instances of your metamodel) to VCML models ● Respect your target architecture ● Either generate VCML as text − Model to text transformation languages − e.g. templating languages or frameworks ● or generate VCML as data structure − Model to model transformation languages − e.g. Java, Eclipse Xtend
  • 37. IDE Adaptions ● Xtext-based editors are highly extensible and configurable through dependency injection using Google Guice without modifying framework code. − Implement your desired behaviour by subclassing standard implementations. − Bind your defined subclass using dependency injection. ● Nearly each part of system can be adapted and replaced.
  • 39. Effort ● Prototype for small language can be build in about a week
  • 40. Is This a New Idea? No, in software engineering this idea is called Model-Driven Software Development ● Huge number of frameworks, tools, knowledgeable people, … exist. ● Current trend is to go from general UML models − to Domain-Specific Modeling − using Domain-Specific Languages
  • 41. Extending VClipse vs Own Modeling Language ● With VClipse, you can start small. − Need to learn only the required parts of the technology stack to implement − Usable with minimal training effort ● Possible improvements are bigger with own modeling language approach.
  • 42. Experiences at NSN ● Own modeling language (CML) used for 2/3 of all live product models ● Fully integrated side languages (UI, help texts, testing) ● Semi-automatic migration from legacy configurators ● VClipse mainly used as a backend to ConfigModeler ● Manual VCML editing mainly used for prototyping ● NSN-specific extensions to VCML just recently implemented ● Modelers even implemented a third level (they generate CML for certain classes of products)
  • 43. Summary ● Eclipse-based external textual modeling environments ● Various possibilites to extend VClipse ● Build own textual modeling language on top ● MDSD approach applied to product modeling ● Modern frameworks like Xtext allow quick implementation ● Approach successfully in production at NSN
  • 44. VClipse - Try It Out ● Ready-to-run from memory stick ● Eclipse 3.7.2 (Indigo) for Windows 32bit / 64 bit ● VClipse installed ● configured for CWG sandbox use ● VClipse sources – ready to change ● Sample workspace