← Toutes les réalisations
Logiciel & plateformes

Incat Crowther · ICPerformance

Reprise et modernisation d'un logiciel de calcul naval en Xojo

Tech Fox a repris le développement d'ICPerformance, l'application interne de prédiction de résistance et de performance de coques d'Incat Crowther, cabinet australien d'architecture navale spécialisé dans les multicoques rapides. Écrite en Xojo (un langage rare appris de zéro en une semaine) l'application a été déboguée, enrichie de nouvelles fonctionnalités et entièrement documentée. Mission livrée en un mois, sur site au Royaume-Uni, avec un guide de transmission de ~100 pages à la clé.

Année2025
PaysRoyaume-Uni
StatutLivré
Point fortOutstanding
Note
5/5 · verbatim client
XojoC# /.NET (WPF)SQLiteGitVisual StudioWindows
1 moismission sur site (R.-U.)
1 semainepour apprendre Xojo de zéro
~100 p.guide de transmission livré
Outstandingsur les 10 critères d'évaluation

Contexte & problème résolu

Interface d'ICPerformance 2.8.4 reconstruite en WPF/C#
Reconstruction WPF/C# de l'interface d'ICPerformance 2.8.4 (onglet Vessel Data), réalisée pour cartographier la structure de l'application. Aucune méthode de calcul propriétaire n'y figure.

Incat Crowther est un cabinet d'architecture navale né en 2005 de la fusion d'Incat Designs et de Crowther Designs. Se décrivant comme « digital shipbuilders » sous la signature « Your Vision. Our Innovation. », l'entreprise conçoit des navires spécialisés à haute vitesse ; essentiellement des catamarans fendeurs de vagues et autres multicoques en aluminium : ferries rapides et Ro-Pax, navires de transfert d'équipage éoliens, navires de servitude, patrouilleurs et yachts d'exploration. Structure volontairement compacte (une centaine de collaborateurs) répartie entre Belrose (Australie), Lafayette (États-Unis) et Eastleigh (Royaume-Uni), où Tech Fox est intervenu.

La mission : reprendre le développement d'ICPerformance (version 2.8.4), l'application interne de prédiction de résistance et de performance qu'utilise au quotidien l'architecte naval en chef pour estimer la résistance à l'avancement d'une coque et la puissance de propulsion requise. Objectif concret : corriger des bugs et ajouter des fonctionnalités.

La difficulté n'était pas que technique. Elle tenait à un triple obstacle : un langage rare et inconnu (Xojo), un code hérité totalement non documenté, et une barrière de connaissances non recouvrantes entre un développeur et un architecte naval qui ne partageaient ni le vocabulaire métier ni les contraintes logicielles.

Le langage Xojo & la stratégie en 4 temps

Couverture du guide Xojo Essential Guide for Continued Development
Couverture du livrable « Xojo: Essential Guide for Continued Development », guide de transmission de ~100 pages rédigé pour Incat Crowther.

Xojo est un environnement de développement intégré (RAD) multiplateforme permettant de produire des applications natives (Windows, macOS, Linux, web, mobile) à partir d'une base de code unique. Il est orienté objet, avec une syntaxe dérivée du BASIC volontairement lisible, un concepteur d'interface par glisser-déposer et un modèle événementiel. Cette lisibilité offre une courbe d'apprentissage douce ; atout décisif pour une prise en main éclair. Son revers : une très faible diffusion, donc peu de ressources et pas d'assistant de code intégrable.

Face à un langage que personne autour ne connaissait, Tech Fox a appliqué une stratégie séquentielle en quatre temps : rechercher, apprendre, approfondir, prendre en main. La phase d'apprentissage s'est appuyée sur le manuel officiel de ~300 pages, suivi avec méthode (notes manuscrites, schémas, exercices complémentaires ciblés). Plusieurs applications d'entraînement ont ancré chaque notion.

  • Applications desktop (fenêtres, menus, canvas, boîtes de dialogue, gestion de fichiers et de flux).
  • Carnet d'adresses persistant sur SQLite (création de schéma, requêtes, gestion d'exceptions).
  • Application web (variantes web des contrôles) avec tri et mise à jour dynamique de liste.
  • Entraînement C# en parallèle : POO (classes, constructeurs surchargés, membres statiques, structures) réutilisée ensuite.

Architecture d'ICPerformance & flux de données

ICPerformance est une application desktop à onglets qui suit le flux de travail de l'architecte, de la saisie des caractéristiques du navire jusqu'à l'estimation de puissance. L'onglet « Vessel Data » regroupe les détails du projet, les données aérodynamiques (windage : aire frontale, coefficient Cd, vitesse et direction du vent), puis des jeux de valeurs balayables (vitesses, déplacements et longueurs à la flottaison (valeur unique ou plage avec incrément)) et le choix de la méthode de résistance (méthode catamaran, méthode de Savitsky, ou saisie manuelle). Suivent les onglets « Resistance », « Propeller Design » et « Powering ».

