Cédric LEMAIRE, 36 ans.

FRANCE
e-mail : codeworker@free.fr

marié, deux enfants
français
Cédric LEMAIRE
Ingénieur en Informatique
Formation
1992 DEA Information Scientifique et Technique INSTN/Paris VII
1991 Maîtrise de Mathématiques Discrètes Lyon I
1990 Licence de Mathématiques Lyon I
1988-1989 DEUG A – MMP Lyon I
1987 Bac C St Just/LYON

Compétences Techniques
Systèmes Windows NT, UNIX SOLARIS
Langages C++, Java JDK 1.4
Interfaces Graphiques Qt 3.1 (TrollTech)
Distribution CORBA 2 (Orbix 2.2), J2EE
Méthodes Objet UML (Rational Rose), Design Patterns
Programmation générative moteur d'analyse syntaxique et de génération de code CodeWorker

Publication
Parsing and Code Generation Techniques to Deal with Uncertainty: Experiences from highly-Evolving and Complex Systems 17 octobre 2005
Position paper présenté au 5ème workshop sur le Domain-Specific Modeling, tenu à l'OOPSLA 2005.
Des spécifications floues ou changeantes peuvent nuire à la viabilité de systèmes IT complexes.
Le processus de développement aura à intégrer rapidement toutes les améliorations et refontes exigées.
Ce papier rapporte les leçons tirées de la pratique du Domain-Specific Modeling dans des environnements
instables, en constante évolution, et soumis à diverses contraintes.

Expérience Professionnelle
Depuis décembre 1997 GIE Ingénierie Options (BNPParibas)
à l’ingénierie financière des dérivés action de BNP Paribas.
Atelier d’extraction, de reconnaissance et de traitement d’informations financières (2004-2005)
Application avec IHM écrite en C++ et intégrant un noyau CodeWorker, chargée d’extraire des informations financières, d’analyser leur contenu, et de déclencher des actions.
Des articles financiers, des dépêches, des recommandations d’analystes... sont tout d’abord extraits de flux Reuters, de stations Bloomberg ou de sites Web. Vient ensuite une reconnaissance de leur contenu par analyse syntaxique, suivie enfin du déclenchement d’actions diverses, appliquées au sein de l’application, ou publiées sur le réseau à destination d’applications distantes.
Point fort : des stratégies complexes peuvent être écrites, l’analyse syntaxique peut être étendue, des régles déclenchantes d’actions peuvent être ajoutées, toutes sans nullement exiger de recompiler l’application. Elles sont rédigées en CodeWorker, un langage de script pour le parsing et la génération de code, dont le noyau est embarqué dans l’application.
Environment: Windows NT, Visual C++, Qt 3.1, CodeWorker
Réalisation d’un framework pour améliorer la réactivité et la robustesse des applications (2002-2003)
Exploitation intensive du langage de script intégré au moteur de génération de code CodeWorker, pour introduire sans intervention manuelle les objets dans le framework.
A partir d’une modélisation conceptuelle et comportementale de tous les objets financiers manipulés par le pricer dérivés Actions/Taux, génération intégralement automatique des bibliothèques d’objets métier en C++ et en JAVA. De par leur insertion dans le framework, ces objets disposent chacun, sans aucun développement à la main, des propriétés suivantes :
  • capacité de sérialisation/unmarshalling dans un format de données standard compris par le pricer et distribuable au sein d’une architecture,
  • contrôle d’intégrité lors du unmarshalling, généré à partir de sa description comportementale,
  • contrôle partiel d’intégrité en présence d’informations incomplètes, qui permet la réalisation d’interfaces graphiques au comportement intelligent,
  • export dans un browser du détail de tous les objets manipulés par l’application,
  • introspection fonctionnelle de leur nature (méta-connaissance),
  • base de données (schéma, procédures stockées, piste d’audit, couche cliente),
  • ...

Intérêt : un nouvel objet financier (produit dérivé, sous-jacent remarquable) se trouve intégré en quelques secondes et sans effort au coeur du système d’information et au sein des applications, là où il aurait fallu quelques jours d’intervention d’un développeur.
Environment: Windows NT, Rational ROSE 98, Visual C++ 6.0, Java, CodeWorker
Réalisation d’un outil d’extraction d’informations financières textuelles (2001-2002)
Application écrite en C++, chargée d’extraire des informations financières à partir du Web.
Récupération des informations financières en provenance d’articles de journaux ou de dépêches publiés sur le Web, puis interroger le corpus à l’aide de mots-clés, et enfin analyser les co-occurrences de mots. Il s’agit de l’ancêtre de l’atelier de traitement des informations financières vu plus haut.
CodeWorker prend le modèle UML étendu de l’application pour produire du C++.
Environment: Windows NT, Rational ROSE 98, Visual C++, cURL, CodeWorker
Création d’une bibliothèque d’objets réutilisables du monde financier Front Office (1999-2002)
Librairie dynamique écrite en C++.
proposer une vision fédératrice des objets FOs, de manière à satisfaire tout type d’application C++ FO et, ainsi, de proposer des composants de haut niveau réutilisables. Utilisée par 35 applications majeures et une multitude de petites.
  • réalisation d’un modèle UML (étendu de quelques mots-clés) de représentation du monde financier Front Office (450 classes),
  • utilisation du moteur de génération de code CodeWorker, qui prend ici un modèle UML étendu pour produire essentiellement du C++ et un peu de Java,
  • création de composants d'extraction de données de marché et de deals à partir de sources diverses,
  • création d’un composant de description de scénarios et de production de matrices de risque,
  • création d’une couche de communication entre ces objets C++ réutilisables et le pricer,
  • création d’un langage de scripts extensible, à cheval entre JAVA, PASCAL et C++, utilisé pour glisser un peu d'algorithmique flexible dans le framework.

