模型驱动的软件开发模式研究.pdf
第 l 8卷第2期 2 0 5 年 2月 计 算 机 技 术 与 发 展(、(1 P l 几 ER TE(1I N(wX Y AN 3 r)E VEL()PN I ENT VE,1 1 8 Nc)2 l 】2 0 )8 模型驱动的软件开发模式研 究 薛振伟,吴志杰(中国工程物理研 究院 计算机应用研 究所,四川 绵阳 6 2 1 9 0 0)摘要:3 c 中详细论述 了模型驱动的软件开发模式。阐述 了以代码为中心的传统软件开发模式的缺点,并通过对模型驱 动架构(MD A)涔系结构的讨论 分析出模型各个层次描述语言的要求 分别讨论了 M DA软件开发生命周期、M D A软件 开发参与者及活动的变更和 MD A开发工具的更新,并对 M D A软件开发模式进行 了评价。在模型驱动的软件开发模式 下,软件开发生命周期是由软件系统建模行为驱动的 其开发过程围绕模型的创建和变换开展 其最终 目的就是要通过架 构性的分离来实现软件开发的轻便性、互操作性和可重用性,关键词:模型驱动架构;对象管理组织;计算无关模型;平台无关模型;平台相关模型 中圈分类号:T P 3 1 1 5 2 文献标识码:A 文章编号:1 6 7 3 6 2 9 X(2 0 0 8)0 2 0 0 2 4 一o 3 S t u d y o n M o d e l Dr i v e n Pa t t e r n o f S o f t wa r e De v e l o p me n t X U E Z h e n we i WU Z h i j i e (I n s t i t u t e o f(3 o n ll p u r e r A p p l i c a t i O n,C h i n e s e A c a d e my o f E n g i n e e r i n g P h y s i c s Mi a n y a n g 6 2 1 9 0 0,C h i n a)Ab s t r l t d:Th ef t wa r e d e v e loln t p a t t e r n d r i v e n b y n d e l h a s b e e n d i u s s e d in d e t a i l i n t h i s p a p e r Th e s h o r t c o n i n g s o f t r a d i t i o n a l so,wa r e d e v e lo p i n g pat t e r n o ,n t r a 1 o n o c)(i we r e p r c s c n t e d f i r s t ly Th e r e q u i r e r n e n t s o f l a n g u a g e r e v e r y mo d e l le v e l we r e a n a l y e d v i a t h e d i s c u s s;o n a b o u t mo d e l d r i v q n a r c h i t e c t u r e S u k x l u e n t l y t h e s o f t wa r e d e v e lo pin g l i f e c y c l e l o n MDA t h e t a r t i c ip a n t s a n d a e t iv i t i e si nt h eMDA p r o c e s s,a n dt h e u p d a t eo f M DAd e v e lo p i n gt o o l sv c e r diu s s e d s e p a r a t e l y Me a n whil e,t h e s o f t wa r e d e v e lop i n gpat t e r n b a 3 e d o ff MDA e v a h mt e d Un d e r t h e s o f t wa r e d e v elo p me n t p a t t e r n d r i v e n b y mo d e l。mo d e l i ng b e h a v i o r dr o v ef t wa r e d e v e l o p me nt l i f e c y e l e Mo d e!b u il d i ng a n d n K x t e l t r ans l a t i n g s u r r o u n d e d t h e d e v e lo p me n t p r o c,s The d e s t in,a t k n o f MDA wa s t O a c hieve t h e pxt a b i l i t y,i n t e r a c t iv i t y a n d r e u s a b i l i t y o f s o f tw are d eve l o ping t h r o u g h s e p a r a t in g t h e a r c h i t e c t u r e i n t o ma n y l a y e r s Ke y w0 r :MDA;OMG;CI M;Pl M;PS M O 引 言 模型 驱 动架构(Mo d e l D r i v e n Ar c h i t e c t u r e,仍 A)是 由 国 际对 象 管理 组 织(O b j e c t Ma n a g e m e n t G r o u p,O MG)于 2 0 0 1年 7月正式 发布 的。它是 一种 基 于 U ML以及相关工业标准的框架,将软件系统建立在各 种模型的基础上,通过模 型的变换来驱动系统的开发。在传统的软件开发模式当中,大部分开发过程都是以 代码为中心的,这种开发模式 随着软件 规模 和复杂度 的不断增加 以及频繁变更 的出现而逐渐暴徭出越来越 多的缺点和问题。相比而言,以模型为中心的基 于 MD A的软件开发模式在众多大型软件项 目中越来越 展现出卓越 的问题解决能力和强大的生命 力。收稿 日期:2 0 1)7 0 5 2 7 基金项 目:国家基金 资助项 i(2 0 0 5 0 6 5 6)作者简 介:薛振伟(1 9 7 8一),男,河南濮 阳人,硕:,:1 程 师,研究方 向为软件体系结构、墟用软件)F 发、软件测试;志杰,研究员,研究 方向为软件工褪。1 以代码为中心传统软件开发模式 的缺点 目前许多开发过程都 是传统 的 以代码 为中心,即 整个项 目的开发 以代码生产为主要任务,“编 写软件仍 是劳动力 密集型 的活儿”lL j。这种 以代码 为中心的开 发模 式主要存在 以下三方面的缺点:第一,混淆 了解决问题的内在本质 和外在手段,在 分析问题本身的同时过多地去考虑运行环境与代码实 现等因素 而放松 丁对问题根本解决方法 的研究;第二,大型应用系统 往往涉及诸 多领 域的专业 知 识,而软件设计人 员往往无法在 短期 内涉猎 所有 的专 业技术领域,需要相关的领域专家参与需求分析工作。然而领域专家却只能用自己的专业术语对复杂的需求 加以描述,在 与软件开 发人员的沟通 过程 中存 在较 多 的障碍,影 响软件 人员对问题域本 质的把握。第三,软件技术 的发展 日新月异 开 发语 言、开发 工具和开发平 台一直在变化当中。如果还沿用 以代码 中心的系统开发模式,既无法保障已经投入的项 目 投资,无法最大限度地复用原有系统的 资源,又无法应 维普资讯 http:/ 第 2期 薛振伟等:模型驱动的软件开 发模式研究 2 5 对变化多端的诸 多环境 因素。再加上 系统 的软件需求 也会随着用户理解的不断深入而发生许 多变化。即使 采用原型法,也不能根本 有效地解 决随时 都可 能发生 的变更问题。2 MD A体系结构 在 MD A中,模 型(Mo d e 1)不再 仅 仅 是描 绘 系统,辅助 沟通 的工具,而是软件 开发 的核心和 主干。图 1 描绘了 MD A的模型架构。从 图 1 可见,在 MD A中,一个系统从 不 同的视 角 可以被不 同的模型所描述。这些模型分为 3 个层 次:(1)计 算 无 关 模 型(C o mp u t a t i o n a l I n d e p e n d e n t Mo d e l,C I M):仅仅表 述商务 知识 和商务 过程,不涉及 如何用软件来实现商务过程;(2)平 台无 关 模 型(P l a t f o r m I n d e p e n d e n t Mo d e l,P I M):表述如何用软件系统来实现商务过程,去除了 与基础功能无关的技术细节;(3)平台相关模型(P l a t f o rm S p e c i f i c Mo d e l,P S M):表述特定技术对软件系统功能的具体实现。模型之间 通过模型映射机制相互映射,从而保证了模型的可追 溯性L 引。图 l MI)人 的 模 型 架 构 其中,C I M 就是通 常意 义上 的“业 务模 型”,它 描 述系统的业务知识和业 务过程,不涉及软件实现,因此 用于构造 C I M的语言就需要包含用来规定业务过程、参与者、相关部门、过程问依赖等方面的术语。而P 1 M 主要用来表述如何用软件系统来实现业务过程,在模 型中去除 了与基础 功能无关 的技术 细节,因此 用于构 造 P I M 的语言就需要具有较高的抽象,且 能够与 具体 的技术细节脱离,同时也必须能够对系统的静态结构 和动态行 为进行精确 的建模。最后 P s M 是用来 表述 某种特定技术对软件系统功能的具体实现,这是最贴 近代码级的模型,要求构造 P S M的语言必须足够精 确,且 具备一定的扩展性,能够满足与各种实现技术紧 密挂钩的要求。3 基于 MDA的软件开发模式 3 1 MD A软件开发生命周期 基于 MD A的软件开发生命周期是由软件系统的 建模行为驱动的,整个开发过程都是围绕模型的创建 和变换 开展 的,如 图 2所示。从整体来看,MD A软件开发生命周期同传统的生 命周期并没有很 大不 同。关键之 处在于,当完 整实 现 MDA后,对生命周期的关注点从“代码”转移到了“模 型”。目前,开发人员 的关 注焦点 是代码,一般 是使 用 面向对象编程语言书写。在使用 MD A方法后,关注 焦点就会逐渐转移到更高的层次上:先是 P S M上,然 后再转移到 P I M 上。开发人员会 逐步忘记 P S M 需要 被变换成代码,因为代码生成的过程将会被完全自动 化,如图 2所示。再过些年,部分开发人员甚至会忘记 P I M 需要 被变换 成 P S M 2 j。图 2 MDA软件开发 生命周期 3 2 MD A软件开发参与者及活动 的变更 与传统开发过程相 比,MD A开发过程有许多地方 没有改变,仍需先找出需求并加以表示,需要测试系 统、部署系统。改变较大的是分析、设计和编码这三项 活动,以及 参与 MD A开 发过程的三类参 与者角色【2 J2。首先,在分 析 阶段,需 要 由 P I M 分析员来 开 发 个 P I M,他们 主要 由一组 领域专 业人 士组成,主要 关 注问题域 的业务规范及 需要实现 的功能,并且 由业 务 需要和业务模型来驱动。同时,在本阶段完成 之后,P I M应该得到充分的验证,以保证该模型的完整性和 精确性。其次,在设计阶段,需要由 P S M创建者来将 P I M 变换成 一个或 多个 P S M。他们 需要对不 同的平 台、不 同的系统构架和所使用 的变换工具的变换定 义非 常了 解,从而决定使用什么样的变换参数,并在不同的目标 平台和 目标 系统架构之间做出选择。同时,也是 由 M 创建:著来确 定要开 发 的系统 的架构(三层、两 层 维普资讯 http:/ 2 6 计算机技术与发展 第【8 卷 还是单 机)和 目标平 台(J 2 E E还 是 N e t),也要 承担起 确保实现服务质量(Q o S)的责任。P S M 创建者 的另一 个任务是对 P I M 和 变换 定义 的 改变做 出响应。P I M 和变换定义都可能会独立改变。如果业务需求变了,那么受影响的只有 P I M。如果 目标平 台改变 了,那 么 需要更新 的只有变换 定 义。P S M 创建者 必须 及 时响 应这些改变,并将这些改变反映到生成的 P S M 中去。与此同时,已经部署的 系统前 一版本 可能会包 含很多 历史数据,P S M创建者还要借助工具,负责把这些数 据迁移到新版本的系统中去。最后,在整个 P S M 开发过程中,P S M创建者都要 用到变换定义,所以变换定 义开 发者 的工作就 显得尤 为重要。这个角色也是 在 以往 的开发过 程中没有 的。他们的主要工作就是结合具体的变换工具来开发变换 定义,而 P S M创建者通过购买或者修改变换定义来进 行工作 引。图 3 展示了MD A过程中不同参与者以及他们使 用 的工具和创 建的工件。P S M创建者 图 3 MD A过程 的参与者、工具和工件 3 3 MD A开发工具的更新 应用 MD A也将会对软件开发工具造成一定的影 响。相对于传统的软件开发过程,主要会有 3组人需 要新的或更好 的工具,即 MD A过程 中的变 换定 义开 发者、P S M 创建者和 P I M 分析员-4 J。变换定义开发者 需要一种新型 的 I D E来 创建、编辑 和测试 变换 定义。由于 MD A 的目标 是复 用变换 定义,且规 范主要 是 由 国际组织统一进行管理,所 以参 与变换定义开 发的总 人数不会太多,因此 相应 的变换定义 开发工具 也不会 有太多的选择。P S M创建者主要使用变换工具进行工作,而这些 工具需要具备 以下功能:1)能够在不同实现平 台间进行选择;2)能够灵活地在 一个平 台上转换 不 同实现策略、应 用程序构架和编码模式;3)具备插入多种建模语言和变换定义的开发性;4)对标准的领域特定模型或蓝图提供支持;5)能够 同其他软件 开发和维护工具(代码维护、版 本控制、需求管理、工作流 自动化、测试工具、性能调整 工具等)自动集成L 2 J。同时,P S M 创建者需要对正在 使用的变换定义进行少部分的调整,以便生成更高效 的系统。而变换定义开发者需要调试和测试 自己开发 出来的变换定义,会频繁地调用一种或几种变换 工具。因此,这些工具之间的标准性就非常重要,起码可以对 模型和变换定义使用相同的的标准交换格式。P I M分析员这组人是在传统软件开发过程中就 已经存在的,已经有很多建模工具为他们提供服务。目前大多数工具都能以标准交换格式读写 UML模 型,但是对于 P I M 分析员来说还需要支持模型检查、模型各部分整合以及各种 U ML图表之间信息流的工 具组。但 P I M 分析员最需要 的还是更好 的建模语 喜 2 目 o 3 4 MD A软件开发模式评价 MD A架构最核心的思想就是把软件设计的复杂 性分散到不同的层面上,在每一个层面上只关心一类 问题,使从简单性进化来的复杂性重新还原成多个层 次上的简单性。其最终 目的就是要通过架构性的分离 来实现软件开发的轻便性、互操作性 和可重用性 J。在 MD A中将平台无关模型 P I M和平台相关模型 P S M 显式地分开有下述三个 主要 的优点:1)P I M可以被多种实现技术复用,当技术平台发 生迁变 的时候 P I M 不必做 改动;2)由于和具体实现技术无关,P I M 可以更加精确 地体现系统的本质特 征,因此可 以跨越 具体 的技术 圈 子进行交流和共享;3)由于使用了简单的、通用的模型,可以更加容易 地对 P I M 进行验证。整个基于 MD A的软件开 发过程是一 个 以模 型为 载体、由模型映射所 驱动 的过程。这 种开发模 式采用 一组基于 M0 F的元模型为系统建 模。利用模型映射 技术完成软件的逐步求精过程,并保证了这个过程的 可追溯性。这种开发模式对 于传统 的软件 开发模式在 许多方面都有了根本性 的改进。相比而言,在传统的以代码为中心的软件开发模 式 中也具有“建模”的活动和相 应 的参与者,但 是其 主 要的问题 在 于很 多软 件 团 体对 于 建 模 只是“纸 上谈(下转第 3 0页)维普资讯 http:/ 3 0 计算机技术 与发展 第 l 8 卷 假定用户 的请求是 a,则计算 出比对算子 E x a C=1,0,0,0,l,1 ,使用 上述算法 得到兼容子背 景 K =(G ,M,R ),如图 4 所示,其 中由于对象 e的对象 相 关度低于阈值未被加入到K ,属性 3和 6也被约简掉 了。图 4 K 及 L(K)从 图中可以很清晰地看到,L(K)同构于 K 的一 个子序的概念格。如果用户利用精确分割后感觉生成 的背景 K 过小,可选择利用扩展分割算法 扩大形式背 景 的规模。由于本例的特殊性,扩展后的形式背景就是 原形式背景 K。在格 的构造算法 中,首先生成 L(K ),然后再通过添加格节点生成 L(K),由于从 K 到K添 加 的对象 的相容度很低,所 以新添加 的节点对 原有格 结构的影响很小,这样显然比直接生成 L(K)的时间 复杂度低。5 总结与分析 利用 O MC P算法分割形式背景,改变了原有形式 背景和概念格一一对应的模式,结合用户需求,使格 的(上接 第 2 6页)兵”,造成了模型和代码的不同步,在代码不断被修改 的同时,模型不会被更 新,这样模型就失去了意义。弥 补建模和开发之间的鸿沟的关键就在于将 建模 变为开 发的一个必不可少的部分。基于 MD A的软件 开发模 式彻底解决了上述 问题,并提 出 了一种 创建 系统 的新 途径。4结论 MD A的出现,为提高软件开发效率,增强软件的 可移植性、协 同工作能力和 可维护性,以及文档编制的 便利性提 出了新 的解 决方 案。MD A被 面向对象 技术 界预言为未来几年内最重要的方法学。当然,软件开发从来都是一个需要创造性思维的 工作,软 件技术的进步也从 来都 是渐进的,都是在已有 生成不仅仅依赖 于形式 背景 的规模,同时 还依赖于背 景中各对象 间的相 容度。该 算 法不 但减 小 了格 的规 模,而且使 得生成的每个格节点都与用户需求相关,从 而有效地提高了概念格的有用性,使得生成的格结构 更易于应 用 于实际 问题。例 如将 O MC P算法应 用 于 专业搜索引擎,可解决文档分类 困难的问题。为了验证 O MC P算 法 的有 效 性,在 Wi n d o w s X P 下用 C#语 言实 现了 O MC P算 法,在 P 4 1 7 G计算机 上对随机产生的数据进行 了测试。结果表 明,当背景 中各对象的相容度有较大差别时,算法表现出良好的 效果;当对象 相 容度 的差别 较小 时,算 法效果 不 够理 想。实际应用 中,如果 对象 相 容度 差 别较 小,可 以将 O MC P算法与形式背景 的横向或纵 向拆分算法 L 4 J 相结 合,从 而进一步缩小背景 的规模,使其更有利于实现概 念格的并行生成。参考文献:1 李立峰,王国俊 一种求概念格属性约简的方法 J 计算 机工程与 应用,2 0 0 6,4 2(2 0):1 4 71 4 9 2 李云,刘宗田,吴强,等 概念格的分布处理研究 J 小型微型计算机系统,2 0 0 5,2 6(3):4 4 8 4 5 1 3 张磊,沈夏炯,贾培燕,等 基于同类概念的概念格横向 合并算法 J 计算机应用,2 0 0 6,2 6(8):1 9 0 0 1 9 0 3 4 G a n t e r B,Wi ll e R F o r m a l C o n c e p t A n a l y s i s:Ma t h e m a ti c a l F o u n d a ti o n s M B e r l i n:S p 唱e r,1 9 9 9 5 H o T B D i s c o v e r i n g a n d U s i n g K n o w l e d g e f r o m U n s u p e r v i s e d D a t a J J D e c i s i o n S u p p o S y s t e ms,1 9 9 7,2 1(1):2 7 4 1 的技术上进行一个新层 次的提升,从来 都没有什么“银 弹”,MD A也不例外。面对这种思维上的冲击,既要睿 智地去迎接新鲜事物,又 要冷静地 在现有 基础上进 行 提升,这才是一个理智的开发团队本应该具有的素质。参考文献:1 O MGMo d e l D r i v e n A r c h i t e c t u r e Wh it e P a p e r E B O L 2 0 0 5 h t t p:www o mg o r g md a 2 K l e p p e A,Wa r me r J B a s t W 解析 MD A M 北京:人 民邮 电出版社,2 0 0 4 3 F r ank e l DS 应用 M D A M 北京:人民邮电出版社,2 0 0 3 4 S a w i n软件研发之窗 E B O L 2 0 0 6 h t t p:w w w s a wn c n d o c S o f t Me t h od DA 1)l u e s l【i 3 7 7 h t m 5 U IV l L软件工程组 织 E B O L 2 0 )6 h t t p:w w w u m 1 o r g o nUMLS e r c h 1 21 70 01 hi I l 1 维普资讯 http:/