欢迎来到速发表网,咨询电话:400-838-9661

关于我们 登录/注册 购物车(0)

期刊 科普 SCI期刊 SCI发表 学术 出书

首页 > 优秀范文 > 软件工程专业课程

软件工程专业课程样例十一篇

时间:2022-02-13 01:48:15

软件工程专业课程

软件工程专业课程例1

软件工程专业的培养目标是面向我国软件产业培养急需的工程应用型人才。软件产业的发展要求学生具备较强的系统分析、设计、开发与维护能力[1]。为培养学生软件系统方面的相关能力,许多高校的软件工程专业都设置了系列课程模块,如程序设计课程模块、网络技术课程模块、计算机体系和操作系统课程模块、软件工程课程模块等,这些模块往往是一些单独课程的组合,有很多学生学了这门课程,又忘记了那门课程,到毕业时专业能力达不到社会所要求的层次。程序设计课程群是软件工程专业系列课程的重要组成部分,其承载的技能培养目标是专业培养的子目标[2],处于非常重要的地位。课程群建设是专业建设的一部分[3],有利于打通课程知识脉络,避免课程内容重复或前后脱节,使前后连贯,内容融合,进而获得整体优势[4]。程序设计课程群主要培养计算思维能力、算法设计与分析能力、程序设计与实现能力和系统分析开发能力[5]。学生通过程序设计课程群的学习,可掌握1~2门程序设计语言,更进一步理解程序设计方法,熟练掌握常用的数据结构和算法,形成良好的程序设计风格,可独立分析、设计和开发中小型软件系统。所以对程序设计课程群进行研究并积极实践对专业培养目标的实现具有重要现实意义。

1问题分析

目前,大多数高校信息类相关专业都开设了程序设计系列课程,一般为C语言程序设计、数据结构与算法、java程序设计等。许多高校都将C程序设计作为第一门程序设计课程[6],一般安排在第一学期或者第二学期,学完C语言之后,再学其他程序设计课程,如数据结构等。由于C语言本身比较灵活且语法内容比较多,对于初学者来说并不太好掌握。一些教师在授课过程中,没有站在软件设计的高度思考教学内容,往往过多地强调语言成分的语法和语义,而忽视了计算思维能力[7]的培养,使学生从开始就扎进程序设计语言的细枝末节中去,忽略了软件工程思想的渗透,到最后学生掌握了一些语法,却不能写出较为优美的程序或没有形成较好的程序设计思维和风格。算法是程序的灵魂,数据结构和算法在课程群中具有基础和核心地位[8]。在实际教学过程中,学生普遍反映数据结构和算法课程抽象难学,在学习和实际应用中出现的问题比较多,很难写出能正确运行的程序,学习过程中成就感不强,学完之后还是不知道如何应用,很难达到预期的效果。由于在前期的学习中,程序设计基础没有打牢,对常用的数据结构和算法没有真正掌握,模块化程序设计思维没有有效建立,良好的程序设计风格没有形成,导致后续的高级面向对象语言程序设计学习很难深入,最终导致软件分析与设计能力得不到有效的提升。

2程序设计课程群建设

我校软件工程专业采取校企合作办学模式,由吉首大学和中软国际共同建设,企业参与人才培养的全过程,在具体实施过程中,学校侧重于理论教学部分,企业侧重于实践教学部分[9]。程序设计课程群是软件工程专业课程体系的重要组成部分,企业参与讨论与建设,确定该课程群以软件设计能力培养为主线,以C语言程序设计、数据结构、面向对象技术、算法设计与分析几门课程为基础组建课程群,C语言程序设计开设在第一、二学期,数据结构、面向对象技术、算法设计与分析分别开设在第三、四、五学期,第六学期可开设JavaWeb程序设计或Asp.NetWeb程序设计,使课程群在能力构建和开设形式方面形成一个不间断的体系。

3程序设计课程群实施

3.1精讲课程主要内容,提高程序设计能力

课程组教师首先需要站在软件分析与设计的角度研究各门课程在课程群中的地位和作用,把课程群中的系列课程作为一个有机的整体,研究各门课程的主要教学内容,针对课程重点、难点、疑惑点进行精讲,做到理论与实践课并重,有效提高学生程序设计水平。在课程群系列课程中,由于第一门课程是后续系列课程的基础,所以学生必须掌握它。在C语言的教学中,要渗透软件分析与设计的思想,把握程序的主要框架,不纠缠于一些细枝末节的语法。函数是C语言教学中的重点,需要重点突破,从模块设计的角度来考虑函数设计,对于一个具体的函数,则要掌握函数的返回类型、参数类型以及参数个数。如用函数处理一个数组时,需要传递数组的首地址和数组的规模,首地址用指针表示,数组的规模则有两种表示方法,一是数组的长度,二是数组的起始下标和结束下标,这两种方式可能会分别应用到不同的地方,如果教师一直不提示第二种方法,则将来学生在写数组做参数的递归程序时可能会遇到困难。从多年的教学实践来看,如果学生真正掌握了函数设计方法,再加上必要的算法知识,一般情况下,程序设计就会变得得心应手而且十分有趣;对于数据结构课程,采取以数据存储(内存)为主线的方法,将重点放在数据的存储和相关算法方面,在算法实现时渗透模块化的思想,需注意头文件和实现文件的定义,因为数据结构内容具有很强的连贯性且程序的初始化工作较多,如链表的具体应用则先要建立链表、树的遍历和节点的查找等则先要建立树、图的遍历和最短路径及关键路径等则先要建立图,在实验过程中有意识地把一些基础工作放入头文件,则会极大地提高实验的效率;在面向对象技术教学中,以面向对象程序设计的方法为核心,以语言中的面向对象机制为主要内容,在适当的时候引入《ThinkinginC++》、《EffectiveC++》、《ThinkinginJa-va》等优秀书籍中的一些思想和经验,要注重面向对象程序设计过程中大的程序框架的合理性以及具体处理算法的正确性;在讲授算法设计与分析的时候,应集中精力将主要算法讲透,直到学生学懂为止,在实现算法时,应充分运用面向对象设计的思想,将算法封装在类中;在web程序设计教学中,采用案例驱动的方式,精讲软件项目设计中的主要方法和主要问题,培养学生工程化设计思想。精讲的目的是让学生多练,精讲之后要布置任务并为学生提供练习环境和相关指导,必须充分发挥教师主导和学生主体作用,教师要认真检查学生的作业、实验和练习情况,及时纠正问题,引导学生运用软件工程的思想设计程序,培养学生良好的程序设计思维和程序设计风格,激发学生自觉学习和实现相关算法,最终提高程序设计能力。

3.2大规模开展程序设计训练,培养程序设计能力

为培养学生算法设计与分析能力,学院在晚上和周末开放了实验室,在实验室搭建了ACM在线测评系统(ACMOnlineJudgeSystem),并接入了校园网,结合C程序设计、数据结构与算法等课程部署了大量习题。学院利用课余时间,有计划组织学生进入实验室进行编程训练,并为每次训练配备了指导教师。平时,学生也可以在寝室登录平台进行训练。教师在讲授C程序设计等课程的时候,要求学生利用课余时间在ACM平台上完成至少上百道题的训练,并将完成情况计入课程的平时成绩。通过大规模开展在线程序设计训练,学生的程序设计能力有了明显的提高。

3.3开展课程设计训练,培养工程化设计思想

在课程群中除开设理论课程对应的实验项目之外,还针对整门课程开设了综合性课程设计项目,如C语言课程设计、面向对象技术课程设计、javaweb课程设计,单个课程设计周期为1-4周。学院课程设计项目主要由企业教师指导完成,该类项目采用分组形式,在组内模拟软件企业运行模式设置相关岗位角色,学生在仿真企业环境中,利用仿真的软件开发项目,进行轮岗和角色体验,培养学生的软件工程应用能力、软件项目开发与测试能力、职业素质等,从而使学生熟悉软件项目开发流程和规范,养成良好的软件开发习惯。课程设计结束时,要求学生演示并讲解自己的项目开发情况,由学院教师和企业教师组成评定小组进行评分。

3.4改革考核与评价方式,理论与实践、平时与期末相结合

理论与实践相结合。程序设计课程群内的课程都是实践性很强的课程,其目的是运用所学的知识解决实际问题,决定了课程的期末考核要综合考虑理论和实践两部分内容。理论部分主要考查学生对基本概念的理解和对基本知识的掌握情况,实践部分侧重考查学生的综合应用能力,这两部分成绩都在期末完成,占课程总成绩的60%左右。平时与期末相结合。期末考核重在体现学习的结果,平时成绩则侧重于体现学习过程,在课程总成绩中,平时成绩占40%左右,即一门课程约有40分来自平时的学习过程。平时成绩一般由出勤、作业和平时实验情况、课程设计情况组成。在学期开始第一堂课的时候将课程评分方式告知每一个学生,必须抓紧平时的学习,若平时分小于20分,则取消课程考试资格或直接将课程总成绩记为不及格。

4结语

程序设计课程群对培养学生计算思维能力、算法设计与分析能力、系统分析与设计能力具有重要作用。本文分析了学生在课程群学习中遇到的一些问题,从软件分析与设计的角度对课程群进行建设与改革,提出了以C语言程序设计、数据结构、面向对象技术、算法设计与分析等几门课程为基础组建程序设计课程群,给出了课程群的主要知识与能力体系要求,通过精讲课程主要内容、大规模有组织地开展程序设计训练、企业教师指导课程设计、改革考核与评价方式等方法进行教学改革,学生的程序设计能力得了到较大的提高。

参考文献

[1]韦迎春,文俊浩,陈蜀宇.以能力培养为核心构建示范性软件学院实践教学体系[J].中国高等教育,2011(2):49-50.

[2]乔付,王国权,张凤武.CDIO理念下计算机程序设计课程群建设探索[J].内蒙古师范大学学报,2011,24(11):39-41.

[3]孙雷,王新.计算机专业程序设计课程群的研究与实践[J].教育教学论坛,2013(11):222-224.

[4]翁伟,吴克寿,吴芸,等.程序设计课程群建设探索与实践[J].计算机教育,2009(23):123-125.

[5]王海舜,蒋巍巍.基于程序设计能力培养的软件设计类课程群架构[J].计算机教育,2012(2):23-26.

[6]万臣,谢芳,胡泉.计算机专业程序设计课程群的建设与研究[J].合肥工业大学学报:社会科学版,2009,23(1):33-36.

软件工程专业课程例2

作者简介:刘玮(1973-),女,湖北武汉人,武汉工程大学计算机科学与工程学院,讲师;何成万(1967-),男,湖北荆州人,武汉工程大学计算机科学与工程学院,教授。(湖北武汉430073)

基金项目:本文系2010年湖北省高等学校省级教学研究项目(项目编号:2010243)的研究成果。

中图分类号:G642.0     文献标识码:A     文章编号:1007-0079(2012)17-0059-02

推进和加强跨学科复合人才培养,既是科技、经济与社会发展的迫切需要,也是世界各国高等教育界的共识。培养特色型复合人才是高等院校在激烈的市场竞争中求生存、促发展的必然选择。近年来,各大高校开始探索以优势学科为依托,根据就业市场的供求关系调整办学思路与培养途径,致力于构建优势学科的双专业人才培养模式。[1]软件工程专业具有构建双专业培养模式的基础,目前可分为两类模式:第一类,软件工程专业与同属于工科的其他应用领域(如机械工程及自动化、环境工程等)相结合,使用计算机科学技术和具体领域技术解决相关领域问题,毕业生适宜该环境领域或其他部门从事软件开发、研制和管理工作。例如,大连交通大学开设的信息管理与信息系统+软件工程双专业同属于工科的双专业类型。[2]第二类,软件工程专业与外语专业(如日语、英语)相结合以满足软件服务外包或地域性软件产业的需要。武汉工程大学“E+”部级人才培养模式创新实验区(以下简称实验区)提出的“E+”模式既可以通过外语教学的通识教育作用提高学生的人文素养,又可以使学生避免当前纯语言类人才的需求下降而面临就业难的困境,更能满足其他行业对毕业生外语水平的高端需求。实验区开设的英语+软件工程双专业属于第二类的软件工程双专业培养模式。

