atitit.提升开发效率---mda 软件开发方式的革命--(2)

1. 一个完整的MDA规范包含: 1

2. 一个完整的MDA应用程序包含: 1

3. MDA能够带来的最大的三个好处是什么? 2

4. 三大MDA工具 2

5. 代码补充 3

6. Mda的问题 3

7. EMF与MDA 4

8. MDA跟代码自动生成的区别 4

9. openMDX-开源MDA平台 5

10. openMDX 的开发过程 5

11. MDA的两种实现 5

12. 参考 6

1.  一个完整的MDA规范包含:

  1、一个权威的基于UML的平台无关模型PIM;
  2、一个或者多个与特定平台相关的模型PSM;
  3、接口定义集合- 每个集合描述了基础模型再不同中间件平台上的实现。

2.   一个完整的MDA应用程序包含:

  1、一个权威的PIM;
  2、一个或者多个PSM;
  3、一个或者多个完整的实现- 开发人员决定支持的所有平台上的应用程序实现。

将PIM映射到某个特定平台的PSM的工作是由工具自动完成的,当我们需要支持新的技术的时候,这就简化了我们的工作。

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

3. MDA能够带来的最大的三个好处是什么?

  使用MDA方式能够带来很多的好处,最重要的三个是:基于MDA的架构总是能够随时应付昨天的、今天的和未来的下一 个主流技术。MDA将会使得应用程序和工具能够跨越中间件的边界,从而变得更容易集成。OMG Domain Task Forces小组负责在MDA中定义领域相关的工具,它将会提供更广阔的互操作性。因为这些工具将会在特定领域的首选平台上可以使用,而且如果需要,也可 以在多种平台上被使用。

4. 三大MDA工具

ArcStyler简介

ArcStyler是德国Interactive Objects Software GmbH公司开发的MDA开发软件,它遵循OMG的MDA 规范,纯JAVA 开发,跨平台。是当前最流行的三大MDA工具之一,支持J2EE和.NET平台,支持桥接器的动态加载。

4.3        建立PIM模型

如同使用一些通用的UML工具一样,可以在UML工具区建立系统的PIM模型,包括以下工作:

Ø         创建一个名为iBank的包;

Ø         在iBank包中创建一个名为iBankDiagram的类图;

Ø         在iBankDiagram图中创建Account,Bank,Transfer三个组件;

Ø         为上面三个组件添加相应的方法和属性;

完成之后得到的模型如下图:

建立PSM模型

其实在ArcStyler中并没有区分PIM和PSM,因为ArcStyler并没有提供从PIM到PSM的自动转换工具,它是选择了通过标注的方式来体现PSM的思想。

为了清晰起见,笔者将建模环节区分为建立PIM和建立PSM两个部分,那么建立PSM其实只是给上面的PIM作出一些技术相关的标注,包括以下内容:

Ø         将Bank和Account组件标注为Entity Bean;

Ø         将Bank和Account组件的永久存储管理模式标注为容器管理;

Ø         将Transfer组件标注为Session Bean;

5. 代码补充

代码生成之后,我们需要进行代码的补充工作,这是使用ArcStyler的唯一的代码工作,补充的代码主要是Bean方法实现以及测试类中的方法,需要进行代码补充的源代码文件如下:

Ø         AccountBean.java

Ø         TransferBean.java

Ø         BankBean.java

Ø         iBankTestClient.java

补充的内容参看说明文档Tutorial.pdf第47页Component Code Customization这一节。

ArcStyler可以自动生成Jbuilder工程,当我们进行代码的补充工作的时候,可以直接打开生成的JBuilder工程,其中包含所有生成的源代码,也可以直接使用其他代码编辑工具修改。注意:代码的添加和修改都在安全区中,进行反复的代码生成工作并不会被覆盖。

6. Mda的问题

由于目前流行的建模语言(例如UML)在语义方面的功能还很弱,所以目前的MDA工具几乎只支持结构型的系统,但是我相信随着建模语言的进一步强化,MDA技术会越来越丰富,工具也将越来越好。

