Presentation is loading. Please wait.

Presentation is loading. Please wait.

0 - 1 Code Generation in CDE Remi Lequette ILOG. 0 - 2 Overview Introduction ILOG & VCM CDE CDE architecture Cartridge structure Generated artifacts Generation.

Similar presentations


Presentation on theme: "0 - 1 Code Generation in CDE Remi Lequette ILOG. 0 - 2 Overview Introduction ILOG & VCM CDE CDE architecture Cartridge structure Generated artifacts Generation."— Presentation transcript:

1 0 - 1 Code Generation in CDE Remi Lequette ILOG

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

3 0 - 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 0 - 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 0 - 5 Application Server Cartridge Algorithm Control GUI Data Model CDE Cartridge Provides a standard architecture Provides a flexible integration framework Provides a toolbox for development Architecture

6 0 - 6 Detailed Architecture Commands Internal Mapping Data Model Algorithm Control Transformation External Mapping interface to external data sources internal relational model mapping high level entry points internal object- oriented model GUI, console, batch optimization algorithm Architecture

7 0 - 7 Typical Data Flow Commands Internal Mapping Data Model Algorithm Control Transformation External Mapping 7. solution saving 6. mapping & check 4. optimization 5. solution transformation & check Architecture 1. data loading 2. mapping & check 3. data transformation & check

8 0 - 8 Cartridge Generation ECPI Structure Model Tables Commands Internal Mapping Data Model Algorithm Control Transformation External Mapping Integrator Developer Integrator CDE/ILOG libraries CDE specification CDE code generation customizable module Architecture

9 0 - 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 Model Implementation Scripting Interface Data Access Cartridge CDE Libraries Templates CDE Generator HTML documentation Algorithm Architecture ILOG optimization Libraries

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

12 // This is an internal comment #include 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 Project Top level namespace Contains categories and subsystems OPML

13 project christmas {... category christmas { cpp.generate = yes; visibility= private; /** * HTML Documentation for Location */ class Location {... } class Application : ilcde::Collector { visibility= protected; }... } defines christmas::Location Class super class Categories and Classes OPML assigns a Cpp property for the category assigns OPML property

14 class Member { > fullName : String;... } class Member { fullName : String { custom = true; readOnly = true; }... } > class EMPLOYEE {... } Stereotypes Gives a specific semantic to an element Used to set properties on OPML elements OPML

15 class Solution { name : String; > LastId : ID = "0"; } class Member { birthDate : Date { before; } class Location { role family : Family; } Attributes and Roles Attribute: primitive types and external classes Role: reference to one or more objects OPML

16 class Member { operation computeAge( today : Date ): Integer { const; } > operation DateToInteger( d1 : Date ) : Integer; > operation doIt(); } class Family { operation addNewMember( name : String, birthDate : Date = 0, info : String = \no info\ );... } parameter Default value return type Operations OPML

17 project christmas {... #include category christmas { cpp.generate = yes; collect; > depends : ilcde; class ID { id : String; } class Location {... }... } imports ilcde category declares the ilcde category Dependencies Define relations between elements OPML accessible string type

18 project christmas {... category christmas {... } subsystem doccomp { > component ModelDoc { modelDoc.target = html; modelDoc.htmlHome="http://www.ilog.fr"; modelDoc.htmlHelp="help.html"; modelDoc.title="christmas related classes"; depends categories : christmas; } component that defines the documentation to be generated selection of categories Subsystems and Components Component = logical or physical part Subsystem = group of components OPML

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 A preprocessor adds the write statements … ${clazz.name} { if (clazz.hasConstructor() { ${clazz.name}(); }...

22 Preserved Areas … //beginPreserve beforeClass_MyClass Add user code here //endPreserve beforeClass_MyClass class MyClass {... … Generator.printPreserveArea(beforeClass_+clazz.name) ${clazz.name} {... Set by the generator The old file is read The content is preserved Note that new file is compared with old file

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


Download ppt "0 - 1 Code Generation in CDE Remi Lequette ILOG. 0 - 2 Overview Introduction ILOG & VCM CDE CDE architecture Cartridge structure Generated artifacts Generation."

Similar presentations


Ads by Google