Aller au contenu

L'architecture de l'application

Listsém est une application en couche. Chaque couche applicative a un rôle propre.

Le domain

Dans le module listsem/domain.

Il contient toutes les entités représentant les concepts du domaine et la plupart des règles métiers

Le domaine est divisé en sous-domaines qui correspondent à différents « contexte » métier :

  • gestion : réunis tous les concepts qui concernent la gestion de demande de participation, du dépôt par les participants à la gestion par les superviseurs ;
  • gestion_requetes : constitue le pendant « requête » du sous-domaine de gestion, il contient toutes les concepts permettant de requêter les données de gestion ;
  • administration : réunis tous les concepts qui ne concernent pas directement la gestion, comme par exemple la modélisation des formations et des séminaires.

Les cas d'utilisation

Dans le module listsem/use_cases.

Contient, pour chaque cas d'utilisation de l'application, le code que orchestre les concepts du domaine pour leur faire réaliser une action particulière.

Les cas d'utilisation couvrent tous les sous-domaines, par exemple :

  • « déposer une demande » utilise gestion, gestion_requetes et, indirectement via l'utilisation d'une façade, administration ;
  • « importer les séminaires » utilise uniquement le administration ;
  • etc.

Les interfaces

Dans le module listsem/interfaces.

Contient le code qui permet de lier les cas d'utilisation à la couche juste au dessus tout en gardant une souplesse d'évolution.

En regardant cette couche, on peut se faire une bonne idée de la manière dont l'application va être utilisée : to_http.as_html, to_http.as_json, to_terminal, etc.

L'infrastructure

Dans le module listsem/infrastructure.

Contient tous les détails techniques d'implémentation et d'interaction avec les autres systèmes.

On peut, d'un coup d'œil, voir que l'application va utiliser :

  • Flask pour la partie web ;
  • SQLAlchemy pour la persistance des données ;
  • Typer pour l'interface en ligne de commande ;
  • etc.

Chacun de ses éléments est un « détail d'implémentation » et peut-être remplacé sans qu'il n'y ait d'impact sur les couches inférieures de l'application.

Les points d'entrée

Dans le module listsem/entry_points.

Les points d'entrée assemblent les différentes couches de l'application et mettent à disposition une interface un ligne de commande (cli) et un service web (wsgi).

Retour en haut de la page