SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Développer en architecture
hexagonale
Programmez avec le mkframework une application
dans l’esprit du mouvement Software Craftsmanship
Software Craftsmanship
KESAKO ?
Le développeur, un artisan comme les autres ?
La forme aussi importante que le fond
La bible: Clean Code Robert C Martin
Plusieurs points interessants:
1. On passe plus de temps à lire du code qu’à l’écrire
2. On devrait pouvoir sans cesse améliorer son code
3. Les commentaires ne sont jamais à jour / maintenu
4. Il est difficile d’intervenir sur des SFA :
Single Fonction Application
Conseils
1. Faciliter la lisibilité de son code via l’utilisation de méthodes, noms de
variables compréhensible
2. Mettre des tests unitaires pour permettre de pouvoir refactoriser/optimiser du
code sans craindre des régressions
3. Utiliser des méthodes explicites, des constantes et non des nombres/valeurs
en dur, voir refactoriser pour rendre l’ajout de commentaire inutile
4. Limiter la longueur/périmetre de vos méthodes
L’architecture hexagonale
Une solution possible
Code
métier
Serveurs de
fichiers
(FTP,SFTP…)
Système
de
fichiers
APIContexte
(datetime,)
Base de
données...
Les points forts de cette architecture
1. Regroupement du code métier de l’application dans un répertoire
2. Facilitation du portage du coeur de l’application (on peut par la suite migrer
l’appli en récupérant ces classes métiers
3. Possibilité de modifier/faire évoluer les apis, librairies externes utilisées
4. Facilitation de la mise en place de tests unitaire (étant donnée qu’on injecte
tous les éléments externe, on peut lui passer des mocks)
Mkframework
Quel rapport avec la choucroute ?
Mkframework et Software Craftsmanship
Depuis mars 2017,
ce framework propose un nouveau template de projet:
“Software Craftsmanship”
Mkframework et Software Craftsmanship
Avec une nouvelle
page sur le site pour
présenter ce nouveau
template.
Un template spécifique
Le Builder (générateur web) propose plusieurs templates pour commencer
Dont un orienté “software Craftsmanship”
- Utilisation de l’architecture hexagonale
- Multilingue natif
- Héritage multi niveau module parent/module enfant
- Génération des classes business + tests unitaires de base (via le Builder)
Via le Builder, vous avez ce choix
Arborescence du projet créé
business/ contiendra vos classes métier (hexagonal)
interface/ permettra d'être sûr que les éléments transmis à
vos classes métier contiennent bien certaines méthodes
nécessaires
module/ on voit la notion d’héritage + on voit une notion de
fichier de langue au sein du module (héritage également)
public/ le fameux “web root”
tests/ contiendra les tests unitaires/ci
Créons un simple CRUD pour comprendre
Création de la couche modèle
Création du CRUD
via le builder en
quelques clics
1
2
Ce qu’a créé le Builder
business/ une classe métier pour générer
l’administration de cette table “Cookbook”
module/ un module “Cookbooks” avec son fichier
de langue, ses vues et son controlleur
tests/ des fichiers de tests unitaire “de base” pour
votre module ainsi que la classe business
Focus sur la classe business
On remarque le constructeur qui attends des objets respectants une interface
Mise en
perspective
Classe
business
Objet
Model
(accès bdd)
Objet
I18n
(traduction)
Objet
Validation
(valider les
entrées)
1 2 3
1
2
3
Dans une action, par exemple l'édition, on appelle une méthode ici processSave()
Pour traiter le formulaire éventuellement soumis et afficher si besoin des
messages d’erreurs
On déporte la mécanique dans une seule classe
On peut faire les
diverses vérifications
sur les entrées
utilisateurs,
et si, “non respectées”
retourner un tableau
d’erreurs traduites
On simplifie la mise en place de tests unitaires
Merci, et Enjoy :)
L’architecture
Hexagonale
C’est bon, mangez-en
Références
mkFramework: http://mkframework.com/
Clean Code:
Clean Architecture:

Weitere ähnliche Inhalte

Ähnlich wie Presentation mkframework software craftsmanship a l'afup

Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalCore-Techs
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet DrupalAdyax
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010MD DAY
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Le Developpement Web Aspnet2 Vb2005
Le Developpement Web Aspnet2   Vb2005Le Developpement Web Aspnet2   Vb2005
Le Developpement Web Aspnet2 Vb2005Gregory Renard
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
Optimisation des processus d’entreprise liés à la cao manu
Optimisation des processus d’entreprise liés à la cao manuOptimisation des processus d’entreprise liés à la cao manu
Optimisation des processus d’entreprise liés à la cao manujackda
 
