软件工程课程教学方法初步探索

时间:2022-08-09 12:50:14

软件工程课程教学方法初步探索

摘要:软件工程是一门注重实践的学科。针对在软件工程教学中出现的一些问题,首先介绍了软件工程课程教学的目的和教学内容,然后初步探索了这些问题的解决方法,即在理论教学中适当融入案例教学、重视软件工程实验教学、作业应形式多样且注重联系实际。通过实际教学过程中对这些方法的应用,学生反馈的情况,以及最终学习的效果来看,以上提到的方法确实改善了软件工程课程的教学状况。

关键词:软件工程;教学方法;案例教学;学导式教学;考核模式

中图分类号:G642文献标识码:A文章编号:1009-3044(2012)14-3328-02

Preliminary Exploration of Teaching Methods of Software Engineering

XIAO Su

(School of Computer Science and Technology, Huaibei Normal University, Huaibei 235000, China)

Abstract:Software engineering is a practice-oriented discipline. The purpose and content of the Software Engineering teaching are firstly introduced. For some problems in the teaching of software Engineering, the solutions of those problems are preliminarily studied. Those so lutions are the integration of the case teaching into theoretical teaching, paying much more attention on the experimental teaching of soft ware engineering, and the practical homework in various forms. By application of the solutions in real teaching procedure, the teaching situ ation of software engineering is truly improved according the students’feedback and the ,.

Key words:software engineering; teaching methods; case-based teaching; learn-guiding teaching; assessment mode

什么是软件工程(Software Engineering)?至今很难有一个统一的定义,概括说来,软件工程是指导计算机软件开发和维护的一门工程学科[1]。上个世纪六十年代,在软件开发和维护过程中出现了一系列的问题,这些问题统称为软件危机。为了解决软件危机,既要有技术上的措施又要有管理上的措施,因此软件工程应运而生。经过近半个世纪的发展,软件工程已经发展成为一门独立的学科。我国软件工程技术的研究始于上个世纪八十年代,目前,全国有上百所院校的计算机及相关专业开设了软件工程这门课,并将其作为专业基础/主干课程。

1软件工程教学目的及内容

软件工程是计算机应用、计算机软件与理论等相关专业的一门重要的专业必修课。是一门理论性和实践性很强的综合性课程。软件工程涵盖了软件开发的基本概念、基本原理和主要方法,它将软件的生命周期划分为若干阶段,重点讲述了每个阶段的开发的过程、步骤、方法和技术。学习软件工程的目的是让学生了解软件项目开发的一般过程,掌握软件开发的主流方法,了解软件开发过程中应遵循的原则、标准、规范和流程,培养学生具备软件开发、测试与维护能力,为今后从事软件项目的开发、软件项目的管理和软件维护打下良好的理论与实践基础。

我院软件工程课主要讲述以下内容:①软件工程学概述。介绍软件危机的概念、表现、原因及消除软件危机的途径,软件工程的概念、基本原理和软件工程方法学,软件生命周期的划分,软件开发模型;②可行性研究。介绍软件问题的定义,可行性研究的任务和过程,常用的可行性分析工具:系统流程图、数据流图、数据字典等,成本/效益分析,可行性分析报告的编写;③需求分析。介绍需求分析的基本概念、任务,需求获取方法、需求分析过程、需求分析的结果及其描述,需求分析常用工具:实体-联系图、状态转换图、层次方框图、Warnier图、IPO图等,如何验证软件需求的有效性;④形式化的说明技术。介绍有穷状态机、Petri网和Z语言;⑤总体设计。介绍总体设计的过程和原理,软件设计的概念、原理和启发性规则,常用的软件结构描述工具:层次图、HIPO图和结构图,面向数据流的设计方法;⑥详细设计。介绍结构程序设计,人机界面设计,过程设计工具,面向数据结构的设计方法,程序复杂度的度量;⑦实现。介绍编码和测试,期中测试分为单元测试、集成测试和确认测试,常用的黑盒测试技术、白盒测试技术;⑧维护。介绍维护的定义、特点和过程,软件的可维护性,预防性维护,软件再工程;⑨面向对象方法学引论,介绍面向对象方法的基本概念和面向对象建模;⑩面向对象分析。介绍面向对象分析的基本过程,需求陈述,建立对象模型、动态模型和功能模型;11面向对象设计。介绍面向对象设计准则,启发规则,软件重用,如何设计问题域子系统、人机交互子系统、数据管理子系统;12面向对象实现。介绍程序设计语言,程序设计风格,测试策略和用例;13软件项目管理。介绍软件规模和工作量估算,进度计划的安排,人员的组织,质量保证方法,软件配置管理,能力成熟度模型。

2软件工程教学存在的问题及改进

针对软件工程教学存在的重视教师“教”,不重视学生的“学”;重视理论教学,不重视实践教学和案例教学;作业形式单一,注重书面作业和对基础知识的考试。提出了以下改进方法。

2.1在理论教学中适当融入案例教学