根据《计算机科学与技术本科专业规范(软件工程方向)》,“软件体系结构”是软件工程方向专业重要的专业核心课程之一。从2010年起,武汉工程大学将“软件体系结构”课程作为学校重点课程由计算机科学与工程学院进行建设,目前处于专业课程建设的起步阶段。为满足软件工程双专业建设的要求,“软件体系结构”课程的开设和建设需要做哪些调整呢?本文在总结软件工程双专业对“软件体系结构”课程的具体要求的基础上,结合武汉工程大学的实际教学情况,对该课程的内容剪裁和教法改进提出了一些建议。

一、软件工程双专业“软件体系结构”课程设置

武汉工程大学实验区于2011年开设英语+软件工程双专业,由外语学院和计算机科学与工程学院共同实施培养,力量和教学资源由有关学院共同实施培养(学生日常管理由外语学院负责),毕业时学生将获得两个学士学位。

“软件体系结构”课程的特点是由软件工程双专业的培养对象和培养目的决定的。以武汉工程大学的英语+软件工程双专业为例,其培养对象是在当年入校的普通本科新生(限理科考生)中经过严格选拔筛选而出的,要求英语基础较好并具有较高的个人综合素质。软件工程双专业和传统的软件工程专业的培养目标都强调了培养“从事计算机软件项目的设计、开发、管理的国际化软件工程技术人才”。“软件体系结构”课程对于培养软件构架方面的高端人才起着至关重要的作用,全国各大高校特别是软件学院的软件工程专业基本上均将该门课程列为专业主干课,该课程是软件工程双专业的主要课程之一。

“软件体系结构”课程与其他专业课之间紧密联系,学习该课程前要求学生具备相应面向对象程序设计语言,要求掌握UML基础知识,因此多数院校在三年级下学期开设该门课程。该课程不仅强调专业理论知识的学习,更看重实际工作技能和动手能力的培养,强调实验课和课程实训。另外受到软件工程双专业课程增加、总学时有限的影响,在实际安排中,课堂教学32学时,实践、实训环节共28学时。这一方面保证了充足的理论课时时间,另一方面通过实验和实训两个环节保证了教学实践时间,四所大学“软件体系结构”课程的课时情况。

二、“软件体系结构”教学内容裁减与扩展

软件工程双专业的教学目标是培养学生为应用型人才,软件应用型人才需要软件系统工程化有关的理论,用这些理论指导软件设计、分析软件开发过程中遇到的实际问题。结合教学和培养方案制定过程中的一些经验,对“软件体系结构”课程的教学内容的裁剪和扩展进行了一些思考和总结。

1.削枝强干

软件设计思想是“软件体系结构”课程的主线,通过本课程的学习,学生能够全面、深入理解在软件开发阶段设计软件体系结构的必要性,并能够运用其中的思想分析、解决软件系统设计相关的问题。该课程教学内容裁剪的目的是突出重点和强调实践。一方面,把较多的学时放在基于体系结构的软件开发(ABSD)、软件体系结构设计及其环境等章节,重点讲解基于体系结构的设计方法,以及ABSD的基本步骤和基于体系结构的软件开发模型。另一方面,裁剪理论性较强而且对设计和实践作用不大的教学内容,例如软件体系结构风格、典型软件体系结构描述语言及形式化描述等。一些软件工程专业软件体系结构课程的教学大纲中还包括基于UML的软件体系结构描述等内容,为避免重复,这部分内容可以在UML建模技术及应用或者面向对象建模技术等内容中详细讲解。

2.扩展热点

为了满足英语+软件工程双专业“具有国际学术视野”的要求,“软件体系结构”课程教学内容需要在设计模式、大型软件构架技术和软件体协结构新技术等方面作进一步扩展。设计模式是近几年软件设计研究领域的热点,在介绍23种设计模式的基础上,将构件设计、构件和系统的接口设计等知识添加进来,以丰富详细设计阶段涉及的内容。[3]另外,缺乏对大规模软件构架建模和开发技术,是软件工程学生难以应用软件体系结构知识进行大型软件构架设计的主要原因,因此在教学内容上应该扩展中间件技术、大规模软件构架中的集成技术等。适当介绍新技术背景下的软件体系结构,针对云计算和物联网等新型应用及技术发展趋势,结合目前该领域的主要应用模式,技术标准,开源系统,以及典型架构等,进行课堂交流和研讨。以上教学内容的扩展一方面会使课程体系更为完善、更能适应当前计算机技术的发展,另一方面可以培养出具有先进设计思想和能力的学生,满足用人单位较高层次的需求。

三、软件体系结构的教学方法的改革

通过对软件工程专业2006至2009四届学生的成绩分析和问卷调查发现,该课程教学效果不佳,主要表现在课程内容抽象、缺乏软件项目经验、教材缺乏案例等问题。软件工程双专业的“软件体系结构”课程具有学时短、重实践的特点,为了适应课程特点需要在教学方法上从以下两方面进行改革。

1.项目案例教学

从理论上讲,项目教学法是一种几乎能够满足行为导向教学所有要求的教学培训方法,[4]因此从其诞生之日起,就受到教育和培训界人士的欢迎。项目教学法是教师将授课内容寓于项目中,辅助和引导学生实施和完成项目,学生在项目实施过程中自主学习,学生完成这一项目,教师也完成了教学内容。

项目教学法应用于“软件体系结构”课程具有以下优点。

(1)项目教学法能极大地调动学生的积极性。该课程内容抽象,缺乏软件开发经验的学生忽视了软件设计的重要性,误认为不用软件体系结构也能开发软件,这就导致学习兴趣不浓。项目教学法是让学生实施一个具体的项目(如学生选课软件系统)的设计,学生学习的目的较明确。在项目设计和实施过程中,学生体会到软件体系结构的设计能够降低系统开发风险并提高开发效率,这更能强化学生的学习积极性。

(2)项目教学法能培养学生的合作能力。项目教学大多要分小组完成,通过小组内及小组间的充分交流、讨论、决策等,提高学生合作能力,强化学生的团队意识,这也符合培养具有团队协作能力的要求。

(3)项目教学法能促进课程间的整合。项目的设计过程中会涉及很多专业知识,例如需求分析、数据库系统、面向对象建模等。这种基于项目教学的课程整合能够强化学生软件系统工程化开发的思想和技能。

2.参考教材+补充讲义的模式

软件体系结构课程增加了设计模式和大型软件构架技术等教学内容,结合英语+软件工程双专业学生英语能力较强的特点,采用规划教材为主、校内补充讲义为辅的模式。本课程使用的教材为Mary Shaw所著的《软件体系结构》(世界著名计算机教材精选)和耿祥义所著的《Java设计模式》(21世纪高等学校计算机专业实用规划教材)。根据教学内容我校选择了《软件构架实践》的第1、2、6章和《Java设计模式》的第1、4~26章,同时参照郭秋萍所著的《大规模系统构架建模及其开发技术》中与构件技术相关的章节内容撰写补充讲义。另外在课程网站上还增加了Luke Hohmann所著的《Beyond Software Architecture:Creating and Sustaining Winning Solutions》和Felix Bachmann所著《Documenting Software Architectures:Views and Beyond》的电子书,用以完善本课程的教材库,为学生提供一个课外在线学习和远程教育的平台,方便学生课外自主学习。

四、小结

武汉工程大学“E+”部级人才培养模式创新实验区下设的“英语+软件工程”四年制双专业人才培养模式是软件工程双专业的一种典型模式,具有一定的代表性和创新性。本文根据软件工程双专业人才培养和IT企业和相关事业单位的需求探讨作为软件工程专业主干课之一的“软件体系结构”课程的教学改革,在作为校级重点建设课程的建设过程中,提出了一些内容剪裁和教法改进,希望籍此对双专业课程教学的共性问题抛砖引玉。

参考文献:

[1]蒋洁.构建一体化双专业人才培养模式[J].理论月刊,2010,(11).

软件工程专业课程例3

一、新工科背景下软件工程专业发展

随着云计算、物联网、人工智能、大数据等新兴技术的飞速发展,社会生活、经济和产业结构发生重大变革,从而对高等教育人才培养提出了新的需求。据统计,我国92%的高等学校设置了工科专业。为推动高等教育工科专业教育改革创新,2017年2月18日,教育部组织高等院校召开研讨会,提出了工程人才培养的“新工科”教育理念,达成“复旦共识”。“新工科”主要包括两层含义:在新的传统工科专业中增加没有的新专业;在原有的工科专业中革新教育理念、标准、模式;等等。在此背景下,我国各高等院校积极进行工科专业改革,培养工程实践能力强、创新能力强的高素质复合型“新工科”人才。软件工程是信息时代的核心技术,对各工科专业的发展起到促进作用。在“新工科”背景下,软件工程学科要注重与其他工科专业的交叉融合,从而使传统工科智能化、信息化。因此,在此背景下,该专业需要培养科学基础厚、工程能力强、具有多学科整合能力的复合型软件工程人才。

二、软件工程课程体系建设存在的问题

课程体系建设是培养新型工程技术人才的关键环节,但传统软件工程课程体系建设存在以下问题。(1)课程体系设计不合理:没有做到以学生为中心,软件工程课程的设置缺少培养学生某项能力的课程目标导向,没有建立能力达成与课程体系之间的对应关系[1]。(2)课程体系建设与产业对接不够:信息技术发展迅速,软件工程部分课程设置不能满足企业技术使用的需要,课程内容更新慢,导致毕业生到相关企业必须重新学习新的技术。(3)课程体系建设专业内容局限性:软件工程课程内容设计虽然遵循软件工程逻辑,但没有注重学科的交叉融合,存在课程内容过窄过细的弊端。

三、软件工程课程体系建立的制度和程序

课程体系是专业培养方案的重要内容,按照《哈尔滨理工大学人才培养方案修订与动态调整制度》《哈尔滨理工大学关于修订2010版本科人才培养方案的指导意见》(索引),在收集汇总与人才培养有关信息的基础上,本专业开始修订2015版培养方案的课程体系。修订过程采用动态评价修订方式,课程体系的架构要求以学生为中心,基于OBE理念,根据毕业要求反向设计;能力方面要求既重视学生专业能力培养,又要重视非专业能力培养,要将解决复杂工程问题作为大背景,重视工程实践能力和创新能力的培养;课程体系修订过程不仅要求专业教师参与讨论,同时还要有企业行业专家的参与。2015版培养方案课程体系的修订过程如图1所示。专业课程体系修订过程中,与产业界对接,邀请了东软集团睿道黑龙江分公司、哈尔滨圣邦微电子公司、哈尔滨工业大学、哈尔滨工程大学等多家企(事)业单位及各高校专家对课程体系设置进行评估,各位专家结合当今社会软件工程产业的发展需求,对开设的课程、课程的教学内容、课程目标及教学执行计划提出了宝贵的意见。针对提出的问题,本专业各课程组教师进一步修改完善相关内容,最终形成新版课程体系。本专业根据《哈尔滨理工大学人才培养方案修订与动态调整制度》的规定,每4年对人才培养方案进行一次修订,课程大纲的修订周期与培养方案修订周期一致。一旦形成了培养方案并重构了课程体系,按照《哈尔滨理工大学教学大纲编制规范及要求》,制定新版课程教学大纲。本专业形成了课程内容动态调整机制,根据软件技术发展、行业需求等,对教学内容进行动态调整,从而修订课程教学大纲。新制定或修订的课程大纲由学院教学指导委员会审查,通过后提交教务处备案。本专业课程大纲包括中英文课程基本描述、教学目标、课程目标与毕业要求的对应关系、课程的主要特点、教学方法、知识点与学时分配、案例设计、讲授提示及方法、作业设计、实验设计、考核与成绩评定、课程考核对课程目标的支撑等内容。课程大纲的内容充分体现了对学生能力的培养途径及达到的预期目标,其严格执行可满足课程目标对毕业要求指标点的支撑。

