2014/9 更新: 《构建之法 - 现代软件工程》已经出版
豆瓣讨论:
当当购买链接:
互动出版网购买链接:
亚马逊
软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程 (不信就请看 )。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。 经过几年的探索, 我总结了在16周的时间内让同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划。这几年教书的过程中, 我学习了一些 , 还有些, 也对中国大学的。近两年, 希望这个软件工程课也能实践一些创新的点子。
这套讲义在下面的学校正式课程中运用过:
2007 – 2010 清华大学理论计算机科学研究中心 (姚班) 主要是大四上学期 2009, 2012 北航计算机系 大三上学期 2010,2011,2012 秋季 中科大-微软 计算机实验班 (微软亚洲研究院创新人才班 ) 大四上学期
还有在北大合作的教学: 2007 - 2009 北京大学软件学院 研究生课程 (课程名叫 - 微软软件实现技术, 我是讲师之一, 只讲了本课件的少部分内容)
这套讲义有这样的特点:
理论和实践相结合,讲现代理论,同时讲体现理论的工具
结构紧凑,个人项目/结对项目/团队项目紧密配合, 能在16 周讲完。
面向实战,强调做中学 (learning by doing), 项目都公开发布,用户数量和反馈是项目重要的评价标准。
讲人在软件工程中的不同角色和作用 (软件过程, 软件工具, 软件人员的技术能力和职业能力)
有丰富的材料给教师/TA 使用 (见下面的 “学生作业”)
练习量大 (其实学生工作量和国际一流大学相仿), 内容多: 教材 (3 本), 参考书 (20 本)
讲义内容: (标题下没有链接的会在以后补充)
1. 概述
项目剖析
2. 个人开发技术
PSP: ,
(在最小的编程单元上保证正确性) & 回归测试 (保证程序在修改的过程中, 原有的功能保持稳定 )
3. 两人合作
a.
b. , 有记载的最早的结对编程发生在 1987年3月…
c.
4. 软件过程/方法论
敏捷方法: , ,
, TDD, FD
支持软件过程的工具 ()
5. 团队中的角色与合作
,
团队成员和心态 - 猪/鸡/鹦鹉
, PM 的成长,
Dev 的成长
& Test 质量保证和测试, ,, QA 的成长
6. 需求
a. 和建议
b.
c. 目标和远景 - 反面例子
d. 计划阶段, 软件估计 () ()
e. ,
7. 设计和开发
模块API 的设计 (, mvc/mvvm, interface)
8. 稳定阶段, 发布和维护
a.
b.
9. 软件和 IT 业的创新
a. 创新的迷思 连载 () () ()
b.
c.
d.
e. 如何提出 (NABC)
f. 创新的出路 - ; 创新的招数
10. 软件项目的管理
- 事后诸葛亮会议
()
附录, 参考书, 论文阅读
教材 (3本, 同学选择一本, 同时借阅另外两本) :
1. Steve McConnell (ISBN 1-55615-900-5)
中文版 斯蒂夫·迈克康奈尔 著 译者: 席相霖 等 ISBN 9787505372856
2. Steve McConnell ISBN: 9780735619678
斯蒂夫·迈克康奈尔 ISBN: 7121022982
3. 邹欣 (ISBN: 9787121071485)
主要参考书:
by Scott Rosenberg, ISBN: 9781400082469
中文版《》, 译者 韩磊, ISBN: 9787121066795
其它相关博客
-------
给学生布置的作业列表:
()
(2011)
(2012)
(2012)
-------
学生的感想:
2012 部分北航学生的感想:
所有讲义, 作业都可以分享给教师用于教学, 只要注明引用来源即可, 不必事先取得同意。
欢迎反馈和意见。