赵淑芳 陈立潮
[摘 要]软件工程课程理论性和实践性都非常强。目前课堂教学过程中存在问题较多。基于“项目导向的启发式”的软件工程教学模式不仅能激发学生学习的主动性和积极性,活跃教学气氛,而且提高了学生的实践动手能力,取得了非常显著的教学效果。
[关键词]软件工程 项目导向 启发式 教学模式
[中图分类号] G642[文献标识码] A[文章编号] 2095-3437(2015)11-0165-02
一、引言
随着软件工程和物联网技术在各领域的广泛应用,软件工程开发的规模也在日益增大,因此,对软件设计及运行维护人员的工程能力要求越来越高。而在大多数计算机和软件工程专业的课程设置中,对学生的软件设计、开发及运行维护能力的培养往往只体现在软件工程这门课上,如何通过软件工程的教学最大限度地提高学生的实践能力是摆在我们教学中的一个重要课题。鉴于此,我们提出了基于项目导向的启发式软件工程教学模式,以最大潜能的提高学生的学习积极性,增强学生的实践开发能力。[1]
二、目前教学中存在的主要问题
(一)教学内容较抽象,方法单一
目前的软件工程课堂教学主要以教师课堂授课为主,又以理论讲授为主,忽视了学生主观能动性的发挥,大部分学生对软件工程的理解为只要掌握了基本概念、原理,就能达到软件工程课程的要求。单一的课堂授课、枯燥无味的理论加上较抽象的内容无疑影响了实际教学效果。[2]随着软件规模不断扩大以及不断向各领域的渗透,对软件质量保障要求越来越高,这对软件工程课程的教学内容及教学模式提出了新的要求。从教学内容上看,我们既要注重软件设计的基本原理与方法,同时还要注重软件开发的整个过程与软件的质量保证措施。
(二)实践教学环节薄弱
软件工程是一门理论性与实践性比较强的综合性课程,很多软件工程学院只注重理论课程的教学,教学内容比较抽象,学生几乎没有实践的机会;有的学院虽然设有一定比例的实验课程,但课时比较少,几个实验下来,学生也只是能撰写一些相关的文档资料,没有真正体会到软件工程在软件开发中所发挥的作用。
(三)教学中采用的案例缺乏完整性和实用性
部分教师在教学时,由于缺乏实际软件项目的设计、开发及项目管理的经验,导致教学案例的选取偏离学生实际,即使讲授一些例子,由于学生缺少实际开发经验,也很难理解软件开发的全过程。有的教师所选案例要么规模较小,如简单的学生成绩管理系统。在学生看来,不需要完全遵循软件工程的设计过程,如不需按可行性研究等三个时期8个阶段来执行,而是直接进行设计和源代码的编写,学生还不清楚可行性研究和需求分析的目的及意义。这导致学生对软件项目、软件工程没有建立系统完整的概念体系,缺乏对所学知识的整体认识。[5]
三、项目导向的启发式教学模式
针对上述问题,要使软件工程的教学真正能充分调动学生的积极性,改变以往难学、难教的局面,不断提高学生的实践动手能力,有效地改善教学效果,我们必须从教学理念的更新、教学模式的改革等方面着手。由于软件的不可预见性,定义“需要做什么”成为软件开发的根本问题。
项目导向的启发式教学方法是在建构主义学习理论基础上,有别于传统教学的新型教学方法。建构既是对新知识的理解与掌握,同时又包含对原有经验和知识的改造和重组,形成新的综合知识建构。该方法提倡以学生为中心,教师在整个教学过程中起组织者、指导者和促进者的作用。[3]
(一)理论教学
基于项目导向的启发式软件工程教学过程主要包括软件项目的选取、教学内容的选取及教学方法、教学组织,整个过程是教师与学生相互讨论、共同参与的过程。
1.教学内容的选取。项目导向的启发式教学关键是选择好设计开发的项目,所选项目要与所讲授的内容息息相关,教学内容选取要以教学大纲以及人才培养目标为依据,所选教学内容的理论与技术应包括课程的核心知识点,确保理论与实践能紧密结合在一起,同时保证所选案例是可实现的,学生容易理解的,具有一定规模且可操作性比较强的。
软件工程的教学内容主要讲授将软件过程模型、可行性研究、需求分析、软件设计、软件构造、测试以及软件维护等内容,同时融入数据库设计、数据结构设计及网络拓扑结构设计等相关课程知识,按照面向数据流和面向对象两个方向构建组合式的、模块化的教学内容。
在教学的开始阶段选择一些典型的“软件危机”案例作为这门课程的导入,如Ariane5火箭、美国爱国者导弹防御系统曾经应用于海湾战争对抗伊拉克的飞毛腿导弹等,让学生们真正了解软件失败问题症结所在,认识到软件的本质特性造成了软件开发的诸多问题,软件本质上的复杂性使软件产品难以理解,影响软件过程的有序性和软件产品的可靠性,并初步建立规范化的软件开发意识。
在教学过程中,选取1-2个典型的,具有一定规模的案例(如高校教务管理系统)作为典型案例,分别采用传统的结构化设计方法和面向对象的设计方法,分别讲授软件生命周期中的可行性研究、需求分析、总体设计、详细设计、编码实现及测试等核心过程,并着重介绍每个阶段中要重点解决的问题,以及所采用的方法和工具。[4]
2.教学方法的设计。在教学方法上,以培养学生独立思考和创新思维为主要目标,以项目为主体,组织学生以团队的形式参加项目分析、设计、开发和运行,启发式的将抽象的理论知识融入教学实践的讲解中,通过分析、模拟、仿真,引导学生分析项目中所体现的软件工程本质的问题,让学生真正能掌握软件工程的设计思想。[3]
(二)实践教学
在课堂讲授的同时,每个环节我们都配备了相应的实验环节,实验教学与课堂教学保持同步进行,以更好地激发学生的学习兴趣,巩固所学的理论知识,真正掌握软件工程的设计、开发和维护管理的全过程。
软件工程项目实践教学的实施包括项目实践教学方法、项目实践内容和项目实践要求。项目实践进度与课堂教学同步,项目组根据项目需求,制订项目计划,进行分析与设计,进一步熟悉软件开发过程及方法,同时提交规范的软件分析与设计文档。学生在巩固课堂所学的理论知识的基础上,结合实际项目进行实践,使学生的应用能力、合作能力和全局观念等专业素质得到有效提高。[3] [5]
1.学生分组。学生按照项目的分析、设计、编码实现、测试各个角色组成2-3人的开发团队,同时选取一人作为项目负责人,同时明确各自的分工,并协作完成,以培养学生的团队合作精神、沟通能力和协调管理等能力。
2.项目设计。各小组首先应选择一个比较了解且具有一定规模的实际MIS管理系统,便于学生进行现场调研,获取准确而可靠的需求,也可参与到教师的科研项目中,然后严格按照软件工程的设计思想、软件过程的规范,独立完成项目的可行性分析、需求分析、设计、实现与测试。各小组在每个阶段结束后应提交相应的设计文档,教师对其进行检查并在全班讨论交流,对检查中发现的问题和不足,要进行改进和完善,然后进入下一个阶段的设计,直至最终提交产品,完成各阶段的任务。
3.模拟演示。在项目结束后组织答辩与演示,首先由小组长对项目的功能及基本情况作一个简要讲解,并介绍其本人在项目中所做的工作。然后让每个同学说明在整个项目开发过程中自己所完成的任务,并进行演示。教师在其间可以针对每个同学在项目中实际负责的部分进行提问,现场进行评分并计入期末总成绩,最后项目组提交系统和设计的总体报告。[5]
四、结束语
基于项目导向的启发式软件工程教学模式提高了学生的主动性和积极性,采用理论与实践相结合、案例讲解、项目实践并重的教学模式能真正让学生理解掌握基本理论。同时,学生又经历了软件开发的全过程,锻炼了学生对MIS管理系统的分析设计能力、编程测试能力和软件维护的能力,真正做到了学以致用,有效解决了以往软件工程教学中存在的理论与实践严重脱节、学生学习兴趣不高等教学难题,取得了较好的教学效果。
[ 注 释 ]
[1] 郁书好,苏守宝,刘正余,等.基于项目驱动的软件工程教学模式研究[J].皖西学院学报,2009(10).
[2] Jacob Sukhodolsky.Teaching So ftwar e Eng ineeringTo Under gr aduates[C].Pro ceeding s of the 2003 Int ernationalCo nfer ence o n Informat ion Sy st ems and Eng ineer ing,Montreal,Quebec,Canada pp.165-173,2003.
[3] 秦放等.案例驱动与项目导向结合的软件工程课程教学模式[J].计算机教育,2013(5).
[4] 赵辉,等.“项目导向案例驱动”的软件工程教学模式[J].计算机教育,2012(5).
[5] 张海藩.软件工程导论[M].北京:清华大学出版社,2008:9.
[责任编辑:钟 岚]