la méthodologie SAFe. Les équipes de développement qui livrent la valeur vont être accompagnées par une équipe transverse où se trouvent notamment les architectes, alias System Architects ou System Engineers.
L'organisation du travail programme et le développement s'organisent autour de macro tâches (dans un backlog programme) déclinées et affinées dans des backlogs plus concrets, adressables et activables par les équipes. Ce travail est cadencé par un tempo sur l'ensemble d'un train SAFe, avec des incréments composées de 5 itérations. Toutes les 5 itérations, les équipes se retrouvent pour se redonner de la vision sur l'ensemble du système. Ces grands messes ont été nécessaires pour maintenir la cohérence du projet.
On reprend 3 de nos 5 objectifs sur ce REX :
Les aspects de cadrage L’un des rôles de l’architecte, c’est de cadrer suffisamment pour apporter quelque chose d'activable en développement. On parle de solution intent, un terme particulièrement adéquat car l'architecte a bien une intention, définie selon les besoins métier, les objectifs à moyen et long terme, ou encore le contexte. Une fois que cette intention commence à partir en production, elle s’affine peu à peu avec les retours des équipes.
L'aide à la décision et à l'évolution du système On utilise les ADRs (Architecture Decision Records) pour documenter le système en cours de construction - une pratique recommandée par ThoughtWorks depuis 2017. Un exemple d'une décision :
Ces décisions s'empilent comme des logs (car le “cadrage 0” parfait n'existe pas) et se font à plusieurs niveaux : des décisions centrales ou plus locales, concernant uniquement une équipe voire un seul composant. Elles sont stockées et versionnées comme du code, avec des outils classiques pour des développeurs et les bonnes pratiques associées.
Le format est assez simple, il y a :
Le contexte est essentiel : il permet d'expliquer pourquoi on a fait ce choix et facilite donc dans sa future remise en question de manière éclairée. Cela va supprimer la peur du changement, un peu comme un harnais de tests unitaires. En loggant les décisions, leur contexte, et en ayant conscience de leurs conséquences, on permet au système de continuer son évolution en évitant les frictions causées par la crainte des modifications des décisions d'architecture.
En complément de ces ADR, on maintient une documentation collaborative, sous forme de Markdown, elle aussi versionnée. Comme dans la hiérarchie des ADR, la documentation peut être centrale ou locale. Cette documentation décentralisée est une force car centraliser toutes les décisions et la documentation est un travail fatiguant qui peut faire peur. On préfère conserver la connaissance, la partager aux yeux de tous, puis, par la suite, si l'on souhaite mettre en commun des éléments, il sera possible de faire un refactoring.
Les 2 organisations présentent des points communs et des différences :