Jared/ModernisationModernization
Service SVC-01 · pour les systèmes existants Service SVC-01 · for legacy systems

Moderniser un legacy
que plus personne ne maîtrise.
Modernizing a legacy system
no one fully masters.

Jared reconstruit les spécifications à partir du code en production, puis réécrit l'application sur une stack actuelle, testée à 100 %. La connaissance métier accumulée au fil des années est préservée et redevient lisible. Jared rebuilds the specifications from the code running in production, then rewrites the application on a current stack with 100 % test coverage. The business knowledge accumulated over the years is preserved and becomes readable again.

3étapessteps
100%couverture de testtest coverage
TDDà la réécritureon the rewrite
2 jrétro-spec (Indosuez)reverse-spec (Indosuez)
La méthode en trois étapesThe method in three steps
01

Rétro-spécificationReverse specification

Les spécifications sont reconstruites à partir du code en production et de la documentation résiduelle.Specifications are rebuilt from the production code and any remaining documentation.

Livrable : cahier de spécifications validéDeliverable: validated specification book
02

Stack techniqueTechnical stack

Jared formule une recommandation argumentée. La décision finale vous revient.Jared issues a documented recommendation. The final decision is yours.

Livrable : stack cible arrêtéeDeliverable: agreed target stack
03

Réécriture en TDDTDD rewrite

L'application est réécrite intégralement, avec 100 % de couverture de test.The application is fully rewritten, with 100 % test coverage.

Livrable : application testée et documentéeDeliverable: tested, documented application
Voir la méthode détailléeSee the detailed method Entrées, sorties et livrables de chaque étapeInputs, outputs and deliverables of each step
Le constatThe situation

Le système est critique, et chaque modification devient un risque. The system is critical, and every change has become a risk.

Un système legacy fonctionne, parfois depuis dix ou quinze ans, et porte l'essentiel de l'activité. Ses auteurs ont quitté l'entreprise, la documentation est partielle ou datée, et les dépendances sont sorties du support éditeur. La connaissance métier réside désormais dans le code lui-même. A legacy system works, sometimes after ten or fifteen years, and carries most of the business. Its authors have left the company, documentation is partial or outdated, and dependencies have fallen out of vendor support. Business knowledge now resides in the code itself.

Réécrire de zéro expose à perdre des règles métier que plus personne ne sait énoncer. Conserver l'existant revient à porter le risque indéfiniment, sur une technologie de moins en moins recrutable. La rétro-spécification permet de sortir de cette alternative en récupérant d'abord la connaissance. Rewriting from scratch risks losing business rules no one can still state. Keeping the existing base means carrying the risk indefinitely, on a technology that is increasingly hard to hire for. Reverse specification steps out of that alternative by recovering the knowledge first.

Ce qui changeWhat changes

Le même produit, sur des fondations différentes.The same product, on different foundations.

Avant · le système existantBefore · the legacy system
  • Documentation absente ou datée, le métier vit dans le codeMissing or outdated documentation, business logic lives in the code
  • Couverture de test faible ou inexistanteLow or non-existent test coverage
  • Les auteurs d'origine ont quitté l'entrepriseThe original authors have left the company
  • Framework et dépendances hors support éditeurFramework and dependencies out of vendor support
  • Recrutement difficile sur une technologie datéeHiring is difficult on a dated technology
Après · le système moderniséAfter · the modernized system
  • Cahier de spécifications complet, validé avec vousComplete specification book, validated with you
  • 100 % de couverture : unitaire, intégration, e2e100 % coverage: unit, integration, e2e
  • Chaque exigence reliée à son testEvery requirement linked to its test
  • Base lisible et documentée, onboarding rapideReadable, documented base, fast onboarding
  • Stack actuelle et maintenue, choisie sur recommandationCurrent, supported stack, chosen on recommendation
La méthodeThe method

Trois étapes, dans cet ordre.Three steps, in this order.

La séquence compte autant que les étapes. Rien n'est réécrit avant que les spécifications soient reconstruites et que la stack cible soit arrêtée.The sequence matters as much as the steps. Nothing is rewritten before the specifications are rebuilt and the target stack is settled.

01
Rétro-spécificationReverse specification

Reconstruire les spécifications à partir du codeRebuild the specifications from the code

