首页>参考读物>计算机科学与技术>软件工程及软件方法学

MDA与可执行UML
作者 : Chris Raistrick, Paul Francis, John Wright, Colin Carter, Lan Wilkie
译者 : 赵建华 张天 等
出版日期 : 2006-04-19
ISBN : 7-111-18371-1
定价 : 45.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 323
开本 : 16开
原书名 : Model Driven Architecture with Executable UML
原出版社: Cambridge University Press
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书以独特的视角讨论了软件开发中的一项革命性技术,即使得模型规约可以被完全、高效地转换成为代码的技术。读者将学会如何使用影响广泛的软件建模语言UML,基于OMG的模型驱动的体系结构来建立强壮的软件规约。作者还描述了把可执行UML(xUML)模型转换成任意的平台相关实现时所需要的步骤。这个方法的好处不仅能减少或者消除编码阶段,它还保证了平台无关性,使模型免于过时(程序设计语言可能改变,但是模型不会),并且,允许通过在一个支持测试-排错的xUML环境中执行模型而对模型进行完全的验证。

  本书的作者们都是书中描述的技术和过程的富有经验的实践者。他们曾经在各种行业中参与了这些实践,这些行业包括国防、航天、汽车、电信、政府、医疗保健、保险、过程控制等。他们见证了面向对象、可执行建模和模型驱动的体系结构的各种各样的能力。他们曾经和客户一起把可执行建模和代码生成技术应用到各种系统中去。从多年的第一手经验中他们认识到,可执行建模和代码生成非常有用。他们也了解如何充分使用这些技术,以及需要注意的问题。本书正是用这些实践经验描绘了技术细节。对于那些正在思考大中型项目软件开发技术未来发展方向的人,本书是一个非常好的参考。

图书特色

图书前言

计算机软件业的历史就是将抽象层次分层的历史。从早年在曼彻斯特和费城紧随第一个存储程序计算机而出现的软件工具被发明开始,毫无疑问,同其他工程学科一样,控制系统复杂度的惟一方法就是建立多个抽象层,而每层都给出对其下一层次的简洁的描述。
  第一种存储程序描述—我们称之为汇编语言程序—本质上是与底层实现结构一一对应的(比如,曼彻斯特的EDSAC的指令集结构)。人们很快就发现,降低编程复杂度对开发复杂的系统至关重要。由于这些系统的复杂性,人们必须对其复杂性进行抽象。甚至在EDSAC被制造并投入运行之前,为了简化编程,人们就开发了第一个后来被称为“宏汇编器”的工具和第一个连接/装载器。
  从Wheeler和Wilkes的最早期工作开始,到高级编程语言(1959年的FORTRAN和Lisp,它们同时带来了软件移植性的概念)的发明,直到Algol语言中明确提出数据抽象的概念,软件行业找到了问题的“正交性”。从本质上讲,通过抽象的方法去掉软件开发中的某些复杂性,我们几十年来一直在尝试的就是将软件开发任务简化为描述“业务流程”,而将与描述流程不必然相关的代码编制的复杂度最小化。
  20世纪90年代,“中间件”系统得到广泛应用,它们隐藏了IT开发任务中各种困难的复杂度(事务完整性、持久性存储、名字空间和目录服务等等),同时保证了易移植性和互操作性。过去曾经有人引用过我的话,因为我把中间件定义为“没人愿意付费的软件”,因为开发者必须假定不管平台如何选择,中间件都是无所不在的,而用户通常不愿为这样的基础设施层付费。不过,这些关键(且难以设计)的实现服务包已经非常普遍,并成为软件抽象的下一步。
  当然,对于一个给定的系统设计,所有抽象层次上的描述都是等价的;只是(我们认定)高层描述更容易理解且更充分展示了程序员所期望的业务功能。那么我们如何从一个抽象层转到另一个层次呢?通过转换机制;这些系统设计(我们称之为系统模型)间的转换通常被称之为“编译”和“解释”。
  本书讨论了另一个描述系统的抽象层,这是一个强大的且经过检验的抽象层。本质上,这只是另一个编译阶段,但是它却最终让我们弥补了系统设计和系统实现之间的差异,一劳永逸地给了我们梦寐以求的软件蓝图的圣杯:一种可以使我们抛开系统的实现、编程语言的选择、指令集结构、网络拓扑结构等诸如此类的问题,直接去定义系统体系结构的能力。自从OMG的MDA(Model-Driven Architecture)方法出现以来,它在实际的IT和嵌入式系统的开发中被一次又一次地证明是有效的。
  那么,为什么MDA没有风行全球?其实从某种意义上说它已经做到了:OMG的统一建模语言(UML)和相关模型转换以及文本式的描述语言MOF和XMI已经在很短的时间内很快成为软件建模领域的通用混合语言。从1997年UML被采纳为OMG标准起到20世纪末,UML根本上代替了所有现存的面向对象建模语言(比如OMT、Booch和OOSE)。我们需要的是下一个步骤:促使人们认同这个观点,即建模必须是软件开发流程的一部分。建模不仅和需求分析、系统和软件设计有关,还支持软件实现、单元测试、系统测试、长期系统维护和集成等过程。
  这就要求观念上的改变,而改变本身就需要很好的信息来源以及为基于模型的方法建立系统的训练。在你手中的这本书正好是第一步,它对模型驱动体系结构的目标和期望作了清楚的描述。更重要的是,它还给出了理解MDA并将其用于工作实践的翔实指导。在阅读本书时,不要期望看到其中隐藏了一个革命性进展;虽然生产效率的提高(而且支持可重用性、易移植性和互操作性)将使MDA成为你的得力开发工具,你还是应该仅仅把MDA看作是另外一层抽象,把MDA工具看成是编译器。
  这只是软件开发工具发展过程中的另一次很自然的进步,但你会很喜欢这个进步!

