Projet DDD
Architecture cible

Programmation modulaire

Diviser un programme en modules distincts et indépendants, chacun se concentrant sur une fonctionnalité spécifique.

 

Chaque module contient sa propre logique, et peut être développé et testé individuellement. Les modules interagissent les uns avec les autres en utilisant des interfaces.

Modularité

Découper un programme en petits modules autonomes et cohérents

Encapsulation

Encapsuler leur logique et exposer des interfaces nécessaires pour interagir avec d'autres modules.

Abstraction

Fournir une abstraction en exposant uniquement les fonctionnalités essentielles nécessaires à leur utilisation

Dépendances

Interfaces utilisées pour spécifier les dépendances et les interactions entre les modules.

Programmation modulaire => DDD

Domain Driven Design

Approche de conception logicielle qui met l'accent sur la modélisation du domaine métier d'une application.

Module = Contexte métier

Contextes bornés

Délimitent les limites conceptuelles d'un contexte métier et définissent des frontières claires entre les sous-contextes

Trois couches

Découpe un contexte métier en trois couches.

Couche Application

Utilise le modèle de domaine pour répondre aux besoins des utilisateurs et gérer les actions de l'utilisateur

Couche Domaine

Cœur métier de l'application. C'est là que se trouve le modèle de domaine qui représente les concepts et les règles métier.

Couche Infrastructure

Détails techniques de l'application, tels que le stockage des données, les communications réseau, les intégrations externes, etc.

Contexte partagé

Un contexte métier commun qui est utilisé par plusieurs contextes / sous-contextes dans une application.

Et concrètement ?

Espace client

Couche Infrastructure

  • Aspects techniques

  • Symfony

  • Doctrine

  • API Platform

Couche Domaine

  • Métier : gérer des clients

  • Règles métiers

  • Interface

Couche Application

  • Actions utilisateurs

  • Opération lecture & écriture

  • CQS

API Platform

Génération automatique d'API

API REST complète à partir d'une simple définition de modèle de données.

Derniers standards

Prend en charge divers formats de données, notamment JSON et JSON-LD.

Génération automatique de doc

Documentation interactive, en utilisant le standard OpenAPI.

Validation des données

Assurer que les données reçues via l'API sont conformes aux règles définies.

Filtrage, tri et pagination

Facilite la mise en œuvre du filtrage, du tri et de la pagination des résultats pour les ressources API.

Sécurité

 Gérer l'authentification et l'autorisation des utilisateurs, l'accès aux ressources, la gestion des rôles et des permissions.

CQS, Command Query Separation

Commandes

Opérations qui modifient l'état du système, peuvent avoir des effets de bord, tels que la persistance des données dans une base de données.

Requêtes

Opérations qui ne modifient pas l'état du système, mais qui récupèrent des données.

Séparation des responsabilités

Permet de clarifier les intentions du code et de mieux organiser les responsabilités.

Design Pattern

Specification

Permet d'encapsuler les règles métiers dans des classes.

Instrumentation

Permet d'historiser les processus de l'application.

Tests

Tests unitaires

Vérifier le comportement d'une unité de code isolée, telle qu'une fonction, une méthode ou une classe, en s'assurant qu'elle produit les résultats attendus pour différentes entrées.

Tests fonctionnels

Évaluent le système dans son ensemble et vérifient si les différentes parties de l'application fonctionnent correctement ensemble pour atteindre les objectifs fonctionnels spécifiés.

Tests de dépendances

Analyser les architectures logicielles et détecter les violations des règles de conception.

Projet DDD - Architecture cible

By Kevin Balicot

Projet DDD - Architecture cible

  • 48