软件工程课程教学改革研究

2013-08-29 09:21
关键词:案例软件教学模式

谢 雅

(湖南工程学院 计算机与通信学院,湖南 湘潭 411104)

软件工程是软件工程、计算机科学与技术等本科专业的必修课,是一门综合性、实践性强的课程,对培养学生的工程思维能力、实践能力、创新意识、沟通技能和团队合作精神具有重要作用。[1]该课程从系统工程的角度讲述软件开发的过程、步骤、方法与技术,要求学生初步掌握软件开发的基本理论与方法,了解软件项目开发和维护的一般过程,培养学生用工程的方法进行软件开发的能力,为更深入地学习和从事软件工程实践打下良好的基础。[2]

目前,国内高校对于该课程的传统做法是以教师课堂授课为主,学生听课为辅,教学内容一般侧重于理论。即使配备课程实验,学生也只是编写一些规定的文档,其开发方式和手段与软件工程的要求脱节。[3]很多学生在学习该课程时,感到内容抽象枯燥,常常是似懂非懂,甚至觉得本课程没什么实用价值,不太喜欢学。

软件工程是一门理论与实践并重的课程,有如下三个主要特点。

1.软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准和设计模式等方面。对软件工程的教学需要构建合理的教学体系结构,结合基础知识、先进技术和工程实践等方面组织整个课程内容,使学生掌握软件工程的基础知识、先进方法和最新技术。

2.软件工程不是一门速成的学科,它的基本内容覆盖软件工程概述、软件开发过程、软件工程管理、软件工程技术和软件工程支持等部分的相关知识。学生很难靠听讲软件工程的基本原理就学会开发一个实际的软件,而是需要在实际的“动手做”和“真正练”中体会和掌握软件工程的思想。

3.软件工程实践课是对软件工程理论知识的具体综合应用,使学生在编码、文档撰写和团队协作等方面得到综合训练,需要构建一个软件工程支持的开发环境,这个环境应提供软件开发所需要的相关硬件和软件,营造一个适合软件工程课程实践项目的软件工程环境是软件工程实践教学取得良好效果的关键。

一 基于“做中学”的软件工程课程教学模式

根据教育学中主要的教学原则有科学性与教育性相结合的原则、理论联系实际的原则、直观性原则、启发性原则、循环渐进原则、巩固性原则、因材施教原则,结合IEEE 最新发布的软件工程知识体系,改革课程体系框架和教学内容,提出基于“做中学”的软件工程教学模式,该模式包括三点内容。

(一)构建先进的课程体系

IEEE 发布的软件工程知识体系包括10 个知识领域:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程工具和方法、软件工程过程和软件质量。[4]参考这10 个领域知识,根据教学目标,结合基础知识、先进技术和工程实践等方面组织整个课程内容,建立基于知识、应用、实践和综合型软件项目开发四维一体的课程教学体系结构(见表一)。

表一 软件工程课程体系结构

知识体系包括可行性分析、需求分析、总体设计、详细设计、实现、维护、面向对象分析、面向对象设计、面向对象实现和软件项目管理。

应用体系包括用例图、类图、状态图、顺序图、Rational Rose、能力成熟度模型、软件重用和软件构件。

实践体系包括三个具体的小规模软件的设计和开发。

综合型软件2 组开发体系包括两个具体的中等规模软件的设计与开发。

该体系结构融合软件工程基础知识、软件工程的开发应用、软件工程实践和综合型软件项目开发四个方面的内容,并建立的一定的层次和融合关系,在该体系结构下,学生不仅能掌握软件工程的基础知识、先进方法和最新技术,还具备实际软件开发和拓展能力。

(二)开展案例化教学

软件工程的理论和方法是从众多软件开发实践中总结出来的,但是对于缺乏软件开发实际经验的本科生来说,单纯地讲授理论知识往往使学生感到枯燥无味且难以理解。因此,收集和总结了一些软件开发案例,将这些案例贯穿于理论知识的讲解中;同时,引入“做中学”教学模式,让学生在实际的项目开发中进一步理解这些理论知识,建立软件开发的系统化与工程化观念和质量意识。

