web-dev-qa-db-fra.com

Relation entre la user story, la fonctionnalité et l'épopée?

En tant que quelqu'un qui est encore nouveau dans l'agilité, je ne suis pas sûr de bien comprendre la relation ou la différence entre la user story, la fonctionnalité et l'épopée.

Selon cela question , une fonctionnalité est une collection d'histoires. L'une des réponses suggère qu'une fonctionnalité est en fait une épopée. Les fonctionnalités et les épopées sont-elles considérées comme la même chose, c'est-à-dire essentiellement une collection d'histoires d'utilisateurs connexes?

Notre chef de projet insiste sur le fait qu'il existe une structure hiérarchique:

Epic -> Fonctionnalités -> User stories

Et que, fondamentalement, toutes les user stories doivent entrer dans cette structure. Par conséquent, toutes les user stories doivent tomber sous une fonction parapluie et toutes les fonctionnalités doivent tomber sous une épopée.

Pour moi, cela semble gênant. Quelqu'un peut-il préciser comment les histoires d'utilisateurs, les fonctionnalités et les épopées sont liées? Ou existe-t-il un article qui souligne clairement les différences?

117
nivlam

Ce sont des termes très génériques en fait. Il existe de nombreuses façons de les interpréter, variant dans la littérature et la façon dont les gens les voient. Prenez tout ce que je dis avec un énorme grain de sel.

Habituellement, une Epic comprend une fonctionnalité très globale et pas très bien définie dans votre logiciel. C'est très large. Il sera généralement décomposé en une histoire ou une fonctionnalité utilisateur plus petite lorsque vous essayez de lui donner un sens et de les adapter à une itération agile. Exemple :

épique
- Permettre au client de gérer son propre compte via le Web

Feature et User Story sont des fonctionnalités plus spécifiques, que vous pouvez facilement tester avec des tests d'acceptation. Il est souvent recommandé qu'ils soient suffisamment granuleux pour tenir dans une seule itération.

Les fonctionnalités décrivent généralement ce que fait votre logiciel:

Fonction
- Modification des informations client via le portail Web

Les histoires d'utilisateurs ont tendance à exprimer ce que l'utilisateur veut faire:

ser story
En tant que commis de banque,
Je souhaite pouvoir modifier les informations client
afin que je puisse le tenir à jour.

Je ne pense pas qu'il y ait vraiment une hiérarchie entre les deux, mais vous pouvez en avoir une si vous le souhaitez ou si elle correspond à votre façon de travailler. Une user story peut être une justification spécifique d'une fonctionnalité ou une manière spécifique de le faire. Ou cela peut être l'inverse. Une fonctionnalité peut être un moyen de réaliser une user story. Ou ils peuvent désigner la même chose. Vous pouvez utiliser les deux: User stories pour définir ce qui apporte une valeur commerciale et une fonctionnalité pour décrire la contrainte du logiciel.

ser story: en tant que client, je souhaite payer avec les cartes de crédit les plus populaires
Feature supporte l'API XML GOV-TAX-02 du gouvernement.

Il y a aussi la question du scénario, qui est généralement un moyen d'exécuter une histoire de fonctionnalité/utilisateur. Ils correspondent généralement proprement à un test d'acceptation spécifique. Par exemple

Scénario: Retirer de l'argent
Étant donné que j'ai 2000 $ dans mon compte bancaire
Lorsque je retire 100 $
Ensuite, je reçois 100 $ en espèces
Et mon solde est de 1900 $

C'est ainsi que nous définissons ces termes où je travaille . Ces définitions sont loin d'une définition mathématique ou d'un terme standardisé. C'est comme la différence entre un politicien de droite ou un politicien de gauche. Cela dépend de l'endroit où vous vivez. Au Canada, ce qui est considéré comme de droite peut être considéré comme de gauche aux États-Unis. C'est très variable.

