软件工程课程教学研究与研讨

时间:2022-10-18 08:08:10

软件工程课程教学研究与研讨

摘要:为提高教学质量,深入开展教学研究,本文就北京电子科技学院开设的软件工程课程进行说明和总结,并从课程简介、国内外软件工程课程的现状、北京电子科技学院的开设情况、教学方法与手段、不足之处对软件工程课程的开设情况进行探讨,最后总结和思考今后的努力方向。

关键词:软件工程;教学研究;教材;方法和手段;实践

1课程简介

软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及工程概论、项目管理、程序设计语言、面向对象的需求、分析、设计、测试、维护、数据库、软件开发工具、系统平台、标准、设计模式等,是一门综合性很强的软件课程,在计算机教学体系中占有十分重要的地位。

2国内外软件工程课程的现状

2009年9月,高等教育出版社正式出版、教育部高等学校计算机科学与技术教学指导委员会编制的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》(以下简称试行规范)中列出的“计算机科学与技术”专业方向之一就是软件工程。据信息查阅,目前有“软件工程”方向的教育部国家示范性软件学院有38所,全国高校开设“软件工程”专业方向授课的学校有两百多所。

以美国卡耐基•梅隆大学为代表的国外大学已经开发出非常实用的工程软件人才培养课程体系,它包括10个知识体系、58个知识领域[1]。2007年开始,国内的软件学院纷纷引进他们的课程体系,意在培养出中国的国际化工程型软件人才。各高校的软件工程方向本科教育也正在加快向工程型教育转变。以使课程教育紧密结合现代软件产业需求,课程内容结合一些实际工程项目[2]。

事实上,软件工程是一门教学难度比较大的课程,主要原因在于其以下4个特点。

(1) 软件工程作为指导计算机软件开发与维护的工程学科,研究范围广,包括技术方法、工具和管理等方面;

(2) 软件工程是一门边缘学科,内容丰富,涉及领域广,包括计算机科学、计算机技术、系统工程、管理学及经济学等。

(3) 软件工程还是一个相对比较年轻的学科,尚未形成成熟的教学模式,教材上例题零零散散,几乎没有较为成熟的实践内容。

(4) 软件工程是一项不断发展的技术,相关课程内容更替很快,如果继续偏重传统的成熟理沦,会造成与最新技术的严重脱节。但是完全讲解新技术,也不适合软件开发的实际需要,而且,课堂上也没有时间讲述全部新旧知识点。

国内高校的软件工程课程教学实践仍处在一种探索和发展阶段。在实施过程中,仍然以教师的思路为主,以此带领学生进行知识的学习。学生不可能独立面对一项完整的项目开发,仍然处于被动接受知识状态,缺少自主思考,很难体会到一个完整的项目开发过程。这种教学状态培养的学生在实际应用中不知道如何开展项目,也不懂如何推进项目。另外,课程的考试大多以笔试为主,一张试卷就决定学生课程学习成绩,这在很大程度上导致学生在软件工程课程学习中重理论轻实践。

为了弥补校园软件工程教育弱的现状,很多公司开设软件工程教育实习基地,把学生编入一个具体项目开发组,让他们在实际项目开发中建立工程概念,熟悉项目开发流程,参与项目具体代码和文档的书写,为胜任未来公司实际工作积累经验。为了适应外包软件人才的需要,2007、2008年市场上甚至出现了不少软件工程人才培育公司。

另外,大学为了培养学生职业技能也增设了专业实习,很多软件工程专业的学生被输送到相关的培训公司参加项目实习,而校园的实习也主要是引进公司的实训项目,以培养学生工程意识。

3电科院开设本课程的情况

软件工程课程包括的主要内容如下。

软件工程理论概述、软件开发过程、软件开发工具(建模技术)、项目管理、软件需求、面向对象、软件过程、软件建模、模式设计、极限编程、敏捷软件工程等。

作为一门独立课程,软件工程课程首先需要解决的问题是根据需要选择合适的授课内容;在具体教学过程中选用多本教材,它们的内容对比如表1所示。

北京电子科技学院开设本课程已有多年,经过对历届计算机科学与技术系学生的授课,课程教学处在不断摸索和进步之中。结合其他高校开设该课程的情况,并考虑到就业学生参与计算机项目开发的人不多这一情况,我们在课程内容上有所选择,主要是加大对软件工程项目的介绍和讲解,对软件合同中的甲方内容进行讲述,用政府电子政务项目做举例来说明软件工程的用处。从2008年开始,我们确定了软件工程课程的内容及基本要求,见表2。

通过本课程的学习,我们希望学生掌握软件工程的有关概念,了解各阶段的主要技术、方法与工具,具备协助和管理软件开发的基本能力。同时,强调文档,学习文档模板的学习。另外,在更加细化的内容上面,如分析方法之数据流图、分析工具之UML语言、测试方法之黑盒测试、白盒测试等方面,我们会根据实际的技术发展作适当的调整,以便跟上新技术发展和市场需求。

4教学方法和手段

软件工程课程的教学难度大,要讲好则需要下很大的功夫。

4.1软件工程第一堂课

