《软件设计》简介:
本书介绍了高效的软件设计和编程方法,把精益需求分析、领域驱动设计、面向对象、契约式设计、测试驱动开发、意图导向编程及演进式设计等编程实践融会贯通,深入洞察软件设计本质,展示了一个清晰的程序员编程能力提升路线图。全书共十二章,按照程序员技能提升的顺序,分为品味篇、专业篇和高效篇。 本书适合各种编程语言的一线开发者、大学计算机和软件工程相关专业三年级以上本科生或研究生阅读,也适合专业的软件开发团队作为统一编程范式、提升设计意识和能力的参考书。
《软件设计》摘录:
4。1。3 领域模型反映了认知 领域模型的本质是业务认知。它在业务发展的过程中逐步演进,不断沉淀业务知识更重要的是,它在一定时期内是较为稳定的。有没有高质量的领域模型,是企业是香可以持续沉淀业务竞争力的重要体现。 领域模型沉淀认知 一个在某领域深耕多年的企业,和一个新入该领域的企业,差距是什么?差距可能是多方面的,但最大的差距应该是“认知”。 正因如此,我们经常看到,新企业追赶成熟企业的一个常用手段,就是高薪“挖角”。按理说,挖来的这些人既不能把原企业的客户带来,也不能把原企业的系统带来,那他们能带来什么呢?其实他们对新企业最大的帮助,就是能带来对特定领域的认知。 在业务领域,认知是非常值钱的,而且非常稳定。我们也常常看到、一些在某领域建立了竞争优势的企业,会长期保持领先。这方面表现最突出的就是咨询类企业,因为这类企业唯的竞争优势就是领域知识。
《软件设计》目录:
目录
品味篇 识别优秀设计
第1章 优质代码的外部特征 2
1.1 实现了期望的功能 2
1.2 缺陷尽量少 6
1.3 易于理解 8
1.4 易于演进 11
1.5 易于复用 13
1.6 小结 14
第2章 优质代码的内在特征 16
2.1 一致的编码风格 16
2.2 有意义的命名 19
2.3 简洁的行为实现 24
2.4 高内聚和低耦合的模块化结构 28
2.5 没有重复 37
2.6 没有多余的设计 42
2.7 具备自动化测试 45
2.8 小结 47
第3章 高质量的需求 52
3.1 用结构化的方法分析需求 52
3.2 定义业务目标 58
3.3 探索业务流程,定义系统功能 61
3.4 完善操作步骤,澄清业务规则 68
3.5 小结 77
第4章 领域建模 79
4.1 领域模型的概念 79
4.2 捕获业务概念 85
4.3 辨析业务概念 85
4.4 持续演进业务概念 91
4.5 用领域模型指导软件开发 95
4.6 小结 97
专业篇 建立扎实功底
第5章 设计分解和责任分配 99
5.1 通过分而治之管理复杂性 99
5.2 架构分解的原则与模式 105
5.3 正确使用语言特性 110
5.4 关注点分离 116
5.5 设计模式 119
5.6 小结 124
第6章 依赖、接口和契约 126
6.1 依赖的设计原则 126
6.2 需求方接口 134
6.3 提供方接口 142
6.4 设计契约 145
6.5 事件机制 151
6.6 小结 156
卓越篇 实现高效编码
第7章 用测试描述需求和契约 160
7.1 将测试作为一个建设性活动 160
7.2 从V 模型到I 模型 161
7.3 用测试澄清和文档化需求 164
7.4 用测试澄清职责和契约 170
7.5 测试先行 174
7.6 小结 180
第8章 用领域模型指导实现 182
8.1 用领域模型指导实现 182
8.2 基本构造块 188
8.3 聚合、资源库和工厂 196
8.4 分层架构和代码结构 208
8.5 限界上下文 211
8.6 上下文映射 213
8.7 领域模型的持续演进 217
8.8 小结 219
第9章 由外而内的设计 221
9.1 如何由外而内 221
9.2 由外而内设计的优势 235
9.3 应用测试替身 238
9.4 测试先行和由外而内 247
9.5 把由外而内应用于大规模的项目 249
9.6 小结 261
第10章 设计质量贯穿始终 263
10.1 质量内建 263
10.2 契约式设计和防御式编程 265
10.3 高质量的自动化测试 273
10.4 代码评审和结对编程 285
10.5 代码质量度量和问题检测 288
10.6 小结 300
第11章 让设计持续演进 302
11.1 软件设计的演进本质 302
11.2 简单设计 305
11.3 重构 310
11.4 测试驱动开发 318
11.5 持续集成 330
11.6 小结 332
第12章 精益思想和高效编程 334
12.1 精益思想 334
12.2 精益思想和软件设计的关系 337
12.3 总结 340
参考文献 345
索引 349
· · · · · ·