SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
ConfigModeler and VClipse
Languages and IDEs for Product Modeling
on Different Abstraction Levels
Tim Geisler
webXcerpt Software GmbH
tg@webxcerpt.com
CWG 2010, Vienna 2010-04-20
Product Modeling Gap
●
Post-merger consolidation:
harmonize SAP and non-SAP systems
for sales and configuration
●
SAP ERP/PLM (VC) + SAP CRM 2007 (IPC)
●
Migration challenge:
How to migrate 6 product lines / more than 240
different products to VC / IPC?
(CWG 2009 Berlin talk by Gerhard Hering, NSN)
Product Modeling @
Fabric-like Modeling
NSN VC framework
IPC extensions
coding conventions
Nearshore
VC modeling
team
Company-wide
generic product
structure
Standardized
product descriptions
Fabric-like Modeling
NSN VC framework
IPC extensions
coding conventions
Nearshore
VC modeling
team
Company-wide
generic product
structure
Standardized
product descriptions
Standardized Product Descriptions
●
Product structure
●
Characteristics
(domains, texts, default
values, interface
design)
●
Quantity rules for
materials
●
Other rules
In-house product experts specify product models
Problems
Excel „template“ used as graph paper
●
pseudo code – manual translation required
●
manual tracking of changes
●
no guarantee for completeness
●
no specific tool support – just general Excel
●
first visual feedback with product setup
Standardized Product Descriptions
Standardized Product Descriptions
Formalized Product Descriptions
Formalized Product Descriptions
Domain specific language
●
problem-oriented
●
human-understandable
●
text-based
●
machine-processable
Configuration Modeling Language (CML)
Configuration Modeling Language
Products
Materials
Value Domains
Parameters
Equations
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
Configuration Modeling Language
Products
Materials
Value Domains
Parameters
Equations
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
Configuration Modeling Language
Products
Materials
Value Domains
Parameters
Equations
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
Configuration Modeling Language
Products
Materials
Value Domains
Parameters
Equations
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
Configuration Modeling Language
Products
Materials
Value Domains
Parameters
Equations
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
Configuration Modeling Language
Identifiers
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
Configuration Modeling Language
Identifiers
Slotting
product CWGSwitch is #ABC000010000630 {
uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL;
domain boards =
switch uplink {
case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE];
case 1GE : [*unequipped, 8x1GE, 16x1GE];
};
product interfaceSubsystem is #ABC000010000640 {
slot slot1 in boards is XYZ_CWGSWITCH_SLOT01;
slot slot2 in boards is XYZ_CWGSWITCH_SLOT02;
slot slot3 in boards is XYZ_CWGSWITCH_SLOT03;
slot slot4 in boards is XYZ_CWGSWITCH_SLOT04;
slotable #2x10GE is #ABC00001000634;
slotable #8x1GE is #ABC00001000635;
slotable #16x1GE is #ABC00001000636;
check(#2x10GE > 2, "Only two 2x10GE boards allowed");
};
product powerSubsystem is #ABC000010000641 {
power in [*AC, DC] is XYZ_CWGSWITCH_PWR;
powerRedundancy in
if power == AC
then [*false, true]
else disabled false
is XYZ_CWGSWITCH_PWRRED;
amountPowerSupplies = 1 + (1 when powerRedundancy);
#POWER:AC = amountPowerSupplies when power == AC;
...
};
...
Configuration Modeling Language
Identifiers
Slotting
Conditionals
Configuration Modeling Language
Parallel conditions
●
Value domains
●
Default values
●
Visibility
hw/sw in
if isNewDelivery
then switch chassis {
case Chassis:A : [NoHW/SW, *HW/SW1, HW/SW2];
case Chassis:B :
case Chassis:C : [NoHW/SW, *HW/SW2, HW/SW3];
case Chassis:D : disabled HW/SW1;
default : invisible NoHW/SW;
}
else invisible NoHW/SW;
Configuration Modeling Language
Parallel conditions
●
Value domains
●
Default values
●
Visibility
hw/sw in
if isNewDelivery
then switch chassis {
case Chassis:A : [NoHW/SW, *HW/SW1, HW/SW2];
case Chassis:B :
case Chassis:C : [NoHW/SW, *HW/SW2, HW/SW3];
case Chassis:D : disabled HW/SW1;
default : invisible NoHW/SW;
}
else invisible NoHW/SW;
Configuration Modeling Language
Parallel conditions
●
Value domains
●
Default values
●
Visibility
hw/sw in
if isNewDelivery
then switch chassis {
case Chassis:A : [NoHW/SW, *HW/SW1, HW/SW2];
case Chassis:B :
case Chassis:C : [NoHW/SW, *HW/SW2, HW/SW3];
case Chassis:D : disabled HW/SW1;
default : invisible NoHW/SW;
}
else invisible NoHW/SW;
ConfigModeler
Integrated Development Environment (IDE)
for CML
●
Eclipse-based
General IDE Features
Syntax checks
General IDE Features
Syntax checks
Checking references
General IDE Features
Syntax checks
Checking references
Checking types
General IDE Features
Syntax checks
Checking references
Checking types
Code completion
General IDE Features
Syntax checks
Checking references
Checking types
Code completion
Cycle detection
General IDE Features
Diff and history
Domain-specific IDE Features
Additional information
Domain-specific IDE Features
Additional information
Dependency graph
Domain-specific IDE Features
Additional information
Dependency graph
IPC preview for user interface
VC Code Generation
Automatic generation of SAP product model
from formal specification in CML
VC Code Generation
Uses NSN VC framework and coding conventions
...
* count slotable material
PFUNCTION Z_VC_GEN_AGG_INST_02 (
GEN_CSTIC_IN_PREFIX_01 = 'XYZ_CWGSWITCH_SLOT',
GEN_CSTIC_IN_PREFIX_02 = 'NA',
GEN_CSTIC_IN_PREFIX_03 = 'NA',
GEN_CSTIC_IN_PREFIX_04 = 'NA',
GEN_CSTIC_QTY_PREFIX = 'NA',
GEN_DIGITS = 2,
GEN_CSTIC_OUT = 'GEN_CML_AGG_MODULES',
GEN_INSTANCE_START = 'PARENT',
GEN_INCL_START_INST = 'T',
GEN_INCL_SELF_INST = 'F',
GEN_RECURSIVE = 'F',
GEN_AGG_CTRL_SUFFIX = 'NA',
GEN_AGG_CTRL_MATNR_LIST = 'NA',
GEN_AGG_CTRL_CLASS = 'NA',
GEN_AGG_CTRL_CSTIC = 'NA',
GEN_AGG_CTRL_VAL = 'NA',
GEN_MODE = 'DELETE'),
* slotable material #2x10GE
PFUNCTION Z_VC_GEN_GET_COMP_DATA_01 (
GEN_CSTIC_IN = 'GEN_CML_AGG_MODULES',
GEN_INSTANCE_IN = 'SELF',
GEN_VAL_CHAR_01 = '2x10GE',
GEN_INDEX_NUM = 1,
GEN_COMP_QTY = $SELF.GEN_AUX_NUM_01),
PFUNCTION Z_VC_GEN_SET_VBOM_MU (
GEN_MU_ID = 'ABC00001000634',
GEN_MU_QTY = $SELF.GEN_AUX_NUM_01,
GEN_VBOM_CSTIC = 'GEN_VBOM_CURR') IF $SELF.GEN_AUX_NUM_01 GT 0,
...
VC Code Generation
Automated model setup
via Product Data Replication
PDR
Use of ConfigModeler at NSN
●
Product specialists specify and set up
products models in SAP
●
20 users (10 regular)
●
up to now 60 products
●
but: not a tool for all products
System Overview
RFC
Editor
ConfigModeler
CML
Compiler
Product Modeling in SAP VC
existing:
●
textual languages for procedures and constraints
●
interactive creation and change of VC objects
missing:
●
human-readable textual language for VC objects
– diff / merge / version control
– find / replace
– partial models
– product model as a document
System Overview
RFC
Editor
ConfigModeler
CML
Compiler
System Overview
RFC
Editor
Editor
ConfigModeler
VClipse
CML
VCML
Compiler
VCML: DSL for SAP VC
●
Simple DSL for SAP VC objects
with embedded languages
for procedures and constraints
●
DSL design:
●
Make it simple
●
Model only important properties of SAP objects,
others are hard-wired or defaulted
VCML Example: Characteristic
characteristic WP_OPTIONS {
description "Web Phone Options"
documentation "Some long documentation on Web Phone Options"
symbolic {
numberOfChars 3
values {
'001' { description "Cable for connecting monitor" }
'002' { description "Voice mail" }
'003' { description "Camera" }
'004' { description "Additional Antenna" }
'005' { description "Memory Upgrade"
dependencies {
WP_MEMORY_UPGRADE
}
}
'006' { description "Self-Cleaning Screen" }
}
}
status released
[ multiValue required ]
}
VCML Example: Precondition
precondition WP_MEMORY_UPGRADE {
description "Precond. for memory upgrade"
status released
source {
* memory upgrade is only allowed with answering machine
$self.WP_options specified and
$self.WP_options = '002'.
}
}
VClipse: Eclipse-based IDE for VCML
Syntax check
VClipse: Eclipse-based IDE for VCML
Syntax check
Jump to definition
VClipse: Eclipse-based IDE for VCML
Syntax check
Jump to definition
VClipse: Eclipse-based IDE for VCML
Syntax check
Jump to definition
Code completion
VClipse: Eclipse-based IDE for VCML
Syntax check
Jump to definition
Code completion
Outline
Document order PMEVC order
VClipse: Eclipse-based IDE for VCML
Syntax check
Jump to definition
Code completion
Outline
Diff / merge
History
Interfaces to SAP: RFC-based
CRUD operations
Recursive model extraction
Interfaces to SAP: IDoc-based
Send complete product models
via Product Data Replication (PDR)
VCML JCo IDocs UPS
PDR
VClipse is Free
VClipse is Free
VClipse.org: Open Source
Use, adapt, integrate, contribute!
Summary
Product modeling is like programming
●
Use appropriate languages
●
Use appropriate tools
Tool chain for text-based product modeling
●
CML, VCML:
two languages with different abstraction levels
●
ConfigModeler, VClipse:
two Eclipse-based IDEs
Summary
Thanks to ...
●
various persons at Nokia Siemens Networks
●
Peter Muthsam (VC knowledge)
●
Daniel Naus (CWG Sandbox)
●
itemis (Xtext)
●
webXcerpt team
ConfigModeler and VClipse Languages and IDEs for Product Modeling on Different Abstraction Levels