1.对于知识内容,引入一些经典案例进行教学,诸如爱国者导弹、网络病毒攻击、ARIANE 5 火箭等,从这些经典案例出发,了解软件危机产生的原因,逐渐了解到软件危机的产生不仅仅只是程序代码的错误,更多的是设计上的缺陷,认识到软件工程的重要性,也了解到软件工程要解决的主要问题,即以软件工程的原理和方法为指导,严格遵循软件过程规范和步骤。在这个过程中,案例的选择非常重要。案例选得过于简单,不能突出软件工程的重要性,案例选得过于复杂,又不能提高学生的学习兴趣。所以,应选择一些有代表性的,突出反映软件工程某一方面且又带有一定趣味性的案例。

软件工程里一个重要的内容就是软件过程,但是对于开发经验有限的本科生来说,最容易形成的现象就是:对这些抽象的过程模型很难理解,容易产生枯燥乏味的感觉,很难在头脑中将软件过程的抽象模型与实际开发联系起来。针对这样的情况,应结合软件工程中的五个基本开发模型:瀑布模型、原型化方法、增量模型、形式化方法和基于组件的开发模型设计五个与之相关的软件系统,结合这些系统的特点和开发策略,让学生在思考、分析和讨论过程中更好地理解和体会软件过程的基本概念;通过对着五个软件系统开发过程的不同比较,学生更能理解这五个模型的优缺点,有利于在实际开发中运用这些过程模型组织开发过程。

在软件项目管理方面,引入项目管理的思想,通过诸如微软公司和IBM 公司等的人员组织与项目管理,使学生了解到成本、人员、进度、质量、风险等因素在软件开发过程中的重要性,弄清项目管理中人员、产品、过程和项目之间的关系,特别强调在后期的团队协作和项目沟通中这些因素的重要性。

2.在软件工程的应用方面,设计针对性的案例,重点介绍UML 知识,并结合Rational Rose 讲解其具体应用,还应介绍CMM 软件的重用技术、软件构件等知识,引导学生自学新知识、新技能。

3.对于软件工程的实践教学,对于每一个具体软件过程阶段,应设计具体的应用案例,如:银行计算机存储系统;机票预订系统;患者监护系统等。这些具体的应用案例,虽说不是一个完整的软件工程开发,但是通过这些具体的应用案例,学生能够更好的理解和掌握软件开发每一个阶段的具体任务和方法,也对软件项目管理有一定的认识。

4.综合型软件项目开发是对软件工程知识的综合应用,结合成绩管理系统、图书管理系统、问卷调查系统、视频游戏软件等教学案例,论述各个系统在需求分析、体系结构设计、用户界面设计、详细设计、软件测试和软件维护等等方面所做的具体工作和设计的技术问题。

(三)构建合理开发团队

实践教学是本课程中一个重要的组成部分,一般在指导老师的带领下以团队的方式进行,要求一个团队通常由3-5 人组成,开发一个实际的具有一定规模的软件系统,包括实验准备、分析设计、编程测试和软件交付等环节,最终要提交软件、开发文档和进行答辩。通过实践环节,侧重培养学生发现问题、独立分析问题和解决问题的能力以及团队合作精神,使学生初步体会到一个软件开发项目全过程。同时,在实践过程中,也要注重将小组协作、过程管理、成本因素与参与兴趣相结合,使学生在一个规范可控的过程中完成实验项目的开发。

对于软件工程课程实践环节来说,仅仅提供一个软件开发项目是远远不够的,学生还需要一个适合协作式项目开发的软件工程环境。这个环境应提供软件开发所需要的相关硬件和软件。营造一个适合软件工程课程实践项目的软件工程环境是软件工程实践教学取得良好效果的关键。因此,应专门编写软件工程的实验指导书,包括开发过程模型、系列文档模板、软件编码规范、阶段评审标准等,使实验和实践环节规范有序;同时将常用的软件工程工具引入到课程实验项目中,使用配置管理工具将所产生的各种制品控制在有序管理之下,使用建模工具和测试工具进行软件的分析、设计和测试。

在小组式的软件工程环境中,使学生真正体验到一种有序、可控和协作的软件开发过程,在分析问题、解决问题、协调冲突和消除矛盾的过程中享受软件开发成功的最终结果。

二 教学改革方案实施过程

笔者连续几年从事软件工程课程的教学,在前文所提的软件工程教学模式进行了实际应用,具体操作过程包括教学准备、教学过程和教学结果三个方面。

(一)注重教学准备工作

