构建之法(第三版)

邹欣

出版时间

2017-06-01

ISBN

9787115460769

评分

★★★★★

标签

编程

书籍介绍

软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是,软件工程 的技术对于投身 IT 产业的学生来说是非常重要的。作者有在世界一流软件企业 20 年的一线软件开 发经验,他在数所高校进行了多年的软件工程教学实践,总结出了在 16 周的时间内让同学们通过 “做 中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈。在此 基础上,作者对软件工程的各个知识点和实战技能要求进行了系统性整理,形成教材。目前,本书已经在至少 25 所高校作为软件工程课程的教材。

本书共分 17 章, 对照美国 ACM/IEEE 2013 年出版的计算机科学教学指导中软件工程相关部分, 本书覆盖了其中大多数的核心内容。本书同时覆盖了最新的业界实战方法,软件团队中各个角色的成 长和关系,以及 IT 行业的创新奥秘。作者可以向感兴趣的读者提供全部章节的教学课件。

AI导读
核心看点
  • 融合20年业界经验,用生动案例讲透软件工程核心。
  • 覆盖从个人编码到团队协作、敏捷流程的全链路实战。
  • 强调“做中学”,提供16周教学计划,拒绝空洞理论。
适合谁读
  • 计算机专业学生,尤其是觉得软件工程枯燥的初学者。
  • 初入IT行业的开发者,急需建立工程化思维与规范。
  • 产品经理及项目经理,需理解研发流程与协作痛点。
读前提醒
  • 书中引用大量博客链接,纸质书阅读体验受限,建议配合电子版。
  • 不要只看不练,务必结合书中练习,通过实践内化知识。
  • 无需按顺序死磕,可根据当前工作痛点,挑选章节针对性阅读。
读者共识
  • 语言幽默风趣,接地气,是少有的不枯燥的软件工程好书。
  • 连通学界与业界,弥补了学校教育与真实职场间的巨大鸿沟。
  • 虽链接体验不佳,但其工程思维与复盘方法论极具长期价值。

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "把所有的错误记在一个“我常犯的错误”表中,作为以后自我复审的第一步。"
  • "什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是抓住了软件工程的一个要素。和软件打交道的专业人士都知道软件有“Bug”(缺陷),软件团队的很多人都整天和Bug打交道,Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。 ——P15 很多人认为有Bug就是质量不合格,没有Bug就是质量完美,其实这也未必。我们在大街上看到很多小汽车,这些汽车出厂时都通过了各自的质量检测,符合行业的质量标准。但是你问路人哪些车的“质量好”,很多人会告诉你有些车的质量大大好于另外一些车,那为什么还有人买那些质量“不够"
  • "既然代码复审能发现这么多问题,有这么好的效果,如果我们每时每刻都在代码复审的状态,那不是很好么?事实上,极限编程(Extreme Programming)正是这一思想的体现——为什么不把一些卓有成效的开发方法用到极致(Extreme),让我们无时无刻地使用它们? ——p84页 极限编程对工程师提出了更高的要求。这种要求不关乎技术水平,也不关乎学历水平或工作经验。这种要求是对一个人的心智、道德修养的更高要求。结队编程中,编码不再是私人的工作,而是一种公开的“表演”。程序员的代码、工作方式、技术水平都变得公开和透明,这也许是一些人不喜欢这一方式的原因。 ——P87"
  • "计算机人工智能研究的一个重大挑战,就是计算机程序是否在国际象棋这个游戏中打败人类。从20世纪60年代开始,就有很多研究人员从理论和“智能”的角度去着手,取得了一定进栈,但是里最终胜利还是遥遥无期。1985年,还是一个研究生的徐峰雄这样想: “我们从一个不同的方向去逼近这个问题。我们,至少是我自己,把这个问题看成是一个纯粹的工程问题。” 历史证明,这个从工程的角度出发,用“蛮力”提高计算机速度的工程方法远远甩开了同时代的各种“智能”方案。1997年,徐峰雄带队设计的“深蓝”战胜了国际象棋大师加里·卡斯帕洛夫。 ——P13"
  • "用户体验设计的一个重要目的就是要降低用户的认知阻力(Cog-nitive Friction),即用户对于软件界面的认知(想象某事应该怎么做,想象某操作应该产生什么结果)和实际结果的差异。我们来看一个具体的例子,如果用户(一个生活在中国二线城市,有高中文化水平,有基本计算机基础的成年人)要在一个文稿中写居中的一句话,在下表所列的各种工具中,用户是怎么才能做到的。 倘若认知阻力大,学习曲线就会比较陡;但是经过学习和练习,如果用户适应了新的认知模式,工作效率便会有较大的提高。 ——P271"
  • "很多心理学家通过各种试验和分析告诉我们,纯粹强调外界的驱动因素(金钱的报酬或惩罚)仅仅对体力劳动或有明确规则的活动有效(奖金越多,结果越好),但对于需要创造性思维的活动,即使是简单的认知能力的活动,更多奖金反而起到相反的效果。 ——P409"
  • "一个成熟的软件工程师应该能够降低任务交付时间的标准方差。 软件领域可以分为两个方面:一方面是技艺创新的大爆发;而另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了 90%~95% 的比例。"
  • ""Natural critical learning environment." In that environment, people learn by confronting intriguing, beautiful, or important problems, authentic tasks that will challenge them to grapple with ideas, rethink their assumptions, and examine their mental models of reality."
