$30 off During Our Annual Pro Sale. View Details »

Quand le besoin métier pilote l'architecture applicative

Quand le besoin métier pilote l'architecture applicative

Comment l’utilisation de Scrum, DDD, BDD et DevOps permet à une application d'absorber facilement des changements et des évolutions fonctionnelles.

Jean-François Lépine

March 24, 2014
Tweet

More Decks by Jean-François Lépine

Other Decks in Programming

Transcript

  1. Quand le besoin métier
    L'architecture applicative
    pilote
    @trompouet & @Halleck45

    View Slide

  2. PHP Tour 2014
    23 et 24 Juin
    à Lyon

    View Slide

  3. Un projet
    informatique

    View Slide

  4. Réalisation
    Adminsys Développeur Intégrateur Testeur
    Product Owner Ergonome Scrum Master
    Tactique
    Stratégie
    Décideur

    View Slide

  5. Un projet
    agile

    View Slide

  6. Délivrer
    Concevoir
    Communiquer
    DevOps
    Conception pilotée par le
    métier
    Développement piloté par le
    comportement

    View Slide

  7. Délivrer
    De manière agile

    View Slide

  8. Culture DevOps
    « Deploy better systems at less cost in
    less time at lower risk »
    – Tim Bray

    View Slide

  9. Principes CAMS
    Culture l'humain est le plus important
    Automation les outils simplifient la vie
    Measurement les métriques permettent de s'améliorer
    Sharing le partage génère du feedback
    – Damon Edwards & John Willis

    View Slide

  10. OPS : Au service de l'équipe
    IaaS
    PaaS
    Serveur de configuration
    OPS
    Dashboard
    Plate-forme de production
    Décideur
    Stratégie
    Tactique
    Product Owner, Scrum Master
    Vision projet
    Plate-forme de recette
    Dev, testeur, intégrateur
    Dépôts
    Plate-forme de dév.
    PIC
    Réalisation

    View Slide

  11. OPS : Au service du feedback
    Production
    Feedback
    Dashboard
    Alerting
    Monitoring
    ...
    Dashing, Kibana
    Zabbix
    Graphite, New Relic
    ...

    View Slide

  12. Un exemple d'Ops au service de l'équipe

    View Slide

  13. Screens de Jenkins
    Un exemple d'Ops au service du feedback

    View Slide

  14. Communiquer
    De manière agile

    View Slide

  15. UBIQUITOUS
    LANGAGE
    Permet d'éviter les ambiguïtés
    Est élaborée en commun
    Est parlée par tous
    Représente un glossaire du projet

    View Slide

  16. Une grammaire normalisée
    Permet d'exprimer les User Stories de Scrum
    Rôle Objectif Bénéfice
    Gherkin DSL
    Fonctionnalités
    divisées en scénario

    View Slide

  17. Des fonctionnalités
    Fonctionnalité : Se tenir informé de l'actualité
    En tant qu'auditeur
    Afin de me tenir informé de l'actualité
    Je peux recevoir en direct un flux d'informations
    Scénario : écouter France Info
    Étant donné que ma radio fonctionne
    Quand j'écoute France Info
    Alors je reçois des informations sur l'actualité
    Scénario : ...

    View Slide

  18. Des exemples
    Fonctionnalité : Se tenir informé de l'actualité
    En tant qu'auditeur
    Afin de me tenir informé de l'actualité
    Je peux recevoir en direct un flux d'informations
    Scénario : écouter France Info
    Étant donné que le voyant de ma radio est vert
    Quand j'écoute France Info sur la station 105.5 à 10h00
    Alors j'entends l'émission Minute Info
    Scénario : ...
    BDD ≠ ATDD

    View Slide

  19. Bonus
    Testabilité du produit
    Reporting de l'avancée du Produit
    Aide à la priorisation des fonctionnalités

    View Slide

  20. Bonus : testabilité

    View Slide

  21. Bonus : reporting

    View Slide

  22. Bonus : priorisation
    Priorité = Valeur métier * Impact
    Valeur
    métier
    Impact
    5 5 10 15 20 25
    4 4 8 12 16 20
    3 3 6 9 12 15
    2 2 4 6 8 10
    1 1 2 3 4 5
    1 2 3 4 5

    View Slide

  23. Concevoir
    De manière agile
    De manière agile

    View Slide

  24. Qualité
    postulat de
    démarche de
    recherche de

    View Slide

  25. Utilité fonctionnelle
    Fiabilité
    Performances
    Utilisabilité
    Sécurité
    Compatibilité
    Maintenabilité
    Qualité
    ISO/CEI
    25000

    View Slide

  26. Principes SOLID
    Comportements
    Atomiser les
    Verrouiller les
    Spécialiser les
    Négocier les
    Découpler les

    View Slide

  27. Design Patterns
    Employer un jargon spécialisé
    Isoler des typologies de problèmes connus
    Réutiliser des méthodes éprouvées de résolution
    Anticiper les avantages et les inconvénients

    View Slide

  28. Domain Driven Design
    L'implémentation technique est le reflet du besoin fonctionnel

    View Slide

  29. Consommation
    Présentation
    Application
    Domaine métier
    Infrastructure
    Composants graphiques
    Vues HTML
    View Objects
    Middleware
    Contrôlleurs
    ACL Layer
    Services
    Interfaces
    Entités
    Persistence
    Logs
    ...
    ...
    Tests IHM
    Tests unitaires
    Tests de protocole
    Tests de comportement
    Tests unitaires
    Analyse statique
    Tests unitaires
    Tests d'intégration
    PhantomCSS, Huxley, Wraight
    QUNIT, Jasmine, Karma
    Schémas (JSON, DTD)
    Behat, Cucumber, Species
    PHPUnit, Atoum
    PHPMEtrics, PDepend
    PHPUnit, Atoum
    Bash...
    Isolation des couches

    View Slide

  30. AngularJS
    RestHalBundle
    StackPHP
    Symfony2 framework
    PHP
    Symfony2 component
    Nos outils
    Consommation
    Présentation
    Application
    Domaine métier
    Infrastructure

    View Slide

  31. Des Questions ?
    merci
    @trompouet & @Halleck45

    View Slide