Contenu connexe

Similaire à ConfigModeler and VClipse Languages and IDEs for Product Modeling on Different Abstraction Levels

Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!PVS-Studio
 
OpenWorld Sep14 12c for_developers
OpenWorld Sep14 12c for_developersOpenWorld Sep14 12c for_developers
OpenWorld Sep14 12c for_developersConnor McDonald
 
hdl timer ppt.pptx
hdl timer ppt.pptxhdl timer ppt.pptx
hdl timer ppt.pptxChethaSp
 
Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...
Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...
Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...authelectroniccom
 
huawei-s5735-s24st4xe-v2-brochure-datasheet.pdf
huawei-s5735-s24st4xe-v2-brochure-datasheet.pdfhuawei-s5735-s24st4xe-v2-brochure-datasheet.pdf
huawei-s5735-s24st4xe-v2-brochure-datasheet.pdfHi-Network.com
 
Iai xsel r_s_specsheet
Iai xsel r_s_specsheetIai xsel r_s_specsheet
Iai xsel r_s_specsheetElectromate
 
NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)Igalia
 
VLSI Design Final Project - 32 bit ALU
VLSI Design Final Project - 32 bit ALUVLSI Design Final Project - 32 bit ALU
VLSI Design Final Project - 32 bit ALUSachin Kumar Asokan
 