课程定位:软件工程是计算机学科中一个年轻并且充满活力的研究领域。20世纪60年代末期以来,为克服“软件危机”,人们在这一领域做了大量工作,逐渐形成了系统的软件开发理论、技术和方法,它们在软件开发实践中发挥了重要作用。今天,现代科学技术将人类带入信息社会,计算机软件扮演着十分重要的角色,软件工程已成为信息社会高技术竞争的关键领域之一,而软件工程已成为高等学校计算机教育计划中的一门核心课程。

突出课程的核心地位,从“工程”角度去引导学生对本课程的认识;从“就业”角度去阐述本课程的重要性;从“大型软件”开发的兴趣来看本课程[3-4]。

4.2软件工程的实践

软件工程实践是很重要的环节,理论结合实际才能让学生真正体会课程的魅力。在数据库课程设计这个环节,我们要求学生应用软件工程的知识,尽量用工程化的思想来指导自己的设计。

4.3软件工程的案例

从实际出发,用软件开发的实际例子进行讲解,让学生体会大型软件开发的过程、方法、手段和控制。

从微软、IBM、用友等知名软件公司的软件开发看软件工程的开展。

从学生以前的计算机试验看软件的开发,并进行比较,从中看到弱点和不足。

4.4软件工程和项目管理

引进国外项目管理的概念,从别的项目管理到软件工程的项目管理。将两者进行比较,讲清不同点和相同点,让学生受到启发。突出项目管理的重要性,软件开发同样需要项目管理。从成本、风险、利益、控制角度看软件工程[5]。

4.5软件工程和毕业设计

从学生毕业前的毕业设计环节看软件工程的重要性。“毕业设计”不是一个小的计算机试验,而是一次对学生四年学习的全面考核,而软件工程正是可以利用的知识。

5实践安排与不足

为了培养学生工程概念,也是鉴于软件工程课程实践性强的特点。我们在2003年制定软件工程课程教学大纲时,特将该课程的实践环节与数据库课程设计相结合。本着在实践中体会、在实践中落实的原则,我们要求学生在多人合作开发数据库应用系统的课程设计中,运用软件工程学到的软件项目管理方法和软件设计与实现技术,并撰写必要的文档,以便使开发软件有较好的、完整的技术档案,并使其不断升级换代。另外,从各高校的情况看,实践环节非常重要,它需要实践环节的辅助教学。

6教学实施情况

开设课程实验是一个探索的过程,我们在反复摸索,以便增长学生的工程项目开发经验。我们曾要求1999级、2000级的学生将软件工程课程学习作为一个项目来管理,要求学生写课程学习日志,记录每周投入课程学习的具体时间、当时设计的目标、完成情况等。为了弥补学生缺乏项目开发经验的缺陷,我们也开展课后读书报告活动,即提供10~20个与毕业设计有关文档或指定若干软件工程发展的技术方向,让学生分组阅读文档或查阅并阅读有关文献,写出项目评价及专题读书报告(参见附录中当时读书报告分组评分记录)。但这也带来一些负面影响,即学生越来越依赖计算机,读书报告变成复制和粘贴文本,而不是认真阅读,预设的训练目的无法达成,因此,我们随后取消了这一做法。

99级教学中的软件工程实践时间设计为6小时,这主要是考虑学生在同一个学期中还有数据库课程设计30学时,不可能同时做两项大实验。因此,我们尝试从99级开始,在数据库课程设计中加入软件工程实践内容和要求,如需求报告完善、软件质量评估、软件测试具体检验等,并在课程设计答辩中设立软件工程相关问题的回答。到2003年,教学大纲正式提出两课实验合并。

在此,我们还有两个希望:(1)加大软件工程课程的课时(目前是30课时的教学,没有试验课时),同时开设试验环节,针对软件工程开设一个类似数据库课程设计的环节,加强学生动手能力的培养。(2)让学生走出去(政府或企业),撰写调查单位的软件实施方案。

7结语

软件工程蓬勃发展,学院的教学目标是培养服务于党政机关机要事业的计算机应用型专业人才。在课程教学中不断紧跟技术发展,紧紧抓住学院培养目标而设立课程教学目标,选好教学内容是个艰巨的任务,任重道远,它需要我们长期的努力。

参考文献:

[1] 孙家广,刘强. 软件工程理论、方法与实践[M]. 北京:高等教育出版社,2006.

[2] 钟珞. 软件工程[M]. 北京:清华大学出版社,2005.

[3] 胡飞,武君胜,杜承烈,等. 软件工程基础[M]. 北京:高等教育出版社,2008.

[4] 钱乐秋,赵文耘,牛军钰.软件工程[M]. 北京:清华大学出版社,2007.

[5] Carlo Ghezzi. 软件工程基础[M]. 施平安,译. 2版. 北京:清华大学出版社,2002.

Reflection on Software Engineering Course in BESTI

JIANG Xiang-gang, ZHANG Xiao-li

(Beijing Electronic and Scientific Institute Applied Software Team, Beijing 100070, China)

Abstract: This paper has a general analysis of the course of software engineering in BESTI. It presents the various parts including the curriculum planning, classroom teaching approches, problems to be solved and the goals to be attained. As a result of this reflection followed by related practice, a more improved software engineering is expected in BESTI.

Key words: software engineering; course planning and giving; textbooks; teaching approaches; practice activities

上一篇:“计算机系统结构”课程内容体系的研究 下一篇:MCLA教学法在计算机难点知识教学中的应用