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

基于构件的产品线工程:UML方法
作者 : (德)Colin Atkinson 等
译者 : 顾剑 钟鸣 束尧 等
出版日期 : 2005-03-02
ISBN : 7-111-15655-2
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 416
开本 : 16开
原书名 : Component-based ProductLine Engineering with UML
原出版社: Pearson Education Limited
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

图书前言

在软件开发过程中将各种级别的重用引入到产品线,是其他工程学科一直都在追求却又达不到的目标。然而,在过去的几年里,一些新的开发范型的出现彻底改变了这种状况,使得软件工程能够在工程学科这个大家族中找到一席之地。其中最引入注目的就是基于构件的软件开发和产品线工程。按照粒度从小到大排序,一端是构件—即能快速简单地组装成新系统的可重用的软件构件块;而另一端则是产品线工程—即在单一的可高度重用的软件核心内,将产品中一定结构范围内的所有公共部分合并。
  遗憾的是,在企业级的软件开发中应用这些范型往往会遭遇挫折,因为缺乏规范的系统方法。目前有很多软件方法都涉及到构件或产品线,但这两种开发范型在这些软件方法之中的应用时机要么是太迟—直到软件生命周期的后期阶段(在构件的情况下),要么是太早—在软件生命周期的前期阶段(在产品线的情况下)。现有的方法几乎都不能够在软件开发的所有阶段和层次上将构件和产品线自然地协同起来。本书介绍一种新的方法—KobrA,它致力于在整个软件的生命周期,为基于构件的产品线工程提供一种简单的、规范的、系统的方法。该方法还利用UML(Unified Modeling Language, 统一建模语言),以兼容于大多数主流实现技术和中间件技术(包括领先的构件技术)的方式,向这两种范型提供支持。这样,它也为将MDA技术应用于软件工程奠定了基础。
  KobrA的主要目标是通过定义一个尽可能简单且正交的特征集来避免特征重载—这在其他许多方法中是存在的。尤其是,KobrA的产品和过程都是基于一个最小核心原则集的递归应用。KobrA的另一个要点和质量有关。构件和产品线的强大之处在于它们能够提高重用性,这就要求可重用的资源应该尽可能具有最好的质量。显然,系统地开发和重用低质量工件的组织机构是好景不长的。因此,具有良好定义的一致性规则和对其进行验证的系统技术都集成到了KobrA方法的方方面面中。
  在软件开发方法的演变过程中,不同的时期具有不同的特征:最初是大量概念的迅速激增;接下来则是这些概念的统一和合并。UML的历史就是这种模式最典型的例子。我们希望KobrA中的理念标志着我们向基于构件的开发概念和产品线的开发概念相结合的方向又迈进了一步,也希望其有助于一些关键性原则的发现和改进。产品线工程的一大特征是分析和明确指出某个产品家族中不同成员之间的共性和差异。基于构件开发的一大特征是在分析和设计的层面上进行“局部化的”工件开发(比如UML图),着重于对单个逻辑抽象体(即构件)的描述。我们采用这两个核心理念作为本书的主干。

KobrA项目
  本书中描述的方法是在开发由德国联邦教育研究部(BMBF)资助的Komponentenbasierte Anwendungsentwicklung(即KobrA)项目中开发出来的。在此项目中,有四个组织在协同工作:
  * Fraunhofer-Institut f焤 Experimentelles Software Engineering (IESE), 凯泽斯劳滕
  * GMD-Forschungszentrum Informationstechnik (GMD-FIRST), 柏林
  * PSIPENTA Software Systems GmbH, 柏林
  * Softlab GmbH, 慕尼黑(项目领导人)
Fraunhofer IESE主要负责KobrA方法的研究;GMD-FIRST和Softlab负责开发一个补充性的工作台,以支持KobrA方法和商业CASE工具的配合使用;而PSIPENTA则为ERP(企业资源规划)领域的方法提供测试床。

读者对象
  本书主要适用于正在寻找一种简单但规范的软件开发方法的软件工程师,尤其是关心如何利用现有软件资源去开发某个应用系列的开发人员。由于本书中的方法具有模块化的自然特性,所以其中的主要技术都能彼此独立地应用。寻求基于构件开发方式支持的开发人员可以独立地应用面向构件的理念,而不用考虑产品线理念;同样,寻求MDA支持的开发人员可以独立地应用相应的规约和实现思想,而不用考虑构件。
  本书对于希望进一步了解基于构件的开发和/或产品线工程的关键原则及其之间相互关系的学者和学生同样适用。
  读者最好能熟悉软件工程的基本概念、面向对象软件开发的基本原理以及UML的主要特征。