Jared analyse le code en production et en extrait les règles métier, les parcours et les cas limites réellement implémentés. La documentation et les spécifications encore disponibles de votre côté sont intégrées à cette lecture. Sur un système ancien, ces documents sont souvent partiels ou dépassés : ils servent de point de comparaison avec le comportement effectif, qui fait foi. Jared analyzes the code running in production and extracts the business rules, user journeys and edge cases actually implemented. Whatever documentation and specifications you still hold are folded into this reading. On an older system these documents are often partial or outdated: they serve as a point of comparison against actual behaviour, which prevails.

Le résultat est un cahier de spécifications structuré, où chaque exigence porte un identifiant. Il est relu et validé avec vous avant toute étape suivante. Les écarts et les zones ambiguës sont signalés explicitement plutôt que tranchés en silence. The result is a structured specification book in which every requirement carries an identifier. It is reviewed and validated with you before any further step. Gaps and ambiguous areas are flagged explicitly rather than silently resolved.

EntréeInputcode en production + doc et specs résiduellesproduction code + remaining docs and specs
SortieOutputcahier de specs identifiées et validéesbook of identified, validated specs
02
Stack techniqueTechnical stack

Recommandation par Jared, décision par vousRecommendation by Jared, decision by you

Sur la base des spécifications reconstruites, Jared établit une recommandation de stack cible : langages, frameworks, socle de données, hébergement. Chaque option est présentée avec ses contraintes, son coût d'exploitation, ses conséquences sur le recrutement et son interopérabilité avec les systèmes que vous conservez. Based on the reconstructed specifications, Jared produces a target stack recommendation: languages, frameworks, data layer, hosting. Each option is presented with its constraints, running costs, hiring implications and interoperability with the systems you keep.

La décision vous appartient. Vos contraintes internes, les compétences de votre équipe et vos engagements existants priment sur la recommandation technique. The decision is yours. Your internal constraints, your team's skills and your existing commitments take precedence over the technical recommendation.

EntréeInputspecs validées + contraintes internesvalidated specs + internal constraints
SortieOutputstack cible arrêtée et documentéeagreed, documented target stack
03
Réécriture en TDDTDD rewrite

Réécriture complète, 100 % de couvertureFull rewrite, 100 % coverage

L'application est réécrite intégralement sur la stack retenue, en développement piloté par les tests. Les tests sont dérivés des spécifications validées à l'étape 1, ce qui garantit que la couverture porte sur le comportement attendu du système. La réécriture vise l'iso-fonctionnel : le comportement observé en production sert de référence pour la bascule. The application is fully rewritten on the chosen stack, using test-driven development. Tests are derived from the specifications validated in step 1, which ensures coverage reflects the system's expected behaviour. The rewrite targets functional equivalence: behaviour observed in production is the reference for the switch-over.

UnitaireUnit
100%

Chaque règle métier isolée et vérifiée indépendamment.Each business rule isolated and verified independently.

IntégrationIntegration
100%

Les composants vérifiés ensemble, données et services inclus.Components verified together, data and services included.

End-to-end
100%

Les parcours utilisateurs rejoués de bout en bout.User journeys replayed from end to end.

EntréeInputspecs validées + stack arrêtéevalidated specs + agreed stack
SortieOutputapplication réécrite, testée, documentéerewritten, tested, documented application
Le livrableThe deliverable

Votre code devient un graphe lisible.Your code becomes a readable graph.

La rétro-spécification produit une cartographie reliant spécifications, tickets et code. Chaque exigence est traçable jusqu'à son test, ce qui rend l'avancement et la couverture vérifiables à tout moment. Reverse specification produces a map linking specifications, tickets and code. Every requirement is traceable to its test, which makes progress and coverage verifiable at any time.

01

Lecture du codeReading the code

Des agents analysent, testent et documentent le comportement réel de la base existante.Agents analyze, test and document the actual behaviour of the existing base.

02

CartographieMapping

Specs, tickets et code sont reliés dans un graphe mis à jour en continu.Specs, tickets and code are linked in a continuously updated graph.

03

Réécriture tracéeTraced rewrite

Chaque ligne écrite se rattache à une exigence et à son test de validation.Every line written maps to a requirement and to its validating test.