软件工程这门课的特点是:它所涵盖的所有理论、原理、方法和技术等全部来自工程实践。如果脱离了实际的软件开发案例,而单纯地讲解理论知识,未免会使学生感到枯燥、乏味,难以对软件工程有深入的了解。又鉴于所采用教科书上的软件工程案例较少,因此我引入了案例教学法(case-based teaching),在理论教学的每个环节引入相关案例,将理论与实践相融合。案例教学法的历史可以追溯到古希腊时代,但我国对该方法推广地较晚。哈佛商学院将案例教学法定义为:一种教师与学生直接参与共同对工商管理案例或疑难问题进行讨论的教学方法[3]。可见该教学方法在经济学、管理学等学科领域应用较广。针对软件工程课程特点,选择案例时把握了以下原则:①案例要具有很强的现实性。即不可编造案例,最好是实际软件工程项目;②案例要具有时效性。因计算机学科发展较快,案例要跟上学科发展的步伐,最好是近几年出现的案例;③案例要与所阐述的理论密切相关。所列举的软件工程案例应该能够在一定程度上支撑书上的理论;④案例的背景要清晰;⑤案例讨论的主体是学生。学生在教师的指导下,参与进来、深入案例、体验案例角色;⑥讨论的过程是动态的。在教学过程中存在着老师个体与学生个体的交往,教师个体与学生群体、学生个体与学生个体、学生群体与学生群体交往,也就是师生互动、生生互动[4];⑦讨论的结果应多元化。我采用了如下步骤将理论教学与案例教学相结合:理论讲解引入相关案例讨论案例总结讨论结果。其中,案例讨论主要采用分组讨论的方式,每个小组就案例反映的问题提出自己的看法。理论的讲解在于传授知识,而融入案例的讨论则可将知识转化为能力,案例教学的引入正起到了这一作用。虽然案例的讨论会压缩理论学时,但教学结果表明,它确实提高了学生学习的兴趣,鼓励了学生的独立思考。大多数同学对软件工程理论知识的兴趣不升反降,能积极地投入到软件工程案例的讨论,基于理论的掌握提出自己的看法。过去的教学方式是老师讲,同学听,缺少互动,教师也缺乏对学生知识掌握情况的了解。通过案例的讨论,可以更全面了解学生对理论知识掌握和运用情况。

2.2重视软件工程实验教学

软件工程是强调实践的学科,但由于客观条件所限,我院学生在学习该课程时动手机会较少。我承担软件工程的教学任务后,主动申请增加一定的学时用于实验教学。由于软件开发是分阶段进行的,编码仅仅是期中一个环节(约占20%),主要工作集中在(可行性和需求)分析、(总体和详细)设计、测试和项目管理,并且软件工程不是教会学生如何编码。因此,实验的重点内容是相关的软件工具介绍,且利用这些工具完成软件工程各阶段的工作任务。实验的具体的内容可见表1,整个实验共计20学时。实验教学过程中采用了学导式教学方法,该方法提倡学生自学和教师的指导相结合,其本质特征是:教学重心由“教”转移到“学”,约67%的时间由学生进行的自学、解疑和演练[5], [6]。因此,上课前我为学生提供相关的资料,并要求学生认真阅读、理解和分析这些资料,完成实验报告上的相关内容。实验时,我会用10分钟左右了解学生对此次实验的准备情况。根据学生的实验准备,用20分钟左右的时间对本次实验的内容进行解释,设定好实验的框架,提供相关的阅读资料和例子以供学生参考。其余时间由学生自由支配,自主完成实验,实验过程可以上网查阅资料、相互讨论,亦可举手提问。通过实验报告的批改和学生的反馈的情况来看,大多数学生对实验比较感兴趣,愿意自己动手独立完成。可以将平时所学应用于实践,通过实践有对所学的理论知识及案例有了更深入的了解。

表1软件工程实验内容

2.3作业形式多样,注重联系实际

作业的目的在于巩固和消化课堂所学理论知识,作为一门实践性很强的课程,书后作业的形式较单一,对于“巩固”和“消化”显得力不从心。因此,我在布置作业时不局限于教科书上的题目,更多是寻找一些书外的与软件工程知识契合更紧密的题目。并将作业做了分类,如表2所示。针对不同的章节,或同一章节不同的内容布置不同类型的作业。每个章节开始时,会布置一些巩固型作业;上课时会布置思考型作业;每次下课前会安排下次课要进行的口头型作业;每一章或几章的教学完成时,会安排综合型的作业。例如:在讲授软件的可行性分析时,首先让学生记住一些基本概念。然后启发他们思考可行性分析的任务,口头描述可行性分析的过程。最后针对实际的问题定义,综合运用文字和图形工具,将可行性分析过程描述出来。虽然,学生的作业可能比以前要繁重些,也更具挑战性,但是学生能更好地巩固知识,更深入了解软件工程的过程,更全面地掌握软件工程的知识。

3结论

为了应对教学方式的变化,软件工程的考核模式与成绩评定也做了改变:总成绩中15%是平时成绩,包括了作业成绩(5%)、课堂表现(5%)和出勤率(5%);15%是实验成绩;70%是期末考试成绩。通过对教学方法的初步探索,并将其应用实际教学,确实取得了一定的成绩。以我所教的2009级计算机科学与技术专业的成绩为例,与未采用新教学方法的2008级相比,期末考试的平均成绩、优秀率、及格率和出勤率均等有不同程度的提高,学生的学习积极性也得到了提高。

参考文献:

[1]张海藩.软件工程导论(第5版)[M].北京:清华大学出版社, 2008.

[2] PFLEEGER S L, ATLEE J M. Software Engineering: Theory and Practice [M]. London: Prentice Hall Press, 2009.

[3]王青梅,赵革.国内外案例教学法研究综述[J].宁波大学学报(教育科学版), 2009, 31(3): 7-11.

[4]郑金洲.案例教学:教师专业发展的新途径[J].教育理论与实践, 2002, 22(7): 36-41.

[5]张大生,刘学浩.再谈学导式教学法[J].中国教育学刊, 2009, 30(8): 63-65.

[6]刘玉.实用学导式教学法的实践与认识[J].教育探索, 2003, 22(12): 15-16.

上一篇:基于Web的校园网网络故障报修系统的设计与实现 下一篇:浅析幼儿教育中存在的问题及解决对策