虽然已经2年没有教授软件工程课程,可是当年在教学过程当中遇到的问题与困难仍是历历在目:html
1)教学内容以瀑布模型为主,内容陈旧,互联网和移动App开发经常使用的敏捷方法内容很是少;git
2)教学方法以讲授为主,实验课也是写文档,代码量不多,教师和学生都不喜欢;github
3)教学考核笔试形式,学生主要靠背,有些像思政类的课程。编程
做为教师,我也在寻找软件工程课程的有效教学方法,也进行了一些尝试。网络
2019年7月25日-28日,有幸在北京参加北京航空航天大学罗杰老师团队举办的“2019年暑期软件工程基础课程教学培训班”。在4天的软件工程课程培训中,我彻底将本身的身份转换为上课的学生,接受北航软件工程课程的学习,但愿从中最大程度的学习到北航软工教学成功经验。app
通过培训,有所得,特写总结,以备之后查阅,也算标志本次培训工做的结束。工具
在此,特感谢罗杰老师,邹欣老师和周筠老师。学习
2019年07月初,接到周筠老师赠送的《构建之法(第三版)》一书,在此表示感谢,也感谢组委会对本次暑期培训的精心准备与付出。测试
在正式培训以前,罗杰老师安排预培训做业。其实,这点着实然我感到意外,这说明本次培训其实在7月中间就已经开始了,1体现了组委会认真负责的态度和无私的付出。编码
预培训做业有两个:
1)快速阅读《构建之法》并提问。
做业连接以下:
https://edu.cnblogs.com/campus/buaa/2019BUAASummerSETraining/homework/3398
个人做业提交:
https://www.cnblogs.com/Teacher-Li/p/11184693.html
2)程序开发。
项目是一个解决地铁线路的程序开发问题,连接以下:
https://edu.cnblogs.com/campus/buaa/2019BUAASummerSETraining/homework/3407
个人做业提交:
https://www.cnblogs.com/Teacher-Li/p/11193949.html
https://www.cnblogs.com/Teacher-Li/p/11197583.html
https://www.cnblogs.com/Teacher-Li/p/11217338.html
个人代码Github
https://github.com/TeacherWLee/BUAA-Subway-Project
2019年07月25日-28日期间,日程安排以下表。
第1天:罗杰老师分享北航软件工程课程经验,并开始结对编程,最后邹欣老师分享教学经验。
罗老师将北航软件工程课程实施具体流程和课程经验就行分享。
结对编程对象是廖雪花老师,咱们一块儿完成结对编程任务。
结对编程做业要求:
https://edu.cnblogs.com/campus/buaa/2019BUAASummerSETraining/homework/3415
结对编程做业提交:
https://www.cnblogs.com/Teacher-Li/p/11246575.html
结对编程代码:
https://github.com/TeacherWLee/BUAA-Subway-Project
第2-3天:开始团队项目的第一轮和第二轮迭代,邹欣老师分享AI课程教学经验与资料。
团队共4位成员,包括:四川师范大学李巍、四川师范大学廖雪花、西南民族大学周绪川、桂林航天工业学院刘建华。
团队项目是七彩社团管理,墨刀原型演示以下:
https://org.modao.cc/app/icenmfeovgjywqdijksdm71of0el
第4天:上午完成第二轮迭代,并进行总结。
这次培训最大收获是北航大学计算机学院课程整体规划方式和软件工程课程教学方法。
1)北航计算机学院从大二开始,每一个学期设置一门硬核课程,这门课程不只仅是教学生相关知识那么简单,更重要的是,很是强调学生的实际能力锻炼。
例如,计算机组成原理课程的要求是学生设计并制做出一块CPU、编译原理课程的要求是学生开发一个编译器、软件工程课程要求是学生使用敏捷过程开发出一个可用的软件做品。
2)北航软件工程课程内容包括我的项目、结对项目和团队项目,任务难度逐步增长,是很是好的学习曲线。此外,在项目进行过程当中,很是注重开发团队间的交流和过程管理,学生要写博客、要有Git的提交痕迹。
咱们团队须要在2天时间内,开发出一个大学生社团管理系统的原型系统,并且要进行两轮迭代,时间紧任务重。团队共4位成员,包括:四川师范大学李巍、四川师范大学廖雪花、西南民族大学周绪川、桂林航天工业学院刘建华。
在团队项目开发过程当中,我对团队项目开发有了新的认识:
1)在团队项目进行过程当中,咱们使用了标准的Scrum流程,使用了白板、燃尽图、头脑风暴等工具。原本觉得对Scrum已经很是了解,可是在实际项目进行过程当中,仍是出现了一些意外状况,例如某位成员电脑不能联网致使墨刀协做不能进行等。
所以,软件工程具备社会属性,实际开发过程与理论开发过程每每是不一样的,这也让我对敏捷项目管理有了新的认识。
2)团队沟通管理的重要性和困难性。在团队项目进行过程当中,咱们团队4个成员在一块儿进行工做,这多是团队协做最理想的方式,沟通成本最低的方式。在这种模式下,咱们进行了头脑风暴和站立会议等方式进行有效沟通。不少解决方案都是在团队沟经过程中得出的,所以在软件开发过程当中,必定不能自觉得理所固然的作判断,必定要团队多进行有效沟通。
3)敏捷估算。项目时间和成本的估算,每每跟实际开发状况存在差别,并且每每比估算值要高不少。在每轮迭代过程当中,咱们进行了详细的计划安排,可是在实际过程当中,因为一些不可预见问题(好比网络中断)和一些估算不足问题(好比为博客书写预留较短期),实际进度与估算进度不相符,每每实际进度要更长一些。
在培训过程当中,存在一些遗憾的事情,若是培训能再来一次,我能够作的更好。
1)时间不足
在培训过程当中,培训任务是很繁重的,不少老师也都有很累很忙的感受。因为时间不足,我在此次培训过程当中,有不少地方作的很差。例如,测试用例只写了3个、部分博客总结写的比较简短等。若是时间再长一些,或者培训过程再来一次,我会调整时间安排,作的更好。
2)有些工具与方法未实践
在培训过程当中,软件做品使用墨刀快速原型的方法展示,团队4人没有编码工做,所以一些配置管理和团队管理工具和方法(例如Git等)没有实践。咱们也没有使用Scrum管理工具,在任务分配等方面存在问题,没有在实践中发现,燃尽图、白板等数据也存在问题。
结对编程
头脑风暴与技术讨论
每日站会
团队答辩
培训班老师、学生和助教合影
咱们使用思惟导图工具对课程主要内容和咱们主要工做进行了记录。
导图地址:
http://naotu.baidu.com/file/2132493785095534772dfa945755de5c?token=3fa8edbf18a00fac