1、 软件工程课程案例整合分解教学方法探索 许岗+刘靖摘 要:软件工程是计算机专业必修课,对于学生进行软件开发以及软件开发的规范性具有重要的意义。软件工程课程教材抽象、枯燥,而相应的授课方式一般是教材的重复,这对于学生掌握该课程的精髓不利。本文通过实践的探索,使用了完整案例以及案例分解的方式,使得一个案例贯穿整个学期,在课堂上按照分解后的案例环节,逐个使用软件工程的方法引导学生进行环节的实践,以便达到教学更加生动实际,学习更加有压力和清晰的目标的目的。关键词:软件工程 教学方法探索 案例环节教学一、课程重要性和教学现状分析毫无疑问,作为软件工程专业或者计算机专业的学生,未来的就业方向往往跟计算机软
2、件开发相关。学生在学习计算机编程语言并用编程语言进行程序设计和实现的实践过程中,需要养成编写程序的好思维和必要的好习惯。作为教师,不能只是引导学生会写程序,完成指定的实验内容,更需要引导学生编写好的程序,能够使程序符合规范,便于维护,这是因为目前软件的维护成本已经远远大于软件的开发成本。可维护性是软件最重要的属性,一项可维护易维护的软件将节约大量的成本。而软件的可维护性是由软件开发时,开发团队遵守良好开发规范和原则来保证的,这一点正是软件工程课程的目的。软件工程是一门经过时间和实践验证的,讲述开发软件团队应该遵守的软件分析、设计、实现方法、算法和原则的课程。该门课程将软件的编写划分成了几个阶段
3、:需求分析阶段、概要设计阶段、详细设计阶段、实现阶段、单元测试阶段和集成测试阶段。经过这些阶段,用户的需求被认真推敲和理解,使得用户和开发人员之间达成了共识,这一点保证了软件开发的最终目标是正确的。在概要设计阶段和详细设计阶段,用户的意识被逐步细化,使得细化后的功能程序员能够用编程语言完成。实现阶段是按照分析的结果对功能逐个模块的编写代码。测试阶段则是测试代码的正确性。目前,虽然软件工程课程教材种类丰富,数量众多,然而,绝大部分教材,甚至包括国外的较好的软件工程教材都是长篇累牍的叙述软件开发过程应该遵循的方法和原则。这些方法和原则没有详细的实例作为佐证,使得软件工程理论陷于抽象和空泛。总体来说
4、,目前的教材和教学手段,对于学生认识软件工程的整体架构和具体细节还有不足。具体表现为:软件工程整体感不好。软件工程是一整套方法和原则,这些方法和原则指导了整个软件分析、开发、测试和维护。目前在软件工程教材以及教学过程中,缺乏贯穿整个课程的完整案例。当课程结束后,学生普遍不清楚这门课程能够做什么,对软件工程方法和原则没有整体架构的概念、理解和掌握。软件工程各环节的联系性没有体现。目前的教学过程中,有一些小案例来说明软件工程中提到的方法和理论,这些例子对于其对应的理论点的说明较为合适,但这些案例彼此之间联系很少甚至没有联系。这些案例使得本来是软件工程方法和原则中不可分割的阶段显得过于零碎以及无关联
5、。这使得学生无法体验和掌握软件工程各个阶段的作用以及阶段之间的联系。没有案例教学体现软件工程的各个阶段及其整体架构的关联。目前已经有一些教师引入了案例教学。但是,我们发现还没有在整个教学中贯穿完整案例,并将完整案例按照各个阶段分解,随着各个阶段的进行,案例越来越接近完整,所有的阶段进行完毕后,一个完整的案例呈现在学生的眼前。教学手段比较单一。目前的主流教学方式都是课上以讲为主,课下学生组织团队进行编程。这样造成讲述的方法和学生的实践无法统一。学生在完成作业的过程中,仍然没有使用软件工程的方法,而是采用非正规游击战的方式继续着从前的编程习惯。这使得引导学生实践软件工程的方法和原理不够完善。为了解
6、决上述问题,我们提出了一个完整的教学实践体系和流程,总体来说就是案例的实现、案例的讲解和推进、学生实验的选题、学生作业的推进和检查方式。二、教学案例设计软件工程的案例是软件工程课程的核心。只有实际且有意义的案例才能使学生体会到软件工程的作用,并掌握软件工程的方法和原则。首先,我们选择一个有实际意义的目标,提出具体的需求,然后按照实际的问题,依据软件工程的方法和流程进行软件的开发。在需求分析阶段,我们按照软件工程提出的方法进行需求分析,并按照规范形成规定的文档。然后,按照需求分析的结果,我们进行概要设计和详细设计,并形成设计的结果和文档。最后我们按照设计文档进行软件开发,并进行单元测试,最终进行
7、集成测试。在每个阶段都有必要的文档,我们都按照规范进行组织和准备。按照这样的方法,我们完成了一个实际的案例。这个案例我们将作为教学用的实践案例。三、用完整案例贯穿软件工程教学在软件工程课程的讲授过程中,往往有很多不相关的案例贯穿于每个阶段,当课程讲授结束时,学生往往不清楚软件工程总体框架是什么、总的目标是什么。为了解决该问题我们在讲授中使用了一个完整案例。由于软件工程课程抽象,为了让学生掌握其方法和原则,教学中我们使用了案例教学。与其他的案例教学不同的是,在讲授软件工程课程时,我们采用了贯穿整个课程的一个完整案例。由于采用完整案例,使得学生在课程的学习过程中始终有一个清晰的目标和脉络。这样,软
8、件工程抽象的理论、方法和原理能够始终如一由一个案例来体现。当课程结束时,学生往往能看到一个实际的软件产品,使得学生对该课程产生了兴趣。四、教学中强调软件工程各阶段的联系在教学案例设计中,我们已经将完整的案例进行了分解,分解后的案例与各个阶段的产品对应。这些小案例都是使用与之对应的阶段提供的方法和原则进行开发的。由于不同阶段之间的产品具有很强的联系,这样每个阶段的产品也具有很强的联系。往往上一个阶段的产品是下一个阶段的输入,下一个阶段的产品是依据上一个阶段产品而进行的开发。这些阶段应该顺序进行,不可跨越进行。由于各阶段对应的小案例都来自整体案例,并且是按照软件工程的方法进行开发的,这些阶段性案例
9、都是紧密相关的。这样在课程的讲授过程中,学生能够清晰而实际的把握每个阶段的作用和阶段之间彼此的联系。endprint五、教学中强调软件工程各阶段的联系和各阶段与总体架构的关系由于软件工程方法和原则是有多个阶段的,我们在每个阶段都设计了一个符合本阶段的小案例,这些小案例都是贯穿课程的一个完整案例的分解。这样,在每个阶段,学生会依照案例对该阶段的方法和原则有较为具体的认识。随着课程的进行,这些小案例的逐个完成,当课程结束后,各个案例汇聚成了一个完整的软件产品,这样学生对软件工程课程有了整体的认识,同时,学生也会真切体会到软件工程在软件开发中的巨大指导作用。六、教学中强调学生的参与在整个教学过程中,
10、强调学生的参与。软件工程课程具有很强的实践性。只有学生亲自参与才能体会到软件工程对软件开发的指导作用。首先,我们将学生以开发团队的形式分成小组。然后,我们为学生选择题目,或者学生自己选择题目,引导并和学生一起讨论题目的合适性。之后便是实践阶段。随着课程的讲解,软件工程各个阶段在进行,我们讲解的是我们已经设计好的案例,而要求学生组成的开发团队也需要按照阶段去进行他们的项目,每个阶段都要安排学生做报告,报告他们分析、设计和实现过程中使用的方法,以及他们每个阶段产品形成的具体流程。这样学生能深度实践可控的软件工程原理。当课程结束后,他们的各个阶段的产品以及最终的集成产品也产生了。这样学生会有很大的成
11、就感,使得他们进行了一次深度的软件工程体验,并感受到了软件工程对于软件开发的重大意义。因此,这对于学生未来在软件行业就业后,按照规范的流程和方法开发软件起到了关键的引导作用。结语软件工程课程理论目前来说已经逐步完善并发展着。这门课程对计算机专业的学生来说具有重要意义,为培养学生开发易维护且规范的软件打下了基础。我们在软件工程课程的讲授过程中发现,该课程的抽象和理论化使得学生很难掌握该课程。有些教学也采用了案例的方式,但是,案例在整个教学中不停地变化,在教学结束后也没有产品产生,使得学生很难理解该方法。我们从案例的设计、分解、联系以及实践环节各个方面进行了深度的实验,发现本文提出的完整案例法、案例分解法、案例联系法和引导学生实践并形成产品法具有很好的效果。但是,有些细节问题我们还没有进行实验,整个教学流程还没有进行量化,这是我们未来需要进一步进行的工作。论文项目信息:内蒙古大学“卓越教学团队”建设项目(2013-5):数据结构与程序设计系列课程教学团队参考文献:1王立群.应用型本科软件工程精品课程教学改革研究.信息科技,2013(26)2徐玲,文俊浩,熊庆宇.软件工程人才培养模式的探索与实践.现代教育技术,2013(8)3刘征海,徐卓然,肖建田.基于团队学习的软件工程专业课程教学改革探索.课程教育研究,2013(22)endprint -全文完-