软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。 经过几年的探索, 我总结了在16周的时间内让同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划。

这套讲义在下面的学校正式课程中运用过:

 

2007 - 2010 清华大学理论计算机科学研究中心 (姚班) 主要是大四上学期
2009           北航计算机系  大三上学期
2010 – 2011 中科大-微软 计算机实验班 大四上学期
还有在北大合作的教学:
2007 - 2009 北京大学软件学院 研究生课程 (课程名叫 - 微软软件实现技术, 我是讲师之一)

 

这套讲义有这样的特点:

理论和实践相结合,讲现代理论,同时讲体现理论的工具

结构紧凑,个人项目/结对项目/团队项目紧密配合, 能在16 周讲完。

面向实战,强调做中学 (learning by doing), 项目都公开发布,用户数量和反馈是项目重要的评价标准。

讲人在软件工程中的不同角色和作用 (软件过程, 软件工具, 软件人员的技术能力和职业能力)

有丰富的材料给教师/TA 使用 (见下面的 “学生作业”)

练习量大 (其实学生工作量和国际一流大学相仿), 内容多: 教材 (3 本), 参考书 (20 本)

 

讲义内容: (标题下没有链接的会在以后补充)

 

      1. 概述
        1. 课程概述

http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html

      1. 软件工程概述

http://www.cnblogs.com/xinz/archive/2011/05/22/2053838.html

      1. 个人开发技术
        1. PSP 

部分在:  http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html 

技能的反面  (http://www.cnblogs.com/xinz/archive/2011/08/07/2129751.html)

      1. 程序效能分析 

http://www.cnblogs.com/xinz/archive/2011/11/20/2255809.html

      1. 单元测试    (在最小的编程单元上保证正确性)  &  回归测试   (保证程序在修改的过程中, 原有的功能保持稳定 )

http://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html

 

      1. 两人合作
        1. 合作的阶段和影响对方的方式

http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html  (http://www.cnblogs.com/xinz/archive/2011/08/22/2148776.html)

      1. 代码规范和代码复审

http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html 

      1. 结对编程 (need intuit story)

http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html

 

http://www.cnblogs.com/xinz/archive/2011/11/21/2257663.html

      1. RUP (TBD)
      1. 支持软件过程的工具 (tfs suite)
      1. Postmortem

http://www.cnblogs.com/xinz/archive/2011/11/20/2256310.html

http://www.cnblogs.com/xinz/archive/2011/11/07/2239150.html 

      1. PM Spec
      1. PM 的成长
      1. 角色 - Dev

http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html 

 

      1. 角色 - QA

http://www.cnblogs.com/xinz/archive/2011/11/14/2247980.html

QA 的成长

      1. 需求
        1. 项目需求分析和建议 

http://www.cnblogs.com/xinz/archive/2010/12/01/1893323.html

      1. 目标和远景  - 反面例子画扇面:

http://www.cnblogs.com/xinz/archive/2011/03/13/1982585.html

      1. 软件估计

http://www.cnblogs.com/xinz/archive/2011/04/05/2005978.html;   http://www.cnblogs.com/xinz/archive/2011/04/06/2007294.html

      1. 场景/典型人物

http://www.cnblogs.com/xinz/archive/2011/10/30/2229236.html

http://www.cnblogs.com/xinz/archive/2011/11/06/2237801.html 

      1. 稳定阶段, 发布和维护

测试的计划和执行

http://www.cnblogs.com/xinz/archive/2011/11/19/2255542.html

CC, ZBB

 

      1. 软件和IT 业的创新

创新的迷思   (http://www.cnblogs.com/xinz/archive/2011/07/09/2102052.html)

http://www.cnblogs.com/xinz/archive/2011/07/10/2102310.html

http://www.cnblogs.com/xinz/archive/2011/07/11/2102667.htmlhttp://www.cnblogs.com/xinz/archive/2011/07/09/2102027.html

 

创新的时机http://www.cnblogs.com/xinz/archive/2011/08/08/2130505.html

魔方的创新  http://www.cnblogs.com/xinz/archive/2011/08/04/2128015.html

创新的出路 

 

教材 (3本, 同学选择一本, 同时借阅另外两本) :

1. Rapid DevelopmentSteve 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 Codeby Scott Rosenberg, ISBN: 9781400082469

    中文版《梦断代码》, 译者 韩磊, ISBN: 9787121066795