构建之法

出版日期:2014-9
ISBN:978711536916X
作者:邹欣
页数:396页

作者简介

内容简介:
软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。作者邹欣有长达20年的一线软件开发经验,他利用业余时间在数所高校进行了长达6年的软件工程教学实践,总结出了在16周的时间内让 同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈。在此基础上,作者对软件工程的各个知识点和技能要求进行了系统性整理,形成教材。
本书共分17章,对照美国ACM/IEEE2013年新出版的计算机科学教学指导(Computer ScienceCurricula 2013)中的软件工程相关部分,这本教材覆盖了其中大多数Core-Tier1和Core-Tier2的内容。可以说,全书对软件工程内容的覆盖不逊于任何一本现行的教材,同时讲述了业界最新实践方法。
本书评论:
推荐软件工程专业学子阅读,了解软件工程真正内涵,懂得“工程”二字真正含义,知道软件工程和计算机科学的区别。了解之后,就知道为何软件工程是就业含金量较高的行业了。
——朝红阳(http://weibo.com/u/1794892070)/中山大学软件学院
书中 设想了大量的场景“学”和“习”,并且用了大量的类比,非常生动有趣。这本教材也对软件工程课老师提出了更高的要求;对学生而言,同样面临着要付出怎样的努力才能学到“干货”的选择。
——鞠小林(http://weibo.com/jukxy)/南通大学软件学院
关于计算机科学与软件工程的差别?这是我们学生问的最多的,这下有解释啦!包括书中谈到的师生关系、软件工程师的职业发展、职业道德等,这些内容我上课时都可以用。
——牛慧娟/华中科技大学软件学院
面对在软件开发方面经验很少的学生,邹欣老师通过丰富生动的故事和隐喻帮助学生建立软件工程的思维习惯,通过严格扎实的动手训练与考核帮助学生总结归纳自己的“最佳实践经验”。读这本书,软件工程课不再枯燥沉闷,而是变得出乎意料的生动有趣。
——王忠杰(http://weibo.com/travellingwithme)/哈尔滨工业大学计算机科学与技术学院
读完《构建之法——现代软件工程》,不禁惊叹,软件工程的书还可以这样写!像团队和流程、敏捷流程、需求分析、设计与实现这些章节我看了又看,看完之后不禁拍大腿(书里说的“拍脑门、拍胸脯、拍屁股”的三拍有点不全,还差“拍大腿”):为什么邹欣老师会把原本无趣的问题写得这么吸引人?我深深地感觉到,不会讲故事的软件工程老师不是好老师!这本书给我最大的感受是,作者能把一个个鲜活的例子(或故事)与软件工程的相关问题恰到好处地结合起来,让软件工程的理论和方法更好地落地。
——王赞(http://weibo.com/scswz)/天津大学软件学院
将对软件工程思想的理解内化为软件工程师的职业习惯,是软件工程教学的核心目标,本书的实验设计恰恰非常有助于这一内化过程。个人项目、两人项目和团队项目由易到难,循序渐进,不断总结。我在教学中借鉴这一思路,从学生较为熟悉的编程训练入手,以范例演示基本编码规范、 No Design时的代码、经过基
本Modularity (also called separation of concerns)设计的代码、writing code to make it reusable on future projects以及一些特殊的接口设计……从编码实践中理解软件工程思想,就会跳出纸上谈兵的框框。
——孟宁(http://staff.ustc.edu.cn/~mengning/,http://weibo.com/mengning997 )
/中国科技大学软件学院
软件工程在大学是最难讲,也是最容易讲的一门课,容易在这门课涵盖的内容和外延特别丰富,这些内容学生基本没概念,短期也无法落到实处来验证有用没用,所以老师可以大讲特讲,人畜无害;难在你要在学生一片空白(没有很强的代码能力、没有团队概念、没有项目经验)的情况下去让他们懂得这些东西。在我认识的人中,能有丰富的项目经验又愿意花时间在教学实践上,最终能把各种知识理论体系化的人寥寥无几。邹欣老师恰好这几点都具备。快速翻完整本书,最大的感受是这本书出版得恰逢其时,传统的软件工程教材早就该翻新了!
——徐亚波(http://ss.sysu.edu.cn/~xyb,http://weibo.com/arber)/中山大学软件学院

书籍目录

第 1 章 概 论 1
1.1 软件 = 程序 + 软件工程
1.2 软件工程是什么
1.3 练习与讨论
第 2 章 个人技术和流程 /20
2.1 单元测试
2.2 效能分析工具
2.3 个人开发流程
2.4 实践
2.5 练习与讨论
第 3 章 软件工程师的成长 /43
3.1 个人能力的衡量与发展
3.2 软件工程师的职业发展
3.3 技能的反面
3.4 练习与讨论
第 4 章 两人合作 /56
4.1 代码规范
4.2 代码风格规范
4.3 代码设计规范
4.4 代码复审
4.5 结对编程
4.6 两人合作的不同阶段和技巧
4.7 练习与讨论
第5 章 团队和流程 /84
5.1 非团队和团队
5.2 软件团队的模式
5.3 开发流程
5.4 练习与讨论
第 6 章 敏捷流程 /101
6.1 敏捷的流程
6.2 敏捷流程的问题和解法
6.3 敏捷的团队
6.4 敏捷总结
6.5 敏捷的故事— 兼酒后问答
6.6 练习与讨论
第 7 章 MSF /121
7.1 MSF 简史
7.2 MSF 基本原则
7.3 MSF 团队模型
7.4 MSF 过程模型
7.5 MSF 敏捷开发模式
7.6 MSF CMMI 开发模式
7.7 练习与讨论
第 8 章 需求分析 /142
8.1 软件需求
8.2 软件产品的利益相关者
8.3 获取用户 需求— 用户调查
8.4 竞争性需求分析的框架
8.5 功能的定位— 四象限方法
8.6 计划和估计
8.7 分而治之(Work Breakdown Structure)
8.8 练习与讨论
第 9 章 项目经理 /175
9.1 PM 是啥
9.2 微软PM 的来历
9.3 PM 做开发和测试之外的所有事情
9.4 PM 的能力要求和任务
9.5 练习与讨论
第10 章 典型用户和场景 /185
10.1 典型场景和典型用户
10.2 规格说明书
10.3 功能驱动的设计
10.4 练习与讨论
第11 章 软件设计与实现 /205
11.1 从Spec到实现
11.2 开发阶段的日常管理
11.3 练习与讨论
第12 章 用户体验 /218
12.1 用户体验的要素
12.2 用户体验设计的步骤和目标
12.3 评价标准
12.4 练习与讨论
第13 章 软件测试 /237
13.1 基本名词解释及分类
13.2 各种测试方法
13.3 实战中的测试
13.4 运用测试工具
13.5 练习与讨论
第14 章 质量保障 /268
14.1 软件的质量
14.2 软件的质量保障工作
14.3 练习与讨论
第15 章 稳定和发布阶段 /284
15.1 从代码完成到发布
15.2 发布之后 — 事后诸葛亮会议
15.3 练习和讨论
第16 章 IT 行业的创新 /301
16.1 创新的迷思
16.2 创新的时机
16.3 创新的招数
16.4 魔方的创新
16.5 创新和作坊
16.6 练习与讨论
第17 章 人、绩效和职业道德 /337
17.1 猪、鸡和鹦鹉的故事
17.2 其实还是人的问题
17.3 绩效管理
17.4 萝卜与白菜
17.5 团队合作的几个阶段
17.6 软件工程师的职业道德
17.7 练习与讨论
索 引 /358

内容概要

邹欣现任微软Windows中国工程团队首席研发总监。
1996年~2003年,邹欣在微软Outlook团队从事开发工作,2003年~2005年,他在微软内部质量工具团队和Visual Studio团队负责软件项目管理工具的开发。2005年~2012年,他担任微软亚洲研究院技术创新组研发主管,负责研究成果的产品化和创新项目。2012年~2014年,他担任微软亚洲互联网工程院首席研发总监,负责必应搜索客户端、必应输入法、必应词典等产品。加入微软前,邹欣从事过商用Unix系统、GPS/GIS软件开发及测试工作。
他在2007年出版了《移山之道》,于2008年出版了《编程之美》 (合作)。
他于1991年获北京大学计算机软件专业学士学位。1996年获美国韦恩州立大学(Wayne State University)计算机软件专业硕士学位。


 构建之法下载 更多精彩书评



发布书评

 
 


精彩书评 (总计20条)

  •     从阅读《移山之道》开始,我就热情关注本书作者邹欣老师,包括他的博客和微博,并在教学会议或其它场合相互交流《软件工程》各自的教学经验。我在《软件工程》教学工程中,也极力向学生推荐邹老师在博客园的系列博客《现代软件工程讲义》,甚至针对一些精彩内容和学生一起讨论、共同学习。如今,邹老师在《现代软件工程讲义》系列博文基础上进行整理加工、补充完善,形成了本书——《构建之法》,这是软件工程教学的一大幸事! 本书在结构上突破传统软件工程教材的框架,不是按软开发周期(概论、需求、设计、编程、测试、维护等)来叙述,而是先从软件开发个人技能开始,逐步进入两人结对编程、代码互为评审直至团队开发模式之中,更容易让学生感觉软件工作具有实实在在的内涵,教师能够由浅入深开展教学实验活动,也符合作者提倡的“做中学”的教学理念。让我更欣赏的是本书开头“致任课老师和助教的建议”,不仅对内容安排很到位,而且详细讨论了师生关系和极具价值的八条教学建议。本书简洁性、实用性很突出,摒弃空洞的理论讲解,没有无关紧要的文字,而是在清楚交待完概念之后,撅起袖子就干,手把手辅导学生如何完成软件开发工作。本书内容精炼,文字幽默、轻松,印象最深的是: 1) 设定不同人物角色或用户角色(如大牛、小飞、阿超、芸芸等),结合所讨论的研发场景(如日常管理、持续集成、代码评审等),让这些人物活起来,如临其境,感受到真实的研发环境。通过大量人物对话形式来展现不同角色的冲突、暴露问题的细节,从而更好指导学生如何处理这些问题,处理的方法也可能通过对话表现出来。 2) 用一些生活中的事情(如系鞋带)来点化软件工作中抽象的工作(如写需求规格说明书),帮助读者理解所讨论的内容。 3) 案例丰富,对实践环境描述很细,如按小时(时间段)来介绍具体开发流程。而且,提供了足够的练习,营造了一个良好的教与学环境,能够极大地提高学生学习软件工程的兴趣,从而有效改善软件工程教学效果。 本书也存在一些小的问题,如: 1) “软件设计”内容偏少,代码覆盖率测试不够全面,没有谈到分支、条件、MCDC等; 2) 有些术语不符合业界习惯,如黑箱、白箱(虽然作者说明通过搜索引擎,认为“黑箱、白箱”比“黑盒、白盒”提法多)、效能测试(习惯称:性能测试);ad hoc test 和 exploratory test 混淆起来。 3) 第9章 项目经理、第12章 用户体验 在本书结构中感觉不是特别合理和自然。 4) 技术文档,最好把示例代码写好,还把单元测试写好估计比较困难;典型用户还需要了解“收入”,感觉涉及个人隐私,哈哈。 这些问题(可能不是问题)的存在,并不影响全书的质量。
  •     昨晚(3/12)给团队做了一个分享,叫《创新的迷思》。题目不是我起的,连PPT也不是我写的,是周筠老师发给我的邹欣老师的讲稿。要是换作以前(一个月之前),我是绝对不这么做的,我会添油加醋一些自己的东西,或者从自己的角度去讲。要是换作以前的以前(五六年之前),我连这样的分享都不会做,我会觉得这不是我的东西,没有成就感。当时是OReilly CEO的一句话敲醒了我,他说我们不是在卖书,我们是在传播创新者的思想,这让我认识到传播本身也是有价值的。关于创新的问题,困扰了我很久,直到年前看到邹欣老师的博客文章[1]才敲醒了我,我要把一些认识传播给团队。言归正传,昨晚讲了2个多小时,72页的PPT,应该分成两次比较合适。内容太丰富了,我这里不重复了,有兴趣的可以直接看邹欣老师的博客文章,或者买一本《构建之法》,在这本书里有专门的一章,比博客文章要系统和完善的多。我这里只分享其中的一个点,就是创新的时机。其中有个G-number的小游戏:每个成员写下名字和一个(0, 100)开区间的有理数。最接近G点者获胜,最远者输。G点的计算方法:G = 0.618 * average (all numbers)。共有20个人参加了游戏(不包括我),我给大家两分钟的时间,对于结果会是多少,我心里是没谱的。你现在心里猜一个数字(记住不要更改)。你可能会想,大家随机报的话,平均数会是50,50 * 0.618 = 31,那么我选31低一点。但其他人也不是傻子,那大家都选31附近的数的话,我得选31 * 0.618 = 19。那么还得继续往下迭代,我就干脆选0.0001好了!0.0001是正确答案吗?我公布昨晚我们游戏的结果:G点值是19.28,一位出了21的获胜,一位出了70的输。邹欣老师在书上还做了总结,第一次游戏获胜数字一般离17不远,也就是平均进行了两次迭代。在我公布题目后,就有同学冒出来说接近0,被我制止了呼喊。如果大家脑子转的都足够快,可能最后真的接近0。但某些想的快的同学,并不能决定整个团体的思考阶段。即使写了0.00001,也不能赢得比赛。在创新的道路上,需要的是领先一步,且只领先一步。我在大三的时候(2003年),上一门人机交互课程。老师剖析苹果公司的Newton产品的例子,就是苹果的产品总是领先市场两步,以至于失败。但从我的分析来看,从2001年苹果发布iPod之后,就懂得只领先一步的道理了,不管是iPhone、iPad,还是刚发布的Apple Watch。(请在百度搜索Apple Newton)为什么领先两步不行,我们看下面一张图:(请在百度搜索跨越鸿沟)这张图来自于《跨越鸿沟》,描述的是大众对新技术接受的曲线,曲线的面积大致对应人数。大众平均值再往前一步就是早期采用者区间,这里存在一个鸿沟。推出的太早,就跨越不了这个鸿沟。再换一种角度,Gartner给出的技术成熟度曲线(纵轴是大众对新技术的期望值):(请在百度搜索技术成熟度曲线)可以看到期望值随着时间会出现很大的变化,先后经过技术触发期、期望膨胀期、迷茫期、低调发展期、主流发展期。我们使用的所谓新产品(如iPhone),一般是渡过迷茫期的二代产品,第一代的也许都没等到这一天(如Nokia N70)。以下是2014年的技术成熟度曲线:(请在百度搜索 2014技术成熟度曲线)我所从事的Big Data,还远没过时,处在迷茫期。一位组员听了报告后的感想:听完了,发点感悟:内容很丰富,很多例子听起来也很有趣。前半段听的比较仔细,后面太饿了,注意力没有太集中。总体上的感觉是以前理解的创新总是很高大上,很突出的东西,虽然很向往,但是总感觉离自己很遥远。已至于别人提出了可能比较创新的idea,自己也可能是那个泼冷水的人。现在觉得创新体现在我们身边更多是一种微创新,创新也可以是一种从量变到质变的过程,我们做的很多工作从一个点来看是也许单调枯燥的,但从长远来看可能也在为整个互联网的创新贡献着些许力量吧(^_^)我算没白讲。[1] IT行业的创新 - 创新的迷思 http://www.cnblogs.com/xinz/archive/2011/07/09/2102052.html
  •     邹老师的课程资料我在备课中已多次研习参考,内容大多都已熟识,可拿到书稿读来仍有一气呵成盎然生趣之感。毫无疑问这是一本集软件开发实战与软件工程教学的多年经验双剑合璧的精华之作,可以预期这本书将在教材市场和畅销书市场获得双丰收,甚至会在一定程度上促进国内业界软件工程素养的提高。软件工程来源于软件开发实践又应用于软件开发实战,而将软件工程思想的理解内化为软件工程师的职业习惯是软件工程教学的核心目标,《构建之法》的实验设计恰恰非常有助于这一内化过程,个人项目、两人项目和团队项目由易到难循序渐进不断总结,我在教学中借鉴这一思路,从学生较为熟悉的编程训练入手,以范例演示基本编码规范、 No Design时的代码、经过基本Modularity (also called separation of concerns)设计的代码、writing code to make it reusable on future projects以及一些特殊的接口设计如callback函数和函数的可重入性(reentrant)或线程安全等较深入的设计问题;并在演示代码基础上进一步引入实际可用的测试代码并切入测试技术基本理论和方法。从编码实践中理解软件工程思想就会跳出纸上谈兵的政治课之感。重实践可以形成对软件工程直观感性的认识,并逐渐由直观感性的动手编码过渡到更高层抽象的设计,如OO的封装、多态和继承,高内聚低藕合、UML等。然后再来理解软件生命周期、软件项目任务切分工作量评估、项目计划、项目管理、进度跟踪等涉及软件工程项目全局性的概念方法。这些做法很多思想和具体资料都来源于邹老师的课程资料,即《构建之法》一书。