Richard Mark Soley 博士
对象管理组(Object Management Group, Inc)
中国  湖北  武汉



致   谢
  作者衷心感谢以下几位的贡献、影响和支持:
* Glenn Webby,感谢他对全文完整而非常有价值的评审;
* Allan Kennedy,感谢他的评述和建设性指导;
* Jeff Terrell,感谢他有益的评述和建议,特别是有关代码生成部分的建议;
* Andy Land,感谢他多年来在开发iUML的工作中贡献的独到见解;
* Bobby Doherty,感谢他整理实例研究;
* Chas Weaver,感谢他对本书的方法性以及幽默性的贡献;
* Steve Lewis,感谢他对项目管理和组织的见解,那些见解几乎可以轻易地写成另外一本书;
* Terry Ruthruff和Lockheed Martin 的Bary Hogan,感谢他们和我们共享如何将MDA应用到实际项目中的见解和经验,同时感谢他们创作了一个广泛使用的MDA表示法;
* Alenia Marconi的Mark Jeffard,感谢他在企业级Ada代码生成领域的先驱性工作;
* Marconi通讯公司的Don Stewart,感谢他给出的许多关于开发流程的意见;
* CAP Gemini的Charlie Darkins;
* Mike Clarke,感谢他关于动作语言和代码生成的工作。
  本书是多年经验和见解的综合。这些经验和见解,通过Dave Fletcher、Adrian King以及其他许多我们有幸与之一起工作多年的同事的趣闻轶事,年复一年地流传下来。
  我们曾同许多知识渊博的人,诸如Leon Starr、Mike Lee、James Rumbaugh、Steve Mellor 和 Sally Shlaer等,有过愉快的辩论、交谈和闲聊。Sally不幸于1998年11月12日逝世,她没有看到她和Steve于20世纪80年代末率先提出的思想以MDA和xUML的形式成为主流。Ovum Evaluates的Mike Budd说:“Shlaer-Mellor的思想没有在她去世前得到完全的认同真是很让人难受,但可能这种认同是必然的。Shlaer-Mellor的严谨和快速的效率对程序员的聪明名声和现有文化提出了挑战。对他们的理论的更广泛的认同必将来到,但是和其他具有挑战性的思想一样,需要时间让更多的软件开发团体真心感谢Shlaer-Mellor的真正重要性。”本书便是对这个更广泛认同的宣言。
  在随书光盘中包含了多个可执行UML案例研究,它们是由Paul Francis精心打造的。愤世嫉俗者可能会怀疑这本书是否只是另一个UML宣传用书,那么他们可以用光盘中的免费软件运行一下这些模型,以解除他们心中的怀疑。针对更多思想开明的读者,光盘提供了书中所述思想的多个具体的例子。
  对致谢中被无意遗漏姓名的人,我们在此表示由衷的歉意。请告知我们,我们将在下一版中将您加入!



