构建之法(第二版)

邹欣

出版时间

2015-06-30

ISBN

9787115395597

评分

★★★★★

标签

计算机

书籍介绍

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

本书共分17章,对照美国ACM/IEEE2013年新出版的计算机科学教学指导(Computer ScienceCurricula 2013)中的软件工程相关部分,这本教材覆盖了其中大多数Core-Tier1和Core-Tier2的内容。可以说,全书对软件工程内容的覆盖不逊于任何一本现行的教材,同时讲述了业界最新实践方法。

AI导读
核心看点
  • 一线专家结合20年经验与6年教学实践,系统梳理软件工程核心知识体系。
  • 采用虚拟角色对话形式,将枯燥理论转化为生动案例,语言通俗接地气。
  • 覆盖从个人编码规范到团队敏捷流程的全生命周期,强调“做中学”的实战理念。
适合谁读
  • 计算机专业学生,尤其是觉得传统软件工程课程枯燥、希望建立工程思维的初学者。
  • 初入职场的新手程序员,急需掌握代码规范、单元测试及团队协作技巧的开发者。
  • 软件项目经理及产品负责人,希望深入理解开发流程、需求分析及团队管理的从业者。
读前提醒
  • 本书内容涵盖面广,建议根据自身角色侧重阅读,如开发者关注个人技术,PM关注流程。
  • 书中包含大量练习与讨论环节,建议边读边实践,通过动手操作加深理解。
  • 部分章节涉及具体方法论如MSF、Scrum,可结合工作实际场景进行对照思考。
读者共识
  • 被誉为最接地气的软件工程入门书,彻底改变了读者对软件工程枯燥乏味的刻板印象。
  • 不仅传授做事步骤,更深刻阐释背后的原理与思维,被公认为PM和技术人员必读经典。
  • 案例丰富且幽默风趣,信息量大,适合反复阅读,是连接学术理论与业界实践的桥梁。

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

精彩摘录
  • "把所有的错误记在一个“我常犯的错误”表中,作为以后自我复审的第一步。"
  • "什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(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 章 概 论 /15
1.1 软件 = 程序 + 软件工程
1.2 软件工程是什么
1.3 练习与讨论

显示全部
用户评论
个人能力与团队能力;敏捷;Scrum;测试;绩效;
对不起书名
接地气!
知己知彼,百战不殆。三大团队都值得学习的方法论~
讲的东西都是关于软件和产品管理的基础知识,逻辑清晰,虽然很多东西都是你阅读前知道的,但在合上书页的时候,仍会感激与此书相遇:)
当时在没有足够多的实践经验时,不太能理解其中的做法
实践久了得回归理论,理论久了要躬身实践。这本书现在再看,虽然很多东西都知道了,但是还是能够从里面学到一些东西。作为导论,这本书是超出的,值得想要了解软件工程朋友上手。
泛泛而谈,学生或者应届生看可能适合一些
读了几章,实在读不下去,有点枯燥
软件工程的导读/教材,前三章对我来说比较有用,后面几章针对软件工程专业学生的感觉对我用处不大
收藏