图书目录

目录

第Ⅰ部分  耦合

第1章   耦合与系统设计  3

1.1  什么是耦合  3

1.2  耦合度  4

1.2.1  生命周期的共享  4

1.2.2  共享知识  5

1.3  知识流  7

1.4  系统  8

1.4.1  系统中的耦合  8

1.4.2  可选:机械工程中的耦合和成本管理  11

1.5  本章要点  12

1.6  小测验  13

第2章   耦合与复杂性:Cynefin框架  15

2.1  什么是复杂性  15

2.1.1  软件设计的复杂性  16

2.1.2  复杂性是主观的  16

2.2  Cynefin框架  16

2.2.1  明确  17

2.2.2  繁杂  17

2.2.3  复杂  17

2.2.4  混乱  19

2.2.5  无序  20

2.3  比较Cynefin领域  20

2.4  软件设计中的Cynefin  21

2.4.1  示例A:集成外部服务  21

2.4.2  示例B:更改数据库索引  23

2.5  Cynefin应用  25

2.6  Cynefin与复杂性  25

2.7  本章要点  25

2.8  小测验  26

第3章   耦合与复杂性:交互  29

3.1  复杂性的本质  29

3.2  复杂性与系统设计  30

3.2.1  线性交互  30

3.2.2  复杂交互  31

3.2.3  复杂性与系统规模  32

3.3  层次复杂性  32

3.3.1  仅优化全局复杂性  33

3.3.2  仅优化局部复杂性  34

3.3.3  平衡复杂性  35

3.4  自由度  35

3.4.1  软件设计中的自由度  35

3.4.2  自由度和复杂交互  37

3.5  复杂性与约束  37

3.5.1  示例:限制自由度  37

3.5.2  Cynefin多个领域中的约束  38

3.6  耦合与复杂交互  39

3.7  连接耦合和复杂性的示例  39

3.7.1  设计A:使用SQL筛选支持案例  39

3.7.2  设计B:使用查询对象  41

3.7.3  设计C:使用专用查找方法  42

3.7.4  耦合、自由度和约束  43

3.8  本章要点  44

3.9  小测验  44

第4章   耦合与模块化  47

4.1  模块化  47

4.2  模块  48

4.2.1  乐高积木  50

4.2.2  相机镜头  50

4.3  软件系统中的模块化  50

4.3.1  软件模块  51

4.3.2  软件模块的功能、逻辑和上下文  52

4.3.3  有效的模块  53

4.3.4  作为抽象的模块  54

4.4  模块化、复杂性与耦合  56

4.4.1  深层模块  56

4.4.2  模块化与复杂性  57

4.4.3  模块化:物极必反  58

4.5  模块化中的耦合  59

4.6  本章要点  60

4.7  小测验  60

第Ⅱ部分  维度

第5章   结构化设计的模块耦合  65

5.1  结构化设计  66

5.2  模块耦合  66

5.2.1  内容耦合  66

5.2.2  公共耦合  68

5.2.3  外部耦合  70

5.2.4  控制耦合  72

5.2.5  印章耦合  74

5.2.6  数据耦合  75

5.3  模块耦合层次的比较  77

5.4  本章要点  78

5.5  小测验  78

第6章   共生性  81

6.1  什么是共生性  81

6.2  静态共生性  82

6.2.1  名称共生性  82

6.2.2  类型共生性  83

6.2.3  意义共生性  84

6.2.4  算法共生性  85

6.2.5  位置共生性  86

6.3  动态共生性  87

6.3.1  执行共生性  87

6.3.2  时序共生性  88

6.3.3  值共生性  89

6.3.4  身份共生性  91

6.4  评估共生性  92

6.4.1  管理共生性  92

6.4.2  共生性与结构化设计中的模块耦合  93

6.5  本章要点  94

6.6  小测验  95

第7章   集成强度  97

7.1  耦合强度  97

7.1.1  结构化设计、共生性还是两者兼而有之  98

7.1.2  结构化设计与共生性:盲点  99

7.1.3  不同的策略  99

7.2  集成强度概念  100

7.3  侵入式耦合  101

7.3.1  侵入式耦合的示例  101

7.3.2  示例:共享数据库的侵入式耦合  102

7.3.3  侵入式耦合的影响  102

7.4  功能耦合  103

7.4.1  功能耦合度  103

7.4.2  功能耦合的原因  105

7.4.3  示例:通过共享数据库实现功能耦合  105

7.4.4  功能耦合的影响  105

7.5  模型耦合  106

7.5.1  模型耦合度  108

7.5.2  示例:通过共享数据库实现模型耦合  109

7.5.3  模型耦合的影响  109

7.6  契约耦合  110

7.6.1  契约耦合的示例  111

7.6.2  契约耦合度  113

7.6.3  契约耦合的深度  114

7.6.4  示例:通过共享数据库实现契约耦合  116

7.6.5  契约耦合的影响  116

7.7  集成强度的讨论  117

7.8  集成强度和异步执行  119

7.9  本章要点  120

7.10  小测验  121

第8章   距离  123

8.1  距离和封装边界  123

8.1.1  距离成本  124

8.1.2  生命周期耦合的距离  125

8.1.3  评估距离  127

8.2  影响距离的其他因素  127

8.2.1  距离与社会技术设计  128

8.2.2  距离与运行时耦合  129

8.2.3  异步通信和更改成本  130

8.3  距离与邻近性  130

8.4  距离与集成强度  131

8.5  本章要点  131

8.6  小测验  131

第9章   波动性  133

9.1  更改与耦合  133

9.2  软件更改的原因  134

9.2.1  解决方案更改  134

9.2.2  问题更改  135

9.3  评估更改率  136

9.3.1  领域分析  136

9.3.2  源代码控制分析  140

9.4  波动性和集成强度  140

9.5  推理波动性  142

9.6  本章要点  143

9.7  小测验  143

第Ⅲ部分  平衡

第10章   平衡耦合  147

10.1  结合耦合的各个维度  147

10.1.1  度量单位  149

10.1.2  稳定性:波动性与强度  149

10.1.3  实际成本:波动性与距离  150

10.1.4  模块化与复杂性:强度与距离  150

10.2  结合强度、距离与波动性  151

10.2.1  维护成本:强度、距离、波动性  151

10.2.2  平衡耦合:强度、距离、波动性  153

10.3  在标量尺度上实现耦合的平衡  154

10.3.1  标量  154

10.3.2  平衡耦合公式  155

10.3.3  平衡耦合:示例  156

10.4  本章要点  158

10.5  小测验  159

第11章   重新平衡耦合  161

11.1  弹性设计  161

11.2  软件更改媒介  162

11.2.1  战术更改  162

11.2.2  战略更改  162

11.3  重新耦合度量与案例研究  164

11.3.1  强度  165

11.3.2  波动性  168

11.3.3  距离  169

11.3.4  重新平衡的复杂性  169

11.4  本章要点  170

11.5  小测验  170

第12章   软件设计的分形几何  173

12.1  增长  173

12.1.1  基于网络的系统  174

12.1.2  作为基于网络系统的软件设计  175

12.1.3  系统增长的原因  175

12.1.4  增长的极限  176

12.1.5  软件设计中的增长动力  177

12.2  创新  180

12.2.1  软件设计中的创新  181

12.2.2  抽象即创新  181

12.3  分形几何  183

12.4  分形模块化  185

12.5  本章要点  185

12.6  小测验  186

第13章   平衡耦合的实践  187

13.1  微服务  187

13.1.1  案例研究1:共享外部知识的事件  187

13.1.2  案例研究2:足够好的集成  191

13.2  架构模式  191

13.2.1  案例研究3:降低复杂性  192

13.2.2  案例研究4:层、端口和适配器  194

13.3  业务对象  197

13.3.1  案例研究5:实体和聚合  197

13.3.2  案例研究6:组织类  200

13.4  方法  201

13.4.1  案例研究7:分而治之  201

13.4.2  案例研究8:代码异味  203

13.5  本章要点  206

13.6  小测验  206

第14章  结语  207

后记  209

附录A  耦合之歌  211

附录B  术语  215

附录C  小测验答案  221