12
votes

Comment concevoir / planifier le développement de l'application Web?

Je suis intéressé à apprendre à concevoir / planifier le développement d'applications Web, dans un scénario d'équipe de développeur multiple.

Assumer le rôle de "gestionnaire de projet / plomb":

  1. Quels "documents" sont nécessaires pour le développement de l'application Web réussie?
  2. Quels diagrammes UML sont nécessaires et dans quelle mesure?
  3. dans la phase de conception / plan, chacun - selon la classe d'utilisation, il faut être schématique?
  4. À quel point les diagrammes de classe doivent-ils être détaillés (profondeur et largeur)?

    Si vous avez des recommandations de livres / sites Web utiles, veuillez partager.


    Suivi (ajouté 11/18/09): Que utilisent les codeurs / développeurs comme guide pendant le codage, c'est-à-dire la création de classes, ainsi que leurs méthodes et leurs propriétés respectives?

    S'il n'y a pas une liste complète (encore mutable) de classes avec leurs méthodes et ses propriétés, cette ambiguïté ne peut-elle pas être intensifiée sur chaque connaissances / expérience des codeurs, ce qui entraîne des écarts de qualité de code / utilisation de la qualité / la maintenabilité?


0 commentaires

5 Réponses :


10
votes
  1. Dans tous les cas, vous devez avoir un enregistrement complet et à jour des exigences exactes. Cela inclut à la fois fonctionnel et exigences non fonctionnelles . Il peut s'agir d'un document Word, d'une feuille de calcul ou d'un système d'exigences spécialisées. Vous avez juste besoin de quelque chose qui vous permet de garder une trace de toutes les exigences et de la façon dont ils ont changé au fil du temps. Voici une bonne source d'informations et de discussions sur les exigences agiles Docs.
  2. Dans mon expérience, l'utilisation des diagrammes de cas s'est révélée importante, avec des diagrammes de composants et de déploiement étant également utiles. Les diagrammes de classe et de séquence peuvent également être utiles, mais dans la plupart des cas, je pense que ceux-ci devraient être utilisés davantage comme des directives mutables de base que les exigences de développement immuables. Les classes et les méthodes sont généralement sujettes à modification (surtout si vous utilisez TDD), et si vous voulez vraiment un diagramme, il est préférable de le mettre à jour après que le code est développé plutôt que votre code pour s'adapter aux diagrammes.
  3. Je ne pense pas que chaque classe doit être schématisée. Je pense que les diagrammes de classe modèle peuvent être utiles pour garder une trace de l'emplacement des données, puis des diagrammes de classe et de classe de visualisation sont également utiles. Mais dans la plupart de mes expériences, les exigences et les cas de test ont été la principale source de direction dans la manière dont les classes sont conçues et elles sont refactées au fur et à mesure que le système augmente et change.
  4. Dans les classes de modèle, je ne pense pas que rien de plus que les attributs ne soient généralement nécessaires. Si vous modélisez des classes de contrôleur, il est généralement sage d'inclure à la fois les principaux attributs et méthodes.

1 commentaires

Kaleb, merci pour les liens; ils étaient perspicaces. Lorsque vous avez écrit "mais dans la plupart de mes expériences, les exigences et les cas de test ..." Voulez-vous dire les cas d'utilisation à la place?



3
votes

dépend du type et de la taille de l'application Web. Si vous faites un petit site Web de commerce électronique avec un panier d'achat, vous passerez probablement plus d'efforts sur le côté conçu des choses et moins sur la fonctionnalité «App». Inversement, si vous construisez un grand site interne interne avec de nombreux écrans de saisie de données, la plupart de votre temps seront consacrés à la logique et aux règles de données de l'entreprise.

Personnellement, je ne suis pas un croyant dans des formats ou des processus spécifiques rigides. Je vous personnaliserai pour convenir au projet et au client en vue de communiquer clairement.

En supposant que les exigences soient déjà documentées, deux types de documents que je cherche toujours à produire au minimum pour les applications Web intensives de données basées sur le workflow sont les suivantes:

  1. Diagrammes de flux de travail de haut niveau indiquant le flux d'écran, les modifications de statut et les actions majeures. Je trouve cela très utile comme une première étape pour éliminer les mouvements majeurs de l'application. Les flux de travail sont généralement corrélés aux différents étuis d'utilisation.

  2. Spécifications d'écran Pour chaque écran d'entrée détaillant le format et le comportement de chaque champ. Typiquement, y compris le type de champ, la valeur par défaut, les valeurs de liste, les validations de données, les règles de visibilité et les actions qui peuvent être déclenchées, etc. Fondamentalement une petite table en s'assurant que les développeurs savent comment construire les écrans.

    J'ai aussi utilisé Maquettes Balsamiq dans le projet récent pour fouetter des écrans d'application Web et Les maquettes d'écran ont formé une partie essentielle des spécifications de projet - très rapidement à produire et transmettent de nombreuses informations sur la manière dont les écrans devraient fonctionner assez difficiles à transmettre dans un document texte.

    Enfin, Joel's La série sur les spécifications fonctionnelles est une lecture utile.


0 commentaires

0
votes

Tous les cas Utilisez des cas doivent être bien détaillés, la coopération continue du client sera toujours un plus, il pourrait toujours germer des cas imprévus .

Si vous développez des interactions entre différents serveurs qui sonderont / poussent des messages à des moments différents, vous aurez besoin de Diagrammes de séquence à coup sûr.