Similaire à ConfigModeler and VClipse Languages and IDEs for Product Modeling on Different Abstraction Levels (20)

Timer ppt
Timer pptTimer ppt
Timer ppt
 
Rapport
RapportRapport
Rapport
 
Der perfekte 12c trigger
Der perfekte 12c triggerDer perfekte 12c trigger
Der perfekte 12c trigger
 
Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!Hello, Is That FreeSWITCH? Then We're Coming to Check You!
Hello, Is That FreeSWITCH? Then We're Coming to Check You!
 
OpenWorld Sep14 12c for_developers
OpenWorld Sep14 12c for_developersOpenWorld Sep14 12c for_developers
OpenWorld Sep14 12c for_developers
 
Ver2.ppt
Ver2.pptVer2.ppt
Ver2.ppt
 
Fpga creating counter with internal clock
Fpga   creating counter with internal clockFpga   creating counter with internal clock
Fpga creating counter with internal clock
 
Experiment 16 x2 parallel lcd
Experiment   16 x2 parallel lcdExperiment   16 x2 parallel lcd
Experiment 16 x2 parallel lcd
 
hdl timer ppt.pptx
hdl timer ppt.pptxhdl timer ppt.pptx
hdl timer ppt.pptx
 
Load cell
Load cellLoad cell
Load cell
 
Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...
Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...
Original DARLING TRANSISTOR ARRAY IC ULQ2003A 2003A 2003 SOP-16 New Texas Ins...
 