四、建立基于能力培养的软件工程课程体系

(一)建立理论与实际结合的教学计划

本专业课程体系主要包括通识课、专业核心课、专业选修课和实践教学四大类。课程体系执行过程中注重理论联系实际,实践性教学环节贯穿教学的全过程,使学生把本专业理论与解决软件工程实践问题紧密结合。通识课使学生掌握工程设计的共性知识;专业核心课使学生掌握软件工程领域的理论知识和基本方法;专业选修课和实践教学涵盖了软件工程领域的主要知识和技术,培养学生在某一专业方向或应用领域上从事工程实践的能力。

(二)建立课程体系对学生毕业要求的支撑

本专业以毕业要求对知识能力的要求构建课程体系,每门课程都要对毕业要求有明确的支撑。对每门课程确定课程目标、选择课程内容,明确各门课程的目标对毕业要求指标点的支撑关系。本专业重点课程包括“离散数学”“数据结构”“数据库系统”“操作系统”“计算机网络”“编译原理”“软件创新设计”“系统分析与设计”“软件体系结构”“软件质量保证与测试技术”“软件项目管理”和两类实践课程:“课程设计”和“毕业设计”13门重点课程,这些课程支撑了12个毕业要求中的26个指标点,反映了这些重点课程对本专业所需工程知识和能力有较强支撑,也体现了重点课程对毕业要求达成的重要作用。重点课程中的“离散数学”“数据结构”“数据库系统”“操作系统”“计算机网络”“编译原理”属于基础课,这几门课程涵盖了软件工程学科中的数理逻辑、算法分析、语言的形式化表示方法等内容。这些课程教学培养了学生抽象思维和逻辑思维的能力;对复杂软件系统的数据结构和算法流程进行设计的能力;对复杂软件的系统架构和功能结构进行设计的能力,能够使学生运用软件基础知识进行系统的分析和设计。重点课程中的“系统分析与设计”“软件体系结构”“软件质量保证与测试技术”“软件项目管理”属于专业平台课,这几门课程的内容包含了软件过程的基本原理和开发阶段、软件体系结构的设计与实现技术、软件质量评估体系、白盒测试、黑盒测试等具体测试技术,以及软件过程管理、软件配置管理、项目风险管理等内容。课程的学习,使学生运用系统的观点、方法和理论,对软件开发的全过程进行计划、组织、控制和实施,从而培养学生运用软件工程的知识解决实际项目问题的能力。重点课程中的“课程设计”和“毕业设计”是重要的实践性教学环节,通过课程设计和最后的毕业设计的训练,使学生能够综合运用所学的专业理论知识和技术,进行软件系统的分析和设计,即培养学生具备软件工程所需的技术和技能,进一步提升信息获取和职业发展需要的自我更新知识能力,最终使学生具备解决复杂软件工程问题的能力。

(三)加强实践性教学环节

软件工程专业课程例4

0引言

大数据作为继云计算、物联网之后IT行业又一颠覆性的技术,备受人们的关注,大数据技术正从概念转向实际的应用,涌现出越来越多的大数据技术应用成功案例,大数据的价值也在迅速增长。2015年,中国大数据市场规模达到115.9亿元人民币,增速达38%,预计2016~2018年中国大数据市场规模将维持40%左右的高速增长[1]。大数据时代的到来,使得软件行业对人才的应用能力和综合素质提出了更高的要求。咸阳师范学院作为咸阳市地方应用型高校以服务咸阳地区经济社会发展为己任,肩负着培养满足咸阳地方社会需求软件人才的使命,需要把培养面向大数据时代的软件工程专业人才作为战略任务来抓。而课程体系的建设是软件工程专业人才培养体系最重要的一个方面。本文通过分析我院传统软件工程专业课程体系,以及大数据时代下企业对软件工程专业人才要求,找出大数据时代下软件工程专业应用型人才中课程体系存在的问题,探索出我院面向大数据环境的应用型软件工程人才中课程体系的建设。

1我院软件工程专业传统的课程体系

自我院计算机系成立以来,软件工程专业一直是我院重点建设专业。2013年,“‘3+1’校企合作软件人才培养模式创新实验区”被确定为省级人才培养模式创新实验区。一直以来,该专业以培养“厚基础、强能力、高素质”应用型人才的为培养目标,以企业、市场需求为导向,重视实践、技能和应用能力的培养,与尚观科技、中软国际、华清远见、蓝鸥科技等西安多家企业联合,采取3+1嵌入式校企联合教育培养模式,将课程教学、工程实践、行业理念进行无缝结合。课程体系是一个专业所设置的课程相互间的分工与配合[2],主要反映在基础课与专业课,理论课与实践课,必修课与选修课之间的比例关系上[3]。地方应用型本科院校的课程体系设计既要体现基础知识的传授,也要体现实践能力的培养,同时还要考虑学生的职业能力规划发展问题。我院2013-2015级软件工程专业课程体系结构图如图1所示。图12013-2015级软件工程专业课程体系结构图从图1可以看出通识教育必修课程的教学阶段共3个半学年,主要涉及思想政治基础知识、体育、人文历史、外语应用能力等;相关学科基础类课程主要包括高数、线性代数、数字逻辑等数学类课程;本学科基础类课程主要涉及程序设计语言、计算机网络、操作系统、数据结构、计算机组成原理等;专业技能教学阶段强调对学生工程性、实用性、技术性和复合型能力的培养,主要安排专业必修课程和专业选修课程。专业必修课程包括面向对象程序设计、软件工程、数据库原理与应用、软件设计与体系结构、算法分析与设计等,专业选修课程包括Web软件开发、Linux系统应用程序开发、移动终端开发等。根据教育部专业教学指导委员会软件工程行业规范[4],本着“轻理论,重实践”的原则,我院在一定程度上压缩理论课课时,增加实践课课时,优化专业课程体系结构。我院2015级软件工程专业的人才培养计划中,各类课程学分设置与所占比例。

2大数据时代企业对软件工程专业人才的要求

大数据时代所需要的人才是一定拥有数据处理、分析技术的,也就是对数据有敏锐的直觉和本质的认知、能够运用统计分析、机器学习、分布式处理等技术,从海量、复杂的数据中挖掘出有用的信息,以清晰易懂的形式传达给决策者,并创造出丰富有价值的专业人士[5]。在大数据时代下,对软件专业人才培养,应具备以下四个方面的技能。(1)具有厚实的数学、统计和计算机学科的相关知识,能够根据具体案例大数据分析任务的要求,运用大数据处理、分析平台,收集整理海量数据并加以分析,挖掘出有价值的信息。(2)掌握大数据处理技术及可视化工具,能根据具体任务的需求,对数据进行选择、转换、加工等处理操作,采用有效方法和模型对数据进行分析并形成数据分析报告,用易于用户理解的方式,提供科学的决策依据。(3)熟悉行业知识、专门业务及流程,将大数据技术和企业文化相结合,充分利用大数据分析处理的结果,挖掘出海量数据中隐藏的价值并应用于企业市场领域。(4)团队合作精神,大量数据的收集整理、存储、分析和处理,一个人是很难完成的,需要一个由团队成员合理分工、共同协作完成。

3大数据时代我院软件工程专业传统的课程体系存在的问题

地方高校一直以来受传统的“学术型”、“研究型”人才培养模式的影响较大,形成了适合于“精英教育”为培养研究型人才的课程体系,无法适应以工程实践能力、创新创业意识、新技术新方向为目标的人才培养,课程体系中理论教学占主导地位,实践教学往往处于次要地位[6]。而目前处于大数据时代,信息技术的不断创新、企业需求不断变化、综合型人才需求巨大等因素的影响下,传统的培养研究型人才的课程体系,无法适应大数据时代以工程实践能力、创新创业意识、新技术新方向为目标的人才培养。通过了解大数据环境企业对软件工程人才的要求,分析我院2013-2015级软件工程专业人才培养课程体系结构,发现存在以下问题:(1)缺少大数据技术方面的课程。传统的课程体系中主要包括软件工程专业一些传统的课程,如数据结构、软件工程、软件体系结构等,而且课程内容较陈旧,所开设的一些应用软件的学习不能紧密贴合行业和技术发展,软件工程专业教育必须适应互联网时展和大数据技术的需求,关注企业发展及大数据系统的建设问题,以满足企业对应用型人才的需要。(2)实践类课程学时所占比例较少。我院2015级软件工程专业实践类课程占总学时的10.8%,是因为传统的课程体系注重知识传授,而忽略了学生解决问题、动手能力的提高。地方高校在人才培养中重视理论内容、计算机编程能力,而忽略学生探索能力的培养,这些都不利于学生对新技术、新方向发展的把握,学生难以应对各种层出不穷、错综复杂的海量数据,很难挖掘出隐藏的数据价值并有效利用。(3)课程体系结构设置方面,一是存在通识教育类课程教学阶段持续时间长,一直到第7个学期,这就影响了后面专业类课程的学习;二是专业基础类分为专业必修和选修,没有从课程教学阶段不同来划分,不能体现课程先后的衔接关系。

4大数据时代我院软件工程专业课程体系建设改革

在大数据时代,软件工程专业教育必须适应企业发展和大数据行业的需求。教学内容的设置应与行业需求接轨,根据我院学生特点调整2016级软件工程专业课程体系。具体做了以下几点的调整。(1)课程体系结构更合理。一是通识教育类课程的调整。一方面将教学阶段全部调整到第1、2学年完成,这样在第3学年学生就可以重点学习专业类技能课程;另一方面此部分增加了大学生心理健康和创新创业教育课程,主要可以加强学生团队合作精神的培养。二是专业类课程结构的调整。将专业类课程分为专业(学科)基础课程和专业技能课程两大类,专业(学科)基础课程主要包括数学类课程、计算机导论、程序设计语言、数据结构、操作系统、软件工程、运筹学、数据分析与处理。专业技能课程又分为专业核心课程和专业方向课,专业核心课程包括面向对象程序语言类、软件设计模式、算法分析与设计、软件测试等软件工程专业要求的核心课程,而专业方向课分为3个方向:大数据分析、Web技术应用、移动终端开发,鼓励学生在学好专业基础和核心课程的同时,发现自己专业类的兴趣,选择一个自己感兴趣的方向集中学习,大数据分析方向是重点向学生推荐。在教学阶段安排上,一般专业(学科)基础课程要优先于专业技能课程,这样可以让学生在掌握了学科、专业基础上,充分了解软件工程专业技能的训练。(2)增加了大数据技术方面的课程。在新调整的课程体系中,专业(学科)基础课程和专业技能课程都增加了大数据相关内容。基础课设置增添运筹学、数据分析与处理等,使学生了解大数据行业基础知识,激发学生对大数据行业发展及大数据应用前景的兴趣;专业技能课设置了数据仓库与数据挖掘、大数据统计分析与应用、数据挖掘算法与应用等前沿科学技术相关课程以满足大数据系统建设与应用的需要,培养更多企业需要的大数据管理分析软件专业人才。院级选修课鼓励研究大数据方向的教师积极申请大数据案例分析、大数据安全与隐私保护、HadoopMap/Reduce技术原理与应用等实用性强的课程,以补充对大数据方向特别感兴趣学生的学习内容。(3)增加实践类课程所占比例。相比较2015级,以培养地方应用型人才为总目标,实践类课程课时由19课时增加到28课时,所占总课时比例提高了约50%。实践类课程包括校内(课程设计和实训)和校外(见习、实习、实训、毕业论文),种类多样化,使得学生多方面提升自己解决问题和动手操作能力。针对校内实验我院教师结合大数据教学实验平台,根据课程内容设计实验项目,从初级到高级,安排合理的阶梯式学习,实验内容持续更新,加入最新、主流的分析建模工具和挖掘算法,学生在免费、开放的平台环境下进行大数据构建、存储、分析统计等实验内容,使学生熟练掌握Ha-doop、HBase、Spark等关键技术,提高大数据理论分析及技术应用的能力。做好校内实践的同时,校外实践更是尤为重要,首先在实习、实训企业的选择上,尽量选择“口碑好、技术强、理念先进”的单位,目前我院已与邻近城市西安与尚观科技、中软国际、华清远见、蓝鸥科技等西安多家企业联合,第四学年分批组织学生到合作企业的实训基地参加真实的实训项目,体验IT企业真实的工作环境、工作流程和企业文化,了解互联网大数据、零售大数据、金融大数据等领域知识,学习海量数据搜集、分析、存储技术,引导学生按照项目的需求、总体设计、详细设计、编码、测试等流程完成实践内容,规范化文档和代码的编写,培养学生的行业、职业素养。

