Mon entreprise est en pleine transition d'un développement de type cascade vers Agile / Scrum. Entre autres choses, on nous dit que nous nous attendons à avoir de nouvelles fonctionnalités de travail, testables (par QA) à la fin de chaque journée.
La plupart de nos développeurs perdent environ 2 heures par jour à cause des réunions et autres frais généraux d'entreprise. Cela signifie que dans une période donnée de 6 heures (au mieux), nous devons concevoir, écrire, tester unitaire, construire et déployer (avec les notes de publication) suffisamment de code pour produire une fonctionnalité complète avec laquelle QA pourra jouer. Je comprends que les notes de build / déploiement / version pourraient être automatisées avec une configuration CI appropriée, mais nous n'en sommes pas encore là.
Nous avons également un important contingent offshore qui écrit notre code côté serveur, et le décalage horaire de 12 heures rend cela encore plus difficile.
Nous essayons de classer les histoires en tranches verticales étroites et profondes afin de terminer les fonctionnalités de bout en bout aussi rapidement que possible, mais la plupart des jours sont plutôt frénétiques et j'attrape souvent des gens qui prennent des raccourcis stupides et fragiles pour s'assurer que le contrôle qualité a sa propre construction. Ce problème est aggravé après qu'un sprint a été en cours pendant quelques jours, lorsque les défauts inévitables commencent à rouler et doivent s'insérer dans la même fenêtre de 6 heures.
Est-ce un rythme normal pour les équipes Agile? Même si nous parvenons à mettre en œuvre une configuration CI, je ne vois pas comment nous serons en mesure de maintenir ce rythme tout en créant des logiciels de qualité.
Edit: Il y a plusieurs bonnes réponses ici. Cela m'a fait réaliser que ce que je demandais vraiment, c'est si les équipes Agiles devaient fournir de nouvelles fonctionnalités quotidiennement. J'ai mis à jour le titre en conséquence.
Si vous aviez un logiciel fonctionnel hier, pourquoi ne fonctionnerait-il pas aujourd'hui? Si vous n'avez terminé aucune tâche aujourd'hui, la construction d'aujourd'hui sera la même qu'hier. Les versions quotidiennes et le rythme de développement sont des choses distinctes. Ce n'est pas parce que vous avez des versions quotidiennes que vous avez de nouvelles fonctionnalités dans chaque version.
Lorsque finalement une fonctionnalité est terminée et archivée dans la branche principale, vous devriez avoir un processus automatisé qui construit le logiciel et exécute des tests. S'il y a un problème avec la construction ou l'exécution des tests, l'équipe est avertie et concentre ses efforts pour le faire fonctionner à nouveau. C'est ainsi que CI fonctionne et comment il vous aide à publier des logiciels qui fonctionnent tout le temps.
la source
Réponse courte: Non . Cela ne peut tout simplement pas être accompli quotidiennement.
Cependant, une équipe agile est censée fournir des éléments logiciels ou des user stories à chaque sprint . Habituellement, des réunions de suivi ont lieu tous les jours pour voir les progrès et les obstacles.
En ce qui concerne les logiciels de qualité , les processus d'intégration continue (CI) en place garantiront que le contrôle de la qualité est appliqué à de petits efforts (check-ins) et effectué aussi souvent que configuré. Il vise également à améliorer le
quality of software
, et à réduire le temps nécessaire pour le livrer, en remplaçant la pratique traditionnelle d'appliquer un contrôle de la qualité après avoir terminé tout le développement.la source
Non, il ne faut pas s'attendre à fournir de nouvelles fonctionnalités chaque jour. Toutes les fonctionnalités ne peuvent pas être décomposées en une taille si petite que le développeur peut terminer la fonctionnalité en environ 6 heures de temps de développement.
Si vous faites de la mêlée, vous devriez faire au moins 2 semaines de sprints, avec des fonctionnalités dimensionnées pour prendre environ 0 à 8 jours pour être terminées. La promesse faite au propriétaire du produit est de livrer un nouveau code de travail correct, testé et vérifié, qui pourrait être mis en production à la fin du sprint. (REMARQUE: vous n'avez pas besoin de le mettre en production, mais l'objectif est que ce soit le cas)
Une bonne méthodologie vous a suggéré de configurer un serveur CI (intégration continue) dans lequel vous avez automatisé la création d'au moins une version quotidienne de logiciels fonctionnels. L'idée étant que vous archiviez votre code dès que vous avez terminé la fonctionnalité afin qu'elle puisse être dans le prochain cycle de construction, puis entre les mains de QA pour les tests.
N'oubliez pas que l'objectif est de faire réaliser et tester les fonctionnalités à la fin du sprint! Vous ne voudriez pas avoir à faire attendre le contrôle qualité jusqu'au dernier jour du sprint pour que vous fassiez la construction et ensuite les faire tester toutes les fonctionnalités. Ils n'auront pas le temps de tout tester et vous n'aurez pas le temps de corriger les bugs ...
Si vous ne pouvez pas configurer un serveur CI, la pratique devrait être que vous devez créer manuellement une nouvelle version pour QA chaque fois qu'un développeur vérifie son code fini et prétend qu'il a terminé avec une fonctionnalité et prêt à être transféré à QA.
la source
Cela dépend en fait de la taille du projet; si le projet est important, il n'y a aucun moyen réalisable d'y parvenir.
Les builds quotidiens (voire plus souvent) issus d'outils d'intégration continue ne signifient pas un logiciel fonctionnel; cela signifie à peine du code compilable.
la source
Il existe de nombreux projets qui fournissent des versions quotidiennes qui, grâce à une intégration continue, fonctionnent comme des logiciels. Du moins en théorie.
Cela signifie qu'il ne contient pas nécessairement de nouvelles fonctionnalités. Peut-être quelques corrections de bugs mineurs, ou rien du tout.
En théorie, si vous ne parvenez pas à fournir plus de travail à votre AQ quotidiennement, vous devez soit augmenter le nombre de développeurs, soit réduire le nombre de testeurs. Terrible idée!
Votre travail consiste à faire avancer les choses.
Dites au QA qu'ils auront quelque chose à tester quand ce sera fait. Vous devez leur expliquer pourquoi.
la source
Je pense que vous êtes confus au sujet de l'idée de "CI". Vous voudrez peut-être visiter cet excellent article de Martin Fowler sur la façon dont CI fonctionne dans la pratique. Cela devrait répondre correctement à votre question.
la source