软件工程项目化教学研究

更新时间:2019-06-24 来源:工程论文 点击:

【www.rjdtv.com--工程论文】

摘 要:软件工程是指导软件生产、维护的一门工程学科,是计算机科学与技术研究的一个热点。本文研究了如何利用项目驱动课程教学的方式,将软件工程开设成学生岗前培训的技能课及工程能力提高的特色课的教学途径。
  关键词:软件工程;传统教学;项目化

  软件工程是指导软件生产、维护的一门工程学科,也是根本于提高软件的质量与生产率,最终实现软件的工业化生产的综合学科。通过软件工程课程的学习,学生能够了解和掌握软件工程的理论、技术和方法,具备作为软件工程师所需要的专业能力。但随着软件工程技术的发展,软件开发新方法层出不穷,软件工程领域的教学内容不断丰富,加强软件工程课程的创新,改革传统的教学模式,增加新的教学手段,已势在必行。目前,国内高校对于该类课程的一般做法是以教师课堂授课为主,学生被动地听课,教学内容大多是讲授一些传统的软件开发方法,且重理论而轻实践,即使配备课程实验,学生也只是编写一些规定的文档,其开发方式和手段基本上与软件工程的要求脱节,学生的工程能力训练收效甚微。导致计算机专业毕业的学生大多能成为一名合格的程序员,但是作为一位具有工程能力的软件开发人员还有相当的距离。
  由于软件工程课程的理论原理比较抽象,不易掌握,从而导致学生在学的过程中极易产生枯燥、乏味的感觉和学不会、不想学的思想。由于软件工程课程不涉及具体软件项目,不怎么涉及软件算法,学生在学习过程中很难将抽象的理论与实际软件项目联系起来。被动接受抽象理论的结果是学生学习该课程的兴趣会逐渐消失。虽然在教学过程中也引入了一些实例分析,但这些例子大多数是为了阐明某一个概念和某种方法而设立的,它与真正的软件开发项目相比,无论在规模还是在复杂程度上都有所不同。特别是在问题的定义、可行性研究、需求分析这三部分的教学中,引入的实例往往是这三个阶段结束时所提交的报告和模型。但是,在实际开发项目时需要做大量深入细致的调查研究和不断地与用户沟通才能得到这些报告和模型,由于缺乏对这个过程的感性认识,致使学生学了软件工程仍不知道应如何着手一个软件项目的开发。
  很多高校只开理论课程,无实验课程,有的虽有实验课程,但课时非常少,学生不能将理论知识有效运用到实践活动中,也导致在面对具体的实际问题时无从下手,即使下手也会乱了方寸,学生没有真正体会软件工程在软件开发中所发挥的重要作用。上述问题导致我们培养出来的学生要成为一名具有工程能力的软件开发人员还需要在毕业后经历一段较长的实践过程,这种局面也直接影响了计算机专业学生的市场竞争力。如何在软件工程这门课的教学范畴内最大限度地提高学生的工程能力是摆在我们软件工程教学中的一个重要课题。项目化教学法起源于20世纪80年代的德国,是一种建立在建构主义学习理论基础上的,有别于传统教学的新型教学方法。建构既是对新知识的理解与掌握,同时又包含对原有经验和知识的改造和重组,综合形成新的知识建构。该方法提倡以学生中心的学习,教师在整个教学过程中起组织者、指导者、帮助者和促进者的作用。
  项目化教学方法中,选择好的、适合的、与课程相关的项目很重要。选取项目要以人才培养目标及教学大纲和教学内容为依据,项目的理论与技术基础应当包含课程核心知识点,确保能与所学内容紧密结合。可以选择一些小型的,生活中经常接触,学生们熟悉的项目进行开发,所选项目也可以有一定难度,但学生可以运用所学习的知识、技能通过讨论自己克服、处理在项目工作中出现的困难和问题。学生在课程学习的规定时间内,通过努力能够完成他们比较容易了解领域系统的开发。例如:选修课网上选课系统,超市仓库管理系统,酒店客房管理系统等。这些系统就围绕在学生的日常生活中,随时随地都可以作现场需求调研。另外项目的选取也可以征询多方面意见,包括校内外同行相关专家,有条件的话甚至可以是企业界的相关软件技术人员或有丰富经验的工程师,这样在教学内容上项目的选取一方面紧扣软件工程教学内容,不会脱离人才培养目标和教学大纲,另一方面又紧密联系实际,让学生学有所用,将来走上工作岗位会很快进入角色。项目在经过认真充分的论证选取后,可以添加到项目库,并逐年更新。
  在软件工程开课时教师就可以向学生公布所有备选项目,让学生根据自己实际情况和兴趣自己选择项目。在课程进行到软件生命周期的第一个阶段:可行性研究这一部分的教学时,就可以开始进行项目的实践。首先学生自由组合和教师指导相结合的方式将全班同学分成若干个小组,每小组3~5人。这在实际操作过程中可以参照公司管理方式,对每个成员进行分工,比如:项目管理人员,分析人员,开发人员等,并要求每个成员都有比较饱满的工作量。每个小组由项目管理人员负责项目的整体工作安排和协调,以及与教师沟通工作。
  项目实施内容覆盖软件生命周期的各个阶段,包括可行性研究、需求分析、系统设计、实现和测试。在完成各个阶段的内容时可利用目前流行的软件工程工具,如:Office visio,Rational Rose等。可行性研究部分,学生完成这部分工作的里程碑就是提交可行性研究报告。报告要从技术可行性、经济可行性、法律可行性等方面对项目系统进行分析,给出整个项目系统生命期的收益/投资比,最后必须有一个是否可进行开发的结论。
  需求分析部分,首先对系统进行详细的需求描述,使用UML对系统进行建模,给出系统对象模型,功能模型和动态模型,说明系统必须满足的限制、约束及性能要求,最后提交软件需求规格说明书。系统设计部分,使用面向对象设计方法给出系统的总体结构设计、系统的逻辑视图、配置视图和数据视图。对系统中的每个模块的程序流程给予详细介绍,最后给出系统界面设计并提交面向对象软件设计文档。实现和测试部分,选择合适的程序设计语言编写系统,并对可运行的系统程序进行测试。测试时使用白盒测试、黑盒测试及类测试相合的方法对模块功能、软件接口正确性、用户界面正确性、数据文件存取、运行时间、设计约束分别进行测试。然后,提交软件测试分析报告。每个项目小组以课程设计的形式提交本小组开发的各个阶段的文档、源程序及可运行的项目系统。课程设计的评分占课程总成绩的50%。理论课程和方法学以笔试的方式进行,评分占总成绩的另外50%。毕竟脱离了理论和方法的程序开发人员,只能称得上是“代码民工”,所以理论的考核也同等重要。
  流量和设定的流量值,根据误差计算神经网络的输出,神经网络的输出即为 PID 控制的参数,进行 PID 控制,如此反复,最终达到最优化的设计值。在进行项目化教学的过程中,我们发现项目化教学由传统以教师为中心的教学转变为以学生为中心的教学;由以课本为中心转变为以项目为中心;由以课堂为中心转变为以情景为中心的教学方法。使用这种方法进行教学不仅培养学生的工程开发能力,也提高了学生的综合素质。额外收获,软件工程项目化教学方法,除了可以很好的学习软件工程课程知识以外,在进行项目开发过程中还可以把以前所学的课程诸如:数据结构、程序设计基础、操作系统和数据库等理论课程贯穿起来,达到强化理论,提高同学们的思考能力的效果。
  随着软件工程学科的发展,新概念、新技术和新方法不断涌现。当前,软件重用和软件构件技术成为研究热点,面向对象方法和技术成为软件开发的主流技术,软件过程成熟度模型CMM管理技术的实施受到广泛关注,即使是传统软件工程中的一些基本概念、框架、随着技术的进步也在发生不少演变,如何将这些新技术、新方法和新演变带入课堂,让学生在学校里就能掌握软件开发新精髓,还亟待进一步的研究。

本文来源:http://www.rjdtv.com/gongchenglunwen/276.html