Environment: Rational ROSE, Visual C++, SUN C++, Linux C++, Orbix, CodeWorker
Etude de refonte de l’architecture du système d’information pour un intégré Front / Back 2000
Participation à cette étude.
Etude pour la réalisation d'une architecture distribuée dont le coeur conserverait l’ensemble des informations nécessaires à la fois au Front Office et au Back Office, et qui proposerait des composants réutilisables (récupération de la bibliothèque d’objets réutilisables, qui serait étendue). Les applications clientes seraient notifiées de toute modification survenue dans le système, et qui pourraient les intéresser.
Réalisation d’un modèle UML du monde financier FO / BO 1999
Collaboration à l’enrichissement du modèle UML FO décrit plus haut de manière à converger avec les besoins du Back Office OTC.
  • prise en compte des propositions des différents intervenants et report dans le modèle UML,
  • rédaction du document aidant à la compréhension du modèle et des choix conceptuels réalisés,
  • intégration d’une partie de ces travaux dans la bibliothèque d’objets réutilisables décrite ci-dessus.

Environment: Windows NT, Rational ROSE 98
Etude, conception et réalisation d’un outil graphique de pricing de vanillas listées et OTC 1998
Intégré en tant que DLL dans un outil de contribution en données de marché, écrit en C++.
  • création des couches de communication entre les objets C++ de l’outil de contribution et le pricer,
  • réalisation d’un écran de saisie d’options listées sous la forme d’une matrice prix d’exercice / maturité avec visualisation des volatilités BS ou des primes dans les cellules, et la possibilité de représenter des stratégies avec l’affichage de leurs sensibilités,
  • réalisation d’un écran de saisie d’options OTC, regroupées par maturité, puis par prix d’exercice, avec visualisation des primes, volatilités BS et sensibilités pour chacune des options, et la possibilité de représenter des stratégies.

Environment: Windows NT, Visual C++ 5.0, StingRay 6.0
Etude, conception et réalisation d’un outil graphique de pricing d’options diverses (1997-1998)
Application écrite en Java, destinée aux vendeurs et aux traders.
  • extraction de données de marché d’une base de données via CORBA,
  • création des couches de communication avec les pricers (génération de scripts de pricing),
  • création d’options prédéfinies à partir d’écrans de saisie,
  • création de payoffs sous la forme d’un arbre syntaxique graphique, résolus par un pricer Monte Carlo (réalisé par une autre équipe),
  • évaluation de ces options avec ou sans sensibilités,
  • réalisation d’une fonction solveur,
  • évaluation d’un portefeuille avec résultats option par option.

Environment: Windows NT, Java JDK 1.1.5 / 1.2, OrbixWeb
Depuis 1996 A DOMICILE
Moteur de parsing et de génération de code CodeWorker -
Réalisation d’un moteur de génération de code né du constat qu’un grand nombre de tâches répétitives et/ou fastidieuses de codage pouvaient s’automatiser, mais aussi qu’il manquait d’outils pour implémenter des Design Patterns, ou encore que le modèle UML – par exemple - n’offrait pas une formalisation suffisante au niveau de la conception détaillée, qui permettrait la génération d’un volume de code source beaucoup plus important.
Il s’agit d’un interpréteur de langage de script à la syntaxe adaptée aux trois concepts majeurs qui interviennent dans l’approche de ce générateur :
  • acquisition de l’information utile (modèles de conception ou autre) ; rédaction de scripts de parsing à la syntaxe BNF étendue, qui permet de représenter des grammaires pred-LL(k),
  • manipulation de graphes de parsing (construction, décoration, exploration) ; structure évoluée de graphe et opérateurs adaptés,
  • génération de texte libre, indépendant d’un quelconque langage ; mécanisme de bascule inspiré des serveurs de page dynamiques ou de PHP pour passage entre mode script et mode texte brut (modèles de génération de code),

