现代软件工程 教学计划 适应两种难度和重点
现代软件工程 教学计划
经过 2007 - 2018 年,30个不同学校的实践后, 《构建之法》在大学的两种教法已经出现了, 这两种教学计划适应于两种难度和重点。 下面我们具体介绍这两种计划。
1. 软件工程导论(适合大一下的学生,在学过一门编程课之后,代码量:1000 行)
2. 现代软件工程 (适合大三下的学生,先修课要求: 学过编程,数据结构,数据库+操作系统+编译原理+网络 等课程, 有 4000 行以上的代码量)
1. 软件工程导论
特点:这是学生学过一门编程课之后第一次完整接触到软件工程的整个流程。
目标:让学生对软件工程有一个初步完整的了解。
不要求:软件部署到大规模实际运行的平台上。
Week |
Lecture (授课) |
辅导/交流/演示 |
项目 |
作业 |
1 |
Intro (课程简介, 分组) |
使用代码仓库 (github),按照工具,写博客 |
Pair-Project (结对项目) |
博客:课程准备 |
2 |
Software Engineering (软件工程概论), Unit Test (单元测试), Performance Analysis (效能分析) |
|
|
博客:快速阅读全书并提问 博客:结对项目总结 |
3 |
Personal Software Process (个人软件流程 PSP), Code Quality/convention (代码质量的各种标准,代码规范,设计规范) collaboration (两人合作), influence (影响别人的方式) |
结对项目复审 |
|
|
4 |
Team Structure & Development Process (软件团队的模式和开发的各种模式) |
|
博客:用快速原型设计工具 | |
5 |
Innovation (软件业的创新) Myths of Innovation (创新的迷思), Innovator's dilemma (创新者的两难) |
讨论热门创新产品 |
|
博客:分析热门产品 |
6 |
NABCD (项目可行性分析) Spec and PM (软件规格说明书, 项目经理)
|
|
团队项目开始 (alpha) |
博客:团队项目NABCD |
7 |
Scenarios (基于场景的设计), 软件的 UX/UI |
|
daily scrum ( 5 天 ) |
博客:scrum 每天一篇 |
8 |
Testing (测试) |
|
Alpha 发布(产品原型) |
博客:测试报告 |
9 |
MSF (微软软件解决方案框架), CMMI 软件成熟度模型 Release (软件的发布,事后诸葛亮会议) |
各个小组互评Alpha 成绩 小组成员流动 |
团队项目 beta 开始 |
博客:点评各组项目 博客:小组beta 计划,新成员介绍 |
10 |
请业界人士,研究生来交流 |
|
daily scrum ( 5 天 ) |
博客:每天scrum 报告 |
11 |
|
回答自己最初看书提出的问题,阅读文献报告 |
daily scrum ( 5 天 ) |
博客:每天scrum 报告 |
12 |
(可选)软件工程专题深入探讨 |
|
beta release |
博客:项目 beta 报告 |
13 |
|
Final Review (最终汇报, 复审,所有分数汇总) |
|
博客:个人软件工程总结 |
14 |
(缓冲) |
(缓冲) |
(缓冲) |
2. 现代软件工程, 软件工程实践
(下面表格是 2010 年设计的教学安排, 之后有不少学校进行了改进, 例如福州大学软件工程课, 请参考。 )
这是一个16周 《现代软件工程》 的课程安排:
教学计划总长: 16 周 (扣除放假之后)
授课: 14 次 老师授课
辅导课: 9 次 (辅导/交流/演示) 学生主动汇报进展, 心得, 提出问题, 老师及专业人士给予辅导。
学生项目: 个人项目, 结对编程项目, 团队项目(两个阶段)
Week | Lecture (授课) | Talk (辅导/交流/演示) | Project | 作业 |
1 | Intro (课程简介, 分组) I-project 个人项目介绍 | 使用代码仓库 (github),博客 | i-project (个人项目) 单元测试,效能分析 | |
2 | Software Engineering (软件工程概论), Unit Test (单元测试), Performance Analysis (效能分析) | 快速阅读全书并提问,发博客 | ||
3 | Personal Software Process (个人软件流程 PSP), Code Quality/convention (代码质量的各种标准,代码规范,设计规范) | Pair project 结对项目 | ||
4 | collaboration (两人合作), influence (影响说服别人的多种方式) | P1 review | Pair project 结对项目 总结 | |
5 | Team Structure & Development Process (软件团队的模式和开发的各种模式) | 如何使用快速原型设计工具 (墨刀 等) | ||
6 | Innovation (软件业的创新) Myths of Innovation (创新的迷思), Innovator's dilemma (创新者的两难) | 分析目前热门软件产品 | 结对项目 2, 分析目前热门软件产品并发表博客 | |
7 |
NABC (项目可行性分析) Spec and PM (软件规格说明书, 项目经理)
|
Team Project Kick Off 团队项目开始 Alpha 阶段 |
||
8 | Scenarios (基于场景的设计), 软件的 UX/UI |
daily scrum ( 5 天 ) | ||
9 | Testing (测试) | daily scrum ( 5 天 ) | ||
10 |
MSF (微软软件解决方案框架), CMMI 软件成熟度模型 Release (软件的发布,事后诸葛亮会议) |
各个小组互评Alpha 成绩 小组成员流动 |
alpha 阶段发布, 总结 | |
11 | Dev-History (微软软件开发管理的历史,请业界人士来交流) | Beta阶段 daily scrum ( 5 天 ) | ||
12 | Risk Mgmt (软件项目的风险管理) | daily scrum ( 5 天 ) | ||
13 |
(可选)软件工程专题深入探讨, 如:人工智能应用开发 |
回答自己最初看书提出的问题,阅读文献报告 | beta release | |
14 | (可选)个人选作额外的作业 | Final Review (最终汇报, 复审,所有分数汇总) | ||
15 | (可选, 缓冲) |
教材:《构建之法》