Quels sont les avantages et les risques de passer à une approche Model Driven Architecture?

StackOverflow https://stackoverflow.com/questions/2702206

  •  01-10-2019
  •  | 
  •  

Question

Je travaille pour une entreprise avec environ 350 employés et nous sommes dans le processus de croissance. Notre code de base n'est pas structuré très bien et nous cherchons à la fois à la façon d'améliorer immédiatement (en organisant des objets dans les espaces de noms, la séparation des préoccupations, etc.) et de passer à une approche d'architecture orientée modèle, où nous modélisons et tout design d'abord avec uml puis générer un code à partir de ce modèle. Nous avons cherché beaucoup à Sparx Systems Enterprise Architect (EA) (qui est capable UML 2.0) et nous envisageons également les outils VS 2010. Je sais qu'il ya d'autres outils là-bas (Rational XDE étant l'un) mais je ne vraiment pas pense que nous pouvons dépenser 1500 $ + par licence à ce stade.

Je ne suis pas à la recherche de réponses sur l'outil est mieux qu'un autre, mais plus pour des expériences en mouvement d'un environnement de codage de cow-boy (qui est, peu de planification et de conception, juste sauter et commencer à coder) à une architecture orientée modèle. En regardant en arrière a été utile à votre organisation? Quels sont les points de la douleur? Quels sont les risques? Quels sont les avantages?

Était-ce utile?

La solution

  

Notre code de base n'est pas structuré   très bien et nous sommes à la recherche à la fois à   comment améliorer immédiatement [...]   et passer à un modèle axé   approche d'architecture, où nous modélisons   et tout d'abord avec la conception uml,   puis générer un code à partir de ce modèle.

D'abord, il est grand que vous et votre realize de l'entreprise qui il y a quelques lacunes dans votre processus de développement de logiciels et qu'il ya un volonté d'améliorer .

Il semble cependant qu'il y ait un peu de travail devant vous, et beaucoup de choses à améliorer dans des directions différentes. Mon premier conseil serait de ne pas essayer de changer tout à la fois. Les gens sont généralement réticents aux changements, et tout le monde a besoin d'un certain temps pour digérer de nouveaux changements. Il est également très important de créer une compréhension commune sur ce qui doit être mis en place. Cette compréhension commune ne sera pas créé en un jour. Un tel changement nécessite un engagement à moyen ou à long terme .

Alors, en ce qui concerne MDA, il est important de noter que cela nécessite un peu discipline . En fonction de votre équipe, la première partie pourrait bien travailler sur cette première façon de préparer l'étape suivante, qui serait d'introduire MDA. Je dis que parce que vous dites que vous avez un processus de « cow-boy », ce qui signifie que les gens sont probablement utilisés pour faire ce qu'ils veulent -. Il est un non-go pour MDA

Ensuite vient l'introduction de MDA lui-même. Il y a différentes façons de le faire MDA (et je ne développerai pas ici au sujet thsat), mais la façon toujours prédominante de le faire, est le soi-disant ingénierie aller-retour . Le plus gros problème est alors de garder le modèle et la source synchronisée.

(Mon point de vue est que MDA conduit à un retour sur investissement positif que si le modèle peut être réutilisé pour plusieurs projets. Cela signifie que vous devez avoir identifié les choses que vous faites encore et encore, et avoir une vision claire suffisante sur le problème pour pouvoir créer un modèle suffisamment complet et les transformations que vous pouvez réutiliser dans projet, je ne crois pas que MDA fonctionne si chaque projet est complètement différent;. le temps passé pour obtenir le bon modèle et la transformation, etc. seront être plus grand que de travailler uniquement avec le code et la documentation.)

Une autre appraoch est de ne pas faire MDA complètement - vous ne génèrent pas de code du modèle - mais d'augmenter la prise de conscience des gens sur la modélisation et problème de conception, par exemple avec UML. De cette façon, vous ne serez pas face à problème aller-retour, mais d'améliorer encore la maturité de votre processus de développement de logiciels.

Autres conseils

Nous l'avons fait une fois avec un système de planification 3 logistique de NMC, et il a bien fonctionné. Cependant, nous avons réalisé très tôt que UML ne serait pas suffisante. Il était tout simplement trop obtus pour saisir le niveau de détail nécessaire à la spécification. La meilleure façon était en fait à une utilisation pseudo-code (tout le monde utilisait toute façon pour communiquer des idées)! C'est ainsi que la réalisation a été fait. En utilisant UML était comme un pas de clarté.

Comme les idées ont commencé à réduire à une solution d'un système de contrôle de version a été utilisée afin de suivre les changements de pseudo-code (et les cas d'utilisation, etc.). Donc, tout le monde dans le groupe a suivi les changements. Bit par bit parties ont été traduites en code réel aux côtés de la documentation et des références à des motivations et des discussions.

Au bout du compte transision du modèle au code a été très lisse. La partie vraiment agréable était, à mon humble avis, les vcs d'utilisation qui vous a permis de voir même le pseudo-code d'origine sans environnement de commutation.

J'ai écrit mon mémoire de licence sur les modèles du logiciel Driven Development et je veux juste vous avertir qu'il est vraiment important d'utiliser une bonne approche pour faire ce que votre entreprise a l'intention. Il y a beaucoup de choses qui pourraient mal tourner, comme par exemple l'édition de code généré directement, être en mesure de générer une seule fois, becaause le code modifié manuellement sera effacé après génération, vous devez faire une analyse de domaine pour créer un modèle de méta et d'utiliser un bon cadre de génération de code ... S'il vous plaît ne me comprenez pas mal, je pense que MDSD est grande, mais juste prendre soin comment vous allez le faire. L'original MDA et des livres à ce sujet suggèrent vraiment mauvais appproaches, qui sont trop coûteux et trop fragile. Je vous suggère de regarder sur le site Web de voelter.de, où vous pouvez trouver des articles, des présentations et des podcasts de Markus Voelter, qui est un consultant très expérimenté dans ce domaine.

Pour moi, l'aspect clé est d'être parfois pragmatiques. La modélisation ne doit pas être une activité booléenne (nous ne soit le modèle ou non modèle). Nous devrions être en mesure d'adapter le niveau de modélisation / précision aux caractéristiques du projet (voir par exemple ce que les gens qui travaillent sur la modélisation agile faire) et la société. Trop peu ou trop de modélisation peut être problématique (avec trop peu, vous ne pouvez pas voir les avantages, trop peut être overkilling fo votre entreprise, surtout si vous commencez la transition ou vous ne disposez pas des outils nécessaires)

Dans mon portail blog / ( http://modeling-languages.com ), nous discutons souvent de la avantages de la modélisation ou comment la modélisation doivent être utilisés. Vous pouvez le trouver intéressant

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top