2020年又进入12月了,任教的《软件工程》也进入了尾声。目前在教的是长沙学院数学与计算机工程学院软件工程专业的18软件01-04,四个班。
上半年是新冠肺炎疫情,一直在上网课,任教的《软件工程》是计算机科学与技术专业的17计科01-04,也是四个班,采用的教学平台是腾讯课堂,上的直播。线上授课肯定效果要差不少,而且师生都是头一遭。
借博客园一角写些《软件工程》课程的教学心得体会。
一 关于教材
软件工程教学选教材一直是一个纠结的事情,目前业界最出名的教材非机工的Pressman R.S.的《软件工程:实践者的研究方法》莫属,这本教材还出了本科教学版,我在17年、18年给软件工程专业的15级和16级学生上课时选用过这个教材。这个教材虽好,但也有不尽如人意的地方,一个是内容非常庞杂,虽说是本科教学版,但在软件质量控制,软件项目管理(我校另外开设了一门课)方面篇幅很大,软件架构设计方面跨越较大讲得不是很细。第二个就是在UML建模方面欠缺,而且中间的很多UML模型不符合UML规范(这里省去具体哪些不合规范之处)。
为了弥补UML教学的教材欠缺,我选用了另外一本清华的由李波、杨弘平编写的《UML2 基础、建模与设计实战》作为补充教材。这本教材我也用了好几年,我对这本教材确实评价不高,里面很多内容和Fowler M.编写的《UML精粹:标准对象建模语言简明指南》内容相矛盾(这里也省去了具体在那些地方矛盾)。另外国内感觉写得好的教材是北京大学王立福写的《软件工程》,不过这本教材首先是比较晦涩难懂,在体系结构设计部分跳跃较大,其次是基本上没有牵涉到UML建模,而是直接使用,不方便本科生在没有UML知识的前提下学习。王立福的教材我也在好几届学生中采用过(主要是计算机科学与技术专业的学生)。
于是我自己写了一本符合我教学习惯的教材《软件工程及软件建模》,北京邮电大学出版社,2019年8月出版。今年我在第二次印刷时又做了一些小的修订。
从19年下学期给2017级软件工程专业学生上课开始我就使用了我的自编教材,今年我又将本教材中的所有习题都重新做了一遍。
目前感觉用这个教材效果还是很不错的。唯一感觉糟心的是软件架构设计这一块还有些弱。
二 关于实践教学
重点内容放在UML建模,我安排了大量的课时训练学生。
1、基于场景的需求建模:
要学生绘制UML用例图,编写用例说明。特别强调用例说明的规范性,必须是描写参与者和软件系统交互过程,另外还安排了绘制UML活动图来反映场景需求。共计6学时。
2、基于类的分析类建模:
第一步,给定学生一个《牙科诊所》的一个软件开发需求,采用名词萃取法提取备选类,再筛选出分析类。
第二步,然后给确定的分析类分配责任;
第三步,采用CRC表格分析类之间的协作关系;
第四步,完善分析类图,包括多重性、关联(含聚合和组合),落实类的属性和操作。
这里安排了4学时。
3、行为模型设计
主要是让学生了解UML顺序图、UML状态图。
安排了4学时。
4、软件体系架构设计和详细设计类图设计。
安排有体系结构环境图设计;人机界面的快速原型设计;构件关系图设计;
出错字典设计。
安排了4学时。
5、软件测试用例设计。
给定一个源代码片段,画出程序流图,计算代码的环,找出测试路径。
采用路径测试技术,设计白盒测试用例。
给定一个登陆注册需求,完成黑盒的面向对象的测试用例设计。
这里仅仅安排了2学时。(因为软件工程专业学生,另外还安排了《软件测试技术》课程,那里也有实训课)
6、综合训练设计
从网上找了一个《生命游戏》的软件需求。
安排学生从需求分析;架构设计;详细设计;代码实现;最后到面向对象程序的验收测试。
一共安排了6课时。
三、教学心得
《软件工程》课程确实很重要,但本科生要学好真不容易。一个简单程序要求实现先有设计再代码实现,或者说要求设计和代码一致都是难上难。
UML教学非常重要,但国内写得好的相应教程没有,也没有找到国外的好教材。
过于强调实践教学(即编代码)而没有设计理论(架构设计)不行,而对本科生要求做架构设计也有些勉为其难。
总之一点,上好《软件工程》课不容易,没有足够的项目管理经验,课就讲不好,学生也不愿意听。
以上都是没事瞎写的,纯粹是个人体会。