Auteur

Jérémy Rousselle

Jérémy RousselleJérémy est diplômé de la branche informatique de l’INA-PG (Institut National Agronomique de Paris Grignon).
Après plusieurs projets de grande ampleur pour des clients tels que le Crédit Agricole, la Société Générale ou le Ministère de l’Equipement, il devient rapidement expert technique puis formateur sur les technologies J2EE et .NET.

Début 2004, il fonde la société Netapsys Conseil qu’il dirige depuis.

Fil des billets

Par Jérémy Rousselle, le 13 avril 2010
Catégorie : Netapsys

Journée nationale des industriels organisée par l'ASIP Santé

Bonjour à tous, je vous fais part de ma participation à la journée nationale des industriels organisée par l'ASIP Santé.

Mais d'abord qu'est ce que l'ASIP Santé ?

L'Agence des Systèmes d'Information Partagés de Santé (ASIP Santé) c'est "La e-santé en marché". Plusieurs missions lui ont été fixées : 1. Assurer le développement de technologies de partage de l'information de santé, sécurisées et interopérables 2. Permettre l'appropriation et l'essor de pratiques médicales plus efficientes, en phase avec les attentes des patients 3. Améliorer la coordination et la qualité des soins

Durant cette journée réservée aux industriels en relation avec les métiers de la Santé, l'ASIP a respecté cette feuille de route en détaillant plusieurs de ses projets phares : 1. Le Dossier Médical Partagé (DMP) en tout premier lieu 2. L'Identifiant National de Santé (INS) 3. Téléradiologie 4. Divers chantiers en cours

Le programme complet de la journée est accessible ici

Tous ces projets sont pilotés avec le même mot d'ordre : il faut industrialiser les projets dans le domaine de la santé, fédérer des groupements d'acteurs pertinents les uns par rapport aux autres et arrêter de dupliquer les "mini expérimentations" dans tous les établissements ... vaste programme !

Par Jérémy Rousselle, le 02 décembre 2009

Noël approche, je fais comme mes enfants : je fais ma liste !

Comme chaque année, décembre lance la période des vœux et des listes de cadeaux ... alors voici la mienne :

J'y mets les formes, c'est important !

"Cher père Noël, pour Noël je souhaite que mes développements respectent les contraintes suivantes :

  • Qu'ils répondent à ce qu'attend mon client (cela suppose que j'ai bien compris ce qu'il veut) ;
  • Qu'ils aient subi une large couverture de tests fonctionnels et techniques ;
  • Qu'ils soient réalisés dans le respect des délais et des charges prévus ;
  • Que leur facilité de maintenance démontre mon excellence technique."

