Global Exam
Bilan 2024 Clean Archi
Interdépendances entre les composants
Gloubi boulga de logique applicative, de présentation, métier ...
Testabilité en berne
Application Laravel classique 😥


Ceci n'est pas une architecture
C'est un découpage technique des responsabilités
Une bonne architecture limite la propagation du changement
Regrouper ce qui partage un sens commun
Mettre en avant les fonctionnalités
Identifier les layers et les périmètres fonctionnels
Imposer des relations omnidirectionnelles entre les layers


Clean Architecture


Analyse d'un developpement récent
North Star Metrics
Evaluer la complexité logarithmique
Visualiser la structure des classes
Mesurer la maintenabilité
CCN
LCOM
Time
Évaluer la complexité
Le nombre de points de décision dans une méthode
???
ccn = nb condition + 1
ccn : 3
Évaluer la structure des classes
classe
méthodes
dépendances
Évaluer la structure des classes
LCOM : 3
Évaluer la structure des classes
Average LCOM : 1
Évaluer la structure des classes

Mesurer la maintenabilité
Les métriques de Halstead
Time required to program
E
Détermine l'effort nécessaire pour developper
Basé sur la densité, le volume et la richesse du code
Mesurer la maintenabilité
Time required to program :

E
E = \left( \frac{n_1}{2} \right) \cdot \left( \frac{N_2}{n_2} \right) \cdot ((n_1 + n_2) \cdot \log_2(n_1 + n_2))
the number of distinct operators
the number of distinct operands
n_1
n_2
the total number of operators
the total number of operands
N_1
N_2
Mesurer la maintenabilité
function foo(string $bar)
{
$session = $this->session();
$session['product'] = 'exam';
if ($session['admin'] == true) {
return $session;
}
}Opérateurs
Opérandes

Évolution des controllers
Des controller en moyenne bien plus cohérents avec un faible LCOM


Une tres forte diminution de la complexité logarithmique


Une tres forte amélioration de l'indice de maintenabilité


Une tres forte amélioration de l'indice de maintenabilité
un code principalement déplacé
Évolution des modules
du nouveau et de l'ancien
Une légère dégradation de la cohérence causée par les presenters


Une valeur qui reste en dessous de nos limites de 3
Une bonne diminution de la complexité logarithmique


Une bonne amélioration de l'indice de maintenabilité


Comparaison new vs old
All
New
Diff
l'existant face aux nouvelles classes
Average LCOM
1,7
1,5
-0,2
Average CCN
3,77
2,67
-1,1
Average TIME
131
79
-51


Analyse
La Clean Architecture fonctionne et donne des résultats ...
... mais notre implémentation est encore partielle
Des métriques en améliorations sur l'ensemble du projet
Que faire en 2025 ?

Traversée du désert
Dette contracté volontairement
Refacto priorisé

Il est possible de contracter une dette maitrisée puis de la résorbée
Nous ne visons pas la perfection mais la justesse tant que cela reste maitrisé
En 2025
Ateliers de conception sur l'organisation des dossiers
Restitution et création des premieres PSR
S1
Tout du long de l'année
Continuer d'experimenter et mettre en place les derniers briques


Mieux définir les responsabilités

Que faire des entities

Commencer à isoler les dépendances sécondaires
L’architecture n’insiste pas sur la perfection mais uniquement sur l’honnêteté de faire de son mieux
- Robert C. Martin

Copy of OKR dev #2
By madegracia
Copy of OKR dev #2
- 166