5应用效果

目前应用此方案有2016和2017级两级学生,虽然这两级学生都还没有就业,但在创新应用能力方面都较2015级之前学生有显著提升。近两年有10余组学生团队获得部级、省级、校级“大学生科研训练项目”立项资助,有8名同学获得“蓝桥杯”程序设计大赛部级二等奖、三等奖,省级一等奖2项,二等奖、三等奖多项。2016年有两队学生获得陕西省高校“互联网+”创新创业大赛三等奖,一队学生获得咸阳市青年创业大赛二等奖。数十名学生在核心期刊上公开发表学术论文。从目前取得的成绩来看,课程体系结构的调整,使得学生不仅获得扎实的理论知识,而且具备了过硬的实践和创新能力,我院软件工程专业毕业生一定会深受用人单位喜欢。

6总结

针对大数据时代下地方本科院校软件专业人才培养中课程体系存在的一些问题,笔者分析了大数据环境对软件工程专业人才的要求,以地方本科院校咸阳师范学院为例,改革调整了课程体系,主要在在理论教学和实践教学中增加大数据相关理论及技术内容,通过近年来的探索与实践,此课程体系结构有效提高了学生的创新应用能力,为大数据时代企业发展培养了高水平、高素质的大数据分析人才,新的课程体系适应了大数据环境下软件工程人才的培养。

参考文献

[1]孙琳.大数据应用的创新路径[N].人民政协报,2016-05-17.

[2]潘正高.地方应用型高校软件工程专业课程体系的研究[J].西昌学院学报,2017,31(3):94-97.

[3]潘怡.应用型本科院校软件工程专业课程体系设置探讨[J].长沙大学学报,2008,22(5):98-100.

软件工程专业课程例5

引 言

 

随着软件在各种领域迅速发展,软件的类型、规模、复杂度都急剧增长,在有限的时间和成本约束下开发出高质量的软件被人们高度关注,冈此提高各类信息化系统开发人员的软件工程能力越来越受到普通和军队高等院校的普遍重视。然而,由于软件从业人员所需知识更新快以及大量软件开发人员接受软件工程教育的经历不足,仅靠传统的高校课堂内授课方式,难以满足社会和军队信息化快速发展对软件工程人员的需求。研究如何通过建设软件工程专业在线课程加快软件工程人才的培养、优化软件工程课程资源的配置,对于我们国家和军队未来的发展具有重要价值与深远意义。

 

1 软件工程教育的发展与主要问题

 

软件工程指将系统的、规范的、可量化的方法应用于软件的开发、运行和维护的过程。ACM和IEEE/CS成立联合工作组,在2004年制定了计算教程软件工程卷CCSE(computingcurriculum-software engineering),并把软件工程作为计算学科下与计算机科学、信息技术、信息系统、计算机工程等并列的学科。2014年,ACM和IEEE/CS推出软件工程知识体SWEBOK3.0版,知识领域与2004年版SWEBOK相比从10个增加到15个。此外,由ACM和IEEE主导,国际一些著名高校和企业的专家针埘软件工程硕士教育制定《软件工程研究生学位教程指南》(GSwE2009),描述软件工程硕上需掌握的核心知识体系和相应教程。我国从2001年开始建立示范性软件学院,并于2006年推出《计算机科学与技术本科专业规范(软件[r徉)》l512011年,软件工程专业经国务院批准增列为一级学科。

 

软件工程师目前在国内外都是最具吸引力的职业之一,如美国著名的就业网站CareerCast在2012年进行调查,从收入、工作环境、发展前景等因素评选出的十大最佳职业中,软件工程师名列第一;在我国近来对本科毕业生的职、业调查中,软件工程师的收入也一直名列前茅。尽管近年来软件工程教育有了很大发展,但国内外的软件工程教育还存在诸多挑战性问题,主要包括以下几方面。

 

(1)现有的软件工程课程从学时数、教学安排等方面都难以达到实际职业对软件工程深度、广度和实践能力的要求,相关培养方案的制订较少考虑企业的实际需要,针对性不强。

 

(2)尽管聘请企业中有丰富经验的软件工程师授课是一条有效措施,但整体来看,软件工程授课老师普遍缺乏软件开发实际经验,甚至很多都未从事软件工程领域的研究工作。

 

(3)软件工程目前存在众多不同的开发方法学,它们各有特点和优势,并且软件工程相关技术发展迅速,新的方法不断出现,这使得教学内容的选择和准备变得非常困难。

 

(4)当前国内外软件工程教材多是对众多方法和技术的描述,对具体技术的深入程度不足且无法适应软件技术、工具的快速变化,对学生进行实际项目开发帮助有限。

 

(5)企业的软件开发中使用了众多的软件工具,并且对于重要领域的软件开发,很多企业采用商业化工具。在教学过程中,这些昂贵的、专用的商业工具较为缺乏,并且在有限课程时间内学生难以接触到众多不同类型的软件开发工具。

 

(6)软件工程教育资源非常不平衡,在教育和经济发达地区,聘请优秀软件工程师进行授课、使学生参与到企业的实际开发中是可行的,但对于大量其他地区高校就难以实施。

 

(7)软件工程技术和工具发展迅速,很多软件从业人员从程序员开始起步,未接受过系统的软件工程教育或所受教育很快过时,因此需要持续性的、具有一定灵活性的优质教育资源适应这种情况。

 

由软件工程教育面临的以上挑战,我们可以看出传统的高校课堂内软件工程教育虽然还是必不可少的,但是必须找到新的软件工程专业课程教学方式,以满足其知识变化快、人员基数大、持续时间长、资源不平衡等特征。通过互联网在线课程的形式实施软件工程专业课程的教学,无疑是应对上述问题一种有效、可行的方式。

 

2 软件工程知识体对在线课程模式的影响

 

软件工程可以作为一门单独的课程进行讲授,而软件工程专业一般包含一系列的课程,如需求工程、软件设计与体系结构、软件构造、软件测试与验证等。软件工程专业课程如果作为在线课程进行建设会遇到众多问题,其中主要包括对实践环节的要求非常高、追求在真实平台中解决有一定规模的问题、需要团队合作以及项目管理等,而目前在线课程的教学方式和平台在这些方面有一定欠缺,需要我们进行深入的研究以提供解决方案。

 

软件工程课程应该覆盖一定的知识领域,表1对SWEBOK 3.0版中包含的15个知识领域和子域进行初步分析,判断其是否适合于目前一般性的MOOC在线课程教育模式和平台。表1中第2列的知识子域适合目前在线课程教学方式,第3列中的知识子域需要对当前在线课程模式进行适当改进才能适用,第4列中的知识子域则需要对当前在线课程模式和平台进行较大改进。对于不适合(需对模式和平台进行改进)的知识子域,笔者在第3节中将研究讨论应对方式和措施。

 

表l中最后两个知识领域计算基础和数学基础作为软件工程理论基础的一部分,由于一般放入与软件工程课程相独立的课程中讲授,如离散数学、编译原理、操作系统、数据库原理等,其相关课程也都有较为系统、完善的体系,因此这里我们不进行特别考虑。

 

3 软件工程专业在线课程的建设

 

目前已经出现一些软件工程的在线课程,如UC Berkeley的软件工程MOOC课程于2012年在Coursera、后来在EdX上线,并在此基础上发展、延伸出多个小规模私有在线课程(smallprivate online courses,SPOC)。国防科技大学也已有软件工程相关课程在内部网络上线,供部队和军队院校一定范围内的人员在线学习。

 

3.1 软件工程专业MOOC课程建设

 

从对相关知识领域的分析可以看到,目前一般性MOOC授课方式与平台难以适应的软件工程知识子域主要包含以下特点。

 

1)难以完全通过讲授使学生接受,如需要动手进行实践才能深入体会的技术以及与经验密切相关的过程、管理、度量等内容。

 

2)内容变化频繁的知识如一些软件开发技术、工具等总在持续发生变化或出现新的版本,课程每次新开时都可能需要调整。

 

3)需要团队式的协作与交流完成内容,如版本控制、需求获取、协同开发、团队交流等,仅靠讲授或个人作业难以达到效果。

 

4)软件工程教育强调具有一定规模和复杂性的项目实践,这对于教学辅导人员的数量和指导能力要求较高,不仅仅是普通答疑能完成的。

 

5)对于很多技术和实践来说,其结果是开放式的,软件设计、实现、测试、维护等任务一般不存在唯一结果,这给作业评价和成绩评定带来困难。

 

面向上述特点,根据目前国内外已有的相关实践、效果以及已经实施的建设情况,我们总结出一些供参考的解决方案。

 

(1)制订MOOC教学计划时应遵循持续改进的原则。传统课堂教学讲究制订教学计划时一次到位,但由于软件工程内容变化快,因此分解教学内容、视频、作业时应该使其能够适应快速变化,不要期望一次建设就大功告成。此外,在线课程需要了解大量学生的反馈意见和教学效果,这也需要不断的改进。如果可行,可采用自行编著的电子教材和参考文献,使得每次开课时学生教材也可以尽快进行相应修订。

 

(2)在线课程平台与软件协同开发环境的有机融合。对于需要协同、交流才能完成的内容,实际由于许多国际化企业的软件研发人员遍布全球,因此已有相应的平台(包括开源软件工具开源社区等)支持地域分布的人员进行协同开发。教师可选择所需的协同开发环境,与软件工程在线课程平台集成在一起,提高对团队和协同任务的支持。

 

(3)对课程进行分而治之的划分。教师可以把课程按照其内容是否适合在线授课划分为一些小的子课程,每个子课程更偏重于适合或不适合(如理论内容和实践教学内容分到不同子课程),以减少整个课程设计的复杂性。在线课程偏重适合讲授的子课程,不适合已有在线授课模式的内容,可以通过其他方式实施(如其他高校单独开设实践课程、采用适合的平台或投入更多教辅人员等)。

 

