I前言
V给任课老师和助教的建议
第1章概论
1.1软件=程序+软件工程1
1.2软件工程是什么9
1.3练习与讨论18
第2章个人技术和流程
2.1单元测试20
2.2效能分析工具29
2.3个人开发流程34
2.4实践37
2.5练习与讨论42
第3章软件工程师的成长
3.1个人能力的衡量与发展43
3.2软件工程师的职业发展48
3.3技能的反面52
3.4练习与讨论55
第4章两人合作
4.1代码规范56
4.2代码风格规范58
4.3代码设计规范63
4.4代码复审66
4.5结对编程72
4.6两人合作的不同阶段和技巧77
4.7练习与讨论83
第5章团队和流
5.1非团队和团队84
5.2软件团队的模式85
5.3开发流程90
5.4练习与讨论100
第6章敏捷流程
6.1敏捷的流程101
6.2敏捷流程的问题和解法104
6.3敏捷的团队109
6.4敏捷总结110
6.5敏捷的故事—兼酒后问答112
6.6练习与讨论119
第7章MSF
7.1MSF简史121
7.2MSF基本原则122
7.3MSF团队模型134
7.4MSF过程模型136
7.5MSF敏捷开发模式137
7.6MSFCMMI开发模式139
7.7练习与讨论140
第8章需求分析
8.1软件需求142
8.2软件产品的利益相关者144
8.3获取用户需求—用户调查144
8.4竞争性需求分析的框架155
8.5功能的定位—四象限方法158
8.6计划和估计161
8.7分而治之(WorkBreakdownStructure)169
8.8练习与讨论171
第9章项目经理
9.1PM是啥175
9.2微软PM的来历176
9.3PM做开发和测试之外的所有事情178
9.4PM的能力要求和任务181
9.5练习与讨论184
第10章典型用户和场景
10.1典型场景和典型用户185
10.2规格说明书197
10.3功能驱动的设计202
10.4练习与讨论204
第11章软件设计与实现
11.1从Spec到实现205
11.2开发阶段的日常管理208
11.3练习与讨论217
第12章用户体验
12.1用户体验的要素219
12.2用户体验设计的步骤和目标232
12.3评价标准233
12.4练习与讨论235
第13章软件测试
13.1基本名词解释及分类238
13.2各种测试方法242
13.3实战中的测试254
13.4运用测试工具260
13.5练习与讨论266
第14章质量保障
14.1软件的质量268
14.2软件的质量保障工作274
14.3练习与讨论282
第15章稳定和发布阶段
15.1从代码完成到发布284
15.2发布之后—事后诸葛亮会议294
15.3练习和讨论300
第16章IT行业的创新
16.1创新的迷思301
16.2创新的时机317
16.3创新的招数322
16.4魔方的创新327
16.5创新和作坊330
16.6练习与讨论335
第17章人、绩效和职业道德
17.1猪、鸡和鹦鹉的故事337
17.2其实还是人的问题340
17.3绩效管理342
17.4萝卜与白菜348
17.5团队合作的几个阶段350
17.6软件工程师的职业道德354
17.7练习与讨论357
索引
——王赞/天津大学软件学院
将对软件工程思想的理解内化为软件工程师的职业习惯,是软件工程教学的核心目标,本书的实验设计恰恰非常有助于这一内化过程。个人项目、两人项目和团队项目由易到难,循序渐进,不断总结。我在教学中借鉴这一思路,从学生较为熟悉的编程训练入手,以范例演示基本编码规范、 No Design时的代码、经过基本Modularity (also called separation of concerns)设计的代码、writing code to make it reusable on future projects以及一些特殊的接口设计……从编码实践中理解软件工程思想,就会跳出纸上谈兵的框框。
——孟宁/中国科技大学软件学院
软件工程在大学是十分难讲,也是十分容易讲的一门课,容易在这门课涵盖的内容和外延特别丰富,这些内容学生基本没概念,短期也无法落到实处来验证有用没用,所以老师可以大讲特讲,人畜无害;难在你要在学生一片空白(没有很强的代码能力、没有团队概念、没有项目经验)的情况下去让他们懂得这些东西。 在我认识的人中,能有丰富的项目经验又愿意花时间在教学实践上,能把各种知识理论体系化的人寥寥无几。邹欣老师恰好这几点都具备。快速翻完整本书,感受是这本书出版得恰逢其时,传统的软件工程教材早就该翻新了!
——徐亚波/中山大学软件学院