本书结构
  本书按五个部分来进行组织。第一部分介绍KobrA的方法和背景,并给出KobrA关键特征的概述;第二部分重点讲述在不考虑产品线问题的情况下,如何利用UML进行逻辑构件系统的建模;第三部分描述了如何通过直接实现或者重用已有构件,比如COTS(Commercial Off-The-Shelf,商业现货)构件,得到可执行的逻辑构件,同时讨论了如何使其适应于增量开发方法,第四部分重点讲述产品线工程,并展示了如何实现对产品线的支持,最后,第五部分重点讲述了关键性的支持活动—维护、质量保证、质量建模,以及如何将KobrA引入到现实软件开发环境中。
  随后是本书的两个附录。附录A介绍KobrA元模型,包括对构件结构及其之间相互关系进行管理的一致性规则的完整列表。附录B提供KobrA过程的详细规约,包括一个完整的列表,其中列出了组成该过程的活动及这些活动之间的产品流依赖关系。

图书馆案例研究
  一个单独的可运行的案例研究几乎贯穿于本书(第一部分除外)的全部章节,用于说明KobrA方法的应用。之所以将图书馆管理系统作为本书的研究案例,是因为几乎每一个人都熟悉它的基本概念。图书馆管理系统有助于图书馆管理员和信息专家对图书馆进行管理,包括与用户的交互、库存和账户管理。
  基本的图书馆系统包括用户注册、库存书目的管理,以及跟踪所有书目的借出、归还和预订。这个基本的图书馆系统被选为图书馆管理系统家族的特殊成员,用来在本书第二部分和第三部分说明一个系统的开发。
  由于对KobrA中产品线概念的解释涉及到图书馆系统的更多细节,为此,本书分析了三个图书馆系统,并用一个总的框架对三者的共性和差异进行建模。本书第四部分解释了该案例的扩展研究,其中包含了产品线技术。
  完整的案例研究—包括基本的图书馆系统和图书馆系统产品线—在[BMG01]中做了描述,读者可以在本书的网站上找到它。

致谢
  作者非常感激为本书中所描述的思想提供支持和做出贡献的众多友人。首先,我们要感谢KobrA项目和KobrA委员会中的同事:PSIPENTA Software Systems GmbH的Marion Dikel、Robert Hagemann、Gernot Krause、J歳g Lucas、Jens Reinhold和Torsten Sander、Softlab GmbH的Martin Dehn、G焠ther Merbeth、Friedrich R歴sler和Uwe Zeithammer、GMD-FIRST的Matthias Anlauf、Marko Fabiunke、Joanna Filipek、Boris Groth、Stefan J奾nichen和Ronald Melster,以及Fraunhofer IESE的G焠ther Ruhe。其次,我们还要感谢我们在IESE的以前和现在的同事:特别是Stan Jarzabek、Dieter Rombach、Peter R歴ch和Tanya Widen。第三,我们还要感谢为本书草稿提供宝贵反馈意见的审稿人员,特别是Morgan Bjorkander、Mathias Clauss、Mike Fischer、Hans-Gerhard Grob、Bernhard Humm、Heinrich Hussman、Thomas K焗ne、Cris Kobryn、Antje von Knethen和Frank Maurer。最后,还要特别感谢Brigitte G歱fert对本书案例研究中的图书馆信息领域提出的见解和专家意见,Maud Schlich为测试章节所做出的贡献,Jhair Tocancipa的EJB和CORBA实例,以及Addison-Wesley出版社的编辑Alison Birtwell对本书的鼓励和支持。最后还要感谢Fraunhofer IESE和BMBF对我们工作的支持。

网站
本书关的更多信息请访问本书的网站:
www.iese.fhg.de/KobrA/book
www.kobra-project.org

图书序言