作 者 简 介
  Chris Raistrick  Kennedy Carter有限公司(www.kc.com)的项目工程管理服务主管。自1989年起,Chris主要致力于将面向对象方法应用于具有战略重要性的系统的开发中。他为电信、汽车、分布式控制、嵌入式系统、卫生保健等部门的客户提供咨询服务。Chris有长达5年的将UML成功应用于许多项目的实践经验。他在可执行建模、组件集成和代码生成技术领域发表过多篇具有开创性的论文,并曾在所有关于UML、OMG和嵌入式系统的主流会议上作过技术报告。
  Paul Francis  Kennedy Carter有限公司(www.kc.com)的首席顾问。从事航空电子业的软硬件系统开发15年之后,他于1993年加入了Kennedy Carter公司。从那时起,他将可执行建模技术应用到水下武器、卫生保健、电信、航空、保险等多种领域的应用系统开发中。另外,他经常参与可执行建模技术的培训教学,曾在多个杂志或会议上发表过论文。他还负责Kennedy Carter公司正在开发的可配置代码生成器(一个针对可执行UML模型开发的基于元模型的转换器)项目。
  John Wright  Aurora咨询有限公司(www.auroraconsulting.co.uk)的一位主管。从伦敦大学获得博士学位之后(研究实时并行算法),他在国防研究署(Defence Research Agency,DRA)工作了4年,并率先将MDA和xUML的先驱—当时新兴的面向对象分析引进该组织。自1995年离开DRA,他致力于帮助汽车、航空、政府、电子商务等领域的客户制定和改进业务流程,并从事xUML的指导和教学工作。John对软件体系结构和代码生成技术有着特别的兴趣。目前,他正积极着眼于如何使用UML、MDA开发基于J2EE技术的企业级体系结构。
  Colin Carter  Aurora咨询有限公司(www.auroraconsulting.co.uk)的创办者,也是一位UML顾问、指导和方法论学者,他有20年应用软件工程方法的实践经验。他从1983年开始便使用面向对象方法进行工作,并将面向对象开发方法介绍给许多组织。自1998年起,Colin在多个项目中使用并深入利用了UML,其中包括从实时嵌入式系统到基于Web的应用的很多项目。他在可执行建模技术发展的早期便参与了该技术的开发,并具有将它应用于系统开发和业务建模的丰富经验。
  Ian Wilkie  Kennedy Carter有限公司(www.kc.com)的技术主管,他有25年以上在多种目标环境中开发软件的经验。这些开发工作涉及了包括从高能物理数据分析的计算密集型系统到实时嵌入式控制系统等诸多领域。自加入Kennedy Carter后,Ian为许多项目提供过咨询,并全权负责开发用以支持MDA和xUML的iUML工具集。Ian还积极参与了“UML的精确动作语义”提案的撰写工作。该提案已经在近期被OMG采纳,成为xUML方法的重要基石之一。

封底文字

作者简介

Chris Raistrick, Paul Francis, John Wright, Colin Carter, Lan Wilkie:暂无简介

译者简介

赵建华 张天 等:暂无简介

译者序

