Développeur
Ingenico
juin 2016 - août 2016
Langages : C, Perl, Bash, PL SQL (sous Postgres)
Travail réalisé : Le but était d’analyser des codes de réplication de transactions, écrits en C, et de fournir un code équivalent, sous forme de modules Perl, compatibles avec un “moteur” écrit en Perl. En effet, les codes écrits en C n’avaient pas été pensés pour les volumétries actuellement rencontrées, et, au final, étaient bien moins performants que les modules Perl écrits en remplacement.
Etude et documentation de l’existant :
Un “moteur” en Perl, et des plugins pour certaines applications (Carte Bleue, American Express, etc. - les plus forts volumes, en transactions/jours) étaient déjà écrits, mais aucune documentation n’était fournie. J’ai donc dû analyser le code, et documenter les fonctions, ainsi que déterminer les entrées-sorties attendues pour les plugins.
Le code C n’était pas non plus documenté, il a donc fallu comprendre de quelle manière il agissait, surtout que chaque développeur avait son propre style, ses propres “standards” de livraison, etc (méthodes d’installation très différentes, au cas par cas, et ne marchant généralement pas du premier coup)
Réalisation des plugins :
Ecriture des plugins, en optimisant autant que possible, pour ne pas ralentir tout le processus.
Amélioration du moteur, que ce soit par ajout de fonctionnalités, ou en factorisant le code, créant des bibliothèques, etc.
Assurance Qualité :
Ecriture d’outils de tests: Comme nous n’avions pas de jeu de test extensif (les tests sont normalement réalisés par une équipe dédiée, chez Ingenico), écriture d’outils prenant les flux de production, et en faisant une copie vers l’environnement testé, afin de comparer les résultats de la réplication “en production” (version en C) et de la réplication en Perl (que nous testions).
Magillem 3 mois 02/2017 -> 04/2017
Développeur
Langages : Perl, Java, Shell Windows (CMD), Apache Ant, Lexer “JFlex”
Travail réalisé : Le but premier était l’adaptation d’un script Perl, qui convertissait des spécifications électroniques, écrites selon un format spécifique à ST Microelectronics (dans des fichiers Word, Excel, ou Adobe FrameMaker (MIF)), vers le format XML « IP-XACT », qui est un standard industriel ; afin de réaliser les mêmes tâches en Java.
Au final, l’essentiel du travail a tourné autour de la réalisation d’une API permettant de lire et écrire le format MIF (Maker Interchange Format), utilisé par Adobe FrameMaker, afin de pouvoir inclure ce format dans le modèle Java préexistant, et le rendre interopérable avec les autres formats gérés par l’application Magillem.
Analyse des besoins, et des spécifications :
Recherche de documentation sur le format MIF, réalisation de tests et de « retro-engineering » quand cela était nécessaire (par exemple, parce que la documentation officielle ne permettait pas de savoir réellement ce que faisait le logiciel dans tel ou tel cas).
Analyse des scripts Perl existants, pour voir de quelle manière certaines informations étaient gérées.
Conception d’API :
Mise en place d’une structure arborescente, proche du DOM, pour représenter les fichiers MIF.
Extension de ces classes et interfaces, pour coller au plus près des balises du format MIF, avec une philosophie « extensible » : Ce qui n’est pas encore implémenté apparaît de manière générique, mais l’ajout de classes permettant de le reconnaître, plus tard, ne casse pas l’existant, il facilite simplement l’ajout de nouvelles fonctionnalités.
Utilisation intensive des concepts objets avancés (interfaces, héritage, généricité) pour réduire la quantité de code nécessaire, augmenter la robustesse, et la réutilisabilité du code produit.
Optimisation du code (ajout de systèmes de gestion de cache complexes, pour réduire les coûts des nombreux parcours d’arbre successifs)
Assurance Qualité :
Ecriture de tests unitaires et fonctionnels.
Mesure de performances (vitesses de traitement, selon divers algorithmes).
Rédaction de documentation :
Documentation complète de l’API générée, y compris exemples de code.
Automatisation de la livraison
Génération de livrables via l’écriture de fichiers ANT.
Ecriture de scripts BATCH (.BAT) pour le shell Windows.
» Ingenico Durée : 3 mois
Langages : C, Perl, Bash, PL SQL (sous Postgres)
La société Ingenico est une grande entreprise Française (6000 employés), à rayonnement mondial (présence dans 170 pays). Elle développe des terminaux de paiement (matériel ET logiciel), et entretient une importante infrastructure informatique, en interne, pour servir d’intermédiaire entre les clients et les différents réseaux bancaires ou assimilés. Sa part de marché mondiale, pour les terminaux de paiement, était estimée à 45% en 2014.
Travail réalisé : Le but était d’analyser des codes de réplication de transactions, écrits en C, et de fournir un code équivalent, sous forme de modules Perl, compatibles avec un “moteur” écrit en Perl. En effet, les codes écrits en C n’avaient pas été pensés pour les volumétries actuellement rencontrées, et, au final, étaient bien moins performants que les modules Perl écrits en remplacement.
Etude et documentation de l’existant :
â Un “moteur” en Perl, et des plugins pour certaines applications (Carte Bleue, American Express, etc. - les plus forts volumes, en transactions/jours) étaient déjà écrits, mais aucune documentation n’était fournie. J’ai donc dû analyser le code, et documenter les fonctions, ainsi que déterminer les entrées-sorties attendues pour les plugins.
â Le code C n’était pas non plus documenté, il a donc fallu comprendre de quelle manière il agissait, surtout que chaque développeur avait son propre style, ses propres “standards” de livraison, etc (méthodes d’installation très différentes, au cas par cas, et ne marchant généralement pas du premier coup)
Réalisation des plugins :
â Ecriture des plugins, en optimisant autant que possible, pour ne pas ralentir tout le processus.
â Amélioration du moteur, que ce soit par ajout de fonctionnalités, ou en factorisant le code, créant des bibliothèques, etc.
Assurance Qualité :
â Ecriture d’outils de tests: Comme nous n’avions pas de jeu de test extensif (les tests sont normalement réalisés par une équipe dédiée, chez Ingenico), écriture d’outils prenant les flux de production, et en faisant une copie vers l’environnement testé, afin de comparer les résultats de la réplication “en production” (version en C) et de la réplication en Perl (que nous testions).