本文结合高等院校计算机专业软件工程课程的教学现状,结合软件工程课程教学和科研的实际体会,对软件工程教学内容的组织、教学模式、教学形式等方面的改进和理论结合实践等方面的问题展开了论述,并对加强软件工程课程教学改革提出了若干建议。
1968年的NATO会议(北大西洋公约组织的计算机科学家的国际会议)提出“软件工程”概念。当时对“软件工程”的代表性定义是:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法。2004年8月,IEEE-CS(美国电气电子工程师协会计算机分会)和ACM(美国计算机协会)给出了软件工程知识体(SWEBOK,Software Engineering Body of Knowledge)、软件工程教育知识体(SEEK )最终版,这标志着软件工程学科在世界范围正式确立,软件工程、计算机科学、计算机工程、信息系统、信息技术并列成为计算学科下的独立学科。
由于软件工程学在计算机学科中的重要地位,国内各高校的计算机相关专业都开设了软件工程课程,但在授课内容、讲授重点、教学方法、实践课程安排和教学效果检验等方面还存在不少问题。我们在教学过程中,从教材的选取、教学内容组织、教学方法和教学手段等方面进行了一些改革尝试和探索,取得了一定的成果。
一、教辅材料的选取
课程的教学培养目标应以社会需求为导向。目前,计算机行业需要的软件工程师是既掌握软件开发技术、又懂得项目管理的复合型人才,这就要求我们对软件工程课程的设置及培养目标等重新定位。因此,在教学上不仅要注重软件工程的基本原理、方法和技术,更应强调软件项目管理的重要性和必要性,特别是应该把软件工程管理方面的内容纳入正常的教学内容中,辅以必要的课堂讨论和实践环节,使学生能对软件工程各方面内容进行综合理解和应用。
软件工程学科经过近40年的发展,积累了众多的软件开发方法。结合国内外软件行业人才需求的现状,我们认为,软件工程课程应强调软件工程的思想、方法,突出软件工程的过程概念,侧重软件工程应用能力的培养,因此,我们首要考虑的是在教学过程中不断更新、充实、调整教学内容。
2004年8月,IEEEE-CS和ACM联合给出了软件工程知识体系(SWEBOK )最终版,全面描述了软件工程学的十大核心知识体系:(1)软件需求;(2)软件设计;(3)软件构造;(4)软件测试;(5)软件维护;(6)软件配置管理;(7)软件工程管理;(8)软件工程过程;(9)软件工程工具和方法;(10)软件质量。这十个核心内容是软件工程理论的最小子集。目前国内出版的教材基本上没有完全覆盖这十个核心内容,有的甚至还停留在对面向过程的传统软件工程学的详细论述上,为此,我们参考国外经典教材和软件工程学的最新研究成果,选用了最新知识覆盖面最全的高校规划教材,另外选取国外经典教材作为辅助教材,鼓励学生阅读英文原版文献。
二、教学内容及课堂教学的组织
在讲解软件工程的基本原理、基本概念和基本方法的同时,全面系统地介绍软件工程学的十大核心内容,强调包括面向对象、组件等方法在内的新方法和新技术,使学生尽快熟悉和掌握软件重用、快速原型法、CASE集成环境等软件开发技术,对一些已经过时而且实践中很少用到的内容仅做介绍。同时保持教学内容对先进技术的跟进,介绍目前已经推出的或比较成熟的新方法,例如面向Agent方法、基于组件的开发、基于构件的方法、敏捷开发等。这样对开拓学生视野、培养创新意识和开发能力、掌握最新技术的能力有较大帮助。
大学阶段的学生一般缺乏实际软件开发经验,对软件工程各部分内容,特别是该领域新的发展缺乏认识,又对课程内在的逻辑关系缺乏整体把握,因此学起来会感到枯燥乏味,进而直接影响教学效果。为调动学生的学习积极性,我们在教学实践上注意以下几点。
(1)强调理论对指导实践的重要性,提高学生的软件工程意识。教师在介绍软件工程发展历史的同时还可以介绍一些著名的成功和失败案例,比如1963年美国用于控制火星探测器的计算机软件中的一个“,”被误写为“。”,致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。还要重点强调软件危机产生的原因不仅与软件本身的特点有关,人为因素也相当重要,要改变许多人认为软件开发就是写代码的错误观念。由于目前国内的软件开发大多没有摆脱手工作坊式的生产方式,造成用错误方法开发出来的许多软件系统经过艰难的维护和修改,最后却仍不得不以失败告终,造成人力、物力、财力的浪费。因此,强调要改变现状,软件开发必须向“工程化”的方向发展,而这种发展必须以软件工程学的原理和方法为指导,严格遵循软件工程规范和步骤。通过这些介绍,使学生认识到软件工程的实用性和重要性,有助于培养学生的软件工程意识,树立“工程化”的观念。
(2)强调软件工程的全局观。在软件工程知识体系结构中,高级程序设计语言、数据结构、数据库系统概论、操作系统原理等课程着重培养学生对局部问题的解决能力,而软件工程课程则着眼于培养学生解决全局问题的能力,因此,有必要在教学内容的组织和软件开发方法的讲授过程中,强调全局观、整体观对高质量的软件开发活动的重要性。例如,我们按照“软件开发模型、模型各阶段中的软件开发技术”为线索组织教学内容,在讲授每种具体的开发技术时,要求学生先以需求分析为基础,然后确定软件的系统结构,最后逐步细化完成整个设计。(www.daowen.com)
(3)强调软件工程各主要知识点之间的逻辑关联。软件工程各主要知识点之间均有逻辑关系,缺一不可。例如在讲述需求分析对软件设计的重要作用时,要重点强调数据流图与软件结构之间的关系;讲解需求分析、系统设计和详细设计三项开发活动之间的连接时,将面向对象的软件开发方法和传统结构化的开发方法相比较,将测试用例生成技术和需求分析模型、软件设计模型以及相关技术相联系,使得软件工程的原理和方法贯穿于所有软件开发活动中。另外,我们还要鼓励学生在学习过程中将已学过的相关课程知识联系起来,分析、比较并设计出解决问题的技术方案。
三、加强实践环节,促进教学相长
传统的教学方法习惯于“一言谈”、“一人谈”,我们在具体教学过程中正尝试逐步改变这种做法,让学生参与教学过程,形成教学互动,同时强调团队合作。例如,在讲授软件界面设计时,为了让学生掌握界面设计的原则和方法,事先安排学生分组做简单和熟悉的题目,如分析常用软件界面(如办公软件)、武汉东湖学院学生信息管理系统界面等,根据软件工程学中界面设计的“黄金规则”,即置用户于控制之下、减少用户的记忆负担、保持界面一致,对软件界面的优缺点进行评价,给出改进意见,然后分组组织课堂讨论,再每组派代表介绍本组的分析评价结果。学生各抒己见,逐步形成共识,教师再给予正面引导。通过讨论,学生可以进一步理解软件界面设计的重要性和设计原则,尤其认识到一个糟糕的界面设计会严重阻碍软件自身功能的发挥,降低用户对它的可信度和利用率,即使其他方面设计和实现得很好,且非常可靠,也极有可能以被废弃而告终。最后,根据课堂讨论的结果,完成一个软件的界面设计方案,并用相应的界面辅助设计工具予以实现。
学生普遍反应,通过这样的课堂讨论和教学实践活动,对以后参与软件开发有很大的帮助。通过课堂讨论和分析,使理论有实践做支撑,抽象知识变得看得见、摸得着,极大地激发了学生学习软件工程的兴趣和自信。
四、教改中的几点建议
为了加强软件工程课程教学,我们认为还需从以下几个方面努力。
(1)教师必须不断提高自己的理论水平和科研水平。新理论、新方法和新技术都需要这门课的任课教师不断学习、更新和实践。
(2)加大软件工程实验室的建设力度。软件工程作为一个实践性和综合性非常高的课程,迫切需要一个设备完善、辅助软件开发工具(Case工具)丰富的实验环境做支撑。
(3)软件工程教学内容需要重新整合,需要有新的教材。根据目前的软件工程教材状况,在内容选取、知识结构、章节安排、实践环节等方面存在一定问题。因此,在条件允许的情况下可以组织教学力量编写合适的软件工程教材,或选取国外经典教材作为辅助教材,鼓励学生阅读英文原版文献。
【参考文献】
[1]万江平.软件工程知识体系指南综述[J].计算机应用研究,2006(10).
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。