书籍详情

实时设计模式:实时系统的强壮的、可扩展的体系结构

实时设计模式:实时系统的强壮的、可扩展的体系结构

作者:(美)Bruce Powel Douglass著;麦中凡,陶伟译;麦中凡译

出版社:北京航空航天大学出版社

出版时间:2004-05-01

ISBN:9787810774215

定价:¥56.00

购买这本书可以去
内容简介
  本书是美国AddisonWesley公司出版的对象技术(最新2003年)丛书之一,旨在用面向对象技术开发实时和嵌入式系统软件。<br>众所周知,实时和嵌入式系统软件由于其开发层次较低,直接在硬件上开发时间紧要、安全紧要、高可靠性的系统,传统上是C语言和汇编语言的天下。传统的软件工程技术着重软件的可移植、可复用、可伸缩,易维护、低成本,借助于一个良好的平台,快速交付,支持业务过程的快速变革的高适应性系统。软件工程使平台以上的系统日臻完善,发展了面向对象技术、构件技术乃至于直接使用软件服务。“相信”实现服务的构件、支持构件实现的平台(操作系统、网络软件及数据库软件)都是最优或较优的。显然,与实时嵌入式系统要处处操心每个软件元件的性能、可靠性、安全性走的是两条路,他们“不相信”臃肿的通用平台能解决他们在有限资源下做出高性能系统所遇到的各种问题。所以,实时和嵌入式系统的业者一般不关心软件工程技术的最新进展,也很少在他们的工作中采用软件工程新技术,停留在提供完善的模块和子系统层次上,强耦合的过程式模块开发还是主流。<br>从系统的观点来看,实时嵌入式系统也是系统,特别是硬件技术的快速发展,实时嵌入式软件也有快速适应硬件型号升级问题,也有业务快速变更要求可伸缩、可修改(例如,军用导弹、飞机型号升级,民用产品换代)可复用问题。1975年,美国国防部开发的Ada语言系统就是为了在主机上开发适应变化的系统。通过交叉编译生成机载、弹载的目标系统嵌入到应用环境中,一切系统维护、伸缩均在Ada源代码级软件上完成。在某种意义上,今日的面向对象技术得益于Ada的数据抽象和模块封装。由于Ada为保证军用软件可移植性管得过严,面向对象技术蓬勃发展在C++上得以体现。于是实时嵌入式系统自然转向底层是C的C++。但对象化对实时性、可靠性并没有直接的好处,所以在小型实时嵌入式应用中,面向对象依然不占上风,仍然是过程式开发方法最后穿上C++外衣。尽管如此,有了C++这个桥,为实时嵌入式系统再一次和当前软件工程技术合流打下了良好的基础。<br>面向对象封装带来的松耦合,使它成为分布式可伸缩系统的首选技术,且随着当今网络的普及,对象成了应用的第一类公民,网络是对象交互和通信的世界。打包也好,请代理也好,不是对象只能窝在本机上做点实际工作。<br>为了参与网络上提供实时服务,为了支持应用系统的快速变更,快速提供嵌入式产品,大幅度降低成本提供标准化、构件化产品,实时嵌入式系统的对象化、构件化势在必行!当然,也应该看到,CPU速度大幅提高,减缓这类系统的开发者因实时对标准化、构件化的抵制,使他们乐于参加现代技术大合奏。<br>重新认识软件是有体系结构的。软件开发是一个软件过程,是近十年软件技术最重要的成就。过去的开发着眼于功能性能,无形中完成了一个软件过程,得到一个有体系结构的产品。当时并不在意过程好坏,体系结构是什么样的。通过验收能够满足使用的就是好产品。但情况并非如此顺利,“树欲静而风不止”,使用中不断发现新bug,用户一再要求改进(受其他新技术影响或总结出使用经验)。过程和体系结构在软件可适应、易维护性上显现出极大的威胁力。不良的体系结构使此处bug消除,彼处新bug又冒出,甚至导致整个系统崩溃。不良的过程找不到资以分析的文档、数据,一个不大的改进每步都从头试起,迟迟调不出来,大量窝工,成本飚升。于是,人们把软件开发从以功能性能为中心转而为以软件体系结构为中心,精心改进软件过程,从而软件在改变之中依然能保证符合需求的功能,并能保证高质量和低成本。<br>体系结构从总体上决定了软件可能达到的各项质量指标。例如,别墅、板楼、塔楼,在通风、抗震、舒适程度、方便性、成本方面各不相同,一经确定则影响终身。例如楼层太矮、电梯过少、没有绿地等。软件过程通过精心安排软件制作的各项活动切实保证软件质量。该有的活动没有或不能即时到位都会造成低质量、高成本,甚至项目失败。过程是产品质量最直接的保证。所以ISO9000系列就是所有人工制品的(过程)质量标准。美国CMM标准化更是以过程成熟度来衡量软件企业有无资质承担软件开发。软件体系结构和软件过程相辅相成,一为软件内在质量保证,一为过程质量保证。所以,以体系结构为中心的最优过程开发已为世界广泛接受。<br>过程是以时间为进程的各项软件活动。开发活动完成都凝聚成有体系结构的软件,即它的后果(体系结构)是可分析、可测试度量的。优秀的体系结构如前所述,正是软件设计的目标。于是人们研究分析体系结构并寻找设计实现的途径。<br>体系结构不外乎是实现各项功能、性能的元构件有机组合的集合。在面向对象的背景下,它们都是类对象,为了设计(有机组合)方便,把对象组成惯用的、不易出错的、可靠的、接近标准化的形式,则为模式(pattern)。最小的模式是几个类对象组成的构件,最大的模式是若干构件组成的子系统。<br>最早也是最基础的设计模式是Liskov提出的七种基本模式,并提出对象构成模式的五条基本准则,为面向对象设计模式奠定了理论基础。随后是“四人帮”(Gamma等四人)提出了常用的25种设计模式,为以模式设计软件体系结构提供了工程实践的基础。不过,“四人帮”讨论的模式作用域是局部的,我们把它们叫做机制式的设计模式(mechanisticdesignpattern),因为它们为对象的协作定义了各种机制。这种模式有较大的局限,只在单个的协作内。本书并不讨论机制式的设计模式,本书讨论的是体系结构设计模式(architecturedesignpattern)。<br>当然,各软件应用领域也都有本领域的模式,如果总结出来作为准规划,则本领域软件开发速度会成倍提高,而软件质量也较容易得到保证。本书就为实时嵌入式领域总结出了54种模式。<br>本书作者BrucePowelDouglass博士在实时嵌入式系统领域工作已有26年,是世界公认的领袖人物,目前是本书推荐的ROPES(嵌入式系统的快速面向对象过程)的创始人。他也即时转入到面向对象领域,成为ILogix公司的首席技术指导,实时系统开发工具的领导者,也是UML规范嵌入系统会议顾问委员会的成员。Douglass博士为多个公司和组织做过咨询,包括NASA。他还是OMG的RTDA(RealTimeAnalysisandDesignWorkingGroup)的副主席和面向对象杂志的专栏作家。<br>本书可以作为实时嵌入式系统的设计人员和开发人员的技术参考书,也可以作为计算机、自动化、机电一体化等专业的大学高年级学生学习操作系统、计算机控制系统等课程辅助教材。同时,本书对正在学习UML建模的设计人员也是一个很好的范例。此外,本书可以作为软件开发组织知识共享的模板,参考本书描述模式的方式把技术人员解决问题的经验抽象化、形式化,在组织范围内共享。<br>译者积极翻译并向业界推荐本书还有一个原因,这就是本书以对象模式的观点把计算机最底层的操作功能实现整个演示了一遍,如并发进程、内存管理、资源锁定、进程分布、安全性和可靠性。这对于欲深入理解计算实现本质的读者(不一定去做实时嵌入式应用),是一本很好的教材。在翻译过程中为减少混乱,我们厘定某些术语的译法,也算对业界的建议,如有不妥之处,欢迎指正。<br>实时设计模式〖〗<br>Broker译为“中介”,当前Broker、Proxy、Agent、Delegation均为“代理”,而Broker、Proxy在本书中也常出现在一页上,故Broker为“中介”(无授权),Proxy为“代理”(有授权),而Delegation干脆是“委派”,Agent在本书中出现极少,且不易冲突仍沿用“代理者”。<br>本书的前言、序和第1章至第3章由麦中凡教授翻译,第4章至第9章和附录由陶伟翻译。在成书过程中,吕庆中、程勇、胡斌、李晔参与了部分工作。麦中凡教授对全书做了细致的审校。<br>最后,我们感谢北航出版社在本书的成书过程中提供的大力帮助。<br>我们的电子邮件地址是:<br>mids@buaa.edu.cn<br>译者于北航<br>2003年6月