REX sur l'usage d’un LCMS - Atelier 9R
REX sur l'usage d’un LCMS - Atelier 9RREX sur l'usage d’un LCMS - Atelier 9R
REX sur l'usage d’un LCMS - Atelier 9RFFFOD
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...
Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...
Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...Microsoft Décideurs IT
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetFrédéric Vandenbriele
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement bruteYounesOuladSayad1
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation webMOHAMMED MOURADI
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 
Génération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTOGénération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTOguested7f6
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1DIALLO Boubacar
 

Ähnlich wie Presentation mkframework software craftsmanship a l'afup (20)

Drupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet DrupalDrupagora - Les clés de la réussite d'un projet Drupal
Drupagora - Les clés de la réussite d'un projet Drupal
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet Drupal
 
Softfluent speig mdday2010
Softfluent speig mdday2010Softfluent speig mdday2010
Softfluent speig mdday2010
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Le Developpement Web Aspnet2 Vb2005
Le Developpement Web Aspnet2   Vb2005Le Developpement Web Aspnet2   Vb2005
Le Developpement Web Aspnet2 Vb2005
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Optimisation des processus d’entreprise liés à la cao manu
Optimisation des processus d’entreprise liés à la cao manuOptimisation des processus d’entreprise liés à la cao manu
Optimisation des processus d’entreprise liés à la cao manu
 
REX sur l'usage d’un LCMS - Atelier 9R
REX sur l'usage d’un LCMS - Atelier 9RREX sur l'usage d’un LCMS - Atelier 9R
REX sur l'usage d’un LCMS - Atelier 9R
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...
Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...
Découvrez comment l’ECM peut concrètement « BOOSTER » votre entreprise à trav...
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Accéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.NetAccéder au développement Dot.Net et Asp.Net
Accéder au développement Dot.Net et Asp.Net
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
developpement web framework cms developpement brute
developpement web framework cms developpement brutedeveloppement web framework cms developpement brute
developpement web framework cms developpement brute
 
Framework php « Codeignitor »
Framework php « Codeignitor » Framework php « Codeignitor »
Framework php « Codeignitor »
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation web
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Génération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTOGénération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTO
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
 

Mehr von Michael Bertocchi

01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanshipMichael Bertocchi
 
06 migration-anciens-projets
06 migration-anciens-projets06 migration-anciens-projets
06 migration-anciens-projetsMichael Bertocchi
 
06 migration-anciens-projets
06 migration-anciens-projets06 migration-anciens-projets
06 migration-anciens-projetsMichael Bertocchi
 
01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanshipMichael Bertocchi
 
05 builder-generation-module-crud
05 builder-generation-module-crud05 builder-generation-module-crud
05 builder-generation-module-crudMichael Bertocchi
 
04 builder-generation-couche-model
04 builder-generation-couche-model04 builder-generation-couche-model
04 builder-generation-couche-modelMichael Bertocchi
 
03 presentation-builder-normal
03 presentation-builder-normal03 presentation-builder-normal
03 presentation-builder-normalMichael Bertocchi
 
02 presentation-application-normal
02 presentation-application-normal02 presentation-application-normal
02 presentation-application-normalMichael Bertocchi
 
Mkframework: 01 installation
Mkframework: 01 installationMkframework: 01 installation
Mkframework: 01 installationMichael Bertocchi
 
01 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 201701 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 2017Michael Bertocchi
 

Mehr von Michael Bertocchi (14)

01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship
 
06 migration-anciens-projets
06 migration-anciens-projets06 migration-anciens-projets
06 migration-anciens-projets
 
06 migration-anciens-projets
06 migration-anciens-projets06 migration-anciens-projets
06 migration-anciens-projets
 
01 installation
01 installation01 installation
01 installation
 
01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship01 presentation-application-software craftsmanship
01 presentation-application-software craftsmanship
 
05 zoom-classe-layout
05 zoom-classe-layout05 zoom-classe-layout
05 zoom-classe-layout
 
04 zoom-classe-view
04 zoom-classe-view04 zoom-classe-view
04 zoom-classe-view
 
03 presentation-navigation
03 presentation-navigation03 presentation-navigation
03 presentation-navigation
 