模型驱动的体系结构(Model Driven Architecture, MDA)是由OMG提出并且大力倡导的软件开发方法。在这种软件开发方法中,一系列不同抽象层次的系统模型成为软件开发过程的主要产品。这些模型被划分为两个较大的抽象层次:平台无关模型(Platform Independent Model,PIM)和平台相关模型(Platform Specific Model,PSM)。PIM描述了待开发系统的行为需求,但是不涉及如何在具体的平台上实现这个系统;PSM包含了所有在PIM中表示的功能,并添加了针对实现平台的设计因素。在MDA开发方法中,开发人员的主要工作是全面精确地描述系统的PIM,并根据特定的模型转换规则集合由PIM自动转换得到PSM。
  MDA的好处之一是将系统的业务需求和实现技术分离开来。一方面,PIM的设计者可以专注于系统的业务逻辑,不需要考虑具体的实现技术。最终的系统通过模型转换规则自动生成。当实现平台发生变化时,只需要应用新的转换规则就可以从PIM重新生成新平台上的PSM,从而完成系统的移植;另一方面,有关系统实现的知识被表示为模型转换规则。这些规则和系统的业务逻辑无关,同样的转换规则可以被应用到不同的系统开发工作中。这些转换规则本身也成为了可复用的企业财富。MDA方法还可以带来多种其他好处,比如更好的可复用性、易理解性、更高的软件质量、较低的软件开发费用等。
  UML是一个被广泛采用的,用以表示面向对象系统的各个方面的标准符号系统(www.omg.org/uml)。自UML被推出以来,它已经被工业界广泛接受为标准的建模语言。但是,UML的语义不是十分精确,难以满足MDA开发中模型自动转换的要求。可执行UML(xUML)对UML进行了扩充和改进。一方面,xUML用动作规约语言(ASL)对UML进行扩充,使开发人员可以精确地描述模型,并得到可执行的PIM;另一方面,xUML选取了UML表示法的一个子集,使得建模过程更加简洁明了。可执行建模可以使得模型更加精确,更加容易测试。
  本书的作者以Rational统一软件开发过程(Rational Unified Process)为框架,描述了使用xUML的MDA开发方法在特定的软件开发过程中的应用。本书可以被看作是作者多年的软件开发经验的总结。相对于一些MDA理论研究的书籍,本书具有更好的实用性。作者在本书中给出的很多方法、思想可以被直接应用到软件开发实践(包括不使用MDA方法的开发过程)中去。作者以书中(包括随书光盘中)包含的多个实例揭示了MDA这个革命性软件开发方法的各种优点,并指明了利用这些优点的方法。
  本书很适合那些试图了解软件开发方法新进展的读者阅读。虽然当前MDA开发方法还没有普及,但是它体现出的生命力,以及OMG的巨大影响力,必然会使得MDA被越来越多的人接受。虽然将来的MDA方法的具体细节可能和本书中的一些描述不同,但是MDA的基本思想是不会变的。预先了解这个方法,以及这个方法背后的思想,是很有好处的。
  本书的引进出版首先由我的导师郑国梁教授提议。郑老师多年来一直从事软件开发方法的研究,对这个方面有着深刻的理解。他选择这本书,说明这本书是值得大家仔细阅读的。在其后的翻译工作中,他还给我们提出了很多很好的指导和建议,对于提高本书的翻译质量有很好的帮助。在此我们表示感谢。参加本书翻译工作的还有:姜泉、杨璐、肖舒、雷斌、陈铭松、吴光、龚嘉宇。他们也为本书的翻译做出了很重要的贡献,在此一并表示感谢。
  由于我们的知识水平和翻译水平的限制,翻译不当之处在所难免,请读者批评指正。

赵建华  张天

推荐序

图书目录