首先,根据教学大纲,在深入分析教学内容的基础上,列出该课程的知识结构体系,以及与相关课程的联系,从而确定该课程的教学目标。该课程的教学目标为:通过本课程的学习,要求学生掌握软件工程的基本概念、基本原理、实用的开发方法和技术;了解软件工程各领域的发展方向;如何用过程化及面向对象的方法开发软件项目,以及开发过程中应遵循的流程、准则、标准和规范。

(二)重点采用“做中学”的教学模式,让学生在项目开发实践中自觉应用软件工程理论

首先,在课堂讲授中,所有的讲授都是从案例开始,通过分析案例来引入这节课讲授的内容,通过分析解决案例,一步步引入课程教授的知识点。一节课后,问题解决了,学生对知识点也掌握了。例如在第一节课时,引入一个软件工程的经典案例,通过这个案例,让学生了解软件工程的重要性,然后从这个案例出发,让学生了解软件工程解决的主要问题,从而引入整个课程的结构与重点,以及该课程与其它课程的关系。在深入分析教学内容的基础上,列出该学科的知识和能力结构体系,以及各单元或章节之间的逻辑关系,然后再按单元或章节分别列出知识能力结构体系。按照教科书的章、节(课)的顺序,用简明扼要的语言列出各知识点的内容,并标出各知识点的学习目标层次,同时注明哪些知识点属于教学中的重点或难点。

其次,在实践教学环节,针对三个具体的项目:计算机储蓄系统、机票预订系统和患者监护系统,学生按教师组要求组成4-6 人的项目小组,扮演项目开发过程中的不同角色,每一个角色要清楚自己的定位和项目开发的主要任务,独立完成相应任务的同时,也要注意分工协作。每一个学生都要参与项目的开发和管理,从不同角度全面把握和体会整个软件工程项目开发和管理的基本思想,共同完成实验项目。教师加强在实验过程中的指导作用,要求各项目小组分阶段提交讨论记录和项目工程要求的里程碑成果。项目完成后,每个学生要写出自己的总结报告,进一步加深对软件工程知识体系的认识。

(三)做好教学效果的调查总结

连续两个学期的软件工程课程学习结束后,对学生进行了教学效果问卷调查,调查的主要内容包括如下四个方面:(1)学生对本课程的学习兴趣;(2)学生对教学方法的意见;(3)学生课后自学本课程的时间;(4)学生对实践课程教学内容和方法的意见。共对120 名学生进行了问卷调查,收回有效调查问卷118 份。调查结果如下:108 人(占有效总人数的91.5%)认为对软件工程这门课程有较高的学习兴趣,10 人认为没有学习兴趣;101 人(占有效总人数的85.5%)认为课后用于自学和复习课程的时间占到了课余时间的30%以上,17 人认为课后没怎么进行扩展学习;大部分的学生表示基于“做中学”的教学模式让他们在具体的项目实践中掌握了与大型软件系统相关的规划、分析、实现、测试、维护和项目管理的基础知识,也增强了他们实际软件工程动手能力和综合应用能力。

问卷调查结果表明,大部分学生对新的教学模式是满意的,采用新的教学方法,有力的提高了学生对软件工程专业课的学习效率和学习热情。

三 结论

软件工程是一门综合性和实践性强的课程。结合IEEE 最新发布的软件工程知识体系,提出基于“做中学”的软件工程教学模式,该模式通过构建先进的课程体系、开展案例化教学和构建合理开发团队,让学生在具体的项目开发环境中学习软件工程的知识。最后进行新的教学模式的试点研究和效果问卷调查,调查结果表明,大部分学生对新的教学模式表示满意,新的教学体系有力的调动了学生的学习积极性,加强学生对知识的理解和掌握。

[1]白晓清.“软件工程”课程教学改革探索[J].高教论坛,2007,4(2):122-124.

[2]骆 斌.软件工程专业课程体系的研究与创新实践[J].计算机教育,2010,12(23):10-13.

[3]巫华芳.软件工程课程教学模式探讨[J].科技信息(科学教研),2007(17):87-88.

[4]万江平.软件工程知识体系指南综述[J].计算机应用研究,2006(10):1-3.

猜你喜欢
案例软件教学模式
群文阅读教学模式探讨
禅宗软件
案例4 奔跑吧,少年!
随机变量分布及统计案例拔高卷
软件对对碰
发生在你我身边的那些治超案例
“一精三多”教学模式的探索与实践
一个模拟案例引发的多重思考
即时通讯软件WhatsApp
“导航杯”实践教学模式的做法与成效