软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。 经过几年的探索, 我总结了在16周的时间内让同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划。
这套讲义在下面的学校正式课程中运用过:
2007 – 2010 清华大学理论计算机科学研究中心 (姚班) 主要是大四上学期
2009, 2012 北航计算机系 大三上学期
2010 – 2011 中科大-微软 计算机实验班 大四上学期
2012 秋季 微软亚洲研究院创新人才班还有在北大合作的教学:
2007 - 2009 北京大学软件学院 研究生课程 (课程名叫 - 微软软件实现技术, 我是讲师之一, 只讲了少部分内容)
这套讲义有这样的特点:
理论和实践相结合,讲现代理论,同时讲体现理论的工具
结构紧凑,个人项目/结对项目/团队项目紧密配合, 能在16 周讲完。
面向实战,强调做中学 (learning by doing), 项目都公开发布,用户数量和反馈是项目重要的评价标准。
讲人在软件工程中的不同角色和作用 (软件过程, 软件工具, 软件人员的技术能力和职业能力)
有丰富的材料给教师/TA 使用 (见下面的 “学生作业”)
练习量大 (其实学生工作量和国际一流大学相仿), 内容多: 教材 (3 本), 参考书 (20 本)
讲义内容: (标题下没有链接的会在以后补充)
1. 概述
2. 个人开发技术
3. 两人合作
4. 软件过程/方法论
5. 团队中的角色与合作
QA 的闰年问题
QA/Test 的角色和分工 QA 的成长
6. 需求
a. 项目需求分析和建议
b. 目标和远景 - 反面例子画扇面
c. 计划阶段, 软件估计 (1) (2)
d. 场景/典型人物
7. 设计和开发
8. 用户界面,用户体验的设计
9. 稳定阶段, 发布和维护
a. 测试的计划和执行
b. CC, ZBB, Release Candidate, and RTW
10. 软件和IT 业的创新
a. 创新的迷思 连载 (1) (2) (3)
b. 创新 VCD 的故事
c. 创新的时机
d. 魔方的创新
e. 如何提出靠谱的项目建议 (NABC)
f. 创新的出路 - 走进作坊; 创新的招数
11. 软件项目的管理
12. 软件工程师的职业道德
人的问题 (同学的感想)
13. 附录, 参考书, 论文阅读
教材 (3本, 同学选择一本, 同时借阅另外两本) :
1. Rapid Development Steve McConnell (ISBN 1-55615-900-5)
中文版 快速软件开发斯蒂夫·迈克康奈尔 著 译者: 席相霖 等 ISBN 9787505372856
2. Code Complete (2nd Ed)Steve McConnell ISBN: 9780735619678
中文版 代码大全 (第二版)斯蒂夫·迈克康奈尔 ISBN: 7121022982
3. 移山之道 – VSTS 软件开发指南邹欣 (ISBN: 9787121071485)
主要参考书:
Dreaming in Code by Scott Rosenberg, ISBN: 9781400082469
中文版《梦断代码》, 译者 韩磊, ISBN: 9787121066795
其它相关博客 http://blog.csdn.net/SoftwareTeacher/archive/2010/11/20/6024185.aspx
现代软件工程的教材和参考书
有关创新的书
一些有意思的程序员常去的博客 [zz]
-------
给学生布置的作业列表:
现代软件工程 作业 1: 个人项目
现代软件工程 作业 2: 结对项目
(电梯调度设计)
现代软件工程 作业 3: 团队作业 2012 团队作业
现代软件工程 作业 4: 个人阅读作业 (2011)
现代软件工程 作业 4: 阅读和调查作业 (2012)
现代软件工程 作业 5: 结对调查和分析作业 (2012)
-------
学生的感想:
现代软件工程系列 学生精彩文章(7) 宝贵的教训
现代软件工程系列 结对编程 两周写好3D 陆战棋
现代软件工程系列 学生的精彩文章 (6) 我们其实还不懂互联网
现代软件工程系列 学生的精彩文章 (5) 其实还是人的问题
现代软件工程系列 学生的精彩文章 (4) 为用户服务
现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心... [zz]
现代软件工程系列 学生的精彩文章 (2) 到底是谁的 bug?
现代软件工程系列 学生的精彩文章 (1)
所有讲义, 作业都可以分享给教师用于教学, 只要注明引用来源即可, 不必事先取得同意。
欢迎反馈和意见。