Code Generation in CDE - PowerPoint PPT Presentation

About This Presentation
Title:

Code Generation in CDE

Description:

Cartridge Specification Language. Object Property Modeling ... Specification of cartridge organization, data model (C , script), mappings, commands... – PowerPoint PPT presentation

Number of Views:23
Avg rating:3.0/5.0
Slides: 25
Provided by: usersEncs
Category:

less

Transcript and Presenter's Notes

Title: Code Generation in CDE


1
Code Generationin CDE
  • Remi Lequette
  • ILOG

2
Overview
  • Introduction
  • ILOG VCM
  • CDE
  • CDE architecture
  • Cartridge structure
  • Generated artifacts
  • Generation technique
  • The OPML language
  • The UML model
  • The generators
  • Conclusion

3
ILOG
  • Provides Software Components
  • C and Java class libraries
  • Graphics, Rules
  • Optimization Linear, Constraints, Scheduling,
    Dispatching.
  • Telecom, Transportation Finance, VCM
  • Provides consulting
  • VCM Division
  • Value Chain Management (production distribution
    planning)
  • ISV customers (SAP, Oracle, ) ERP - SCM
  • End User customers (in house development)

4
CDE - Cartridge Development Env.
  • Target is ERP - SCM users
  • They have data and an execution system
  • They have an optimization problem
  • Generic solution is not applicable
  • They buy a solution from
  • ILOG consulting
  • Consulting firm
  • Third party reusable solution
  • CDE provides cartridges
  • Reusable architecture
  • Code, projects, documentation generation
  • Data access (files, RDBMS, ERP system)
  • Increase productivity by focus on optimization
    code

5
CDE Cartridge
Application Server
Cartridge
  • Provides a standard architecture
  • Provides a flexible integration framework
  • Provides a toolbox for development

Architecture
6
Detailed Architecture
high level entry points
GUI, console, batch
optimization algorithm
interface to external data sources
Architecture
internal relational model mapping
internal object-oriented model
7
Typical Data Flow
2. mapping check
3. data transformation check
1. data loading
7. solution saving
4. optimization
Architecture
6. mapping check
5. solution transformation check
8
Cartridge Generation
customizable module
Commands
Control
External Mapping
Algorithm
Internal Mapping
Data Model
Transformation
CDE/ILOG libraries
CDE code generation
CDE specification
Integrator
Developer
Integrator
Architecture
9
Generated Artifacts
  • Code
  • Data model in C
  • Script access to the data model
  • Relational mapping
  • Documentation
  • Classes, tables, commands
  • GUI
  • Code and panels for testing the cartridge
  • Directories
  • Project organization, test structure
  • Compilation projects
  • For Microsoft Visual Studio

10
Generation Technology
OPML specification
CDE Generator
Data Access
HTML documentation
Model Implementation
Scripting Interface
CDE Libraries
ILOG optimization Libraries
Cartridge
Algorithm
Architecture
11
Cartridge Specification Language
  • Object Property Modeling Language (OPML)
  • Based on UML concepts classes, components,
    stereotypes...
  • Textual language
  • Specification of cartridge organization, data
    model (C, script), mappings, commands
  • Advanced property management
  • Properties can be attached to model elements
  • Property tool
  • Declares available properties for a tool cpp,
    script, documentation...
  • Property definition name, types, default
    values, related elements...
  • Property instance holds property values for a
    given model

OPML
12
Project
// This is an internal comment include
ltilcde/case/opml/opml.ptygt include
ltilcde/datacon/ecpi/RelationalSchema.ptygt include
ltilcde/datacon/ecpi/dbm.ptygt project christmas
cpp Cpp // C generation jscript
JScript // scripting category classes
subsystem components
include of other OPML files
declares property instances
contains categories and subsystems
  • Top level namespace
  • Contains categories and subsystems

OPML
13
Categories and Classes
project christmas ... category christmas
cpp.generate yes visibility private
/ HTML Documentation for
Location / class Location
... class Application
ilcdeCollector visibility
protected ...
assigns a Cpp property for the category
assigns OPML property
defines christmasLocation Class
super class
OPML
14
Stereotypes
  • Gives a specific semantic to an element
  • Used to set properties on OPML elements

ltlttablegtgt class EMPLOYEE ...
class Member fullName String custom
true readOnly true ...
class Member ltltderivedgtgt fullName String
...
OPML
15
Attributes and Roles
class Solution name String ltltstaticgtgt
LastId ID "0" class Member birthDate
Date before class Location
role family Family
  • Attribute primitive types and external classes
  • Role reference to one or more objects

OPML
16
Operations
parameter
return type
class Member operation computeAge( today
Date ) Integer const ltltstaticgtgt
operation DateToInteger( d1 Date ) Integer
ltltvirtualgtgt operation doIt() class Family
operation addNewMember( name String,
birthDate Date 0,
info String \no info\
) ...
OPML
Default value
17
Dependencies
  • Define relations between elements

project christmas ... include
ltilcde/stdtypes.opmlgt category christmas
cpp.generate yes collect
ltltimportgtgt depends ilcde class
ID id String class
Location ... ...
declares the ilcde category
imports ilcde category
accessible string type
OPML
18
Subsystems and Components
  • Component logical or physical part
  • Subsystem group of components

component that defines the documentation to be
generated
project christmas ... category christmas
... subsystem doccomp
ltltdocumentationgtgt component ModelDoc
modelDoc.target html modelDoc.htmlHome"h
ttp//www.ilog.fr" modelDoc.htmlHelp"help.
html" modelDoc.title"christmas related
classes" depends categories
christmas
OPML
selection of categories
19
Script Language
  • ILOG Implementation of JavaScript
  • Extended with access to C classes generated
    with CDE
  • Interpreted language with object-oriented
    features
  • Used for
  • Cartridge Development
  • Test and Debug
  • Pros
  • Flexible, fast development
  • Clean binding of C
  • Good language structure (scopes)
  • Cons
  • No type checking
  • Weak object-oriented model for pure script code

20
The UML Model
  • Written in OPML
  • Model generated with CDE
  • Parser reads the OPML file and create model in
    memory
  • Provides powerful property access
  • Script interface for writing generators

21
Generators
  • Written in Script
  • Control structure in script
  • Generated areas with special comments (//_at_)
  • A preprocessor adds the write statements

//_at_class clazz.name if (clazz.hasConstructo
r() //_at_ clazz.name() ...
22
Preserved Areas
  • Set by the generator
  • The old file is read
  • The content is preserved
  • Note that new file is compared with old file

Generator.printPreserveArea(beforeClass_clazz
.name) //_at_class clazz.name ...
//beginPreserve beforeClass_MyClass Add user
code here //endPreserve beforeClass_MyClass class
MyClass ...
23
Generation Framework
  • Written in Script
  • A hierarchy of Controllers for structure
    mapping
  • OpmlController Iterates on UML elements
  • APIController Generate operations to access the
    attributes
  • CppController Provides filtering for C
  • Header and Code file generator
  • Tools for element mappings
  • C name of a class
  • C prototype for an operation

24
Conclusion
  • CDE
  • Already used with good feedbacks
  • Used within CDE (UML, libraries)
  • OPML
  • Powerful modeling tool, easy to extend.
  • Lack graphic interface.
  • Generators with Script
  • Very flexible (no rigid structure)
  • Easy to write a framework for reuse
  • Lack compile-time checks
  • Lack formal description
Write a Comment
User Comments (0)
About PowerShow.com