作者自2007年开始,在清华大学、北航、中科大微软计算机实验班、北京大学软件学院等学校教授现代软件工程课程。《构建之法——现代软件工程》是邹欣老师站在IT产业界和教育界的双重视角,结合自己在一线名校切的切身教学经验和体会,编写的一本与众不同的教材,体现了其独特的“做中学”的教学方法和理念。
本书赞誉:
《构建之法》倡导的“Learning by doing”,不仅是软件工程实践的重要理念,更成为我教学、科研和团队组织的方法论,已经变成我的“口头禅”。
——张栋/福州大学数学与计算机科学学院
在教学中,学生通过“做中学”学会了软件工程的实践方法,我也在教学过程中通过“做中学”不断改进软件工程的教学方法,互相促进。在科研中,我也鼓励学生“做中学”,通过实践来验证和发现新的想法,避免空谈。
——罗杰/北京航空航天大学计算机学院
我希望按相同的原则研发、教学、生活,《构建之法》在所有方面皆能提供指导原则和具体方法。度量与估算,契约与核查。作业如此,代码如此,为人谋也如此,时时对照三省吾身。构建之法,存乎一心。
——杨贵福/东北师范大学计算机系
《构建之法》改变了我的教学和生活。在教学中,我尝试当教练,带领学生”做中学”,让“以学生为主体,以老师为主导”的想法落地,大大提高了教学质量。在生活中运用构建之法,我成功地减肥,提高了乒乓球技能,背了两万单词。
——娄嘉鹏/北京电子科技学院信息安全系
《构建之法》不仅帮助我开设面向机械专业的控制软件设计课程,也启发我“构建”其他专业课的教学,指导我更有效地开展科研。勤动手,把简单的事情做到位;勤写作,把复杂的问题描述清楚;勤交流,和团队协作完成任务。边读《构建之法》边实践,才是有效的阅读方式。
——陈冰/华中科技大学机械科学与工程学院
第三版增加若干知识点,删掉不少累赘之外,这一版的重点是增加了很多实战的内容,如下所示:
第2章:敏捷软件开发的原则在实践中和教学中的运用
第3章:软件工程师的思维误区和职业发展的故事
第7章:软件工程在微软公司的实战中
第8章:用Kano 图分析三种不同的功能投资和回报
第9章:高效的团队讨论
第11章:实战中的源代码管理
第12章:贯穿多种设备的用户体验
第17章:基于能力和动力模型的领导力
邹欣现任微软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
I 推荐序
III 读者反馈
V 第三版前言
VII 第二版前言
VIII 第一版前言
1 第1章 概 论
1.1 软件 = 程序 + 软件工程
1.2 软件工程是什么
1.3 练习与讨论
21 第2章 个人技术和流程
2.1 单元测试
2.2 效能分析工具
2.3 个人开发流程
2.4 实践
2.5 练习与讨论
46 第3章 软件工程师的成长
3.1 个人能力的衡量与发展
3.2 软件工程师的思维误区
3.3 软件工程师的职业发展
3.4 技能的反面
3.5 练习与讨论
68 第4章 两人合作
4.1 代码规范
4.2 代码风格规范
4.3 代码设计规范
4.4 代码复审
4.5 结对编程
4.6 两人合作的不同阶段和技巧
4.7 练习与讨论
96 第5章 团队和流程
5.1 非团队和团队
5.2 软件团队的模式
5.3 开发流程9
5.4 练习与讨论
114 第6章 敏捷流程
6.1 敏捷的流程简介
6.2 敏捷流程的问题和解法
6.3 敏捷的团队
6.4 敏捷总结
6.5 敏捷的问答
6.6 练习与讨论
133 第7章 实战中的软件工程
7.1 MSF简史
7.2 MSF基本原则
7.3 MSF团队模型
7.4 MSF过程模型
7.5 实战中的软件工程
7.6 练习与讨论
157 第8章 需求分析
8.1 软件需求
8.2 软件产品的利益相关者
8.3 获取用户需求—用户调研
8.4 竞争性需求分析的框架
8.5 功能的定位和优先级
8.6 计划和估计
8.7 分而治之(Work Breakdown Structure)
8.8 练习与讨论
191 第9章 项目经理
9.1 PM是啥
9.2 微软PM的来历
9.3 PM做开发和测试之外的所有事情
9.4 领导力—高效的团队讨论
9.5 PM 和风险管理
9.6 练习与讨论
211 第10章 典型用户和场景
10.1 典型用户和典型场景
10.2 用例(Use Case)
10.3 规格说明书
10.4 功能驱动的设计
10.5 练习与讨论
232 第11章 软件设计与实现
11.1 分析和设计方法
11.2 图形建模和分析方法
11.3 其他设计方法
11.4 从Spec到实现
11.5 开发阶段的日常管理
11.6 实战中的源代码管理
11.7 代码完成(Code Complete)
11.8 练习与讨论
258 第12章 用户体验
12.1 用户体验的要素
12.2 用户体验设计的步骤和目标
12.3 评价标准
12.4 贯穿多种设备的用户体验
12.5 练习与讨论
279 第13章 软件测试
13.1 基本名词解释及分类
13.2 各种测试方法
13.3 实战中的测试
13.4 运用测试工具
13.5 练习与讨论
310 第14章 质量保障
14.1 软件的质量
14.2 软件的质量保障工作
14.3 练习与讨论
329 第15章 稳定和发布阶段
15.1 从代码完成到发布
15.2 不同频率和不同覆盖范围的渐进发布
15.3 发布之后—事后诸葛亮会议
15.4 练习与讨论
346 第16章 IT行业的创新
16.1 创新的迷思
16.2 创新的时机
16.3 创新的招数
16.4 魔方的创新
16.5 创新和作坊
16.6 练习与讨论
384 第17章 人,绩效和职业道德
17.1 领导力
17.2 领导力—知人善任
17.3 领导力—带领团队成长
17.4 猪、鸡和鹦鹉的故事
17.5 其实还是人的问题
17.6 绩效管理
17.7 萝卜与白菜
17.8 软件工程师的职业道德
17.9 练习与讨论
420 给任课老师和助教的建议
课程安排
师生关系
给授课老师和助教的建议
436 索引