第1章  引论 1
1.1  为什么需要读这本书 1
1.2  从本书将会学到什么 1
1.3  我们为什么写关于MDA和UML的书 3
1.4  什么是模型驱动体系结构 5
1.5  OMG简介 7
1.6  软件方法的历史,通往MDA之路 7
1.7  什么是可执行UML(xUML) 10
1.8  本书结构 13
1.9  怎样阅读本书 15
第2章  可执行模型驱动体系结构 17
2.1  概述 17
2.2  MDA背景—软件工程和过程 17
2.3  模型驱动体系结构 19
2.4  可执行UML 22
2.5  过程改进的需要 22
2.6  使用可执行模型的MDA方法的原则 23
2.7  模型映射 35
2.8  MDA过程总结 36
2.9  详述域 37
2.10  集成PIM 38
2.11  建立PIM 39
2.12  验证PIM 42
2.13  详述系统构建过程 43
2.14  结论 44
第3章  MDA在典型项目中的应用 45
3.1  概述 45
3.2  初始阶段 46
3.3  营造阶段 50
3.4  构建阶段 66
3.5  移交阶段 67
3.6  需求变更的影响 68
3.7  变更对设计决策的影响 68
3.8  MDA和其他生命周期过程 68
第4章  用例建模 70
4.1  用例介绍 70
4.2  目标 70
4.3  识别参与者和用例 70
4.4  用例图 71
4.5  建立用例文档 72
4.6  管理大的或者复杂的用例模型 74
4.7  用例建模的有效使用 80
4.8  具体和抽象用例 80
4.9  用例层次 80
4.10  详述性能 81
4.11  获取其他类型的需求 82
4.12  结论 83
第5章  使用域进行平台无关建模 84
5.1  概述 84
5.2  系统分解的可选策略 84
5.3  域图 87
5.4  域的类型 88
5.5  组织域图 91
5.6  寻找域的技术 92
5.7  MDA过程:总结 97
5.8  如何进行坏域的分解 99
5.9  结论 100
第6章  对域中的类建模 101
6.1  概述 101
6.2  类图概览 101
6.3  类图的生命周期 102
6.4  类 103
6.5  属性 104
6.6  类的图形表示 105
6.7  类的表格表示 105
6.8  马铃薯图 106
6.9  关联 106
6.10  对象标识 121
6.11  指引属性 122
6.12  冗余属性 123
6.13  规范化 123
6.14  静态和动态类 125
6.15  改善模型效率 125
6.16  属性可见性 125
6.17  对象闪电战 126
6.18  不成熟划分的危险 131
6.19  结论 132
第7章  类的行为和交互 133
7.1  状态无关行为和状态相关行为 133
7.2  操作与状态 134
7.3  对象和类的交互 136
7.4  类协作模型上的域接口 139
7.5  动态建模过程 141
7.6  获取和表达状态相关行为和状态无关行为 145
第8章  操作建模 146
8.1  操作 146
8.2  类操作和对象操作 147
8.3  域操作 149
8.4  桥操作 150
8.5  操作属于哪里 150
8.6  多态操作 150
8.7  操作的域外部可见性 151
8.8  总结 152
第9章  动态建模 153
9.1  概述 153
9.2  定义 153
9.3  状态图 154
9.4  状态转换表 159
9.5  非存在状态 162
9.6  执行语义 162
9.7  控制状态机的复杂度 167
9.8  如何建立不良状态机 169
9.9  UML中其他形式的状态建模 170
9.10  结论 170
第10章  动作规约 171
10.1  我们在什么地方 171
10.2  动作规约语言ASL 171
10.3  ASL的关键特征 174
10.4  一个ASL例子 178
10.5  ASL和平台无关性 178
10.6  为UML而设计的动作语言的使用以及好处 182
10.7  动作语言的更多好处 194
10.8  好的ASL实践指南 197
10.9  其他动作语言 199
10.10  如何建立坏模型 199
10.11  结论 200
第11章  用于建模的模式 201
11.1  概述 201
11.2  规格模式 203
11.3  特性值模式 204
11.4  关联时间帧模式 206
11.5  多值关联模式 208
11.6  兼容性模式 210
11.7  多重分类 214
11.8  动态分类 216
11.9  排序项 218
11.10  资源请求者模式 219
11.11  分配者模式 221
11.12  层次结构模式 222
11.13  实例删除模式 223
11.14  实例创建模式 225
11.15  无序操作 225
11.16  日志模式 228
11.17  设备控制模式 231
11.18  反模式 232
11.19  结论 235
第12章  域的集成 236
12.1  域的接口 236
12.2  契约类型 236
12.3  所需服务 238
12.4  可用服务 240
12.5  简单桥 241
12.6  高级桥 249
12.7  怎样管理域集成—构建集 259
12.8  结论 261
第13章  系统生成 263
13.1  概述 263
13.2  系统实现的传统方法 263
13.3  转换驱动开发 267
13.4  设计流程 272
13.5  对实例化的xUML2模型的转换—设计 274
13.6  代码生成器的生成 283
13.7  测试体系结构 283
13.8  使体系结构多样化—标记 285
13.9  体系结构优化 287
13.10  设计模型的角色 289
13.11  转换方法的开发生命周期 290
13.12  定义体系结构—工具支持 292
13.13  结论 292
第14章  实例研究 294
14.1  概述 294
14.2  系统需求概要 294
14.3  用例 295
14.4  系统中的域 296
14.5  模型的特性 300
14.6  构建集 303
14.7  察看实例的模型 304
14.8  执行实例模型 304
光盘安装向导 307
术语表 308
缩写表 311
索引 313

教学资源推荐
作者: 梅宏 王千祥
作者: 刘振安 董兰芳 刘燕君
作者: 麻志毅
参考读物推荐
作者: Alan Shalloway, James R.Trott
作者: Chris Wysopal;Lucas Nelson;Dino Dai Zovi;Elfriede Dustin
作者: (美)John D.Musa