软件设计

张刚

出版时间

2022-07-09

ISBN

9787115589750

评分

★★★★★
书籍介绍

本书介绍了高效的软件设计和编程方法,把精益需求分析、领域驱动设计、面向对象、契约式设计、测试驱动开发、意图导向编程及演进式设计等编程实践融会贯通,深入洞察软件设计本质,展示了一个清晰的程序员编程能力提升路线图。全书共十二章,按照程序员技能提升的顺序,分为品味篇、专业篇和高效篇。 本书适合各种编程语言的一线开发者、大学计算机和软件工程相关专业三年级以上本科生或研究生阅读,也适合专业的软件开发团队作为统一编程范式、提升设计意识和能力的参考书。

张刚,软件工程博士、资深技术专家、CCF 软件工程委员会执行委员、贝尔实验室杰出工程师。先后任职于阿尔卡特朗讯、上海理工大学和阿里巴巴。20 余年软件开发、架构设计和技术领导者的成功经验,先进软件工程方法与实践的持续探索者和积极传播者。

精彩摘录
  • "4。1。3 领域模型反映了认知 领域模型的本质是业务认知。它在业务发展的过程中逐步演进,不断沉淀业务知识更重要的是,它在一定时期内是较为稳定的。有没有高质量的领域模型,是企业是香可以持续沉淀业务竞争力的重要体现。 领域模型沉淀认知 一个在某领域深耕多年的企业,和一个新入该领域的企业,差距是什么?差距可能是多方面的,但最大的差距应该是“认知”。 正因如此,我们经常看到,新企业追赶成熟企业的一个常用手段,就是高薪“挖角”。按理说,挖来的这些人既不能把原企业的客户带来,也不能把原企业的系统带来,那他们能带来什么呢?其实他们对新企业最大的帮助,就是能带来对特定领域的认知。 在业务领域,认知是非常值钱的"
  • "如果在一个产品或团队内部,某个模块的存在完全是为了让另一个使用、这时候就无须定义提供方接口,把二者合二为一即可。但是,一且在后线演进过程中,想块有了更多渣在的客户,而且这些客户使用模块的方式有差异,就应波及时地花它根为需求方接口和提供方接口。"
  • "时至今日,业务模块的复用已经有了更好的理论基础,而且经过了实践的检验。这就是以领域为中心的设计。通过恰当的确定问题域的边界,如把一个订餐系统切分为用户、订单、支付、配送、消息通知等子域,并保持各个子域边界之间的抽象和隔离..."
  • "在软件设计中,下面几类①都属于重复。 ·完全相同的代码。 ·模式一致的代码。 ·模式一致,夹杂一些差异的代码。 ·功能相同,实现方式不同的代码。 产生重复的原因有很多。有时候是时间压力导致的复制-粘贴式编程方式,有时候是程序员担心在既有的方案上直接改动可能会破坏原有的功能,有时候是原来的代码关注点分离得不好,还有时候是需要改动的代码的所有权属于其他开发者或组织,自己没有办法直接修改。更多时候,重复是上述多种原因综合作用的结果。 一旦不正确地接受了形如代码清单2。15和代码清单2。11的重复,就给未来的维护者带来了不好的范例,代码的腐化速度会逐渐变快。例如,当出现了一个新的需求 一统计指定目录下"
  • "3。1。4 共创、沟通和共识是需求分析活动成功的关键用文档记录结果,不要用文档作为驱动 传统的需求分析方达特别强调文档的作用。例如,需求获取阶段需要产出业务需款的活述文档,需求分析和定义阶段需要产出产品需求的设计文档等。甚至有些开发团人,只要需求文档没有完成,就拒绝参与项目开发。这种做法是不合适的。 需求分场的装心是探素与发理。尽管写文档能梳理思路,计人有所发现,不过总来说质不有效也不效:尽可能具炮引人需求海道,进行群体性的共创活动,有助于使早地发现问题,提升需求分析的质量。"
  • "5.2.2 原则2:面向质量属性定义架构策略 在架构领域,有一个重要原则是软件架构并不由产品需求决定。不熟悉这个原则的人可能会有点意外,难道不是有了需求之后才会有架构吗?事实上,稍微一想就会明白:业务领域的需求是一直变化的,而软件架构需要具有较好的稳定性。在架构设计中,我们的关注点应该是长期、困难的部分。 有一定软件开发经验的读者都知道,在软件的初始版本开发完成后,在后续版本中增加功能(特别是系统中已有同类功能)时,往往不会有重要的架构决策,重点是理解清楚需求,并在此基础上沿袭既有的解决方案“照着葫芦画瓢”。那么,什么是长期、困难的部分呢?我们称这部分为质量属性(quality attribu"
  • "5.3正确使用语言特性 高内聚和低耦合属于非常高层的原则,在实际执行中往往需要更为具体的原跳 指导。本节我们就看看如何把2。4节的原则和策略落实到具体的代码实现中。如何正确地使用语言特性呢?如何把语言特性和设计原则相结合呢?本节将以面的对象的设计作为基础进行讲解。理解了设计的基本原则后,即使面对的不是面向对象 语言(如C语言,也可以很容易地把相同的设计策略映射到对应的语言特性中。 5.3.1封装、继承和多态 大多数编程语言类书籍会将“封装”“继承”和“多态”视作面向对象语言的三大基本特征。从语言特性的角度看,这样的陈述没有问题。不过,若从软件设计的角度看,那么更重要的策略是“分解”“组合”“委"
作者简介
张刚,软件工程博士、资深技术专家、CCF 软件工程委员会执行委员、贝尔实验室杰出工程师。先后任职于阿尔卡特朗讯、上海理工大学和阿里巴巴。20 余年软件开发、架构设计和技术领导者的成功经验,先进软件工程方法与实践的持续探索者和积极传播者。
目录
目录
品味篇 识别优秀设计
第1章 优质代码的外部特征 2
1.1 实现了期望的功能 2
1.2 缺陷尽量少 6

显示全部
用户评论
内容覆盖挺全的。作者对很多开发的内容,确实是有思考力,时常看到一些富有洞见的总结的句子。出于篇幅限制,自然无法强求深入性。期待作者出实践性或侧重某一主题的新书。
描述了软件开发追求卓越的全过程,每个环节点到即止,限于篇幅无法详细展开。
相当不错的软件设计类图书,就是后面的领域编程部分讲得没那么透彻。
好书,看得出作者的用心!
对目前学习DDD的人有用,前半本对产品,测试有用。方法论和理念的转变。需要整个团队一起达成共识方可推行。 每个人能够学习到多少是结合自身写的现状来看的,如果书中提及的点如果在平时没遇到过,肯定是不会有共鸣的。 从这本书来说能看出作者确实是实践过的,说了很多自己的心得,适合在实践的过程中反复读。 1、阿里有多少团队正在这样实施,效果如何。 2、书中的中心思想 设计+演进。 3、DDD介绍的较少,更多偏方法论,没有例子。
收藏