前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇软件工程课程设计总结范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
近年来,软件行业进入第二春,供需两旺。据调查,以北京为例,软件工程师每年需求50000人左右。据IT英才网数据显示:北京IT职场每月需求达3380个。 [1]但是,软件行业市场的供需出现了错位,一方面,IT企业对软件工程专业的人才需求旺盛,另一方面,软件工程专业的毕业生就业质量却不高。究其原因,是我们培养的人才不能满足企业对软件工程人才要求。
软件工程专业是国家教育部在2002年新增的专业。该专业以计算机技术为主的专业,实践性很强,专业的实践教学体系是培养学生实践能力、计算机工程能力、创新能力的重要途径。我们应该充分了解市场和企业的需求,制订和实施切实可行的实践教学体系。[2]
曲靖师范学院软件工程专业从2008年开办至今,已经培养5届学生,一直以来,我们不断丰富和完善该专业的实践教学体系,形成了相对完备、效果好的实践教学体系。
2 实验室建设是硬件基础
实验室是开展实践教学的硬件保障,实验室建设的好坏,直接关乎实践教学体系执行的成败。一直以来,我们非常重视软件工程专业的实验室建设。实验建设能充分满足软件工程专业实践教学体系的硬件要求。实验设备采购的指导思想是实验设备要先进、实用,充分满足学生的学习和教师的实践教学需要。
该专业已经建成硬件实验室有2个,分别是“计算机组成原理实验室”、“计算机组装与维护实验室”;通信与网络实验室有2个,分别是“计算机通信实验室”、“计算机网络实验室”;软件类的实验室有3个,分别是“软件开发与测试实验室”、“数据库实验室”、“信息技术创新实验室”。同时,为适应当今云计算的研究需要,我们投资200多万建立了云计算平台。
以上实验室的更新及新建,能充分满足师生完成实践教学的需要。
3 软件工程专业技能训练是实践教学体系的抓手
在学生大学期间,为了在不同学期适时提高学生的综合实践能力,我们结合“软件工程专业人才培养方案”的要求,开展了贯穿大学4年的专业技能训练。我们把专业技能训练当作实践教学体系的抓手,专业技能训练根据训练大纲,着力提升学生应具备的专业素养和能力。
我院的专业技能训练主要包括两个级别,一级是课程设计训练,本训练以课程为依托,制定课程级别的训练大纲;二级是综合设计训练,主要训练学生的软件论文项目的开发能力,要求学生能灵活应用所掌握的知识和技能,完成一个综合性、设计性的软件项目。下面分别对这两级训练作详细介绍。
3.1 课程设计训练
“课程设计”是一个多义词词条。它可以指“为掌握某一课程内容所进行的设计”[3]。课程设计是课程实验的高级环节,课程实验是提升学生立体实践能力的根本,课程实验分为验证性实验、综合性实验和课程设计实验,我们在传统验证性实验的基础上开展课程设计实验,提升学生的课程综合实践能力。
以《Java程序设计》课程设计为例,课程设计的目的:利用Java语言的语法特性,结合数据结构算法、网络知识、文件处理和数据库等知识完成综合题目的设计和代码实现,并培养锻炼分析程序、撰写报告等能力。
软件工程专业的已经开出课程设计的课程有4门,分别是:OFFICE办公软件、计算机组装与维护、C语言程序设计、JAVA程序设计。我们针对这些课程,在编写实验大纲时,要求包含课程设计,设计方案要经过专业系的审核和教授委员的审定。最后,以审定通过的课程设计为依托,为后续综合实践能力的提升打下坚实的基础。
3.2 综合设计训练
综合设计训练的目的是锻炼学生综合所学知识,设计和开发一个小项目的能力。这些项目有“JAVA程序设计”、“商业数据库开发”、“J2EE企业应用”、“JAVA Web开发”等,这些小项目的训练要基于几门课的知识和技能,如“JAVA Web开发”就需要学生综合数据库、软件工程、JAVA程序设计语言等知识与技能。
综合设计训练要与毕业设计区别开来,此训练的主要目的是让学生体验和掌握项目开发流程,同时锻炼综合应用所学课程来完成一个具体的小项目。
3.3 软件工程专业技能训练安排
]
为鼓励学生多渠道获得技能分,我们规定,学生参加通过全国软件资格(水平)考试(中级),可以获得2学分,参加通过软件资格(水平)考试(高级),可以获得3学分。
4 毕业设计是实践教学体系总结性的实践环节
毕业设计是教学过程的最后阶段采用的一种总结性的实践教学环节。通过毕业设计,学生可以综合应用所学的各种理论知识和技能,进行全面、系统、严格的计算机技术及软件工程能力的练习。[4]毕业论文(设计)是实践教学体系的技能整合,我院对毕业论文(设计)作重大改革,着力打造学生综合实践能力。
参加毕业论文(设计)的学生分两部分,一部分在公司实习,同时要在公司完成毕业论文(设计)工作,余下的学生在曲靖师院完成毕业论文工作,为提高毕业论文(设计)的质量,经向教务处请示,允许我院结合专业实践性强的实际,改革本专业毕业论文(设计)工作。改革思路包括三点,一是我院学生的毕业论文(设计)以毕业设计为主,弱化对学生文本的要求,强化对实践动作能力的提升和检查,二是做好规范管理工作,制定相关文件,如:“信息工程学院毕业论文(设计)工作规定”、 “信息工程学院毕业设计开发文档的撰写与打印规范” 、“信息工程学院毕业设计开发文档”等。
5 校企合作助力实践教学体系
为提升学生的实习效果和就业质量。我们自2012年开始,与四川华迪信息技术有限公司开展毕业实习的合作,该公司是一家集软件外包、信息服务、学生专业技能培训为一体的公司,在以上业务深耕12年,在全国小有名气。我们的学生参加校企合作实习有两种类型,一是为期三个月的专业实习,二是为期四个月的就业培训。三个月的专业实习分为Java开发方向和计算机网络方向,Java开发实训的重点是提升学生的软件开发实践能力和水平,计算机网络方向的实训重点是提升学生的网络规划、设计、实施、部署的能力。
从2013年开始,软件工程专业的学生几乎都参加校了企业合作的实习,取得了良好效果,学生的专业实践能力提升了,就业质量明显提高,很多学生就在四川成都就业、创业。
6 结语
本文结合长期的思考和实践,不同的实践环节有机整合,大大提高了学生的职业能力和素质。软件工程专业的实践教学体系的构建和实践是一个系统的、长期的过程,还需要我们不断地探索,进一步提高人才培养质量。
参考文献:
《软件工程》是一门理论与实践紧密结合的学科。目前的实验教学存在诸多问题,本文总结了多年来《软件工程》的实验教学经验,提出了章节实验+课程设计的教学实验方案,并在教学中合理运用,取得了有效地成果。
关键词:
软件工程;课程设计;实验教学
0引言
随着Web程序设计及云与大数据在各领域中的广泛使用,工程化的开发人员越来越被需要,然而在现有高校的《软件工程》教学中,不太注重对学生的软件设计、开发及运行维护能力的培养,而往往把大量的理论灌输在软件工程这门课上[1-3]。如何在《软件工程》教学中最大限度地激发学生的实践能力是亟待解决的一个重要课题。另一方面,基于软件生命周期的工程化开发方法,归根结底属于文档驱动型的开发方法,如何引导学生书写规范化的软件开发文档也是我们教学过程中应该注重的一部分。鉴于此,我们提出了章节实验+课程设计的启发式软件工程实验教学模式,以激发学生的学习积极性,增强学生的实践开发能力。
1目前软件工程实验教学中存在的问题
1.1理论教学缺乏新意,无法激发学生的学习兴趣
《软件工程》课堂教学内容基本为理论讲授,按照软件的全生命周期过程,分别给学生介绍了问题定义、可行性研究、需求分析、概要设计、详细设计、编码测试与维护的相关理论知识。通过课堂教学,大部分学生只掌握了基本概念、开发原理,开发方法。课堂授课枯燥无味加上内容较抽象,严重影响了实际教学效果。实际上,随着软件开发规模的不断扩大以及对软件质量要求的提高,软件工程课程的教学内容及教学模式更应该注重理论与时间的结合。既要注重软件设计的基本原理与方法,还要注重软件开发的实践经验以及技术运用。
1.2实验内容不具体,学生无从下手
目前的《软件工程》实验,一般只有一个课程设计,题目自选,类型自选。这样的实验要求缺乏具体性,使得学生无从下手。另外《软件工程》的整个教学过程是基于软件生命周期的过程,在每个相关阶段都有具体的实施技巧与实施方法,可以将具体的的技术方法以小实验的形式命题[4-8]。比如在讲到需求分析的工具数据流图时,可以给出一个小型系统功能的问题描述,然后让学生利用MicrosoftVisio画出描述该业务流程的数据流图,这样既可以将理论应用于实践,又体现了文档驱动型的开发理念。
1.3实验教学缺乏有效的检测机制
目前的实验教学,教师一般是把课程设计布置下去,然后让学生独立完成。但是对于没有任何开发经验的学生来说,根本无从下手,所以80%的学生最后放弃了实验。只有部分学生开展了课程设计,但中途遇到困难也就放弃了。因此规定好课程设计的题目,进行有效的选题知道,中期审查以及后期检查等活动,可以督促学生完成设计。另外,在整个课程设计过程中,教师的辅导时必不可少的。
2章节实验与课程设计相结合的平行实验教学模式
随着理论教学的推进,在适当的知识点完成后,安排小实验,以巩固所学知识。另外,大实验设计即课程设计贯穿整个学期,通过大实验的设计与实现使学生实际体验系统开发全过程。这样大小实验穿行,相辅相成,相得益彰。
2.1章节实验内容的设计
《软件工程》理论教学是按照软件生命周期的全过程完成的,在各个开发实施的阶段都会介绍到开发原理、开发工具、开发技术[9-14]。比如在可行性研究阶段会介绍到数据流图、数据字典;在需求分析阶段会介绍到E-R模型、层次方框图、Warnier图等;在设计阶段会介绍到结构化的设计方法、过程设计工具PAD图、判定表、判定树等;在实现阶段会介绍到各种测试方法:单元测试、集成测试、回归测试、白盒测试、黑盒测试等;在面向对象的开发方法中又会介绍到UML的各种模型图。对于这些知识点,我们都设置了小实验以巩固学生的理论知识。其实验设计如表1所示:小实验的内容贯穿整个实验教学过程,通过十个小实验的练习,将课本上90%的知识点覆盖,学生即通过实验巩固了理论知识,又学会了如何将理论知识应用于实践,还掌握了一些文档编写需要的工具。
2.2课程设计实验的设计
课程设计以应用型软件系统研发为主,教师给出部分的设计实施题目,也可以学生自选设计题目,但教师要最后把关。根据实际需求,灵活选定软件项目,在规定的周期界定范围内,学生完成相关的阶段性任务,以规范性的文档形式提交任课教师审阅。批准后,以此为据,展开下一阶段任务。整个的分析、设计和研发过程,是以规范性的文档形式为审阅结果及实践提交成果。课程设计以软件生命周期为依据,序列化螺旋式展开,每一阶段都以相应的文档性资料为依据,通过审核后方可进入下一阶段的任务,最后提交软件系统,整理代码结构,以及相关的后期工作任务总结资料。
2.3两种实验内容相辅相成
所谓平行实验室指在以种教学实验任务中,以两条不同的主线开展实施,两个中心的实验分别针对不同的知识点和锻炼方向。中心的实验内容,表1旨在锻炼学生的基础理论知识的实践运用,表2旨在锻炼学生的实践综合运用能力。两个实验方向平行进展,同时开始,分别进行。从不同角度和方向促进了学生的实践能力的培养。
3平行实验教学模式的具体实施方案
3.1平行实验开展过程及方法
对于小实验,我们以章节为单位,当学习到相关的理论知识时,开展适应的小实验内容。学生独立完成小实验,并提交实验报告。对于课程设计,我们以小组为单位完成,每小组大概10人左右,设定队长,有效划分工作任务。在规定的时间内,由小团队独立完成。在任务的展开过程中,出现问题,由教师与学生一起共同解决,并且主要采取引导的方式启发学生独立分析和解决问题。
3.2平行实验模式的教学收效
本实验课程在3届软件工程相关专业的教学中实施,通过该课程的学习,学生巩固和加深了软件的工程化和系统化知识,了解了整个学科、专业和课程的发展前沿和实施背景,进一步加强了学生个体综合设计及创新能力的培养,同时良性引导和培养了学生实事求是、严肃认真的科学作风和良好的学习和实践习惯,为今后的就业和深造打下扎实的基础。
4结论
《软件工程》实验在学院实验室以及部分合作实施单位的开发梯队中展开,收到了良好的效果。我们实时记录学生的项目执行过程,做好日志的量化登记,为此指定了学生的校外实践指导教师参与,以后将利用校企合作这个广阔平台,更加深入的进行工程化的实践练习。
作者:王妍 高仲合 倪建成 单位:曲阜师范大学软件学院
参考文献
[1]李晓东,魏惠茹,董振华.项目驱动教学法在计算机程序设计语言课中的探索[J].软件2015,36(4):107-109。
[2]张作辉.浅谈计算机教育教学的分组模式[J].软件,2014,35(1):132-133
[3]王蕾.计算机上机实践课程改革探索[J].软件,2014,35(2):172-173.
[4]李冬芬,施键兰,黄文秀.独立学院非计算机专业VFP课程趣味性教学探讨[J].软件,2012,33(8):128‒129
[5]阳小华,李萌,刘志明软件工程学生团队构建的案例分析[J]计算机教育2011,5:57-61。
[6]叶丽丽.关于计算机网络课程教学改革的探讨[J].软件,2013,34(5):159-160.
[7]赵乃东.信管专业网络工程实践教学课程体系建设方案的探讨[J].软件,2014,35(7):68-71.
[8]尧新远.计算机应用软件教学方法创新探究[J].软件,2012,33(9):134‒135
[9]兰春霞.浅析在计算机教学中学生创新能力的培养[J].软件,2012,33(9):129‒130
[10]杨志耘刘建宾软件工程任务驱动教学模式的探索与构建[J]高等理科教育2005,24(6):59-63。
[11]殷勇,郑广成.中高职计算机类现代职业教育课程体系的建设研究[J].软件,2014,35(10):63-66
[12]龙超,潘黎阳,熊刚强.高校计算机基础课改革走向的研究[J].软件,2014,35(6):111-114
关键词:学校;软件工程;教学
中图分类号:G642 文献标识码:A 文章编号:1006-4311(2012)02-0216-02
0 引言
软件工程与其他计算机课程,如程序设计语言、数据结构、编译原理、数据库以及操作系统等课程都是相互作用和影响的。在一定程度上说,软件工程讨论的是在实际开发当中综合运用这些课程中讲过的理论和方法,将这些课程的理论和方法放在一个统一的目标下,这个目标就是在有限的时间及预算条件下,开发出高质量的令用户满意的软件。
软件是信息化的核心,各行各业的信息化建设都离不开软件,软件产业的发展需要大量的人才,无论是公办学校还是民办学校,作为人才培养的基地,都应该培养学生掌握软件工程的基本理论、基本概念和方法和技术,并将其应用于软件开发的具体实践中,为国家的信息化建设服务。
1 《软件工程》教学内容与课程特点
《软件工程》是针对计算机及相关专业高年级学生开设的课程,在学习《软件工程》课程之前,学生必须完成《高级语言程序设计》、《数据结构》、《数据库系统原理》、《操作系统》、《计算机网络》等先行课程的学习。本课程的知识点是软件工程的整个知识体系结构,即软件需求、软件设计、软件实现、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程的工具和方法、软件质量等十个知识点,特别是软件过程的概念和软件系统的分析设计技术。
软件工程涉及到计算机、经济学、管理学、工程学、市场学等多个领域的知识,由于涉及内容太多、太宽,使学生感到这门课中包含的知识非常丰富,而且其本身还处于不断发展中,这是本课程的突出特点。正因为这一特点,软件工程教学中要突出重点,扩大学生的知识面,同时要重视实践环节,通过多种教学形式使学生掌握各种知识的综合应用。
2 学校《软件工程》课程教学存在的问题
普遍教学条件和设备资源比较短缺,师资力量较薄弱,教师教学水平、教学条件以及所处的社会大环境方面都表现出一些特性,具体到《软件工程》课程教学方面,存在一些问题。
2.1学生基础较差,文化课学习积极性不高学生普遍基础较差,学习积极性、主动性不高,还有的学生存在自卑心理,对学习有畏难情绪,对于《软件工程》课程的前修课程,如《高级语言程序设计》、《数据结构》、《数据库系统原理》等学习的不够扎实,许多知识体系不能连贯起来,给《软件工程》课程教学带来一定的问题。
2.2教师教学水平问题教师大多数是近几年新招聘的其他高校毕业生,他们毕业以后直接进入学校,缺乏实际软件工程项目的锻炼,教学方法比较单一,教学经验不足,不利于搞好《软件工程》课程教学o
2.3教学条件问题学校普遍存在办学资金紧张的问题,因此,教学设备和教学条件等方面不一定能全部满足需要,如有的学校多媒体教室、电脑等设备不能满足要求,学校在计算机软件方面的投资就更少;还有的学校校园网络的建设也没有到位,这些都给提高《软件工程》课程教学质量带来一定的困难。
2.4社会环境问题不容质疑,现在社会上普遍存在着轻视学校的现象,突出表现在学校毕业生求职、就业等方面,学校要求得发展,必须高度重视毕业生的就业问题。在具体课程教学中,要从培养“应用型”人才这一目标出发,紧密结合社会需要,不断改进教学内容,抓好新技术、新知识教学,同时大力加强实践性教学环节,培养与社会需要“接轨”的“产品”。
3 《软件工程》教学改进的内容和方法
3.1教学过程引入实际案例软件工程课程涉及面很广,如果不结合实际工程项目进行教学,很难把教学内容教授给学生。因此,在教学过程中引入案例,将复杂抽象的概念用具体生动的实例进行诠释,能够收到事半功倍的效果。例如,在授课时教师可结合1个“学校教材购销系统”实例,给学生介绍具体的开发过程和方法。案例教学法也是在软件工程教学中经常采用的一种方法,软件工程案例教学通过以企事业单位中的实际项目或从中抽取的模拟项目为研讨核心,为学生创造一个仿真环境,使其在课堂上就能接触到实际问题和环境,从而学会在复杂条件下利用所学理论解决问题。要搞好案例教学,必须从教学准备、教学组织与实施、教学总结与讨论几个环节抓起,同时,在具体教学中,还要注意以下问题:第一,选择与设计案例时,要考虑案例的针对性、复杂性,最好是授课教师与具有丰富经验的软件工程师共同编写,可以从软件工程生命周期的角度出发,选择一个软件工程项目的全部过程,也可以将一个大型项目的某一个阶段作为教学案例。第二,案例涉及多门计算机课程。在讲授过程中,最好由多位相应课程老师共同组织教学。第三,教师布置案例后,学生可以进行“讨论式”学习,在这个过程中,学生是项目的主体,教师起到组织、指导、咨询的作用。可将学生分成若干个小组,每个学生均有机会参加讨论。
“软件过程及管理”是软件工程教学内容中的一个重点,软件过程及其管理是长期开发实践中提炼的内容,如软件开发过程中的时间控制、人与人之间的合作和交流等。该内容只有在实践中才能切身体会到其正确性和必要性。因而这部分的教学宜采用“实践型”教学方式,以课程设计的形式,学生以小组为单位共同讨论、协商完成任务。
3.2组织课堂讨论,形成教学互动我国有句名言:“授人以鱼,不如授人以渔”。学生是教学活动的核心,教师要利用合适的方法调动学生的积极心理和参与意识,改变传统的教师高高在上的教学方式,让学生参与教学过程,有机会发表自己的看法。
为了提高软件工程教学质量,学校还可以采取开办讲座的形式,针对一些专题,如UML知识、软件测试技术与岗位需求、第四代技术等。聘请软件园区或科研院所的专家到校内开展讲座,扩大教师和学生的知识面。网络教学也是一种较好的教学形式,软件工程相关教师共同建立软件工程学习网站,将课程安排、教学大纲、多媒体课件、研究案例、文档模板、工程规范和标准、作业、实践项目和要求等,以及大量的、有价值的参考书籍清单、电子文献等放在网上,供学生随时查阅。同时,教师和学生也可以在网上进行交流和答疑,扩大教学时间和空间。
如上所述,软件工程教学内容宽泛,涉及面广,教学中有许多图形,利用多媒体教学手段,将教学内容制作成多媒体课件,能够在同样的一节课内教授更多的内容,形象化地展示软件工程基本原理,还可以动态演示软件项目结构和设计细节,利于学生理解教学内容。
3.3加强实践环节从本质上看,软件工程的实践性和综合性是其他相关课程难以比拟的。因此,必须结合设计项目和实际应用加以施教。才能取得良好的教学效果。那么,在把握教学进度的同
时,必须及早安排好课程设计,让学生同步开展课程设计。这样,理论课讲完了,课程设计也基本结束,学生们能从理论和实践的结合上,加深对软件工程知识难点、重点的理解,进一步深刻理解软件过程和系统消化理论知识,训练项目设计的思路,锻炼实际开发能力,培养严格规范的项目开发方法和步骤,体验文档编写整理、阶段性评审总结以及软件测试等各个方面的工作流程,直接培养了学生从事实际开发的能力。
3.4派骨干教师参加企业项目实践学校的教师大多是青年教师,实际开发经验较少,要将《软件工程》课程教好、教活,有一定的难度,学校办学资金紧张,也不可能花钱送教师参加培训,可以利用暑期时间,派骨干教师参加软件企业具体项目的开发,既为专业培养了教师,也节约了成本,同时教师参与开发的具体项目也可以作为教学中的案例或项目驱动教学中的项目积累起来。
3.5引进培训机构,多方共同培养学生目前计算机软件类培训机构非常多,其中有一批专门针对计算机专业毕业生,受软件企业委托开展定向培训,其培训内容与《软件工程》课程内容有许多是相同的。在国家的大力支持下,国内已经建设了中关村软件园、大连软件园、成都软件园、西安软件园等国家级软件企业园区,同时也成立了大型的实训基地与培训中心,这些机构目前都开展软件工程项目培训。学校在师资力量薄弱、硬件资源相对落后的情况下,可以考虑与上述培训机构合作,采取派学生出去、将培训机构引进学校、课程输出和置换等各种方式,开展软件工程培训,提高教学质量,培养学生实际工作能力,为学生顺利就业打下良好的基础。
4 结束语
《软件工程》教学的目标,一是培养学生运用软件工程的基本知识开发实际软件项目的能力,强调对过程的理解,方法的掌握,技术和工具的应用,以及对团队的重视:二是培养学生严谨、求实的科学态度和团队合作精神。以上仅从从实践教学环节,教师队伍培养,引进培训机构,改建教学方法、采取多种教学形式等方面提出了一些想法,要想真正达到上述目标,还需要进一步深入研究和思考。
参考文献:
[1]杜晶,王凤芹,李祁.软件工程课程教学特征与改革[J]福建电脑,2010,(06)
[2]沈备军,顾春华.软件工程教学模式的研究和实践[J].计算机教育,2005。(01)
[3]潘娅歙件工程教学方法探索[J].西南科技大学高教研究,2006,(02)
关键词:软件工程;课程体系;师资教材;实践教学
软件工程学的课程教学目标是:使得学生能够学会将“系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上”[1]。软件工程学是理论与实践紧密结合的课程,教学效果的最终检验是看学生是否具备软件工程基本素养,是否能够在软件开发实践中综合运用软件工程知识,是否已准备好融入规模、规范、工程化的开发团队。本文就软件工程教学与实践脱节的现象及原因进行分析,提出教学改进的一些举措。
1现状反思
软件工程的教学与实践之间存在着一条跨度不小的鸿沟,一些现实状况更是需要引起我们的注意与反思。
1.1毕业设计过程与结果的反思
很多情况下,软件专业学生的毕业设计是以任务思维为导向,以简单地交付软件执行代码为目的。软件开发工具的掌握挤占了毕业设计的大量时间,课上教授的软件工程方法及工具应用弃之不顾,毕业设计的过程基本上是在脑袋瓜中展开作业。学生往往在非常简陋的需求分析及概要设计基础上,甚至在没有形成任何文档的情况下,直接进入程序编码。本该在过程中形成并指导各项开发实践的文档,往往是在撰写毕业论文时,再事后拼凑补齐,其质量更无从谈起了。
1.2企业对毕业生预期与评价反差的反思
软件企业往往希望毕业生到岗后,能够快速融入到开发团队,尽快独立工作。短期工具技能的掌握对学生适应企业起到关键性作用。参加过社会培训班的,就业更具竞争力。普遍的结论是毕业生的实践能力差,距企业要求有很大距离,半年之内无法做实质性的工作。
1.3企业软件开发活动的反思
手工作坊式软件企业依然比比皆是,如个人英雄主义、变更管理失控、配置管理混乱、测试时间压缩、质保流于形式、验收前的集中突击补齐文档等。规范的软件过程常常蜕变成为认证而存在的一纸漂亮空文。时间紧、任务重、人手不够并不是有足够说服力的托辞。
学生在校期间没有养成良好的软件工程素养,工作之后没有切实有效实践,不能不说是软件工程学课程教学的很大遗憾。
2原因分析
2.1战术课程要求特殊
数据结构、编译原理、软件语言等课程都可以归结为技术性课程,就像教会学生如何发球、接球、传球、扣球、拦网等;而软件工程是战术性课程,教会学生如何根据不同对手情况,展开战术配合、立体进攻、立体防守。技术性课程的评判标准很单一,每种技术动作都有非常严格的技术标准,1加1就是等于2,学生可以得到唯一正确的答案。战术性课程是经验方法的总结,方法是死的,而方法的运用却是活的,其评判标准因时、因地、因人而异,无法做到放之四海皆准。这是软件工程课程教学困难的本质所在。
2.2师资短板指导乏力
优秀的软件工程教学人员需要深谙软件工程理论体系、掌握主要开发工具、拥有丰富的开发经验。现实情况却是大部分教学人员为科研出身,对软件工程的认知多数停留在理论研究上,缺乏大型软件项目开发的切实体验,加上指导教师数量不够,导致知识转移过程中,教学手段单一,案例示范不够,实践指导乏力。有些学校与企业合作教学,但企业自身的软件开发过程就不是很规范,反而起到负面的引导作用。
2.3课程设计背离初衷
软件工程设置课程设计环节的初衷是引导学生通过课程实践加强对软件工程的理解,实际执行时却往往沦为软件开发工具的延续性课程。学生的主要精力消耗在开发工具使用以及编程架构熟悉上,最后的提交物就是蹩脚的程序加简陋的事后撰写文档。对于初学者而言,最好的学习方法就是模仿。这就要求我们提供较为成熟的开发框架、通俗易懂的编程指南、较为规范完整的经典样例,降低学生入手编程的技术门槛,使其主要精力投放到需求分析、软件设计、软件开发、软件测试等关键过程上。
2.4学时有限讲授不透
在SWEBOK[2]中,软件工程知识体系划分为10个知识域:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量。由于学时的限制,相当多内容只能蜻蜓点水式的介绍,效果差强人意。
3教学改进
3.1课程体系优化
参考文献[3]提出软件工程应加强课程体系与教材的研究,注重因材施教。软件工程的实践教学需要综合运用基础课程(如数据结构、数据库原理)、技能课程(如工具语言)以及软件工程理论,因此要贯彻“学以致用”原则,优化课程体系设计,合理衔接基础课程、综合性课程、技能课程,统筹课程学习及考核要求,避免相互脱节的现象发生。
与工具语言类课程配套的课程设计,学生往往上来就是直接编程,任课老师经常也只是单纯考察程序的运行情况。在学生编程工具未掌握的情况下,软件工程课程设计却又要求学生提交可执行程序,学生只能将主要精力放在工具熟悉及程序编码上。这就给学生造成一种假象,软件工程只是种理论,实践中可以束之高阁。
参考文献[4]所述,软件工程课程重点应放在工程化、规范化方法的应用上,工具类课程应强调以软件工程方法为指导,套用较为成熟的编程框架模型,开发贴近实用的系统。只有优化课程体系设计,避免各门课程各自为阵,早期介入培养学生树立工程意识、规范意识,考核上既重结果更重过程,这样才能从源头消除教学与实践脱节的现象。
在软件工程的理论与实践教学中,可采用阶段教学法[5],根据不同教学阶段的特点,可有选择地采用启发式教学、能力驱动教学、项目驱动教学、情景法教学、案例法教学等多种教学方法。
3.2师资教材建设
学校教师熟悉软件工程规范要求,但缺乏开发经验,缺乏成功案例;企业开发人员熟悉开发工具,拥有较多的项目经验,但开发过程不尽规范。因此在师资及教材建设方面应以社会需求为导向,充分发挥学校、企业的各自优势,实现学校、企业的双赢。
具体实施可借鉴人才订单培养模式。由企业提供背景案例,开发框架平台,教师进驻企业体验审视开发过程,提出适当的改进建议,制定软件开发各阶段主要交付物的模板、编写指南、评审指南等。选取大小适中的典型案例,指导企业开发人员或学生,按软件工程规范性开发的要求,进行需求重构、分析重构、设计重构、代码重构,建立项目计划、配置管理、测试管理、质量保证等其他辅助支持过程。在此基础上,汇编形成覆盖需求分析、系统设计、程序编码、测试质保的软件工程实践教学典型案例教材。相关成果可以同时作为在校学生以及企业新进员工的培训教材。榜样的力量是无穷的,需求分析样例、系统设计样例、编程框架指南以及规范的源编码能够显著降低初学者的入门技术门槛。样例库覆盖面应逐步拓展,如可包括:MIS系统、嵌入式系统、游戏程序等。
3.3实践教学编排
在实践教学内容及顺序的编排上,我们建议根据初学者特点,参考企业软件过程活动的现实状况,总体上划分为前期准备、分析设计及编码测试3个阶段,如表1所示。
对市场新军或者初学者而言,进入一个陌生领域时,剖析市场上已有的竞争产品,是最快捷最常用的方法。另一方面,软件工程学理论讲授从开篇到进入需求分析也需要一段时日。
可行性分析与项目开发计划没有在实践环节中体现,主要是因为可行性分析是要求很高的工作,并不是初学者所能承担的,勉力而为的话,只能提交出似是而非的成果,而初学者在没有任何项目经验的情况下,制定出来的计划基本上是不可用的。因此,应使学生根据教学实践环节的总体安排,顺序推进各项工作。
我们建议软件工程课程设计只要完成前期准备、分析设计两阶段的工作;而将编码测试工作挪到与编程语言相对应的课程设计上,两段分别独立评分。这种强制性地将分析设计与编码测试分开的做法,可以强化先分析设计后动手写程序的观念,以利于学生软件工程素养的形成,避免目前普遍存在轻设计重编程,甚至先编程后补设计的错误做法。
3.4实践教学组织
在实践教学的组织方面我们面临着以下选择:人员分组还是不分组;每人一题还是每组一题。在教学资源紧张的情况下,人手一题显然不切实际,而且初学者如果相互间没有商量,基本上很难开展工作。每组一题却又担心出现“吃大锅饭,不干活”的现象。因此建议如下:
1)将学生划分为若干个小组;2)每个小组内部,借鉴极限编程的思想,两人结对一组,共同完成同一任务;3)选择一综合性较强的课题,各小组完成同样的课题;4)在实践教学每个阶段,大课题都拆分成较小的任务,分配给组内的固定结对搭档;5)小组长负责任务分派、组织讨论、工作协调以及成员考核;6)实验任务尽量在课前以开放实验的方式完成;7)课上主要组织开展交叉评审、成果汇报、专题讨论、实时讲评;8)课后根据课上讲评情况,修订完善后提交最终成果。
这种教学组织方式有如下优点:
1)每个人都有具体的任务,责任落实到人,避免吃大锅饭;2)固定结对搭档工作,可以相互商量、相互促进;3)小组每阶段任务完成质量取决于组内每个结对搭档的任务完成情况;4)有利于形成组内协作、组间竞争及相互学习、提高的氛围;5)各小组完成相同课题,便于组间学习和任务考核;6)加强课堂评审,在点评比较中学习,“享受”软件过程,提高任务完成质量;7)做精、做透一个题目,胜过似是而非;8)适当弥补指导教师数量不足的缺憾。
3.5实践教学考核
实践教学的考核采用组内、组间两级评审,全员参与,师生互动的方式。
组内评审:通常在课下由小组长组织开展。小组长综合各成员意见后,按照各人工作量、工作质量,给各成员排定对本次任务的贡献度顺序。组员如对结果有意见,可以申诉。
组间评审:课上由教师组织开展,以全员静态文档审查为主。各小组长汇集本组所有成员意见后,给出各小组本次任务完成质量的排序结果。根据时间许可,可请若干小组上台做工作汇报及答辩,由教师及其他组对其进行点评[6]。汇报人员将予以适当加分,人员的选择采用自愿与点名相结合的方式,要求汇报人员必须能对整个任务进行完整的汇报。
教师综合自身意见及各小组意见后,采用固定级差的方式,给出各组及各成员的考核结果,示例如表2所示。
每个学生组内评审、组间评审的意见都要归集,最后要予以评价并纳入成绩之中。所有任务完成情况以及各评审意见情况的加权和作为期末最终成绩。
上述考核体系向学生传达了两个讯息:一是个人的成绩与小组的名次息息相关,团队成绩上不去,个人努力被湮没,也许这种评分方法存在着不公平,但它何尝不是现实生活的写照;二是学而不思则罔,同行间学习是非常重要的进步渠道,鼓励在思考中学习提高,软件工程方法思想的掌握,需要经过反复的实践与思考;三是答辩情况影响小组各位成员的成绩,逼使所有成员都要努力投入。
4结语
软件工程教学到实践的鸿沟是大环境下的客观现实,是中国软件行业未尽成熟的表现,也是中国软件行业发展过程中迄待解决的问题。提升软件工程素养,促使开发者将软件工程方法作为一种自觉思维习惯付之实践行动,需要学校、企业以及从业人员的共同努力。软件工程学的课程建设任重道远,只有坚持“学以致用作为根本出发点”,推进课程体系建设,夯实课程平台,理顺关联课程衔接,加大师资培养,加强校企合作,突出实战训练、实战考核,激发学习兴趣,多头并举,才能培养出真正符合社会需求的实用软件人才。
参考文献:
[1] IEEE. IEEE Standard Glossary of Software Engineering Terminology[M]. IEEE Standard 610.12-1990,1990:67.
[2] Abran A, Moore J. SWEBOK: Guide to the Software Engineering Body of Knowledge [EB/OL]. [2010-05-16]. IEEE Computer Society Press,2004. /portal/web/swebok/html/ch1.
[3] 孙艳春,王立福,梅宏. 软件工程本科教学的探索与实践[J]. 计算机教育,2009(16):112-115.
[4] 高禹,李鑫. 软件工程课程设计中的几点思考[J]. 计算机教育,2009(21):163-164.
[5] 葛文庚.“软件工程”教学方法研究[J]. 计算机教育,2009(21):131-133.
[6] 范萍,王莉,胡祥云. 软件工程课程实验考核方法探索[J]. 实验技术与管理,2007,24(3):113-115.
Cross the Chasm Between Software Engineering Education and Practice
ZHANG Da-ping
(School of Mathematics and Computer Science, Fujian Normal University, Fuzhou350108, China)
关键词:软件工程,多元化教学方法,教学实践
软件工程是高等院校计算机专业的一门专业课,主要讲述了软件工程的基本原理、开发方法、开发工具以及软件项目管理。通过学习,使学生能够掌握软件项目从定义、开发到维护的一般过程,掌握指导软件开发的各种方法,能够利用工程化的原理、技术和方法进行软件项目的分析、设计、实现和维护,为今后从事实际的软件开发工作打下良好的基础。
1软件工程教学现状
20世纪80年代以来,国内各高校都陆续开设了软件工程课程,但在课程设置、教材内容、讲授重点、教学方法等方面都存在不少问题[1]。在实际教学过程中,软件工程教学效果并不令人满意,也很难达到软件工程教学目的和预期教学效果。
1.1课程内容设置及教学过程重理论轻实践
纵览国内各大高校,在软件工程课程的设置问题存在很大的差别,如开课学期、课时以及实践要求等方面,但普遍都存在理论课时过多、实践课时偏少的问题。在开课学期的确定上,有的院校没有考虑软件工程课程与其先修课的关系而平行开课;而有的院校则把软件工程课程和软件工程课程设计分在两个学期开设,严重影响了学生的学习效果。
1.2实践环节比较薄弱
主要表现在:1)缺乏相应的软件工程实验软硬件
环境。很多具体的实践内容无法开展,如系统建模和软件测试等环节;因为没有固定的软件工程实验室,各个小组成员的集体讨论机会少。2)小组内部的管理很难到位,即使每个小组都有一个组长,但要做到学生与学生之间的管理很难。3)小组成员对于实践的重视程度不同,如果协调不好就很难达到理想的合作状态。
1.3教学内容与实际脱节
就目前来讲,很多院校的软件工程课堂教学和实践内容仍然以传统的软件工程作为重点;而在实际应用中,面向对象的软件开发方法得到了更为广泛的应用,尤其是UML统一建模语言、RUP、CMM、SOA以及软件测试技术等新技术的应用。如果教师对教学内容不进行及时的调整和完善,学生所学知识将严重滞后于技术的发展。
2多元化教学方法实践探索
在软件工程的教学过程中,如果只是采用单一的教学方法,时间一长,学生很容易产生厌倦的情绪,影响了教学效果[2]。考虑到软件工程课程的理论性、实践性和工程性的特点,可以综合运用案例教学法、项目驱动式教学法和启发式教学法等多种教学方法,充分发挥各种教学方法的优势,以更好地提高教学质量。
2.1案例教学法
案例教学法是在教师的指导下,根据教学目的、教学内容的需要,通过对典型案例的剖析,引导学生分析问题和解决问题的一种启发式的教学方法。它是一种亲验性的教学方法,以学生为主体,让学生主动观察、分析和解决案例中存在的问题。与传统的灌输式教学法相比,案例教学法在于培养学生分析问题、解决问题的能力以及创造性思维能力。
在软件开发的各个阶段都可以借助案例说明如何开展各种活动。在案例的选取上要下功夫,尽可能地选取学生容易理解又能够涵盖教学内容的案例。不管是讲传统的软件开发方法还是面向对象的软件开发方法,选取的案例应该是一致的和连续的。通过学习,学生可以掌握某个系统从定义、开发到实现的整个过程。
在讲解结构化软件开发方法时,选取了学校正在使用的图书馆管理系统,分析该系统的数据需求和功能需求,然后采用面向数据流的设计方法设计体系结构。在讲解面向对象的软件开发方法时,选取学生熟悉的ATM自动取款机系统,根据需求分析确定系统的对象模型、功能模型和动态模型,然后进行类、对象、关联以及服务的设计。除此之外,在讲解开发模型的选择、白盒黑盒测试、用例建模等重要知识点时,也选取了相应的案例加以描述。在整个教学过程中,案例教学法起到了很大的作用,它使教师的讲授更加清晰,学生的理解更加深刻。
2.2项目驱动式教学法
项目教学法是指在老师的指导下,学生以个人或者小组的方式,完成信息的收集、方案的设计、项目实施以及最终评价。学习的重点在于学习过程而不是学习结果,学生在项目的完成过程中锻炼各种能力。教师在教学中已经不占主导地位,而是成为学生学习过程中的引导者、指导者和监督者。项目教学法最显著的特点是“以项目为主线、教师为主导、学生为主体”,改变了以往“教师讲,学生听”的被动的教学模式,创造了学生主动参与、自主协作、探索创新的新型教学模式。
任务驱动教学法是一种建立在建构主义学习理论基础上的教学法,它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,使学生处于积极的学习状态,每一位学生都能根据自己对当前问题的理解,运用共有的知识和自己特有的经验提出方案、解决问题。
在软件工程课程的实践教学中,可以采用项目驱动式教学方法,即综合项目教学法和任务驱动教学法两种教学法。在理论教学的同时及早安排学生的课程设计。学生可以自由划分成若干个小组,不同的小组可以选择不同的项目,可以选择教师推荐项目或自选项目,如:各种MIS系统、游戏软件、论坛、在线学习系统等;最终由教师根据学生情况和项目的难度最终确定课程设计题目。在课程设计初期由教师公布项目进度表以及任务划分。在实施过程中以“项目”为主线,按照软件开发的生命周期依次开展需求分析、概要设计、详细设计、编码、测试等活动;在各阶段任务的“驱动”和老师的引导下,学生通过模仿课堂教学中所讲的案例,逐步完成整个项目的开发、文档编写以及成果展示。在整个过程中,学生的学习活动是在项目开发的各个阶段及其相关活动的驱动下完成的。学生在做中学,在学中做,不仅能够更好地理解、掌握和运用知识,而且同时提高了自己主动学习能力、分析问题和解决问题的能力[3]。
2.3启发式教学法
在软件工程的课堂教学中,应该经常采用启发式教学方法,给学生独立思考的机会,尽可能地避免满堂灌。软件工程中的很多理论都可以采用启发式教学方法[4]。如:在讲授瀑布模型时,讲完瀑布模型的基本原理之后,不直接给出瀑布模型的优缺点,而把问题留给学生。在学生思考的过程中不断地给以引导,最终得出:瀑布模型是一种线性模型,各阶段具有严格的顺序性,使用简单;但对于实际的开发过程瀑布模型过于理想化,各个阶段很难一次完成,一般都有一个迭代的过程。接下来再引导学生思考瀑布模型适合什么类型的软件项目开发,最终完成瀑布模型的学习。
又如,在讲完编码开始学习软件测试时,可以先让学生思考“在之前的各个阶段都进行了严格的质量控制,为什么还需要进行软件测试?”这个问题,使学生在问题思考的过程中充分认识软件测试的必要性和重要性。在课程设计过程中同样可以采用启发式教学方法,针对学生的阶段成果提出一系列思考问题,如:需求分析是否全面?数据库设计是否合理?等等,让学生在老师的启发和引导下逐步完善自己的工作。在启发式教学过程中,老师需要针对学生的反应进行正确的引导,对学生的回答进行总结和完善。学生参与其中,可以很好地调动学生的学习积极性和主动性,加深对知识的理解和掌握。
综上所述,每种教学方法都有各自的特点和适用环境。在软件工程课程的理论教学和实践教学中应该综合运用上述各种方法以及其他教学方法,让学生充分地理解和掌握所学知识,从而更好地运用知识去解决实际问题。
3软件工程教学改革中应注意的几个问题
在本文第二节中已经对软件工程课程的教学现状进行了分析,总体来讲主要在课程设置、教材内容、讲授重点、教学方法等方面存在一定的问题,影响了教学效果。本人在多年的软件工程教学中,不断进行课程教学方法的改革,通过抓自身、抓学生、抓过程、抓实践等手段,灵活运用多种教学方法,提高了教学质量,取得了较好的教学效果。具体来讲,主要做好以下几个方面。
1) 准确把握课程教学内容。
在实际的教学中,可以通过综合多本教材尤其是国外的优秀软件工程教材,取长补短,及时调整教学内容,不断引入软件工程的新技术和新方法,在保证学生掌握核心思想的同时,不断拓宽他们的知识面,了解技术发展的前沿。
2) 积极调动学生的学习兴趣和主动性。
学生的学习兴趣和主动性在提高学习效果方面起到了很大的作用。可以在绪论课中结合考研和工作强调本门课程的重要性,激发学生的学习热情。课程内容的讲解可以结合学生熟悉的生活中的事情,如:讲到项目计划,可以结合学生制定的学习计划,其作用很相似,学生也比较容易理解。
3) 灵活运用多种教学方法。
如第三部分所述,在教学中应该结合各种教学方法的特点,充分发挥各种教学方法的优势,取得更好的教学效果。
4) 综合运用系统演示、多媒体、黑板等多种教学手段。
多媒体呈现的信息量大、丰富多彩、显示清晰,但对一些细节问题还需要借助于黑板,这样讲解会更加清楚。实际教学中应该综合运用多种教学手段,丰富课堂教学过程。
5) 理论教学与实践相结合。
软件工程课程的实践性特点决定了在教学中应该重视实践环节。通过实践,加深对理论知识的理解、掌握和运用。
6) 重视作业环节。
软件工程课程的理论性和实践性要求教师必须重视作业的安排,一些重要的概念和基本方法必须做练习,如:需求分析阶段的数据建模、功能建模和面向对象建模;面向数据流的软件结构设计;详细设计工具的使用;测试用例的设计等等。作业批改完毕,应及时安排习题课,对作业中普遍存在的问题加以分析和讲解,加深学生对知识的理解和掌握。
7) 课程考核多样化。
作为实践性课程,课程考核的重点不是理论考试成绩,而是学生能否在软件开发的过程中贯彻软件工程学的思想和方法。因此,应该加大实践考核(实验和课程设计)的比重;同时,在笔试题目中综合性和设计性题目应占主要部分。
8) 不断提高教师自身素质。
教师自身素质的高低在一定程度上影响着课程的教学效果。在日常教学中,教师应该阅读大量相关书籍,综合多种教材,取长补短,精心备课。可以通过申请进修或参加培训,提高自身的业务水平;参与课题研究或项目开发,提高自身的科研水平。知识丰富了,水平提高了,上课自然会游刃有余。
4软件工程教学效果及不足
经过近几年的教学改革和实践,本课程取得了较好的效果。从学生反馈的信息来看,普遍认为:课堂教学内容丰富,能够理论联系实际;通过典型案例将抽象的软件工程方法具体化、实例化,易于接受和理解,教学效果良好;实践教学通过项目开发的实训,体验了就业职位角色,明确了工作岗位的技术能力要求,为未来就业提供了一次项目演练的机会。通过本课程的学习,学生的学习主动性和实践动手能力有了很大的提高,在后续的毕业设计中很多同学都能够较好地运用软件工程的思想和方法完成系统的开发,尤其是工具的使用和文档编写都非常规范。
虽然教学改革取得了一定的成果,但在课程案例的选择和建设、软件工程实验平台的搭建、软件工程教材的编写等方面仍然需要进一步地改革和探讨。
5结语
软件工程课程具有较强的理论性、实践性和工程性。通过深入分析软件工程学科的当前发展趋势和现代软件工程人才的社会需求,积极探索和实践软件工程的课程教学。在教学内容方面,突出先进性、系统性和工程化;在教学方法方面,综合运用案例教学法、
项目驱动式教学法和启发式教学等多种教学方法;在教学实践方面,围绕课程的主要教学内容,选择合适的项目进行小组合作开发,取得了较好的教学效果。
计算机技术尤其是软件工程技术发展很快,所以软件工程课程也需要持续不断的教学改革。在今后的教学工作中,在保证教学内容的实用性和先进性的同时,通过校企合作、开发大型项目模拟环境等途径为学生创造更好的学习和实践环境;科研与教学相结合,以科研促教学,不断进行更为深入的教学改革,以更好地提高教学效果。
参考文献:
[1] 尹锋. “软件工程”课程教学改革初探[J]. 长沙大学学报,2004,18(5):77-80.
[2] 马林兵,王海仙. “GIS 软件工程”课程的多元教学法探讨[J]. 高教论坛,2008(5):17-19.
[3] 仁青诺布,格桑多吉. 项目驱动式教学方法在计算机课中实施过程研究[J]. 大学学报:自然科学版,2008,23(1):67-69.
[4] 孙艳春,王立福,梅宏. 软件工程本科教学的探索与实践[J]. 计算机教育,2009(16):113-115.
The Study and Practice of Teaching in Software Engineering Course
LI Xiu-fang, ZOU Hai-lin
(Department of Information Science & Engineering, Ludong University, Yantai 264025, China)