TOGAF 9.2 (The Open Group Architecture Framework)
Phase A (Architecture Vision) → Event Storming
Phase B (Business Architecture) → User Stories BDD
Phase C (Information Systems) → Hexagonal Architecture
Phase D (Technology Architecture) → Kubernetes + PostgreSQL
Domain-Driven Design (DDD) — Eric Evans, 2003
Bounded Contexts : SIAS, TICC, HAB, Référentiel
Aggregates : Incident (root), Tâche, Alarme
Value Objects : Adresse, Matricule Compteur
Hexagonal Architecture — Alistair Cockburn, 2005
Ports (interfaces) : IncidentRepository, NotificationService
Adapters : PostgreSQLIncidentRepository, KafkaNotificationService
C4 Model — Simon Brown
Niveau 1 (Context) : Systèmes externes (SPQR, SSOL, STIC)
Niveau 2 (Container) : SIAS API, SIAS UI, PostgreSQL, Kafka
Niveau 3 (Component) : IncidentService, TâcheService, AlarmService
Niveau 4 (Code) : diagrammes classes UML
| Domaine | Standard | Version | Usage |
|---|---|---|---|
| REST API | OpenAPI Specification | 3.1 | Documentation contrats API |
| Authentication | OAuth2 RFC 6749 + OIDC | 2.0 / 1.0 | Keycloak |
| Messaging | CloudEvents | 1.0 | Format événements Kafka |
| Database Schema | Liquibase | 4.27+ | Versioning schéma PostgreSQL |
| Logging | Elastic Common Schema (ECS) | 8.x | Logs structurés JSON |
| Metrics | OpenMetrics (Prometheus) | 1.0 | Exposition métriques |
| Tracing | OpenTelemetry | 1.0 | Tracing distribué |
| Container | OCI (Open Container Initiative) | 1.0 | Images Docker |
| Orchestration | Kubernetes | 1.29+ | Déploiement production |
Kruchten, P., Nord, R., Ozdimir, I. (2012). Technical Debt: From Metaphor to Theory. IEEE Software 29(6).
Parnas, D. L. (1972). On the Criteria to Be Used in Decomposing Systems into Modules. CACM 15(12).
McCabe, T. J. (1976). A Complexity Measure. IEEE Trans. Software Engineering SE-2(4).
Martin, R. C. (2003). Agile Software Development: Principles, Patterns, and Practices. Prentice Hall.
Evans, E. (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley.
Vernon, V. (2013). Implementing Domain-Driven Design. Addison-Wesley.
Richardson, C. (2018). Microservices Patterns. Manning Publications.
Newman, S. (2021). Building Microservices (2nd ed.). O'Reilly Media.
| CVE | Composant | Sévérité | Description | Mitigation |
|---|---|---|---|---|
| CVE-2021-44228 | Log4j 1.x/2.x | 🔴 Critique | Log4Shell — RCE via JNDI | Upgrade Logback 1.5.x |
| CVE-2021-32682 | Liquibase 3.6.x | 🔴 Élevé | XXE injection | Upgrade 4.27+ |
| CVE-2019-12415 | Apache POI 3.x | ⚠️ Moyen | XXE | Upgrade 5.3+ |
| CVE-2019-14540 | Jackson 2.9.x | ⚠️ Moyen | Deserialization | Upgrade 2.17+ |
| CVE-2016-1000031 | Commons-FileUpload 1.3.2 | 🔴 Critique | Arbitrary code execution | Upgrade 1.5+ |
Le document « Utilisation de ABJ – Software Factory – Confluence » décrit le cadre d’utilisation du moteur de build Java ABJ (Application Build Java) au sein de la Software Factory GRDF. Ce référentiel interne précise les bonnes pratiques, responsabilités, et règles de conformité à respecter pour tout projet Java intégré dans le SI GRDF.
Il constitue une référence obligatoire pour les projets SAT, SIAS et TICC après séparation, et complète les standards de la DSI (sécurité, intégration continue, packaging, documentation, et déploiement).
| Objectif | Description |
|---|---|
| Industrialisation | Fournir un cadre standardisé de compilation, packaging et déploiement des applications Java. |
| Conformité | Garantir l’alignement avec les règles DSI (sécurité, signatures, dépendances approuvées). |
| Traçabilité | Centraliser les builds, versions et logs dans la Software Factory GRDF. |
| Interopérabilité | Assurer la compatibilité avec les pipelines CI/CD internes (Jenkins, SonarQube, Nexus). |
| Auditabilité | Faciliter les contrôles DSI via l’automatisation des tests et l’archivage des artefacts. |
Résumé du flux :
Le code source est commité sur GitLab.
ABJ déclenche la chaîne d’intégration continue (build + tests).
Les dépendances sont validées selon la whitelist DSI.
Les artefacts (.jar, .pom, .doc) sont signés et publiés dans Nexus.
Le déploiement automatisé est ensuite opéré par la Software Factory (environnement de recette ou production).
| Domaine | Règle ABJ | Implication pour le projet SIAS/TICC |
|---|---|---|
| Structure Maven | Modules conformes à groupId/artifactId normalisés | Chaque sous-module (SIAS, TICC, core-shared) doit être packagé indépendamment. |
| Versioning | Schéma X.Y.Z obligatoire, sans suffixe non approuvé | Cohérence à maintenir entre builds SIAS/TICC. |
| Dépendances | Interdiction des repos non approuvés | Toutes les libs doivent provenir du Nexus GRDF. |
| Qualité | Analyse SonarQube obligatoire | Zéro blocant (Bugs/Codesmells critiques). |
| Documentation | Javadoc minimale, changelog par build | Livraison systématique avec le jar. |
| Sécurité | Scan CVE intégré avant publication | Vérification automatique des dépendances tierces. |
| Acteur | Rôle | Livrables |
|---|---|---|
| Développeurs / Architectes applicatifs | Garantir la conformité du code aux règles ABJ | Code Maven conforme, tests automatisés |
| Software Factory GRDF | Exploiter la chaîne CI/CD et auditer les builds | Logs, rapports SonarQube, artefacts Nexus |
| DSI GRDF | Superviser la cohérence des environnements et des référentiels | Politique de version, whitelists, référentiels de sécurité |
Dans le cadre du projet Séparation SIAS/TICC, ABJ est l’outil d’intégration officiel pour :
Compiler séparément les binaires app-sias.jar et app-ticc.jar.
Publier la bibliothèque core-shared.jar dans Nexus sous le référentiel partagé.
Exécuter les tests qualité et sécurité automatisés sur chaque pipeline.
Garantir la traçabilité et la conformité DSI (conformément au contrat d’étude d’impact).
| Phase de la Roadmap (Section 11) | Exigence ABJ correspondante | Livrable attendu |
|---|---|---|
| Phase 1 – Séparation logique | Validation de deux builds distincts dans ABJ | app-sias.jar, app-ticc.jar |
| Phase 2 – Extraction du noyau commun | Enregistrement de core-shared.jar dans Nexus | Librairie mutualisée signée |
| Phase 3 – Migration technologique | Reconfiguration CI/CD ABJ pour PostgreSQL | Pipeline ABJ v2 |
| Phase 5 – Qualification finale | Vérification automatique CVE et Sonar | Certificat de conformité ABJ |
Le référentiel ABJ – Software Factory GRDF n’est pas un simple outil de build : il constitue le socle de conformité logicielle et de gouvernance CI/CD imposé à toutes les applications Java du SI GRDF.
L’Option A+ (refactoring guidé) retenue par Adservio s’y aligne naturellement : elle permet de réintégrer sans rupture les builds séparés SIAS/TICC dans cette chaîne tout en respectant les standards de qualité, sécurité et traçabilité attendus par la DSI.
| Terme | Définition | Équivalent Français |
|---|---|---|
| AST | Abstract Syntax Tree — représentation arbre du code source | Arbre de syntaxe abstraite |
| BDD | Behavior-Driven Development — tests écrits en langage naturel (Gherkin) | Développement piloté par le comportement |
| Bus Factor | Nombre de personnes clés dont l'absence bloque le projet | Facteur autobus |
| CDC | Change Data Capture — réplication temps réel base de données | Capture de données modifiées |
| CI/CD | Continuous Integration / Continuous Deployment | Intégration/déploiement continus |
| Coupling Density | Métrique : dépendances réelles / dépendances possibles | Densité de couplage |
| CVE | Common Vulnerabilities and Exposures — référence vulnérabilités | Référence vulnérabilité |
| DDD | Domain-Driven Design — approche architecture centrée domaines métier | Conception pilotée par le domaine |
| DTO | Data Transfer Object — objet simple transport données | Objet de transfert de données |
| E2E | End-to-End — tests complets parcours utilisateur | Tests de bout en bout |
| EJB | Enterprise JavaBeans — composants JEE (legacy) | — |
| Event Storming | Workshop collaboratif capture processus métier par événements | Atelier événements métier |
| FQN | Fully Qualified Name — nom complet classe Java (package + nom) | Nom pleinement qualifié |
| God Class | Antipattern : classe avec trop de responsabilités (> 20 dépendances) | Classe Dieu |
| Greenfield | Développement nouveau système from scratch | Développement nouveau |
| Hexagonal Architecture | Architecture Ports & Adapters (Alistair Cockburn) | Architecture hexagonale |
| JMS | Java Message Service — API messaging JEE | — |
| JPA | Java Persistence API — ORM standard Java | — |
| Liquibase | Outil versioning schéma base de données | — |
| LOC | Lines of Code — lignes de code | Lignes de code |
| MVP | Minimum Viable Product — version minimale fonctionnelle | Produit minimum viable |
| OAuth2 | Open Authorization 2.0 — standard authentification/autorisation | — |
| OIDC | OpenID Connect — couche identité au-dessus OAuth2 | — |
| ORM | Object-Relational Mapping — mapping objet ↔ base relationnelle | Mapping objet-relationnel |
| POC | Proof of Concept — prototype validation faisabilité | Preuve de concept |
| SBOM | Software Bill of Materials — inventaire dépendances logicielles | Liste matériaux logiciels |
| SLA | Service Level Agreement — engagement qualité service | Accord niveau de service |
| SOAP | Simple Object Access Protocol — protocole web services XML | — |
| Strangler Pattern | Migration progressive remplacement système legacy | Motif étrangleur |
| TCO | Total Cost of Ownership — coût total possession | Coût total possession |
| TDD | Test-Driven Development — écrire tests avant code | Développement piloté par tests |
| XXE | XML External Entity — vulnérabilité injection XML | Entité externe XML |
| Script | Localisation | Lignes | Fonction |
|---|---|---|---|
discover_codebases.py | python/java_audit/ | 320 | Détection projets Maven/Gradle |
audit_tool.py | python/java_audit/ | 580 | Analyse AST, métriques, flags |
query_tool.py | python/java_audit/ | 240 | Requêtes JSON databases |
coupling_analyzer.py | python/java_audit/ | 430 | Analyse couplage SIAS/TICC |
visualize_coupling.py | python/java_audit/ | 250 | Génération Mermaid/DOT |
1_discover.sh | python/java_audit/scripts/ | 80 | Pipeline découverte |
2_analyze_all.sh | python/java_audit/scripts/ | 120 | Pipeline analyse complète |
4_maven_analysis.sh | python/java_audit/scripts/ | 180 | Analyse Maven + dépendances |
5_coupling_analysis.sh | python/java_audit/scripts/ | 150 | Pipeline couplage |
Total : ~2 350 lignes de code Python/Bash créées pour cet audit
| Fichier | Taille | Description |
|---|---|---|
output/sat-pre_database.json | 3.2 MB | Métriques complètes SAT-PRE (618 classes) |
output/sat-hab_database.json | 0.8 MB | Métriques SAT-HAB (100 classes) |
output/coupling/sat-pre-combined_coupling.json | 1.5 MB | Graphe couplage 726 classes |
output/maven/*/deps.json | 0.4 MB | Arbres dépendances Maven |
output/maven/*/depgraph.json | 0.6 MB | Graphes modules Maven |
Total : ~6.5 MB de données structurées
| Document | Localisation | Pages | Statut |
|---|---|---|---|
| Rapport Audit v1 (English) | reports/GRDF_SAT_PRE_HAB_Technical_Audit_Report.md | 55 | ✅ Complet |
| Rapport Audit v2 (Français) | reports/GRDF_SAT_PRE_HAB_Technical_Audit_Report_v2.md | 120 | ✅ CE DOCUMENT |
| Pitch Présentation | v2/01_pitch_presentation.md | 10 | ✅ Complet |
| 53 Questions Clés | v2/02_questions_cles_modele_donnees_flux.md | 18 | ✅ Complet |
| Rapport Réaligné | v2/03_rapport_audit_SIAS_realigne.md | 40 | ✅ Complet |
| Cartographie Couplages | v2/04_cartographie_couplages_SIAS_TICC.md | 15 | ✅ Complet |
| Outils Analyse | v2/05_outils_analyse_statique_crees.md | 12 | ✅ Complet |
| Diagramme Couplage | v2/diagrams/sat-pre-coupling.md | — | ✅ Mermaid |
| Diagramme Stats | v2/diagrams/sat-pre-stats.md | — | ✅ Mermaid |
| Evidence | Localisation | Description |
|---|---|---|
| God Class #1 | app-pre-main/src/.../EcSatPreWkf001Controller.java:1-487 | 71 dépendances, 487 LOC |
| SQL Injection #1 | app-pre-main/src/.../IncidentDaoImpl.java:124-135 | String concatenation JPQL |
| JMS Listener #1 | app-pre-main/src/.../IncidentCreationListener.java:45-78 | Queue jms/queue/IncidentCreation |
| Javadoc Manquante | app-pre-main/src/.../TraitementMasseServiceImpl.java:89-92 | Méthode publique sans doc |
FIN DU RAPPORT V2 · AUDIT TECHNIQUE SAT-PRE & SAT-HAB
Document confidentiel — Propriété GRDF © 2025 Adservio Innovation Lab Olivier Vitrac, PhD, HDR | Head of Innovation Lab Email: olivier.vitrac@adservio.com Date: 2025-11-06 Version: 2.0 (Intégration v1 + Analyse Couplage SIAS/TICC + Recommandations Stratégiques)
Résumé Exécutif (1 phrase) :
L'analyse de 726 classes et 1 883 dépendances révèle un couplage SIAS/TICC de 0.36% (excellent), mais 590 classes non classifiables (81.3%) rendent le refactoring risqué → Option B Greenfield recommandée (14–18 mois, €500K TCO, 8/10 score) pour séparation SIAS/TICC avec architecture moderne (Hexagonal, DDD, Spring Boot 3.3, PostgreSQL 16, Kafka, Kubernetes).
Statistiques Rapport v2 :
Lignes totales : 3 847 (objectif ~3 500 ✅ atteint)
Sections principales : 13 (0 à 13 — Section 0 = Executive Summary)
Annexes : 6 (A à F)
Diagrammes Mermaid : 8 (architecture, couplage, Gantt, etc.)
Tables : 47 (métriques, comparaisons, roadmap)
Références académiques : 8 (Kruchten, Parnas, Evans, etc.)
CVEs identifiées : 5 (Log4Shell, Liquibase, POI, Jackson, FileUpload)
Questions clés consolidées : 53 (P0/P1/P2)
LOC analysés : 88 655 (SAT-PRE 70K + SAT-HAB 18K)
Classes auditées : 726 (618 PRE + 100 HAB + 8 frameworks)
Dépendances tracées : 1 883
Scripts Python/Bash créés : 9 (~2 350 LOC)
Bases de données JSON : 6.5 MB