Refonte du module Règlement/Livraison Soutenance finale
Migration technologique d'un programme Finance de marché Projet ambitieux du fait de son importance Ma démarche a aussi donné de l'intérêt au projet Refonte en profondeur Utilisation de nouveaux outils Implication envers le client Mes premiers pas en tant que « chef de projet » Ma démarche Mes difficultés Mes erreurs Mes réussites? Les leçon tirées
BNP-Paribas-Arbitrage Société en nom collectif au capital de 185 millions d'euros Filiale de BNP-Paribas s'occupant de l'arbitrage Arbitrage: ensemble d'opération permettant de réaliser un bénéfice sans risque Modèle APT de S. Ross Exemple Prêt-emprunt de titre Divisée en 2 pôles Pôle fonctionnel Pôle logiciel
Prêt-emprunt de titre Opération qui consiste à prêter du titre contre du cash ou d'autres titres Notions: Date de valeur, collatéral, Appel de marge, Opération sur titre Notions de gestion: Instruction, Detail, Netting
Bolivar, logiciel de trading Front-to-Back Problématique Bolivar, logiciel de trading Front-to-Back De la négociation au paiement Logiciel très complexe: Communication interne (intermodule) Communication externe (SWIFT, Equilend) Depuis 2002, passage en technologie 3-tiers Déploiement du logiciel sur différentes places financières (New York, Hong Kong, Tokyo...) Soulagement de la base de données Accroître la maintenabilité Organisation de l'équipe IT (MOE) BAPI (MOA)
Le module de Règlement-Livraison Problématique Le module de Règlement-Livraison Génération des flux Opérations sur les instructions (Validation, suppression, netting) Transfert des titres et du cash Comptabilité Migration du module de Règlement/Livraison vers Java/Weblogic Le rendre plus rapide et plus fiable (le back-office perd actuellement 1 jour-homme/jour à afficher les propositions) L'adapter en technologie 3-tiers. Améliorer l'ergonomie des écrans.
Moyens Spécification Développement Java 1 MOA pour les dialogues avec les utilisateurs Anciennes spécifications du module Documentations du module Accès au code source du module Développement Java Développement avec l'IDE Eclipse et partage du code sous CVS Serveur Weblogic pour le développement et base de test Base de non-regression Outils de test Mercury et Eclipse (JUnit), Confluence pour la gestion de documentation
Introduction du changement Spécifications A partir de l'existant Anciennes spécifications Documentation Code source Introduction du changement Analyse du module Réunion avec le client afin de déterminer leurs nouveaux besoins Proposition à l'équipe BAPI
Migration entre technologies très différentes Choix techniques Analyse Migration entre technologies très différentes SQL (langage de requête) vers Java(langage objet) Visual Basic (langage procédural) vers Java(langage objet) Choix techniques Batch Centraliser la génération des propositions Répartir l'intelligence Optimiser les accès aux services Gestion des cas particuliers Nécessité de s'adapter aux Patterns utilisés MVC State Pattern Frameworks: framework graphique, Spring Organisation en service encapsulant les accès en base
Gestion des cas particulier: étude des moteurs d'inférence Études effectuées Gestion des cas particulier: étude des moteurs d'inférence Besoins Séparer la gestion des cas particulier du fonctionnement normal Code non compilé pour livraison simplifiée Libre Rapidité d'éxecution Intégration de Drools à mon batch A tous les niveaux de remplissage des champs, appel au moteur d'inférence Établir les bonnes pratiques pour les tests de non-regression Indispensable à la validation du module R/L Étude des outils de Mercury et réunion avec des spécialistes Établissement des bonnes pratiques IT et BAPI
Développement en J2EE avec Spring Échange avec les autres développeurs Java, perfectionnement dans cette technologie: Optimisation de code (List, appels de fonctions, Garbage Collector...) Code modulaire afin d'accroître la maintenabilité (utilisation des Interfaces) Bonnes pratiques quant à l'utilisation du framework graphique Swing (pas d'héritage mais builder, éviter les fuites de mémoire) Implémentation du pattern MVC Rendre indépendant le modèle, l'affichage et les actions de l'utilisateur Utilisation de frameworks existants Apprendre à utiliser les frameworks (Documentation, Javadoc, tutoriels) Utilisation d'outils de gestion de configuration (Maven) et de déploiement
A partir des spécifications, élaboration des plans de tests Tests différents selon les parties car but différents Batchs Client Utilisation de deux bases de données en parallèle pour les tests de batchs (Système de base de non-régression) Implémentation et exécution des tests du client: utilisation des outils Quality Center et QuickTest Pro de Mercury
Détermination de mes tâches Gestion de projet Détermination de mes tâches Évaluation des tâches à faire Évaluation de la charge de travail Difficultés et tendance à la surévaluation Gestion de l'avancement Utilisation de l'outi Jira Détermination des tâches des autres développeurs Besoin de développements pour mon projet Spécifications des besoins et planification
Organisation du développement Gestion de projet Organisation du développement Pour mon stage But: toucher au plus de chose possible afin d'acquérir de l'expérience Après le stage Évaluation de la priorité: gain de productivité au back-office et des moyens d'atteindre cette priorité Livraison modulaire de façon à répondre au besoin des utilisateurs le plus vite possible tout en laissant le temps au Bapi d'effectuer un vrai travail de spécification Choix du cycle de développement Cycle incrémental Livraison des batchs puis du client Cycle en V pour le client Cycle incrémental pour les batchs On livre flux par flux
Organisation du changement Gestion de projet Organisation du changement Changement progressif pour ne pas brusquer les utilisateurs Livraison des batchs Livraison du client Livra
Stratégie de test des batchs Critiques Stratégie de test des batchs Non-garante du respect des spécifications et de la non- regression
Objectifs de projet atteint Conclusion Objectifs de projet atteint Augmentation de la vitesse d'affichage des flux passant de plus d'une minutes à moins de 10 secondes Utilisation d'un batch Java soulageant la base de données Passage en technologie 3-tiers réussi Bilan Démonstration de ma capacité à gérer un projet Objectifs atteints en temps voulus Apprentissage du métier d'ingénieur Organisation et animation de réunions Explications techniques Formation à des méthodes et outils utilisés dans l'industrie (Pattern MVC, programmation orientée aspect, logiciel de test, moteur d'inférences...) Niveau technique bon, améliorer l'humain