05 builder-generation-module-crud
05 builder-generation-module-crud05 builder-generation-module-crud
05 builder-generation-module-crud
 
04 builder-generation-couche-model
04 builder-generation-couche-model04 builder-generation-couche-model
04 builder-generation-couche-model
 
03 presentation-builder-normal
03 presentation-builder-normal03 presentation-builder-normal
03 presentation-builder-normal
 
02 presentation-application-normal
02 presentation-application-normal02 presentation-application-normal
02 presentation-application-normal
 
Mkframework: 01 installation
Mkframework: 01 installationMkframework: 01 installation
Mkframework: 01 installation
 
01 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 201701 presentation MkFramework AFUP janv 2017
01 presentation MkFramework AFUP janv 2017
 

Presentation mkframework software craftsmanship a l'afup

  • 1. Développer en architecture hexagonale Programmez avec le mkframework une application dans l’esprit du mouvement Software Craftsmanship
  • 3. Le développeur, un artisan comme les autres ?
  • 4. La forme aussi importante que le fond
  • 5. La bible: Clean Code Robert C Martin Plusieurs points interessants: 1. On passe plus de temps à lire du code qu’à l’écrire 2. On devrait pouvoir sans cesse améliorer son code 3. Les commentaires ne sont jamais à jour / maintenu 4. Il est difficile d’intervenir sur des SFA : Single Fonction Application
  • 6. Conseils 1. Faciliter la lisibilité de son code via l’utilisation de méthodes, noms de variables compréhensible 2. Mettre des tests unitaires pour permettre de pouvoir refactoriser/optimiser du code sans craindre des régressions 3. Utiliser des méthodes explicites, des constantes et non des nombres/valeurs en dur, voir refactoriser pour rendre l’ajout de commentaire inutile 4. Limiter la longueur/périmetre de vos méthodes
  • 9. Les points forts de cette architecture 1. Regroupement du code métier de l’application dans un répertoire 2. Facilitation du portage du coeur de l’application (on peut par la suite migrer l’appli en récupérant ces classes métiers 3. Possibilité de modifier/faire évoluer les apis, librairies externes utilisées 4. Facilitation de la mise en place de tests unitaire (étant donnée qu’on injecte tous les éléments externe, on peut lui passer des mocks)
  • 10. Mkframework Quel rapport avec la choucroute ?
  • 11. Mkframework et Software Craftsmanship Depuis mars 2017, ce framework propose un nouveau template de projet: “Software Craftsmanship”
  • 12. Mkframework et Software Craftsmanship Avec une nouvelle page sur le site pour présenter ce nouveau template.
  • 13. Un template spécifique Le Builder (générateur web) propose plusieurs templates pour commencer Dont un orienté “software Craftsmanship” - Utilisation de l’architecture hexagonale - Multilingue natif - Héritage multi niveau module parent/module enfant - Génération des classes business + tests unitaires de base (via le Builder)
  • 14. Via le Builder, vous avez ce choix
  • 15. Arborescence du projet créé business/ contiendra vos classes métier (hexagonal) interface/ permettra d'être sûr que les éléments transmis à vos classes métier contiennent bien certaines méthodes nécessaires module/ on voit la notion d’héritage + on voit une notion de fichier de langue au sein du module (héritage également) public/ le fameux “web root” tests/ contiendra les tests unitaires/ci
  • 16. Créons un simple CRUD pour comprendre Création de la couche modèle Création du CRUD via le builder en quelques clics 1 2
  • 17. Ce qu’a créé le Builder business/ une classe métier pour générer l’administration de cette table “Cookbook” module/ un module “Cookbooks” avec son fichier de langue, ses vues et son controlleur tests/ des fichiers de tests unitaire “de base” pour votre module ainsi que la classe business
  • 18. Focus sur la classe business On remarque le constructeur qui attends des objets respectants une interface
  • 20. Dans une action, par exemple l'édition, on appelle une méthode ici processSave() Pour traiter le formulaire éventuellement soumis et afficher si besoin des messages d’erreurs
  • 21.
  • 22. On déporte la mécanique dans une seule classe On peut faire les diverses vérifications sur les entrées utilisateurs, et si, “non respectées” retourner un tableau d’erreurs traduites
  • 23.
  • 24. On simplifie la mise en place de tests unitaires
  • 25. Merci, et Enjoy :) L’architecture Hexagonale C’est bon, mangez-en