Cédric LEMAIRE, 36 years old.

e-mail : codeworker@free.fr

Married, two children
Computer Scientist
1992 Post-graduate diploma in Technical and Scientist Information INSTN/Paris VII
1991 Research Degree in Mathematics Lyon I
1990 Mathematics Degree Lyon I
1988-1989 Ordinary Degree Mathematics and Physics Lyon I
1987 Scientist A level St Just/LYON

Systems Windows NT, UNIX SOLARIS
Languages C++, JAVA JDK 1.4
GUI Qt 3.1 (TrollTech)
Distribution CORBA 2 (Orbix 2.2), J2EE
Object Methods UML (Rational Rose), Design Patterns
Generative Programming Parsing tool & Code Generator CodeWorker

Parsing and Code Generation Techniques to Deal with Uncertainty: Experiences from highly-Evolving and Complex Systems October 17th, 2005
Position paper presented to the 5th workshop on Domain-Specific Modeling, OOPSLA'05.
Fuzzy or changing requirements may seriously impact the viability of complex IT systems. A successful
development process will have to rapidly integrate any improvement or reworking of requirements.
This paper reports lessons learned from the practice of Domain-Specific Modeling in unstable
or evolving domains.

Since December 1997 GIE Ingénierie Options (BNP Paribas)
Financial engineering of Equity Derivatives at BNP Paribas.
A framework to improve the resourcefulness and the reliability of applications Since 2002
Intensive exploitation of the scripting language proposed by CodeWorker, to add/modify objects into the framework with exactly no manual development. An adapted modeling language was specified for obtaining this result.
starting from a structural and behavioral modeling of all financial objects handled by the Equity/Fixed Income derivatives pricer, fully generation of Business Object libraries in C++ (JAVA under construction). Once inserted into the framework, these objects take advantage of some interesting features, with nothing hand-coded:
  • Ability to be serialized to/unmarshalled from a data format standardized by the pricer, easy to transfer from components of an architecture,
  • Integrity control during the unmarshalling, built from the behavioral modeling,
  • Partial integrity control while the object is incompletely defined, which enables implementing automatically GUI with a smart behavior,
  • Exporting into a standard browser of the detail about all objects handled by the remote application, including the way to query the application,
  • Introspection, functional and not technical like in JAVA,
  • Database (schema, stored procedures, audit trail, Front-end for the client...),
  • ...

Interest: a new financial object (OTC Derivatives product, special underlying) integrates itself with no human effort in the heart of the Information System and in the core of applications. A developer might have required a few days to do this job by hand, introducing more bugs.
Environment: Windows NT, Rational ROSE 98, Visual C++ 6.0, JAVA, CodeWorker
Creation of a tool to handle the content of Financial articles automatically 2001-2002
Application written in C++, which has to recognize more electronic data sources and to provide more indicators.
Retrieval of Financial information coming from newspaper’s articles or dispatches to extract some measurements, which may be exploited by automata working on Electronic Markets, or by analysts and traders. The indicators that provide the measurements are graded from historical quantitative data.
Use of the code generator CodeWorker to generate as much source code as possible, which acquire the extended UML design of the application to produce C++.
Environment: Windows NT, Rational ROSE 98, Visual C++, cURL, CodeWorker
Study for providing a straightforward Front / Back process into the System Architecture 2000
Participation in debates, interrupted during the merge with Paribas.
Discussion about how to provide a distributed architecture that will allow accessing to Front Office and Back Office servers (databases, pricing tools) and services (monitoring of deals, management of positions, audit track, risk management...), and that will offer reusable components as much as possible (taking back of the reusable object library described above, which will be extended).
Client applications will subscribe on events that may interest them and be notified thanks to a message bus.
Modeling of a UML design merging both FO and BO representations 1999
Taken part to the improvement of the UML FO design, which is presented in the next section, so as to converge with the OTC Back Office point of view.
  • Taken into account proposals of all contributors for writing it out into the UML formalism,
  • Writing of a document to help the understanding of the design and to justify some choices made in the design,
  • Improvement of the reusable object library, carrying out some interesting modelling points.

Environment: Windows NT, Rational ROSE 98
Creation of a reusable objects library of our Front Office financial business world 1999-2002
Dynamic library written in C++. Be alone on the project for two years.
It provides a view of FO objects that satisfy various kinds of financial applications written in C++, offering high level reusable components. It composes the core of at least 35 applications and a lot of little one.
  • Modeling of a UML design (extended of some keywords so as to improve the quality of the generated source code) from our Front Office financial world (about 450 classes),
  • Intensive use of the code generator CodeWorker, which scans the extended UML design to produce C++ source code essentially, but a little JAVA too,
  • Creation of components for extracting market data and deals coming from various sources,
  • Creation of a component for describing scenarios and performing risk matrices,
  • Creation of a communication layer between these reusable C++ objects and the pricer,
  • Creation of an extensible scripting language to handle Business Objects with a great flexibility at runtime.

Environment: Rational ROSE, Visual C++, SUN C++, Linux C++, Orbix, CodeWorker
Study, design and implementation of a graphical tool for pricing listed and OTC vanilla 1998
Integrated as a DLL into an application that enables feeding market data into a market-data repository, written in C++. Project under my responsibility.
  • Development of the communication layers between the C++ data structure of the host application and the pricer (mapping between these 2 worlds),
  • Implementation of a GUI for handling listed options into a matrix, shared by strike and maturity, showing BS volatilities or premiums into cells, and allowing to define strategies for returning their global indicators,
  • Implementation of a GUI for displaying OTC options, put together first by maturity, and then by strike, showing premium, BS volatility and all indicators for each of these options, and allowing to define strategies.

