Marc-Daniel - Architecte JAVA
Ref : 091218O001-
91190 VILLIERS LE BACLE
-
Consultant, Développeur, Architecte (52 ans)
-
Freelance
Expert Senior JAVA/J2EE InfoVista Mai 2010 – Aujourd’hui
Maintenance évolutive autour du composant cœur VistaMart de la VFK InfoVista
Développement autour du module VistaMart de la solution InfoVista dédiée à la gestion des performances des systèmes d'information. VistaMart est le composant cœur d'une plateforme multi-tiers de composants distribués (Java/J2EE 5). En charge de la gestion de l'accès aux données critiques de la plateforme mais aussi de la production de calculs à haute valeur ajoutée, son développement et ses évolutions offrent les défis de développement inhérents à la manipulation de données volumineuse dans des intervalles de temps les plus courts possibles.
Analyse, conception, et implémentation (IntelliJ + MagicDraw UML) des nouvelles évolutions liées à l'accès aux données à travers des APIS de type Web service.
Analyse, conception de modules d'exports massifs et temps réels des données collectées auprès des ressources des systèmes d'information. Exposition de ces modules à travers des API de type Web Services (WSDL, JAXB, JAX-WS).
Refactoring des APIs de communication avec des systèmes propriétaires par échange de messages asynchrones JMS (Active MQ)
Tuning et amélioration de la procédure de mise à jour (appelé provisioning) du référentiel VistaMart Oracle 11g. Cette procédure implique l'identification des goulots d'étranglement qu’il s’agisse de limitations inhérentes au système de gestion de base de données ou de l ;a couche applicative (serveur d’application J2EE).
Choix des implémentations de solutions appropriées (Java Concurrent API, multithreading, parallélisme des algorithmes) visant à maintenir le niveau d'un taux d’insertion/ lecture de plusieurs millions de données lors des mises à jour.
Enfin profilage du code afin de réduire l’empreinte mémoire de la couche Java pouvant requérir l’utilisation de système offrant jusqu’à 64Go de mémoire.
Refactoring et optimisation des chargements et temps d'accès aux caches mémoires des services Web ouvrant les APIs du coeur aux applications clientes
Etude de l’intégration du composant VistaMart dans le serveur d’application Glassfish V3.1 (J2EE 6.0)
Isolation et intégration du framework Lucene dans une structure de machine à états finis.
Expert Senior JAVA/J2EE THALES Déc. 2007 – Avril 2010
Maintenance évolutive autour de l'éditeur tactique militaire STARS
S'appuyant sur une architecture multi tiers Java/J2EE 5 (EJB 3.0 sous JBOSS) l'éditeur STARS permet la saisie, la collecte et l’import d'informations tactiques depuis des sources d'observations stratégiques (radar, postes d’observations automatiques, données observateur etc.) vers un système de base de données ORACLE. Ces données sont ensuite accédées depuis un Middleware propriétaire et rejouées dans le cadre de simulations militaires stratégiques (SIG).
Analyse, conception et développement des composants (Eclipse + Enterprise Architect) du nouveau socle STARS dans le cadre de migrations vers les serveurs d'application JBOSS 5.0 (Tomcat + Hibernate) et technologies EJB 3.1.
Analyse, conception et développement des nouveaux composants OSGi afin de proposer des versions de produits facilement modulables en fonction des profils de client
Analyse, conception et développement de modules de collecte et d’imports de données externes au système STARS dans le respect et la mise en application des méthodologies UP (conception UML, RDD, DDD, et TDD).
o Création de la gestion des imports manuels et semi automatiques au format CSV et XML depuis l’éditeur tactique
o Création de l’import de données automatiques (services de surveillance de type Watch Dog et import de données vers des services EJB 3.0).
o Création de services J2EE implémentant un DSL java pour la formulation de requêtes EJBQL depuis l’éditeur tactique
o Traduction et intégration des données collectées auprès des sources externes au domaine de travail de l’éditeur tactique militaire
Reprise d’existant sur un module d’échange de sources d’informations (images, documents etc..) s’appuyant sur les technologies EJB, JBOSS Remoting etc.
Mise en place de la politique de sécurité par à travers un mécanisme de type LoginModule sous JBOSS s’appuyant dur les API JAAS. Le contrôle des accès est effectuée à travers la gestion des rôles J2EE sous JBOSS, et un mécanisme de jeton assure la singularité des connections.
Analyse, conception et développement du harnais de test associé à l’éditeur tactique en s'appuyant sur les techniques, TDD, BDD. Intégration des Framework JUnit, UISpec4J, JDave avec mise au point de micros DSL adaptés aux domaines couverts.
Mise en place de la politique d’intégration continue sous serveur CI HUDSON s’appuyant sur l’outil de gestion de projet Maven 2.
Activité de Refactoring sur l'existant afin de rendre le code testable (passage de simple « legacy code » à code testable puis testé) en vue de le rendre conforme aux contraintes de validation fonctionnelle des clients.
Expert Technique BNP Arbitrage Avril 2007 - Décembre 2007
Expert Java Senior et Architecte Logiciel Intégration dans l'équipe PRISM
Cette équipe prend en charge la maintenance et le développement évolutif du logiciel de GRID dédié à la simulation tarifaire des opérations liées aux dérivées actions. Intégration du groupe d'architectes de BNP Arbitrage
Suivi et maintenance du projet PRISM
Conception, modélisation (Visio) du nouveau container de plugin favorisant un chargement “à chaud” des plugins (Pattern Generic Factory)
Suivi et amélioration des modules de connexion et de répartition en place (intégration du serveur de GRID LSF).
Evolution du site d'administration en environnement Servlet 2.4/ JSPX 2.0,
Aide à la refonte de la base de données technique sous-jacente à l'applicatif (Oracle 10i) et participation à la conception et au développement du Framework d'accès à la base
Analyse et paramétrage système des machines virtuelles en environnement sous forte contrainte (serveurs Linux RedHat AMD64 avec tailles de Heap > 4Go)
o Choix des algorithmes de collecte, des tailles de génération
o analyse des taux de sortie
o Ecriture et mise en place de scripts de collectes des traces GC et analyse de ces traces
o Monitoring avec Sysload et JConsole
Conception, développement et mise au point des nouveaux modules du projet PRiSALiD
Le projet PRiSALiD est un nouveau middleware de type Event Driven Architecture. Il a pour objectif de mettre en corrélation les performances mesurées de l'application et les ressources disponibles afin de fournir les meilleures performances, ceci de façon auto adaptative. Il permet :
la gestion des requêtes selon des protocoles différents (JMS/HTTP/RMI/Raw IO)
une instrumentation continue de l’état des serveurs PRISM selon un mode push/pull levées des alertes ou déclenchement des actions selon des règles métiers (monitoring)
gestion des priorités de l'exécution des calculs selon leur criticité (scheduling)
Sa réalisation s'est effectué à travers la concrétisation de chantiers tels que :
Modélisation, conception (StarUML) et implémentation logicielle d'un module frontal favorisant le Schedule des requêtes vers les réseaux de calculs. Dans ce cadre, mise en place d'un système de démultiplexeur/dispatcher permettant un control adaptatif des volumes de requêtes multithread envoyées vers les serveurs PRISM. La conception s'appuie sur une mécanique de dispatch de type réactif/proactif en environnement multithread ainsi que sur la mise en place d'activités de scheduling/monitoring pour la gestion du flux de taches (designs patterns Reactor, Proactor, active objet...).
Modélisation, conception (StarUML) et implémentation d'un système distribué d'agents de monitoring locaux (Local Monitoring Agent) et distribués (Domain Monitoring Agent). L'implémentation s'appuie aussi sur les technologies de composition et de suivi d'évènements supportés par une sous couche JMX.
Modélisation, conception (StarUML) et implémentation d'un système de monitoring orienté vers la gestion d'évènements composites ayant pour objectif la composition et le suivi d'évènements détectables selon la mise en place de règles métiers.
Modélisation, conception (StarUML) et implémentation d'un système de scheduling. Notre objectif est de le spécialiser dans la prise de décisions auto adaptatives en réponse aux performances monitorées et/ou aux événements simples/composites détectés.
Intégration sous l'environnement BEA WebLogic avec migration et standardisation de composants métiers en composants service de type EJB. Mise en place d'une méthode de conception et développement basée sur mon expertise
Conception, développement et mise au point des connections de type sleepn' retry avec contrôle du failover sur échec métier/applicatif
Responsable Technique Coordialis Dec.2005 – Fev. 2007
Aide à la création d'une Jeune Pousse Innovante (Aide à la création d'une jeune entreprise d'édition de logiciel d'aide à la saisie en ligne)
Le logiciel d'aide à la saisie développé s'appuie sur l'utilisation des technologies Java/J2EE, les composantes de l'application et les données étant hébergées et gérées par l'entreprise, les modules client/professionnel sont chargés et mis à jour par le biais de l'utilisation des technologies Java Web Start.
Tous les modules applicatifs Java/J2EE sont propriétaires. J'en ai assuré la conception, le développement (Eclipse + Poseidon), la mise au point ainsi que le déploiement en environnement Solaris 10. Le serveur d'application est un serveur Jboss 4.0.x. (Tomcat + Hibernate).
Exemples de Module serveur :
Création d'un Framework de persistance propriétaire en container J2EE permettant l'invocation transactionnelle de procédures stockées ou de requêtes dans une base de données PostgresSQL 8.x. Ce Framework exploite les normes J2EE 1.4 (EJB 2.1 Stateless, JDBC 3.0, JTA) tout en exploitant les design patterns dédiés à ce type d'environnement.
Conception et mise en place d'un service d'envoi de messages automatiques (JMS, Java Mail).
Mise en place de la politique de sécurité par à travers un mécanisme de type LoginModule sous JBOSS s’appuyant dur les API JAAS. Le contrôle des accès est effectué à travers la gestion des rôles J2EE sous JBOSS, les informations étant stockée sous SGBD.
Création d'un module de sérialisation/dé sérialisation crypté asymétrique propriétaire.
Création d'un module d'Administration des comptes utilisateurs par le biais des technologies de web service (WS-I 1.0, SOAP 1.1, WSDL 1.1, XML Schéma)
Intégration des technologies JSP 2.0/JSF 1.1/Servlet 2.4 pour la mise en service des accès sécurisés au container, mise en service des espaces de validation des contacts et gestion des espaces clients.
Exemples de Modules clients
Création APIs complètes du client lourd (Swing jdk5/6) avec conception, développement et mise au point d'un module de simulation de frappe pour l'aide à la saisie en ligne.
Exploitation des APIs concurrentes Java (lock, pool de thread, etc..) pour la gestion de l'assistance à l'accès à l'information (« type-ahead » combo). Le remplissage automatique des listes est assuré en temps réel en moins de 300ms pour une information mise à jour en permanence à travers le réseau internet.
Création d'un Framework graphique pour la gestion dynamique du mapping entre les objets de métiers et les composants graphiques.
Encadrement d'une équipe de 2 personnes :
Le DBA en charge de la conception/réalisation du schéma de base
Un ingénieur stagiaire en informatique ayant validé sa formation dans nos locaux
Analyse des besoins clients et assistance conseil pour des intégrations spécifiques
Analyse et traduction technique des besoins exprimés par le management et finalisation des expressions de besoin avec l'équipe technique.
Planification des tâches
Installation et mise en place de la politique de gestion des sources (subversion)
Installation et mise en place de la gestion documentaire (JSPWiki)
Ingénieur en développement Obbisoft Nov. 2003 - Nov. 2005
Développement de l'application de gestion en logistique de systèmes de transport au sein d'une équipe d'une dizaine de développeurs
Ce logiciel est une application distribuée multi tiers Java/J2EE s'appuyant sur une base de données Oracle 8i/9i et déployée en environnement WAS 5.0. Il est constitué de modules serveurs et de différents clients lourds Java Swing.
Participation au développement et à l'évolution de nouveaux modules serveurs (taxation, tarification), enrichissement du Framework logistique (EJB session stateless) FineTMS dans le cadre de l'offre de nouveaux produits.
Développement (Eclipse) des nouveaux objets graphiques (composants cœur du Framework) du client lourd (Java Swing). Client et serveur dialoguent via le protocole RMI.
Développement de la génération des messages XML (XML 1.0, XML Schéma) entrant et sortant. Cette technologie exploite les APIs JMS
Développement et intégration de requêtes PL/SQL à l'application distribuée.
Rédaction de supports de formation
Rédaction de la documentation technique propre à l'utilisation des APIs des nouveaux modules développés.
Intervention technique sur site client.
Analyse et Validation des spécifications de l'équipe de consultation, relatives aux intégrations clients. Implémentations des spécifications de l'équipe de consultation.
Encadrement d'une équipe de deux ingénieurs en développement
Formation d'ingénieurs en développement à l'utilisation du Framework avec création et mise au point des supports de cours.
Ingénieur en développement LCL Oct. 2002 – Oct. 2003
Reprise d'existant sur un logiciel Back Office Java/J2EE 1.3 dédié à la remontée de reportings sur les calculs des montants des opérations boursières (PNB)
stabilisation et suivi de production du logiciel back office.
Migration d'un module externe VB au logiciel back office en Java (intégration des technologies Servlet, EJB).
o Audit fonctionnel de l'existant,
o conception et développement (Eclipse) de la fonctionnalités en environnement J2EE 1.3.
o Finalisation du développement et mise en production d'un logiciel front office de saisie journalière d'opérations boursières, s'appuyant sur les technologies Servlet, EJB.
o Stabilisation et finalisation de l'architecture multi-tiers J2EE en environnement WSAD 4. (Environnement de test JBOSS (Tomcat + Hibernate)).
o Finalisation du modèle de données sur Système SYBASE 12.5 et migrations des bases des versions précédentes.
o déploiement de l'application J2EE sur serveur d'applications WAS 4.03
Assistance sur serveur applicatif Websphere 4.0.3
Conception à l'aide des design patterns de la nouvelle version du logiciel front Office.
Introduction de la sérialisation XML JAXB 1.0, et de l'utilisation des schémas XML pour le transfert et la validation des données échangées.
Audit de recrutement d'un ingénieur en développement Java/J2EE.
Ingénieur en développement ACI 6/2002 - 10/2002
Définition du cycle de migration des données de deux applications Oracle 8 dédiées à la consolidation budgétaire de produits promotionnels.
Estimation a été réalisée à partir du cahier des charges définissant la nouvelle sémantique du schéma relationnel.
Développement d’un logiciel de gestion de tarification pour la proposition de devis évolutifs d’assurances professionnelles. Ce logiciel implémenté en VB reproduit toutes les fonctionnalités de la version Java déjà existante. Refactoring du code de la version Java du logiciel pour les aspects fonctionnels et la partie GUI (JFC Swing).
Développement d’une architecture trois-tiers WEB et de l’interface graphique lourde pour la gestion d’une base commerciale MSSQL sous framework.NET.
Ingénieur en développement FuturMaster Août 2000 – Juin 2002
Proposition, validation, conception et développement d’une architecture trois tiers favorisant l’accès à distance des ressources métiers du logiciel FuturMaster.
Cette architecture permet aux filiales de nos clients (ELA médical, V33, Sanofi Synthélabo,…) d’intégrer directement leurs filiales étrangères (Japon, Amérique du sud, USA, …) dans les processus Supply-Chain (validation de stocks, validation de prévision, …)
Développement des différents composants COM/DCOM en Java et VB associés à cette interface.
Exploitation du potentiel des API IIS(ISAPI) de Microsoft Windows : utilisation du pré-processing ASP2.0/3.0.
Implémentation (Eclipse) de la GUI utilisateur de l'architecture 3 tiers FuturMaster. Cette GUI s'appuyant sur les API Swing/JFC(Java 1.3). (+API JAXP1.1+ , Servlet/JSP, JDBC).
Introduction des flux de données XML pour les échanges de données inter-composant (Utilisation des normes associées XSLT et XPATH). La manipulation de ces formats d'échanges est effectuée par le biais des technologies MSXML3.0/4.0 et ADO 2.5+.
Etude et conception du système de gestion des ressources clients, interne à l'entreprise (Servlet + JSP + EJB). Mise en application des modèles de conception standard (design patterns Interpreter, Facade, Iterator, Factory etc.)
Premiers tests sur les technologies des Web Services (SOAP, WSDL, UDDI) et étude des solutions standards du marché (Apache SOAP, MS Toolkit, MS UDDI, UDDI4j, Apache Axis, ...).
Portage de l'architecture 3-tiers ASP/COM/DCOM vers la plateforme .NET, et développement d'une version alpha intégrant les nouvelles technologies de Web Service (SOAP, WSDL) sur plateforme .NET (Utilisation du langage C# et de la technologie ASP.NET).
Formation technique du nouvel ingénieur en développement web : formation au développement OO en Java, et au développement de solutions sous serveur d’application Microsoft.
Certification APICS
Ingénieur action qualité T-GID Nov 1998 – Juillet 2000
Edition de système de gestion de bases documentaires
Contrôle de qualité des nouvelles versions des deux progiciels d'ingénierie documentaire SPIRIT V.2 (gestion et recherche de l'information en langage naturel) et SPIRNET (SPIRIT version internet)
Activité d'interface entre les services du développement, de l'avant-vente et du support-client.
Conception et réalisation des interfaces WEB de consultation des bases documentaires sur sites internet couplées avec les deux produits cités.
Propositions et développement de solutions internet/intranet adaptées aux besoins des clients.
Interventions sur sites en maintenance et support technique.
Elaboration des aides en ligne et de la documentation utilisateur.
Encadrement de deux ingénieurs dont un rédacteur technique.
Domaines de Compétences particulières
Java JDK 1.3/1.4/ 5.0/6.0 (Swing, I/O, NIO, JCA/JCE, RegExp, Multithreading, JMX, OSGi...)
J2EE 5, 1.4 (JAXP, Servlet, JSP, JSTL, EJB 3, JPA, SOAP, JDBC, JAXB,...)
Serveurs d'application JBOSS (Tomcat + Hibernate), WAS4.+,Tomcat 4.+/5+, Weblogic 9+
Design pattern (Proactor, Reactor, Leader, Follower, Specification, GOF,...)
TDD (méthodologie UP): JUNIT, JDave, Log4J, UISPec4J
conception UML Enterprise Architect, Visio, StarUML
IDE: IntelliJ 8+, Eclipse 3.+, WSAD 4+, VISUAL AGE , JBuilder 8+
XML/XSLT/XPATH/XML schéma, SOAP, WSDL, UDDI
Système de gestion de bases de données : PostgresSQL, Sybase, Oracle, MySQL
UNIX (Solaris, HP, AIX, Free BSD), Linux Red Hat, Windows, Mac OSX
Google Android (bases)
Intégration continue (HUDSON, MAVEN2, ANT, SVN, CVS)
Formation
Ingénieur INSA + DEA (1993) Formation aux méthodes des métiers de l’ingénierie
Doctorat, 3ème cycle (1996) Application des méthodes de l’ingénieur
SCRUM Master Certifié (formation avec Jeff Sutherland)
Certification BASIC APICS
Co signataire du Software Craftsmanship Manifesto