J'accepte ma première application au niveau de l'entreprise et je veux que mon équipe modélise l'intégralité de l'application ASP.NET MVC C # avant même de taper une ligne de code.
MISE À JOUR: Il ne s'agissait pas d'une discussion philosophique sur le moment de documenter / modéliser une application. Veuillez ne fournir que des réponses pour "comment" documenter / modéliser.
La vérité est que j'ai toujours lésiné dans ce département et je n'ai jamais vraiment modélisé une application auparavant. Quelle est la manière standard de procéder? Quel type de diagrammes utiliser et à quoi ressemblerait la documentation? Des liens vers des exemples de diagrammes et de documentation sont appréciés.
Lors de la recherche, je peux trouver de nombreuses choses sur le net, mais je voulais voir s'il y avait un consensus moderne sur la façon de procéder.
Merci d'avance!
Déclaration de clôture
Je ne savais pas que c'était un sujet tellement collant. Merci à vous tous qui avez pu mettre de côté la controverse évidente et apporter des réponses utiles. C'était une discussion intéressante pour le moins :)
Un autre lien utile que j'ai découvert est le suivant: /programming/61487/do-you-use-uml-in-agile-development-practices/61519#61519
Réponses:
La vérité est: actuellement, c'est quelque chose qui manque au développement de logiciels modernes - un consensus sur la modélisation. UML semble être une sorte de plus petit diviseur commun, mais en réalité il n'y a qu'un consensus sur la notation, pas sur la sémantique. Il existe des dizaines d'opinions différentes sur la façon dont UML doit être interprété pour créer du code (vous pouvez peut-être trouver une interprétation qui convient à votre équipe).
D'un autre côté, il y a une guerre sainte entre ces gens "agiles" qui disent "ne faites pas de modèles formels, écrivez mieux du code de travail" et ces "BDUF" (gros design à l'avant) qui pensent des outils comme " MDA "(architecture pilotée par les modèles) sont la solution.
D'autres personnes ont (re) découvert la programmation basée sur les flux pour la conception de logiciels modernes comme alternative à UML. Lisez ici et ici pour en savoir plus.
la source
Le problème que je trouve généralement avec une telle approche est que ma compréhension de la solution est toujours incomplète au début. Ce n'est que par le raffinement à mesure que le travail avance que j'arrive à une solution finale.
Essayer de concevoir l'ensemble de l'application à l'avance, avant tout code (dans toutes les applications, sauf la plus simple) est généralement une folie.
Croyez-vous vraiment que vous pouvez présenter à l'avance chaque classe, chaque méthode et chaque structure de données?
En ce qui concerne les outils réels pour créer des modèles, j'en ai essayé quelques-uns et je me retrouve toujours chez Microsoft Visio.
De tous les produits que j'ai essayés, il semble le plus simple et le plus stable (mon expérience avec les outils de modélisation est qu'ils sont très bogués). Pour être juste, je fais très peu de modélisation, alors prenez cette recommandation avec un grain de sel.
EDIT: En fait, je dois dire que la plupart de ma modélisation se fait sur un bloc-notes qui se trouve sur mon bureau. Parce que je fais peu de modelage, j'essaie de le garder léger et précis. Esquisser un diagramme avec un stylo et du papier est beaucoup plus efficace pour moi que d'utiliser un logiciel.
Vous pouvez trouver des diagrammes manuscrits utiles pour former vos idées, avant de les disposer dans un logiciel de création de diagrammes.
La plupart de ce que je modélise ces jours-ci sont des diagrammes d'interaction. Encore une fois, je ne fais pas beaucoup de modélisation - là où je pense vraiment que l'exercice de dessin du modèle aide à consolider ma compréhension.
la source
Les diagrammes UML sont un bon point de départ, il existe de nombreuses façons simples de le faire avec des logiciels gratuits ou payants. Un exemple simple d'un outil pour créer un UML est quelque chose comme des dessins google docs, des packages plus avancés seraient Visio ou OmniGraffle.
EDIT: Comme mentionné par beaucoup, si vous suivez le chemin UML, cela ne signifie pas que vous devez tout modéliser entièrement, mais vous pouvez arriver à un consensus sur ce que vous modélisez et sur la précision des modèles. être. Des diagrammes UML simples peuvent souvent vous aider à disposer votre code avant de l'écrire et à résoudre certains problèmes potentiels avant qu'ils ne surviennent.
la source
Comme l'a suggéré @Brett, les diagrammes UML sont les meilleurs. Avec UML, c'est bien d'avoir des diagrammes de classe et des diagrammes de flux de travail. Ces deux couvriraient la plupart des besoins de conception.
Avec le diagramme de classes, vous pouvez modéliser les membres de chaque entité, leur niveau de sécurité, etc.
Avec le diagramme de flux de travail, vous pouvez modéliser quel appel de méthode quels appels, quel est le résultat du flux de travail et quelle serait l'exception qui pourrait éventuellement apparaître.
la source
Bien que je croie fermement à la création de dessins d'architecture de base avant d'écrire du code, je pense que faire un dessin détaillé de l'application entière est trop de travail.
Je crée généralement quelques images de plan dans Visio, en utilisant souvent les blocs de construction "organigramme" pour visualiser ce que je veux dire. L'utilisation d'UML semble souvent formalisée et invite à trop de détails. Les dessins Visio montrent les blocs de construction de base de l'application et quel type de fonctionnalité va où. Si vous utilisez le framework MVC, vous avez généralement terminé simplement en prenant un exemple de dessin sur le Web et en le copiant.
Une bonne idée est de faire quelques dessins d'autres points de vue. Au lieu de tout dessiner, je préfère souvent prendre une fonction spécifique du système, puis la visualiser comme:
Ensuite, nous commençons à coder. Lors du codage, j'utilise doxygen avec l'intégration de points pour obtenir des diagrammes de classes à la volée, l'héritage, etc. La visualisation de l'aperçu généré par doxygen est souvent un très bon moyen de voir la structure du code.
la source