Spécifications fonctionnelles Processus agiles
Traditionnelle de la Chute d'eau, les exigences ont été recueillies - généralement dans un MS-Word document - à la suite d'un ésotérisme modèle. Dans une "stricte" modèle en cascade, ce document est gelé après l'exigence de phase et d'un Changement de Contrôle /Modifier le processus de Gestion est responsable de l'introduction de changements contrôlés. (**) [Normalement, le document est transformé en un "document vivant", et finalement un "cauchemar"]
Actuellement, je suis à la tête d'un projet qui est une réécriture d'une application de bureau pour le web (à partir de visual basic 6.0 ASP.Net). Le client dispose d'un référencé version de l'application qu'il veut réécrit. [Si les exigences sont gelés... Pas de portée fluage]. Le modèle de données pour être réutilisés comme est. Seul le front-end/les règles d'Affaires de la migration. En regardant la demande, je pense que c'est un au plus des 3/4 de grands écrans et c'est tout.
Certains des membres de l'équipe veulent document (de la vieille école de pensée, à mon avis) de l'ensemble de la chose avant de démarrer sur le nouveau développement. I & et quelques autres se sentent, il devrait être relativement facile de traduire l'INTERFACE utilisateur Web, de rechercher de l'ancien code, écrire la logique métier, faire des tests unitaires automatisés, de procéder à des tests d'intégration et de livrer l'écran par écran (ou une entreprise de la fonction par fonction)
Ma question est:
Dans un développement Agile, comment je le fais, je reste "agile" si je n'étais pas pour optimiser. Mon avis est l'écriture d'une documentation détaillée est anti-agile. Qu'en pensez-vous? Comment un agile gourou approche du problème ci-dessus (de la réécriture d'un existant VB 6.0 application de ASP.Net)?
Avertissement:
Création d'un 1000 page spécification Fonctionnelle pourrait éventuellement être pour satisfaire aux obligations contractuelles, une nécessité politique, le système pourrait être vraiment complexe (maintenant, la définition de "complexité" est un voyage vers glauque-terre).
source d'informationauteur Vyas Bharghava
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous pouvez produire de la documentation et de rester souplesi le client ou le Propriétaire du Produit, demandes de (lire est prêt à payer) de la documentation.
La croissance de votre documentation de manière incrémentale et itérative, comme vous le ferez avec le code. Test un peu , code un peu et ... document un peu.
Je vois trois façons de le faire : soit inclure le temps d'écrire de la documentation dans les tâches d'estimation, de créer de la documentation des tâches spécifiques, ou avoir de la documentation carnet de commandes d'articles/histoires.
Le risque avec la documentation des histoires, c'est qu'ils peuvent être très tard, longtemps après qu'ont été mises en œuvre, de sorte que je ne recommande pas cet.
Tâches de Documentation ont l'avantage d'être visible dans la planification des itérations, de sorte qu'ils ne doivent pas être oubliés ou négligés.
Agile ne signifie pas "pas de caractéristiques." Il signifie et le test de libération précoce et souvent (mais pas nécessairement à la production).
Le retard accumulé dans la Mêlée est le "spéc." Si vous n'avez pas fait d'écrire et de gérer la liste des fonctionnalités, vous allez perdre des fonctionnalités, et vous ne serez JAMAIS en mesure de comprendre quand le produit sera libéré (ne sera pas en mesure d'estimer la quantité de travail à gauche parce que vous n'avez aucune idée de l'endroit où vous êtes ou combien il reste à faire). La liste des fonctionnalités DOIT être géré par quelqu'un. La façon la plus simple de le faire est d'écrire tout ce que le produit doit faire (vous pouvez obtenir aussi complexe dans la formulation et la définition que vous voulez) et de garder trace de ce qui a été fait et ce qui reste à faire. Sinon, comment allez-vous attribuer le travail des développeurs et de l'état du rapport de gestion"?
J'ai mis beaucoup de pensée sur le sujet - nous travaillons dans une Mêlée de l'environnement, et nous avons fini par avoir des difficultés à organiser la documentation.
Ce que je suis en tête pour le moment, même si c'est assez tôt et je ne sais pas si ça va passer le test à long terme, est d'utiliser un wiki pour la documentation.
Fondamentalement, le flux de travail est la suivante :
Le wiki est organisé avec mediawiki modèles, assez bien inspiré d'extensions mediawiki doc pages, avec le nom de la fonctionnalité, la version qu'il a été introduit dans, tout ce qui peut être utile. Le modèle ajoute pictos de distinguer entre les différents types de fonctionnalités (et de leur statut).
À la fin de la journée, le wiki a le grand avantage de vous laisser ajouter la page de documentation sans être inquiété ni où, ni comment le mettre, mais, évidemment, régulièrement vous avez besoin de quelqu'un pour venir derrière et organiser le désordre.
La chose importante à garder à l'esprit, quel que soit l'outil que vous utilisez, c'est que le développeur doit écrire un peu de doc, juste après le développement a eu lieu (y compris les aspects techniques) - et pas avant, et pas des mois après...
De mon point de vue de la spécification fonctionnelle est nécessaire en fonction de comment est la tech de l'équipe avec le produit et comment senior, c'est l'équipe. Si l'équipe technique est impliqué dans la définition du produit, vous aurez certainement besoin de moins de documentation, car il y aura moins de place pour les hypothèses. Si vous avez une équipe d'ingénieurs qui sont les juniors vous avez besoin d'un plus fort de la documentation ou d'autre choses vont pas être fait de la façon dont elles ont été définies à la fin de la sprints.
Sachez également que des équipes à distance, besoin de plus de documentation sous la forme de spécifications fonctionnelles en raison de la barrière naturelle de ne pas être proche des acteurs et des produits visionnaires.
Avoir de l'avance des specs fonctionnelles est une caractéristique de l'agile. J'ai vu beaucoup de tech des équipes où les tâches où seul décrite par un article de l'utilisateur et, assez souvent, j'ai vu ces équipes parviennent pas à atteindre les rejets de réunion et de parties prenantes attentes.
Ce sujet est très vaste et il y a beaucoup d'avis, mais à mon avis cela peut être réduite du fait que les développeurs ne devraient pas avoir à deviner les exigences.
En fait, je crois que le succès et la qualité des prestations est inversement proportionnelle au nombre de suppositions et hypothèses que les développeurs ont besoin pour faire. Je pense que l'agilité augmente avec comment bien spécifié est quelque chose parce que vous aurez moins d'erreurs et de passer moins de temps à corriger ces erreurs.
Si la création d'une Fonction Spec est un contractuelles nécessité, vous devriez réfléchir très attentivement ce qui se passe en elle. Vous pourriez être refusé le paiement, si vous ne parviennent pas à livrer ce que vous promettez à votre spécification fonctionnelle.
Malheureusement, vous n'allez pas rester très agile si vous adoptez ce processus. Le client ne vraiment veux les mêmes fonctions pour la ré-écrit à la demande? Si oui, alors pourquoi est-il ré-écrit? Je suis sûr qu'il y a des fonctionnalités qui ne sont jamais utilisés.
Je ne viendrais pas d'un document de l'ancienne version. Vous avez une référence déjà, l'application elle-même. Il n'y a aucune ambiguïté dans le logiciel.
Document écrit n'est pas anti-agile. La conception de quelque chose sans hiérarchiser et d'obtenir la rétroaction de vos clients. Un aspect important de l'agile est l'adhésion du client. Si ils n'y croient pas, alors le projet sera plus difficile qu'il ne le devrait.
Comme l'a déjà souligné, Agile ne veut pas dire peu ou pas de documentation - "des logiciels fonctionnant sur une documentation exhaustive".
La façon dont je m'approche de la documentation est presque à inverser les choses et de considérer au sujet de tout partie de la documentation (y compris le code et les tests unitaires que les spécifications techniques). Donc, une histoire (ou tout autre mécanisme que vous utilisez pour répartir le travail) décrivant une entreprise/les exigences de l'utilisateur doivent être suffisamment détaillées pour être estimé par l'équipe de faire le travail; sinon, elle est incomplète et imprécise. De plus, quelque chose que je fais dans ma propre pratique, si l'histoire (ou autre) est estimé à plus d'une journée de travail pour s'adapter à l'équipe de la définition de "fini", il devrait probablement être décomposé (cette atomisation puis compiler conduit finalement assez vaste, de la documentation, mais n'assume pas autant d'inconnues que de ne pas le faire va - et peut plomb assez intéressant de réutilisation et de modèle de révélations).
Exemple à l'aide de BDD exigences de style:
Nous pouvons avoir besoin/envie d'ajouter des éléments d'INTERFACE utilisateur pour ce faire, les éléments de menu, des storyboards, des raccourcis clavier, etc. cette description (on peut avoir plusieurs variations sur le même thème de "l'enregistrement d'un fichier"). Et ainsi de suite.
Tous de ces artefacts peuvent être fixés sur la base de l'histoire/obligation, résultant en une documentation plus complète. Mais, seulement ajouter ces histoires que vous avez réellement mettre en œuvre pour votre documentation de la version web du logiciel.
Voici où les choses deviennent sorte de retourné sur leur tête et de devenir plus "Agile". Au cours du développement, et après le développement, de revoir la documentation de l'exigence et de l'ajout de modifications/modifications/améliorations apportées par l'équipe de modifications (sans avoir à passer par une documentation seule CCB). La possibilité de modifier/mettre à jour la documentation et les actifs connexes, sans passer par toutes les commissions d'examen et autres joyeusetés - ou de lancer le document "dos au mur" lorsque nous nous sommes aperçus au cours du développement que le document est incomplet, d'une certaine façon nous rend capables de s'adapter à des inconnus - donc, Agile.
Cette documentation devrait avoir une certaine forme de contrôle de version ou de l'histoire, ce qui nous permet de décrire le système que nous avons souhaité, mais aussi de décrire le système qui a été effectivement mis en œuvre; il est à noter qu'une autre réponse/suggestions à propos de la documentation faisant partie de la Définition de Fait (quelque chose que je fais aussi). (Les Wikis sont bonnes; cependant, un concept est un peu plus souhaitable, par exemple, être en mesure de rapporter un billet pour un fichier dans le coffre dans le système de contrôle de version, ce serait bien.)
De conclure. La création de documentation exhaustive à l'avant, qui ne peut être modifié pendant et/ou juste après l'effort de développement, vous empêchera d'être agile, capable de s'adapter rapidement à des inconnus. Cependant, pour faire référence au Leader Lean de Développement de Logiciels, dans lequel ils mentionnent que si les politiques ne permettent pas certaines pratiques/processus pour être utilisé correctement, alors il n'a pas d'importance si vous dites que vous êtes maigre (ou d'une mêlée, ou agile).
Une façon de vous assurer de ne pas être trop exhaustif - doute pourrait-ai utilisé cet état d'esprit sur cette réponse est d'écrire uniquement ce dont vous avez besoin pour quand vous devez (concepts similaires existent dans le développement en général). Une autre serait de faire comprendre à chacun que vous n'avez pas besoin d'essayer de figure tout jusqu'à l'avant (la plus grande transition de la Chute d'eau à l'Agile) - nous une documentation de chaque idée et il peut ou peut ne pas finir dans un communiqué. Et, enfin, de rendre caduque (et supprimer) tout ce qui ne s'applique plus...je me souviens de la documentation pour un système à la fois et, lorsque j'ai examiné le système, la moitié du document ne l'ont pas fait pour du système.
Puisque vous avez un document décrivant ce que le produit doit faire, je voudrais l'utiliser comme le retard et le début de fendage le travail en petits morceaux de la taille commandé à partir de la plus haute à la plus basse priorité. Chaque ensemble de pièces ensuite être traitées au cours d'une itération. En bref, l'utilisation de Scrum avec votre document initial que le carnet de commandes.
Je ne voudrais pas aller directement à la mise en œuvre sans faire ce travail de priorisation. Il ne nécessite pas beaucoup d'écriture, mais plus référencer les pièces que vous voulez aborder.
Je ne voudrais pas de document de la chose entière d'avance.
En outre, vous aurez des tâches directement liées à la plate-forme, votre lutte et ces tâches doivent être enregistrées et ajoutées au sprint backlog.
Aussi, vous pouvez réaliser que vous ne voulez pas mettre en œuvre toutes les exigences, après quelques itérations.
Agile a un cahier des charges sous la forme de l'agile liste des Fonctionnalités, le Produit de l'Arriéré et même aussi loin dans le sprint que les tâches du sprint Retards trop. Le fait qu'ils ne sont pas appelés documents ne les rend pas moins. Et la différence à partir de la spécification Fonctionnelle en cascade?...Agile spécification Fonctionnelle ne contient que ce qui est requis (lol) il est donc moins volumineux, n'oubliez pas votre "Travail logiciel plus complet de la documentation"?