7.  EMF与MDA

EMF这个名字,EMF是Eclipse Modeling Framework的缩写,它是Eclipse的一个重要的子项目,如果翻译成中文就是“Eclipse建模框架”。其实只从这个名字还真是难以确定它的作用是什么,我认为要完全掌握EMF应该对模型驱动开发(MDA)有一定的了解,而EMF可以看作是Eclipse上的MDA一个实现(代码生成是MDA 的重要组成部分之一),它能够生成在Eclipse上执行的代码。

MDA讲究的是把模型和应用系统实现分开,模型是最重要的部分,可以说有了清楚的模型,就完成了一半的工作

用EMF构造一个应用的步骤很简单:1、构造模型,2、生成代码,前者可以通过UML类图、Java接口、 XML Schema等多种方式定义,后者可以选择只生成模型部分的代码,也可以同时生成编辑器部分的代码,对这个编辑器做一些定制就可以得到符合需求的应用程序。

8.  MDA跟代码自动生成的区别

1) MDA不是代码自动生成的规范,相反它的目标是尽量减少自动生成的代码。

2) MDA不是代替RUP,XP等软件工程的传统开发过程,而是对这些开发过程一个有益的补充,特别是直接将分析设计阶段所产生的模型应用于编写程序,并最终影响部署后的系统行为方式。

3) 你所说的这种MDA实现还没有达到开发企业级应用的阶段,换句话说,根本不实际。其实,现在不仅仅有商业化的实现,也有很优秀的开源MDA平台,例如,openMDX

9. openMDX-开源MDA平台

基于openMDX的应用可以很轻松的移植到多个不同平台,采用了MOF,JMI,XRI,XML等标准和协议,不用过多考虑会被绑定于某一平台。

快速开发、部署和弹性配置

建立了成熟模型之后,开发测试的工作量降低到了难以想象的地步,举例来说,openCRX总共两百天的开发过程中,建模占了100天,界面设计定制用了70天,10天用于实现,20天用于测试部署。

极强的系统互操作性

openMDX平台上发布的功能模块,对于数据的导入导出都是基于Schema-XML,而且可以方便的发布为Webservice,跟其他异种系统的交互达到了轻松自如的地步。

缺点

penMDX也没有提供一个IDE来支持整个开发测试和配置应用。

10. openMDX 的开发过程

不象大多数商业工具,openMDX 没有实现PIM到PSM映射的方法。 而是提供了一个普通的,分布式的对象引擎(作为PIM 平台)。商业逻辑(模型的导出属性和方法)是作为插件添加进去的

自动生成代码和手工编写的代码是分放在两个不同的目录中,而对于导出属性和操作则是通过delegate(委托)的方式去执行手工编写代码的

11.  MDA的两种实现

I)使用模型驱动应用开发过程;II)直接利用模型驱动运行时应用系统的行为方式。前一种实现,大部分支持从UML模型转换的代码生成工具都可以归入此类,例如AndroMDA,而后一种实现就比较少,例如openMDX。

这两种方式没有优劣之分,只是取决于你的应用目的而有不同的侧重。

12. 参考

ArcStyler实战-网上银行系统 - MDA之路 - BlogJava.htm

eclipse EMF介绍系列(EMF与MDA) - Linyda工作室 - 爱好者博墅 《电脑爱好者》杂志官方网站 - 计算机世界旗下网站! - powered by X-Space.txt

openMDX-开源MDA平台(1).htm