Le principe : l'utilisateur décrit le navire (déplacement, longueur et largeur à la flottaison, position du centre de gravité, angle de carène, données de windage), définit une batterie de points de fonctionnement, et l'outil calcule pour chaque combinaison la résistance hydrodynamique de la ou des coques, la résistance aérodynamique et la traînée des appendices (lignes d'arbres), avant d'alimenter le dimensionnement de l'hélice et le calcul de puissance installée. Le balayage des entrées produit les courbes résistance/puissance en fonction de la vitesse, cœur de l'analyse de performance.

Cette cartographie a été reconstituée par rétro-ingénierie (l'application n'ayant ni fichier README ni commentaires) puis validée en reproduisant l'interface dans un prototype WPF/C# (XAML, liaison de données, comportement attaché de saisie numérique, navigation par onglets, libellés contextuels). Cette reconstruction, à seule fin de montée en compétences, ne contient aucune méthode de calcul propriétaire.

Fondements publics de la prédiction de résistance

Les méthodes internes d'Incat Crowther sont sa propriété et ne sont pas reproduites. On peut néanmoins décrire le domaine public d'architecture navale dans lequel l'outil opère ; celui qui démontre la compréhension du sujet. La résistance totale à l'avancement se décompose classiquement en résistance de frottement (visqueuse), résistance résiduaire (résistance de vagues), traînée des appendices et résistance aérodynamique : R_T = R_F + R_R + R_app + R_air.

Le comportement hydrodynamique est gouverné par le nombre de Froude, Fr = V / √(g·L), et le nombre de Reynolds, Re = V·L / ν : d'où la pertinence des entrées température et densité de l'eau de l'outil (15 °C et 1025 kg·m⁻³ pour l'eau de mer par défaut). Le coefficient de frottement suit usuellement la ligne de corrélation modèle-navire de l'ITTC-1957, C_F = 0,075 / (log10(Re) − 2)², ajustée par une rugosité de coque (en microns, ex. 75 µm) et un coefficient de corrélation (ex. −0,20).

La résistance aérodynamique reprend la traînée standard R_air = ½·ρ_air·Cd·A·V², à partir d'une aire frontale et d'un Cd. Pour les carènes planantes, l'outil propose la méthode de Savitsky, méthode empirique publique de référence qui relie portance, assiette et résistance via l'angle de carène (deadrise), la position longitudinale (LCG) et verticale (VCG) du centre de gravité et la largeur à la flottaison : les grandeurs mêmes saisies dans l'onglet Savitsky. Enfin, la puissance effective de remorquage se déduit par P_E = R_T · V, avant de remonter, via les rendements propulsifs, à la puissance installée (onglets Propeller Design et Powering).

Reprise du code hérité & livrable de transmission

L'ouverture du projet a révélé une base de code « tentaculaire » : aucune structure logique, noms redondants, aucun commentaire, aucun README. La méthode adoptée fut itérative et systématique (capturer chaque fragment, en comprendre le rôle, commenter ligne à ligne, recommencer) jusqu'à transformer un code opaque en application réellement exploitable et maintenable. Le travail de production a ensuite avancé en boucle courte avec l'utilisateur principal : corrections de bugs, nouvelles fonctionnalités et documentation du code inexistante auparavant.

Un workflow Git propre (branches pour expérimenter, commits documentés, fusions, retour arrière) a remplacé les sauvegardes éparses. À l'issue des travaux, Tech Fox a rédigé le document que l'équipe aurait aimé avoir dès le départ : un guide de ~100 pages, « Xojo: Essential Guide for Continued Development ; For the Incat Crowther calculation app ICPerformance » (versions v1.0 à v2.3), combinant un cours général sur Xojo, une partie dédiée au fonctionnement d'ICPerformance et une section Git. Objectif explicite : assurer la continuité du développement au-delà de la mission.

Difficultés & solutions

Chaque obstacle a appelé une réponse méthodique plutôt qu'une improvisation.

  • Langage inconnu et rare (Xojo) : stratégie rechercher → apprendre → approfondir → prendre en main, appuyée sur le manuel officiel de ~300 pages ; opérationnel en une semaine.
  • Barrière des connaissances non recouvrantes avec l'architecte : recours à des notes manuscrites et croquis comme médium partagé ; posture d'ingénieur-traducteur entre besoin métier et implémentation.
  • Code hérité non documenté : lecture ligne à ligne, commentaires systématiques, restructuration et reconstruction de la carte fonctionnelle.
  • Git mal maîtrisé au départ : ré-apprentissage autonome et adoption d'un workflow à branches, puis rédaction d'une section Git dédiée.
  • Sources d'une 2ᵉ application C# jamais transmises (accès IT refusé, décalage horaire) : pivot vers ICPerformance et production du guide de transmission comme livrable additionnel.

Résultats, validation & compétences

La grille d'évaluation officielle signée par Matt Jupp (Principal Naval Architect, Incat Crowther) attribue la note maximale « Outstanding » sur la totalité des critères (assiduité, ponctualité, motivation, relation humaine, intégration, adaptabilité, efficacité, initiative, autonomie, observation) ainsi que sur l'évaluation générale, avec zéro jour d'absence. À l'issue de la mission, une offre d'emploi a été formulée (travail à distance depuis la France, ou retour l'été), signe le plus tangible de la satisfaction du client.

La mission a démontré une palette large : adaptabilité extrême (langage inconnu porté de zéro à la production en une semaine), programmation orientée objet en Xojo et en C#, rétro-ingénierie et reprise de code hérité, refactoring, documentation et débogage, développement d'interfaces desktop et WPF, persistance SQLite, gestion de versions Git, rédaction technique (guide de ~100 pages), et communication client dans un domaine métier étranger.

The work produced was of a high professional standard. Outstanding.
Matt Jupp · Principal Naval Architect · Incat Crowther
UN PROJET DU MÊME TYPE ?

Construisons-le.

Présentez le problème, même s'il est encore flou. On transforme le besoin en système clair.

Démarrer un projet