采用基于构件的方法进行系统的设计和构建是如此直观、诱人,因此基于构件的系统似乎是易于构建的。事实果真如此吗?这么多年以来,我们知道光凭直觉还是不够的。自20世纪60年代开始出现构件化方法,软件工程就一直在朝这个方向努力。在此期间,我们取得了长足的进步,并且在最近(几)十年里,我们已懂得如何使用小粒度的构件—对象—来开发系统。
  现今,我们的工作领域发生了改变:一个大规模的、基于网络的、构建于各种粒度构件之上的系统呈现于众人眼前。本书叙述了该领域的重要进展,并重点讲述了如何架构一个大规模的、基于构件的系统这一复杂问题。本书所采用的具有很强实用性的方法来自于面向对象的方法学(比如OMT、Objectory、Fusion、Catalysis)的最佳实践,以及一些形式化的方法(比如Cleanroom方法等)。
  本书还描述了用来进行架构建模的KobrA方法。KobrA是一种系统方法,它使用UML这一令人振奋的简单而又直观的工具。对于构件的作者来讲,所遇到的问题之一就是如何定义“构件”。构件这个词的应用范围非常广,所以很难给它下一个清晰的定义。为了克服这一点,KobrA引入了另外一个新术语:“Komponent”。“Komponent”是逻辑构件,表示构建一个软件系统的逻辑构件块(在本书中,Komponent都统一译成“K-构件”。—译者注)。
  KobrA从概念上讲是很清晰的,因为它只采用了少数几个概念,而这些概念广泛适用于各种级别的粒度和抽象系统。因此,KobrA中所述方法从本质上讲既适用于小规模系统又适用于大规模系统,而无须在概念、产品或活动方面进行根本性的改变。这样做的一个好处是,在一个项目中,在某一点采取什么样的开发活动主要是由所开发的工件的属性所决定的,而不是由架构的规模大小和位置决定的。
  实践证明KobrA是有效的,因为它的规定很自然。KobrA建议用符合逻辑的、递归的过程去开发工程工件。对每一个工件,KobrA都解释了哪些输入是必须提供的,以及哪些一致性的检查是必须完成的。这样的系统过程并没有束缚住开发者,KobrA没有要求开发者一切都从头开始,实际上KobrA更关注软件重用。
  KobrA不仅关注单个的应用以及系统,它致力于产品线技术的研究。软件产品线是一个非常重要的软件开发新范型。产品线技术根据产品的成本效益对产品进行有差异的开发,使得各种组织机构都能够及时对市场做出反应和降低成本。KobrA率先提出了一种适用于框架工程的系统方法学。
  KobrA与一系列的业界标准保持一致。业界已经越来越清楚地意识到,应该以一种一致的、与应用领域和中间件平台无关的方式进行软件架构的建模。在2001年春天,OMG(Object Management Group,对象管理组—一个在分布式系统和构件技术领域居领导地位的标准化组织)宣布了MDA(Model Driven Architecture,模型驱动架构),通过UML支持这种新的系统架构方式。MDA支持跨平台的互操作性,提高了设计和实现的可重用性,降低了应用开发和维护的成本。MDA是基于UML的,所以KobrA方法可谓是支持MDA的第一个全面的方法。
  本书的出版,是Colin Atkinson和他在Fraunhofer IESE的同事们为基于构件的方法学和架构设计做出的重大贡献。我希望读者也像我一样,能够从本书有所收获。如果读者希望系统地了解如何进行基于构件的系统架构设计,本书无疑是最佳的选择。

Derek Coleman
RosettaNet首席技术官
www.rosettanet.org
2001年7月

作者简介

(德)Colin Atkinson 等:Colin Atkinson: 博士,德国曼海姆大学(University of Mannheim)软件工程团队的主要负责人。他于1990年获得了伦敦帝国理工学院(Imperial College)的计算机科学博士学位。他的研究兴趣主要集中在如何在可依赖的计算系统的开发中使用模式驱动和基于构件的开发方法。

译者简介

顾剑 钟鸣 束尧 等:暂无简介

译者序

本书的重点在于基于构件的开发方法和产品线工程的结合。UML是一种比较成熟的标准和工具,使用UML对本书所提到的KobrA方法进行描述,更易于读者理解。
  基于构件的开发是一种革命性的软件开发和维护方式。然而,现代的构件技术仅仅只在开发的最后阶段才支持构件,而早期的分析和设计工作仍然是以传统的、非面向构件的方式进行。这就使得本书所讲述的KobrA方法具有极其重要的意义:KobrA方法使软件在其整个生命周期中,都可以充分利用基于构件的开发方式的优势,并通过产品线方法支持软件开发和演进,极大地提高了构件的可重用性,改善了软件的生产效率。
  本书的特点是首先提供了一个可运行的案例:图书馆系统。这个案例贯穿全书,以集成的方式举例说明了KobrA方法中的关键理念。其次,本书在内容组织上也比较有条理:先是在不考虑产品线技术的前提下,系统地讲述了基于构件开发的概念和核心原则;然后重点讲述了产品线工程及其与KobrA方法的结合,以循序渐进的方式让读者在不知不觉中掌握基于构件的开发方式与产品线方法的精髓。
  由于本书原著者的母语并非英语,所以在翻译的过程中有不少地方比较晦涩难懂,我们根据实际意义进行了一定的意译。
  本书主要由顾剑、钟鸣、束尧翻译。在翻译过程中,我们得到了张静、张煜、肖和平、张杰良、王景新、汪东、张英、张明军、许华、李慧霸、王凤芹等的大力支持,在此表示感谢。全书最后由顾剑统稿。Be Flying工作室负责人肖国尊负责本书翻译质量和进度的控制与管理。在本书翻译过程中,我们亦对书中的一些错误进行了更正。
  敬请各位读者提供关于本书的反馈意见,我们希望通过这些意见来了解自己的不足,以求在今后的译作中更全面地考虑读者的需要。读者可以将意见发送到be-flying@sohu.com。希望各位能够从本书获益!