Sérieusement, je ne m'en inquiéterais pas trop. L'important est que tous les membres de l'équipe se mettent d'accord sur une définition afin que vous puissiez vous comprendre. Certaines méthodes comme la mêlée ont tendance à les définir de manière plus formelle, mais choisissez ce qui vous convient et laissez le reste. Après tout, n'est-il pas agile sur individus et interactions sur les processus et les outils et logiciel de travail sur une documentation complète?

99

Epic : Une très grande histoire d'utilisateur qui est finalement décomposée en histoires plus petites.

User story: Une définition de très haut niveau d'une exigence, contenant juste assez d'informations pour que les développeurs puissent produire une estimation raisonnable de l'effort de mise en œuvre .

http://www.telerik.com/agile-project-management-tools/agile-resources/vocabulary.aspx

Fonctionnalité : caractéristique ou capacité distinctive d'une application logicielle ou d'une bibliothèque (par exemple, performances, portabilité ou fonctionnalité).

http://en.wikipedia.org/wiki/Software_feature

38
Robert Harvey

Je vous déconseille d'appliquer une hiérarchie trop rigide à ces termes. Nous avons essayé de le faire dans mon travail précédent. Deux fois. Les deux tentatives étaient différentes et les deux fois, nous avons constaté que nous nous étions inutilement limités. La seule constante était la définition d'un ser Story . Du point de vue de la planification, une histoire est la pierre angulaire d'un projet. Les termes plus larges (épopée, fonctionnalité, etc.) ne sont en fait que des balises . Les balises sont un moyen facile de permettre à une histoire d'exister dans le cadre de plusieurs épopées et de plusieurs fonctionnalités en même temps. Cela ne vaut pas l'effort mental d'être plus strict que ça.

Les balises fonctionnent pour Stack Exchange et peuvent également fonctionner pour vous.

28
Michael Kristofik

Notre façon de travailler avec Epics, Stories et Features est la suivante

Au début du cycle de projet, nous arrivons à Epics. Il s'agit de fonctionnalités de très haut niveau, presque centrées sur le marketing. Le genre de chose que vous pouvez utiliser dans un résumé, comme,

Notre nouveau site Web permettra aux clients de parcourir les produits, d'afficher la disponibilité et les prix, de passer des commandes et de voir l'historique de leurs commandes passées

Cela conduit à des épopées telles que

  • Parcourir le catalogue de produits
  • Voir disponibilité
  • Voir les tarifs
  • Passer la commande
  • Afficher l'historique des commandes

Celles-ci sont rédigées sous la forme d'histoires utilisateur (par exemple, en tant que client, je veux parcourir le catalogue de produits, afin de pouvoir prendre une décision d'achat éclairée), mais ne servent que de démarreur pour dix pour ce qui sera réellement développé et publié.

Ces épopées sont ensuite décomposées en ser Stories. Il s'agit de véritables parcours utilisateurs de bout en bout, de portée très limitée et définis d'une manière qui peut être estimée et planifié indépendamment, et développé , testé et relâché en un seul cycle de relâchement.

La User Story est l'unité de livraison. Il s'agit de la user story qui est complète ou incomplète, mise en ligne ou non en ligne.

Une épopée peut entraîner un grand nombre d'histoires d'utilisateurs, toutes ne seront pas développées ou publiées en même temps.

Par exemple, l'épopée Parcourir le catalogue de produits peut se décomposer en

  • Naviguer dans la hiérarchie des catégories
  • Recherche par mots-clés
  • Filtrer par attributs de produit (par exemple gamme de prix, marque, couleur, taille, etc.)

Encore une fois, chacun de ceux-ci serait écrit dans le format, par exemple En tant que client, je souhaite naviguer dans la hiérarchie des catégories, afin de pouvoir parcourir les produits et explorer le produit le plus adapté à mes besoins.

Généralement, pour la plupart de nos projets, nous avons des dizaines d'épopées et des centaines d'histoires.

Maintenant, au fur et à mesure que nous parcourons le cycle de vie de l'histoire, nous étiquetons ces histoires avec Feature s. Par exemple, toutes les histoires de navigation et de recherche, de stock et de prix seront étiquetées avec, disons, "catalogue de produits". Les histoires de commande à effectuer concernant le paiement par carte de crédit peuvent être étiquetées avec une étiquette "carte de crédit" et celles concernant le paiement par Paypal seront étiquetées avec une étiquette "Paypal".

