Ma compagnie est au cœur d'une transition du développement de type cascade à Agile/Scrum. Entre autres choses, on nous a dit que l'attente est que nous ayons NOUVEA Travailler, TESTABLE (par QA) Caractéristiques à la fin de chaque journée.
La plupart de nos Devs perdent environ 2 heures par jour pour les réunions et autres entreprises aériennes. Cela signifie que, dans une période donnée de 6 heures (au mieux), nous devons concevoir, écrire, tester un appareil, construire et déployer (avec des notes de publication) suffisamment de code pour produire une fonctionnalité complète pour que l'AQ soit joué. Je comprends que les notes de construction/de déploiement/de publication pourraient être automatisées avec une configuration CI appropriée, mais nous ne sommes pas encore là.
Nous avons également une grande rédaction contingente offshore, notre code côté serveur et la différence de temps de 12 heures le rend encore plus difficile.
Nous essayons de détenir des histoires de tâches dans des tranches verticales étroites et profondes afin de compléter les caractéristiques de bout en bout le plus rapidement possible, mais la plupart des jours se sentent plutôt frénétiques et je sais souvent des gens qui prennent des raccourcis fragiles et fragiles pour assurer leur construction. Ce problème est composé après que le sprint a été progressé pendant quelques jours, lorsque les inévitables défauts commencent à rouler et doivent s'intégrer dans la même fenêtre de 6 heures.
Est-ce un rythme normal pour les équipes agiles? Même si nous parvenons à mettre en œuvre une configuration CI, je ne vois pas comment nous pourrons maintenir ce rythme et créer un logiciel de qualité.
Edit : Il y a plusieurs bonnes réponses ici. Cela m'a fait comprendre que ce que je demandais vraiment est, si les équipes agiles devraient-elles livrer nouvelles fonctionnalités quotidiennement. J'ai mis à jour le titre en conséquence.
Les crimes qui sont commis au nom d'agile ces jours-ci me rendent triste. Beaucoup de gens ont du mal à faire cette transition.
Manifeste Agile: "Nous valorisons les gens et les interactions sur les processus et les outils.". Lorsque les gens ont clairement mal, le processus est faux. Je ne veux pas vous dire comment le faire, mais je vais partager comment je le fais.
Dans mes équipes, la partie importante est d'éviter de s'engager dans un code de repo partagé qui est brisé d'une manière qui gaspillera le reste de l'équipe. Dans ce sens seulement, je m'efforce de "livrer du code de travail tous les jours". Ne pas casser qa. Ne bloquez pas d'autres développeurs. Idéalement, je n'utilise jamais de bugs. (ha ha).
L'implication n'est pas que vous devez commettre quelque chose tous les jours. L'implication est que vous ne devriez que commettez de bonnes choses, de sorte que chaque jour, vous pouvez obtenir une construction de toutes les bonnes choses que quiconque a commis. De cette façon, l'équipe continue de tirer sur tous les cylindres.
Dans mes équipes QA est constante. Je construis des produits commerciaux, le projet n'est jamais fini avant que le produit soit obsolète. Les ingénieurs d'AQ testent les fonctionnalités disponibles pour tester. Les ingénieurs d'AQ ont toujours un arriéré. Il n'y a jamais assez de temps QA pour tester ou automatiser tout ce que nous voudrions de manière idéale.
Si les développeurs ont besoin de plusieurs jours avant de fusionner dans des modifications pour une fonctionnalité ou une solution, c'est bien, encouragé si cela les aide à obtenir le code juste avant de risquer notre temps. Les développeurs peuvent commettre un code à leur repo ou à leur succursale privée sans affecter l'équipe ou l'AQ. Les développeurs peuvent exécuter des tests unitaires ou une automatisation de régression sur le code construit à partir d'un repo ou d'une branche privée de développeur. Sur des cas particulièrement risqués, un ingénieur QA travaillera avec le développeur à tester avant de la fusionner, de protéger l'équipe du retard.
En ce sens, je pratique ce que veulent vos responsables. Presque tous les jours pour les 12 dernières années, mes équipes de développement ont eu du code qui fonctionne dans le référentiel partagé. Nous sommes toujours presque prêts à être expédiés. De temps en temps, nous n'agissons pas cela, mais nous ne nous inquiétons pas trop à ce sujet. Parfois, il est intentionnel, d'accueillir des changements d'outils majeurs ou des fantasmes difficiles.
Le manifeste agile, pour moi, résume le meilleur de la nouvelle réflexion sur le processus de développement émergé dans les années 1990. Je suis à peu près un vrai croyant dans ces principes, mais les détails du processus peuvent varier. Comme je le vois, le point d'agile est d'adapter votre processus aux besoins de votre produit et de vos clients, et non d'un esclave à traiter.
Si vous aviez un logiciel de travail hier, pourquoi ne fonctionnerait-il pas aujourd'hui? Si vous n'avez pas fini de tâches aujourd'hui, la construction d'aujourd'hui sera la même que hier. Les constructions quotidiennes et le rythme du développement sont des choses séparées. Juste parce que vous avez des constructions quotidiennes qui ne signifie pas que vous avez de nouvelles fonctionnalités dans chaque construction.
Lorsque finalement une fonctionnalité est terminée et enregistrée à la branche principale, vous devez disposer du processus automatisé qui construit le logiciel et exécute des tests. S'il y a un problème avec les tests de construction ou d'exécution, l'équipe est informée et elles concentrent leurs efforts pour le faire fonctionner à nouveau. C'est ainsi que CI fonctionne et comment il vous aide à libérer le logiciel de travail tout le temps.
Réponse courte: NON. Cela ne peut tout simplement pas être accompli quotidiennement.
Cependant, l'équipe agile est censée livrer des logiciels de travail ou des histoires d'utilisateurs dans chaque sprint. Habituellement, la réunion de statut est tenue quotidiennement pour voir les progrès et les obstacles.
En ce qui concerne -logiciel de qualité, les processus d'intégration continue (CI) en place garantissent que le contrôle de la qualité est appliqué à de petites œuvres d'efforts (check-in) et faites aussi fréquemment que configuré. Il s'agit également d'améliorer le quality of software
, et pour réduire le temps nécessaire pour la livrer, en remplaçant la pratique traditionnelle d'appliquer un contrôle de la qualité après avoir terminé tout le développement.
Non, il ne devrait pas y avoir aucune espérance de livrer de nouvelles fonctionnalités tous les jours. Toutes les fonctionnalités ne peuvent pas être divisées à une si petite taille pour pouvoir terminer un développeur la fonctionnalité de 6 heures de temps de développement.
Si vous faites du scrum, vous devriez faire au minimum 2 semaines Sprint, avec des caractéristiques de taille pour prendre à peu près de 0 à 8 jours pour être terminée. La promesse envers le propriétaire du produit est de fournir un nouveau code de travail correct testé et vérifié pouvant être mis en production à la fin du sprint. (Remarque: vous n'avez pas besoin de la mettre en production, mais le but est que cela pourrait être si vous le souhaitez)
Une bonne méthodologie 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 de travail. L'idée étant que vous vérifiez votre code dès que vous avez terminé la fonctionnalité afin qu'elle puisse être dans le cycle de construction suivant puis dans les mains de QA pour les tests.
Rappelez-vous que l'objectif est de faire des fonctionnalités faites et testées à la fin du sprint! Vous ne voudrez pas avoir à faire attendre de l'AQ jusqu'au dernier jour du sprint pour que vous fassiez la construction, puis de les faire tester toutes les fonctionnalités. Ils n'auront pas le temps de tout tester et vous n'aurez pas le temps de réparer de bugs ...
Si vous ne pouvez pas configurer un serveur CI, la pratique doit être que vous devez créer manuellement une nouvelle construction pour QA chaque fois qu'un développeur vérifie dans son code fini et affirme qu'il est fait avec une fonctionnalité et prêt à remettre à QA.
Cela dépend en fait de la taille du projet; Si le projet est un grand, il n'ya pas de moyen réalisable pour y parvenir.
Daily (ou encore plus souvent) construit des outils d'intégration continue, ne signifie pas un logiciel de travail; Il signifie à peine un code compilable.
Il existe de nombreux projets qui fournissent des constructions quotidiennes, qui, grâce à une intégration continue, sont des logiciels de travail. Au moins en théorie.
Cela signifie que cela ne contient pas nécessairement de nouvelles fonctionnalités. Peut-être peu de corrections de bugs mineurs, ou rien du tout.
En théorie, si vous êtes incapable de fournir plus de travail à votre QA quotidiennement, vous devez augmenter le nombre de développeurs ou réduire le nombre de testeurs. Terrible idée!
Dites au QA qu'ils obtiendront quelque chose à tester quand c'est fait. Vous devez leur expliquer pourquoi.
Je pense que vous êtes confus à propos de l'idée de "CI". Vous voudrez peut-être visitez cet excellent article de Martin Fowler sur la manière dont CI travaille dans la pratique . Cela devrait répondre correctement à votre question.