L’un des avantages de cette démarche est de capitaliser les connaissances techniques des intervenants sur un projet sous la forme de scripts, qui peuvent alors être réutilisés. On trouvera plus de détails sur http://www.codeworker.org et une documentation complète sur http://www.codeworker.org/CodeWorker.pdf. Un tutoriel est disponible en français à l’adresse http://cedric-lemaire.developpez.com/DecouverteCW/index.php.
L’application est distribuée sous licence LGPL (logiciel libre et gratuit).
Environment: Windows NT, Linux, Mac OS X, FreeBSD, Visual C++ 6.0, GCC
Janvier 1995 – décembre 1997 MATRA SYSTEMES & INFORMATION
(EADS System & Defense Electronics aujourd'hui)
Système d’aide au commandement pour l’aéronavale (1995-1996)
Participation à un projet de plusieurs dizaines d’hommes-an.
  • module de traitement des messages : création de quelques écrans de saisie en Xlib / MOTIF,
  • module de visualisation géographique ::
    • refonte de l’affichage en stéréopolaire,
    • réalisation d’un « super-zoom » : reprise de quelques fonctions de MOTIF devenues inopérantes du fait du niveau de zoom.


Environment: SUN Sparc, UNIX Solaris, C++, Xlib / MOTIF
Composant de visualisation géographique (indépendant du projet précédent) (1996-1997)
Participation à un projet de 4 hommes-an.
Création d'une librairie d’objets réutilisables, qui permette la création rapide d’applications géographiques (S.I.G) pouvant fonctionner indifféremment en mode mono-poste ou en mode client / serveur.
  • participation à la conception générale et détaillée (formalisme UML),
  • réalisation complète de la distribution (via CORBA) du serveur de visualisation et d’objets géographiques (cartes vectorielle / raster, figures géométriques), avec réalisation d’un outil qui allait inspirer le moteur de génération de code entrevu plus haut,
  • création d’un mécanisme de notification (remontée des événements graphiques tels que la déformation d’une figure ou une translation sur une carte).

Environment: SUN Sparc, Windows NT, UNIX Solaris, C++, Orbix 2.0, Ilog Views
Réalisation d’une application géographique 1997
Construite à partir du framework entrevu ci-dessus, utilisé en mode mono-poste.
Chef de projet assisté de deux ingénieurs.
Visualiser la trajectoire optimale d’un missile chargé de sectionner les pistes d’aéroport.
  • mise en place de points de passage obligés par l’utilisateur sur une carte MNT (donnant les altitudes),
  • lancement du calcul et visualisation de la trajectoire optimale dépendant de la nature des points de passage et de la configuration du terrain.

Environment: SUN Sparc, Windows NT, UNIX Solaris, C++, Ilog Views
Octobre 1992 - Novembre 1993 Media Holding
Agence de presse
Maintenance corrective et évolutive d’un gestionnaire d’archives
CDD en attendant l’incorporation au service militaire
Ce gestionnaire d’archives diapositive et de suivi d’activité présentait les fonctions suivantes :
  • production de bordereaux de livraison à destination de magazines,
  • production de factures,
  • suivi des réglements,
  • paiement des photographes ou des agence photographiques,
  • rapprochements en fin de mois.

Environment: Windows 3.1, PROGRESS 5.0

Stages et autres expériences significatives
Service national Décembre 1993 - Septembre 1994
Mise en place de la cellule Qualité Totale de l’arme des transmissions en tant qu’aspirant (6 mois).
En parallèle, vente d’un logiciel de jeux logiques, hors contexte militaire (1993-1994)
Ecrit en C++ pendant les périodes de loisir à partir de septembre 1993, une licence vendue 90 kF à un éditeur de revues publiant ce type de jeux.
L'application permet de créer, visualiser et résoudre des jeux logiques, appelés intégramme (R) et dont vous trouverez un exemple à l’adresse http://www.codeworker.org/serewin/ExempleIllustre.html.
Le système expert décrit un chemin qui mène à la solution avec le niveau de détail requis.
Environment: Windows 3.1, Borland C++ 4.0
Réalisation d’un algorithme de reconnaissance des locutions contenues dans un texte Mai 1992 – août 1992
Ce module s’inscrit dans la chaîne de traitement linguistique du progiciel SPIRIT, qui est chargé d’extraire des documents pertinents dans une base de documents, à partir d’une requête effectuée en langage naturel.
Offrir un mécanisme qui permette de reconnaître tout type de locutions dans un texte rédigé en langage naturel. Pour cela, une liste exhaustive de locutions normalisées (i.e. à l’infinitif pour les locutions verbales par exemple) est fournie. Ces locutions peuvent éventuellement admettre des formes dérivées (locutions verbales), des inclusions de mots, et des imbrications d’autres locutions. Exemple : il était, quoi qu’il en dise, tout le temps à cheval sur les principes.
Environment: SUN Sparc, UNIX, C++, C, FORTRAN
Etude, conception et réalisation d’un tableur orienté objet Juillet 1990 – Août 1990
Cette application était destinée à un usage au travers du Minitel.
Outre retrouver les fonctions classiques d’un tableur (évaluation de formules dans des cellules), proposer plusieurs feuilles et des liens entre elles, un langage pour créer dynamiquement des formulaires de saisie et un autre pour définir des objets avec encapsulation, polymorphisme et liens d’héritage. Manipuler les formulaires et les objets à partir des cellules du tableur, et réciproquement.
Environment: MS DOS, object PASCAL