图书目录

第一部分  概   述
第1章  背景知识 2
1.1  重用技术 2
1.1.1  基于构件的开发 2
1.1.2  架构风格和设计模式 3
1.1.3  产品线工程 4
1.2  开发方法 5
1.2.1  第一代面向对象的方法 5
1.2.2  面向构件的方法 9
1.2.3  面向产品线的方法 12
1.2.4  面向对象的方法框架 13
1.2.5  净室技术 17
1.3  基本目标 20
1.3.1  简单 20
1.3.2  系统化 20
1.3.3  可伸缩 20
1.3.4  实用 21
第2章  方法概述 22
2.1  核心概念 22
2.1.1  产品线工程 24
2.1.2  构件建模 25
2.1.3  构件具体化 29
2.1.4  项目的监督和控制 31
2.2  工件 33
2.2.1  框架 33
2.2.2  应用 40
2.3  过程 43
2.3.1  框架工程 44
2.3.2  应用工程 47
2.3.3  增量开发 48
2.4  与其他方法之间的关系 49
2.5  KobrA的关键属性 51
2.6  路线图 52
第二部分  构 件 建 模
第3章  KobrA的构件模型 56
3.1  构件 56
3.1.1  实例与类型 57
3.1.2  类与模块 58
3.1.3  子系统 58
3.2  构件组装 60
3.2.1  合成 60
3.2.2  客户关系 61
3.2.3  所有权 62
3.2.4  包容关系 63
3.3  构件建模 67
3.3.1  统一性原则 67
3.3.2  局部性原则 67
3.3.3  俭省性原则 70
3.3.4  封装性原则 70
3.4  建立构件树 75
3.4.1  多态性 75
3.4.2  可见性规则 77
3.4.3  一致性规则 78
3.4.4  塑造包容树 79
第4章  规约 81
4.1  规约工件 81
4.1.1  结构模型 82
4.1.2  功能模型 86
4.1.3  行为模型 90
4.1.4  辅助工件 94
4.2  规约过程 95
4.2.1  结构建模 95
4.2.2  功能建模 96
4.2.3  行为建模 96
4.2.4  质量控制 97
第5章  实现 98
5.1  实现工件 98
5.1.1  结构模型 99
5.1.2  活动模型 101
5.1.3  交互模型 106
5.1.4  辅助工件 108
5.2  实现过程 108
5.2.1  结构建模 109
5.2.2  活动建模 110
5.2.3  交互建模 111
5.2.4  质量控制 111
第6章  包容关系 113
6.1  包结构 113
6.2  工件 116
6.2.1  规约的关系 118
6.2.2  实现的关系 121
6.3  过程 122
6.3.1  DNA螺旋 122
6.3.2  标识构件 124
6.3.3  子构件的创建 125
6.3.4  树的重构 126
6.3.5  质量控制 127
第7章  上下文实现 129
7.1  上下文实现工件 130
7.1.1  企业模型 130
7.1.2  结构模型 132
7.1.3  活动模型 135
7.1.4  交互模型 139
7.2  上下文实现过程 140
7.2.1  企业建模 140
7.2.2  结构建模 140
7.2.3  使用建模 141
7.2.4  交互建模 142
7.2.5  质量控制 143
第8章  公有包容 144
8.1  公有包容与公有合成 144
8.1.1  公有合成 144
8.1.2  公有包容 146
8.2  工件 148
8.2.1  公有合成 148
8.2.2  公有包容 152
8.3  过程 153
8.3.1  公有合成 153
8.3.2  公有包容 155
8.3.3  质量控制 156
第9章  泛化 157
9.1  工件 157
9.1.1  结构模型 158
9.1.2  功能模型 161
9.1.3  行为模型 162
9.2  过程 162
9.2.1  特化 162
9.2.2  泛化 164
9.2.3  质量控制 164
第10章  构件与模式 166
10.1  什么是模式 166
10.2  利用KorbA中已有的模式 168
10.2.1  分层的架构模式 168
10.2.2  分布式系统的架构 173
10.3  构件包容模式 180
10.3.1  普遍可见性模式 180
10.3.2  按需知密模式 181
10.3.3  构件库模式 181
第三部分  具  体  化
第11章  实施 186
11.1  精化和翻译相分离 187
11.2  UML实施简档 189
11.2.1  普通对象格式 190
11.2.2  转换模式 191
11.3  实施工件 193
11.3.1  实施结构模型 193
11.3.2  构件图 195
11.3.3  伪代码 198
11.3.4  源代码 198
11.3.5  实施示例 199
11.4  实施过程 204
11.4.1  平化 205
11.4.2  精化 205
11.4.3  翻译 206
11.4.4  收尾 208
第12章  构件重用 209
12.1  重用的作用 209
12.2  重用工件 211
12.2.1  所期望的和已提供的规约 212
12.2.2  符合性映射 212
12.2.3  语义映射 214
12.3  重用过程 215
12.3.1  构件的选择 215
12.3.2  包容树的改造 217
第13章  增量开发 220
13.1  系统的构造与部署 220
13.1.1  系统的构造 220
13.1.2  部署 221
13.2  活动排序 222
13.3  工件 224
13.3.1  存根规约 224
13.3.2  基于构件的增量 225
13.4  过程 225
13.4.1  构件增量 228
13.4.2  操作增量 228
第四部分  产品线工程
第14章  产品线的概念 230
14.1  提高重用 230
14.1.1  领域工程 232
14.1.2  产品线工程 233
14.2  KobrA中的产品线工程 236
第15章  框架工程 239
15.1  通用构件模型 239
15.2  工件 241
15.2.1  上下文实现 242
15.2.2  KobrA构件规约 253
15.2.3  KobrA构件的实现 260
15.2.4  KobrA中K-构件的具体化 264
15.3  过程 265
15.3.1  差异的标识 265
15.3.2  决策模型 266
15.3.3  KobrA构件的标识 266
15.3.4  KobrA构件的具体化 267
第16章  应用工程 270
16.1  工件 270
16.2  过程 271
16.2.1  上下文实现的实例化 271
16.2.2  规约和实现的实例化 272
第五部分  项 目 监 控
第17章  维护 276
17.1  核心原则 276
17.1.1  框架与应用相耦合 277
17.1.2  面向版本和面向变化集 278
17.1.3  关注点的分离 278
17.2  工件 279
17.2.1  配置项目 279
17.2.2  依赖关系 283
17.2.3  进化图 285
17.2.4  变化 286
17.3  过程 293
17.3.1  变化管理 293
17.3.2  配置管理 306
第18章  质量保证 310
18.1  获得质量 310
18.1.1  什么是质量 311
18.1.2  非功能性需求规约 312
18.1.3  质量保证技术 312
18.1.4  质量策略规约 313
18.1.5  质量文档 315
18.2  软件测试 315
18.2.1  测试工件 316
18.2.2  测试过程 318
18.3  软件校验 320
18.3.1  组织技术 321
18.3.2  读取技术 322
18.3.3  校验工件 323
18.3.4  校验过程 326
第19章  质量建模 328
19.1  什么是质量模型 328
19.2  结构化属性的测量 329
19.2.1  规模测量 329
19.2.2  耦合度测量 331
19.2.3  复杂度测量 335
19.3  质量模型示例 336
19.3.1  预测模型 337
19.3.2  质量基准 339
19.3.3  简单的等级模型 340
第20章  应用KobrA方法 342
20.1  KobrA方法的一般特性 342
20.2  定制 344
20.2.1  框架和构件的泛化 344
20.2.2  上下文实现的改进 345
20.2.3  K-构件建模的改进 345
20.2.4  实施、创建和部署 346
20.3  转换 346
20.3.1  转换规划 347
20.3.2  培训 347
20.3.3  工具支持 348
附录A  元模型 350
附录B  过程 382
术语表 405
参考文献 410

教学资源推荐
作者: Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides
作者: 窦万峰
作者: 聂长海 陆超逸 高维忠 郑志强 编著
参考读物推荐
作者: (美)Kent Beck; Cynthia Andres 著
作者: (美)John McGarry,David Card,Cheryl Jones等