(4)采用新的教辅人员委托模式。由于软件工程课程的实践性强,对教辅人员数量和质量要求高,因此仅靠开课学校的课程组难以完成。教师在实践中可以考虑招募在高校内或通过在线课程已经完成课程学习、成绩优秀的志愿者,通过一定的激励或者提高影响力等方式激发他们的热情。事实上,从开源软件的蓬勃发展以及Berkeley软件工程MOOC课程的实际效果看,该方式完全可行、有效。

 

(5)加强自动化结果评估和成绩评定系统的开发与应用。教师可一方面采用各种自动化软件工具,如通过测试驱动的开发工具、软件编码规范检查工具、基于服务的方式等对课程作业进行自动评估;另一方面可以让学生参与到开源软件社区的开发活动中,通过开源项目对其完成工作和贡献采纳情况等进行评价。

 

软件工程专业MOOC课程建设面临的问题众多,需要教师通过具体实践逐步研究和完善其在线课程的建设过程。

 

3.2 软件工程专业SPOC课程建设

 

软件工程在实际实施中所面向的领域背景非常重要,而不同领域的软件系统各有特点,一个软件企业一般有其针对性的领域,采用的软件工程过程、方法、工具、管理等都有各自的特点。因此,非在校学生的软件工程在线课程学习者可能在一般性的理论之外,希望学习更多对其背景有促进作用的知识。再者,MOOC课程学习者中有相当一部分本身就是高校教师,他们会借用MOOC课程的内容,然后在自己的课程中进行一定改造并增加项目实习等内容,形成适合其学生学习的课程。此外,国防领域未来基于信息系统的体系中,软件工程人才将会包括科研人员、技术开发人员、管理人员、保障人员、作战和指挥人员等不同类型,还会针对战机控制、舰船控制、车辆控制、指挥自动化等不同应用背景,对软件工程知识的要求都有不同。上述情况都要求能够在MOOC课程的基础上进一步建设小规模私有在线课程(SPOC)。UC Berkeley就在其软件工程MOOC课程基础上发展了多个SPOC课程,包括在本校以及在其他高校中开设的课程。

 

对于建设软件工程SPOC课程,教师可以遵循以下一些原则和策略。

 

(1)对于公共的知识讲授,尽可能利用MOOC课程完成,以减少SPOC课程的建设工作量,充分利用优质资源,提高课程的复用程度。

 

(2)加强每门SPOC课程的针对性,如针对具体学校学生的培养目标或针对具体领域背景选择相应的软件工程技术、工具、标准规范进行讲授。

 

(3)加强课程实践和项目开发环节的建设,这是MOOC课程本身具有的不足之一,但在SPOC课程中可以进行有效的弥补。

 

(4)课程成绩的评定可以把MOOC和SPOC课程的学习情况结合起来考虑,对学习者对软件工程共性理论和特定目标知识的掌握情况进行综合评价。

 

在未来在线课程发展中,软件工程专业MOOC课程可能并不一定很多,由能提供优质师资资源的机构开设,但针对具体背景领域的SPOC课程可以更多,因为毕竟软件作为现代社会无所不在的组成,软件工程面向的领域众多,都需要有针对性地培养软件工程人才。

 

4 结语

 

软件工程专业课程例6

2软件工程专业课程体系理论设计

以行业、企业实际对人才需求为引导,软件工程专业毕业生真实就业情况调查为依托,地方高校软件工程专业课程一线教师众多教学研究成果为参考,专业教师在企业挂职学习经验体会为借鉴,围绕地方高校软件工程专业课程教学体系存在事实问题,来对地方本科院校软件工程课程体系建设进行设计建设。设计建议如下:

2.1学科建设

以专业相关的行业、企业人才的实际需求和当前使用的主流开发工具或技术为依托来不断调整专业架构,优化专业人才培养方案,完善人才培养目标,对专业进行合理定位,系统性调整教学方式方法,从而实现以行业、企业对人才的需求来引导地方本科院校软件工程专业的学科建设。

2.2校企办学

学科建设以输出满足行业、企业需求合格的应用型人才为目标,通过校企联合办学,对学生进行定向培养、训练,专业课程体系嵌入资格认证课程模块,实训课程以企业开发项目方式贯穿培养环节以达到提高专业人才的实际动手能力。

2.3师资建设

采取教师企业挂职锻炼参与企业项目研究开发,共同承接开发项目等方式锻炼提高师资队伍实战能力。教师在企业实战经历和相关经验成果带入到日常的教学环节,不仅能促进专业教师学术、科研能力提升,还能够最大程度丰富、提高专业学科建设[2]。

3三层结构课程体系建设

软件工程专业课程体系建设以工程教育理念为指导,项目实战为背景,社会需求为导向,提高学生专业素养、理论知识体系以及实践能力为宗旨。学生完整地专业培养环节结束后具有程序设计,系统分析,软件设计、开发,项目管理,网络和移动通信终端应用开发能力。课程体系模式结构如图1所示。

3.1基础理论由公共基础课程和专业基础课程构成:①公共基础课程主要涵括地方高校各现行必修公共课程,②专业基础课程是专业课程坚实的理论基础,专业必修前导课程,是对软件工程专业基本“计算”概念理解、掌握,问题计算求解能力和构建中小规模软件系统综合能力的初步培养。

3.2专业理论以市场对人才需求为导向、行业最新前沿技术为引领、专业骨干课程为核心、专业素质全面拓展和综合素养整体提高为目标来对专业主干课程进行建设[3],主要包括以下几类课程:

3.2.1面向行业认知能力培养课程主要包括对行业、企业认知学习以及计算机专业知识学习等专业认知方面课程。一般包括行业相关法律、法规,从业道德规范,行为准则,经营管理常规模式,软件项目开发流程等认知类课程。

3.2.2计算机编程与算法设计能力课程算法设计类课程主要包含离散数学、数据结构、算法分析以及数据结构课程设计等方面的课程;编程课程主要包含C语言程序设计、面向对象程序设计等传统程序设计语言课,还包括当下企业应用最为广泛的,最流行的技术前沿课程。

3.2.3软件工程专业系统分析课程系统分析能力课程主要包括操作系统、计算机网络,软件工程、数据库原理等系统类课程。

3.2.4系统实现与集成能力课程系统实现与集成能力方面课程主要包括网络编程、移动互联开发编程、编译技术、软件开发以及软件测试等课程[4]。

3.3实践以校企联合培养为手段,一至两学年时长为周期,贴近企业实际需求为指导,综合技能全面提高为目的来对专业学生进行实践能力培养,方式如下:

3.3.1校企共同建设实训课程以项目介入为主线,企业实际效益项目和高校产学研项目为实际授课主体。引进企业优秀项目人才或具有企业项目实战经验的教师来对专业人才展开课程实训,全面提高学生专业技能水平,综合素养。校企共同培养模式不但能够提高学生工程实践能力,知识转化生产实际速度,同时反向激发学生探究、学习知识的热情,最终提高就业竞争力[5]。

3.3.2合作企业岗位实训针对毕业学生和部分专业老师做岗位综合实训:①学生岗位实训:让学生真实参与企业项目实战,充分消化吸收前期所学理论和技能知识,进一步提升学生综合能力,为就业夯实基础。②老师岗位实训:专业老师参与企业项目研发,并将企业项目开发经验和技术进行梳理总结、编纂成册,运用到实际日常教学环节,促进教学质量提高,有利于缩短理论转化实际成果周期。

3.3.3校企合作运用项目方式指导学生做毕业论文(设计)毕业论文(设计)是对学生的专业知识掌握程度与提升高度的一次全面的考核,同时也是培养学生综合运用所学知识,独立地分析问题和解决问题的能力的一次全面的实训。但是传统的教育模式导致大多地方院校工科专业学生毕业论文流于形式,与实际脱节。通过与企业合作运用项目方式指导学生做毕业论文(设计)弱化学生对毕业论文(设计)的抵触情绪,可以进一步让学生了解行业企业实际运作规范及最新技术,进一步加强对学生实践和技能能力的培养,为毕业后从容就业夯实基础。

软件工程专业课程例7

(1)开放式授课。随着行业基础框架的构成、行业发展和技术融合的国际化,软件工程的授课将不再局限于某本教材或某个案例。

(2)小组式开发。软件工程开发要求开发人员具有良好的团队合作能力和沟通能力,因此应将学生设置在以模块开发为目标的开发小组,培养学生分析问题、协调问题、解决问题的能力。

(3)模块化集训。IT环境复杂度和历史遗留系统的增加,对软件工程领域提出新的挑战。模块化的思想能够通过抽象、封装、分解、层次化等基本的科学方法提高软件工程灵活性。

(4)真实性案例。软件工程授课依托于真实案例,可加快学生对软件工程的感性理解,从而解决学生对软件产品初始建模、过程开发、测试运行、质量监控、配置与过程的管理有系统性的掌握,锻炼学生对项目开发过程的整体把握能力。

2基于项目导向的课程体系构建

合格的软件工程专业学生应具备专业基础知识、工程技术能力以及良好的职业素养。教师应结合软件工程专业人才培养标准、软件工程行业开发规范和技术特征,在不同阶段将具体项目融入教学,基于项目导向理论知识,培养工程化特征明显的学生;在项目案例引入各教学阶段时,应夯实学生的基础理论知识与基本实践技能;在强化工程技术阶段,项目案例应涵盖前端技术课程,工程实训阶段项目案例需引入企业真实项目。通过3个阶段的教学,学生能够具备软件工程师的基本编程、综合设计及工程实训等能力。我们应分析软件工程专业知识体系与课程设置,根据普通高等院校软件工程专业课程规划、设置学时,构建层次清晰的教学实践体系及内容,培养应用型软件工程专业人才;同时,在IEEECC2001SE学科的知识体系基础上结合国内软件产业及校内办学的实际情况,在基础教学、理论应用、项目实践3个层次建立软件工程专业课程体系,基础教学部分主要讲授软件工程领域的基础理论知识,以开发过程为主线详细分析和讨论软件的需求分析、结构设计、程序实现、功能测试、变更与维护、软件项目管理等内容,让学生对此有感性认知。理论应用部分主要以面向对象程序设计为基础,锻炼学生的建模和实现能力。同时,采用实践案例,让学生掌握软件开发的方法和技术,培养学生的专业能力、管理能力、团队协作能力和职业精神。项目实践部分分为基础技能实训、专业技能实训、综合设计实训、科技创新实训等4个模块,可以基于项目建立多个小组,让学生以团队合作的方式在企业开发环境中实现一定规模的软件项目。为培养“理论知识实、实践能力强”的应用型人才,需将教学计划与项目实践环节紧密结合。基于项目导向的教学体系层次实施步骤如下。

(1)基本知识技能阶段:将.NET与JAVA开发作为实习内容,让学生了解面向对象开发的基本知识。

(2)综合知识实训阶段:让学生了解并掌握软件开发方法,熟悉.NET在软件项目系统开发中的具体作用,设计和实现功能界面,实现数据库设计与应用,分析和解决软件开发过程中出现的问题,并进行功能测试。

(3)应用能力提高阶段:对之前阶段开发完成的软件项目进行详细的分析与讲解,基于项目开发的实际应用强化软件工程的理论知识,让学生感受所学知识与实践应用的对应性,加强学生实践动手能力和团队沟通合作能力。

(4)职业技能与素养提升阶段:对软件项目范围、功能实现、总体进度、软件质量、管理配置等方面进行开发训练,锻炼学生整体项目的开发能力,逐步培养学生的职业技能,结合项目开发对学生进行测试与评价,培养和提高学生的职业素养。

3基于情景的教学方法实施