Ces étiquettes servent à regrouper des histoires qui appartiennent ensemble, non pas parce qu'il s'agit de différents types de réalisation de la même activité (par exemple, toutes les histoires sur commande), mais parce qu'elles doivent être publiées ensemble.

Par exemple, l'histoire "passer une commande en payant par carte de crédit" appartient à la même épopée que l'histoire "passer une commande en payant par Paypal", mais elles n'ont pas besoin d'être publiées ensemble.

Alors que l'histoire "passer une commande en payant par carte de crédit", l'histoire "traiter un remboursement de retour sur une carte de crédit" et l'histoire "permettre aux clients de gérer leurs cartes de crédit enregistrées sur leur compte" semblent appartenir l'une à l'autre . Ils auraient tous été étiquetés avec l'étiquette de fonction "carte de crédit". c'est-à-dire qu'ils appartiendraient tous à la fonction "Carte de crédit". Il n'est pas très utile de libérer la possibilité de passer une commande par carte de crédit, s'il n'est pas possible de traiter un remboursement de retour sur Paypal, ou s'il n'est pas possible de gérer vos cartes de crédit enregistrées sur votre compte.

Remarque: En règle générale, c'est. Il s'agit en fin de compte d'une décision commerciale. Si le délai de mise sur le marché est important, il peut y avoir une raison légitime d'aller vivre avec l'un d'entre eux et non l'autre.

Ainsi, les épopées servent à décomposer en histoires (liées, mais séparées) qui peuvent être développées indépendamment, tandis que les fonctionnalités servent à regrouper des histoires qui devraient être publiées ensemble.

On pourrait dire que les épopées se décomposent en user stories et que les user stories sont composées en fonctionnalités. Les histoires qui appartiennent à une fonctionnalité se trouvent généralement dans Epics. Ainsi, les épopées et les fonctionnalités sont orthogonales, pas dans une hiérarchie stricte.

Dans notre façon de travailler, une fois les épopées décomposées en histoires, elles perdent leur raison d'être. Nous n'évaluons ni ne planifions les épopées. Nous ne suivons pas les progrès sur Epics. Nous ne publions pas Epics. Nous estimons, planifions et suivons les User Stories. Et nous publions des fonctionnalités.

27
Vihung

Je suis d'accord comme beaucoup de réponses qu'il n'y a vraiment pas de bonnes réponses car ce ne sont que des termes qui peuvent varier en fonction du camp Agile sur lequel vous êtes basé et vous pouvez certainement créer votre propre camp tant que tous les membres de votre équipe, y compris les parties prenantes externes, comprennent ce qu'ils signifient. C'est juste une façon d'organiser votre besoin.

La réponse que j'aime vient du camp de Mike Cohn et c'est assez simple.

http://www.mountaingoatsoftware.com/blog/stories-epics-and-themes

  • Epic n'est qu'une grande histoire (hiérarchique)
  • Le thème est juste un groupe d'histoires (à peu près comme une balise)

Il évite en fait le terme "Feature". Je suppose que c'est principalement parce que c'était un terme courant dans le monde traditionnel des cascades. De nombreux camps agiles ont tendance à utiliser des termes différents pour souligner les différences.

Donc, dans la définition de votre PM, Feature se situe quelque part au milieu de la hiérarchie Epic-Story.

Voici mon info-graphique de cette définition de mon article InfoQ http://www.infoq.com/articles/visualize-big-picture-agile ;-)

enter image description here

10
Kulawat The Eidos

Les fonctionnalités et les épopées ne sont pas la même chose.

  • Une fonctionnalité n'est pas une user story.
  • Une épopée est une histoire d'utilisateur.
  • Une User Story peut être une épopée.
  • Une User Story peut contenir de nombreuses fonctionnalités.
  • Une fonctionnalité peut remplir 1 à de nombreuses histoires d'utilisateurs.

Dans les phases de planification, les discussions aboutissent à ser Stories qui sont généralement identifiés comme Epics parce que l'effort de mise en œuvre de solutions pour eux est trop grand pour être accompli en quelques jours. Produit Caractéristiques sont identifiés lors de cette phase. Mais ce n'est qu'un sous-produit de la discussion. Fonctionnalités sont ensuite utilisés pour planifier une feuille de route du produit, qui est une discussion séparée.

Les Epics sont prises et discutées plus loin, résultant en ser Stories pour chaque Epic. Les Fonctionnalités et Epics sont utilisées pour conduire les discussions dans les sessions Backlog Refinement et Sprint Planning. À quel moment, les ser Stories qui sortent de ces discussions sont affinés, priorisés, et, dans Sprint Planning , accepté dans les sprints pour la mise en œuvre.

6
Joey Guerra

C'est juste une décomposition de problème. Ce ne sont que des histoires, sauf avec des tailles différentes.

Personnellement, je préfère ne pas étiqueter leurs tailles, mais si vous le faites, c'est bien aussi. Demandez-vous PM quelle est la définition dans votre espace de travail.

5
Martin Wickman

Notre organisation compte plus de 2 000 développeurs, donc la réponse à cette question est importante pour une communication fluide et claire entre les centaines d'équipes Agile que nous travaillons ensemble sur notre produit commun. Pour une très petite organisation, vous pouvez avoir une structure très simple qui n'a même pas besoin d'être hiérarchisée (comme d'autres l'ont répondu). Cependant, pour les grandes organisations, il existe certainement un besoin d'une hiérarchie organisée, échelonnée et cohérente - et c'est là que réside le problème de s'efforcer de faire une hiérarchie à partir de quelque chose qui n'est pas strictement hiérarchique.

Soit dit en passant, nous appelons chacun de ces niveaux disparates des "éléments de travail". Certaines organisations (y compris certains des répondants ci-dessus) se réfèrent à des niveaux disparates comme des histoires ou des histoires d'utilisateurs (et nous l'avons fait dans le passé aussi), mais nous avons trouvé cela trop ambigu, nous les appelons donc de manière générique des éléments de travail.

Le mieux que nous ayons fait "officiellement" jusqu'à présent est de suivre la structure SAFe de Dean Leffingwell des thèmes d'investissement et des épopées commerciales en haut (et en deuxième en haut) de la hiérarchie, puis les fonctionnalités en dessous et enfin les histoires sous les fonctionnalités. Selon Agile, les tâches sont toujours sous Stories, nous faisons donc attention à ne pas réutiliser ce terme plus haut. Nous avons choisi de suivre SAFe pour au moins avoir une certaine cohérence dans toutes nos équipes.

Mais cela reste insuffisant pour nos besoins. Nous définissons une fonctionnalité comme un produit livrable clairement valable pour un consommateur de notre produit logiciel (c'est-à-dire que nous listons ces fonctionnalités dans nos annonces de versions à venir). Et nous définissons une histoire comme une plus petite quantité de portée et de travail qui peut être livrée en un seul sprint par une seule équipe de développement Agile. Nous commençons également maintenant à suivre la définition SAFe du thème d'investissement et de l'épopée commerciale au niveau du portefeuille (et non en dessous de ce niveau). Et nous COMMENCONS à NE PAS utiliser nos anciennes définitions de "Thème" et "Épique".

Nous évoluons maintenant lentement dans cette direction, mais les roues du progrès tournent lentement. Nous avons encore du mal à diviser le travail en morceaux de la taille d'une bouchée afin de pouvoir définir le travail et le faire en douceur par plusieurs équipes. Pour ce faire, nous constatons le besoin d'une "sous-fonctionnalité" plus petite qu'une fonctionnalité mais plus grande qu'une histoire. Les sous-fonctionnalités peuvent être utilisées pour des morceaux de travail effectués sur une fonctionnalité par CHAQUE équipe INDIVIDUELLE, ou des morceaux de travail effectués par une seule équipe à différents moments (dans différents Sprints, ou même différentes versions).

Nous avons également besoin de plusieurs niveaux hiérarchiques entre Feature et Business Epic, mais nous n'avons pas encore résolu celui-ci, à part les appeler simplement "Thèmes" - que nous savons n'est pas le terme correct, car il est facilement confondu avec les thèmes d'investissement SAFe. Pour certains grands projets (versions), nous avons jusqu'à 5-8 niveaux hiérarchiques différents, chacun divisant le travail en morceaux de plus en plus petits. Vous pouvez considérer ces thèmes comme des "groupes de fonctionnalités", mais ce n'est pas nécessairement le terme correct non plus.

Je pense qu'il est important d'essayer d'utiliser des termes qui offrent de la clarté plutôt que de l'ambiguïté. Donc, toute personne faisant référence à une histoire signifie la plus petite unité de travail qui peut être effectuée dans un seul sprint (à l'exception des tâches sous l'histoire), et sous-fonctionnalité signifie la plus petite unité de travail sur une fonctionnalité qui peut être effectuée par une seule personne. équipe. De même, un groupe d'entités est un niveau hiérarchique au-dessus de l'entité. Au-dessus, cela devient un peu flou, nous les appelons donc généralement Thèmes et nous autorisons les Thèmes en tant que parents et enfants d'autres Thèmes. Nous essayons de limiter les niveaux de fonctionnalité, de sous-fonctionnalité et d'histoire à un seul niveau chacun (les fonctionnalités ne doivent pas être des enfants d'autres fonctionnalités), mais nous ne réussissons pas encore à 100% à restreindre cela.

Je sais que nous pourrions utiliser des "balises" pour organiser une partie de cela, mais les balises ne nous donnent pas la structure de répartition du travail organisationnel dont nous avons besoin pour classer le travail entre toutes nos équipes. Par définition, les balises sont ambiguës (relations plusieurs-à-plusieurs), mais une hiérarchie est strictement un-à-plusieurs.

L'essentiel, c'est que c'est toujours un travail en cours pour nous, et nous sommes toujours aux prises avec cela. Mais adhérer aux définitions SAFe du thème, de l'épopée, de la fonctionnalité et de l'histoire nous fait avancer dans la bonne direction!

2
Kirk Bryde

La hiérarchie du backlog de produit dépend à peu près de la taille du produit et de sa modularité (nombre de domaines de produits définis).

Pour les petits projets: Epic> Story est plus que suffisant; et vous appelez soit la "fonctionnalité".
Les grands projets peuvent se ressembler pour: Roman> Thème> Epic> Feature> Story

Le meilleur exemple pourrait être le suivant:
Roman = MS Office
Thème = MS Word/MS Excel ...
Epic = Tables/Répertoire des polices ...
Caractéristiques = Tableau de base/Schéma de couleurs du tableau/Opérations avec les cellules ...
Histoires (pour la fonctionnalité 'Tableaux de base' dans 'Tables' Epic) = Ajouter un tableau/Dessiner un tableau/Insérer un brut/Insérer une colonne ...

Ce que je crois qu'il est bénéfique de garder à l'esprit lors de la définition de votre propre mise à l'échelle pour le backlog est:
1. Histoire: a) toujours réalisable en un sprint; b) pas toujours testable pour les utilisateurs finaux
2. Epic/Fonctionnalité: a) ne convient pas à une durée de sprint et doit être décomposé; b) devrait toujours pouvoir être testé pour les utilisateurs finaux; c) toujours livrable, peut être monétisé - obtenez un retour sur investissement calculé pour cela
. Lorsque vous envisagez d'ajouter ou non Epic> Feature section ou de vous en tenir à Epic> Story: je recommanderais d'insérer Feature entre Epic et Story uniquement quand: Epic ne convient même pas à 1 version, vous devez donc définir l'élément shippable qui s'adaptera à 1 version.

J'espère que cela vous sera utile.

1
Dmitriy Bibikov