atitit.提升开发效率---mda 软件开发方式的革命--(2)相关推荐

  1. atitit.提升开发效率---mda 软件开发方式的革命

    atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MD ...

  2. atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較...

    atitit.提升开发效率---使用server控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比較 例如以下列举了server控件生命周期所要经历的11个阶段. (1)初始 ...

  3. Atitit外包优缺点 提升开发效率 外包模式 1.一般来说外包优点 1.1.更加方便快捷 时间成本降低了 1.2.会导致 经济成本高,,时间成本降低了, 2.缺点 2.1.成本高 2.2.

    Atitit外包优缺点  提升开发效率 外包模式 一般来说外包优点 更加方便快捷  时间成本降低了 会导致 经济成本高,,时间成本降低了, 缺点 成本高 缺少控制 但是少部分,比如理发,经济时间成本都 ...

  4. order by 影响效率么_提升开发效率N倍的20+命令行神器

    图 by:石头@青海湖 关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader.以每篇文章都让人有收获为目的,欢迎关注,交流和指导! 背景 本文 ...

  5. 猿创征文|后端开发工程师提升开发效率神器推荐

    简介 对于现在的后端工程师来说,并不仅仅局限于编写代码和解决bug,这两个要素了.如果你目前还只是忙碌的写代码和改bug的话,那要深度思考一下,我为什么日复一日的写这些重复代码?这样有何意义?或者说, ...

  6. 对提升开发效率的总结

    做软件开发好几年了,总结下开发经验. 如何提升开发效率: 1.扎实的技术功底 2.强大的学习理解能力 3.丰富的处理经验 4.业务与需求的理解度 扎实的技术功底自然是作为一名优秀的开发人员必不可少的, ...

  7. idea从零到精通08之IDEA常用插件、提升开发效率

    文章目录 作者简介 引言 导航 热门专栏推荐 概述 一.插件安装方式 二.在Idea中无法直接安装插件 三.常用插件 1.ECTranslation 2.Grep Console 3.CodeGlan ...

  8. 提升开发效率N倍的20+命令行神器!(附 demo)

    点击上方蓝色字体,关注我 -- 一个在阿里云打工的清华学渣! 图 by:石头@青海湖 关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader.以 ...

  9. Python学习笔记:Day13 提升开发效率

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  10. 深度解读Microsoft Build 2020:提升开发效率,优化开发环境

    Microsoft Build 2020 在众多新产品与技术发布中圆满落幕 但身为开发技术人深知 技术世界的更迭.求索却从未止步 唯有不断提升自身技能栈创新 方能从技术浮沉中获得更多养分 让技术予力世 ...

最新文章

  1. 2022-2028年中国钛合金行业深度调研及投资前景预测报告
  2. 【Mysql】Mysql root 权限下无法创建数据库
  3. Java EE 课程作业(second)-- 企业级应用和互联网应用的区别
  4. Input类,Vector3实例
  5. MATLAB 人脸定位
  6. c语言获取五子棋盘光标位置,跪求C语言五子棋悔棋部分实现
  7. qrcode方法生成的二维码安卓手机长按不识别
  8. 【jzoj】2018.2.3NOIP普及组——D组模拟赛
  9. Win32ASM学习[9]: 标志寄存器
  10. 牛客15187 分元宵 (快速幂)
  11. 棋盘游戏(信息学奥赛一本通-T1451)
  12. 数组翻转_LeetCode刷题实战151:翻转字符串里的单词
  13. Kubernetes学习笔记之kube-proxy service实现原理
  14. Android 系统(53)---关于触摸屏快速点击事件误识别为滑动事件
  15. 基于JAVA+SpringMVC+Mybatis+MYSQL的在线商城系统
  16. (转)功能测试(黑盒测试)常用的策略和方法
  17. define和typedef区别
  18. 振动噪声测试分析软件,DASP-V11工程版 振动噪声应变冲击
  19. Uniwebview2插件常见问题以及刘海屏屏幕适配,屏幕旋转的解决方案
  20. 悬赏任务发布平台系统源码|威客任务网站源码PHP开源版

热门文章

  1. Linux的相关资源帖
  2. Windows Server 2012 配置 Remote Desktop Service VDI
  3. 【重新发布,代码开源】FPGA设计千兆以太网MAC(1)——通过MDIO接口配置与检测PHY芯片...
  4. 深入浅出JavaScript之this
  5. 读Java面向对象编程(孙卫琴)
  6. 数组 , List互转
  7. nginx针对请求的uri来代理
  8. javascript配置ckfinder的路径
  9. 好程序员Web前端分享一些小知识!
  10. 400. Nth Digit