Les temps sont durs ?
- Le système est complexe ?
- Développements de plus en plus lents ?
- Problèmes de qualité ?
- Les performances ne sont pas au rendez-vous ?
Votre partenaire dans les difficultés !
Nicolas Raynaud
Consultant Indépendant
Spécialisé en Java
Sur devis ou à la journée
http://www.linkedin.com/in/nicolasraynaud
consulting@nraynaud.com
+33 6 71 43 43 15
Consultant Indépendant
Spécialisé en Java
Sur devis ou à la journée
http://www.linkedin.com/in/nicolasraynaud
consulting@nraynaud.com
+33 6 71 43 43 15
Développements complexes
Formation des équipes à certaines techniques de programmations destinées aux algorithmes complexes (programmation dynamique, transformation de graphes, comparaison de complexité). Déplacement d'un calcul du bureau vers le "Cloud".
Expériences : calcul du plus court chemin dans un arbre de défaillance, génération automatique de tests à partir d'un modèle.
Formation à la construction de compilateurs, à la création et manipulation de langages.
Exemples de réalisations : développement d'un lecteur de fichiers GDS et de compilateurs B et OCL.
Formation à la testabilité, à l'architecture émergente, aux processus légers.
Refactoring à grande échelle
Découpage d'un projet en modules, définition des interfaces, découplage, formation de l'équipe à ces techniques. Réduction du code. Introduction des techniques et outil du "Lean".
Exemples de réalisations : division par 5 de la taille du code d'une application, découpage d'une application monolithique en 36 sous-modules avec dépendances inversées.
Performance du code
Détection et suppression des passages inutilement lents dans le code. Audit des performances du système. Formation à l'utilisation d'un profiler, formation à la gestion de la mémoire, à l'exécution des machines virtuelles.
Quelques anomalies détectées au cours d'interventions :
- thread synchronisés avec un sleep() de 0,1s -> temps de passage des tests réduit de 86min à 6min après usage de techniques standard.
- BufferedReader.readline() sur une ligne de 110Mo qui était conservée en mémoire pendant tout un traitement
- des "fuites" de mémoire par des collections statiques
