Le développement applicatif en SCRUM

Ces dernières années, SCRUM est devenu, la méthode agile la plus connue en développement applicatif. Comme toutes les méthodes agiles, elle vise essentiellement à arriver à un produit fini beaucoup plus proche des besoins utilisateurs que les méthodes traditionnelles.



Défis


La finance de marché est un terrain particulièrement propice pour les méthodes agiles. Des utilisateurs très exigeants et un domaine qui innove en permanence créent un environnement qui souffre beaucoup de la longueur d'un processus en cycle en v. Des SI très complexes rendent aussi très périlleux des cycles longs avec beaucoup de changements sur une seule livraison.

Toute personne ayant participé à un projet de développement en finance de marché, est séduite par la méthode SCRUM. Elle semble résoudre toutes ces difficultés. Pourtant elle implique un changement organisationnel important, ainsi qu'un gros changement de mentalité. Dans des organisations souvent importantes et complexes, il y a un vrai challenge à rompre avec les vieilles habitudes et changer de mentalités.



Missions


Les consultants en missions dans des équipes de développement sont amenés à :
  • Mener les cérémonies de SCRUM (daily scrum, sprint planning, démonstrations)
  • Prendre un temps le rôle de SCRUM master
  • Faire de la conduite du changement auprès des intervenants (l'équipe même, la personne désignée Product Owner...)
  • Mettre en place des outils de suivi du backlog et autres artefacts de SCRUM
  • Participer à la rétrospective.
Ces consultants deviennent des pionniers, montrés en exemple pour les autres projets.



Avenir


SCRUM est plus qu'une mode. La méthode SCRUM va continuer à gagner du terrain et remplacera progressivement les autres méthodes de gestion de projet en développement applicatif. Actuellement réservée à de petites équipes et des projets courts, il faudra l’adapter à des équipes importantes et des projets de grande ampleur (cluster d'équipe en SCRUM & SCRUM of SCRUMS).

Le développement applicatif en Test Driven Development (TDD) et Behavior Driven Development (BDD)

Le Test Driven Development et le Behavior Driven Development sont des méthodes de développement qui visent à améliorer la robustesse et la conformité des évolutions avec les besoins utilisateurs. En cela, ces méthodes rejoignent le mouvement Agile. Elles consistent à réaliser les tests unitaires (TDD) ou les tests de comportement (BDD) avant de coder l’application elle-même. Ainsi, en début de cycle, tous les tests sont au rouge et ils passent au vert à mesure que les développements avancent.



Défis


Le défi c’est de renverser les mentalités. Avec les méthodes traditionnelles, un développeur écrit les tests après avoir écrit son application. On connait les défauts : les tests passent à la trappe en fin de cycle par manque de temps ou ils ne sont pas efficaces parce qu’on n’a pas pris le temps de penser aux cas d’erreurs. Seuls les cas bien faits dans le code sont correctement testés, ce qui est peu utile.

Pour beaucoup d’intervenants, c’est une révolution. Il faut réapprendre sa façon de travailler.

La conversion est d’autant plus dure que penser aux cas d’erreurs est un exercice difficile. C’est un peu comme cet adage de mathématiques qui veut que vous maîtrisiez un théorème lorsque que vous savez utiliser la proposition contraposée à bon escient.



Missions


Nos consultants interviennent dans les équipes de développements pour :
  • Déployer ces méthodes
  • Utiliser les frameworks de test pour automatiser les tâches
  • Gérer le changement de méthodes et évangéliser après avoir été pionnier



Avenir


C’est probablement un des éléments très important de l’avenir du développement. Tout nouveau projet doit être envisagé sous cet angle. Les SI deviennent de plus en plus critiques donc la recherche de robustesse est essentielle. L’approche TDD et BDD est la solution d’avenir.

Les usines de développement automatisé

Sur un projet logiciel, l’usine de développement est l’outil capable d’automatiser toutes les actions une fois le code écrit. Ainsi, l’usine va récupérer les dépendances, compiler, exécuter les tests, vérifier la qualité du code, packager, déployer et générer la documentation. En se déclenchant automatiquement à partir d’un commit sur l’outil de versionning, l’usine de développement est l’outil permettant l’intégration continue.



Défis


La mise en place d’une usine de développement prend part à un enjeu plus global d’industrialisation de l’activité de développement logiciel. Standardiser et automatiser les opérations post-coding doivent permettre de gagner du temps et assurer que le processus est appliqué à chaque fois. 



Missions


Nos consultants interviennent dans les équipes de développements pour :
  • Concevoir les usines
  • Choisir, déployer et configurer les bons frameworks
  • Evangéliser après avoir été pionnier.



Avenir


Les projets logiciels sur lesquels les tests unitaires ne sont pas lancés pour chaque build, ou sur lesquels des erreurs de configuration de compilation provoquent des pannes en production, sont encore nombreux. L’avenir c’est la généralisation du recours à de telles usines.

L’avenir c’est aussi l’enrichissement de ces usines. Les usines de demain intégreront des notions de tests d’intégration, tests de performance et tests de non-regressions. Elles seront capables de distribuer une compilation trop coûteuse pour un seul poste ou encore de lancer des environnements virtuels pour des tests d’intégration.