情景教学能让学生对知识有感性认识,提高对课堂内容的理解效率,因此需要在一个通用的软件开发环境中进行项目开发的学习。构建符合软件工程专业课程项目开发的开发环境是提升软件工程教学效果的关键。情景模式授课能让学生在模拟的软件工程项目中实战训练,通过层次提升效率,激发学生的学习兴趣,达到最佳教学效果。教师在情景模式的授课过程中担任项目总监或技术顾问的角色,组织学生进行技术交流、成果验证、变更审核等活动;学生会依据项目不同阶段的情景扮演不同职位,提升自身项目开发技术及管理能力,培养个性化思维和团队合作思维相结合的思考模式。基于情景模式的软件工程专业课程教学过程。在具体的教学实施过程中,教师利用项目导出教学内容,围绕项目案例设计教学情景,依据情景设计安排学生在项目团队中的不同角色,尽量让学生体验真实的项目开发流程。借助项目情景模式增强了课程内容的趣味性,最大限度地调动学生的主观能动性。项目导向下的情景模式教学需要对项目选定、教学内容设定、项目进程安排、学生角色安排、项目成果鉴定等方面进行管理。基于情景模式的教学要求,学生以项目团队的方式组成项目小组(一般由3人组成),开发具有一定规模且功能较为丰富的软件系统,侧重培养学生在项目开发过程中发现问题、分析问题、解决问题的能力,培养学生的团队合作精神,使学生体验软件开发的全过程。专业课程教学内容应把软件开发分解为项目前期准备、中期分析与设计、功能测试和软件交付等三大部分,具体内容为:

(1)项目准备阶段:教师在课程初始阶段,将软件项目需求告知学生,选定项目开发小组,制定开发范围和计划。

(2)分析设计阶段:项目开发小组基于需求和开发计划,编制需求规格说明书。依据项目的总体结构,逐步设计项目所需功能,并编写相应文档。

(3)测试与交付阶段:开发团队对完成的功能模块进行整合,测试功能性和稳定性,调试并完善软件系统,最终形成达到项目需求的软件集成系统。

(4)软件交付:教师运行集成的完整系统,组织学生交叉验收。验收管理是各团队共同检验工程是否达到预定目标并进行最终确认的重要一环,每位学生必须高度重视,支持项目验收工作。在情景式的软件工程环境中,学生真正体验到一种有序的、可控的、协作的软件开发过程,在分析问题、解决问题、协调冲突、消除矛盾的过程中享受软件开发成功的成就感。项目导向的情景模式教学可以让学生在团队中练习,在练习中学习,锻炼学生独立开发与合作开发项目的能力。

软件工程专业课程例8

2整体项目模式下系列课程的教学

根据整体项目模式原理,实践项目应贯穿到各专业课程之中,系列课程最好使用同一项目,这样更能加强学生理解软件开发过程的不同方面。该项目在专业课程开始之前就必须存在,即已经完成或正在进行中的实践项目,因此,系列课程必须是相互联系并且能基于同一项目案例,这和传统的项目教学方式虽然模式一致,但是效果却有本质的不同。图3为系列专业课程的项目案例、课程和学生实践案例示意图,5门课程都基于同一实际项目案例,学生根据自己所做的项目,按照不同专业课程要求的格式和内容书写相关文档。

2.1先案例后理论的案例驱动教学模式

软件工程专业的特点是实践性非常强,软件工程的很多理论都来源于对实践的总结和归纳。因此,教师在教学过程中采用先案例后理论的案例驱动教学模式,符合软件工程专业的授课特点。首先,教师要讲解实际项目案例的文档,该文档是一套完整的、从不同侧面反映软件开发过程的实际文档。对于每一门专业课,教师首先讲解需求提取、需求分析过程、功能提取、系统功能结构框图等,让学生明确该系统的背景和要解决的问题,以及需要具备什么样的功能以实现目标。其次,教师要联系实际项目案例,讲解课本上的理论,将每个理论知识点与实际的项目案例相结合,让学生充分理解理论。在实际讲解过程中,对于新开课,新教师若碰到教学学时偏少的状况,可以言简意赅地讲解重点知识;实践经验丰富的教师,碰到学时偏少的情况可以精简案例功能,讲解1~2个功能即可。最后,教师必须强调实践的重要性并给出标准的文档规范,要求学生按照自己的实际项目书写标准的文档。在每一门课程讲解完毕后,教师再一次帮助学生回顾该课程在软件开发过程中的位置。以软件项目管理为例,在正式进入课程教学之前,教师需要做大量的工作,首先需要准备的文档有项目需求、项目需求分析报告、可行性分析报告、项目开发计划书、项目Demo程序演示、软件项目投标书、软件项目开发合同。然后,开始进入软件开发项目管理过程教学,软件项目主要内容有成本管理、进度管理、人员管理、风险控制等理论内容。实际的软件项目管理主要分为4个阶段:IT项目的启动阶段、IT项目的计划阶段、IT项目的执行控制阶段、IT项目的收尾阶段,这在一般的教材中很少提及,但是教师在内容讲解中要明确阶段任务。IT项目的计划阶段涉及48个文档;IT项目的执行控制阶段涉及45个文档;IT项目的收尾阶段涉及14个文档。教师在讲解合同的内容时,可以直接参照“软件项目开发合同”进行讲解。对于必不可少的合同内容,教师就必须跟学生讲清为什么必须要包含这些内容;讲解成本计算的时候,根据文档“工作包、进度和预算”进行项目的WBS分解以及基本的估算方法。总之,由于教材先理论后案例的局限性,在听课之初,学生觉得枯燥乏味。而教师通过先案例的方式能有效调动学生在课堂上的学习积极性,为后面的项目实践奠定基础。

2.2学生项目实践环节

每一门专业课都有上机实践部分,学生在实践课上主要是书写文档。每门专业课都有各自不同的文档,软件工程课程要求学生必须完成标准的13个文档;软件测试课程需要软件测试报告文档;软件项目管理课程有127个文档;面向对象的软件分析方法课程有包含9大部分内容的软件项目分析与设计文档。每一门课程的文档内容非常多,要求每个学生最好独立完成,主要训练每一个学生的文档书写和理解能力。需要强调的是,学生书写的项目文档一定要给出标准的、规范的文档格式,包括目录、段落、标题、字体等排版之类的要求。项目模板可以采用软件工程国标文档或者相关的其他标准文档,最好和某一软件公司的案例文档格式相一致。笔者在软件公司任职过程中,很多刚参加工作的大学生书写文档的水平非常差,主要是文档格式、结构和内容混乱,往往给人留下非常不好的印象。整体项目驱动模式下的课程教学,首先强调的就是文档格式和正确的文档排版,其次才是内容的正确性与完整性。在学生项目实践中,任课教师最好跟踪指导。学生每次在实验课上必须完成相应的实验,并把实验的电子文档通过教学资源管理系统或以电子邮件的方式提交给教师。电子文档的批改能快速纠正学生文档格式不规范以及内容方面的错误,但这个工作量往往很大,每一次电子作业批改的工作量往往是学生数量的3~4倍。这是因为学生按照批改意见进行修改后又会返回给教师,最终达到合格标准的电子文档往往会被修改2~4次。

2.3考核方式

完成每门课程的项目文档是学生对文档书写熟练程度以及课程内容理解的直接反映,也是培养软件开发过程中需要具备的素养和习惯的有效途径,克服学生疏于或懒于书写文档的缺陷。因此,教师需要对学生书写的项目文档进行考核并将其反映在学生成绩上。项目文档的成绩占学生总成绩比例的30%~50%较为合理。

2.4教学效果

笔者经过近2年的教学实践,取得了良好教学效果。以中南民族大学软件工程专业2008级学生为例,首先,学生很顺利地完成了各自的软件项目,包括中南民族大学学生基金项目;其次,学生能很好地书写申请软件项目著作权系列文档以及毕业论文,书写的文档格式规范,只需稍加修改就能将文档立即转化成学术论文并发表。这表明学生无论是在文档格式还是在内容编排上都取得了进步,进一步提高了在软件开发过程中应有的素质。这也是软件工程专业学生和计算机其他专业学生之间非常明显的差别。就前2届学生的就业情况,笔者回访了2家用人单位,他们对中南民族大学软件工程专业毕业的学生刮目相看,称赞学生书写的项目文档很规范。

软件工程专业课程例9

1研究背景

目前,很多高校软件工程专业人才培养片面追求规模大而全,盲目拔高,过于注重基础理论知识的研究和学习,学生理论有余,实践不足,因此软件人才结构性矛盾日益突出,人才无法适应企业的需要。为满足国家对软件工程专业人才的需求,必须在教育和人才培养体制上进一步完善[1-2]。

很多高校的软件工程专业都开设Web开发类课程。但该类课程实验训练面宽,需要的人力物力也较多,因此相当多高校以理论为主,实验为辅。另外,因课时、师生比等的限制,一般高校把该类课程作为语言类课程教学,仍以介绍语法为主线,配上一些语法应用示例的简单程序,缺少系统训练,没有编程和调试过程的真实演示。理论和实际不能有机结合,根本谈不上提高Web开发能力,即使学习程度较好的学生也都成了“语法的巨人,开发的矮子”[3-5]。

2课程教学改革

我校从2007年正式招收软件工程专业学生,经过几年的摸索和实践,笔者课题组在软件工程专业Web应用开发类课程教学模式方面积累了一些实践经验,希望能够起到抛砖引玉的作用。

2.1课程体系的设置

结合软件工程专业人才的培养目标和特色,Web开发方向课程体系建设要努力体现学科发展潮流和市场需求。作为软件工程专业课程设置的重要组成部分,课程群的设置要强调科学性、层次性、完整性,注意课程群体间的衔接,避免内容的重复。

从大三的第2学期开始,Web开发类课程体系前导课程并行开设了C#程序设计语言和网页设计,中间是.Net Web项目开发,处于核心地位,最后是两周的实训。这种课程群安排改变了“什么工具都学,什么工具都没有学精”的情况,以真实项目贯穿整个学期,课程之间联系紧密。C#程序设计语言和网页设计分别关注项目的编程语言和界面设计,.Net Web项目开发则从工程的角度实现完整学习项目的需求、架构、编程、测试等全过程的学习,最后的项目实训以学生为主体,完成整个项目。

2.2授课方式的改进

1) 授课时间调整。

我们采用“做中教,做中学”的教学方法,培养学生的职业技能,为了避免理论和实验分开授课及两次课之间周期太长的问题,笔者课题组采用4学时每课制的课程安排形式,边讲边练,在实验室把理论教学与实践教学融合为一体,避免学生直接面对枯燥的理论和语法知识,提高了学习效率。

2) 授课方式调整。

为充分利用实验室资源,尊重学生的个性化差异,我们让两个班约50名学生一起上课,但采用了两个授课教师外加一个实验教师的教师配置,基本满足1∶15的师生标准配比。小班教学能创造良好的学习环境,教师和学生能充分交流,有充分的时间找出问题,使深度学习型和表面学习型学生都受益[6]。

3) 授课过程调整。

为了保证以“做”带“学”的效果,“做”的过程控制尤其重要。我们采用以下教学步骤:

首先,教师用20分钟讲解和演示知识点。教师让学生对开发软件的功能和界面有一个感性认识,在演示过程中告诉学生如何应用知识点,并录制了视频录像,以备没有听明白的学生课下重看。

接着,学生思考和消化10分钟。让学生把思考后的想法写下来,以备后面的实施。教师也会在课堂中巡视,查看学生们的共性问题。

最后,学生利用一半时间重复实现教师讲过的内容,强化练习,加深印象。在剩下的时间里,学生还可以扩展教师讲解的知识点,完成教师没有讲到但相似的内容,并要调试通过。

