ASFA - Organisation et Méthodologie du projet COLSAFrédéric Sagez
Suite au nouveau schéma directeur pour 2016 du comité de direction, l’Association Nationale pour la Formation Automobile (OPCA basée à Sèvres qui organisme et finance les formations pour les entreprises situées dans le secteur automobile) a demandé à son service support, l’ASFA de veiller à la mise en œuvre et à la cohérence du SI pour les prochaines opérations de collecte de taxe d’apprentissage et de formation continue.
J’interviens dans le cadre de la mise en place du projet de refonte des applicatifs du SI en y apportant de la méthodologie, de l’organisation avec comme première mission d’unifier le Back Office avec les différentes entités. (ASFA, ANFA et le GNFA)
Cette présentation à pour but de décrire la futur organisation pour le développement de nouvelles applications dans le SI tout en privilégiant le Métier.
Dans nos accompagnements techniques, nous observons régulièrement des problèmes de Legacy Code aussi appelé Code Patrimonial. Notamment lorsque des équipes font un virage agile et on leur demande soudainement de faire des tests unitaires automatisés. Pas si facile que cela.
Dans cette présentation, nous verrons les points suivants:
- Description de quelques techniques pour nous aider à tester le Legacy Code
- Comment avoir le droit de travailler sur du code pour le rendre plus facile à travailler
- Quelques pratiques et outils afin de s'en prémunir autant que possible au jour le jour.
Cette présentation a été donnée aux dates suivantes:
- 10 Novembre 2016 - Beer And Learn (Québec)
- 16 Novembre 2016 - Agile Tour Montréal
Présentation effectuée par Charles-André Bouchard, dans le cadre du cours LOG3000 conduit par Mathieu Lavallée, à Polytechnique, mardi le 22 novembre 2016.
ASFA - Organisation et Méthodologie du projet COLSAFrédéric Sagez
Suite au nouveau schéma directeur pour 2016 du comité de direction, l’Association Nationale pour la Formation Automobile (OPCA basée à Sèvres qui organisme et finance les formations pour les entreprises situées dans le secteur automobile) a demandé à son service support, l’ASFA de veiller à la mise en œuvre et à la cohérence du SI pour les prochaines opérations de collecte de taxe d’apprentissage et de formation continue.
J’interviens dans le cadre de la mise en place du projet de refonte des applicatifs du SI en y apportant de la méthodologie, de l’organisation avec comme première mission d’unifier le Back Office avec les différentes entités. (ASFA, ANFA et le GNFA)
Cette présentation à pour but de décrire la futur organisation pour le développement de nouvelles applications dans le SI tout en privilégiant le Métier.
Dans nos accompagnements techniques, nous observons régulièrement des problèmes de Legacy Code aussi appelé Code Patrimonial. Notamment lorsque des équipes font un virage agile et on leur demande soudainement de faire des tests unitaires automatisés. Pas si facile que cela.
Dans cette présentation, nous verrons les points suivants:
- Description de quelques techniques pour nous aider à tester le Legacy Code
- Comment avoir le droit de travailler sur du code pour le rendre plus facile à travailler
- Quelques pratiques et outils afin de s'en prémunir autant que possible au jour le jour.
Cette présentation a été donnée aux dates suivantes:
- 10 Novembre 2016 - Beer And Learn (Québec)
- 16 Novembre 2016 - Agile Tour Montréal
Présentation effectuée par Charles-André Bouchard, dans le cadre du cours LOG3000 conduit par Mathieu Lavallée, à Polytechnique, mardi le 22 novembre 2016.
Une conférence de 2h30 (aka université) faites à Devoxx France en 2021 avec Maxime Gellé. On y fait un tour d'horizon des tests logiciels: TDD, Test unitaire vs Test d'integration, l'apport de l'archi hexagonale, Contract testing, property based testing, UI testing ... mais aussi comment "tester en production" !
Retour d'expérience Devops Eurovision / EBU lors du Meetup DevOps Genève sponsorisé par Hidora et AdExcel le 15.06.2017 par Laurent Pythoud et Frédéric Deniger
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019Oeil de Coach
Une User Story (US) est le juste formalisme d’un élément fonctionnel du point de vue de l’utilisateur, précisant la valeur apportée à ce dernier.
Comment rédiger de bonnes USER STORIES ?
Bonnes pratiques à l’usage des équipes agiles (SCRUM / KANBAN / SAFe)
Sommaire :
> Les origines des User Stories
> Les 3C
> Définition et formalisation d’une User Story
> Méthode INVEST
> Comment découper vos US
> Quel niveau de détail
> Quel est le cycle de vie d'une User Story
> Le rôle du Product Owner sur une US
> Erreurs à éviter
Présentation PPT en libre téléchargement, créée par Martial SEGURA - OEIL DE COACH
www.oeildecoach.com
Développement d'un grand projet piloté par les tests (BDD)Laurent PY
Déploiement de l'approche BDD (Behavior Driven Development) dans un grand projet billettique de 150 années/hommes avec des équipes distribuées. Par Hiptest et Parkeon
Devops is partially a technology change. But what's its future ? BigData ? analytics ? does security will kill it? let's took 5 minutes to think about the challenges.
Vol WAX 2024 - la chaîne de valeur propulsée par le Platform Engineering chez...Frederic Leger
Slides de notre talk sur le platform engineering chez AirCorsica
On y voit comment l'excellence opérationnelle a progressé chez AirCorsica au bout d'une refonte de 2 ans soutenue par le platform engineering.
Apprenez à déployer une application web .NET 8 de pointe dans Azure en utilisant GitHub Actions
Créer un référentiel dans GitHub et pousser le code d’une application Web en .NET 8, ou bien cloner le code à partir de GitHub, puis conteneuriser l’application et la déployer dans Azure en assurant une intégration continue et un déploiement contenu.
https://agilequebec.ca/communaute/conference-mensuelle-agile-quebec-configurer-github-actions-avec-docker-et-net-8-06-decembre-2023-2/
En 45 minutes, Nicolas Muller présentera CloudUnit, un PAAS opensource basé sur Docker livré en standard avec Jenkins2 et GitLab CE. La démo consistera à déployer une application dont les sources sont poussées sur GitLab, le binaire construit avec Jenkins2 puis déployé avec CloudUnit. Il s'agit d'un bon exemple d'utilisation du plugin "Pipeline as code" conjointement Cloudunit. A l'issue de la démo, nous présenterons la stack complète de CloudUnit avec son shell dédié ainsi que son plugin Maven. Nous présenterons aussi le projet sur Github disponible en GPL V3.
Par Nicolas Muller (Technical Director @TreepTik)
Toutes les vidéos des conférences seront disponibles sur Xebia.tv
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...Adrien Blind
The following talk discusses Societe Generale's transformation journey to DevOps, and more largelly to continuous delivery principles, inside a large, traditionnal company. It emphases the importance of practices over tooling, a human centric approach massively leveraging on coaching, and our "framework" approach to make it scaling up to the IS level.
It has been initially delivered at DevOps Rex conference, with teammate Laurent Dussault, also DevOps coach at Societe Generale.
Une conférence de 2h30 (aka université) faites à Devoxx France en 2021 avec Maxime Gellé. On y fait un tour d'horizon des tests logiciels: TDD, Test unitaire vs Test d'integration, l'apport de l'archi hexagonale, Contract testing, property based testing, UI testing ... mais aussi comment "tester en production" !
Retour d'expérience Devops Eurovision / EBU lors du Meetup DevOps Genève sponsorisé par Hidora et AdExcel le 15.06.2017 par Laurent Pythoud et Frédéric Deniger
Mieux rediger-les-user-stories-bonnes-pratiques-oeildecoach 2019Oeil de Coach
Une User Story (US) est le juste formalisme d’un élément fonctionnel du point de vue de l’utilisateur, précisant la valeur apportée à ce dernier.
Comment rédiger de bonnes USER STORIES ?
Bonnes pratiques à l’usage des équipes agiles (SCRUM / KANBAN / SAFe)
Sommaire :
> Les origines des User Stories
> Les 3C
> Définition et formalisation d’une User Story
> Méthode INVEST
> Comment découper vos US
> Quel niveau de détail
> Quel est le cycle de vie d'une User Story
> Le rôle du Product Owner sur une US
> Erreurs à éviter
Présentation PPT en libre téléchargement, créée par Martial SEGURA - OEIL DE COACH
www.oeildecoach.com
Développement d'un grand projet piloté par les tests (BDD)Laurent PY
Déploiement de l'approche BDD (Behavior Driven Development) dans un grand projet billettique de 150 années/hommes avec des équipes distribuées. Par Hiptest et Parkeon
Devops is partially a technology change. But what's its future ? BigData ? analytics ? does security will kill it? let's took 5 minutes to think about the challenges.
Vol WAX 2024 - la chaîne de valeur propulsée par le Platform Engineering chez...Frederic Leger
Slides de notre talk sur le platform engineering chez AirCorsica
On y voit comment l'excellence opérationnelle a progressé chez AirCorsica au bout d'une refonte de 2 ans soutenue par le platform engineering.
Apprenez à déployer une application web .NET 8 de pointe dans Azure en utilisant GitHub Actions
Créer un référentiel dans GitHub et pousser le code d’une application Web en .NET 8, ou bien cloner le code à partir de GitHub, puis conteneuriser l’application et la déployer dans Azure en assurant une intégration continue et un déploiement contenu.
https://agilequebec.ca/communaute/conference-mensuelle-agile-quebec-configurer-github-actions-avec-docker-et-net-8-06-decembre-2023-2/
En 45 minutes, Nicolas Muller présentera CloudUnit, un PAAS opensource basé sur Docker livré en standard avec Jenkins2 et GitLab CE. La démo consistera à déployer une application dont les sources sont poussées sur GitLab, le binaire construit avec Jenkins2 puis déployé avec CloudUnit. Il s'agit d'un bon exemple d'utilisation du plugin "Pipeline as code" conjointement Cloudunit. A l'issue de la démo, nous présenterons la stack complète de CloudUnit avec son shell dédié ainsi que son plugin Maven. Nous présenterons aussi le projet sur Github disponible en GPL V3.
Par Nicolas Muller (Technical Director @TreepTik)
Toutes les vidéos des conférences seront disponibles sur Xebia.tv
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...Adrien Blind
The following talk discusses Societe Generale's transformation journey to DevOps, and more largelly to continuous delivery principles, inside a large, traditionnal company. It emphases the importance of practices over tooling, a human centric approach massively leveraging on coaching, and our "framework" approach to make it scaling up to the IS level.
It has been initially delivered at DevOps Rex conference, with teammate Laurent Dussault, also DevOps coach at Societe Generale.
Lesfurest.com invited me to talk about the KAPPA Architecture style during a BBL.
Kappa architecture is a style for real-time processing of large volumes of data, combining stream processing, storage, and serving layers into a single pipeline. It's different from the Lambda architecture, uses separate batch and stream processing pipelines.
EMF Customizer is a model (Ecore based) customization/styling/refining CSS like textual DSL (Domain Specific Language) targeting MDSD tool chains end users.
It was presented at Eclipse Modeling Symposium during the Eclipse Summit Europe 2009.
Rethinking Quicksign's Digital Onboarding - Confluent Streaming Days ParisCedric Vidal
In the context of a fast-paced competitive and regulated KYC market, Quicksign needed to rethink its platform. Our goal: quickly adjust to our customers' workflows and integration requirements, scale to support the growing usage and features of our services, be secured and resilient by design—while being fun to build on!
Using Kafka Streams, the Camunda BPMN engine and some in-house developments, we built on Kafka and Kubernetes a fully reactive and streamed CQRS-ES microservices platform. It exposes, for each of our tenants’ processes and without involving any specific development, a bespoke and reactive REST API.
We’ll share how we leveraged Kafka as the backbone of our architecture to fuel our microservices and Kafka Streams to implement the CQRS-ES architectural pattern which we believe is key to provide the strongest foundation for growth in the coming years.
Do microservices dream about CQRS-ES, Kafka Stream and BPMN ? - Voxxed micros...Cedric Vidal
Like many other software vendors Quicksign has chosen to migrate its SAAS platform from an on-premise monolith to a microservices platform in the Cloud.
Using a modern tech stack including Kafka, Kubernetes, the Camunda BPMN engine and some in-house development we have built a Kappa CQRS-ES multi-tenant platform able to execute BPMN workflows that can discover and consume any microservice registered in a Kubernetes backed extended registry that allows content type and protocol negotiation.
Our platform leverages Kafka Streams to dynamically generate from a reactive stream of workflow events a bespoke REST-API (HATEOAS) representation so as to ease our customers’ integration effort and allow fast iterations.
We propose to briefly introduce the audience to BPMN and then expose the rationale that led us to build this architecture, its advantages in terms of agility and scalability.
Scaffolding provides temporary structures to support workers completing jobs. In software, scaffolding brings fast productivity through code generation. Ruby on Rails uses scaffolding to generate code for database entities like classes and data access objects. Scaffolding can be static, generating code on demand, or dynamic, generating code transparently. Model scaffolding aims to enhance modeling by automatically generating partial model structures to reduce modeling effort. Approaches include blind scaffolding that generates elements independently and in-place scaffolding that references generated elements. In-place scaffolding allows customizing generated elements. A rule engine can implement scaffolding by matching conditions and generating new model elements. Scaffolding benefits include accelerated modeling, fast feedback, and flexibility while reducing complexity
RMLL - Eclipse Acceleo Day - MDSD Scaffolding and Acceleo - Cédric Vidal - 1.1Cedric Vidal
Presentation on MDSD Scaffolding applied using EMF.Edit, a rule engine and Acceleo.
This talk was given at Eclipse Acceleo Day, on Friday 10th July 2009 during RMLL.
3. Holdin
g 2003
ProxiAD
Nord Lille
1997
Syntonia
Paris 2004
ProxiAD
Ile de
France
Paris 2004
ProxiAD
Bulgarie
Sofia 2005
ProxiAD
Ouest
Nantes
2005
ProxiAD
Normandie
Rouen
2005
ProxiAD
Est
Strasbourg
2010
ProxiAD
Rhône-
Alpes Lyon
2010
8 filiales
390
collaborateurs
C’est …
4. Notre métier
• Conception
• Réalisation
• Conseil
• Expertise
• Objet
• Décisionnel
• Centre de service
• Industrialisation
5. Le menu du jour
1. La problématique
2. Objectifs
3. Le BDD
1. Gains & inconvénients
2. TDD
4. Jbehave
1. Basiques
2. Demo 1
3. Customisation
5. Cas 1: RDA
6. Cas 2: Flux boursiers
1. Demo 2
8. Problématique
• Pour la MOA / les fonctionnels
– Ce qui est développé par la MOE est-il conforme
aux attentes ?
– Comment spécifier de la manière la plus efficace
• Pour la MOE / les développeurs
– Ce qui est développé est-il conforme aux attentes
de la MOA ?
– Comment savoir quand s’arrêter ?
9. Objectifs
• Pour la MOA / les fonctionnels
– Obtenir le produit souhaité
– Etre compris par les développeurs
– Mieux définir le produit souhaité
• Pour la MOE / les développeurs
– Développer le produit le plus simple répondant
aux besoins de la MOA
– Perdre le moins de temps possible
10. Le BDD propose:
• aux fonctionnels d’écrire en français des
stories …
• … qui seront ensuite rendues
exécutables par les développeurs
• … et qui serviront de fil d’ariane pour les
développements
11. Gains
• L’écriture de la story permet aux fonctionnels de
mettre à plat leur besoin
• Guide les développements par les spécifications
exécutables
• Critères d’acceptance fonctionnelle
• Non régression fonctionnelle
• Sécurise les développements
• Contractualisation de la relation MOA/MOE
12. Ce n’est pas
• Attention, les stories ne sont pas:
– Un critère d’acceptance technique
– Ce n’est pas parce que les stories passent que
techniquement, tous les cas de figures sont gérés
– Les stories ne testent pas tous les cas de figure
– => à compléter par des tests technique: unitaires,
d’intégration
13. Compléter par du TDD
• Vision technique
• Types de tests
– Tests unitaires
– Tests d’acceptance
– Test d’intégration
• Vocabulaire
– Etat initial / Action / Assertion
• Gains
– Non régression technique
– Critère d’acceptance technique
Test d’intégration
technique
Test
Unitaire
14. Difficultés 1/2
• Nécessite de l’attention régulière
• De l’implication
• Qui écrit les stories ?
• Les développeurs ou les fonctionnels
• « c’est trop de travail »
• => personnes non impliquées
• Difficile d’obtenir l’adhésion
• des fonctionnels
• des développeurs
15. Difficultés 2/2
• Parfois perçu par la MOA comme un engagement
contractuel
• Parfois perçu par les développeurs comme un effort
trop important
• Première tâche qui passe à la trappe en cas de
pression sur le projet
17. Une story
17
• Description des scénarios en français libre
• Approche basique de matching des phrases
– Pas d’analyse grammaticale
• Chaque phrase exécute simplement du code bindé
21. 21
Phrases types réutilisables
• Given
– la fenêtre "" est active
– l'utilisateur a le droit de ""
– l'utilisateur courant est ""
• When
– l'utilisateur clique sur le bouton ""
– l'utilisateur choisit la valeur "" dans la liste ""
– l'utilisateur saisit la valeur "" dans le champ ""
• Then
– la fenêtre "" est active
– le titre de la fenêtre active est ""
– la fenêtre est modale
– la liste "" est remplie par ""
– le champ "" contient la valeur ""
22. 22
Etats possibles des steps
• PASSED: instrumenté, exécuté, succès
• FAILED: instrumenté, exécuté, échec
• PENDING: non instrumenté
• NOT PERFORMED: instrumenté, pas exécuté
car bloqué par un step FAILED précédent
23. 23
Exemple d’exécution
Running story fr/cosi/stories/CS_US_001_CreerOperation.story
(fr/cosi/stories/CS_US_001_CreerOperation.story)
Scenario: Création d'une opération d'infrastructure
Given la fenêtre "Organiser le projet" est active
Given le projet "2820120110001" est selectionné
When l'utilisateur clique sur le bouton "Créer une opération"
Then la fenêtre "Créer une opération" est active
Then le champ "Projet" contient la valeur "2820120110001 - Transfert du régiment 1"
When l'utilisateur choisit la valeur "Eid Versailles" dans la liste "Organisme"
When l'utilisateur saisit la valeur "Réfection" dans le champ "Libellé"
When l'utilisateur clique sur le bouton "Enregistrer"
Then le titre de la fenêtre active est "Modifier l'opération" (FAILED)
(org.junit.ComparisonFailure: expected:<[Modifier l'opér]ation>
but was:<[Demande de confirm]ation>)
Then le champ "Opération" contient la valeur "0003 - Réfection de l'infirmerie«
(NOT PERFORMED)
Then l'onglet "Qui où" est accessible (PENDING)
25. Plusieurs lancements
possibles
• Depuis un lanceur JUnit, une story par lanceur
– Plus orienté développeur
• Depuis un lanceur JUnit, toutes les stories
d’une arborescence
– Plus orienté fonctionnels
• Depuis Maven
• …
27. Customisations possibles
• Langue
• Résolution des stories & examples
• Format des examples: possibilité d’ajouter ses
propres formats de fichiers mais pas évident
28. Résolution des stories &
examples
• Inclus
– Relativement à un chemin
– Relativement à une URL
• Locale, FTP, HTTP, WebDAV, …
– De manière absolue dans le classpath
• Nécessite une customisation:
– relativement au lanceur JUnit
31. IoC & BDD ?
• Permet un accès à tous les
composants du système par
injection dans les steps
• Permet de piloter tous les
composants
• Permet de customiser
simplement n’importe quel
composant du système
• Assemblage des couches
spécifique à l’environnement
souhaité pour les tests
SUT
Tes
t
32. Exemple
• Base de donnée mémoire: H2
– Compatible Oracle, Postgres, …
• API FileSystem virtualisée
• Systèmes externes mockés:
– Serveur FTP, …
• ….
49. Besoin
• Pas de caractères observables extérieurs
permettant de vérifier le bon fonctionnement
du serveur
• Simuler des stories dans un contexte distribué
• Pilotage des nœuds du cluster
• Traitements internes très complexes
• TDD & BDD particulièrement intéressant
dans ce contexte
53. Difficultés
• Pouvoir simuler les saisies utilisateur
• Pouvoir identifier les composants graphiques
par leur nom fonctionnel
• Pouvoir tolérer des changements de layout
• Pouvoir vérifier des assertions sur l’état de
l’IHM
54. Approches BDD IHM
• Approche robot: FEST, …
– Simulation au niveau interface réelle
• Approche pattern MVP
– Simulation au niveau présenteur
57. 57
Mocking des vues pour les stories
• Mocking avec Mockito
• Comportement JavaBean
Implémentation JavaBean mockée
Interfaces des vues
MockUiConfIoc
58. 58
mockBean
• Permet de donner un comportement JavaBean à une interface
Une interface défini
des getters/setters