Ma fille de 8 ans arrivant, elle me stoppe net : "Papa le père Noël n'existe plus (pas ??) depuis que j'ai 6 ans" (ouf le petit dernier n'a rien entendu !!)

J'encaisse le choc, reviens peu à peu à moi, prends une douche et me rase (important pour la suite) : là, seul face au miroir (je vous avais prévenu), je me dis que ce résultat doit quand même être accessible, père Noël ou pas !

Alors j'en appelle à vos nombreux commentaires pour répondre à cette question simple mais importante : "Quelles actions dois-je mettre en place sur mes projets pour démontrer à ma fille que le père Noël existe ??"

Pour ma part voici mes premières réponses issues de mes succès ... et aussi de mes erreurs !

1. Pilotage / Suivi

  • J'associe mon client au respect des engagements calendaires avec un suivi régulier tous les 15 jours et un accès permanent à mon tableau de pilotage (à détailler dans un prochain billet) : le PAQ rappelle les engagements des acteurs en terme de date de livraison mais aussi de délai de validation des travaux ;
  • Je mets en place dans la première semaine du projet, les accès client et équipe à la plateforme documentaire (ALFRESCO) et à l'outil de suivi de recette (JIRA) ;
  • Je valide la création de l'affaire et l'affectation des membres de l'équipe dans l'outil interne des comptes rendus d'activité (CRA) au lancement du projet ;
  • J'envoie un ordre du jour au moins 3 jours avant chaque réunion ;
  • J'envoie aussi un compte rendu au plus tard 3 jours après chaque réunion ;
  • Je demande au client de me fournir les documents applicables (à inscrire dans le PAQ) dont les tests techniques auxquels l'application sera soumise ;
  • Je réponds dans la journée à chacun des mails du client, au minimum pour l'avertir que je creuse la question ;
  • Je fais un point d'avancement quotidien avec mon équipe ;
  • Je remonte à mon manager direct (chef de projet ou directeur de pôle) tout risque de dérapage identifié.

2. Conception

  • J'implique les utilisateurs finaux du futur produit dans les travaux de conception en mettant en place par exemple des ateliers fonctionnels ;
  • Si je mets en place des ateliers fonctionnels, je m'appuie systématiquement sur une maquette réalisée avec le support de notre équipe infographie et accessibilité ;
  • Je respecte les outils retenus par le cadre normatif de mon client quand il existe, sinon je mutualise les succès en proposant les outils qui ont démontré leur efficacité sur nos autres projets ;
  • Je couvre les aspects organisationnels, fonctionnels, ergonomiques (dont l'accessibilité), techniques et sécuritaires ;
  • Je demande au client d'organiser une rencontre avec ses équipes d'exploitation et de validation technique de la future solution (quand elles existent) ;
  • J'identifie toutes les contraintes du projet et les fais valider par le client ;
  • J'adopte le langage UML.

3. Développement

  • Je demande à mon concepteur fonctionnel ou à mon chef de projet si un point de la spéc n'est pas claire
  • Je m'appuie sur la plateforme d'intégration continue (Maven, Hudson, Sonar) ;
  • Je m'appuie sur les plugins mis en place dans mon IDE pour identifier mes écarts par rapport à l'état de l'art ASAP (JDepend, Checkstyle, PMD, EclEmma, ...) ;
  • Je couvre mes classes métiers et mes classes complexes de tests unitaires (JUnit, DBUnit, ...) ;
  • Je fais participer au maximum les développeurs dans la définition des charges. Afin que l'engagement de l'équipe soit respecté et que ce soit l'équipe qui s'engage et pas forcément que le chef de projet ;
  • J'essaie de mettre en place des ateliers techniques pour que les développeurs puissent s'entraîner sur certaines tâches ;
  • Je n'hésite pas à renseigner Trac ou tout autre outils qui permettent de faire partager le savoir sur un point technique du projet ou sur la bonne pratique à avoir pour pouvoir implémenter tel ou tel code ;
  • Je n'hésite pas à demander à mes collègues leur opinion ;
  • Je croise certains développements et/ou tests afin de s'assurer que les bonnes pratiques sont effectivement utilisées et que l'implémentation des fonctionnalités de l'application soit compréhensible et maintenable par tous. Ne pas hésiter à remonter d'éventuels points trop complexes ou difficilement compréhensibles et proposer un refactoring ;
  • Lors de l'arrivé d'un nouveau développeur au sein de l'équipe, ne pas hésiter à faire, dans des proportions raisonnables, du pair programming afin qu'il puisse devenir opérationnel plus rapidemment.

4. Tests internes

  • J'automatise mes tests fonctionnels à partir d'outils type SELENIUM ;
  • Je valide tous les tests techniques (identifiés lors de l'étape 1) avant de livrer au client.

5. Livraison

  • Je package la livraison (application et documentation) en fonction des attentes du client ;
  • Je préviens le client au moins 15 jours avant la livraison et lui rappelle 3 jours avant par mail.

6. Support aux tests du client

  • J'accuse systématiquement dans la journée la prise en compte de sa demande et le préviens de la date de mise en place du traitement dès que je la connais.

Voilà donc mes premiers éléments de réponse, assez généraux, largement incomplets mais j'attends maintenant vos compléments ... alors à vos claviers !!

Par Jérémy Rousselle, le 02 décembre 2009

La guerre des générateurs de rapport aura bien lieu : rapide présentation du champ de bataille !

Pour ce premier billet, je souhaite aborder avec vous une question chère à tous nos clients actuellement : "Comment générer une édition (comme un courrier ou une facture) prête à être imprimée depuis une application métier ?"

Aujourd'hui il existe une multitude de solutions concurrentes et modernes pour répondre à cette problématique avec en règle générale une stratégie simple : "la solution retenue doit être cohérente avec la technologie de l'application métier ou du moins y être facilement intégrable". Sans être exhaustif, je citerai :

  • Sql Server Reporting Service sur technologie .NET ;
  • JasperReport côté Java ;
  • BIRT toujours côté Java ;
  • POI (et plus précisément HWPF pour la manipulation de documents Word) ;
  • Serveur Open Office ;
  • FPDF pour générer un PDF en PHP ;
  • Plus une longue liste d'API disponibles et plus ou moins performantes.

La liste est donc longue ... trop longue même ... chaque produit étant supporté par sa communauté.

Si on creuse un peu plus le besoin de l'utilisateur final, la question se complique encore un peu car la solution doit aussi :

  • S'appuyer sur un modèle comportant des zones dynamiques insérées entre des zones statiques ;
  • Permettre à un non informaticien de modifier ce modèle ou au moins les zones statiques de ce modèle.

Et c'est précisément ce deuxième point qui, assez rapidement, démontre les limites des solutions actuelles.

Ce cas concret (il fallait que je le place pour ce premier billet) a été rencontré récemment par une équipe NETAPSYS sur un projet Java / J2EE : la solution d'édition devait être capable de générer un courrier à partir d'un modèle RTF comportant des zones statiques, des zones dynamiques mais aussi des conditions d'affichage du type "si la victime est hospitalisée alors affiche l'adresse de l'établissement de santé".

Après plusieurs prototypes et quelques déceptions, l'équipe a finalement retenu le couple technique "RtfTemplate / Velocity" pour répondre à cette question.

Dans mes prochains billets, j'aborderai avec vous les points suivants :

  1. Description technique du prototype mis en place ;
  2. Avantages et inconvénients mis en évidence par ce prototype ;
  3. Retours d'expérience liés à la mise en œuvre de cette solution.