精彩短评 (总计50条)

  •     写的不错,属于少见的写的平实易懂的软件工程基础教材,值得在图书馆借回来认真一读
  •     很不错的一本软件工程类的书,让人能从头读到尾的书,如果配合课堂教学就更好了~值得推荐
  •     可以拓展知识面
  •     总觉得吧,没有评论说的那么神
  •     学《软件工程》,可以把课本扔了读这本,或者先读这本再读课本。
  •     邹老师的软件开发经验和水平自不必多说。但我始终不习惯这种写童话故事似的技术书籍。阅读体验往往变成了在一大堆技术人员写的人物对话中去寻找那些可能对我有用的知识。
  •     这是一本软件工程方面的好书,尽管作者有很强烈的传教意愿,但是书中的内容还是很有启发意义。
  •     如果你是一个新人,入门读物还是可以的。如果在程序猿的行业已经混了几年,那还是看点别的吧。有段时间,这本书就放在工作台旁边,先来无事就翻翻,真觉得没什么内容。豆瓣居然给评到8.6分之多。赶紧评价下。
  •     构建之法,移山之道。用计算机的严谨和软件工程的逻辑去构思
  •     胡乱吞枣,有收获。
  •     挺有趣的,说了不少大实话。因为是面向学生的书,所以比较宽泛,不太涉及具体技术。
  •     废话太多,建议的阅读方法是快速地全书过一遍,然后精读感兴趣的部分。
  •     很早就知道这边书,抽空了一天,好好看完,评价如下。 1个人认为这本书比较适合教材教书使用,毕竟许多知识还是点到为止,最好有人指导看,当然指面对初级的工程师。 2本书较为系统,由于有多年开发和团队管理经验,所以许多知识都有感觉,因此较为适合我平常当做工具翻一翻。 3邹欣老师的书少了许多枯燥,多了些平易近人,看起来较为没有压力。 由于本书案例是.net,计划自行改为php,把书本知识点变为PPT课件,内部培训使用。
  •     一本很实际的软件工程,国内出版少有的优质资源
  •     都是大实话
  •     这本书适合采用“通读”的方式进行阅读,作者较为完善的介绍了软件工程的整个流程,尤其是产品新人,通读之后将会软件开发的整个流程有更进一步的了解,包括需求分析、项目管理、软件开发、测试、发布等。其中还介绍了敏捷开发、绩效管理等方法,让产品新人对软件开发能有一定性的了解,还是值得一读
  •     写的好好一点不像教材 很全面实用又通俗易懂 适合入门
  •     的确更接地气
  •     无聊,适合完全没项目经验的看看
  •     全都是启示
  •     比学校里的软件工程课本好读到不知道哪里去了
  •     仔细体会一下还没有得到的东西
  •     看到了一些工作的真相,但写得太教材化了,不太喜欢
  •     软件工程理论大观。有不少可以直接拿来用的方法,但要用好也不是易事。
  •     思路清晰,结构合理的一本好书
  •     了解下微软的软件工程过程。
  •     软件工程的教材,写的很生动,但还是难改软件工程类书的让人没兴趣。通篇看完了本书,软件开发的整个流程都涉及到了。对于学生来讲,可以一看,算是科普,对于工作的人来说,看了也白看,大点的公司工作流程就是这样的,小公司流程不规范,看了也没用。总结:刚毕业的学生,最好先去大公司,做好入门。
  •     看了几章,内容还不够深入,应该比较适合初学者,每一章最后都有很多参考资料。
  •     一盘散沙,没有主线,泛泛而谈,也不知道为何评分这么高。差。
  •     按照叫教材来设计的,没有加入互联网行业的许多方法论,不够好。
  •     涵盖知识面非常广的一本书,也许不那么细致,但是觉得理清了软件工程的方方面面,非常有借鉴和指导价值。对于为接触过正式软件项目和流程的人来说是一本得以认识软件工程的经典,对于已经在软件行业摸爬滚打过的人来说也是一部可以 用来检验自身和公司实践的佳作。本书时候工程师,设计师,产品甚至几乎所有和软件产品相关的人和对软件产品的流程感兴趣的人。
  •     姜jun分的书里的一部分,这本应该还在李hai东那里,算送出去了。自己没怎么看
  •     软件工程方法论,思维方式提升,开发过程的理解
  •     非常不错的软件工程书,生动活泼,让人重温,除了开始上来就提到测试有点怪,别的都不错。
  •     邹老师签名版。
  •     还是比较偏理论吧
  •     用的材料新。部分讲解举例啰嗦。
  •     传统的软件工程思想,略过时
  •     接地气,阅读也轻松,微软哥们还是给行业贡献不少
  •     邹老师出品必属精品
  •     就是把原来的博客文章整在一起把软件项目的过程走了一遍,一些工具和方法还是比较好。 感叹一下微软的水平就是高,项目里能够花的钱就是多,能够找到的人也是好,自己公司的项目还是根据实际情况来做,不能强求。
  •     通俗,接地气地将软件工程的基本流程进行描述
  •     过于简单
  •     适合学生学习,然而对一些有根深蒂固诟病的企业来说没有办法改变
  •     今年终于看了本专业相关的。赞一个。
  •     软件工程入门书,简单介绍了从需求、分析、设计、开发、测试、到产品发布的流程,着重学习了需求分析和PM应当关注的点。写法简洁、举例风趣,看着不累。内容范围较广、不过并不深入,只是表面的了解,适合软件专业大学生或其他专业的行业从业者。
  •     通过此书相对系统地学习软件工程,有干货,有趣味,内容丰富。
  •     课本风格,介绍的工具很多是微软那一套,但是总觉得不适合新手看,比较适合野路子出身的、经验丰富的程序员。
  •     国内难得一见的软件工程好书了,不容易
  •     贴近现代实践的软件工程教材
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024