Clean Architecture, Refactoring et Data Oriented Programming

  • Filière :

    Développement logiciel

  • Sous-filière :

    Craftsmanship

  • Référence

    CA-RDOP

  • Durée

    2 jours (14 h)

  • Prix par personne HT

    Sur demande

Description

Le découpage d’applications en modules est une des clés de leur maintenabilité à long terme. Le Software Craftsmanship ou « l’artisanat du logiciel » s’est intéressé à cette problématique, et y apporte une solution, dans la suite de l’architecture hexagonale et de l’approche « port adapters », appelée Clean Architecture. Cette technique s’appuie sur les principes SOLID, dont la bonne application permet de maîtriser la dette technique des applications.

Les principes SOLID ont initialement été énoncé dans le contexte de la programmation objet, et les éléments de programmation fonctionnelle ajoutés à Java (types paramétrés et lambda expressions) constituent d’excellents outils pour les mettre en application.

Depuis Java 21, des éléments de programmation orientée données (record, types scellés, pattern matching, switch sur les types) permettent d’aller plus loin dans cette direction. Ils permettent de modulariser les applications efficacement et dans le respect de ces anciens principes, plus que jamais d’actualité.

La formation s’adresse à des développeurs Java expérimentés et à des architectes ayant une bonne connaissance du langage et de ses API fondamentales. Une première confrontation aux problèmes de gestion de bases de code anciennes et volumineuses.

Objectifs pédagogiques

  • Comprendre les principes SOLID et comprendre les coûts de leur non-application
  • Comprendre les principes de la Clean Architecture et ce qu’ils apportent à la modularisation des applications
  • Maîtriser les principes et patterns du « clean code » en programmation objet
  • Maîtriser le fonctionnement du refactoring de code existant, principes et patterns
  • Maîtriser les outils de frameworks de test
  • Maîtriser le découpage d’une application en modules
  • Comprendre le principe d’inversion de dépendances dans le découpage d’une application en modules
  • Maîtriser les principes de la programmation orientée données
  • Comprendre les apports de la programmation orientée données dans la modularisation des applications

Public cible

  • Développeurs Java expérimentés
  • Architectes Java ayant une bonne connaissance du langage et de ses API fondamentales

Pré-requis

  • Une première confrontation aux problèmes de gestion de bases de code anciennes et volumineuses.

Modalités d’évaluation

L’évaluation des acquis se fait tout au long de la session au travers d’ateliers de mise en pratique des notions et concepts abordés pendant la formation.

Méthodes pédagogiques

  • Support de cours
  • Cahier de travaux pratiques

Programme de la formation

Le programme se compose de présentations sur slides et d’un atelier de codage. Cet atelier est une application legacy, écrite volontairement dans le non-respect des principes SOLID et la Clean Architecture, et que les participants vont refactorer étape par étape.

La partie slide porte sur les éléments théoriques de la formation, mais comporte de
nombreux exemples de code, proches des problèmes rencontrés dans les applications.

1) Introduction à la dette technique

2) Analyse des coûts d’intervention sur une base de code

  • Éviter les régressions en appliquant le Single Responsibility Principle
  • Garantir l’évolutivité avec l’Open Closed Principle
  • Comprendre l’héritage avec le Liskov Substitution Principle
  • Comprendre le rôle des interfaces dans la modularisation des applications avec l’Inversion Principle
  • Comprendre pourquoi une interface doit respecter l’Interface Segregation Principle

3) Bilan sur les principes SOLID

4) Principes de la Clean Architecture

  • Analyse des dépendances entre modules dans une application
  • Dépendance entre un module central et une base de données
  • Dépendance entre un module central et une interface graphique
  • Dépendance entre un module central et une source de données asynchrone
  • Création de composants : principe de réutilisation, cycle de vie
  • Problème des cycles dans les diagrammes de dépendance
  • Mesure de la stabilité et de l’indépendance d’un composant
  • Relation entre stabilité et indépendance

 5) Atelier de refactoring

  • Analyse de l’application et identification des problèmes
  • Refactoring en modules par application du principe d’inversion de dépendances
  • Ajouts de nouvelles contraintes métier
  • Analyse d’une mise en œuvre fondée sur la programmation objet

6) Principe de la programmation orientée données

  • Mise en œuvre des nouvelles contraintes avec la programmation orientée données
  • Comparaison avec la programmation objet

Programme mis à jour le