Quelle est la norme de modélisation des applications modernes avant le développement?

9

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

Chev
la source
6
Vous voulez faire de la cascade?
Etienne de Martel
1
@Etienne, cascade? Si c'est une sorte de référence sarcastique, je ne comprends pas. Des critiques / suggestions constructives sont appréciées. Que diriez-vous au lieu de voter pour un commentaire inutile, vous ajoutez vos propres commentaires pour m'aider à comprendre le problème.
6
"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." Je déteste dire cela, mais vous êtes presque commettre vous - même à l' échec avant même de commencer. L'étendue complète de l'utilisabilité, les exigences des utilisateurs et la maintenabilité sont totalement invisibles jusqu'à ce que vous commenciez réellement à écrire du code; Si vous insistez sur un gros design à l'avance, vous allez passer beaucoup plus de temps à mettre à jour vos designs qu'à rédiger votre application. Les conceptions de haut niveau sont correctes , mais documenter l'ensemble de l'application? Absolument pas.
Juliette
3
@Chevex: Waterfall est une méthode de développement qui implique beaucoup de conception initiale. Il semble tout à fait accepté dans la communauté du développement logiciel que cette méthode de développement fonctionne au mieux mal.
quentin-star
1
touche @Chevex, touche ... s'éloigne tranquillement
mcgrailm

Réponses:

6

un consensus moderne actuel

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.

Doc Brown
la source
Super Scott! C'est de loin la meilleure réponse à cette question à ce jour. Un bel aperçu succinct de la modélisation dans l'industrie et où elle en est. Merci doc! +1.21 jiggawatts!
7

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

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?

Je veux juste connaître quelques bonnes solutions de modélisation.

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.

Quel type de diagrammes utiliser et à quoi ressemblerait la documentation?

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.

quentin-starin
la source
Nous pouvons ajuster notre modélisation au fur et à mesure. Ce n'est pas le problème de toute façon, je veux juste connaître de bonnes solutions de modélisation.
Vous avez donc l'intention d'essayer de garder vos modèles et votre code synchronisés. Cela ne fonctionne pas pour la plupart. Ils divergeront inévitablement et les écarts causeront des problèmes. De plus, vous passerez beaucoup de temps à essayer
quentin-star
Veuillez lire la question mise à jour.
@Chevex: J'ai ajouté tout ce que je pouvais concernant votre question modifiée.
quentin-star
@qes, je voulais dire que vous répondez à une question que je n'avais pas l'intention de poser. Voir la section "MISE À JOUR" de la question.
3

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.

Brett
la source
J'ai entendu parler d'UML. Avez-vous des recommandations pour un endroit pour commencer? De bons outils que vous recommandez?
@Chevex - vient de faire une recherche rapide sur Google, et a trouvé ceci: agilemodeling.com/artifacts/classDiagram.htm semble être un bon point de départ
Brett
@qes - En fonction du temps / de l'intérêt / de l'investissement qu'il a à suivre un chemin comme celui-ci, cela pourrait être à la fois une bonne expérience d'apprentissage et peut-être l'aider à comprendre certaines parties de son code avant de l'écrire (même si son juste un simple UML) ... Mais je suis d'accord, il devrait probablement avoir suffisamment de temps et d'intérêt personnel pour le faire.
Brett
@qes, veuillez lire la question mise à jour.
2
@Chevex - Vous voudrez probablement commencer par faire quelques lectures sur les types de diagrammes et ce qu'ils sont censés communiquer. UML est un langage de modélisation qui peut être très descriptif, mais possède également de nombreuses nuances. UML in a Nutshell m'a beaucoup aidé ( oreilly.com/catalog/9781565924482 ). Cela étant dit, vous pouvez souvent vous en tirer avec des versions simplifiées de l'ensemble de diagrammes complet. Tant que les personnes créant les diagrammes et les personnes qui lisent les diagrammes s'entendent sur ce qu'ils veulent dire.
2

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.

SaravananArumugam
la source
Merci pour cette réponse. Recommander des outils utiles? Visual Studio prend-il en charge UML d'une manière ou d'une autre?
Visual studio fournit de l'aide pour faire un diagramme de classe. Ce n'est pas bon pour le flux de travail. Les outils rationnels sont les meilleurs pour une telle conception / modélisation UML. Je suis familier avec le modélisateur logiciel rationnel. J'ai entendu dire que Rational rose serait un autre excellent outil.
2

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:

  • Diagramme de cas d'utilisation (UML)
  • Organigramme ou UML Swim-lane (très haut niveau)
  • Présentation des composants architecturaux.

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.

Anders Abel
la source