年 | 事件 |
---|---|
2007 | 首次邀请邹欣老师讲授软件工程 |
2012 | 再次邀请邹欣老师讲授软件工程 |
2013 | 基于“做中学”的模式,开始以实践为核心的软件工程课程改革试点 |
2016 | 软件工程系列课程改革基本完成,软件工程课程改为选修 |
2017 | 引入翻转课堂,尝试将软件工程课程教学和实践流程规范化 |
2019- | 软件工程课程更名为敏捷软件工程,与人工智能软件工程与嵌入式软件工程合并为计算机学院软件工程课程,变为必修,三门课程独立授课 |
学期 | 课程 |
---|---|
大三下 | 敏捷软件工程 |
大二下 | 面向对象设计与构造 |
大二上 | 算法设计与分析 |
大一下 | 数据结构与程序设计基础 |
- 软件能力:按照工程化方法来开发高质量复杂软件系统的能力
- 软件工程基础课程:通过团队协作使用现代软件工具按照软件工程方法来开发高质量并且可用的复杂软件系统的能力
- 复杂软件系统:具有一定复杂性、需要团队协作来完成的软件系统
- 团队协作:两人协作、5-7人团队协作
- 软件开发工具:充分利用现代工具来提高开发的效率和质量
- 软件工程方法:构建一个有效协作的功能团队,综合运用极限编程、测试驱动、敏捷等软件工程方法和最佳实践,通过有效项目管理按计划的开发满足典型用户需求的可用软件方法
- 高质量:能够使用技术性手段来确保所开发软件的质量
- 可用:能够通过技术性手段来证明软件的可用性并获取用户的反馈
- 课堂教学:研讨性教学、课堂练习、作业点评、讨论、团队项目汇报
- 课后作业:博客作业
- 项目实践:
- 结对项目 (2周)
- 团队项目 (12周)
- 总结回顾 (2周)
- 16周左右完成课程
团队项目
- 目标
- 练习1对多合作
- 学习敏捷软件开发方法,软件团队的构建,软件生命周期及各个阶段所用到的工具
- 开发一个值得骄傲的可用软件
- 时间
- Alpha迭代4周,项目评审和反思1周
- Beta迭代4周,反思1周
- Gamma迭代4周,项目评审和反思1周
注:Beta阶段反思与Gamma阶段设计与计划压缩成一周
- 内容
- 代码规模在1-2万行左右,面向实际用户的可用软件
- 在已有软件的基础上进行软件开发,或者提出满足特定用户需求的软件并进行开发
- 以5~7人团队的形式进行团队协作
- 通过两轮迭代的敏捷软件开发,体验软件开发的全生命周期
- 每一轮迭代的流程和任务:
时间 软件开发阶段 博客任务 第一周 计划和设计 1. 团队贡献分分配
2. NABCD需求分析
3. 功能规格说明书
4. 技术规格说明书第二周 实现(冲刺第一周) 五篇每日例会博客 第三周 实现(冲刺第二周) 五篇每日例会博客 第四周 稳定和发布 1. 测试计划和报告
2. 发布说明第五周 评审和反思 1. 维护和反思
2. 项目展示
3. 转会人员确定(Alpha)
- 要求
- 团队项目每一项任务都必须有结果
- 代码签入、博客、文档等
- 团队项目过程中所有材料公开
- 每个团队公布可实施的进度表
- 在冲刺过程中发布每日例会记录
- 团队项目开发的软件要有真实用户
- 展示用户数量和对软件的反馈
- 在每轮迭代之后进行反思
- 找出自己和团队在本轮迭代之中的不足之处,并提出改进办法
- 从反思和错误中学习巩固软件工程知识和方法
- 团队项目每一项任务都必须有结果
- 课程实践安排
- 在开课之前,基于微软AI301课程整理出一个基础的人工智能开发平台和工具预训练资料
- 尽可能早的将资料分享给学生进行预习,使其基本掌握人工智能开发工具的使用
- 在课程中加入对人工智能软件开发等发展趋势的介绍
- 为在团队项目实践中引导学生自觉地使用人工智能技术解决实际问题做准备
-
在经典的敏捷软件开发流程的基础上,面向智能软件的开发要求和特点进行改造适配
软件开发流程 改进适配计划 需求分析 加入与智能相关需求的 设计 人工智能模型的设计及 实现 人工智能模型的实现、训练及验证 测试 人工智能模型的测试
- 智能软件开发项目设计:
- 从人工智能领域研究者手中获取需求,提升项目类型的多样性
- 注意与当前先进的人工智能技术和理念相结合,激发学生的兴趣
- 过程管理机制设计:
- 在过程管理的结点中加入与人工智能技术相适应的检查结点
- 加强对技术风险的管控,注意引导学生规避
时间 | 课堂任务 | 项目作业 |
---|---|---|
第0周 | 第0次个人作业,人工智能开发平台和工具预训练 | |
第1周 | 个人项目 | |
第2周 | 代码复审、结对项目 | |
第3周 | 个人项目点评 | 代码复审、结对项目 |
第4周 | 案例分析、团队博客作业(团队介绍,采访说明) | |
第5周 | 结对项目点评 | 团队项目选择:项目建议和NABCD用户需求分析,需求中智能化问题分析,团队贡献分分配方案 |
第6周 | 审核项目计划 | 计划和设计:功能规格说明书和设计文档,包含人工智能模型设计、训练数据准备方案、技术选择等 |
第7周 | 规格说明书审核 | 实现(冲刺):发表至少10次每日例会记录,人工智能模型的实现与训练 |
第8周 | 项目进度追踪 | |
第9周 | 项目进度追踪 | 稳定和发布:测试报告、发布说明,人工智能模块的测试 |
第10周 | 测试和发布情况 | 推广和收集用户反馈 |
第11周 | Alpha阶段项目评审 | Alpha阶段反思,团队成员转会 |
第12周 | 反思博客点评,Beta阶段改进计划 | 计划和设计:功能规格说明书和设计文档,包含人工智能模型设计、训练数据准备方案、技术选择等 |
第13周 | 规格说明书审核 | 实现(冲刺):发表至少10次每日例会记录,人工智能模型的实现与训练 |
第14周 | 项目进度追踪 | 实现(冲刺):发表至少10次每日例会记录 |
第15周 | 项目进度追踪 | 稳定和发布:测试报告、发布说明,人工智能模块的测试 |
第16周 | 测试和发布情况 | 推广和收集用户反馈 |
第17周 | Beta阶段项目评审 | Beta阶段反思 |
根据学校课程体系的情况,可以依据模板进行若干修改。例如本届北航删去了个人项目,并增加了一个团队开发迭代。
任务 | 时间节点 |
---|---|
完成预训练资料并发布 | 2019年1月底 |
完成团队实践项目开发流程的改造 | 2019年2月 |
完成面向智能软件开发的团队项目题目设计 | 2019年3月初 |
《软件工程基础》课程选课 | 2019年3月初 |
引导学生完成预训练,发布团队项目题目 | 2019年3月底 |
团队项目选题完成,开始项目计划和需求分析,分享学生的项目计划,需求分析报告和设计文档 | 2019年4月初 |
项目实践过程和源代码在GitHub公开 | 2019年4月初开始 |
项目每日例会报告在cnblogs公开 | 2019年4月初开始 |
分享第一轮迭代团队项目展示以及反思 | 2019年5月初 |
进入第二轮迭代,优化需求分析报告和设计文档,优化团队项目协作方式和项目管理方式 | 2019年5月初 |
进入第三轮迭代 | 2019年5月中 |
分享最终项目展示及总结反思 | 2019年6月中 |
班级: