🏠

Audit Technique — SAT-PRE & SAT-HAB

 


Analyse d'Impact de la Séparation SIAS/TICC

Client : GRDF Périmètre : Applications SAT-PRE (Supervision) et SAT-HAB (Habilitations) Objectif : Évaluation de faisabilité de la séparation SIAS/TICC et recommandations stratégiques Date : 2025-11-06 Version : 2.0 (Rapport intégré avec analyse de couplage) Préparé par : Olivier Vitrac, PhD, HDR | Adservio Innovation Lab


 


0. Résumé Exécutif — Version v5

(Analyse d'Impact de la Séparation SIAS/TICC – Audit Technique SAT-PRE & SAT-HAB)


0.1 Contexte et Objectif

GRDF a mandaté Adservio pour évaluer la faisabilité technique de la séparation des périmètres SIAS et TICC au sein du système SAT (PRES, HAB, BPM), en prévision du remplacement progressif des technologies obsolètes (Oracle, WebLogic, Software AG BPM). L’étude vise à objectiver trois enjeux majeurs :

  1. mesurer le degré réel de couplage entre SIAS et TICC,

  2. identifier les modules mutualisés et leur nature (structurelle vs technique),

  3. fournir des scénarios de transformation réalistes conformes au cahier contractuel (ETUDE IMPACT – V3).

 

L’analyse SonarQube fournie au démarrage de l’étude montre une forte hétérogénéité de maturité logicielle entre les sous-systèmes : SAT.PRE et SAT.HAB échouent à tous les critères de la Quality Gate. Les indicateurs sont typiques de code ancien, peu couvert par les tests et présentant un couplage interne élevé (forte duplication, métriques de fiabilité et de sécurité dégradées) :

application / systèmeSAT.PRESAT.HABSAT.BPM
Quality Gate Status❌ Failed (6 conditions)❌ Failed (6 conditions)✅ Passed
New Issues887360
Accepted Issues000
Coverage (new code ≥ 80 %)0 % (14 k LTC*)0 % (64 LTC*)0 % (4 LTC*)
Coverage (global ≥ 70 %)< 70 % (failed)< 70 % (failed)OK
Duplication (new code ≤ 3 %)12.28 % (> target)0 % (new)0 %
Duplication (global ≤ 5 %)12.28 % (> target)> 5 % (failed)OK
Reliability RatingE (< B target)D (< B target)A
Security RatingE (< A target)E (< A target)A
Maintainability RatingBD (< A target)A
Security Hotspots0 (non revus)0 (non revus)0 (rev.)

* LTC = Lines to cover (par rapport à la ligne de base)

Sources : rapports SonarQube « SAT.PRE – main », « SAT.HAB – main » et « SAT.BPM – main », SonarQube Server v2025.1.1.104738

 

Les résultats montrent une dette technique concentrée sur SAT.PRE et SAT.HAB, tandis que SAT.BPM n’est pas un code source en soi mais un orchestrateur.

  • Dans la perspective de séparation SIAS/TICC, BPM peut être considéré comme une couche neutre mais fortement dépendante des services exposés par PRE/HAB.

  • La qualité logicielle insuffisante des modules Java (PRE/HAB) représente donc le principal risque pour la stabilité des orchestrations BPM après découplage.


 

0.2 Résultat Clé — Couplage SIAS/TICC

La documentation insuffisante du code (<30% des classes sont documentées) n'a pas permis une assignation directe des classes à l'application SIAS ou TICC. Une méthodologie hybride inédite combinant analyse systématique automatisée et enrichissement par expertise métier a été mise en œuvre.

Approche Méthodologique en Deux Temps

1. Analyse systématique par AST (Abstract Syntax Tree)

2. Analyse enrichie par expertise métier

Résultats Consolidés (v5)

Excellente nouvelle : le socle SAT présente une architecture naturellement séparable. ⚠️ Point d'attention : le code mort et les quelques UNKNOWN doivent être traités avant toute migration.

Bilan et interprétation de l'analyse statique des couplages

L'analyse hybride de 952 classes Java (904 à impact métier) a révélé une densité de couplage SIAS/TICC de 0.36%, soit :

(1)Densité=Dépendances détectéesDépendances possibles=1883952×9510.36%

➡️ Le projet se situe dans la zone verte : la séparation technique est viable.

< 1% = couplage faible1–5% = couplage modéré> 5% = couplage élevé
séparation techniquement faisablenécessite refactoring ⚠️séparation difficile 🔴

Note méthodologique : Le périmètre d'analyse comprend 952 classes (approche systématique) dont 904 à impact métier identifié (approche enrichie). Les 48 classes supplémentaires sont des classes techniques (interfaces, DTOs, abstracts, exceptions, configuration) dont l'impact sur la séparation SIAS/TICC est limité mais qui doivent être traçées pour assurer la complétude architecturale.


0.3 Insight Stratégique Clé — Réunion GRDF du 6 novembre 2025

Les résultats v3 renversent l’hypothèse prudente des versions antérieures (v1/v2) qui préconisaient un redéveloppement intégral par manque de lisibilité du code. La propagation par graphe de dépendances a révélé un niveau de séparation quasi total : la solution greenfield n’est plus une nécessité technique, mais une option stratégique à comparer objectivement à un refactoring guidé par les métriques.


0.4 Résultats Structurants

Synthèse Consolidée (Analyse Systématique + Enrichie)

CatégorieAnalyse SystématiqueAnalyse EnrichieRecommandation v5Commentaire
SHARED591 (62,1%)479 (52,9%)≈ 530 classesNoyau commun (entités, services, utilitaires) — Vote pondéré 60/40
SIAS116 (12,2%)66 (7,3%)≈ 110 classesControllers, PIL spécifiques — Analyse systématique prioritaire si confiance > 0,85
TICC24 (2,5%)83 (9,2%)83 classesControllers, feedback, télé-incidents — Analyse BPM prioritaire
DEAD_CODE198 (20,8%)250 (27,7%)250 classesCode non atteint — Approche conservative (à supprimer)
UNKNOWN23 (2,4%)27 (3,0%)< 10 classesClasses techniques — Objectif après enrichissement final

Note : Les chiffres en gras représentent les valeurs recommandées pour la planification de la migration, issues d'une consolidation validée des deux approches méthodologiques.

Modules Transverses et Classes Critiques

Les 60 packages transverses (common, util, transverse, mapper, dto, config) et les 14 God Classes ont été cartographiés et peuvent être convertis en bibliothèque commune ou refactorés à part.

 

Classes Partagées (47 classes critiques)

Les 47 classes partagées (6.5%) ont été identifiées comme contenant simultanément des références SIAS et TICC. Exemples :

ClasseDépendancesDomaine DétectéStratégie Recommandée
EcSatPreWkf001Controller71SIAS+TICC🔴 Refactoring prioritaire (God Class)
EcSatPreWkf002Controller52SIAS+TICC🔴 Refactoring prioritaire (God Class)
TraitementMasseServiceImpl44SIAS+TICC🔴 Refactoring prioritaire (God Class)
IncidentService28SIAS+TICC🟡 Extraction librairie commune ou duplication
TraitementAutomatique22SIAS+TICC🟡 Extraction librairie commune

God Classes (14 classes critiques)

14 classes présentent plus de 20 dépendances (seuil critique selon les bonnes pratiques) :

Modules Transverses (60 packages)

60 packages transverses identifiés (common, util, transverse, mapper, dto, config) avec :


0.5 Vulnérabilités et Risques Critiques

IDCriticitéDescriptionImpactClasses Affectées
R1🔴 HAUTESQL Injection — Concaténation de chaînes SQL sans PreparedStatementSécurité + Migration PostgreSQL difficile56 classes (45 PRE, 11 HAB)
R2🔴 HAUTEGod Classes — Violation SRP, complexité > 20 dépendancesMaintenabilité, séparation complexe14 classes (10 PRE, 4 HAB)
R3🟠 MOYENNEStack Legacy EOL — WebLogic 12c, Hibernate 4.x/5.x, Liquibase 3.xObsolescence, CVEs non patchéesToute l'application
R4🟠 MOYENNEDocumentation < 30% — Javadoc absente ou incomplèteTransfert de connaissance fragile70% des classes
R5🟡 FAIBLETests absents/incomplets — Couverture inconnue (JaCoCo non configuré)Risque de régression post-refactoringModules métier critiques

0.6 Options Stratégiques

OptionDescriptionAvantagesInconvénients
A – Refactoring & SéparationDécouplage par configuration et packaging (2 binaries + librairie commune)Rapide, faible risque, réutilisation du code métierMaintien d’une partie de la dette existante
B – GreenfieldRéécriture progressive sur socle ABJ moderneQualité et pérennité maximalesCoût initial plus élevé

La version v3 plaide pour l’Option A re-valorisée (Refactoring guidé), avec des pochettes de Greenfield sur les zones critiques (sécurité, habilitations, BPM).


0.7 Recommandation Stratégique v5

Scénario recommandé : 🟢 Refactoring et Séparation progressive (Option A) → Conserver l'architecture existante et l'isoler par configuration. → Créer un module core-shared mutualisé (~530 classes). → Extraction TICC (83 classes) puis SIAS (~110 classes). → Réécrire seulement les segments obsolètes ou vulnérables. → Migrer vers ABJ / PostgreSQL / Camunda BPM (open-source) sur socle unifié. Décommissionner Software AG BPM avant expiration licence (mi-2026).


0.8 Roadmap Proposée (v5) — Synthèse

PhaseDurée estiméeObjectifEffort (mois-personne)
0 – Diagnostic & POC BPM3 moisAudit complet + POC Camunda (2-3 workflows)6
1 – Migration Infrastructure9 moisWebLogic→Tomcat, Oracle→PostgreSQL, JMS→Kafka, BPM open-source18
2 – Nettoyage préparatoire2 sem.Suppression code mort (250 classes) + classification UNKNOWN (<10)1
3 – Séparation SIAS/TICC12 moisExtraction TICC (83), SIAS (~110), refactoring SHARED (~530)24
4 – Tests & Production6 moisCampagne tests performance + déploiement progressif12
Total30 moisSéparation complète + modernisation stack60

Points critiques :

(Voir §14 pour GANTT détaillé avec jalons et dépendances)


0.9 Prochaines Étapes