您好, 访客   登录/注册

软件工程实践教学方法探讨

来源:用户上传      作者:

  摘要:本文对软件工程的课程特点进行了简单论述,并分析了该课程当前教学存在的问题,以及实践教学的重要意义和实施方法,最后讨论了在实操环节中需要注意的问题。
  关键词:软件工程;实践教学;案例教学;课程设计;面向对象
  中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2019)24-0164-03
  软件工程是计算机专业的核心课程,主要讲授软件过程模型、软件需求、分析与设计、软件维护与管理等方面的知识。本课程的开设旨在使学生掌握软件项目开发和维护的一般过程和软件开发常用的过程模型,能用软件工程的方法参与软件项目的分析、设计、实现和维护,为更深入地学习和以后从事软件项目开发打下良好的基础。软件工程存在以下特点:(1)软件工程的思想对于软件行业来说至关重要;(2)理论很重要,但是实践是理论的出发点和归宿,只有通过实践去学习理论并通过理论去指导实践,理论的学习才有意义;(3)软件行业发展非常迅猛,新技术层出不穷。软件工程的这三个特点决定了软件工程这门课程必须跟实践紧密结合才能真正地学活、学好,实现开设这门课的初衷和意义。
  一、软件工程的教学现状
  我国各大专院校的计算机或者相关专业都开设《软件工程》课程,受传统教学思想影响,目前大学教育大部分还是以“填鸭”方式给学生灌输理论知识,对于软件工程这样的工程性课程也不例外,教师在课堂上大讲理论,由于学生没有实践的机会,对理论的掌握一知半解,从而总是认为软件工程太难。仔细分析在软件工程的授课过程中存在以下现象:
  1.授课采用传统的讲理论的方式。比如在讲软件开发模型时还是采用课件+图表的方式讲软件生命周期的理论,学生很难想象某种软件过程的使用场合到底是怎样的;对于常用的CASE(计算机辅助软件工程)工具也只是演示其中的某几种,学生没有亲自体会的机会;讲分析和设计时也只是临时举一些小例子以当时能说明问题为标准。这些理论之间连贯性比较差,可能当时听明白了,但是面对实践还是茫然,没有真正掌握。导致学生普遍认为软件工程很枯燥,学习兴趣不高,很难真正地掌握理论知识,甚至不明白这门课跟软件开发之间是什么关系。
  2.内容陈旧。计算机科学发展非常迅速,很多知识的更新换代也就是2—3年的时间,而相应教科书的更新无法跟上知识更新的速度,甚至落后很多,如果仅仅讲授教科书上的内容,将会造成学和用的严重脱节。比如现在很多软件工程的教材还在用大量的篇幅讲瀑布模型、螺旋模型等,而对于现在研究的很热的统一过程(UP)却很少提及,或一带而过,对于现在同样火热的敏捷软件开发甚至都未曾提及。在分析和设计的部分也存在同样的问题,很多教材讲结构化分析和设计多,对于面向对象部分也涉及得较少,但是现在面向对象技术却是研究的重点,学生自学也相对较难。造成的结果是学生工作后发现学过的知识能用到的很少。
  3.实践环节很弱。有些高校的软件工程课程没有实践环节,有的高校即使开设了课程设计,但课程设计的质量很低,没有达到有效的检验目的。
  4.考核方法有限。由于实践的缺失,考核时采用传统的作业+笔试的方式,成绩评定还是依靠在课堂上所学的干巴巴的理论和似是而非的概念,很难反映学生对软件工程真正的掌握情况。
  二、原因分析
  软件工程的教学往往容易忽视软件工程实践性强的特点,使得这门课老师不好教,学生不好学,教学效果不理想,为什么会有这样的问题呢?认真分析认为存在以下原因:
  1.传统教学思想根深蒂固。编程语言类的课程实践起来比较容易,题目提出后学生编程实现就可以了,也很容易检查和评定学生的掌握情况。而软件工程本身来源于实践,学生对这门课的学习方法应该是:从实践中学习,到实践中检验。要实践就必须以项目为依托,在项目中实践,而合适的项目很难找。而且很多软件工程的知识很难单独实践,如果没有一定的软件开发经验,学习这些软件工程的理论就会很抽象。传统教学经验在软件工程的授课过程中很难起到好的作用。
  2.高中教育的遗留问题。软件工程的实践过程要求学生有较好的理解能力、与人交流快速获取信息的能力、从表面现象找出问题实质的能力、分析和解决问题的能力、快速的文档阅读与写作能力等。高中阶段的过早分科使得理工科大学生文档写作能力较弱,也害怕写文档。
  3.实验设计困难。软件工程的方法和技术都是软件开发实践的经验总结,实验需建立在合适的项目上,在项目实践过程中运用理论知识。不像传统的实验那样各个实验之间没有关联性,一个实验考察某一个方面的知识,软件工程的实验之间的关联性很强,比如需求分析是系统概要设计的前提,概要设计是详细设计的前提等等,合适的项目比较难找,所以实验设计困难。
  4.软件技术发展迅猛,新技术层出不窮,比如几年前web开发是java和.net的竞争,现在动态语言成了异军突起的第三股力量。以前函数式语言仅限于实验室或者一些专用领域,一直没有很流行,现如今它的复兴几乎可以被人们预料。极限编程的很多理念是对于传统软件工程思想的一个颠覆,而现在敏捷与UP的结合使用又成为人们应用这两者的新方法。新的语言和新的软件开发过程让人眼花缭乱,教师的课堂和实验教学很难完全跟上新技术的发展,使得学与用之间很容易存在一定的脱节现象。
  三、实践教学的意义
  设置软件工程课程的目的在于:通过这门课的学习使学生了解软件生命周期、软件过程、方法以及相应的工具,理解软件开发的工程化思想,熟悉通用的软件开发过程和常用的CASE工具,这些知识都是人们从实践中获得,也应该在实践中去学习。针对软件工程的教学现状,开展实践教学的意义在于:首先实践教学过程遵循了软件生命周期和规律,顺应了软件工程这门学科的特点,即源于实践、为了实践,使学生亲身体会问题的提出,并自然而然地理解解决方案的意义;其次实践过程本身就是一个开放的过程,必须要了解社会对软件人才的需求及发展现状,这样的教学才具有针对性,培养出来的人才也更符合社会的需要。所以打破传统教学思想的禁锢,全面开展实践教学应该是软件工程课程教学的一个好方法。   四、实践教学的实施
  实践教学是一种教学方法,并不仅仅限于开设实验或者课程设计。实践教学的思想应该贯穿于教学工作的各个方面,总结一下有以下几个着手点:
  1.案例教学。在教学过程中,以某个案例贯穿整个理论教学活动,最好是某个软件公司的实际项目或者某个科研课题。从项目的可行性论证到最终项目验收完成,跨越软件的整个生命周期。比如在讲需求时,可以从实际做需求的过程出发,讲解需求管理的方法、采用的工具、需求分析的过程、用例图、概念模型图等等;在讲系统分析和设计时,可以一点点引导学生从系统的概念透视图过渡到软件透视图,讲解部分交互图和类图以及相应的代码映射,让学生去完成剩下的部分,再对比结果查找不足之处。这样结合活生生的实例有利于激起学生的学习兴趣并使其快速掌握理论知识。
  2.开设连贯性的实验。在设计实验时,不能孤立地设计每个实验,应该先设计好一些小的项目,然后对学生分组,大概4—5个人一个小组,每个小组一个题目,进行团队开发,随着教学过程的深入,项目也在不断完善,最终,课程完毕时,一个项目也就完成了,这个项目可以作为学生最终成绩的一个重要部分。在开发项目的过程中,学生一定会遇到很多的困惑,这些困惑不是在学习某一门语言时做一个小实验可以遇到的,带着问题去学习软件工程的知识学得快,掌握得牢固,可以说只有这样,才能把知识转化成自己的能力。而且在完成项目过程中同时可以大大提高编写代码的能力,这些能力是在编程语言课上无法得到提高的,也是作为一个软件开发人员必备的。
  3.增加课程设计。如果在实验中完成的项目比较简单,需要进一步巩固所学的知识,可以增加课程设计的内容,或者把实验的内容与课程设计的内容结合起来,由于实验时间有限,很多知识点当时分配的时间少,可以增加课程设计作为实验项目的延续。
  4.增大面向对象的内容。面向对象技术是研究的热点,几乎在各种分析和设计过程中都可以用到面向对象技术,而且面向对象的分析和设计能力也非常需要在实践中增强,所以在课堂教学和实验过程中应该要求学生用面向对象的技术去分析和解决问题。
  5.在重点突出的前提下增加知识面,具备一定的宽度。技术发展日新月异,新技术层出不穷,或者老技术重新焕发生命力也很常见,在软件工程教学过程中应该注重授课的知识面需要有一定的宽度,对于重点的知识点要有深度。就是让学生在基础扎实的前提下对软件发展的现状有一定的了解,以便他们在众多令人眼花缭乱的技术中选择自己感兴趣和认为有前途的方向提前努力。
  五、实践教学存在的问题
  实践教学包含两个层面的意思,一是教师和学生双方都必须抛弃习惯的教学方法,在实践中教(案例教学)与学(实验或课程设计);二是教学活动要根据技术发展和社会需要的实际出发,既教给学生核心技术,又紧跟时代发展,这也是计算机学科的发展特点所决定的。实践教学要真正落实对教师和学生都提出了更高的要求,首先双方都要脱离传统的教与学的思想,在教学活动中坚持从实践中来到实践中去,在实践中获取和检验知识;其次双方都必须保持高度的学习热情,尤其是教师。新技术发展太快,要不断地学习和实践,否则实践教学就是一句空话;再次,实验项目的设计和考核比较困难,已有的经验比较少,需要摸索和尝试。这些都是在施行实践教学过程中所面临的问题,既有主观因素,也有客观因素,对教师和学生都提出了很高的要求,需要在不断的实践中克服。
  六、结语
  软件工程课程的重要性往往被忽视,使得教和学都处在一个比较尴尬的地位。学生在进入工作岗位之前并没有做好这方面的准备,觉得能写一些程序,掌握了一些编程语言就是学好了计算机专业,能够胜任软件开发的工作,大量低劣的软件被重复制造。据统计现在有超过10%的軟件公司连版本控制工具都没有,此现状令人堪忧。大学是向社会输送人才的重要基地,在大学教育的过程中教给学生规范的软件开发方法和良好的软件工程思想是非常重要的,实践教学并不是全新的教学思想,但将它运用于软件工程的教学是一种可以探索的教学模式,还存在很多需要解决的问题。
  参考文献:
  [1]秦怀斌,戴建国.《软件项目管理》课程分组讨论式教学探讨[J].教育教学论坛,2018,(22):183-184.
  [2]李昕,刘益先,程维.软件工程专业工程化实践教学体系的建设与改革[J].计算机教育,2018,(11):49-52.
  [3]王峰,韩苗苗.软件工程专业学生工程能力培养模式的研究与实践[J].课程教育研究,2018,(38):224-225.
  [4]付丽梅,李绪成,任长宁.基于OBE的软件工程专业一体化实践教学体系改革[J].计算机教育,2018,(09):145-148.
转载注明来源:https://www.xzbu.com/9/view-14940171.htm