Évitez de surdrédéfinir, dans Les diagrammes de classe Les classes inutiles ont tendance aux champignons, coupez-les, utilisez plus de méthodes, gardez une trace de l'environnement chaque classe finira vraiment à fonctionner (certains seront exécutés du côté serveur, Quelque côté client - JavaScript - Certains seront des travaux planifiés et exécutés sur le serveur réel, certains guidifient CGI (ou module) encapsulés par Web WebServer et exécutent à la demande, certains seront interfaces avec la base de données.

Définissez les limites, faites-les claire. Le côté du serveur / côté client / de la base de données est des bêtes différentes et peut prendre différents temps et personnes.


0 commentaires

2
votes

Gardez-le aussi simple que possible.

Un document spécifiant les exigences de fonctionnalité principale est la première étape.

Personnellement parlant, lorsque les applications Web sont presque toujours basées sur la base de données, je commencez à modéliser la base de données basée sur les exigences de fonctionnalité. Les entités de la carte de diagramme ERM généralement 1-1 avec des classes dans le diagramme UML et présentent déjà les relations de base.

En supposant une architecture MVC et un code bien documenté, les classes de modèle seront auto-documentant, car elles évoluent (par exemple, Oxygen phpdocumenter).

Je trouve quelque chose de simple comme un wiki fonctionne mieux pour écrire des documents plutôt que des documents formels pouvant prendre plus de temps à écrire que le code respectif, en particulier dans un environnement agile.


0 commentaires

1
votes
  1. Les exigences sont un ensemble de documents, qui peuvent inclure des graphiques, des documents de mots, des messages électroniques et d'autres moyens d'enregistrer des choses. Une liste de ce qui se trouve dans l'environnement de développement (IDE, contrôle des sources, suivi des bogues), le style de codage et les directives est un autre ensemble de documents pouvant être utiles dans la réussite d'une équipe de développement des applications. Il existe un plan de projet qui constitue un grand diagramme de Gantt et des notes de publication qui constituent d'autres documents que nous créons.
  2. Je n'ai pas vu de nombreux diagrammes UML autres que ce que le gang de quatre a sur leur site pour expliquer certains modèles de conception.
  3. Nous avons un arriéré d'articles à compléter et des estimations de la complication de chaque histoire. Cela peut être différent de l'approche que vous utilisez. Avec notre approche agile, il peut y avoir autant de conception / plan que votre situation.
  4. Nous avons rarement des diagrammes de classe, bien que Visual Studio ait un navigateur d'objet qui est pratique pour voir ce qui est déjà construit.

    où je travaille, nous avons tendance à travailler par paires pour créer des objets de domaine et leurs membres, méthodes et propriétés. Les classes sont créées selon les besoins pour des histoires ou si nous nettoyons ou refactons un ensemble de classes.

    Il n'y a pas de liste complète de classes, mais il existe des modèles de conception utilisés comme MVP et la foi que, étant donné qu'une paire crée quelque chose, le code s'intégrera dans le style et les directives actuelles. À mesure que les exigences évoluent, il y aura des modifications aux classes assez régulièrement, mais cela semble être un moyen naturel de faire des choses pour moi.

    Contexte de l'environnement où je suis juste au cas où quelqu'un voudrait savoir:

    Où je travaille, nous avons 5 développeurs, une dirigeante QA, un analyste d'entreprise, une équipe d'équipe, un architecte et un chef de projet comme principales personnes du projet pour le moment. Nous utilisons Scrum, Paire de programmation et certaines idées TDD dans notre travail.

    Nous utilisons Visual Studio 2008, Subversion, HP Quality Center, ASP.NET 3.5, SITECORE 6.0 et MS-SQL Server 2005.


3 commentaires

JB, vous avez écrit que vous avez un "arriéré", que je suppose que vous obtiendrez buêle dans les sprints; Chaque sprint étant composé de «fonctionnalités» prioritaires (cas d'utilisation). Chacune de ces "fonctionnalités" représente une ou plusieurs classes. Dans votre expérience, avez-vous rencontré une situation où travailler avec un développeur junior / moins expérimenté conduit à des problèmes dans la création des classes des «fonctionnalités»? Par exemple, si vous et votre partenaire reçoivent une fonctionnalité au code, y avait-elle une situation où il / elle n'a pas eu de classes à créer ou où certaines logiques étaient la plus appropriées?


Avec presque tout le monde, j'ai travaillé, il y a eu ces cas encore et encore. Le fait qu'il y ait de nombreuses façons de faire quelque chose a tendance à conduire naturellement à des différences d'opinion sur la façon de faire quelque chose. Discuter des différences et venir à un concensus fait partie du processus global. Peut-être que j'ai de la chance où je travaille en termes de personnes en train d'être des professionnels humbles qui s'entendent la plupart du temps. Dans une sprint donnée, il peut y avoir plusieurs fois de fois que quelqu'un ne sait pas où mettre du code ou qu'il peut y avoir des idées différentes quant à la façon de faire quelque chose.


JB, merci d'avoir partagé vos expériences. Je ne veux pas accomplir le point, mais avez-vous trouvé que les cas susmentionnés, en raison de la différence d'opinion ou de manque de connaissances, ont conduit à des problèmes de qualité de la qualité et / ou de difficulté à rencontrer des dates de brûlage de sprint?