4511
45114511
4511
 
Session1
Session1Session1
Session1
 
huawei-s5735-s24st4xe-v2-brochure-datasheet.pdf
huawei-s5735-s24st4xe-v2-brochure-datasheet.pdfhuawei-s5735-s24st4xe-v2-brochure-datasheet.pdf
huawei-s5735-s24st4xe-v2-brochure-datasheet.pdf
 
Data Flow Modeling
Data Flow ModelingData Flow Modeling
Data Flow Modeling
 
Iai xsel r_s_specsheet
Iai xsel r_s_specsheetIai xsel r_s_specsheet
Iai xsel r_s_specsheet
 
Basic-VHDL-Constructs1.ppt
Basic-VHDL-Constructs1.pptBasic-VHDL-Constructs1.ppt
Basic-VHDL-Constructs1.ppt
 
NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)
 
project report
project reportproject report
project report
 
VLSI Design Final Project - 32 bit ALU
VLSI Design Final Project - 32 bit ALUVLSI Design Final Project - 32 bit ALU
VLSI Design Final Project - 32 bit ALU
 

Plus de Tim Geisler

Tools for Test-Driven Product Modeling
Tools for Test-Driven Product ModelingTools for Test-Driven Product Modeling
Tools for Test-Driven Product ModelingTim Geisler
 
openCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration ToolkitopenCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration ToolkitTim Geisler
 
Configuring in the Browser, Really!
Configuring in the Browser, Really!Configuring in the Browser, Really!
Configuring in the Browser, Really!Tim Geisler
 
VClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant ConfiguratorVClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant ConfiguratorTim Geisler
 
How to Create Your Own Product-Modeling Environment
How to Create Your Own Product-Modeling EnvironmentHow to Create Your Own Product-Modeling Environment
How to Create Your Own Product-Modeling EnvironmentTim Geisler
 
Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...
Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...
Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...Tim Geisler
 

Plus de Tim Geisler (6)

Tools for Test-Driven Product Modeling
Tools for Test-Driven Product ModelingTools for Test-Driven Product Modeling
Tools for Test-Driven Product Modeling
 
openCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration ToolkitopenCPQ - A React-Based Product-Configuration Toolkit
openCPQ - A React-Based Product-Configuration Toolkit
 
Configuring in the Browser, Really!
Configuring in the Browser, Really!Configuring in the Browser, Really!
Configuring in the Browser, Really!
 
VClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant ConfiguratorVClipse – Xtext-based IDE for the SAP Variant Configurator
VClipse – Xtext-based IDE for the SAP Variant Configurator
 
How to Create Your Own Product-Modeling Environment
How to Create Your Own Product-Modeling EnvironmentHow to Create Your Own Product-Modeling Environment
How to Create Your Own Product-Modeling Environment
 
Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...
Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...
Domain-Specific Languages for Product Modeling (CWG 2011 Cologne, SAP Configu...
 

Dernier

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 WorkerThousandEyes
 
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 🔝✔️✔️Delhi Call girls
 
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.pdfkalichargn70th171
 
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 AIABDERRAOUF MEHENNI
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
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 ApplicationsAlberto González Trastoy
 
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.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
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 CCTVshikhaohhpro
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
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...ICS
 
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 GoalsJhone kinadey
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
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 ...OnePlan Solutions
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
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.jsAndolasoft Inc
 
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 serviceanilsa9823
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 

Dernier (20)

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
 
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 🔝✔️✔️
 
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
 
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
 
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
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
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
 
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
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
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
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
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...
 
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
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
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 ...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
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
 
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
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 

ConfigModeler and VClipse Languages and IDEs for Product Modeling on Different Abstraction Levels

  • 1. ConfigModeler and VClipse Languages and IDEs for Product Modeling on Different Abstraction Levels Tim Geisler webXcerpt Software GmbH tg@webxcerpt.com CWG 2010, Vienna 2010-04-20
  • 3. ● Post-merger consolidation: harmonize SAP and non-SAP systems for sales and configuration ● SAP ERP/PLM (VC) + SAP CRM 2007 (IPC) ● Migration challenge: How to migrate 6 product lines / more than 240 different products to VC / IPC? (CWG 2009 Berlin talk by Gerhard Hering, NSN) Product Modeling @
  • 4. Fabric-like Modeling NSN VC framework IPC extensions coding conventions Nearshore VC modeling team Company-wide generic product structure Standardized product descriptions
  • 5. Fabric-like Modeling NSN VC framework IPC extensions coding conventions Nearshore VC modeling team Company-wide generic product structure Standardized product descriptions
  • 6. Standardized Product Descriptions ● Product structure ● Characteristics (domains, texts, default values, interface design) ● Quantity rules for materials ● Other rules In-house product experts specify product models
  • 7. Problems Excel „template“ used as graph paper ● pseudo code – manual translation required ● manual tracking of changes ● no guarantee for completeness ● no specific tool support – just general Excel ● first visual feedback with product setup
  • 10. Formalized Product Descriptions Domain specific language ● problem-oriented ● human-understandable ● text-based ● machine-processable Configuration Modeling Language (CML)
  • 11. Configuration Modeling Language Products Materials Value Domains Parameters Equations product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ...
  • 12. Configuration Modeling Language Products Materials Value Domains Parameters Equations product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ...
  • 13. Configuration Modeling Language Products Materials Value Domains Parameters Equations product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ...
  • 14. Configuration Modeling Language Products Materials Value Domains Parameters Equations product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ...
  • 15. product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ... Configuration Modeling Language Products Materials Value Domains Parameters Equations
  • 16. product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ... Configuration Modeling Language Identifiers
  • 17. product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ... Configuration Modeling Language Identifiers Slotting
  • 18. product CWGSwitch is #ABC000010000630 { uplink in [10GE, *1GE] is XYZ_CWGSWITCH_UPL; domain boards = switch uplink { case 10GE : [*unequipped, 2x10GE, 8x1GE, 16x1GE]; case 1GE : [*unequipped, 8x1GE, 16x1GE]; }; product interfaceSubsystem is #ABC000010000640 { slot slot1 in boards is XYZ_CWGSWITCH_SLOT01; slot slot2 in boards is XYZ_CWGSWITCH_SLOT02; slot slot3 in boards is XYZ_CWGSWITCH_SLOT03; slot slot4 in boards is XYZ_CWGSWITCH_SLOT04; slotable #2x10GE is #ABC00001000634; slotable #8x1GE is #ABC00001000635; slotable #16x1GE is #ABC00001000636; check(#2x10GE > 2, "Only two 2x10GE boards allowed"); }; product powerSubsystem is #ABC000010000641 { power in [*AC, DC] is XYZ_CWGSWITCH_PWR; powerRedundancy in if power == AC then [*false, true] else disabled false is XYZ_CWGSWITCH_PWRRED; amountPowerSupplies = 1 + (1 when powerRedundancy); #POWER:AC = amountPowerSupplies when power == AC; ... }; ... Configuration Modeling Language Identifiers Slotting Conditionals
  • 19. Configuration Modeling Language Parallel conditions ● Value domains ● Default values ● Visibility hw/sw in if isNewDelivery then switch chassis { case Chassis:A : [NoHW/SW, *HW/SW1, HW/SW2]; case Chassis:B : case Chassis:C : [NoHW/SW, *HW/SW2, HW/SW3]; case Chassis:D : disabled HW/SW1; default : invisible NoHW/SW; } else invisible NoHW/SW;
  • 20. Configuration Modeling Language Parallel conditions ● Value domains ● Default values ● Visibility hw/sw in if isNewDelivery then switch chassis { case Chassis:A : [NoHW/SW, *HW/SW1, HW/SW2]; case Chassis:B : case Chassis:C : [NoHW/SW, *HW/SW2, HW/SW3]; case Chassis:D : disabled HW/SW1; default : invisible NoHW/SW; } else invisible NoHW/SW;
  • 21. Configuration Modeling Language Parallel conditions ● Value domains ● Default values ● Visibility hw/sw in if isNewDelivery then switch chassis { case Chassis:A : [NoHW/SW, *HW/SW1, HW/SW2]; case Chassis:B : case Chassis:C : [NoHW/SW, *HW/SW2, HW/SW3]; case Chassis:D : disabled HW/SW1; default : invisible NoHW/SW; } else invisible NoHW/SW;
  • 22. ConfigModeler Integrated Development Environment (IDE) for CML ● Eclipse-based
  • 24. General IDE Features Syntax checks Checking references
  • 25. General IDE Features Syntax checks Checking references Checking types
  • 26. General IDE Features Syntax checks Checking references Checking types Code completion
  • 27. General IDE Features Syntax checks Checking references Checking types Code completion Cycle detection
  • 30. Domain-specific IDE Features Additional information Dependency graph
  • 31. Domain-specific IDE Features Additional information Dependency graph IPC preview for user interface
  • 32. VC Code Generation Automatic generation of SAP product model from formal specification in CML
  • 33. VC Code Generation Uses NSN VC framework and coding conventions ... * count slotable material PFUNCTION Z_VC_GEN_AGG_INST_02 ( GEN_CSTIC_IN_PREFIX_01 = 'XYZ_CWGSWITCH_SLOT', GEN_CSTIC_IN_PREFIX_02 = 'NA', GEN_CSTIC_IN_PREFIX_03 = 'NA', GEN_CSTIC_IN_PREFIX_04 = 'NA', GEN_CSTIC_QTY_PREFIX = 'NA', GEN_DIGITS = 2, GEN_CSTIC_OUT = 'GEN_CML_AGG_MODULES', GEN_INSTANCE_START = 'PARENT', GEN_INCL_START_INST = 'T', GEN_INCL_SELF_INST = 'F', GEN_RECURSIVE = 'F', GEN_AGG_CTRL_SUFFIX = 'NA', GEN_AGG_CTRL_MATNR_LIST = 'NA', GEN_AGG_CTRL_CLASS = 'NA', GEN_AGG_CTRL_CSTIC = 'NA', GEN_AGG_CTRL_VAL = 'NA', GEN_MODE = 'DELETE'), * slotable material #2x10GE PFUNCTION Z_VC_GEN_GET_COMP_DATA_01 ( GEN_CSTIC_IN = 'GEN_CML_AGG_MODULES', GEN_INSTANCE_IN = 'SELF', GEN_VAL_CHAR_01 = '2x10GE', GEN_INDEX_NUM = 1, GEN_COMP_QTY = $SELF.GEN_AUX_NUM_01), PFUNCTION Z_VC_GEN_SET_VBOM_MU ( GEN_MU_ID = 'ABC00001000634', GEN_MU_QTY = $SELF.GEN_AUX_NUM_01, GEN_VBOM_CSTIC = 'GEN_VBOM_CURR') IF $SELF.GEN_AUX_NUM_01 GT 0, ...
  • 34. VC Code Generation Automated model setup via Product Data Replication PDR
  • 35. Use of ConfigModeler at NSN ● Product specialists specify and set up products models in SAP ● 20 users (10 regular) ● up to now 60 products ● but: not a tool for all products
  • 37. Product Modeling in SAP VC existing: ● textual languages for procedures and constraints ● interactive creation and change of VC objects missing: ● human-readable textual language for VC objects – diff / merge / version control – find / replace – partial models – product model as a document
  • 40. VCML: DSL for SAP VC ● Simple DSL for SAP VC objects with embedded languages for procedures and constraints ● DSL design: ● Make it simple ● Model only important properties of SAP objects, others are hard-wired or defaulted
  • 41. VCML Example: Characteristic characteristic WP_OPTIONS { description "Web Phone Options" documentation "Some long documentation on Web Phone Options" symbolic { numberOfChars 3 values { '001' { description "Cable for connecting monitor" } '002' { description "Voice mail" } '003' { description "Camera" } '004' { description "Additional Antenna" } '005' { description "Memory Upgrade" dependencies { WP_MEMORY_UPGRADE } } '006' { description "Self-Cleaning Screen" } } } status released [ multiValue required ] }
  • 42. VCML Example: Precondition precondition WP_MEMORY_UPGRADE { description "Precond. for memory upgrade" status released source { * memory upgrade is only allowed with answering machine $self.WP_options specified and $self.WP_options = '002'. } }
  • 43. VClipse: Eclipse-based IDE for VCML Syntax check
  • 44. VClipse: Eclipse-based IDE for VCML Syntax check Jump to definition
  • 45. VClipse: Eclipse-based IDE for VCML Syntax check Jump to definition
  • 46. VClipse: Eclipse-based IDE for VCML Syntax check Jump to definition Code completion
  • 47. VClipse: Eclipse-based IDE for VCML Syntax check Jump to definition Code completion Outline Document order PMEVC order
  • 48. VClipse: Eclipse-based IDE for VCML Syntax check Jump to definition Code completion Outline Diff / merge History
  • 49. Interfaces to SAP: RFC-based CRUD operations Recursive model extraction
  • 50. Interfaces to SAP: IDoc-based Send complete product models via Product Data Replication (PDR) VCML JCo IDocs UPS PDR
  • 53. VClipse.org: Open Source Use, adapt, integrate, contribute!
  • 54. Summary Product modeling is like programming ● Use appropriate languages ● Use appropriate tools Tool chain for text-based product modeling ● CML, VCML: two languages with different abstraction levels ● ConfigModeler, VClipse: two Eclipse-based IDEs
  • 56. Thanks to ... ● various persons at Nokia Siemens Networks ● Peter Muthsam (VC knowledge) ● Daniel Naus (CWG Sandbox) ● itemis (Xtext) ● webXcerpt team