《浮现式设计:专业软件开发的演进本质》主要面向软件开发者群体,尤其是对敏捷开发感兴趣的程序设计人员。浮现式设计是一种敏捷技术,强调在开发过程中不断演进。由ScottL.Bain编著的《浮现式设计:专业软件开发的演进本质》的讨论围绕着专业软件开发方法的演进主题展开,强调了让软件成为一个真正专业的重要性,以及以演进方式开发软件的重大意义。书中谈到了如何在演进过程中综合运用设计模式、重构、单元测试和测试驱动开发等实践,以及何时制定耦合、内聚和封装等关键决策,而且通过准确生动的示例说明了如何开发出真正有用的软件。
第1 章 软件开发这个职业 1
1.1 人类制作软件已经有多久的历史了 1
1.2 软件开发是一种什么样的活动 2
1.3 软件开发缺少了什么 4
1.4 谁说了算 6
1.5 独特性 6
第2 章 从衣橱到探月 8
2.1 软件开发中的模式和专业化 8
2.2 Andrea 的衣橱 9
2.3 探月 13
2.3.1 因素的连锁变化 16
2.3.2 不同的因素导致不同的设计 16
2.3.3 还有更多环境因素 17
2.3.4 成本和获益 18
2.3.5 火星探险 18
2.4 模式的价值 19
2.5 小结 20
第3 章 软件开发的本质 21
3.1 失败率过高 21
3.2 成功的定义 22
3.3 Standish Group 23
3.4 做了错误的事情 24
3.5 做事的方式错了 25
3.6 随着时间的推移,软件开发也有所改善27
3.7 一个原因:土木工程的类比 27
3.8 放弃希望 29
3.9 有时等待和拖延也是必要的 30
3.10 桥是硬的,软件是软的 30
3.11 我们在变化的海洋中游泳 31
3.12 接受变化 31
3.13 拥抱变化 32
3.14 利用变化 32
3.15 更好的类比:不断演进的系统 34
3.16 小结37
第4 章 代码的演进:初级阶段 38
4.1 用对象结构来代替过程逻辑 38
4.2 面向对象和模式的起源 39
4.3 一个示例:简单条件和Proxy 模式40
4.4 下一步:多路径条件选择43
4.5 为什么要采用对象结构 45
4.6 从多个条件中选择一个 46
4.7 小结 46
第5 章 使用和发现模式 48
5.1 根据上下文进行设计:我做的另一个木匠活 48
5.2 模式引出了另一个看问题的角度 55
5.3 模式提供了一种讨论设计的语言 55
5.4 本书中的模式 56
5.5 小结 56
第6 章 软件开发金字塔 58
6.1 构成专业的元素 58
6.2 一种形象的表示 60
6.3 小结 60
第7 章 注重软件质量 61
7.1 封装62
7.2 内聚 62
7.2.1 方法内聚 63
7.2.2 视角层的内聚 65
7.2.3 类内聚 66
7.2.4 内聚到何种程度才足够 67
7.3 耦合67
7.3.1 有意耦合与意外耦合 68
7.3.2 耦合类型69
7.4 冗余 73
7.5 可测试性77
7.6 可读性 78
7.7 软件的病症79
7.7.1 内聚性较差的信号 79
7.7.2 意外耦合或不合逻辑耦合的信号 80
7.7.3 冗余的信号81
7.8 小结 81
第8 章 注重原则和智慧结晶 83
8.1 使用与创建分离 83
8.1.1 Fowler 的三层视角 83
8.1.2 另一种视角84
8.1.3 使用的视角85
8.1.4 一个单独的视角:创建86
8.1.5 最后考虑构造细节 87
8.1.6 回到现实 88
8.2 开闭原则 89
8.2.1 类级的开闭原则 90
8.2.2 方法级的开闭原则 91
8.3 依赖倒置原则 92
8.4 GoF 的建议 93
8.4.1 设计方法的接口 93
8.4.2 设计类的接口 94
8.4.3 GoF:优先使用对象聚合而非类继承95
8.5 GoF:在设计中思考什么应该变化并封装会发生变化的概念 98
8.6 小结100
第9 章 注重实践 101
9.1 统一编码风格101
9.1.1 注释 102
9.1.2 命名类、方法和变量 103
9.1.3 编码标准的好处 104
9.2 意图导向编程 105
9.3 封装构造函数107
9.3.1 原则与实践110
9.3.2 做出决定110
9.4 公共性—可变性分析111
9.5 实践与自由114
9.6 小结115
第10 章 注重纪律:单元测试116
10.1 测试的经济学116
10.1.1 单元测试117
10.1.2 先写测试119
10.2 JUnit 框架 120
10.2.1 JUnit 基础知识 121
10.2.2 JUnit 示例 122
10.2.3 Rule.java:先编码,再测试 122
10.2.4 RuleContainer.java:先测试,再编码 128
10.2.5 消除冗余:@Before和@After 135
10.2.6 自动化批量测试 137
10.2.7 异常和单元测试 139
10.3 模拟对象141
10.3.1 MockObject 框架 142
10.3.2 伪对象145
10.3.3 依赖注入和Endo-Testing技巧 146
10.3.4 Endo-Testing 147
10.4 小结 148
第11 章 注重纪律:重构 149
11.1 重构质量糟糕的代码 150
11.2 重构质量优秀的代码 151
11.3 结构变化与功能变化 152
11.4 重构可帮助你做出选择 153
11.5 模式可以成为重构的目标 154
11.6 避免重构:预构 154
11.7 重构技巧 155
11.8 重构遗留代码 162
11.9 小结164
第12 章 测试驱动开发 165
12.1 何谓测试驱动开发 165
12.1.1 测试驱动与先写测试 165
12.1.2 从单元测试的角度来设计 166
12.2 测试与质量 167
12.2.1 测试与内聚 167
12.2.2 测试与耦合 168
12.2.3 测试与冗余 169
12.3 测试驱动开发与模式 169
12.3.1 Strategy 模式 169
12.3.2 乌龟站在乌龟上,一直向下170
12.3.3 模拟对象/模拟乌龟 171
12.4 模拟对象 172
12.5 模拟乌龟174
12.6 测试Decorator 模式174
12.7 小结 178
第13 章 模式与因素 179
13.1 在演进的设计中做决策 179
13.2 Christopher Apexander 与他所提出的“因素” 180
13.2.1 信号处理器示例 180
13.2.2 PKZip 示例184
13.2.3 测试与因素 186
13.3 更多选择,更多因素 187
13.4 小结 190
第14 章 浮现式设计:案例分析191
14.1 问题领域:MWave 公司 191
14.2 团队 192
14.3 最简单的能够正常运作的设计 194
14.4 新需求:更复杂的机器 196
14.5 顺便介绍一下 198
14.6 更多好消息 199
14.7 小结:设计是一次漫长而奇特的旅行200
第15 章 结束语:展望2020 年 202
附录A 演进路径 204
附录B 示例中用到的模式简介 213
附录C 有用幻觉之原理 274
参考书目 279
《电子技术基础:模拟部分(第4版)》是“九五”国家级重点教材,前版获国家级优秀教材特等奖及国家科技进步二等奖。为适应电子信息
Searchisamongthemostdisruptiveinnovationsofourtime.Itinfluenceswhatwebuyandwhere...
“我从哪里来?”生命是如何形成、传承的,如何既保持稳定性又保持丰富性?什么是基因,什么是遗传密码,基因有好坏之分吗?是否
.这几年,我们一直在喊“转型”,也有很多人给出了很多“经营新方向”,应该说见仁见智,但有一点需要说明,不应把转型想得、说得
《人货场论:新商业升级方法论》内容简介:当一些人还在思辨着“互联网+”是实体工具还是主观思维、是“互联网+”还是“+互联网”的
中文版Illustrator CS6完全自学教程 内容简介 《中文版Illustrator CS6完全自学教程》是初学者快速自学Illustrator CS6的...
晶体结构精修-晶体学者的SHELXL软件指南-光盘 本书特色 《晶体结构精修:晶体学者的SHELXL软件指南》:SHELXL是目前国际上使用*广泛的结构精修程序...
《远去的都市:1950年代的上海》内容简介:有人说上海史是历史学界的“宠儿”,一直受到特别的关注,确实如此。魏斐德、李欧梵、叶
软件“风格”所要讨论的主题是如何在开销与功能之间、优雅与可维护性之间、灵活。性与过分灵活之间寻找完美的平街点。在本书中,
《人气女王的沟通智慧》内容简介:有些女人,不开口的时候堪称美女,可是一旦说话却会让人对其印象大打折扣。而另一些女人,她们看
《科学哲学(中文版)》内容简介:何为科学?科学是否客观?科学能否解释一切?本书为当代科学哲学中的主要问题提供了一幅清晰准确
曼纽尔·卡斯特是闻名世界的社会科学家,《网络社会-跨文化的视角》是他主编的探讨网络社会在不同文化和制度中的模式和动态的论
《视觉艺术原理(第8版)》,精心融汇了以前各版的优势,强调了《视觉艺术原理(第8版)》在全球视觉艺术领域中的引领地位。并率先把
《考古有意思:秦始皇的兵与城》内容简介:考古大咖写给大众的考古版寻秦记! 兵马俑一号坑第三次发掘和秦咸阳城发掘领队许卫红根据
随着Internet的发展和普及,通信网目前也出现了革命性的转变(即从基于电话结构的标准网络转向基于IP结构的网络),并借助Intern
《SQL反模式》是一本广受好评的SQL图书。它介绍了如何避免在SQL的使用和开发中陷入一些常见却经常被忽略的误区。它通过讲述各种具
◎内容简介:《计算机:一部历史》,给大众读者写的计算机科普读物,零门槛入门计算机科学。讲述计算机背后鲜为人知的故事,普及
2001年6月,日本国际交流基金会北京事务所和朱锷设计事务所共同策划了一次海报展览会。这部海报作品集中刊登的142幅海报作品是为
《零起点Python大数据与量化交易》内容简介:本书是国内较早关于Python大数据与量化交易的原创图书,配合zwPython开发平台和zwQuan
本书围绕通信科技的研发和主要的科技成就展开,为了便于了解该室历任总裁任期内采取的研发方针、政策、管理方法和科学家与工程师