SlideShare a Scribd company logo
1 of 45
Download to read offline
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 Software
Bill Duncan
 
Rhapsody Eclipse
Rhapsody EclipseRhapsody Eclipse
Rhapsody Eclipse
Bill Duncan
 
Product wise computer vision development
Product wise computer vision developmentProduct wise computer vision development
Product wise computer vision development
Yoss Cohen
 
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
 
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
BENOIT_LANGLOIS
 
Buildingwebapplicationswith.net
Buildingwebapplicationswith.netBuildingwebapplicationswith.net
Buildingwebapplicationswith.net
Kolagani Veera
 
Rational Functional Tester
Rational Functional TesterRational Functional Tester
Rational Functional Tester
Ravi 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 System
João Magalhães
 
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
 
Product planning & development
Product planning & developmentProduct planning & development
Product planning & development
Soma Giri
 

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?

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
 
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
 

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

CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 

Recently uploaded (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 

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