Knowledge Graph · cas client anonymisé 4758 fichiersfiles · 752 specs Spec Ticket Code
4758fichiersfiles
752specsspecs
100%auditableauditable
Voir un vrai grapheShow a real graph
Exemple réelReal example

Une vraie spécification, pas une maquette.A real specification, not a mockup.

Extrait du cahier fonctionnel « Gestion des utilisateurs » d'un projet Jared en production, non modifié. Excerpt from the "User Management" functional spec of a live Jared project, unedited.

FS-001-user-management-workflows.md

Overview

This specification defines the user management workflows for the Ptidonjon platform, including user registration, authentication, session management, password reset, and external service integrations. The system supports multiple user acquisition channels (website direct registration and Instagram chatbot) with a unified user model.


User Stories

US-001.1: Website Registration

As a visitor, I want to create an account on the website using my email and password so that I can access the platform's features.

US-001.2: Instagram Auto-Registration

As an Instagram user, I want my account to be automatically created when I first message the chatbot so that I can start using the service without manual registration.

US-001.3: Email/Password Login

As a registered user, I want to log in with my email and password so that I can access my personal space.

US-001.4: Magic Link Login

As a user (especially Instagram-originated), I want to log in via a secure magic link so that I can access my content without remembering credentials.

US-001.5: Profile Completion

As a pre-registered user (via Instagram), I want to complete my profile with email and password so that I have full access to my account.

US-001.6: Password Reset

As a registered user, I want to reset my password via a magic link so that I can regain access to my account if I forget my credentials.


Functional Requirements

FS-001.1: User Registration - Website

Description: The system shall allow visitors to create accounts directly on the website.

Acceptance Criteria:

  • AC-001.1.1: The system shall accept email and password for registration
  • AC-001.1.2: The system shall validate the password against the password strength requirements (see BS-001.7)
  • AC-001.1.3: The system shall verify the email is not already registered (see BS-001.8)
  • AC-001.1.4: The system shall create a user record with state "registered" and a unique sourceId in the format "website-{uuid}"
  • AC-001.1.5: The system shall hash the password before storage
  • AC-001.1.6: The system shall return an authentication token upon successful registration
  • AC-001.1.7: The system shall redirect the user to their personal space after registration

Test Scenarios:

GIVEN a visitor on the signup page
WHEN they provide a valid email and password meeting strength requirements
THEN a new user is created with state "registered" and a unique sourceId in the format "website-{uuid}"
AND the user receives an authentication token
AND the user is redirected to their personal space

GIVEN a visitor on the signup page
WHEN they provide a password that does not meet strength requirements
THEN an error message is displayed indicating the password requirements
AND no user is created

GIVEN a visitor on the signup page
WHEN they provide an email that is already registered
THEN an error message is displayed asking to choose another email or use "forgot password"
AND no duplicate user is created
Voir la spécification complèteSee the full specification
DémonstrationDemonstration

La rétro-spécification se montre en direct.Reverse specification can be shown live.

Une démonstration est possible sur votre propre base de code. Elle permet de constater le fonctionnement de la première étape avant tout engagement.A demonstration can be run on your own codebase. It shows how the first step works before any commitment.

  • Branchement.Connection. Jared est branché sur votre base de code, dans l'environnement de votre choix.Jared is connected to your codebase, in the environment of your choice.
  • Lecture en direct.Live reading. L'analyse se déroule devant vous, sur un module que vous désignez.The analysis runs in front of you, on a module you select.
  • Premières specs.First specs. Les spécifications extraites s'affichent au fil de l'analyse et sont confrontées à votre connaissance du produit.Extracted specifications appear as the analysis proceeds and are checked against your knowledge of the product.
  • Restitution.Hand-off. Ce qui a été produit pendant la séance vous reste acquis, quelle que soit la suite donnée.Whatever is produced during the session remains yours, whatever you decide next.
FormatFormat

Une séance de 30 minutes, sur votre code.A 30-minute session, on your code.

La séance se déroule sur un cas réel, sur votre base ou sur un dépôt de démonstration si vous préférez ne rien exposer à ce stade.The session runs on a real case, on your base or on a demo repository if you prefer not to expose anything at this stage.

Réserver la démo →Book the demo →
RéférencesReferences

Des résultats mesurés sur des projets réels.Measured results on real projects.

