Hibernate
Développer une application appelée Tethys qui fait la migration d'une application existante appelée
Castor au sein d' EDF. Castor est une ancienne application EDF basée sur Oracle et PL/SQL et utilise
les anciennes technologies de Java (par JMS: pour l'échange de messages entre les composants de
Castor, l'utilisation massive des procédures stockées, ...). Castor est une application formée de
quatre composants principaux:
PAC: Planificateur ACcumulateur
FCO: Frontal Communication
MTR : Moteur de Traitement
SCA : Service de CAlcul
Castor est une application qui permet des récupérer, étudier et traiter et surveiller des données
représentant différents phénomènes (débit de l’eau, températures de l’aire, pluies, neiges,…).
Tethys est une application formée de deux parties :
Patou 1 : consacrée au front-end.
Patou 2 : consacrée au back-end.
Au sein de Tethys, je travaillais sur Patou 2. Je participais à :
Remplacement des procédures stockées PL/SQL en procédures JAVA en utilisant des requêtes SQL de
PostGres.
Implémentation des micro-services basés sur RESTFULL à l'aide de Spring Boot.
Développement des APIs en Java afin de répondre aux besoins de clients.
Implémentation des composants permettant de récupérer les données récupérer à partir des capteurs et
enregistrées sur des serveurs consacrés en utilisant Kafka.
Implémentation des différentes méthodes de traitement de données récupérer (Lissage de données,
combinaison, …)
Participation aux rédactions de rapports des activités concernées.
Participation aux réunions journalières et aux réunions hebdomadaires.
Réalisation de tests Gatling pour les différents endpoints de différentes API développées afin de
mesurer et comparer les performances entre les anciennes et les nouvelles implémentions.
Analyser l’impact des multi-threading dans les algorithmes de traitement de données au sein de SCA et
d’autres composants.
Rédaction des documents concernant les algorithmes de traitement et des tests effectués.
Kelio, JAVA Spring Boot, Hibernate
Participation à l'étude de besoin et la spécification fonctionnelle et technique sur Confluence.
Rédaction du cahier des charges selon les contraintes des clients.
Implication dans les phases de conception et de développement selon la méthode Agile.
Planification de Sprint pour l'estimation des efforts pour les user stories et les bugs.
Organisation de réunions lors de la phase d'avant-projet pour échanger avec l'équipe.
Gestion du planning et répartition des tâches, suivie de l'état d'avancement du projet.
Développement des APIs Java Spring Boot, participation aux phases de test et de validation en
fournissant des tests unitaires et des tests d’intégration.
Implémentation des micro-services basés sur RESTFULL à l'aide de Spring Boot.
Utilisation de SonarSource pour maintenir la qualité et nettoyage des codes écrits.
Revue de codes et proposition des corrections avant de merger.
Migration de bases données MySql, SQLServer et Firebird vers PostgreSQL.
Implémentation de procédures stockées PL/SQL.
Optimisation des requêtes et Amélioration de la performance en réalisation de test Benchmark.
Suivie de Livrable jusqu’au mise en production.
Identification et correction des différents types d’anomalies, suivi par des tickets JIRA
Refactorisation des différents modules liés aux métiers :
Analyse et re-factoring de codes existants Module RDV Médicaux.
Proposition et implémentation du nouvelle conception et nouvelle architecture.
Modification de la structure de la base existante afin de prendre en compte la nouvelle
architecture.
Rédaction du cahier des charges selon les contraintes client.
Elaboration de Spécifications Fonctionnelles et Techniques pour Correctifs, Evolutifs et Travaux spéciaux.
Gestion et Suivi des Incidents, Assistances, Correctifs, Evolutifs.
Participation à l'étude de besoin et à la spécification fonctionnelle de projets.
Missions de codage d'application qui répondent aux spécifications techniques fournies et aux exigences de
l'utilisateur final.
Participation au processus de conception qui génère les spécifications fonctionnelles et techniques de l'application.
Documentation des spécifications de conception de l'application et les procédures de mise en œuvre pour améliorer
la qualité de l'application et la réutilisation du code.
Création de scripts de test d'unité, d'intégration, de fonction et de performance pour améliorer la qualité de
l'application et assurer le respect des exigences.
Conduite des phases de test et de validation.
Impliqué dans les phases de conception et de développement logiciel Agile.
Planification de Sprint pour l'estimation des efforts pour les user stories et les bugs.
Organisation de réunions lors de la phase d'avant-projet pour échanger avec l'équipe.
Conception du planning et répartition des tâches, suivie de l'état d'avancement du projet.
Analyse des besoins client, étude de la faisabilité du projet, remise de propositions respectant la politique
commerciale de l'entreprise.
Surveillance de la qualité du développement, relevé des dysfonctionnements et mise en place d'actions correctives.
Back-end Java Développeur
Proposition de solutions techniques et technologiques, mise en place de bases de données.
Développement et tests d'intégration des applications.
Conception et développements des applications (Java ,MySQL) dans le respect des spécifications fonctionnelles et
des contraintes architecturales, dans un souci constant d’optimisation et de performance.
Développement de modules Java implémentant des règles métier et des workflows à l'aide de Spring Boot.
Conception et développement des microservices basés sur REST à l'aide de Spring Boot.
Configurer et déployer l'application à l'aide de Tomcat.
Création d'applications Java à l'aide de Maven et déploiement d'applications JAVA/J2EE via des serveurs
d'applications.
Utilisation du framework Spring pour intégrer les composants MVC aux services métier.
Implémentation de la couche d'accès aux données (DAL) à l'aide de l'outil Spring Data et Hibernate ORM.
Projet de recherche
Projet QAT (Qualitative Algebra Toolkit) qui est un solveur générique, implanté en JAVA Spring Boot, permettant de
manipuler de réseaux de contraintes qualitatives d’arité quelconque. L'objectif du projet QAT est de fournir des outils et des
bibliothèques pour les algèbres qualitatives manipulées dans le cadre du raisonnement spatial et temporel qualitatif. Cet
outil :
Comporte plusieurs librairies java permettant de représenter les algèbres qualitatives (temporel ou spatial) et les
opérations sur ces algèbres
Permet de représenter et traiter les réseaux de contraintes qualitatives contenant les définitions de plusieurs
algèbres qualitatives.
Fournit des benchmarks de tests, via web service REST, pour comparer les performances des méthodes et
algorithmes définis dans le domaine de CSP (Constraint Satisfaction Problem).
QAT est une bibliothèque de programmation par contraintes open java développée au CRIL-CNRS à l'université
d'Artois.
Vise à fournir des outils ouverts et génériques pour définir et manipuler des algèbres qualitatives et des réseaux
qualitatifs basés sur ces algèbres.
Migration des libraires de SparQ, imlementé en C/C++, vers Java avec des nouvelles fonctionnalités et la mise en
place d’un nouveau format permettant de représenter n’importe quelle algèbre avec des relations temporelles ou
spatiales.
Permet à l'utilisateur de définir une algèbre qualitative arbitraire (y compris l'algèbre non binaire, le produit
cartésien de deux ou plusieurs algèbres définies par exemple) en utilisant la représentation JSon.
➢ Analyste confirmé : Elaboration de Spécifications Fonctionnelles et Techniques pour
Correctifs, Evolutifs et Travaux spéciaux. Gestion et Suivi des Incidents, Assistances,
Correctifs, Evolutifs.
➢ Participation à l'étude de besoin et à la spécification fonctionnelle de projets.
➢ Proposition de solutions techniques et technologiques, mise en place de bases de données.
➢ Développement et tests d'...