Environment: Windows NT, Visual C++ 5.0, StingRay 6.0
Study, conception and development of a graphical tool for pricing various options 1997-1998
Application written in JAVA, intended to sales and traders. Project under my responsibility.
  • Extraction of market data that were coming from an external data base via CORBA,
  • Development of the communication layers with pricers (pricing-scripts generation),
  • Predefined options were built from data populated into some GUI,
  • Creation of payoffs via a graphical toolkit ; these payoffs were resolved thanks to a Monte Carlo (developed by the Research Team),
  • Evaluation of these options, with or without indicators (gamma, delta...),
  • Development of a solving operation to estimate any input of the product, the others remaining fixed,
  • Evaluation of a portfolio, giving both global and detailed results.

Environment: Windows NT, JAVA JDK 1.1.5 / 1.2, OrbixWeb
January 1995 - december 1997 MATRA SYSTEMES & INFORMATION
(EADS System & Defense Electronics today)
Supervision system for commandment of air and sea forces 1995-1996
Participation to a project of dozens of time men-year.
  • Module for processing military-formatted messages: some various development tasks
  • module of geographical visualization:
    • Overhaul of the stereo polar display of maps,
    • Implementation of a « super-zoom »: rewriting of some MOTIF functions, which were ineffective because of the high-level of zoom reclaimed.

Environment: SUN Sparc, UNIX Solaris, C++, Xlib / MOTIF
Component for geographical visualizations 1996-1997
Participation to a project of 4 men-year, independant of the precedent one.
Creation of a reusable Object library, which allow building quickly and efficiently any geography-based applications, working indifferently in standalone or in a Client/Server mode.
  • Participation to the general and detailed design (UML formalism),
  • Total implementation of the distributed mode (via CORBA) for the visualization and geographical object (vector / raster maps, geometrical figures) servers,
  • Creation of a notification mechanism (catching of graphical events such as figure distortions or moves on a map).

Environment: SUN Sparc, Windows NT, UNIX Solaris, C++, Orbix 2.0, Ilog Views
Creation of a geographical application 1997
Built over the reusable Geographic-based Objects library seen above, and used in standalone.
Project manager assisted of 2 engineers.
To visualize the best flight path of a missile used to destroy airport runways.
  • Drawing of compulsory points that the missile has to follow on a MNT map (giving altitudes),
  • Processing and visualization of the best flight path, depending on the kind of the compulsory points to visit and on the landscape configuration.

Environment: SUN Sparc, Windows NT, UNIX Solaris, C++, Ilog Views
October 1992 - November 1993 Media Holding
Press Agency
Correctness support and improvement of an archive manager
This archive manager was used for listing slides and monitoring the Business:
  • Building of delivery slips for magazines,
  • Making out invoices,
  • Monitoring of settlements,
  • Payment of press photographers,
  • Reconciliation at the end of months.

Environment: Windows 3.1, PROGRESS 5.0

Implementation of CodeWorker, a parsing tool and source code generator Since 1996
Considering that a lot of tedious and repetitive tasks of coding may have been automated, creation of an engine to generate source code. This tool enables to implement Design Patterns, or to generate a great quantity of source code once the UML is enriched from some extensions, or to choose another language to express a design adapted to the application to build.
CodeWorker interprets a scripting language, where the syntax is adapted to the 3 main concepts that play a part in the approach of this generator:
  • Acquiring knowledges (design of an application or other...); creation of parsing scripts that conform to an extended BNF syntax, which allows the representation of pred-LL(k) grammars,
  • Handling of parse trees (building, decoration and exploration); high-level structure of graphs and convenient operators provided on them,
  • Generation of any text or binary sequence, independent of any system programming language; it uses the principle of template-based scripts inspired of Dynamic Server Pages,

One of the advantages of this approach is to build up the Technical skills of engineers on a project, which may be reused (reuse of expertise). More information about that is provided on http://www.codeworker.org/ and a complete documentation is accessible on http://www.codeworker.org/CodeWorker.pdf. The interpreter is distributed under the LGPL license.
Environment: Windows NT, Linux, Visual C++ 6.0, GCC
Implementation of Serewin, a software for building and resolving logic puzzles 1993-1994
A software sold 90,000 FRF for a license to a magazine publishing logic puzzles, and intended to construct, visualize and resolve puzzles like "who owns the Zebra?".
An illustration of what it looks like can be found at http://www.puzzlersparadise.com/article1021.html.
The expert system describes the path to the solution with the required level of detail.
Environment: Windows 3.1, Borland C++ 4.0

Creation and implementation of an algorithm to recognize phrases into a text May 1992 - august 1992
This module was included into the linguistic process of SPIRIT (SYSTEX company), which allows the extraction of significant documents from a database, starting from a request written in a natural language.
Creation and implementation of an algorithm to recognize any kind of phrase written in a natural language. To do that, the software provided an exhaustive list of normalized phrases (e.g. in the infinitive for verbal phrases for example). These phrases may admit derived forms (verbal phrases in French), embedding of words, and overlapping with other phrases.
Environment: SUN Sparc, UNIX, C++, C, FORTRAN
Study, design and implementation of an Object-Oriented spreadsheet program July 1990 - August 1990
This software was expected working on the « Minitel » (outmoded public access-information system).
Besides finding the classical functions of a spreadsheet program (to evaluate formulae in cells), it provided several spreadsheets with cells accessible to each other, a language to create forms dynamically and another to define objects with encapsulation, polymorphism and inheritance. Forms and objects were handled from cells, and vice-versa.
Environment: MS DOS, object PASCAL