总之,工程化的思维和编程能力是训练出来的,练习对问题进行分析、综合,编程,调试,然后才能体会到关键问题所在,这些都是单靠讲授不能获得的。所以,采用实验室实验授课模式是改革Web开发类课程体系的关键。

2.3真实项目驱动教学的实践

一般院校讲授的案例都是小型软件系统,在规模和复杂度上远远不如实际开发的系统,学生只需写少量代码,很难体会开发一个实际项目的艰辛。因此,学生容易轻视Web开发的难度和价值[7]。

我系引入了大连海辉公司的实际项目――客户资源管理系统,使工程概念贯穿了整个教学过程。该项目把程序设计和用户需求、文档设计、工具使用、模块集成、资源库与模块重用、测试等紧密地捆绑在一起,形成了一个开发链。在开发过程中,学生需要熟练掌握从需求分析、架构设计、开发环境配置、Web编程、数据库访问、调试测试和安全性配置到交付整个过程中涉及到的技术和非技术知识,还要撰写该软件的工程规范文档和实验报告,以备考核。

2.4课程考核方式的改革

考核体系包括3部分:

1) 平时表现。占30%,包括平时出勤率和实验操作考核。按照学生的出勤情况和实验报告上交情况给分。本类课程贴近于实际,对想要就业的学生有帮助,所以很受欢迎,出勤率较高。另外,每次上课都要完成客户资源管理系统的一个模块,下课前通过作业提交系统提交上来,教师要检查完成情况,也作为平时考核的一部分。

2) 大作业。占30%,采用小组方式,并配有一定数额的项目虚拟启动基金。大作业强调学生的团队协作能力,注重学生的学习参与性、团体合作性、实践性,培养学生的表达能力、思维能力、团体合作能力[8]。学生要利用从项目中学到的知识和经验,编制一个.Net软件。教师给每个小组分配一定数额的虚拟基金,由组长按照每人工作量的大小分配,避免学生偷懒,也有利于教师给每个学生打分。大作业要求最后上交软件、项目文档,并安排表达力强的学生陈述项目的设计过程,回答教师提问。整个项目建设应作为一个探索和试错过程,让学生在实践中体会工程思想。比较优秀的组可以以实际课题作为大作业,如齐齐哈尔大学校办网站、.Net课程网站等,本学期结束后,学生小组将在大作业的基础上继续深入研究,也可以作为毕业设计课题。

3) 在线考试。占40%。按照国际惯例,像此类实践性强的课程不宜进行闭卷考试。笔者课题组使用.Net编制了在线开卷考试系统,用选择题和填空题考察语法知识,用规定时间内完成某模块的功能考察编程能力。这种考察方式一方面减轻了教师的批卷压力,可以快速统计学生成绩,另一方面避免出现“高分低能”现象,受到实践能力强的学生的欢迎。

以上考核方式比较全面地评估学生的专业能力和潜在的发展能力。通过提交作业、软件工程文档、口头演讲、小组研究、在线考试和软件等,学生展示了自己的学习成果。考核结束后,教师要将考核结果及时反馈给学生,指出学生的成就和不足,帮助学生改进和提高。

2.5开放性实验室的管理

目前,许多学校的实验室只在有实验课时开放,平时几乎不开放,实验室及仪器设备利用率很低,造成资源闲置浪费。因此,软件工程实验室除了完成常规教学任务外,还应采用教师轮流值班,学生兼职管理的办法,帮助或组织学生完成上课未完成的任务,或自己找项目做。开放实验室比宿舍环境更好,配套教学软件齐全,还有教师帮助指导,可以更好地发挥实验室的基础平台和支撑作用。学生们的大作业大多数是在开放实验室完成的。

3实践效果

这种开放式、多层次实验教学模式有利于学生积极参加活动,提高整体素质。它使抽象的软件编程形象化,提高了教学质量和效率;提高了学生的学习积极性,帮助学生加深对理论知识的理解;提高了学生的实践能力,强化了软件开发的实战能力,实现了从学校到企业的无缝结合。在做完“客户资源管理系统”项目后,学生都感觉收获很大,特别是在软件架构设计和软件工程规范文档书写方面。在“黑龙江省第二届大学生计算机应用大赛”中,我系学生获得桌面类一等奖1项,桌面类二等奖1项,Web网站类二等奖1项,桌面类三等奖和优秀奖若干项。

4结语

软件工程专业Web开发类实验教学模式将教与学融合在一起,增强了教师和学生间的互动,提高了学生的实践能力。通过调整授课时间、地点,小班教学,项目驱动和改革考核方式,学生在掌握扎实理论的基础上又提高了职业技能和素质。

注:该论文受到黑龙江省新世纪高等教育教学改革工程项目“软件工程专业应用型人才培养模式的改革与实践”支持。

参考文献:

[1] 熊伟,洪玫. 大学本科软件工程专业建设的探索与实践[J]. 理工高教研究,2010,29(1):59-61

[2] 晏立. 从社会需求的角度探索软件工程教育[J]. 教育与教学研究,2008(22):141-145.

[3] 刘建华. 计算机语言类课程教学模式初探[J]. 高教论坛,2005(1):91-93.

[4] 何明昌. 可视化程序设计实验教学改革[J]. 实验室研究与探索,2009,28(3):88-90.

[5] 张雅琴,曹志清. 实践教学内容改革的实践与思考[J]. 实验技术与管理,2003(3):59-62.

软件工程专业课程例10

1 《软件工程》课程教学中存在的问题

软件工程课程内容主要是许多概念和原理,教材上涉及的方法与技术并没有多难理解,但教学过程中仍发现有如下问题:

1.1 学生对软件工程类课程感觉概念、原理太多,难以记忆

软件工程课程主要讲解软件开发中的原理、方法、技术,很少涉及软件算法和程序设计。学生在学习时有个误区,觉得这门课既然是介绍各种概念和原理的,死记硬背就好了。而大量的概念和原理光靠死记硬背反而容易混淆,学习效果并不好。

1.2 教学模式单一,缺少有专业特色的固定的教学案例

目前软件工程课程仍以教师课堂授课为主,学生听课为辅,教学内容侧重于理论。实验学时较少,学生的实践多在课后完成,较难落到实处。课堂使用案例也多为教材上给出的小案例,实用性不强,缺少专业特色,学生很难接触真正的医学信息系统开发项目的实例。

1.3 学生缺少对相关课程间关系的理解

目前的教学模式是各门课独立讲授,对于软件工程课程而言其综合性很强,其理论与应用与许多课程相关,但学生在学习时是单独学习的,在头脑中没有形成完整的课程体系,不能把已学过的知识融会贯通的使用。

1.4 学生实践能力较差,难以满足专业需要

软件工程课程实践性要求高,而学生在学习的过程中,仅仅抽象的学习软件开发的过程,很少有机会参与软件开发的整个过程,从而实践能力较差。

2 解决办法

2.1 注重教学方法和教师的课堂感染力,结合学生实际教学

当课程内容不够吸引学生时,授课的效果就更依赖于教学方法和教师的个人魅力。教师要教授好一门课程,仅仅对课程内容的深入理解是不够的,有时要向一位演员一样的表演。声音抑扬顿挫的变化可以使本想打瞌睡的学生清醒。在教学中适度的加入一些包袱,博得满堂一笑,同样可以使涣散的注意力重新集中。学习软件工程课程的目的是为了让学生了解和掌握开发一个高质量软件的过程、方法及使用的工具。那么对于高质量软件要给学生一个定义,如果仅从理论上来解释将枯燥无趣。笔者在上课时以学生所熟悉的MS office、QQ等软件作例子,让学生从用户的角度讨论高质量软件的特性,将软件工程设计和实现阶段的一些基本原理、概念和启发规则引入进去,引起学生的共鸣,加深学生对这些原理、概念、启发规则的理解,在不用死记硬背的情况下轻松记住教学内容。

2.2 结合其他课程内容,使学生对所学内容融会贯通

软件工程课程的综合性和实践性都比较高。在教学中结合其他课程内容,并与其他课程教师交流共同教学,学生能将所学知识融会贯通,灵活应用,效果会非常好。例如在讲述软件工程需求分析阶段建立数据模式时引入数据库原理中的知识,解释数据对象、属性及数据对象间相互联系,以及它们对应到应用中的实现形式;在讲述设计与实现阶段内容时,可引入算法设计与分析课程中的知识对设计思想、代码的构造进行说明;讲述实现效率时,引入算法设计与分析中的时间复杂度和空间复杂度的概念来讨论效率问题,讨论存储效率时还可引入操作系统中存储调度的原理加深学生的印象。

在我校医学信息工程专业课程计划中,软件工程是在大三上学期开设,大三下学期还有《J2EE架构设计与开发》和《综合课程设计》两门课,结合这两门课,让学生分组以软件工程方法开发一个软件,并交付相应文档,从而再次巩固学生在软件工程课程中学习的知识并加以应用。

2.3 采用项目驱动模式,结合项目实例,使学生学以致用

采用项目驱动模式教学时应注意以下几个问题:

(1)尽量使用实际案例,虚拟的案例因为没有需求方,学生在需求分析和需求定义时很容易流于形式,体会不到获取需求有多么的困难,反而会觉得获得需求很容易,难在编程。在我校的教学中,软件工程前期有《医学信息系统》课程,为学生介绍医院的一些管理流程,并指导学生开发相应的软件;同时学院经常组织学生去医院实地参观;学院教师也经常与医院或企业有一些软件开发的项目。这些都为软件工程课程提供了很好的实际案例。

(2)指导学生分组,学生分组时最好不要任由学生自由分组。学生自由分组时,往往编程能力好的同学抱成一组,其他的同学以关系疏密来确定分组。导致一个项目组中只有个别学生起到作用。使整个教学过程流于形式。可以先让学生自由报名担当项目负责人,然后以公开竞聘的方式确定项目负责人,这个过程中,需要老师对学生有一定了解,对竞聘方式和过程加以引导,确定有组织能力和负责任的同学担任。然后再由个人向项目负责人申请职位(如软件设计人员、软件架构人员、程序员、软件测试人员等),一般一个项目组5-6人,由项目负责人决定小组人员,项目负责人负责项目的整体管理和协调工作。因为职位都是自己申请的,所以最后在项目实施时,各人职责明确,不会出现人浮于事的状况。

软件工程专业课程例11

中图分类号:G642 文献标识码:B

作为信息产业的核心和国民经济信息化的基础,软件产业日益受到国家的高度重视。权威数据显示,我国软件产业每年人才需求量近一百万,然而令人尴尬的是,许多软件企业却招聘不到真正合适的软件人才。信息社会不断增长的软件人才需求与优质软件专业教育供给不足的矛盾已成为计算机高等教育发展面临的一个重要问题。

2001年12月,经国家教育部和国家计委联合发文批准,全国首批35所示范软件学院正式成立,目的是批量培养具有国际竞争能力的高层次、应用型、复合型软件工程人才。自示范软件学院成立以来,我国软件工程教育事业得到了很大发展,学科建设逐步走向成熟,初步实现了与国际学科发展的接轨,软件工程教育实现了历史性跨越。

然而,软件工程是一个迅速发展的交叉性学科,相关的新概念、新技术、新方法不断涌现,这就要求教育机构要不断调整策略,以应对专业的快速变化。尤为突出的是,无论是全国首批35所示范软件学院还是非示范软件学院,大部分都根植于计算机学院,因此很多软件工程专业学科课程体系与计算机科学与技术专业基本相似,而计算机科学与技术专业的教学内容是远远不能适应软件工程学科的发展要求的。

从根本上解决上述问题的关键是,结合中国软件产业和软件学院已有的硬、软件基础设施及办学的具体情况,研究和定制适合本学院特色的软件工程学科的课程设置、教学内容、教学方法,形成一个良好的软件工程学科课程体系,使软件工程教学更具先进性、目的性和系统性,其中对计算机科学核心课程的工程化改造势在必行。