作者简介
邹欣现任微软Windows中国工程团队首席研发总监。1996—2003年,邹欣在微软Outlook团队从事开发工作,2003—2005年,他在微软内部质量工具团队和Visual Studio团队负责软件项目管理工具的开发。2005—2012年,他担任微软亚洲研究院技术创 新组研发主管,负责研究成果的产品化和创新项目。2012—2014年,他担任微软亚洲互联网工程院首席研发总监,负责必应搜索客户端、必应输入法、必应词典等产品。加入微软前,邹欣从事过商用Unix系统、GPS/GIS软件开发及测试工作。他在2007年出版了《移山之道》,于2008年出版了《编程之美》 (合作)。他于1991年获北京大学计算机软件专业学士学位。1996年获美国美国韦恩州立大学(Wayne State University)计算机软件专业硕士学位。 微博 http://weibo.com/sdxinz 博客 http://www.cnblogs.com/xinz 专栏 http://zhuanlan.zhihu.com/goujianzhifa
目录
第1章 概 论 /1
1.1 软件 = 程序 + 软件工程
1.2 软件工程是什么
1.3 练习与讨论
第2章 个人技术和流程 /21

显示全部
用户评论
写了软件工程的种种。对我映像最深的当属于如果项目结束了,我们应该怎么做。项目总结,复盘怎么做的。如果现在给你同样的需求,你会怎么做。这个思考角度可以得到更多东西。
断断续续读了1个月…难得的一本连通学界与业界的软件工程入门书。现在的编程培训,往往倚重「术」,毕竟这最易标准化、出成果。而开发一款稳定、有商业价值的软件产品,其中的设计考量协作沟通,人和环境的各种因素各种坑,甚是复杂啊…。PS. 贯穿全书的移山公司几名同学的故事和对话幽默且具启发。
非常好的一本软件工程的入门好书。该点出的技能书基本都覆盖了,只要按图索骥不断地去完善这些技能点就够了。
建议替换大学教材
工作一段时间后才意识到“软”技能的重要性
程序员不仅仅是写代码,还应有各个方面的能力
对得起副标题里特地强调的现代二字。详细的例子和生动的语言给我工作中产生的很多软件工程疑惑答案。
作为软件工程的入门书籍,是非常棒了,四星是值的。 但作为有一些软件工程经验和思考的工程师,这本书的信息密度就稍低了一些,可以浓缩成 200 页以内,因为大量的篇幅只说了一些简单的东西(可能是因为这本书主要读者是大学生,所以作者才花大篇幅去用对话的形式讲解)。 没有软件工程经验的初级工程师可以好好看,有软件工程经验的人可以翻看,里面有挺多不错的思想的。 它超越普通教材的一点是,一直在告诉读者:不要拘泥于方法论,要根据情况定方案,方法论是产生于问题,我们最最终要解决的是问题,而不是遵循方法论。 另外,“用户体验” 那一章值得所有工程师好好读一读,这是大多数技术人员的弱点。 做点笔记: 1. 尽早让用户介入 2. 信息共享、沟通 3. 共同的愿景 4. 充分授权、各司其职、共同负责
很符合实际工作,等于是对目前日常工作流程和规范上的查缺补漏。 本以为只适合一定规模的团队与公司,转念一想,小团队的每个成员都懂这些,也能把团队与项目运作地更好。
下载
收藏