2 j
cahier de specs complet et analyse de sécurité · Indosuez (banque privée)full spec book and security analysis · Indosuez (private bank)
÷33
coût · SaaS EdTech : une feature en 4 j (solo) vs 5 personnes sur 2 moiscost · EdTech SaaS: a feature in 4 days (solo) vs 5 people over 2 months
÷5
time-to-market · composant L'Oréal Skin Geniustime-to-market · L'Oréal Skin Genius component
1 M
utilisateurs/mois sur le composant L'Oréal livrémonthly users on the delivered L'Oréal component

Résultats constatés sur des projets réels, présentés comme repères et non comme engagements contractuels.Results observed on real projects, shown as benchmarks rather than contractual commitments.

Questions fréquentesFrequent questions

Ce que la modernisation implique.What modernization involves.

Le système doit-il être arrêté pendant l'opération ?Does the system have to be taken offline?

Non. La rétro-spécification s'effectue en lecture seule sur une copie du code, sans intervention sur la production. Le système existant continue de fonctionner pendant toute la durée des travaux, jusqu'à la bascule.No. Reverse specification is performed read-only on a copy of the code, with no intervention on production. The existing system keeps running throughout the work, until the switch-over.

Personne ne connaît plus le métier du système. Est-ce bloquant ?Nobody understands the system's business logic anymore. Is that blocking?

C'est la situation la plus fréquente et elle constitue le point de départ de la méthode. Le comportement du système fait foi : les règles sont extraites du code lui-même, puis soumises à vos équipes métier pour validation. Cette relecture révèle souvent des règles appliquées depuis des années sans avoir jamais été formalisées.This is the most common situation and it is the starting point of the method. System behaviour prevails: rules are extracted from the code itself, then submitted to your business teams for validation. This review often surfaces rules applied for years without ever being written down.

Pourquoi viser 100 % de couverture ?Why aim for 100 % coverage?

Parce que les tests sont dérivés des spécifications validées. Une couverture partielle signifierait que certaines exigences validées ne sont pas vérifiées. La couverture complète est ici la conséquence de la méthode plutôt qu'un objectif poursuivi pour lui-même.Because the tests are derived from the validated specifications. Partial coverage would mean some validated requirements go unverified. Full coverage is a consequence of the method rather than a target pursued for its own sake.

Faut-il tout remplacer d'un seul bloc ?Does everything have to be replaced at once?

Non. Le périmètre est défini avec vous à l'issue de l'étape 1, une fois la cartographie disponible. Certains modules peuvent être conservés, d'autres remplacés par lots successifs, avec maintien de l'interopérabilité pendant la transition. L'étape 2 tient compte de ces contraintes.No. Scope is defined with you at the end of step 1, once the map is available. Some modules can be kept, others replaced in successive batches, with interoperability maintained during the transition. Step 2 accounts for these constraints.

Que deviennent les données existantes ?What happens to the existing data?

Le modèle de données actuel est analysé au même titre que le code, car il porte lui aussi des règles implicites. La reprise de données est traitée comme une exigence à part entière, spécifiée puis couverte par des tests de migration avant la bascule.The current data model is analyzed alongside the code, since it carries implicit rules of its own. Data migration is treated as a requirement in its own right, specified and then covered by migration tests before the switch-over.

Le code source nous appartient-il ?Do we own the source code?

Oui, ainsi que le cahier de spécifications produit. Ces documents restent lisibles et exploitables indépendamment de Jared, y compris si vous confiez la suite à une autre équipe.Yes, along with the specification book produced. These documents remain readable and usable independently of Jared, including if you hand the next phase to another team.

Prochaine étapeNext step

Commencer par la rétro-spécification.Start with reverse specification.

La première étape se conduit indépendamment des suivantes. Elle produit un cahier de spécifications exploitable, que la réécriture soit engagée ensuite ou non.The first step can be run independently of the others. It produces a usable specification book, whether or not the rewrite follows.

Demander une démoRequest a demo
ServiceServiceSVC-01 · ModernisationModernization
CibleTargetSystèmes legacyLegacy systems
Étape 1Step 1Rétro-spécificationReverse specification
Étape 2Step 2Stack cibleTarget stack
Étape 3Step 3Réécriture TDDTDD rewrite