(2015秋) 《软件工程》教学总结

轰轰烈烈开展了一学期的《软件工程》教学改革终于告一段落,宜乘热打铁,总结如下。分三个部分进行:(1)教师和学生基本情况介绍;(2)教学内容(含理论知识、案例实践安排);(3)实际教学组织情况分析,附带经验、教训小结及原因分析。

一、师生基本情况

教师:2014年博士毕业,专业是软件分析与测试。在此之前,我在南通大学任教,主要课程是《软件工程》及软件工程相关专业。其中《软件工程》课程教过超过10轮次。对《软件工程》理论知识有一定的研究和心得的,对软件工程的主要知识点也有基本的理解。在学习阶段曾在国内实力较强的软件公司短期实习。助教宝玉:曾经在著名软件公司任技术顾问,目前在国外留学,有着丰富的软件项目开发实战经验。学生:南通大学杏林学院计131、132(大三)学生,共计44人。大一时候学过C++编程、部分同学自学过Java编程。有一定的编程经验。

二、教学内容

(1) 理论教学
目的主要是传授软件工程知识点,包括软件开发、测试的知识、软件项目管理知识等。采用教材是《构建之法》-现代软件工程(邹欣著 第二版,人民邮电出版社),与市面上的其他软件工程教材不同的,这本书的写作风格相当诙谐有趣、采用很多比喻,将很多软件工程理论融入到这些类比的故事当中。(这也带来了一个问题: 读者需要一定的“幽默细胞”才能读懂这些故事。好比某人讲了个笑话,台下听众却听不懂,就不好玩了,正所谓好故事,也需要好的听众!)。这本书的教学内容安排大致如图1:


图1 软件工程教学知识图谱 V2.0 (建议第三版《构建之法》是不是增加个类似的知识图谱,可以一目了然)

这里我略去了第16、17章 IT行业的创新,这两章章有些哲学的意味,我觉得这两章留给学生们自己阅读、慢慢体会比较好。此外,还有第九章 PM部分,建议也是留给学生自己阅读领会。

第一章(概述部分),主要用于回答什么是软件工程、为什么要研究软件工程。 我觉得写得非常好的地方在于用了个很好的类比,将软件开发的不同阶段类比为各种不同飞机的制作。另外一个写得非常好的地方是对项目特点的概括:Build to Learn、to Show、to Server、to Win。

第二章:我觉得最好与第三章合并在一起讲授,围绕的是个人能力和成长过程。此外,我觉得2.1 单元测试在这里(ch2)可做简要介绍,详细讲解可以放在后面“软件测试”章节。我知道邹欣老师介绍过“三文鱼”模型,猜想是可能出于对应该模型的需要。3.3 节可作为课堂讨论的议题,还是很有辩论意思的。总体上,我觉得教材第二章、第三章内容可以合并在一起讲授。

第四章:写得非常好,感觉比第一章的还有味道,就不多说了。

第五章:团队和流程,采用例子很清晰地说明团队、非团队的区别。 接着列举了10种团队模式(头大)和6种开发流程(事实上,本章最后抛出引子,提及了后面将要介绍的敏捷流程、MSF)。我建议讲授时:(1) 分清团队模式的分类标准。可以将列举的已有模式进行更简洁的分类,让学生一目了然,能很快明白各种团队组合的利弊。(2) 我建议在这一章将简单讲授一下开发流程,抛出引子。软件开发流程的知识点将放在第六章、第七章主要讲解。如果时间来不及,可以将将第7章作为附录,让学生课外阅读学习也不错。

第八章、第十章写得很不错。其中在讲用户调查时,可以先讲各种方法的分类,让学生有总体的认识,至于各种方法学生自己阅读即可。我在想这部分省出的时间,可以设计一个课堂的需求分析—— 用户调查。此外,第十章 的10.4 节功能驱动设计仅作简单介绍。设计部分留在后面设计阶段(第十一章)讲。

第十一章讲软件设计与实现,前面(Page 224)讲设计方法可以进一步加以概括文字文档驱动的设计方法、图形模型驱动的设计方法两类(当然这两类还可以进一步细分)。接下来主要介绍第二类设计方法。最后11.5 略讲。

第十二章,用户体验,可以结合学生平常使用QQ、手机QQ、微信、微信公众号的一些体会来讲解,先让学生自己总结,教师在一边引导。