作者简介
  Bruce Powel Douglass在实时和嵌入式系统的UML应用领域,是世界公认的领袖人物。他是i-Loglx公司的首席技术指导,领导实时系统开发工具的开发。他亦是UML规范制定人之一,是嵌入系统会议顾问委员会的成员。Douglass博士为多个公司和组织做咨询,包括NASA,在那里,他为建造大型的、实时的、安全紧要的系统做咨询。他是OMG的实时分析和设计专题组RTDA的副主席。他是其他五本著作的作者,包括Addison-Wesley出版社出版的Ding Hard Time和Real-Time UML。
目录
第一篇设计模式的基础
第1章导言3
1.1UML建模的基本概念4
1.2模型5
1.3结构元素和图6
1.3.1小件:对象.类和接口6
1.3.2关系11
1.3.3结构图20
1.3.4大件:子系统.构件.包21
1.4行为元素和图26
1.4.1动作和活动26
1.4.2操作和方法27
1.4.3状态图28
1.4.4活动图33
1.4.5交互35
1.5用例和需求模型38
1.5.1捕捉黑箱行为无须揭示内部结构40
1.6何为设计模式40
1.7参考文献43
第2章体系结构与UML44
2.1体系结构45
2.2逻辑体系结构和物理体系结构46
2.2.1逻辑体系结构48
2.2.2物理体系结构51
2.3体系结构的5个视图54
2.3.1子系统和构件视图55
2.3.2并发和资源视图57
2.3.3分布视图60
2.3.4安全性和可靠性视图63
2.3.5部署视图64
2.4实现体系结构65
2.4.1缩略字世界:CORBA.UML和MDA基础66
2.4.2MDA出手营救67
2.4.3创建体系结构元素——模型层68
2.4.4子系统和构件视图72
2.4.5并发性和资源视图72
2.4.6分布视图73
2.4.7安全性和可靠性视图73
2.4.8部署视图73
2.5参考文献74
第3章设计模式的作用75
3.1导言76
3.2ROPES开发过程76
3.2.1何谓过程77
3.2.2ROPES过程概述79
3.2.3ROPES微周期的细节91
3.2.4聚议92
3.2.5用ROPES过程做分析93
3.2.6用ROPES过程做设计95
3.2.7翻译97
3.2.8测试97
3.3设计模式基础98
3.3.1何谓设计模式98
3.3.2设计模式的基本结构100
3.3.3如何阅读本书的设计模式101
3.4在开发中使用设计模式102
3.4.1模式孵化——找到正确的模式102
3.4.2模式挖掘——打磨出自己的模式104
3.4.3模式实例化——在设计中运用模式104
3.5参考文献105
第二篇体系结构设计的模式
第4章子系统和构件体系结构模式111
4.1分层模式112
4.1.1抽象112
4.1.2问题113
4.1.3模式结构113
4.1.4协作角色114
4.1.5结论114
4.1.6实现策略114
4.1.7相关模式115
4.1.8样例模型115
4.2五层体系结构模式116
4.2.1抽象116
4.2.2问题116
4.2.3模式结构117
4.2.4协作角色118
4.2.5结论118
4.2.6实现策略119
4.2.7相关模式119
4.2.8样例模型119
4.3微内核体系结构模式120
4.3.1抽象120
4.3.2问题120
4.3.3模式结构120
4.3.4协作角色121
4.3.5结论122
4.3.6实现策略122
4.3.7相关模式123
4.3.8样例模型123
4.4通道体系结构模式124
4.4.1抽象125
4.4.2问题125
4.4.3模式结构125
4.4.4协作角色126
4.4.5结论127
4.4.6实现策略127
4.4.7相关模式128
4.4.8样例模型128
4.5递归包含模式129
4.5.1抽象129
4.5.2问题130
4.5.3模式结构130
4.5.4协作角色131
4.5.5结论131
4.5.6实现策略131
4.5.7相关模式132
4.5.8样例模型132
4.6层次控制模式135
4.6.1抽象135
4.6.2问题136
4.6.3模式结构136
4.6.4协作角色137
4.6.5结论137
4.6.6实现策略138
4.6.7相关模式138
4.6.8样例模型139
4.7虚拟机模式140
4.7.1抽象140
4.7.2问题140
4.7.3模式结构141
4.7.4协作角色141
4.7.5结论143
4.7.6实现策略143
4.7.7相关模式146
4.8基于构件体系结构146
4.8.1抽象146
4.8.2问题147
4.8.3模式结构147
4.8.4协作角色148
4.8.5结论149
4.8.6实现策略149
4.8.7相关模式150
4.8.8样例模型150
4.9ROOM模式153
4.9.1抽象153
4.9.2问题154
4.9.3模式结构154
4.9.4协作角色154
4.9.5结论155
4.9.6实现策略155
4.9.7相关模式156
4.9.8样例模型156
4.10参考文献159
第5章并发模式160
5.1介绍161
5.2并发模式161
5.3消息队列模式163
5.3.1抽象164
5.3.2问题165
5.3.3模式结构165
5.3.4协作角色166
5.3.5结论166
5.3.6实现策略167
5.3.7相关模式167
5.3.8样例模型167
5.4中断模式169
5.4.1抽象169
5.4.2问题169
5.4.3模式结构169
5.4.4协作角色171
5.4.5结论171
5.4.6实现策略172
5.4.7相关模式173
5.4.8样例模型173
5.5卫式调用模式175
5.5.1抽象175
5.5.2问题175
5.5.3模式结构176
5.5.4协作角色176
5.5.5结论177
5.5.6实现策略177
5.5.7相关模式177
5.5.8样例模型178
5.6会合模式179
5.6.1抽象180
5.6.2问题180
5.6.3模式结构180
5.6.4协作角色181
5.6.5结论181
5.6.6实现策略181
5.6.7相关模式182
5.6.8样例模型182
5.7循环执行模式184
5.7.1抽象184
5.7.2问题184
5.7.3模式结构184
5.7.4协作角色185
5.7.5结论185
5.7.6实现策略186
5.7.7相关模式186
5.8循环赛模式188
5.8.1抽象188
5.8.2问题188
5.8.3模式结构188
5.8.4协作角色190
5.8.5结论191
5.8.6实现策略191
5.8.7相关模式191
5.8.8样例模型191
5.9静态优先级模式193
5.9.1抽象193
5.9.2问题193
5.9.3模式结构194
5.9.4协作角色195
5.9.5结论196
5.9.6实现策略197
5.9.7相关模式198
5.9.8样例模型198
5.10动态优先级模式200
5.10.1抽象200
5.10.2问题200
5.10.3模式结构201
5.10.4协作角色201
5.10.5结论203
5.10.6实现策略203
5.10.7相关模式204
5.10.8样例模型204
5.11参考文献206
第6章内存模式207
6.1内存管理模式208
6.2静态分配模式208
6.2.1抽象208
6.2.2问题208
6.2.3模式结构209
6.2.4协作角色210
6.2.5结论211
6.2.6实现策略211
6.2.7相关模式212
6.2.8样例模型212
6.3池分配模式213
6.3.1抽象213
6.3.2问题214
6.3.3模式结构214
6.3.4协作角色215
6.3.5结论215
6.3.6实现策略216
6.3.7相关模式218
6.3.8样例模型218
6.4固定尺寸缓冲区模式220
6.4.1抽象220
6.4.2问题220
6.4.3模式结构221
6.4.4协作角色222
6.4.5结论222
6.4.6实现策略223
6.4.7相关模式223
6.4.8样例模型223
6.5灵巧指针模式224
6.5.1抽象225
6.5.2问题225
6.5.3模式结构226
6.5.4协作角色227
6.5.5结论227
6.5.6实现策略229
6.5.7相关模式229
6.5.8样例模型229
6.6垃圾收集模式230
6.6.1抽象231
6.6.2问题231
6.6.3模式结构231
6.6.4协作角色232
6.6.5结论233
6.6.6实现策略233
6.6.7相关模式234
6.6.8样例模型234
6.7垃圾紧凑器模式236
6.7.1抽象236
6.7.2问题237
6.7.3模式结构237
6.7.4协作角色238
6.7.5结论239
6.7.6实现策略240
6.7.7相关模式240
6.7.8样例模型240
6.8参考文献242
第7章资源模式243
7.1导引244
7.2临界区模式249
7.2.1抽象249
7.2.2问题249
7.2.3模式结构249
7.2.4协作角色250
7.2.5结论251
7.2.6实现策略252
7.2.7相关模式252
7.2.8样例模型252
7.3优先级继承模式254
7.3.1抽象254
7.3.2问题254
7.3.3模式结构254
7.3.4协作角色255
7.3.5结论257
7.3.6实现策略260
7.3.7相关模式260
7.3.8样例模型260
7.4最高加锁器模式262
7.4.1抽象262
7.4.2问题263
7.4.3模式结构263
7.4.4协作角色264
7.4.5结论265
7.4.6实现策略266
7.4.7相关模式266
7.4.8样例模型266
7.5优先级最高限模式268
7.5.1抽象268
7.5.2问题268
7.5.3模式结构269
7.5.4协作角色271
7.5.5结论272
7.5.6实现策略273
7.5.7相关模式273
7.5.8样例模型273
7.6同时锁定模式275
7.6.1抽象275
7.6.2问题276
7.6.3模式结构276
7.6.4协作角色277
7.6.5结论278
7.6.6实现策略279
7.6.7相关模式279
7.6.8样例模型280
7.7排序锁定模式282
7.7.1抽象282
7.7.2问题282
7.7.3模式结构282
7.7.4协作角色284
7.7.5结论284
7.7.6实现策略285
7.7.7相关模式285
7.7.8样例模型285
7.8参考文献287
第8章分布模式289
8.1导引290
8.2共享内存模式291
8.2.1抽象292
8.2.2问题292
8.2.3模式结构292
8.2.4协作角色292
8.2.5结论294
8.2.6实现策略294
8.2.7相关模式295
8.2.8样例模型295
8.3远程方法调用模式297
8.3.1抽象297
8.3.2问题297
8.3.3模式结构297
8.3.4协作角色298
8.3.5结论299
8.3.6实现策略300
8.3.7相关模式301
8.3.8样例模型301
8.4守望者模式303
8.4.1抽象303
8.4.2问题303
8.4.3模式结构304
8.4.4协作角色305
8.4.5结论306
8.4.6实现策略306
8.4.7相关模式307
8.4.8样例模型307
8.5数据总线模式309
8.5.1抽象309
8.5.2问题309
8.5.3模式结构309
8.5.4协作角色311
8.5.5结论314
8.5.6实现策略315
8.5.7相关模式315
8.5.8样例模型315
8.6代理模式318
8.6.1抽象318
8.6.2问题318
8.6.3模式结构319
8.6.4协作角色320
8.6.5结论321
8.6.6实现策略322
8.6.7相关模式322
8.6.8样例模型322
8.7中介模式325
8.7.1抽象325
8.7.2问题325
8.7.3模式结构325
8.7.4协作角色327
8.7.5结论328
8.7.6实现策略329
8.7.7相关模式330
8.7.8样例模型330
8.8参考文献331
第9章安全性和可靠性模式333
9.1导引334
9.1.1处理故障336
9.2保护式单通道模式337
9.2.1抽象337
9.2.2问题337
9.2.3模式结构337
9.2.4协作角色338
9.2.5结论339
9.2.6实现策略340
9.2.7相关模式340
9.2.8样例模型340
9.3同质冗余模式342
9.3.1抽象342
9.3.2问题342
9.3.3模式结构342
9.3.4协作角色343
9.3.5结论344
9.3.6实现策略345
9.3.7相关模式345
9.3.8样例模型345
9.4三模块冗余模式347
9.4.1抽象347
9.4.2问题347
9.4.3模式结构347
9.4.4协作角色348
9.4.5结论349
9.4.6实现策略349
9.4.7相关模式349
9.4.8样例模型350
9.5异质冗余模式351
9.5.1抽象351
9.5.2问题351
9.5.3模式结构352
9.5.4协作角色352
9.5.5结论353
9.5.6实现策略354
9.5.7相关模式354
9.5.8样例模型354
9.6监视器执行器模式355
9.6.1抽象355
9.6.2问题356
9.6.3模式结构356
9.6.4协作角色356
9.6.5结论358
9.6.6实现策略358
9.6.7相关模式359
9.6.8样例模型359
9.7心智检查模式360
9.7.1抽象360
9.7.2问题361
9.7.3模式结构361
9.7.4协作角色361
9.7.5结论363
9.7.6实现策略363
9.7.7相关模式363
9.7.8样例模型363
9.8看门狗模式364
9.8.1抽象364
9.8.2问题365
9.8.3模式结构365
9.8.4协作角色367
9.8.5结论368
9.8.6实现策略368
9.8.7相关模式369
9.8.8样例模型369
9.9安全执行模式370
9.9.1抽象370
9.9.2问题370
9.9.3模式结构370
9.9.4协作角色371
9.9.5结论373
9.9.6实现策略373
9.9.7相关模式373
9.9.8样例模型374
9.10参考文献375
附录A表示法总结376
附录B模式索引392
猜您喜欢

读书导航