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