本文将研究计算机学科的“编译原理”课程在软件工程专业如何进行工程化改造,怎样创建适合软件工程专业知识体系要求的“编译原理”实践教学,从而在科学的软件工程学科课程体系的保证下,形成一个融基础理论、实验教学、工程实践为一体的整体化培养机制,以适应软件工程学科教学要求,使软件工程学科教学质量得到不断发展,使软件工程专业教育得到健康稳步发展,培养社会需要的软件人才。

1 “编译原理”的工程化实践教学体系

1.1教育教学理念

工程化实践教学就是树立工程化能力培养与基础理论教学、专业能力培养并重的教学理念,把工程化教学作为人才培养的核心任务之一,通过全面改革软件工程专业的人才培养模式、调整课程体系、充实教学内容、改进教学方法,在教学过程中全面体现能力和职业素质培养的思路,并将软件工程知识内容由浅入深、阶梯状、循序渐进地贯穿在工程化实践教学的各个开发项目中。

基于上述软件工程专业的知识体系、本科课程设置的指导原则以及工程化实践教学教育教学理念,下面将给出“编译原理”课程的工程化实践教学体系。

1.2 “编译原理”的工程化实践教学体系

如图1所示,“编译原理”课程的工程化实践教学体系由六个部分组成:编译原理课程工程化实践教学环境、编译原理理论教学、软件工程能力培养、阶梯状迭代工程实践项目、配套教材和评价体系。构建理念为以计算机科学为基础,以软件工程为核心,以目标应用为导向。

1.2.1 “编译原理”课程工程化实践教学环境

“编译原理”课程工程化实践教学环境由实验室、项目团队、教师讲座以及团队汇报组成。

(1) 实验室。以工程化培养理念指导教学实验室建设,为“编译原理”课程工程化实践教学提供强有力的基础设施支持。提供全天开放机房,机房实行开放型管理。项目开发时间规定为开时间和闭时间,闭时间为固定时间,要求授课教师到机房现场指导,开时间内,学生可以自由选择时间,以小组为单位进行自行讨论、设计,要求实验室人员在现场,以便解决设备问题。机房的使用和维护要有严格的管理制度,保证项目的顺利完成。

(2) 项目团队。将4~5个学生分为一个项目小组,一名组长作为负责人;每名学生分配一台微型计算机,在开发小组中以分工协作的方式完成指定的软件开发任务,完成项目设计报告,并提交完整的软件开发文档和源代码。学生在团队环境下使用最新的软件开发工具,获得较真实的软件开发经验,提高学生在项目规划、队伍组织、工作分配、成员交流等多方面的能力,培养学生团队合作及工程项目研发能力。

(3) 教师讲座。指导教师在整个的项目开发中纵览全局,项目的开始、结束及中间的每个模块都要进行全面的讲解、引导和组织。教师要系统讲解软件工程知识点和软件技术,统一讲解项目开发过程中学生普遍存在的问题,不断地发现问题,解决问题。

(4) 团队汇报。理论教学中教师唱主角,而工程化实践教学应让学生唱主角,让开发小组自己拟定演讲方案、内容,由教师审核修改后进行汇报演讲。这样可以有效地提高学生总结概括、研究立项、口头表达、演讲和交流沟通的能力,培养学生独立思考、分析问题的能力和创新能力。

1.2.2 “编译原理”理论教学

由知识的先期注入和工程化理论教学组成。

(1) 知识的先期注入。“编译原理”课程的理论性较强,整个课程内容由几个功能模块组成,学生对课程的完全理解应在最后一个模块,即课程结束时。鉴于教学内容的特殊性,应在一门程序设计语言之后安排“CO释程序的面向对象设计与实现”项目,作为前导实践环节,配套教材为《C++实战:解释程序的面向对象程序与设计》。这可以使学生在学习理论之前对程序设计语言的解释执行有较深的理解,由传统的“填鸭式”被动学习转变为学生自主式学习。学生对“编译原理”课程的学习由问“这是什么”变成“这是我需要的什么”,从根本上解决了“编译原理”课程的教学困难。实践表明,这种方法在锻炼学生实践能力的同时先期注入了理论教学需要的解释程序的知识和概念,有很好的教学效果。

(2) 工程化理论教学。编译程序是庞大而复杂的,这使得如何介绍编译原理本身就是一个难题。中外编译原理教材很多,如果从工程化的角度去诠释编译程序的实现过程及其原理,即对一个完整的源程序到目标程序的转换过程进行详细讲解,不失为一个新的途径。我们的配套教材《编译程序的实现原理》的编写形式如下:先给出编译器的输入――一个C语言小程序;再给出编译器的输出――目标机上的目标语言,完成这样的转换需要进行的工作包括词法分析、语法分析等几个功能模块;再针对每个功能模块给出本模块的输入和输出,如词法分析为一个C语言小程序,模块的输出形式为TOKEN链表,完成这样的转换需要进行的工作由理论和实现两部分组成。这种讲述方法实现了五化:

工程化:以对一个完整的源程序到目标程序的转换作为教学载体介绍编译程序的实现及其原理,以反映编译的工程性。

模块化:将一个完整的源程序到目标程序的转换作为总目标,将不同的子转换作为各个子模块的目标,以反映编译的模块性。

链接化:将一个完整的源程序到目标程序的转换所需的知识处理成总目标与子模块、子模块内所需知识点之间的链接,以反映编译的整体性。

需求化:将编译原理内容的平铺直叙转换为实现一个完整的源程序到目标程序的转换的所需知识,解决了编译内容的庞杂、不分主次、叙述冗长的问题。

形式化:将形式语言的内容介绍放置在为完成目标所需知识的位置,突出形式语言的地位、内容及其应用。

1.2.3软件工程能力培养

在工程化实践教学体系中,软件工程能力的培养是至关重要的。

软件工程能力包括软件需求、软件设计、软件构造、软件工程基础结构、软件配置管理、软件维护等知识单元。有些知识单元在早期学习,以促进学习条件的成熟;而有些知识单元的学习需要一定的成熟条件,应该放在后期讲授,如阶梯状迭代工程实践项目是整个教学过程中理论联系实际,培养学生动手能力、观察能力、分析和解决问题能力、团队合作以及创新精神的重要环节。把软件工程知识单元分期、分阶段引入阶梯状不同开发项目的全过程,形成了特色鲜明的工程化实践教育体系,使学生的软件工程能力在实际项目开发中得到锻炼和提升。“编译原理”课程工程化实践项目内容安排如表1所示。

“实践性、个性化、逐步工程化”是工程化人才培养的重要环节,也是学生成为合格软件工程化人才的实践过程。以上教学组织方法既保证了教学的系统性、知识性,又保证了教学案例的先进性和实践性。

1.2.4阶梯状迭代工程实践项目

编译器代码的长度可从10 000行到1 000 000行不等,编写甚至读懂这样一个程序都非易事,更何况是开发,因此编译器的实现比以前任何课程中学生承担的设计要大得多、难得多。纵观国内外大学研究现状,一般都是先设计一个语言,面向过程式或面向对象式,然后对设计的语言进行面向过程或面向对象程序设计方法的开发,早期采用面向过程语言编译器的面向过程开发,如吉林大学计算机科学与技术学院的编译原理实践课程“编译程序的设计与实现”,近期采用面向过程语言编译器的面向对象开发,或是面向对象语言编译器的面向对象开发,如“Modern Compiler Implementation in Java”。无论哪一种,学生都是一次性为具有上百条产生式语法的语言开发编译器,难度极大,这使实践课程的收效甚小。采用阶梯状迭代教学法创建的编译原理课程工程化实践项目从根本上解决了这个问题,配套教材为《编译程序的面向对象程序与实现》。

如图1和图2所示,编译原理课程工程化实践项目内容包括“C0解译程序的面向对象设计与实现”,“C1编译程序的面向对象设计与实现”,“C2编译程序的面向对象设计与实现”,“C3编译程序的面向对象设计与实现”。整体项目的源语言定义为C语言的子集,采用阶梯状迭代教学法后,将源语言定义为C0、C1、C2、C3,Cn是Cn-1的扩展。

编译原理课程工程化实践项目的优点有:

(1) 起点低:降低了开发难度。学生根据自己的实际水平选择源语言级别,有不同收效。从根本上解决了软件开发水平低的学生对编译程序开发望而生畏甚至放弃的问题。

(2) 阶梯上升:项目内容的选择不是零散的、随机的、重叠的,而是相互关联的。纵向为编译理论,是主要内容;横向为软件工程,是辅助内容。主要内容将难点分散,处理成阶梯状;辅助内容也将难点分散,同样处理成阶梯状。

(3) 迭展:每一个项目需求是前一个项目的扩展,因此,每一次的软件开发可以看作是前一次开发的迭代,使学生面对大型软件开发项目中最难处理的用户需求不断变更的问题,最大程度地使用重用技术。所有项目的开发承上启下、循序渐进、阶梯状迭展,为研究和学习软件生产线新技术埋下伏笔。

(4) 知识渗透:将软件工程核心内容及工程化软件开发思想由浅入深逐步渗透到各个项目中,每个项目具有不同级别的培养目标,学生从不同项目循序渐进地掌握工程化软件开发理念,降低了工程化软件开发的难度。

阶梯状迭代工程实践项目发挥了学生的主体意识,给学生足够的空间,激发了学生的活力与创新思维,并培养了学生的“三个能力”(自我管理能力、组织策划能力、社会实践能力)和“五种意识”(责任意识、服务意识、创新意识、团队意识、竞争意识)。

1.2.5配套教材

编译原理课程工程化实践教学配套教材共有3部,前导教材《C++实战:解释程序的面向对象程序与设计》与“编译原理”理论教学知识的先期注入配套;《编译程序的实现原理》与“编译原理”工程化理论教学配套;《编译程序的面向对象程序与实现》与阶梯状迭代工程实践项目配套,3部教材前后关联且各呈完整体系。本套教材为清华大学出版社“编译原理及其实践课程的工程化教学课群研究”立项项目,已出版1部,另2部明年中旬出版。

1.2.6评价体系

编译原理课程的工程化实践教学评价体系包括对学生工程素质和对教学体系的评价。

学生工程素质的评价采用过程化考核管理标准,即把工程化能力和职业素质引入学生工程素质的评价体系,加大工程化实践环节的比重,形成专业理论知识和实践能力并重的考核体制,将期末一张试卷定成绩的考评机制改为由工程化实践项目、随堂测验、论文、面试、考试、团队等多种形式相结合的评价机制,防止实验抄袭现象。编译原理课程考核采取理论知识和工程化实践项目完成情况的综合考核方式,工程化实践项目根据项目设计报告、软件开发文档、源代码和运行系统的质量进行考核,学生成绩以登记评定方式给出。

教学体系的评价采用回馈化考核管理标准,即把企业回馈和毕业生回馈引入教学体系的评价。对企业和毕业生进行跟踪调查,通过收集企业和学生的反馈指导教学和实践项目的设置和修订,形成良性循环,为进一步提高教学质量打下坚实基础。

2结论

软件工程是集计算机科学与技术、数学、经管等多学科的交叉性学科。作为一名软件工程教育者,我们必须建立一套具有自身特色的工程化人才培养体系,培育具有国际竞争力的一流软件产业高级/高端人才,结合软件工程人才的学科交叉性、偏重实用、职业定位等特点,系统深入地研究软件产业对技术型、管理型的人才需求,注重学生综合能力和专业素质的培养,才能在计算机系统、软件工具、软件工程和管理上循序渐进地提高学生的能力。

参考文献: