J'entends souvent des PM (chefs de projet) parler de fonctionnalité et de fonction. Et je suis tellement perplexe de les différencier. Parfois, je pense qu'une fonctionnalité équivaut à une user story. Quelque chose comme "En tant qu'utilisateur, Bob devrait pouvoir voir une liste de ses paiements", et ils l'appellent une fonctionnalité. Parfois, il devient aussi gros qu'un sous-système, quelque chose comme "la possibilité d'envoyer SMS via une application Web". La fonction, d'autre part, devient parfois aussi petite qu'une tâche ", implémentant le regroupement de chiffres pour le nombre entrées ", alors qu'il y a des cas où il devient aussi gros qu'une opération CRUD entière.
Ma question est, comment pouvons-nous différencier fonctionnalité de fonction?
Caractéristiques sont ce que les vendeurs vendent.
Fonctions sont ce que les programmeurs développent.
Les fonctions ne s'intègrent pas bien dans le contexte d'une user story et sont pour la plupart transparentes pour un utilisateur. Il peut s'agir d'un processus d'arrière-plan ou d'une sorte de fonctionnalité d'application unique ou commune qui permet à d'autres fonctionnalités ou éventuellement à d'autres fonctions d'être implémentées de manière appropriée.
Les tâches, en revanche, sont des unités de travail individuelles qui doivent être exécutées pour fournir une fonction ou une fonction.
Dans mes projets, j'ai tendance à ne pas faire la différence entre une fonctionnalité et une fonction et j'écris des user stories pour des fonctionnalités et j'ajoute des fonctions ou des efforts de refactoring en tant que tâches pour compléter une seule fonctionnalité.
Cela donne parfois à certaines fonctionnalités un aspect inutilement gonflé sur le plan de projet, mais cela ne pose pas de problème, car si j'ai besoin de refactoriser les fonctions 1 et 2 et la fonction 3 pour fournir correctement la fonctionnalité 1, alors mon seul livrable pour ce sprint sera la fonctionnalité 1, ou éventuellement aucun livrable du tout.
Tant qu'à la fin du sprint, j'ai toujours un logiciel fonctionnel, mon projet est Agile.
Les fonctionnalités sont ce que votre programme peut faire. Les fonctionnalités sont le résultat direct des besoins des utilisateurs et des objectifs commerciaux. Ainsi, le programme les fonctionnalités existent principalement pour répondre aux demandes des utilisateurs.
La fonctionnalité, d'autre part, est de savoir comment les fonctionnalités susmentionnées sont réellement implémentées.
Pour un PM, "Fonction" est un objectif et "Fonctionnalité" est un comportement de produit avec lequel un utilisateur peut interagir. Cependant, les gens obtiennent souvent les deux en arrière (ce qui, je pense, est le cas dans votre question).
M'emmener de la place A à la place B est une fonction clé d'une voiture. C'est la raison (le but) qu'il existe. Le volant est une caractéristique, tout comme le levier de vitesses. Le pilote interagit avec plusieurs fonctionnalités pour obtenir la fonction d'aller quelque part.
La "fonction" ici doit être pas confondue avec une fonction (méthode) de langage de programmation qui parle de la mise en œuvre d'un logiciel de fonctionnalité. Ce n'est probablement pas ce dont un PM parlerait quand ils se réfèrent à "Caractéristiques et fonctions".
Il n'y a pas de hiérarchie agréable entre les fonctions et les fonctionnalités, car une seule fonctionnalité peut être utilisée pour prendre en charge plusieurs fonctions de produit.
Je crois qu'une distinction correcte doit être établie pour une méthodologie spécifique ou une culture d'exigences spécifiques. Ce qui suit est ma propre interprétation.
Fonction: Une exigence de base qui affecte considérablement la valeur du logiciel, que l'utilisateur doit avoir à une version spécifique. Exemple: fonction de sauvegarde sur un éditeur de texte.
Feature: A Nice d'avoir la capacité du logiciel, qui ajoute de la valeur au logiciel mais n'est pas un must absolu pour que le logiciel fonctionne correctement et remplisse ses fonctions. Par exemple, avoir une fonction d'annulation sur un formulaire de saisie de données ou enregistrer un document en tant que fichier gif pour un éditeur de texte (câblé!).