你在做MDA(模型驱动的架构)的权利吗?如果是这样,什么工具使用,以及它是如何工作的?
-
22-08-2019 - |
题
模型驱动的架构的想法,创建模式表述的问题需要解决的方式,无任何(或至少是大多数)执行的技术,然后你产生实施的一个或多个特定的平台。该权利要求是工作在一个更高的水平抽象的更强大的和富有成效的。此外,模型比技术(所以你还有东西的时候你的第一语言/平台变得过时,你可以用你的下一代解决方案)。另一个关键权利是很多样板和"繁重的工作",可以产生的。一旦计算机理解的语义,你的情况,它可以帮助你。
一些权利要求的这种方法是10次更有成效,并认为它是 的方式 我们将以建设软件在10年。
然而,这只是理论。我想知道什么样的结果是当时的道路。此外,"正式"版本的MDA是从 OMG, ,似乎是非常沉重的。它在很大程度上基于UML,这可能会考虑的好坏取决于你问的是谁(我倾向于"坏").
但是,尽管这些关切问题,这是很难争辩的想法的工作在一个高水平的抽象和"教育"的计算机以理解的语义问题和解决方案。想象一下一系列ER模式简单地表达自己的真理,然后想象一下使用那些产生的一个显着部分解决方案,首先是在一定的技术,然后又在另一套技术。
所以, 我很想听听从的人是谁真的是做MDA现在("官方"或不)。什么工具你们使用?它怎么工作了吗?有多少理论上的保证你已经能够捕捉?你看到一个真正的10倍的效力,增加?
解决方案
我尝试了一次。大约大约一半通过该项目,我意识到,我的模型是无可救药地过时了从我的代码和如此复杂,以至于让他们最新的是高昂和减慢我失望。
的问题是,软件是充分的边缘的情况下。模型捕捉较大的图片是伟大的,但一旦你开始真正的代码,你不断寻找那些边缘案件,不久你会注意到,该模型是过于精细的实施,你必须做出维持模型或获得之间的选择一些编写的代码。也许样板代是启动了,但的好处迅速消失,我发现,我得到了生产力的大幅下降后的好处。该模型最终从该项目中消失。
其他提示
在缺乏应对这一问题是有点不祥......也许我会让的迪杰斯特拉字段它。
...因为计算机出现了十年 当信仰的进步和 科学的健康性和 技术几乎是无限的,它 也许是明智的记得,鉴于 其最初的目标,人类的 科学工作结束了,说了, 5个世纪以来一直是 壮观故障。
你都还记得,第一和 首要目标是发展 长生不老药的,将给予一个 喝了这长生。但由于 没有永恒的多点 贫困,科学界迅速 踏上它的第二个项目,即: 魔法石那会 使您能够尽可能多的黄金,你 需要。
...
的理想编程的追求 语言和理想的人机 接口,这将使软件 融危机似雪在阳光下有 -and仍然有 - 所有的 搜索的特点 药剂和石材。这种搜索 接收来自两个强有力的支持 侧面,首先从事实 奇迹的工作是最起码 你可以期望从电脑, 其次从金融和 从一个社会的政治支持,这 一直要求的药剂和 石在首位。
两个主要流可以是 尊贵,网罗石 和寻求的药剂。
为石材的追求是基于 假设我们的“编程 工具”太弱。一个例子是 相信当前编程 语言缺少“功能”我们需要的。 PL / I是较为壮观一个 想成为产生结石。我仍然 记得在广告 数据化,1968年,其中一个微笑 苏西迈耶宣布全彩 她已经解决了所有她的 通过切换到编程问题 PL / I。它只是太可预见的 的是,几年后,可怜的苏茜 迈耶会微笑不再。不必要 说,寻求继续并在适当的 时间下一个将要成为石头是 在阿达的形式产生(后面 铁幕感觉上称为 为PL / II)。即使是最初级 占星术对于初学者足够了 预测,阿达也不会是最后一次 石这种类型。
...
在形式的另一系列的石头 的“编程工具”生产 “软件的旗帜下 工程”,其中,随着时间的推移, 一直寻求替代知识产权 通过自律管理纪律 它现在已经接受的程度 其章程“如何,如果你编程 不能“。
我在做我自己的独立研究在模型驱动软件开发区域自1999年以来。我终于开发一个通用的建模方法,在2006年,我记ABSE(原子基于软件工程).
因此,ABSE建立在两个基本方面:
- 节目有关的问题分解
- 一切都可以表示一棵树上
一些ABSE特点:
它可以支持所有其他形式的软件工程,从传统的 文件为导向的方法达成分基础的发展,面向方面的节目,域特定建模、软件产品线路和软件厂。
它是通用的,足以应用于企业软件、嵌入、游戏、航空电子设备、因特网、任何领域中的事实。
你不需要是火箭科学家使用,如果有效。ABSE是访问"仅仅是开发凡人".有没有复杂性一样,发现在oAW/MDA/配件/GMF/等工具的链。
其meta-元模型的目的是支持100%的代码生成模型。没有轮旅行必要的。该定义/产生的混合代码是直接支持的元模型。
该模型可以同时进行操纵。工作流程,以及版本控制可以应用(工具,支持需要)。
这可能听起来像是在切实际的一面,但实际上是我离开的研究阶段和我现在是在执行阶段的一个IDE,把上述所有付诸实践。我想我会有一个基本原型准备在几个星期内(大约四月底).IDE(名AtomWeaver)正在建立通过ABSE,因此AtomWeaver将是第一个验证概念的ABSE方法。
所以,这不是MDA(值得庆幸的是!), 但至少是一个非常易于管理的方法。作为发明者的ABSE,我可以理解的是很兴奋,但我肯定模型驱动软件的发展将获得一提高在2009!
敬请期待...
模型驱动软件开发仍然是一个特殊领域,但有公布的案例研究和越来越多的其它文献中显示出的成功过手工编码的方法。
OMG的MDA是只有一个方法,其他人都显示出成功使用领域特定的语言(不使用UML建模).
关键是要产生的代码模型和更新发电机,如果它不产生什么样的你想要的-不要修改。专家工具来帮你做这个已经存在多年,但现在兴趣,这一方法已在过去五年或五年使由于微软的进入该区域并通过开源项目就像openArchitectureWare在日食的世界。
我跑几个地点: www.modeldrivensoftware.net 和 www.codegeneration.net 在这里你可以得到更多的讨论、采访、文章和工具的选择对这些主题。
我开始使用模型驱动的技术和Dsl在1997年,我越来越热衷于MDE。
我可以证明,达到10次更高的生产率(以及或许更;-)是可能在某些情况下。我已经实现很多的模型驱动软件工厂,能够产生可执行的软件非常简单的模型,从持久性层UI层、相关的其产生的技术文件。
但我不遵守MDA标准对于几个原因。MDA的承诺是表达你的软件在PIM模型,并有能力变换自动进入一个或几个技术组(接入).
但是:
- 谁需要的目标的几个技术堆在现实生活吗?谁需要的目标的一个单一和明确定义的建筑?
- 魔法的MDA代表在PIM->PSM转变,但model2model转变中的一个迭代的和渐进的方式是艰难的:
- model2model复杂得多model2text实现、调试、维护。
- 因为它很少能够产生100%的软件、细节都必须加入所得PSM模型,并保留改造后的转变。这意味着一个合并工作(3种方式,要记住所加入的细节)。及时处理模式、合并的曲线图的目的是更为复杂,合并文本(这一工作得很好).
- 你要处理一PSM模型(也就是说一个模型,看起来非常接近你的最终产生的源代码)。它是有趣的工具,供应商,因为准备使用的PSM配置文件和相关代码的发电机可以销和发货与MDA工具。
我倡导MDE战略,其中PIM是DSL讲关于你的逻辑架构(独立于任何技术堆),并产生的代码,从这个PIM一定和特定的代码生成器。
赞成:
- 你没有处理与复杂和技术管理模型。你有你的代码来代替。
- 使用DSL技术,PIM是更有效的、可持续发展、表现和易于理解的编码和文件的发电机。模式保持简单而准确。
- 它使的义务定义的建筑要求和概念,很早(由于这是你的PIM元),独立的任何技术堆。通常,它是关于确定各种类型的数据、服务、用户界面组件,与他们定义、功能和特点(性,链接到其他概念;...).
- 所产生的代码,适合你的需要,由于这是自定义。你可以把它甚至更简单的如果你产生的代码扩展一些额外的手保持框架课程。
- 你利用知识在若干正交方法:
- 模型利用的功能/商业
- 代码生成利用技术的映射决定从你的逻辑建筑组件的特定技术堆。
- PIM DSL利用一个定义你的逻辑架构
- 与逻辑架构面向PIM,有可能产生的所有技术上的代码和其他非代码文件(配置、性质,...).开发商可以专注在执行业务功能可能不能完全表达的模型,通常没有处理技术叠了。
- 合作是所有关于平的源代码文件,以及这一工作得很好。
- 你仍然可以定义几个代码发电机如果你的目标的几个技术组合。
缺点:
- 你必须要实现并保持自己的特定编码和文件的发电机
- 一般来说,采取最好的DSL的办法,你需要投入具体工具(模型确认,特定的向导、对话、菜单、进口/出口...).
- 在更新/改善DSL,你有时候需要迁移模型。这通常可以做一些一次性移民的代码,或手动(取决于影响).
- 所有这些缺点需要特定的开发团队用模型驱动的技能
这个特别的方法可以实现在一个可扩展的UML建模者与UML档案,或与特定的模型编辑(文本或图形的).
大差异之间的MDA和MDE可以概括为:
- MDA是一套通用工具和语言,提供现货md配置文件和工具,用于每个人的需要。这是完美的工具的供应商,但我怀疑是每个人都需要和情况都是不同的。
- 与MDE+具体DSL和工具,需要某些补充技术模型驱动的开发,这将维持定制软件厂(建模、建模者的扩展、发电机...),但利用到处和管理很简单-准确的可持续性模型。
有一种利益冲突之间的两种方法。一个倡导者重复使用现成的precapitalized模型驱动的组件和在其他的,你做你自己的资本有限定的Dsl和相关工具。
我们确实使用MDA和EMF的工具。它为我们节省了通过代码生成而不是手工编码大量的工时。它确实需要分析的高资质,但它是什么。因此,我们主要集中在问题本身,而工具/里面做代码生成和运行时支持生成代码的框架。 最后,我可以证实,我们确实有MDA 10倍生产率的提高。