系统和系统架构,是两个让人觉得既熟悉又模糊的词语。说熟悉,是因为很多领域都频繁地提到它们;说模糊,则是因为不同的领域和不同的人,对这两个词的定义及范围,都有着不同的理解。而本书正是要从各领域对系统架构的理解和构建中,总结出一套共识,使大家能够更为清晰地看到复杂的产品在研发策略方面所体现出的共性。
本书第一部分讲解了什么是系统,其中主要强调整体思维的作用,并强调系统的整体功能必须大于各部件的功能之和。多出来的这些功能,就称为涌现物。
为了使系统涌现出良好的功能,我们需要对它进行分析。于是,第二部分就从形式和功能这两个方面讲解了如何分析系统,并且把系统架构这个概念描述为对形式和功能之间的映射关系所做的分配,同时,还强调了各部件之间的交互以及本系统与周边环境之间的互动。这些问题对于系统的价值来说至关重要。
在明确了系统和系统架构的含义之后,第三部分开始讲解如何创建良好的系统架构。产品上游和下游的影响因素,以及利益相关者所提出的各种需求,都是架构师必须要考虑的问题,因此,第11章开头给出了一套思维框架,使我们可以把庞杂的需求转化为凝练的目标,并确定这些目标之间的先后次序。接下来,讨论了怎样把这些目标汇聚成与特定解决方案无关的概念。之所以要先把特定的解决方案抛开,是为了使架构师能够把抽象的概念细化为多个片段,并运用创造力来探索它们的各种实现及组合方式,然后把那些能够满足客户需求的方式逐渐演化为具体的架构。由于很多系统本质上是非常复杂的,因此,在把概念演化为架构的过程中,架构师需要对系统进行分解,以看清这些组件的结构以及它们之间的交互情况。
同一个组件可能有多种实现方式,而组件之间的布局及交互情况,也是多种多样的,这就需要我们对其中较为关键的几个决策点做出选择。于是,第四部分从决策角度探讨系统架构。对每一个这样的架构决策来说,各选项之间的搭配方式可能极为繁多,因此,为了进行定量分析,我们需要根据一些衡量指标来构建权衡空间,并把各种候选架构都展示在该空间中的对应坐标上,以便使用优化算法找出优势较大的架构。
以上四个部分就是全书的主线。作者把系统架构的分析和综合过程中所提到的相关理念,总结成了20多条架构原则,使我们可以在系统架构的各环节中把握住重点,这也是本书的一个特色。它的另外一个特色在于:作者对照建筑学中的模式语言,以及软件开发中的设计模式,把各种架构决策问题也归纳成6种模式,使架构师能够在不同的工作场景中选用合适的模式及算法来对这些问题进行程序化的处理。
本书提供了丰富的架构展示方法和架构分析公式,也给出了适用面较为广泛的原则和模式,在面对具体的项目时,我们应该根据自己的经验和判断力,灵活地运用这些工具。
翻译过程中,我得到了机械工业出版社诸位编辑和工作人员的帮助,在此深表感谢。
封面图
目录
- 系统架构原则
- 译者序
- 推荐序
- 前言
- 致谢
- 作者介绍
- 第一部分系统思维
- 第1章系统架构简介 …… 2
- 1.1复杂系统的架构 …… 2
- 1.2良好架构的优势 …… 2
- 1.3学习目标 …… 5
- 1.4本书结构 …… 6
- 1.5参考资料 …… 7
- 第2章系统思维 …… 8
- 2.1简介 …… 8
- 2.2系统与涌现 …… 8
- 2.2.1系统 …… 8
- 2.2.2涌现 …… 10
- 2.3任务一:确定系统及其形式与功能 …… 13
- 2.3.1形式与功能 …… 13
- 2.3.2工具-过程-操作数:这是人类的标准思维模式吗 …… 16
- 2.4任务二:确定系统中的实体及其形式与功能 …… 16
- 2.4.1具备形式与功能的实体 …… 17
- 2.4.2确定如何将系统初步分解为恰当的实体 …… 18
- 2.4.3用整体思维找出系统中的潜在实体 …… 19
- 2.4.4集中注意力,找出系统中的重要实体 …… 21
- 2.4.5为实体创建抽象或从实体中发现抽象 …… 22
- 2.4.6定义系统的边界,并将其与外围环境隔开 …… 24
- 2.5任务三:确定实体之间的关系 …… 25
- 2.5.1关系的形式与功能 …… 25
- 2.5.2外部接口 …… 28
- 2.6任务四:涌现 …… 28
- 2.6.1涌现的重要性 …… 28
- 2.6.2系统故障 …… 29
- 2.6.3预测涌现物 …… 30
- 2.6.4涌现物依赖于实体及其关系 …… 31
- 2.7小结 …… 32
- 2.8参考资料 …… 33
- 第3章思考复杂的系统 …… 34
- 3.1简介 …… 34
- 3.2系统中的复杂度 …… 34
- 3.2.1复杂度 …… 34
- 3.2.2引入Team XT这一范例系统 …… 35
- 3.3系统的分解 …… 38
- 3.3.1分解 …… 38
- 3.3.2体系 …… 39
- 3.3.3层级分解 …… 39
- 3.3.4简单的系统、复杂度适中的系统以及复杂的系统 …… 41
- 3.3.5原子部件 …… 42
- 3.4特殊的逻辑关系 …… 43
- 3.4.1类/实例关系 …… 43
- 3.4.2特化关系 …… 43
- 3.4.3递归 …… 44
- 3.5对复杂系统进行思索 …… 44
- 3.5.1自顶向下及自底向上式的思考 …… 44
- 3.5.2交替思考 …… 45
- 3.6架构展示工具:SysML与OPM …… 45
- 3.6.1视图与投射 …… 45
- 3.6.2SysML …… 46
- 3.6.3OPM …… 46
- 3.7小结 …… 49
- 3.8参考资料 …… 50
- 第二部分系统架构的分析
- 第4章形式 …… 53
- 4.1简介 …… 53
- 4.2架构中的形式 …… 53
- 4.2.1形式 …… 53
- 4.2.2用解析表示法来表现形式:对象 …… 56
- 4.2.3形式的分解 …… 57
- 4.3对架构中的形式进行分析 …… 58
- 4.3.1定义系统 …… 58
- 4.3.2确定形式实体 …… 59
- 4.3.3把泵作为复杂度适中的系统来分析 …… 61
- 4.4对架构中的形式关系进行分析 …… 63
- 4.4.1形式关系 …… 63
- 4.4.2空间/拓扑形式关系 …… 65
- 4.4.3用图和图表来展现形式关系:OPM …… 67
- 4.4.4用表格及类似矩阵的视图来展现形式关系:DSM …… 70
- 4.4.5连接性的形式关系 …… 71
- 4.4.6其他的形式关系 …… 74
- 4.5形式环境 …… 75
- 4.5.1伴生系统、整个产品系统及系统边界 …… 75
- 4.5.2使用情境 …… 77
- 4.6软件系统中的形式 …… 77
- 4.6.1软件系统:信息形式及其二元性 …… 77
- 4.6.2软件中的形式实体与形式关系 …… 79
- 4.6.3软件系统所在的整个产品系统、软件系统的边界及使用情境 …… 81
- 4.7小结 …… 82
- 4.8参考资料 …… 82
- 第5章功能 …… 83
- 5.1简介 …… 83
- 5.2架构中的功能 …… 84
- 5.2.1功能 …… 84
- 5.2.2把功能视为过程加操作数 …… 84
- 5.2.3用解析表示法来展现功能 …… 85
- 5.3分析对外展现的功能和价值 …… 89
- 5.3.1对外界展现的主要功能 …… 89
- 5.3.2与价值有关的操作数 …… 90
- 5.4对内部功能进行分析 …… 93
- 5.4.1内部功能 …… 93
- 5.4.2确定内部功能 …… 94
- 5.5分析功能交互及功能架构 …… 97
- 5.5.1功能交互与功能架构 …… 97
- 5.5.2确定功能交互 …… 98
- 5.5.3价值通路 …… 100
- 5.5.4涌现与细分 …… 101
- 5.5.5软件系统中的功能架构 …… 102
- 5.6与价值相关的次要外部功能及内部功能 …… 105
- 5.7小结 …… 106
- 5.8参考资料 …… 107
- 第6章系统架构 …… 108
- 6.1简介 …… 108
- 6.2系统架构:形式与功能 …… 109
- 6.2.1形式与功能之间的映射 …… 109
- 6.2.2确定形式与过程之间的映射 …… 114
- 6.2.3形式结构承载并展现功能交互 …… 116
- 6.2.4确定形式结构是如何承载功能和性能的 …… 118
- 6.3系统架构中的非理想因素、支持层及接口 …… 119
- 6.3.1系统架构中的非理想因素 …… 119
- 6.3.2系统架构中的支持功能及支持层 …… 120
- 6.3.3形式与功能中的系统接口 …… 121
- 6.4操作行为 …… 123
- 6.4.1操作者 …… 124
- 6.4.2行为 …… 124
- 6.4.3操作成本 …… 126
- 6.5用各种表示法来推究系统架构 …… 127
- 6.5.1能够对系统架构进行简化的几种方式 …… 127
- 6.5.2用投射法来表示系统的架构 …… 128
- 6.5.3把过程投射到对象 …… 129
- 6.5.4把过程和操作数投射到形式 …… 130
- 6.6小结 …… 133
- 6.7参考资料 …… 134
- 第7章与特定解决方案无关的功能和概念 …… 135
- 7.1简介 …… 135
- 7.1.1正向工程与更加复杂的系统 …… 135
- 7.1.2对与特定解决方案无关的功能和概念所做的介绍 …… 136
- 7.2确定与特定解决方案无关的功能 …… 138
- 7.3概念 …… 140
- 7.3.1作为一种观念的概念 …… 140
- 7.3.2对概念构想有所帮助的框架 …… 142
- 7.3.3构想概念时所应依循的步骤 …… 144
- 7.3.4为概念命名 …… 145
- 7.3.5对候选的概念进行整理 …… 146
- 7.3.6由更为广阔的概念所形成的体系 …… 150
- 7.4整体概念 …… 152
- 7.5操作概念与服务概念 …… 156
- 7.6小结 …… 158
- 7.7参考资料 …… 159
- 第8章从概念到架构 …… 160
- 8.1简介 …… 160
- 8.2研发系统之下第1级的架构 …… 161
- 8.2.1把概念扩展为功能架构 …… 161
- 8.2.2定义形式 …… 162
- 8.2.3把功能映射为形式 …… 164
- 8.3研发系统之下第2级的架构 …… 166
- 8.3.1第2级的功能意图以及对第2级所做的递归思考 …… 166
- 8.3.2研发第2级中的架构 …… 166
- 8.4家庭数据网络系统的第2级架构 …… 170
- 8.5为系统之下的第1级架构做模块化处理 …… 173
- 8.6小结 …… 176
- 8.7参考资料 …… 177
- 第三部分创建系统架构
- 第9章架构师的角色 …… 180
- 9.1简介 …… 180
- 9.2歧义与架构师的角色 …… 180
- 9.2.1架构师的角色 …… 180
- 9.2.2减少歧义 …… 182
- 9.2.3架构师可以交付的成果 …… 185
- 9.3产品开发过程 …… 186
- 9.3.1各企业所使用的PDP之间的异同 …… 187
- 9.3.2通用的产品开发过程 …… 191
- 9.4小结 …… 195
- 9.5参考资料 …… 199
- 第10章上游和下游对系统架构的影响 …… 200
- 10.1简介 …… 200
- 10.2上游的影响因素:公司策略 …… 201
- 10.3上游的影响因素:营销 …… 204
- 10.3.1内向营销 …… 205
- 10.4上游的影响因素:法规及类似法规的因素 …… 207
- 10.4.1法规的来源 …… 208
- 10.4.2与法规类似的因素:可能出台的法规、标准和法律责任 …… 209
- 10.5上游的影响因素:技术融合 …… 210
- 10.6下游的影响因素:实现—编码、制造及供应链管理 …… 212
- 10.7下游的影响因素:操作 …… 214
- 10.7.1系统的登场与退场 …… 215
- 10.7.2偶发操作、应急操作与独立操作 …… 216
- 10.8下游的影响因素:Design for X …… 216
- 10.9下游的影响因素:产品与系统的演化、产品系列 …… 218
- 10.9.1复用与遗留元素 …… 219
- 10.9.2产品系列 …… 220
- 10.9.3平台与架构 …… 221
- 10.10产品论证:架构商业论证决策框架(ABCD) …… 224
- 10.11小结 …… 226
- 10.12参考资料 …… 229
- 第11章将需求转换为目标 …… 231
- 11.1简介 …… 231
- 11.2确定受益者和利益相关者 …… 232
- 11.2.1受益者和利益相关者 …… 232
- 11.2.2确定受益者和利益相关者的需求 …… 235
- 11.2.3从交换中确定利益相关者及其需求 …… 238
- 11.2.4对利益相关者进行分组 …… 240
- 11.3描述需求的特征 …… 242
- 11.3.1从各种维度来描述利益相关者的需求 …… 242
- 11.3.2将利益相关者作为系统:间接的价值交付及利益相关者关系图 …… 244
- 11.3.3在各个利益相关者的需求之间排定优先次序 …… 247
- 11.3.4对排列各需求的优先次序所做的小结 …… 251
- 11.4把需求转换为目标 …… 252
- 11.4.1设定目标时所依据的标准 …… 253
- 11.4.2人类可以解决的目标:系统问题陈述 …… 255
- 11.5排列目标之间的优先次序 …… 259
- 11.5.1具备一致性与可达成性的目标 …… 262
- 11.6小结 …… 263
- 11.7参考资料 …… 270
- 附:对利益相关者提出的系统需求所进行的特征分析 …… 271
- 第12章用创造力生成概念 …… 272
- 12.1简介 …… 272
- 12.2对概念进行创新 …… 273
- 12.2.1创新 …… 273
- 12.2.2无结构的创新 …… 274
- 12.2.3结构化的创新 …… 274
- 12.2.4确定概念 …… 277
- 12.3提出概念 …… 278
- 12.4扩充概念并提出概念片段 …… 279
- 12.4.1对推进功能进行扩充 …… 279
- 12.4.2混合动力车的另外7个内部功能所对应的概念片段 …… 282
- 12.5演化并完善整体概念 …… 285
- 12.6选出几个整体概念,做进一步的发展 …… 288
- 12.7小结 …… 291
- 12.8参考资料 …… 295
- 第13章把分解作为复杂度管理工具来使用 …… 296
- 13.1简介 …… 296
- 13.2理解复杂度 …… 296
- 13.2.1复杂度 …… 296
- 13.2.2复杂与难懂 …… 299
- 13.2.3必要的复杂度 …… 301
- 13.3管理复杂度 …… 305
- 13.3.1选定分解方式 …… 305
- 13.3.2模块化程度与分解 …… 308
- 13.4小结 …… 312
- 13.5参考资料 …… 317
- 第四部分作为决策的架构
- 第14章作为决策制定过程的系统架构 …… 321
- 14.1简介 …… 321
- 14.2对阿波罗计划的架构决策问题进行公式化处理 …… 322
- 14.2.1做决策时可以考虑的经验法则 …… 322
- 14.2.2阿波罗计划的决策 …… 323
- 14.2.3约束及衡量指标 …… 325
- 14.2.4计算各种阿波罗架构的得分 …… 327
- 14.3决策与决策支持 …… 328
- 14.4决策支持系统的四项主要任务 …… 330
- 14.5基本的决策支持工具 …… 331
- 14.5.1形态矩阵 …… 332
- 14.5.2设计结构矩阵 …… 332
- 14.5.3决策树 …… 334
- 14.6为系统架构提供决策支持 …… 338
- 14.7小结 …… 339
- 14.8参考资料 …… 340
- 第15章探求架构的权衡空间 …… 343
- 15.1简介 …… 343
- 15.2权衡空间的基本知识 …… 344
- 15.3帕累托前沿 …… 347
- 15.3.1帕累托前沿与占优 …… 347
- 15.3.2GNC范例系统的帕累托前沿 …… 348
- 15.3.3模糊的帕累托前沿及其好处 …… 351
- 15.3.4在模糊的帕累托前沿上挖掘数据 …… 352
- 15.3.5帕累托前沿的运用机理 …… 354
- 15.4权衡空间的结构 …… 355
- 15.5敏感度分析 …… 359
- 15.6整理架构决策 …… 364
- 15.6.1对其他决策的影响 …… 364
- 15.6.2对衡量指标的影响 …… 366
- 15.6.3决策空间视图 …… 367
- 15.6.4对决策进行排序 …… 368
- 15.6.5对决策及其顺序的总结 …… 370
- 15.7小结 …… 371
- 15.8参考资料 …… 372
- 第16章系统架构优化问题的表述与求解 …… 374
- 16.1简介 …… 374
- 16.2对系统架构优化问题进行表述 …… 375
- 16.3NEOSS范例:NASA的地球观测卫星系统 …… 379
- 16.4系统架构决策中的模式 …… 381
- 16.4.1从程序化的决策到模式 …… 382
- 16.4.2DECISION-OPTION模式 …… 383
- 16.4.3DOWN-SELECTING模式 …… 386
- 16.4.4ASSIGNING模式 …… 389
- 16.4.5PARTITIONING模式 …… 395
- 16.4.6PERMUTING模式 …… 399
- 16.4.7CONNECTING模式 …… 402
- 16.5对大规模的系统架构问题进行表述 …… 406
- 16.5.1模式之间的重合 …… 407
- 16.5.2把问题分解为子问题 …… 409
- 16.6解决系统架构优化问题 …… 410
- 16.6.1介绍 …… 410
- 16.6.2全因子排列 …… 411
- 16.6.3启发式的架构优化算法 …… 412
- 16.6.4基于种群的通用启发式优化 …… 413
- 16.6.5生成初始种群 …… 414
- 16.6.6把某些固定的架构包含在初始种群中 …… 415
- 16.6.7通用的启发式和元启发式高效搜索 …… 416
- 16.6.8遗传算法中的启发式策略 …… 416
- 16.6.9用更多的启发式技术来强化遗传算法 …… 418
- 16.7小结 …… 419
- 16.8参考资料 …… 420
- 附录A根据所选的架构集来计算衡量指标对决策的敏感度 …… 423
- 附录B聚类算法及其在系统架构中的运用 …… 425
- 附录C基于规则的系统及其在系统架构中的应用 …… 430
- 附录D经典的组合优化问题 …… 436
- 各章问题 …… 441