第十三章 用户测试 内容及其丰富,可讲内容实在太多,实际学习内容要有取舍。除了一些基本概念要求掌握外,要求学生掌握PIE模型,基本的软件测试用例设计方法,能够掌握简单的覆盖测试工具使用。

第十四章,软件质量保障。本章软件质量部分(14.1)可以提前到第一章绪论部分讲解,软件质量保障可以穿插到流程部分讲解。

第十五章,稳定和软件发布。 其实发布相对简单好理解,倒是本章最后的寓言故事很是让人回味无穷,但愿我的学生也能领悟到其中的奥秘。否则,邹欣老师辛苦写出这样的故事,弦断不知几何。

剩下两章,我前面说过,比较适合学生自学。毕竟很多道理不是老师教出来的,而是学生自己悟出来的。但愿邹欣老师的知音能再多一些。

(2) 实践环节

首先,在学期初,我们首先进行了C++ 学习情况摸底调查、接着开展学生使用软件的调查,第一节课就要求每个学生在博客园开通博客,并以博客的形式完成作业。按照要求,应该在第一次课程结束后开通博客,但存在不足之处:是学生博客开通速度不够快,有少量同学,第三周才勉强开通博客。这里面有学生的客观需要:一个新的作业方式的适应过程。

第一次实践作业是设计一个简单的矩阵加法,结果遇到了不少困难,从Eclipse环境搭建、不少同学还得先自学Java语言语法。结果可想而知,我和宝玉忙着给同学们补课:从Eclipse环境配置、Java语言的技术辅导、到面向对象编程思想(习惯)逐项在QQ群和QQ好友中讲授,希望能提高他们的技能。直到有一天,我和助教突然想起,这门课程的目的在于软件工程的知识素养,放弃了手把手教的方式。

第二次实践是“设计一款爸妈使用的手机”,以游戏的形式开展课堂讨论,不可否认,这是一次非常成功的课堂组织教学。我和宝玉事先精心设计的课堂的讨论环节,将44人同学分成11组,分组讨论,分组设计,分组演示,课堂辩论。同学们对功能、性能等方面设计投入心血,考虑非常深入,从事后各人整理的博客(需求分析博客)也可以看出来,同学们的积极性被空前调动了。因此,总体上看,第二次实践算是很成功。

第三次实践是用户体验。要求同学们关注“南通大学教务管理”微信公众号,通过使用,分析其在用户体验方面的不足。对应地,同学们也提出了不少用户体验方面的缺陷与不足。
考虑学生动手能力普遍较弱,最初设想的软件开发项目最终也没付诸实施。加之由于时间有限,实践环节就没有继续开展。

三、教学组织情况

本学期《软件工程》教学主要模式:课堂教学(讨论)+课外实践+博客作业(助教点评、学生反馈)

经验在于课外实践(曾经充分调动学生积极性)、建立“QQ教学改革群”。在群里、博客园及时分享有用的链接、观点等。信息沟通较为方便,美中不足的是学生、教师、助教的双向交流并不频繁、体现为老师、助教作业点评之后的师生交互上 学生学习是作业驱动型还是占绝大多是。

总结上述情况,得到了如下启示:(1)对新的教材内容需要尽快了解掌握,需要加强学生了解不够,早期布置实践作业偏“难”,进度安排前松后紧。需要从系统设计实践教学案例,并且从一开始就抓紧督促学生,保持进度;(2)要持之以恒。学期伊始,满腔热情。在学生作业拖了后腿之后调整周期过长。更需要持之以恒的决心和信心。(3)心太软。消极怠工的学生批评不到位、作业期限一拖再拖,反过来也影响了教学的进度。并需要一开始就坚决执行严格的打分规则。(4)博客点评问题。与学生的互动不充分。在对学生的博客作业点评之后跟踪不够,没能带动学生积极反馈的势头。需要引导一批学生对老师的点评积极反馈,形成一个好学习氛围。

后记:明年春季还有四个班的教学,既然开了头,就没有回头的道理。

后记

  1. 对学生小结的反馈

  2. 请看宝玉助教的总结

posted on 2015-12-22 00:27  小林觉  阅读(1217)  评论(8编辑  收藏  举报

导航