浮现式设计:专业软件开发的演进本质
4推荐 收藏
6.8K阅读
图灵程序设计丛书

浮现式设计:专业软件开发的演进本质

Scott L.Bain (作者) 华洁 , 赵俐 (译者)
浮现式设计是一种敏捷技术,强调在开发过程中不断演进。本书的讨论围绕着专业软件开发方法的演进主题展开,强调了让软件成为一个真正专业的重要性,以及以演进方式开发软件的重大意义。书中谈到了如何在演进过程中综合运用设计模式、重构、单元测试和测试驱动开发等实践,以及何时制定耦合、内聚和封装等关键决策,而且通过准确生动的示例说明了如何开发出真正有用的软件。
本书主要面向软件开发者群体,尤其是对敏捷开发感兴趣的程序设计人员。

收藏本书能做什么?

有情况的时候会收到通知,比如电子书发布等。

纸质书
¥59.00

出版信息

同系列书

  • HTTP权威指南

    David Gourley   Brian Totty   Marjorie Sayer   Sailu Reddy   Anshu Aggarwal   陈涓   赵振平   译

    本书是HTTP及其相关核心Web技术方面的权威著作,主要介绍了Web应用程序是如何工作的,核心的因特网协议如何...

  • JavaScript高级程序设计(第3版)

    Nicholas C.Zakas   李松峰   曹力   译

    本书是JavaScript超级畅销书的新版。ECMAScript 5 和HTML5在标准之争中双双胜出,使大量...

  • 计算机科学的基础

    Al Aho   Jeff Ullman   傅尔也   译

    本书全面而详细地阐述了计算机科学的理论基础,从抽象概念的机械化到各种数据模型的建立,用算法、数据抽象等核心思想...

  • Java技术手册(第6版)

    Benjamin J Evans   David Flanagan   安道   译

    通过学习本书,你将能够: 掌握最新的语言细节,包括Java 8的变化 使用基本的Java句法学习面向对...

  • 机器学习实战

    Peter Harrington   李锐   李鹏   曲亚东   王斌   译

    机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或...

本书特色

一部敏捷开发与软件设计的至尊宝典;
深入剖析软件开发过程的进化本质;
敏捷开发大师Alan Shalloway鼎力推荐。

目录

第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

相关文章

  • 大卫张33 2推荐

    你是“职业”软件开发吗?

    很多软件开发人员很困惑,自身的职业发展是怎样的?靠谱的公司怎么那么少?很多软件公司很困惑,软件开发人员怎么招聘,怎么培养,怎么用?为什么靠谱的软件开发人员那么少? 1. “码农,请不要侮辱农民这个职业!” “码农,请不要侮辱农民这个职业!”——原话出自@孟晓林Ralph。读…...

  • 李忠利 11推荐

    读《浮现式设计-专业软件开发的演进本质》有感

    题记: 在敏捷实践的间隙,由忠利推荐,草览了名作《浮现式设计》,受益匪浅,写下读后感聊表心得,以期抛砖引玉。 套用一书评中的话,翻译出来,本书的书名小众了点(Emergent Design,要怎么翻?),看似一本软件设计方面的专业书籍,又似一本行业版哲学书,实际上,作为行…...

  • @常新居士 同学的书评可以看看,就是。。要有能够接受批评的心态哈。。
    - 微博:http://weibo.com/1893774153/xtbqZ3Dej
    - 文章:http://t.cn/asByKy
    kaverjody  发表于 2011-10-24 13:33:06
    推荐
  • 翻到一篇旧文,Ron Jeffries的,也是讲Emergent Design,http://xprogramming.com/classics/expemergentdesign/
    kaverjody  发表于 2011-10-27 13:06:58
    推荐
  • 好书,什么时候出电子版?
    艾提银  发表于 2019-12-01 16:55:31
    推荐
    • 这本书没有电子版权,而且目前版权已经到期,纸书也停售了。

      傅志红  发表于 2019-12-02 07:38:18