时间:2022-06-14 08:26:56
引言:寻求写作上的突破?我们特意为您精选了12篇软件工程专业论文范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
以行业、企业实际对人才需求为引导,软件工程专业毕业生真实就业情况调查为依托,地方高校软件工程专业课程一线教师众多教学研究成果为参考,专业教师在企业挂职学习经验体会为借鉴,围绕地方高校软件工程专业课程教学体系存在事实问题,来对地方本科院校软件工程课程体系建设进行设计建设。设计建议如下:
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校企合作运用项目方式指导学生做毕业论文(设计)毕业论文(设计)是对学生的专业知识掌握程度与提升高度的一次全面的考核,同时也是培养学生综合运用所学知识,独立地分析问题和解决问题的能力的一次全面的实训。但是传统的教育模式导致大多地方院校工科专业学生毕业论文流于形式,与实际脱节。通过与企业合作运用项目方式指导学生做毕业论文(设计)弱化学生对毕业论文(设计)的抵触情绪,可以进一步让学生了解行业企业实际运作规范及最新技术,进一步加强对学生实践和技能能力的培养,为毕业后从容就业夯实基础。
传统的软件工程专业教学模式体系的基本教学理念是重视“知识型”人才的培养,注重书本知识理论的讲解与掌握,忽视了学生实践能力的培养。从当前高校软件工程专业教学情况来看,课程的授课基本都是沿用理论课——实验课单一模式。其中理论课所占课时比重更大,实验课则相对弱化,而且理论课与实验课的结合程度并不十分密切。所占课时比重较小的实验课教学环节,多数都是进行教师事先安排的实验内容,教师在实验过程中给予指导和评测。实践证明,这种课程教学模式下出来的软件工程技术人员与时展要求严重脱节,难以满足社会对综合软件设计与开发技能人才的需求。
1.2教学目的脱离实际
软件工程专业课程是计算机软件、硬件和网络相结合,注重软件理论和软件开发能力的培养,该课程强调理论与实践的有机整合。然而,现行的高校在开展软件工程专业教学活动的过程中,却难以做到理论教学与实践教学的统一,时有厚此薄彼的现象发生。在强化理论知识的同时忽略了实践的应用,在加强实践教学的同时却又忽略了理论知识的融合。不能很好的体现高校软件工程专业教学围绕职业发展需要开发,职业特点不明确,不利于学生综合能力的发展。
2高校如何进行软件工程专业教学改革的几点做法
2.1以社会需求为导向,革新教学模式
随着社会经济体系结构的进一步调整,软件行业人才标准也在不断发生变化,高校教育的人才培养目标,人才培养方式也应跟随时代变化进行相应的改革。教师在进行授课的过程中,要跳出“教”的禁锢,从总体目标出发,进行学科教育向职业化教育的转型,以满足社会对高级软件工程师的需求。
(1)根据社会需求,合理确定知识结构
知识结构是培养学生专业技能和提高学生素质能力的前提与基础,知识结构的确定,必须满足社会发展需求,以“必需、够用”为度,并要求学生具备足够的发展潜质。因此,教师在分析知识结构时,应首先以社会发展对软件工程专业的能力要求为出发点,通过对能力进行分解,分析满足学生能力发展要求应具备哪方面的知识和技能,对相应的知识点进行组织,合理确定知识结构,努力体现“三个面向”,面向软件工程专业发展最新潮流、面向软件工程专业市场需求、面向软件工程专业社会实践。例如在开展实践教学活动时,教师除了要重视企业级应用开发的服务器端技术,还要注重云计算技术同JavaEE的整合,同时跟随当前应用开发趋重RIA的特点,加强Flex技术的学习,增加JavaEE和Flex的架构集成技术,以培养市场严重紧缺的具有相当经验的RIA、云计算开发人员。通过对知识结构的合理确定,让学生不但能够对专业知识进行巩固,还能紧贴IT行业的用人需求,从而真正达到学以致用的目标。
(2)以能力要求和知识结构为主线,构建动态教学计划
教学计划是各教学环节的整体设计方案,包括有:课程体系、实践教学环节等的时间分配和次序安排。软件工程专业教师在设计教学计划时,应以本专业能力要求和知识结构为主线,进行教学计划的调整,给以学生明确的思维方向,让学生能够参与到教学的全过程并在课堂教学活动中获得最大的收获。一方面,教师可以注重课程体系的国际化,引进10门美国著名高校卡内基梅隆大学(CMU)软件工程专业的课程,通过与传统教学模式的融合,进一步提高教学水平。另一方面,教师可以注重课程体系的先进性与及时性,定期召开合作伙伴峰会,企业参与人才培养方案和教学计划的制定及审阅,保证课程教学体系与专业信息的及时更新,做到因材施教。
2.2采用案例教学法,通过实例开展学习
案例教学法是指在学生掌握了解相关基本知识和分析技术的能力基础上,通过教师的精心策略和指导,根据教学目的和教学内容,运用经典案例,把学生带入特定教学情景进行分析,通过学生的自主探究和小组合作,进一步提高技术技能水平,同时培养学生沟通能力和协作精神的一种教学方式。软件工程专业教学以培养学生实践、动手能力为主要途径。在实践教学环节,通过案例教学,能把知识点与例子相结合,使学生从个案的分析、比较中,更深入地了解软件系统开发与管理过程,最终达到技术和知识点的掌握。如:《JAVA程序设计》课程的教学时,JAVA程序设计以编程为主,如果照搬教材内容,只会让教师讲得枯燥,学生听得乏味。通过融入案例进行教学,可以在向学生灌输编程语言知识点的同时,进一步培养学生分析问题和解决问题的综合能力,进而激发学生的创新能力。2.3强化实践教学环节,提高应用型人才专业技能。据有关数据显示,目前,我国对软件人才的需求已达20万,并且以每年20%左右的速度增长。在未来5年内,合格软件人才的需求将远大于供给。在中国十大IT职场人气职位中,软件工程师位列第一位,软件工程人才的就业前景十分乐观。然而,各大企业在面向各大高校招聘软件工程应用型技术人才时,普遍注重学生的综合实践能力。对于如何把学生培养成为受企业青睐的技术型人才,强化教学活动中的实践教学环节,提高应用型人才专业技能,是促使学生综合实践能力全面发展的必有之路。因此,一方面教师在开展教学活动的过程中引入现代化教学手段和仿真实验教学手段,调整教学重点,发挥软件工程专业实践教学的中心地位。另一方面可以进一步加大实验室对学生的开放力度,尽可能地为学生创设动手实践的氛围、为学生提供更多的动手实践机会。同时,还可以开展大型综合实验、综合实训、企业实习、毕业设计等实践教学内容教学,通过开设大型综合性的实验课程或综合实训课程、组织学生到Ⅱ企业顶岗实习、利用所学知识进行项目开发的能力和就业竞争能力。
2.4加强教学队伍的建设
高校软件工程专业教学水平的高低,取决于教师队伍的素质,他们素质的高低将直接影响到课堂教学活动的开展和学生能力的培养。因此,加强高校教学队伍建设,强化教师业务培训,提高教师的业务水平,是顺应教学改革的重要举措之一。首先,学校要组织鼓励软件工程专业教师加强学习、钻研业务,掌握教学技能,提高他们的教学水平和教学技巧。同时,学校加大对软件工程专业教育的投入,多组织高校软件工程专业教师参加省级培训、校级培训等再培训工作,着手培养基础好、教学技能优秀、有事业心、敬岗爱业的专业教师,增强软件工程专业教学师资力量。
1. 企业用人学历要求走高
据中国软件行业协会《2013年中国软件与信息服务业人才发展报告》(以下简称《报告》)调查统计,从全国软件企业对软件人才的需求来看,本科学历需求量最高,占51.6%,其次是大专学历,为36.2%。《报告》显示,2013年,软件企业对应届专科毕业生的不满意反馈比例最高,占到17.3%,表示比较满意的企业仅占35.2%。而对应届本科生毕业生的不满意率有所下降,为13.3%,但比较满意的评价也有所减少,仅为27.8%。相对而言,应届研究生更能得到软件企业的认同。
以上各项数据表明,企业对软件人才学历的要求已经呈现逐年走高的趋势。特别是90后进入职场以后,这一趋势更加明显。不难理解,自2011年开始,人口出生数量低谷导致生源数量急速下降,使得部分高校面临严峻的生存危机。为了完成招生指标,高校不得不降低门槛,伴随而来的就是生源质量的下降。随着90后进入高校,这种现象愈发显著。这也就迫使企业提高员工的学历要求,本科越来越成为最低入职门槛。
2. 软件行业技术的要求
伴随着移动互联、云计算、物联网、大数据等新技术新应用的飞速发展,软件技术呈现出两种走向。一种是面向移动互联等技术,以短平快的轻量级产品开发为主,要求开发人员不仅掌握开发技术,还要有比较开阔的视野,要对美工、产品设计、用户体验等多个领域有所领悟。另一种趋势是面向框架技术、云计算、物联网、大数据等背景,软件产品趋向于航母级规模,要求在某一领域技术非常精专的同时,要对软件有较高层次的视角和更全面的认识。无论是面向哪一种走向,对从业人员的要求都是越来越高,越来越全面。这也是对从业人员学历要求日趋走高的重要原因之一。
二、软件工程专业内涵
我国软件工程教育经过多年发展开始逐步走向成熟。2005年教育部组织编写了软件工程专业规范,2006年成立了软件工程专业教学指导分委员会,其重要任务就是要根据现代软件工程人才的培养要求,不断发展和改革软件工程专业教育,而改革的目标和重点在于培养高质量的、适应社会经济发展需要的软件人才。
软件工程专业是一门关于如何构建有效、实用、高质量软件的技术性学科。它涉及到计算机应用技术、程序设计语言、数据库、软件开发工具、系统平台、行业相关标准、设计模式、软件开发方法、软件开发过程、软件开发环境、软件测试技术、数字化技术、计算机辅助软件工程(CASE)、软件质量管理及软件经济学等方方面面的内容。由于软件工程要求应用计算机科学和数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量和成本的管理,因此,软件工程也是一门实践性非常强的学科,融合了计算机科学、数学和管理科学等现代科学。综上所述,软件工程专业的学生必须学会将理论原理和实践相结合,不仅要具备良好的软件设计能力,还要能够超越计算机学科获得其他应用领域的专业知识,从而支持其他应用领域软件系统的开发。
三、探索应用型本科的职业教育特色
目前,开办应用型本科专业的院校有两大来源,一是普通高等教育转型而来,二是原有高职院校升格而成。在开办应用型本科软件工程专业的过程中,既不能照搬原有高职专业课程体系,也不能一味模仿本科院校教学计划,而背离本科教育的优势和职业教育的特色。比较合理的思路是在尽可能保留现有专业优势的同时,将本科层次的优势和职业教育的特色有机结合。
1. 专业课程设置
无论是哪类院校开办应用型本科软件工程专业,都会在原有课程基础上设置部分新课程,还有部分课程虽然与原有课程名称相同或相近,但内涵和定位会有所区别,需要重新建設。因此,一项重要工作是研究课程关系,探索建立科学合理的课程体系,并在此基础上,确定各门课程的内涵。
为了顺应软件行业发展的趋势,应用型本科设置的专业课程,应突出深和新两个特点。一类课程在理论上有一定难度、深度,在某一领域引领学生深入开发或研究,并培养学生的专业理念,如操作系统、数据结构、软件工程以及一些框架级开发技术等类型的课程。另一类是新技术方面的课程,体现行业前沿技术和发展趋势,用以拓展专业视野,如移动互联应用开发、虚拟化技术与云计算、大数据处理技术等类型的课程。
高职、研究型本科和应用型本科的人才培养定位各有不同。高职层次的目标定位是培养技术技能型人才,普高研究型本科的人才培养目标是高素质研究型人才,而应用型本科的专业培养目标是高新技术应用型人才。因此,两种来源的院校在设置专业课程时,切忌简单照搬原有课程内涵,即使课程名称相同,教学内容也应有所区别。理论为主的课程,如上述操作系统、数据结构、软件工程及框架技术等类型的课程,在满足理论深度要求的同时,一定要保证理论与实践相结合,使理论能落地,避免空洞理论的堆砌,避免口说无凭。而在实践性较强的课程中,如软件开发、实操类课程中,要注重渗透理论性、理念性的内涵,强调精、专,内容上有一定的深度和广度,避免泛泛而谈,避免知其然不知其所以然。
因此,应用型本科的课程设置要注重理论深度和广度与坚持课程体系和课程内容的实用性和应用性相结合,才能较好地在满足本科层次要求的同时突出职业教育特色。
2. 校企合作共建软件工程专业
在建设职业教育特色的软件工程专业过程中,发挥行业企业的作用,可以有效地为校企合作搭建平台,开展企业参与办学、指导学生就业、资源共享、战略合作等一系列工作。
企业参与制定专业发展规划,可以对学校的办学定位、专业发展方向提出可行性建议。通过企业调研访谈,可以了解行业最新技术动态和用人需求,修正课程体系和课程内容设置的偏差,及时更新教学内容,共享先进技术,利于专业发展与行业需求无缝对接。
以专职或是兼职教师的方式引入企业人才,可以有效解决因新技术发展过快等因素而导致的师资力量不足和师资队伍培训的问题。组织学生到企业参观和实践,使学生了解企业工作模式和工作流程,感受企业文化,可以为今后就业作好准备。企业与学校共建实训基地,提供校外实习场所,选聘技术专家指导实习,协助落实学生就业,利于学生快速适应社会需求,实现就业的平稳过渡。
企业可以共享学校的场地、设备、人力等资源,学院可以共享企业的管理经验、企业信息、用人需求信息、软件项目和研发技术等资源。企业和学校合作完成科研项目,积极推进先进技术和科研成果转化,可以实现校企双方互利互赢。
企业招聘软件工程专业人才的理想期望是上岗就能工作,不需要再培训或只需要简单的培训就能符合企业的技术能力要求,最少能够熟练应用一种计算机语言来开发项目,编程能力要强,最好具有项目开发经验。当然每个软件工程专业开发人员的技术方向不一定与企业要求的相同,但只要经过短时间的培训或自我提高后能够胜任实际的开发工作也是符合企业要求的,但用人企业能招聘到可以独当一面或胜任技术开发工作的合适员工并不容易。许多软件工程专业毕业生眼高手低,解决实际工程问题能力差,软件开发能力不强,或者完成额定工作的周期长,这些除了工作经验不足以外,还与在校学习期间学校实验教学方面存在一定的不足有关。
二、软件工程专业教学过程概述
各大学软件工程专业课程设置情况并不相同,随着时间的推移及计算机技术的发展,同一个大学的课程设置也会不断地变化以顺应时代的发展。目前大部分院校的软件工程专业设置的专业课程至少包括这样几门:计算机组成原理、数据结构、算法分析与设计、编译原理、操作系统、数据库原理、软件工程以及许多热门的高级语言课程。其中高级语言课程有C++、ASP.NET、JAVA、PHP等。理论课的学习不论是通过板书还是通过课件都是以教师讲授学生听讲这种方式进行。软件工程专业课的实验类型大部分是验证性实验,还有少部分综合性实验以及设计性实验。实验教学是理论教学之后的又一种教学形式,是对所学理论的验证,再巩固,再记忆以及发现问题解决问题的知识和认识扩展过程,是完整教学环节的重要一环。软件工程专业课都有实验教学环节,是整体专业教学的一部分。整体教学质量好与差,学生专业技能高与低都与实验教学环节分不开。
三、实验教学过程问题分析
没有经过实验教学环节培养就不可能深刻理解课堂所学理论知识。教师在完成某些小章节的理论教学之后就应安排学生进行实验课学习,大部分实验课的实验内容是验证性实验,也就是实验内容与所学章节的理论知识内容相同或联系紧密。验证性实验是巩固理论知识,加深对课上知识理解的一种必需的实验教学过程,没有验证性实验就不可能完成好后面的综合性实验和设计性实验,验证性实验是综合性实验和设计性实验的基础。综合性实验是在课程的某一教学内容相对独立部分完成之后开展的能够综合所学内容的实验,是学生将有关内容串起来,有一点小规模项目意识或者说是能实现一定的功能的实验,比起简单的验证性实验要复杂一些。而设计性实验是有一定开发性质和需要创新思维的实验,有一定的难度,教师给出实验目标和要求以及必要的提示,学生根据所学知识设计实验方法和编程算法去实现实验的要求和实验的最终目标。目前的情况是,所有要求上的实验课教师都带领學生完成了,实验课学生也都参加了,但最终的实验教学效果却与学生应该达到的水平、目标有一定的差距,这与实验室的设备条件不够充裕不够先进、上课教师要求不严、学生实验不认真、考核方式有问题以及实验教学方法不够理想等都有关系。现在的实验课的班量都是两班量或三班量,也就是80到120多个学生同时上实验课,只有一位教师授课,恐怕一节课也就只能为几个学生解答实际问题,如果计算机本身也总出现问题的话,这一节课的时间就真的显得太短了。好多学生的自我约束能力差,上课爱打游戏,爱讲话,喜欢看手机,上课时只是在教学系统上签个到,那这节实验课对于这样的同学就是白白浪费掉了。教师在实验课上讲解实验内容和要求,指导学生做实验,然后收作业或者实验报告是比较普遍的实验教学形式,这样的形式无法满足学生需求。实验教学质量受到多方面的影响,需要实验教师和学生的共同努力来改进和提高。为了提高应用型本科软件工程专业实验教学质量,有必要提升实验教师的综合素质,需要在实验教学过程渗透项目驱动思想,也需要开放计算机实验室。
四、提高应用型本科软件工程专业实验教学质量的措施
不同的实验教师的实验教学效果是不一样的,因为实验教师的授课技能和专业技术水平各有差异,提升实验教师的综合素质是提高应用型本科软件工程专业实验教学质量的前提。在实验教学过程中只是为了完成实验教学任务而上实验课与带着项目开发的指导思想上实验课的教学效果绝对不会一样,学生学到知识多少与深浅都不会一样。在实验教学过程渗透项目驱动思想是一项有效提高实验教学质量的措施。在实验教学管理方面开放实验室是一个值得推行的好举措,可以使学生有更加自由的学习与研究空间。
(一)提升实验指导教师的专业技术水平
大学里的计算机实验教学指导任务大都由理论教学的任课教师承担,当然有些院校的实验指导任务是由专门的实验教师来承担的。软件工程专业的实验教学效果与实验指导教师自身的专业修养有很大的关系。一位有过多次实际项目开发经历的实验指导教师与一位从没开发过实际项目的实验指导教师在实验教学过程中讲解出的内容是不会一样的。以ASP.Net实验课程教学为例,有过多次实际项目开发经历的实验指导教师在指导通过编程访问数据库这部分内容时会讲到sqlCom?鄄mand类对象三种方法的区别以及三种方法的最合适应用场合,会讲到使用SQL语句直接访问数据库与通过存储过程来访问数据库的不同之处;而从没开发过实际项目的实验指导教师在实验指导过程中就不会强调类似的实际项目开发过程中可能碰到的实际问题的最佳解决方法。在知识面这方面,当然是实验指导教师的知识面越宽越好,以C++语言课为例,一个合格的实验指导教师在实验指导过程中会不自觉地将最优算法的思想渗透到实验教学过程中去,虽然有专门的算法实验课,但是如果能在C++实验教学中加入算法的技巧,会使学生养成在解决实际问题过程中考虑最优算法的良好习惯。学校应该重视提高教师专业技能水平的培养工作,应该鼓励教师参与科研与项目的开发工作,只有在实际的项目开发过程中才会遇到问题,在问题的解决过程中才会有收获,才能与当前的前沿技术手段靠近或接轨,才能够以科研反哺教学。提升实验指导教师的专业技术水平有多种途径,鼓励教师参与科研与项目开发只是其中的一种。
(二)将项目驱动思想渗透到实验教学过程中
在实验教学过程中,如果能以实际项目需要为导向,将项目驱动的思想渗透到每一节实验课中,学生一定会受益匪浅。应用型本科软件工程专业学生毕业后的专业方向就是软件开发,大学四年的知识积累与储备就是为最终的软件开发做准备的,大部分学生将来的就业方向就是到企业做项目开发工作。
如何将项目驱动思想渗透到实验教学过程中的主动权在实验指导教师手中。对于每门专业课的基础部分实验,也许可以不涉及实际项目,但有些实验如果能讲清楚该实验内容如何在实际项目开发过程中应用会收到更好的教学效果。以微软的SQL Server设置数据库中表的主键自增长列为例,如果只是为了做实验而做实验的话,可以只要求学生在创建数据表的过程中设置唯一的ID列为主键自增长列即可。如果老师有工程项目意识的话就可能把这样做的目的和好处以及如何在软件项目开发过程中去具体使用都介绍清楚。将项目驱动思想渗透到实验教学过程中是提升应用型本科软件工程专业实验教学效果的一种有效方法,渗透多少,以及涉及的项目开发深度与广度也是值得研究的,真正上好一次实验课并不简单。还是以上面的SQL Server设置数据库中表的主键自增长列为例,如果扩展开,和学生们探讨一下只设置数据表的某列为主键而不设置该列为自增长字段,这样可以不可以呢?当然可以了,只要保证将来在插入记录的过程中该主键字段的值是唯一的就可以了。那么再扩展一点,如何通过编程来保证字段值唯一,以及这样做与设置该列为自增长列对比起来有何优缺点?这些都是将项目驱动思想渗透到实验教学过程中的具体体现。学生在实验教师的带动下用项目驱动的思想去完成实验学习收获会大不相同。
(三)开放计算机实验室
哈工大软件学院软件工程硕士的培养目标是培养学生掌握软件工程领域的基础理论、先进技术方法和手段,具备独立承担软件工程技术工作的能力、组织和管理专门技术工作的能力,同时具有较丰富的、与国际接轨的学习训练经历,工程实践经验,企业经历和良好的职业素质;使其树立科学的世界观与方法论,品行优良,身心健康,成为具有国际竞争力的软件产业高级人才,为进一步成为软件产业领军人物(高层技术人才与管理人才等)奠定坚实的基础。面向企业,综合考虑软件系统分析与设计能力、项目管理能力、企业管理能力、组织与沟通能力、团队合作能力等方面的需求,根据学科专业方向的设置,按照“模块化知识体系与能力体系相结合,体现国际化与工业化特色”的原则,我们制订了软件工程硕士课程体系框架结构,如表1所示。软件工程硕士课程体系框架针对培养目标和企业的需求,对能力培养的具体目标进行模块划分,横向构造“6个能力层面”;纵向根据专业方向划分为多个能力域,形成多个能力培养模块。软件工程硕士的专业方向应紧跟行业需求,灵活设置。近几年,哈工大软件学院先后设置了网络与信息安全、语言处理与信息检索、数字化企业与电子商务、嵌入式系统与软件、物联网工程和移动互联等专业方向。在专业要求方面,全日制学生必须修满32学分;在职学生必须修满35学分。软件工程硕士研究生学制2~4年,在校学习1年,修满规定的学分,包括参加企业实训3周;实习基地实习1年,结合企业项目,完成学位论文。企业实习期间实行双导师制,校内导师和实习单位导师分别指导项目开发和学位论文撰写工作。校内学习与企业实训交叉进行,校企合作,产学研结合,联合培养软件工程专业硕士。
2组建专兼职结合的国际化、工业化高水平师资队伍
构建3支师资队伍,每支队伍30人左右。建立以工业型师资为核心的专兼职师资队伍,形成工业型专职教师、校内及国内外兼职教师相结合的师资队伍结构,是实现国际化、工业化培养目标的重要保证。第一支是以工业型师资为主的专职教师队伍。这些专职教师多数来自工业界、国外著名大学或国内外IT企业等。其中除任课教师外,还设若干专职实验教师岗位。实验教师主要负责专业课的实践环节教学,包括实验设计与指导、上机指导、课程设计和毕业设计等实践教学环节,同时实验教师还负责TA(实验辅导教师)的培训及管理工作。第二支队伍由计算机科学与技术学院和管理学院认证并聘请的校内兼职教师组成。他们主要负责软件学院的基础课、计算机专业基础课和管理系列课程的教学任务。第三支队伍由来自国外高校或国内外知名IT企业兼职教师构成。他们来自行业前沿,掌握国内外最先进的软件开发技术和人才培养经验,了解企业最新的技术需求。他们在承担软件学院的软件工程类、软件工具平台类的课程部分教学任务的同时,作为双导师制的企业导师,在研究生的工业实践、毕业设计、学位论文的指导中发挥重要的作用。以工业型专职教师为主、校内兼职基础型教师为辅、国内外兼职教师相结合的师资队伍结构,可以满足软件工程硕士国际化、工业化的人才培养需求。
3校企合作,加强企业实践教学
建立完善的工业型软件人才培养体系,包括工业型人才培养方案、课程体系与教学大纲、质量保证体系、工业化教学方式、技能实验与大作业、综合设计与企业实训、工业实习与学位论文、校企联合实验室与实习基地建设等环节,将“工业化,个性化,精英式”的办学理念贯穿于人才培养的全过程。在校软件工程硕士第1学年寒假要到企业参加为期3周的实训。实训由学院统一带队组织,实行半封闭式管理。期间接受企业培训,在企业导师的指导下分组完成指定的项目。通过强化训练,学生可以了解企业的项目开发流程,学习运用所学理论解决实际问题的方法,发现学习中的不足和技术上的差距,对后续学习起到引导和促进作用。第2学年,学生到实习单位实习并根据实习期间的实践工作内容撰写学位论文。对硕士毕业论文的要求是:具有系统性和完整性,能表明作者具有一定的独立工作能力;理论联系实际,应用所学的理论知识解决实际工作中的关键问题;具有实用性且必须包含一定的工作量。取得的成果要有一定的先进性,要能表现出学生具有综合运用所学知识解决工程实际问题的能力。从2002年至今,哈工大软件学院建立了完善的工业实习管理制度,在国内外建立工业实习基地70余个,实际接收学生实习的企业达200余家。工业实习基地的建设有效保证了工业化人才培养的质量。为加强与企业界的沟通,了解企业需求,完善培养体系,提高学生工业实习质量和加强工业实习管理,学院定期举办“工业化人才培养与企业合作高级研讨会”,与企业界人士研究和探讨工业化人才培养中的合作问题,企业参与意识很高,取得了较好的效果。
4与国外大学合作,联合培养软件工程硕士
通过对软件工程国际化人才特点及成长规律的研究,我们对软件学院国际合作办学模式开展了学科专业、教学体系、合作形态、组织方式、国际文化交流等层面的前瞻性研究,率先提出并建立了特色鲜明的多国联合办学、多学科交叉渗透、多国文化融合的,培养高层次、复合型软件工程人才的国际化联合教育模式。哈工大软件学院与法国波尔多第一大学、法国克莱蒙-费朗第二大学、德国柏林工业大学、爱尔兰都柏林工业大学、爱尔兰国立都柏林大学、美国Embry-Riddle大学、意大利帕维亚大学、瑞典林雪平大学、日本会津大学等合作,采用哈工大软件工程硕士专业学位(MSE)+合作方硕士学位(X)的“MSE+X”模式,联合培养硕士研究生。培养过程共分4个学期。第1学期,学生在各自学校学习;第2学期,外国学生来哈尔滨工业大学,与哈工大学生合班学习;第3学期,中外学生一起去合作方学校学习;第4学期,学生自选在国内、外企业实习、撰写学位论文、答辩毕业,哈工大与国外大学分别颁发硕士学位证书。跨国联合培养班的全部课程采用英语教学,实行三导师制,由国内、国外大学和企业导师共同指导。为加强交流,每年举办一次“中欧软件工业教育国际研讨会”,来自海内外的高校教师、企业界朋友在一起交流经验,共同探讨国际环境下人才培养的相关问题。多国联合培养软件工程硕士实现了国际化与工业化办学理念的教育模式与教学体系的设计与实践,软件工程国际化人才的跨国联合培养模式及实践,面向企业人才需求的教学与工业实习,国际化师资与专家队伍建设,教育质量保障体系建设与管理及跨文化的融合等目标。
5完善质量保障体系,加强过程管理借鉴
欧美教学质量保证的成功经验,哈工大软件学院建立完善且适合自身特点的国际化、工业化人才培养质量保证体系。学院成立教学指导委员会和教学督导委员会,在各个培养环节上严把质量关,把规定、培训、预防、跟踪、反馈、控制等质量保证活动渗透到教学执行过程中的每个环节。加强实践教学环节的监督检查,有效保证教学质量和人才培养质量的稳步提高。为提高软件工程硕士的指导质量,学院成立了若干个指导教师组,每个指导教师组负责一个专业方向的硕士指导,设组长1人,负责本组指导教师的组织和督导。每名硕士研究生指导教师每年指导的硕士研究生不超过4人。学院组织专家组审核学位论文。只有通过了专家组的审核,学生方可申请学位论文答辩。另外,硕士研究生开题、中期检查和结题验收、论文等环节也有详细的规章制度、严格的过程管理,这是提升硕士研究生培养质量的有效手段。
6成果与特色
在软件工程硕士研究生培养的实践中,哈工大软件学院在以下几个方面取得了优异的成绩,形成了自己的特色,积累了丰富的经验。(1)面向软件产业的人才需求,校企合作,形成较为完善的应用型硕士研究生的工业化人才培养体系,开展多种形式的校企合作,建立有自身特色、符合国际化标准、满足软件企业需求的工业化人才培养计划。(2)创立软件工程国际化人才培养模式和教育体系;实现“跨学科融合,双边对等招生,联合培养,融合文化”的“MSE+X”软件工程硕士跨国联合培养模式,为学生提供国际化学习环境。(3)建立与国际接轨的办学机制和教育质量保证体系,实施课程考核累加计分制等教学管理新制度。(4)培养了一大批具有国际竞争力、满足企业需求的高级软件人才。
专业人才培养不具有明确针对性,人才培养结构合理性欠缺,专业人才培养层次相对单一。造成这一问题根源是地方院校对行业企业实际需求不明,导致专业人才培养定位不清。毕业生虽然专业知识结构比较全面,但实际工作能力不强,无法满足企业实际需求。
1.2专业课程设置不合理
课程体系建设是地方高校软件工程未来走内涵发展道路的核心。从调研地方本科学校现有软件工程课程体系实情来看,传统“学术型”课程体系架构占据主导,“应用型”与“学术型”课程体系架构区分度不明显。
1.3教师队伍应用型能力欠缺
地方高校软件工程现有师资队伍的实践能力不足,专业教师参与企业生产科研活动的力度不够。双师型结构教师比例低于30%。
1.4专业人才就业率低与企业“无人可用”矛盾冲突明显
软件工程专业高层次应用技术和技能人才数量严重不足,同时应用技术和技能人才培养的学历层次不高不能满足企业实际需求。地方高校软件工程专业定位和人才培养目标不明确、教学方式方法缺乏科学性、系统性,实践教学体系不完善,没有与行业就业有效对接,导致培养的人才无法满足社会生产实际需求,导致“软件工程专业毕业生无职可就,软件开发行业以及相关软件应用单位招不到满意的员工”现状普遍存在。
2软件工程专业课程体系理论设计
以行业、企业实际对人才需求为引导,软件工程专业毕业生真实就业情况调查为依托,地方高校软件工程专业课程一线教师众多教学研究成果为参考,专业教师在企业挂职学习经验体会为借鉴,围绕地方高校软件工程专业课程教学体系存在事实问题,来对地方本科院校软件工程课程体系建设进行设计建设。设计建议如下:
2.1学科建设
以专业相关的行业、企业人才的实际需求和当前使用的主流开发工具或技术为依托来不断调整专业架构,优化专业人才培养方案,完善人才培养目标,对专业进行合理定位,系统性调整教学方式方法,从而实现以行业、企业对人才的需求来引导地方本科院校软件工程专业的学科建设。
2.2校企办学
学科建设以输出满足行业、企业需求合格的应用型人才为目标,通过校企联合办学,对学生进行定向培养、训练,专业课程体系嵌入资格认证课程模块,实训课程以企业开发项目方式贯穿培养环节以达到提高专业人才的实际动手能力。
2.3师资建设
采取教师企业挂职锻炼参与企业项目研究开发,共同承接开发项目等方式锻炼提高师资队伍实战能力。教师在企业实战经历和相关经验成果带入到日常的教学环节,不仅能促进专业教师学术、科研能力提升,还能够最大程度丰富、提高专业学科建设。
3三层结构课程体系建设
软件工程专业课程体系建设以工程教育理念为指导,项目实战为背景,社会需求为导向,提高学生专业素养、理论知识体系以及实践能力为宗旨。学生完整地专业培养环节结束后具有程序设计,系统分析,软件设计、开发,项目管理,网络和移动通信终端应用开发能力。
3.1基础理论
由公共基础课程和专业基础课程构成:
①公共基础课程主要涵括地方高校各现行必修公共课程,
②专业基础课程是专业课程坚实的理论基础,专业必修前导课程,是对软件工程专业基本“计算”概念理解、掌握,问题计算求解能力和构建中小规模软件系统综合能力的初步培养。
3.2专业理论
以市场对人才需求为导向、行业最新前沿技术为引领、专业骨干课程为核心、专业素质全面拓展和综合素养整体提高为目标来对专业主干课程进行建设,主要包括以下几类课程:
3.2.1面向行业认知能力培养课程主要包括对行业、企业认知学习以及计算机专业知识学习等专业认知方面课程。一般包括行业相关法律、法规,从业道德规范,行为准则,经营管理常规模式,软件项目开发流程等认知类课程。
3.2.2计算机编程与算法设计能力课程算法设计类课程主要包含离散数学、数据结构、算法分析以及数据结构课程设计等方面的课程;编程课程主要包含C语言程序设计、面向对象程序设计等传统程序设计语言课,还包括当下企业应用最为广泛的,最流行的技术前沿课程。
3.2.3软件工程专业系统分析课程系统分析能力课程主要包括操作系统、计算机网络,软件工程、数据库原理等系统类课程。
3.2.4系统实现与集成能力课程系统实现与集成能力方面课程主要包括网络编程、移动互联开发编程、编译技术、软件开发以及软件测试等课程。
3.3实践
以校企联合培养为手段,一至两学年时长为周期,贴近企业实际需求为指导,综合技能全面提高为目的来对专业学生进行实践能力培养,方式如下:
3.3.1校企共同建设实训课程以项目介入为主线,企业实际效益项目和高校产学研项目为实际授课主体。引进企业优秀项目人才或具有企业项目实战经验的教师来对专业人才展开课程实训,全面提高学生专业技能水平,综合素养。校企共同培养模式不但能够提高学生工程实践能力,知识转化生产实际速度,同时反向激发学生探究、学习知识的热情,最终提高就业竞争力。
3.3.2合作企业岗位实训针对毕业学生和部分专业老师做岗位综合实训:
①学生岗位实训:让学生真实参与企业项目实战,充分消化吸收前期所学理论和技能知识,进一步提升学生综合能力,为就业夯实基础。
②老师岗位实训:专业老师参与企业项目研发,并将企业项目开发经验和技术进行梳理总结、编纂成册,运用到实际日常教学环节,促进教学质量提高,有利于缩短理论转化实际成果周期。
3.3.3校企合作运用项目方式指导学生做毕业论文(设计)毕业论文(设计)是对学生的专业知识掌握程度与提升高度的一次全面的考核,同时也是培养学生综合运用所学知识,独立地分析问题和解决问题的能力的一次全面的实训。但是传统的教育模式导致大多地方院校工科专业学生毕业论文流于形式,与实际脱节。通过与企业合作运用项目方式指导学生做毕业论文(设计)弱化学生对毕业论文(设计)的抵触情绪,可以进一步让学生了解行业企业实际运作规范及最新技术,进一步加强对学生实践和技能能力的培养,为毕业后从容就业夯实基础。
关键词:
软件工程学科;博士研究生培养;改进措施
0引言
在信息化浪潮的促动下,我国软件工程学科高层次人才队伍培养经历了跨学科培养、海(境)外引进、相近专业转行等方式。2001年12月,教育部首次批准全国35所高校试办示范性软件学院(教高[2001]6号)[1]。以2011年3月教育部颁布的《学位授予和人才培养学科目录(2011年)》(学位[2011]11号)[2]为起点,软件工程专业从计算机科学与技术学科“脱胎”出来,正式成为一门新的学科,标志着我国软件工程学科高层次人才培养完成了由学科从属型向学科独立型的跨越。这一跨越无论对于软件工程的学科建设,还是对于其高层专业人才的培养都具有顶层设计意义。正是由于这一顶层设计的作用,2011年8月教育部首次在我国48所高校增设了软件工程一级学科的博士点和硕士点[3]。截至2015年,全国拥有软件工程学科“博士一级”授权的高校已达52所,具有“博士二级”授权和硕士授权的高校达到106所。我国软件工程高层次人才培养支撑了国家信息产业的发展,基本适应了经济社会的发展和国防建设的需要,缩短了我国此学科与发达国家间的差距。由于软件工程学科高度的交叉性、领域的渗透性以及需求的无限性,我国软件工程学科高层次人才的培养特别是博士研究生的培养,无论在基础理论、课程设置,还是在培养方式、评价体系等方面都存在着一些问题。
1存在的主要问题
1.1学科课程体系特色不彰显
我国软件工程学科是从计算机科学与技术学科分化而来的,虽然已经独立为一级学科,但由于其和计算机科学与技术学科的紧密联系,在博士研究生课程体系的设置中,仍然有很多内容与计算机科学与技术下的二级学科“计算机软件与理论”和“计算机应用技术”极为相似。根据对国内60所具有软件工程一级学科博士点(39个单位)和一级学科硕士点(21个单位)的高校官网上所公布的研究方向和培养方案进行的统计分析,计算机软件与理论二级学科和软件工程一级学科相似度高于70%的研究方向占到了25%,相似度低于20%的研究方向仅为8.33%。从两个学科开设课程相似度的比较来看,同一课程类别开设学校比例相似度高于70%的占80%之多[4]。这些统计数字表明,当前我国对软件工程学科和计算机软件与理论二级学科博士研究生的培养,在课程设置上并没有本质区别。和计算机科学与技术学科的博士生相比,软件工程教育的核心是能够解决实际工程问题。软件工程学科的博士生要熟悉一个或数个应用领域的相关知识,并强调综合应用各种软件工程方法与技术[5]。他们在软件工程知识广度和深度、工程实践能力、沟通表达能力等方面比计算机科学与技术学科的博士生要更加优秀。但在目前软件工程学科课程体系下,软件工程学科博士并没有显著特色与优势,这将影响本学科博士研究生的培养质量。
1.2科研考核指标缺乏本学科特点
为了保证博士研究生的培养质量,我国各大高校都相继出台了博士生研究生考核指标体系。博士研究生依靠发表“垃圾论文”,以“论文灌水”等方式蒙混毕业的时代已经一去不复返。一般来说,规定在国内重要学术期刊或在国际SCI检索期刊上是博士生毕业并取得学位的基本条件之一。这些科研考核指标的制定给软件工程学科的博士研究生培养质量划定了红线。但这一考核体系仍具有“重期刊、轻会议”“唯SCI检索”等特点。笔者认为,这种机械式照搬的考核体系挤压了软件工程学科博士研究生的学术空间。软件工程是一门知识更新非常迅速的学科,通常情况下,每3~5年就会有一轮知识热点的更新。对软件工程学科而言,国际会议是最新颖、最优秀的论文展现舞台。学者们通过这个学术交流舞台,与国际同行近距离交流最新、最有价值的学术成果,从而达到掌握该领域学术前沿的目的。如果一味地要求软件工程学科博士研究生只能通过发表国内一流学术期刊或者国际SCI期刊作为毕业条件,将导致两方面问题。一方面,SCI国际期刊或者国内一流学术期刊发表周期相对较长,从投稿到出版一般需要1~2年的时间,有些国际顶级期刊则需要2~3年或者更长时间的出版周期。我国软件工程学科博士研究生的学制一般为3~4年,时间窗口有限,致使不少博士研究生放弃从事创新性强但有一定失败风险的科研课题,而愿意选择创新性较低但比较稳妥的科研课题去做,从而确保早日发表期刊论文而尽早获得学位。另一方面,即使软件工程国际一流学术会议可以代表该学科一流的学术水平,但仅发表国际会议论文往往并不能满足软件工程学科博士研究生毕业的基本条件,导致一些博士研究生不愿将最新最好的成果在一流国际会议上发表,而宁可选择一些水平一般的期刊。这种做法显然不利于我国软件工程学科的博士研究生与国际同行们的交流,实际上造成了我国高档次研究成果的流失,对培养优秀的软件工程人才得不偿失。
1.3对工程实践能力的培养重视不够
软件工程学科本质上是一门工程科学,要求学者们运用数学、工程和管理方法去解决软件工程实践中所遇到的人力所无法解决或者很难解决好的问题。因此,软件工程学科与工程实践问题具有高度的结合性。在软件工程领域,除了少数的博士研究生从事基础理论研究外,大部分研究课题是与具体实际相关的产业化问题。这就需要软件工程学科的博士研究生具备较强的工程实践能力,将理论概念转化成为原型系统或者用实证实验验证理论、方法的动手能力。在实际过程中,一些单位对软件工程学科的博士研究生工程实践能力的培养重视不够。有的博士生在攻读学位期间编写程序的代码行数不超过1000行,有的甚至没有编写过代码;有的博士生导师或博士研究生认为编写程序不是创新性的工作,工程实践是浪费学生或自己的宝贵时间;有的博士生由于在本科及硕士阶段没有打下良好的工程实践基础,导致在攻读博士学位期间其能力不能胜任工程实践。无论出于何种原因,工程实践能力的不足给博士研究生及其所在课题组的科研工作都会带来负面影响。其结果是,博士研究生所提出的方法、理论无法得到工程实践检验,导致科研成果无法落地;另外,缺少原型系统或者实践验证的研究论文也很难在国际高水平会议或者期刊上发表,造成科研工作成为无果之花。
1.4博士生导师指导时间尚显不足
博士生导师对博士生的悉心指导是提高培养质量的关键。相比发达国家,我国软件工程学科博士生导师指导的博士生数量普遍较多,甚至出现一位导师一届招收3~4位博士生的现象。有的博士生导师担任单位的行政职务,因此普遍感觉“日常杂事较多”“工作压力较大”,这些因素从客观上使得博士生导师没有充裕的时间去指导每一位博士生,为数不少的博士生在读期间感到与导师间的交流时间较少。有的博士生反映“长期见不着导师的面”,甚至“一个学期没有和导师单独交流”。这种“放养”现象有悖于对博士研究生的精心指导原则,对提高博士研究生培养质量十分不利。
2改进措施
2.1构建软件工程学科博士研究生课程体系
软件工程的学科内涵是:“以计算机科学理论和技术以及工程管理原则和方法为基础,研究软件开发、运行和维护的系统性、规范化的方法和技术,或以之为研究对象的学科,其研究对象为软件系统,学科涵盖科学与工程两个方面。”据此,我们建议培养单位应当反思当前软件工程学科博士生课程的知识体系,明确该学科博士研究生所应该掌握的学科基础知识和学科特定的高级知识,构建以数学、计算机科学、系统科学、管理学为基础,以软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程方法和工具、软件质量等[6]为架构的软件工程学科博士生课程体系,使之具有鲜明的学科特色,培养真正能在软件工程学科内进行创新性研究的高级专门人才。
2.2鼓励博士研究生向国际一流学术会议投稿
目前,在软件工程学科领域,国际一流学术会议的学术水平已与国际一流学术期刊相当。建议有关主管部门适时修改软件工程学科博士研究生的论文考核体系,不再将“国内一流学术期刊”或者“国际SCI期刊”作为博士研究生论文考核的唯一硬性指标,而将国际一流学术会议论文的发表也纳入可选的硬性指标之一。博士研究生通过参加国际一流学术会议,不仅可以提高自身的学术水平,而且更能向本学科的权威专家请教和学习。通过参加学术会议,博士研究生还可以提高自身的外文水平,扩大学术交流圈。笔者在澳大利亚昆士兰科技大学(QueenslandUniversityofTechnology,QUT)信息系统系访学期间,了解到该系的博士研究生每年均有一次参加所在领域国际一流学术会议的机会,费用可通过博士研究生所在系的培养部门和研究生导师所在课题组协商解决。这种做法是值得借鉴的。
2.3将工程实践能力纳入博士生入学和毕业的考核体系
将实践动手能力纳入博士生入学和毕业的考核体系,有利于培养更高科研素养的软件工程学科博士研究生。譬如,QUT信息系统系的每位博士研究生在攻读学位期间,除了开展理论研究外,还须将自己的理论研究内容通过工程实践实现出软件原型系统。这种做法的益处是:一方面,可促使博士生研究出真正经得起实践检验的高质量科研成果,杜绝了空洞而无实际价值的所谓成果;另一方面,因为博士研究生在各高校院所中实际上已是科研的生力军,由他们动手实践得出的原型系统,对于课题组高质量地完成科研课题也极为有益。建议将工程实践能力的考查纳入博士生入学考试的评价体系中,对于工程实践能力欠缺的考生,要提前排除;同时建议博士生导师高度重视对博士生工程实践能力的培养,对于不能将形成的理论进行原型系统实现或者进行实证实验的博士研究生,在毕业环节上要严格把关。应当鼓励博士研究生在发表科研论文的同时,申请软件著作权或发明专利,从而形成理论研究紧密联系实际应用的良好培养机制。
2.4建立博士生培养的导师组制度
实行导师组制度不仅可以有效弥补博士生导师由于精力不足无法有效指导博士生的问题,而且还有利于形成知识结构合理、思维方式相互补充的导师指导团队,这对培养博士生的团队精神和发散性思维都十分有利。笔者在QUT访学时,校方给我安排了由三位导师组成的导师组。两位副导师很好地配合了第一导师的工作,整个导师组对我进行了非常有效的指导。其中,第一导师负责访学期间学术研究方向的制定及总体研究方法的确定,主抓研究的方向;两位副导师各负责一部分研究细节的指导,主抓研究的具体工作。通过导师组的指导,使我在访学期间不但在学术上有较大的进步,而且还对国外博士研究生的指导方法有了一定的切身感受。事实上,导师组指导制在英式或美式的博士研究生培养中是很常规的做法。在博士研究生培养中,建立导师组制度对于多方面利益群体均有益处。第一,对博士研究生而言,可以接受由两(或多)位导师构成的导师组的指导。由导师组构成的更加丰富的知识平台,可以给予博士生更加全面的指导;第二,对博士生导师而言,导师组制度有可能使主导师从指导工作的细节问题中升华出来,而将有限的精力更加聚焦于宏观上的指导和学术方向上的把握;第三,对副导师而言,通过指导博士研究生的研究工作,也可以促进自身学术素养的提高,在丰富学术成果的同时汲取主导师的经验,为未来的学术道路打好基础。与主导师不同的是,副导师一般聚焦于从学术的细节上对博士生给予指导。副导师不一定要求具有高级职称,只要能力具备即可,与博士生的关系更加接近于合作者之间的关系,而与主导师的关系可以定位为助理的关系。
3结语
软件工程学科博士研究生培养方面所引发的问题,既有应当提请教育主管部门加以研究的共性问题,如我国博士阶段人才培养的目标定位、服务面向等宏观方面的问题,更多的则是各培养单位在实践中所需认真解决的具体问题。随着“互联网+”时代的到来,互联网的创新成果已经深度融合于软件工程的学术研究与产业实践中,这就预示着我国软件工程学科的博士研究生培养将更加国际化、工程化。教育主管部门和从事软件工程学科教育的实际工作者必须牢记历史责任,认真研究“互联网+”时代下软件工程学科博士研究生培养的理论与实践问题,提出积极的应对措施,使我国软件工程学科博士研究生的培养迈上新的台阶。
作者:冯在文 何敏 何克清 单位:武汉大学计算机学院 国防信息学院信息管理中心
参考文献:
[1]教育部.教育部、国家计委关于批准有关高等学校试办示范性软件学院的通知(2001年)[EB/OL].[2016-03-05].
[2]国务院学位委员会,教育部.学位授予和人才培养学科目录(2011年)[EB/OL].[2016-02-28].
摘要:软件工程是高校计算机专业的一门重要课程,工程实践性非常强,相关理论与技术也发展非常快,为适应社会要求,培养高素质的软件工程技术人员,文章提供了在课程教学方面所作的积极的教学方法改革。从教学准备阶段、教学过程和教学考核三个重要阶段,分别阐述了“案例”;教学法的实践过程,是教学方法改革的一次探索。 关键词:案例教学;实践教学;软件工程 软件工程硕士论文是高等学校计算机教学计划中的一门核心课程,是研究软件开发与软件管理的综合性工程学科,工程实践性非常强,要求学生不仅具有良好的程序开发能力,而且要具备软件项目的整体管理概念,以及团队合作的精神。因此,传统的教学方法显然不能满足该课程的需求。另一方面,与该课程相关的理论与技术的发展速度也非常迅速。软件工程硕士论文新的理念、新的开发工具层出不穷,这给课程体系结构的建立、教学资料的选择和积累带来了很大的难度。为了提高该课程的教学效果,专门成立了软件工程课程组。针对该课程的特性,多次召开教学研讨会,交流教学体会和有关教学资料,不断总结教学方法和教学经验,在吸取国外同类课程Software En- gineering教学经验的基础上,积极探索教学方法的改革,将软件工程专业素质的培养作为教学目标,逐步形成了一套有效的、完善的教学规范。总结起来,可以从教学准备阶段、教学过程和教学考核等三个方面来看。
一、软件工程硕士论文教学准备教学前的准备工作非常重要。首先,根据教学大纲,在深入分析教学内容的基础上,列出该课程的知识结构体系,以及与相关课程的联系,从而确定该课程的教学目标。该课程的教学目标主要可以包括以下3方面: (1)知识目标:了解“软件工程”;这门学科的形成和发展;掌握与大型软件系统相关的规划、分析、设计、实现、测试与维护等概念、原理、方法、工具与过程;掌握“软件工程”;的基本管理方法。 (2)能力目标:体验软件工程各阶段的主要工作,特别注意吸取教训;训练实际软件工程动手的能力,培养综合应用能力;通过教师与学生之间、学生与学生之间的合作学习,增强学生的团队协作能力, 并学会与他人交流。(3)情感目标:通过学生的个性化学习,增强学生的自信心和意志力。其次,软件工程硕士论文课程组成员充分交流教学体会和相关教学资料,参考了大量国内外先进的软件工程理论和应用实例,对教学内容进行了必要的补充和删改,增加了软件工程学科发展动向的介绍,加强了包括项目管理、版本控制、建模工具和调试工具在内的各种现代软件工程开发工具的使用介绍,编制了内容丰富、联系实际的多媒体教学课件。一方面,为训练学生对现代先进软件工程技术及其前沿理论发展的敏锐性、提高学生双语学习的能力,收集准备了大量原版技术文档;另一方面,为了培养学生自觉应用软件工程硕士论文的理论分析问题、解 28决问题和使用工具软件的专业能力,配合理论教学, 设计了完整的、具有实际工程意义的综合型软件项目实验,并为此建立了案例库,为每一个案例提供详细的分析参考说明。
二、软件工程硕士论文教学过程在具体教学过程中,重点采用理论与实践密切相结合的方式,让学生在项目开发实践中自觉应用软件工程理论。首先,让学生了解整个课程的结构与重点,以及该课程与其他课程的关系。在深入分析教学内容的基础上,列出该学科的知识和能力结构体系,以及各单元或章节之间的逻辑关系,然后再按单元或章节分别列出知识能力结构体系。按照教科书的章、节(课)的顺序,用简明扼要的语言列出各知识点的内容,并标出各知识点的学习目标层次,同时注明哪些知识点属于教学中的重点或难点。其次,在课堂讲授中,采用多媒体方式,提高讲授信息的先进性和现实性。同时开展指导性自学, 提倡和鼓励学生阅读英文原版教材及其参考书。通过一系列讨论会,训练学生对大量新信息的接收消化能力。在软件工程硕士论文实践过程中,通过案例研究,把综合型开发实验划分成若干练习单元,进行举一反三;然后,学生按教师组要求组成4~6人的项目小组,扮演项目开发过程中的不同角色,进行分工协作,模拟练习,参与项目管理和开发,从不同角度全面把握和体会整个软件工程项目开发和管理的基本思想,共同完成实验项目。教师加强在实验过程中的指导作用,要求各项目小组分阶段提交讨论记录和项目工程要求的里程碑成果。具体实施过程: (1)选题分组在开始理论教学之前,通过案例研究,向学生提供典型的软件案例,可来自案例库。由学生根据自己的兴趣自由选择软件工程硕士论文题目,组成项目组,并选取项目负责小组长。每小组人数最多不超过6人,各个小组由小组长负责组织、分工、控制进度等,对小组成员的最终实验成绩有5分浮动调整权;引起过半数组员不满意,改选组长;组长带领全组顺利完成任务, 总评可以加5分。主要要求是让学生体验软件工程各阶段的主要工作,特别注意吸取教训;并且学会与他人合作,培养团队精神,单干户将得不到成绩。 (2)阶段验收根据理论教学的进度,各个项目开发小组将提供软件工程硕士论文过程中的阶段性成果,大致将提交如下几个成果:可行性分析报告;需求规格说明书;项目计划书;总体设计报告;详细设计说明书;软件测试报告;各课题组进行合并,现场验收软件期末最终版;项目开发总结报告;用户使用手册等。每个阶段都将严格按照软件工程硕士论文的管理方法进行评审活动,并提供给大家一个互相交流的机会。首先,每个项目组都将汇报、展示自己的成果。主讲老师和其他同学组成评审委员会,对每个项目组的汇报情况、里程碑成果、文档质量进行评审、打分,提出修改意见和建议。每组演讲结束后, 分组讨论,按阶段评分标准给出除自己组外的几个组的分数,并写出评语。教学实践以课题小组为单位完成综合实验项目,教师本着训练同学交流能力的目标,制定一些分组标准。下图就是需求分析软件工程硕士论文阶段的一个评分标准示例: 最后,主讲老师要进行总结点评,既总结课程的主要内容和相关知识点,又点评学生的表现,帮助学生整理学习内容,鼓励积极性。 (3)成绩评定课堂教学不仅仅是理论教学,还包括案例分析、讨论,结果展示汇报等,教师引导学生展示自己的实验成果,根据各个项目小组的整体完成情况和各个成员在其中的表现综合评定每个学生的成绩。每个学生的成绩既包含项目小组负责人打分,又包含教师的评分,从而充分调动学生参与项目的主动性,以 29防止部分小组成员不参与项目完成而又蒙混过关的现象。下面将具体描述本课程的考核办法。
三、教学考核本课程既有理论教学又有实践环节。每个学生的软件工程硕士论文课程成绩由三部分组成:实践成绩占30%,期末笔试占60%,平时考勤占10%。其中,理论部分的考核以笔试为主。主要考查学生对基本理论与基本概念的理解和掌握情况。实践成绩的评定包括小组成绩和个人成绩两大部分,各占50%。小组成绩由各个小组阶段成绩的平均值与系统最终验收的情况(包括系统是否达到需求规格说明中的功能性、非功能性要求,文档是否全面、合理、规范,源程序编写是否规范、可维护性好等方面)组成;个人软件工程硕士论文成绩主要由小组长根据个人在组内的表现和工作给出,约占50%,另外50%的个人成绩由最终答辩时主讲老师根据答辩成绩来评定。小组长的个人成绩由老师根据其组织项目组完成软件开发的具体情况和其管理质量(如分工是否合理、进度安排是否合适、软件质量如何等)来综合评定。教学实践过程在教师引导下,学生自主管理,分工协作,既锻炼了学生参与项目管理的能力,又训练了学生之间的团队合作精神。教师掌握各小组成员的实际完成情况,强化学生各种现代软件工程开发工具的应用能力,要求学生按规定提交讨论记录和项目工程要求的各种文档。软件工程硕士论文形成了一套较为成熟的科学的综合成绩评定方法。该考核办法较为科学、公正、合理,学生普遍能够接受,并且极大地推动了学生的学习积极性,学生反映良好。
1.人才培养方向目标定位不清晰
软件工程专业硕士应当仅限于软件工程师的培养。软件工程具有极强的工科属性,其人才培养,除软件工程科学硕士和计算机科学技术一样,可培 研究型人才外,专业学位应当清晰定位于培养具有软件工程必备基础知识,在软件工程某一领域具有较强专业知识与技能的工程师。
2.师资比较缺乏,尤其是双师型师资缺乏
软件工程正式成为独立的学科时间相对较短,软件工程师资大多来源于计算机科学与技术专业。计算机科学与技术专业可以胜任软件工程基础课程,但这部分教师往往缺乏工程实际经验,在教学中往往表现为重理论轻实践。省属高校十分缺乏来自软件企业一线的项目经理以上的技术管理人员充任实践课程教师。
3.培养模式陈旧,不适应国家教育部要求
由于全日制软件工程专业学位研究生2009年才在全国开展,很多高校沿用学术型学位研究生培养模式,忽视了国家对专业学位研究生培养要求中的专业实践能力的培养,未能很好地开展专业实践教学。
4.课程设置陈旧,不适应软件企业的人才需求
大多数高校软件工程研究生课程设置大多套用计算机科学与技术专业的课程设置,未体现软件工程学科特点。原因主要是因为师资缺乏、招生规模较小,出于节约培养成本的考虑。
二、一种实用的软件工程全日制工程硕士培养解决方案
四川师范大学作为四川省属高校中最早开设计算机科学与技术、软件工程本科生培养的院校之一,在软件工程工程硕士培养的诸多问题上,做了一些有益探索与研究,针对性地提出了一套适合于省属高校软件工程全日制工程硕士培养的解决方案,希望能为同类型高校提供人才培养的借鉴。研究生培养方案的制定,重点需要解决课程体系设置、培养流程规划与控制。对专业学位研究生而言,还需要解决专业实践能力的培养与训练这一关键问题。
1.课程体系设置
软件工程学科正式确立的两个标志性文件是2004年IEEE推出的软件工程知识体(SWEBOK)和软件工程教育知识体(SEEK)。两个文件内容相近,都包含了软件工程核心类的知识领域、基础类或前导类的知识领域,以及其他相关领域的知识。软件工程研究生的培养从原则上说应遵循上述两个文件,围绕上述知识领域进行教学。但由于这两个文件将软件工程的知识体系划分为知识点,各领域之间必然存在重复和交叠。在课程设置上无法照搬上述两个文件。以SEEK为基础,我们对软件工程的课程设置进行规划。整个课程设置被分为五个层次,分别为工程基础课程、计算机基础课程、软件工程核心课程、扩展课程和实践课程,如图1所示。课程开设顺序大体按照五个层次由低到高依次开展。其中,工程基础课程提供软件工程所需数学理论基础、外语能力培养、软件工程文档写作、论文写作基本功训练。计算机基础课程提供软件开发必须的计算机基础知识,如网络、算法和数据库知识。
相对于本科课程而言,此类课程讲授内容更深入全面。软件工程核心课程设置了高级软件工程、软件体系结构和软件测试与质量保证三门课程。高级软件工程侧重于软件分析与设计、软件工程过程、软件开发案例分析。软件体系结构侧重于结构风格、案例研究、共享信息系统、结构描述、结构的分析与评估、特定领域的软件体系结构和流行的软件体系结构等。软件测试与质量保证着重于软件质量的改进,讨论如何提高软件质量的方法。扩展课程包含系列领域知识课程,研究生可根据研究方向选择两门;软件开发工具讲授最新流行的软件开发、过程管理所需要的软件工具的使用,以实践教学为主。软件开发新技术研讨课程以讲座形式开展,教师和学生均可作为一个专题的主讲。实践课程包含校内实践、校外实践和毕业设计三个环节。
2.培养流程与实施
教育部明文规定,专业学位研究生学制原则上为两年,同时要求应届本科生进行专业实践不少于一年。一般来说,研究生在校课程学习时间应有一年左右,加上专业实践的一年,如何合理安排学习计划,在两年内完成培养环节成了一个现实的重要问题。我校以周为单位制定了四川师范大学软件工程专业学位研究生培养流程,如表1所示:上表规划了研究生培养中的几个关键环节,依次为报到入学、课程学习、校内实践、校外实践、开题、毕业设计、论文写作和送审答辩。第一学期研究生主要是课程学习,同时在校内导师指导下开展文献阅读和编程能力锻炼。第二学期前半学期结束理论课程的学习。后半学期和暑期开展校内实践和毕业设计开题工作。第三学期研究生到实习基地进行校外实践。从第二学期后半段和整个第三学期,学生在专业实践的同时,需完成毕业设计。从第二个寒假开始直到第四学期前六周,研究生完成毕业论文的初稿。从第七周开始,进行论文修改、、盲评和答辩工作。
从培养流程表可以看出,这种安排具有两个显著特点。一是理论课程学习安排在一个半学期完成,二是实践课程分为校内实践和校外实践。研究生理论课程学习任务并不重,完全可压缩到一学期半,同时可为实践提供更多时间。校内实践非常有必要。由于是省属高校学生大多能力一般,为保障学生进入企业能融入研发团队从事技术工作,必须先期培训其实践能力。这种安排时间较为紧凑,也比较合理,符合专业学位研究生侧重于实践能力培养的要求,也在两年的学制内确保了研究生的实践时间不少于36周。
三、专业实践能力的培养与训练
软件开发能力是软件工程专业硕士必备的核心能力,其能力培养既是对前端课程学习效果的检验,也是后端毕业设计和就业的必然需要。我校将软件工程专业硕士实践能力培养融入了众多环节。从前期的实验型课程教学,到中期的校内实践、再到后期的校外实践和毕业设计。实验型课程教学解决软件设计开发的基础技能,校内实践解决中小规模软件设计开发能力,校外实践和毕业设计解决中大规模软件设计能力。
1.实验型课程教学
包含软件工具的使用训练、软件开发环境的搭建、软件开发案例分析和新技术研讨。软件工具的使用训练学生单个软件开发工具的使用,如项目管理软件Project、开发文档化软件Rational、软件测试工具LOADRUNNER、QTP、TD等。由于这些工具结构分散,还需进行开发环境的搭建训练。开发环境搭建训练内容一为搭建基于微软的VSTS和VisualStudio的开发平台,适合.net方向;内容二位、为搭建基于IBMRSA和Eclipse的开发平台,适合J2EE方向。软件开发案例分析中研究生将自己放在决策者的角度来思考项目所涉及到的具体问题,增强了学生的实际应对能力。新技术研讨促进学生或主动或被动地掌握了一些新兴技术,拓宽了技术领域。
2.校内软件开发实践
采用项目驱动形式开展。要求研究生必须申报各类实际的软件开发项目,如四川省苗子工程、学校研究生科研创新项目、学院研究生科研创先项目。研究生可组织本科生参与项目实施,但必须任项目组长,在项目中担任核心角色,完成软件需求文档审定、软件架构设计、软件详细设计、大部分编码工作、测试方案制定等重要工作。
3.校外软件开发实践
在上述环节经历后,研究生已经掌握中小规模软件开发的基本技能,此时将研究生派到实习基地,实战参与企业软件开发项目。其实践由校内导师和企业导师共同负责。前期技能的培养已保证研究生胜任企业中一般性的软件开发角色。
4.毕业设计
研究生在校内和校外实践的36周中,还需要同时进行毕业设计的开题、实施。研究生可结合企业实习工作完成毕业设计。专业实践的考核分为定期汇报和实践环节结束汇报两种形式。研究生应每隔两个月集中汇报一次实习期工作心得,取得的成绩等。实践结束时在全院公开汇报,其成绩作为实践课程成绩。
中图分类号:G434文献标识码:A文章编号:16727800(2011)012022403
作者简介:许永昌(1976-),男,山东安丘人,硕士,山东英才学院计算机学院讲师,研究方向为计算机应用。
0引言
毕业设计是高等院校应届类毕业生在毕业前接受课题型任务,在教师指导下进行科学研究或工程实践并取得成果的过程,是高校实现人才培养目标的综合性实践教学环节,是一次理论与实践相结合的的锻炼机会。如何在新形势下改革毕业设计, 提高学生软件类毕业设计的质量,进一步规范毕业设计中的软件开发过程,抓好高校毕业设计这一实践环节,加强对毕业设计过程的管理与监控, 切实提高毕业设计的质量,对于软件类学生在毕业设计中实施合适的软件设计具有重的指导意义。
1毕业设计的必要性
高等职业教育应该是以能力为本位、以学生为主体、以实践为导向的教育。毕业设计是高等教育培养学生综合运用所学理论知识和技能解决实际问题能力的重要环节之一,是衡量毕业生是否达到相应学历层次的重要依据。毕业设计将总结专业基础和专业技术的学习成果,锻炼和开发学生的综合运用能力。
高职院校软件相关专业组织毕业设计应该符合新的人才培养标准,对培养学生的职业技能和素质要具有积极的意义。而对于即将毕业离校的应届毕业生来说,毕业设计无疑是计算机软件各相关专业理论教学、实验、实训等有机结合的途径之一。
通过毕业设计能锻炼学生的能力:
(1)实践软件工程的相关原理能力。毕业设计的过程,是一个课题小组从接到开发任务到提交产品和文档的过程,其中涉及到需求分析、概要设计、详细设计、编码、测试、程序打包、编写文档等软件工程具体的各个方面。经过锻炼,学生们对软件工程学思想和方法的理解会大大加深。
(2)解决具体问题能力。在毕业设计的进行过程中,学生一定会遇到平时在课堂的理论学习中碰不到的困难和挑战, 而克服这些困难、解决实际问题的过程就是软件技术和心理素质逐步提高的过程。
(3)团结协作的意识、能力。通过毕业设计这一过程,学生就会产生团结协作的意识和能力。
2软件工程学的基本思想
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科,包括两方面内容:软件开发技术和软件项目管理。其中,软件开发技术包括软件开发方法学、软件工具和软件工程环境,软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划。
3高职类学生毕业设计现状
毕业设计的主要目的是培养学生综合运用所学的基础理论、基本知识和基本技能,用以分析、解决工程、科研、社会实际问题的能力,使学生得到工程设计方法和科研能力的初步训练。毕业设计中存在的问题主要表现在以下几个方面。
3.1选题的盲目性
只是把毕业设计环节作为大学生活的必经环节, 纯粹是为了完成学业而去做毕业设计, 造成选题的盲目性、有的选题则是陈旧。
3.2可行性分析与需求分析重视程度不够
绝大多数毕业生在确定了毕业设计的题目后,几乎不进行调查研究工作就立即投入到整个系统的设计中, 一旦遇到了与实际不符的地方, 又重新返回, 对已经做好的设计进行修改。最终导致设计的系统杂乱无章, 甚至到了最后只能马马虎虎地仓促交工。
3.3系统开发过程中的文档不够正规,不够完备
完整的设计不仅包括所完成的可操作的系统,一般的操作帮助,还包括在开发系统的过程中所产生的各个文档等一些文字的东西,比如解释清晰、内容全面的数据字典和使用手册也是必不可少的,否则用户会感到使用起来不方便,觉得难于操作。
3.4模糊的评价标准
导致毕业设计质量下降的一个非常重要的原因就是没有建立精确细致的评价体系。
这严重影响了项目的进度和质量,并且使学生没有真正得到必要的锻炼。我们通过对这些问题进行详细深入的分析,提出一个软件过程框架,这个框架主要从需求、测试、集成这3个方面给出工作要点和规范。
4利用软件工程学思想指导学生进行毕业设计
毕业设计本身是个工程,要用工程的方法去处理。从软件工程的角度去指导学生进行毕业设计,在毕业设计过程中,要系统地将所学知识应用于实际问题,按软件工程学思想展开工作。
图1软件生命周期与毕业设计各阶段之间的映射
4.1以可行性研究指导选题目
可行性研究,应该从技术可行性、经济可行性、操作可行性三个方面去研究,在毕业设计题目的选择过程中,应立足于解决实际问题,注重发现问题、分析研究问题和开发创新的能力。选题原则上,可以参考以下几点:①毕业设计的课题应该能使计算机专业所学的理论知识进一步理解并深化,也就是说,毕业设计应尽可能包括多门专业基础课和专业课的综合运用,并且要紧密结合工程实际,以有利于学生的全面训练;②选择难度适中的课题, 保证课题的完成质量;③课题要适合于各个模块独立进行,并便于最后统一调试;④课题规模应大小适合,难易程度适中。
4.2需求分析是关键
需求分析的基本任务是准确地回答“系统必须做什么”, 也就是对目标系统提出完整、准确、清晰、具体的要求。系统分析员可以通过多种形式来获取用户需求,对用户提出的需求进行分析,以此来确定其中要实现系统的功能。对需求划分优先等级,找出核心需求和重要需求,以保证系统构建的正确性。
在进行软件类毕业设计时,为了保证需求获取的准确性和全面性,可以让项目组的所有学生都参与到用户需求的获取的工作中来,发挥集体的能力,并由指导教师进行最终的确认。
4.3规范设计过程
需求分析完成后的下一个阶段就是系统设计,包括概要设计和详细设计。
详细设计阶段的任务就是深入每个函数内部,以伪代码或注释的形式实现整个函数,设计出程序的详细规格说明。
从系统设计开始,学生要按照软件工程的要求,画出DFD图,对输入、输出数据流进行详细的说明,建立符合软件工程规范的数据字典,根据DFD 图设计出模块结构图。
4.4重视文档写作
在毕业设计的过程中,要严格遵照软件文档的思想,记载设计过程的每一阶段完成了哪些设计,下一阶段的任务、目标及技术手段,这样,把文档作为整个设计的指挥棒,使设计有条不紊地进行。
4.5重视测试工作、撰写毕业设计说明书
软件测试工作也是软件开发的重要组成部分。通过实际应用效果和测试数据,毕业设计的成效就可一目了然。
毕业设计说明书的撰写是最后一个阶段,要求学生回顾设计过程,总结劳动成果,这时学生就会对软件开发及必须经历的几个步骤都有更深刻的认识。最后,要求学生对毕业设计进行系统的总结,写出毕业论文。
5加强对学生综合能力的培养
通过实践的练习,不仅能加深对理论的理解,同时也能锻炼运用知识分析问题、解决问题的能力。毕业设计这一实践环节是高等学校培养学生实际能力的主要手段,也是高等教育的重要组成部分。充分、有效地设置软、硬件的毕业设计对学生能力的培养至关重要,可以缩短学校教育与社会流行技术、工具的差距,满足学生毕业后的工作需要。通过毕业设计必须达到培养学生以下方面能力的目的。
5.1工程实践能力
学生能够准确把握选题的逻辑重心和学术思路,能够运用丰富的专业知识进行处理,具有严谨的理论思辨过程,以锻炼毕业生的工程实践能力,使毕业论文具有一定的应用和学术探讨价值。
5.2书写和表达能力
毕业设计论文是毕业设计工作的总结和提高,和做科研开发工作一样,要有严谨求实的科学态度。在毕业设计期间,尽可能多地阅读文献资料是很重要的,毕业设计大多数是技术开发型的,其论文的主体部分应包括:总体设计、模块划分、算法描述、编程模型、数据结构、实现技术、实例测试及性能分析。这些内容根据任务所处的阶段不同,可以有所侧重。
5.3创新能力
提出创新要求后,带领学生认真复习或补学过去没学过、没有学好的课程,并在此基础上结合实际工作中出现的问题孕育出一些新的思路,将毕业设计推上一个新台阶的方式,与为每个人专门分配某一特定的作业来锻炼学生基本技能的方式相比,更能扩展学生的视野,培养创新能力。
5.4协作能力和团队精神
通过集体活动和成员沟通培养成员的团体情感,增强团队的凝聚力。毕业设计将一个学生从入学初到毕业前的软件专业课程的学习内容链接成线,实现了课程的真正衔接,也使学生在毕业前对软件方面所学的知识进行了比较完整的概括与总结,达到了良好的理论联系实际的教学效果。毕业设计弥补了课堂教学的不足,加深了对理论的理解,促使学生深入思考,敢于创新,同时使学生的动手能力、分析和解决问题的能力、书写和表达能力、协作能力等各项能力都得到了培养和提高。
6结束语
软件工程作为软件开发工程化、规范化的具体实施方法,在将其应用到毕业设计中之后,学生在软件设计的文档书写规范化等方面均有了很大的改善与提高。将软件工程应用于毕业设计中不仅仅完成了一门课程从理论到实践的过程,而且将一个学生从入学到毕业前软件专业课程的学习内容链接成线,完成了前导后续课程的真正衔接,也使学生在毕业前对软件方面所学的知识进行了比较完整的概括与总结,因此,软件工程学在计算机专业学生毕业设计中的应用具有重要的现实意义。参考文献:
[1]马冬来,宋雨,刘海龙.软件工程思想在高职院校毕业设计中的应用与探索[J].河北软件职业技术学院学报,2008(3).
[2]李国彬,沈淑清.浅谈软件工程学在软件类学生毕业设计中的应用[J].计算机教育,2007(6).
[3]张文静,卢海霞,杨捧.软件工程思想在毕业设计环节中的应用[J].河北农业大学学报(农林教育版),2007(4).
1.课程体系设置软件工程学科正式确立的两个标志性文件是2004年IEEE推出的软件工程知识体(SWEBOK)和软件工程教育知识体(SEEK)。两个文件内容相近,都包含了软件工程核心类的知识领域、基础类或前导类的知识领域,以及其他相关领域的知识[4]。软件工程研究生的培养从原则上说应遵循上述两个文件,围绕上述知识领域进行教学。但由于这两个文件将软件工程的知识体系划分为知识点,各领域之间必然存在重复和交叠。在课程设置上无法照搬上述两个文件。以SEEK为基础,我们对软件工程的课程设置进行规划。整个课程设置被分为五个层次,分别为工程基础课程、计算机基础课程、软件工程核心课程、扩展课程和实践课程,如图1所示。课程开设顺序大体按照五个层次由低到高依次开展。其中,工程基础课程提供软件工程所需数学理论基础、外语能力培养、软件工程文档写作、论文写作基本功训练。计算机基础课程提供软件开发必须的计算机基础知识,如网络、算法和数据库知识。相对于本科课程而言,此类课程讲授内容更深入全面。软件工程核心课程设置了高级软件工程、软件体系结构和软件测试与质量保证三门课程。高级软件工程侧重于软件分析与设计、软件工程过程、软件开发案例分析。软件体系结构侧重于结构风格、案例研究、共享信息系统、结构描述、结构的分析与评估、特定领域的软件体系结构和流行的软件体系结构等。软件测试与质量保证着重于软件质量的改进,讨论如何提高软件质量的方法。扩展课程包含系列领域知识课程,研究生可根据研究方向选择两门;软件开发工具讲授最新流行的软件开发、过程管理所需要的软件工具的使用,以实践教学为主。软件开发新技术研讨课程以讲座形式开展,教师和学生均可作为一个专题的主讲。实践课程包含校内实践、校外实践和毕业设计三个环节。
2.培养流程与实施教育部明文规定,专业学位研究生学制原则上为两年,同时要求应届本科生进行专业实践不少于一年。一般来说,研究生在校课程学习时间应有一年左右,加上专业实践的一年,如何合理安排学习计划,在两年内完成培养环节成了一个现实的重要问题。我校以周为单位制定了四川师范大学软件工程专业学位研究生培养流程,如表1所示:上表规划了研究生培养中的几个关键环节,依次为报到入学、课程学习、校内实践、校外实践、开题、毕业设计、论文写作和送审答辩。第一学期研究生主要是课程学习,同时在校内导师指导下开展文献阅读和编程能力锻炼。第二学期前半学期结束理论课程的学习。后半学期和暑期开展校内实践和毕业设计开题工作。第三学期研究生到实习基地进行校外实践。从第二学期后半段和整个第三学期,学生在专业实践的同时,需完成毕业设计。从第二个寒假开始直到第四学期前六周,研究生完成毕业论文的初稿。从第七周开始,进行论文修改、、盲评和答辩工作。从培养流程表可以看出,这种安排具有两个显著特点。一是理论课程学习安排在一个半学期完成,二是实践课程分为校内实践和校外实践。研究生理论课程学习任务并不重,完全可压缩到一学期半,同时可为实践提供更多时间。校内实践非常有必要。由于是省属高校学生大多能力一般,为保障学生进入企业能融入研发团队从事技术工作,必须先期培训其实践能力。这种安排时间较为紧凑,也比较合理,符合专业学位研究生侧重于实践能力培养的要求,也在两年的学制内确保了研究生的实践时间不少于36周。
二、专业实践能力的培养与训练
软件开发能力是软件工程专业硕士必备的核心能力,其能力培养既是对前端课程学习效果的检验,也是后端毕业设计和就业的必然需要。我校将软件工程专业硕士实践能力培养融入了众多环节。从前期的实验型课程教学,到中期的校内实践、再到后期的校外实践和毕业设计。实验型课程教学解决软件设计开发的基础技能,校内实践解决中小规模软件设计开发能力,校外实践和毕业设计解决中大规模软件设计能力。
1.实验型课程教学包含软件工具的使用训练、软件开发环境的搭建、软件开发案例分析和新技术研讨。软件工具的使用训练学生单个软件开发工具的使用,如项目管理软件Project、开发文档化软件Rational、软件测试工具LOADRUNNER、QTP、TD等。由于这些工具结构分散,还需进行开发环境的搭建训练。开发环境搭建训练内容一为搭建基于微软的VSTS和VisualStudio的开发平台,适合.net方向;内容二位、为搭建基于IBMRSA和Eclipse的开发平台,适合J2EE方向。软件开发案例分析中研究生将自己放在决策者的角度来思考项目所涉及到的具体问题,增强了学生的实际应对能力。新技术研讨促进学生或主动或被动地掌握了一些新兴技术,拓宽了技术领域。
2.校内软件开发实践采用项目驱动形式开展。要求研究生必须申报各类实际的软件开发项目,如四川省苗子工程、学校研究生科研创新项目、学院研究生科研创先项目。研究生可组织本科生参与项目实施,但必须任项目组长,在项目中担任核心角色,完成软件需求文档审定、软件架构设计、软件详细设计、大部分编码工作、测试方案制定等重要工作。
3.校外软件开发实践在上述环节经历后,研究生已经掌握中小规模软件开发的基本技能,此时将研究生派到实习基地,实战参与企业软件开发项目。其实践由校内导师和企业导师共同负责。前期技能的培养已保证研究生胜任企业中一般性的软件开发角色。
4.毕业设计研究生在校内和校外实践的36周中,还需要同时进行毕业设计的开题、实施。研究生可结合企业实习工作完成毕业设计。专业实践的考核分为定期汇报和实践环节结束汇报两种形式。研究生应每隔两个月集中汇报一次实习期工作心得,取得的成绩等。实践结束时在全院公开汇报,其成绩作为实践课程成绩。
中图分类号:G642
文献标识码:B
文章编号:1672-5913(2008)21-0029-04
软件产业既是我国重点发展的具有战略性质的基础产业,又是能将现代IT技术与我国深厚文化底蕴融合的创意型产业。软件产业的发展是推动经济发展、保障国家安全的决定性因素,对促进国民经济增长、国防建设现代化、社会信息化,推动新技术的发展和新产业的产生,推进经济结构调整、转变经济增长方式,促进经济、社会协调发展和先进文化的传播具有重要的战略意义。
软件是信息产业和传统产业的核心和灵魂,我国虽然是软件应用大国,但目前还不是软件产业大国。为此,我国近年来了一系列政策和措施,扶持软件产业的发展,如《关于鼓励软件和集成电路产业发展的若干政策》(国发[2000]18号文件)、《振兴软件产业行动纲要》(2002至2005)[2002]47号文件等。随着政策环境不断改善,我国软件产值增长速度明显加快,从1998年的325亿增长到2005年的3900亿,软件技术渗透到各行各业、各个领域,促进了新学科的发展和新产业的建立。但与发达国家速度相比,我国软件产业仍有较大的差距。
目前,制约我国软件产业品牌化、规模化和多元化发展的主要瓶颈是软件人才结构性矛盾突出,具体表现为:
(1) 高端人才供给匮乏,缺乏高层次、高素质、创新型人才。即缺乏能够紧跟世界前沿技术动态和趋势,掌握符合国际标准的软件工程规范和技术规范,具有大型系统的开发管理经验,熟练运用一门以上外语,具有良好的团队协作能力,进而能够参与国际软件发展与竞争的高层次软件工程人才;如成都市软件协会分布的《成都市软件从业人员2007年上半年供需报告》称,2007年成都市软件从业人员缺口约8900人,而其中的高端人才缺口约6900人。软件产业的迅速发展对软件行业从业人员提出了更高的要求,尽管国内高校软件工程人才的培养数量日益攀升,但是高端软件工程人才的匮乏却严重阻碍了我国IT企业的发展。
(2) 人才规模不足,离产业发展需求还有差距;现在我国共有一万多家企业在从事软件开发及相关业务,而目前全国的软件工程人才总量与之相差甚远,缺口很大。
(3) 人才知识结构不合理,目前我国的软件工程人才主要集中于编程人员,而软件架构师、项目管理、文档管理、测试等等人才比较缺乏。缺少面向产业、适应企业需求、工程能力强的人才,学生进入企业要“转型”,形成企业人才的“滞后”现象。
1面向校企合作,优化和完善知识结构和课程体系
相对于计算机科学与技术专业而言,我们认为软件工程专业应重点培养工程与技术方面的人才,更强调软件设计与开发过程中的系统性、可操作性和可重用性。
为此,我们参考和借鉴IEEE在2003年推出的软件工程课程大纲以及IEEE/ACM软件工程学科组于2004年5月公布的软件工程教育知识体系(CCSE2004 SEEK),认为软件工程人才的合理知识结构应包括通用的软件工程知识、软件应用领域的专业知识和具体软件工具和环境的知识几个方面。其中通用的软件工程知识应涵盖软件工程基础知识和技能,而软件应用领域的专业知识指还应该具有行业领域的知识,如嵌入式软件工程硕士必须具备特定行业,如移动设备、数字家电、数控机床、汽车电子、医疗电子、航空航天、工业控制等领域的相关知识,才能胜任工作。
为此,在进行软件工程教学方案与课程内容体系改革的过程中,我们根据软件产业发展的需求,动态调整课程设置,逐步加大选修课的比例。从学校来讲,要从企业的实际需要和IT发展出发,制定适应企业需求的培养方案及人才培养模式,为企业发展提供更为广泛的服务体系,也为学生提供良好的就业环境。在多模式校企合作中,我们提出了一种定制式课程建设框架。即将选修课划分成若干模块,以适应不同企业需求。同时, 由于不同层次软件工程人才的定位不同, 相应的课程设置与教学方法也应有明显的区别。其中软件工程本科教育定位在以技术能力培养为主,本科生在校期间计算机软硬件基础学习较多,形成思维定势,但开发大项目实践经验很少,没有切身体会,如果没有经常性的编程练习,学习兴趣逐渐消失,因此对本科生而言,重点应放在编程与系统设计能力的培养上。基于此,我们开设的软件工程核心课程包括软件工程概论、软件测试技术、人机交互技术等课程。软件工程硕士教育定位以工程能力培养为主,注重软件工程方法与系统开发能力的培养。特别是在职工程硕士,他们在工作中有很多机会接触项目,参与程度较深,工作经验丰富,深感系统开发中方法和管理的重要性,对研究开发方法、过程、工具有实际需求,深感软件工程对于解决实际开发中遇到的问题很有帮助,他们希望对新技术、新方法有更多的介绍,希望通过课程能够互相交流,共同提高。对于他们,应以实例学习和管理为主线,介绍软件系统开发的实例和软件项目管理的基础。其课程的设置要注重专业知识的前瞻性和国际性,基于此,我们开设了软件项目管理、软件体系结构、系统分析与设计等高级课程。
对软件工程教学方法与课程体系进行改革,还应根据软件产业发展的需求以及与企业接轨,动态调整课程设置,逐步加大选修课的比例,其中部分课程(如软件项目管理、软件体系结构、人机交互技术等)尝试实施双语教学,通过引进国外软件工程经典和优秀教材,从使用英文教材、中英文结合教学入门,逐步增加英语授课比例,最后过渡到全英语教学。
2改革实践教学,构建适应企业需求的立体化实践体系
实践教学是实用性软件工程人才培养的重要环节,也是创新能力培养的关键环节。必须建立多层次立体化实践教学体系,才能达到全面培养学生创新能力的目的。
2.1在理论教学中培养学生的实践能力
变理论教学与实践教学的分离为融合,实践教学与理论教学并重,组织和鼓励师生参加实践教学改革。在课程教学内容的选择上,注意采用最新、最有用的知识,紧跟社会潮流;对课程实验、课程设计,要求授课教师既讲授理论知识,又指导上机实验,充分体现理论教学与实践教学为一体的教育思想。同时,在教学计划的指定上,加大实验学时比例,理论教学精讲,实验教学多练,加强实验教学改革,建立企业实际项目库,以企业实际项目开发为背景,科学设置实验题目,通过实验促使学生将所学理论知识转化为分析与解决问题的能力。
为了培养学生的创新意识,提高学生的创业能力,必须重视课内外实践教学环节对培养和发展学生能力素质的不可替代的作用,加强课内和课外实践教学的整合,在培养计划中进行统筹安排,形成完善的实践教学体系。在实践教学的环节中,加大综合性、设计性实验的比例,加强实习、工程实践、课程设计、毕业设计(论文)环节中的工程训练,把提高学生的创新能力和实践动手能力贯穿于培养计划的始终。
2.2在课题研究中提高学生的实践能力
引进软件企业的实际项目,让学生结合实际项目进行软件开发综合训练。软件开发实训严格按照软件工程开发流程进行,聘请企业资深技术人员进行指导,通过软件开发实训,既培养学生的实战能力,同时又培养学生的沟通协调能力和团队合作精神,为毕业设计和就业打下良好的基础。
目前,我们和摩托罗拉中国有限公司、苏州国芯科技有限公司、紫金电子有限公司等多家单位联合建立了苏州大学摩托罗拉单片机实验室、江苏省嵌入式软件技术中心苏州大学分中心等具备一定科研能力的实验室,从而为学生创新能力的提高创造了条件。同时,学院成立了自己的开放实验室,主要为学院学习成绩优异且有较强科研能力的学生提供了进行创新性实验的条件,并制定了完善的开放实验室条例,规定了其运行机制及运行模式。如进入开放实验室的学生必须结成科研小组,采用自主选题、指导教师指定课题或企业提供课题等方式,经开放实验室评审委员会评定后才能进入开放实验室。科研小组必须在一定时期内完成一定的科研任务,并提交课题总结报告或论文。由于开放实验室必须以课题小组形式申报课题,开放实验室在培养学生创新能力的同时,还培养了学生的团队开发能力。因此,开放实验室为广大学生提供了自由发展的空间,大大激发了学生的学习热情、创造激情,为其成才创造了有利条件。
2.3在各种专业竞赛中增强学生的实践能力
为培养学生的实践能力,学院经常组织开展各种软件设计程序竞赛,支持学生参加国内外举办的各种软件设计大赛,培养学生的创新精神和迎接挑战的能力。近年来,多次组队参加ACM/ICPC(国际大学生程序设计竞赛)并获得铜奖。参加省程序设计大赛获一等奖,参加微软“创新杯”全国大学生软件开发大赛等。这些专业竞赛促进了学生实践能力的提高。
3加强校企合作,构建与产业水平同步的工程实践环境
工程实践环境是教学体系的重要环节,其重点在于构建一个和产业技术水平同步的高水平的学生工业实习基地。为学生提供实际项目开发机会,使得学生能在毕业前深入体会企业文化,完善自身职业素质和工程能力。
3.1加强实习基地建设,提高学生工程实践能力
目前,我们已在苏州工业园区、苏州新区的摩托罗拉、A M D、罗技、旺宏等世界知名I T 企业建立了软件工程专业教学与实习基地,并与中创软件工程股份有限公司合作在昆山成立了苏州大学中创软件工程学院实习基地,与福华先进微电子(上海)有限公司联合招收嵌入式软件工程硕士。在实践中教,在实践中学,使得软件工程专业学生实践能力明显增强。我们将企业实习划分成三个阶段。一是认知实习,时间一般为一周,主要让学生全面了解企业的运作模式、各企业主要研究方向以及当前流行的开发工具和软硬件平台。二是暑期社会实践,时间为50天,主要让学生利用暑假深入企业,参与企业的一些小型项目或一些模块的开发,甚至是文档的整理工作,目的是让学生知道所学知识到底能如何运用、并初步具备运用所学知识进行一些实际项目开发的能力。三是毕业实习,时间为一学期,主要让学生综合利用所学知识进行较为完整的项目开发,目的是让学生毕业后具备独立胜任项目开发与设计的能力。在实习基地建设中,应注重学生管理与质量监控。以毕业设计为例,我们制定了一系列有关毕业设计的规章制度,如毕业设计计划、毕业设计选题原则与类型、毕业设计的步骤、校外毕业设计试行办法等条例,并发放企业严格执行。对于安排毕业实习生多的企业,我们还专门安排指导教师长驻企业,从而确保了毕业设计和论文的质量。
3.2聘请国内外著名企业的高水平专家,拉近学生与社会、企业之间的距离
我们聘请企业授课教师、高水平企业技术骨干作为学校课程指导小组顾问,并定期聘请国内外有丰富实践经验的企业家、技术骨干为学生开设相关专业课程,最大限度地拉近了理论与实践的距离,拉近了学生与企业之间的距离。我们还定期举办专场讲座或技术报告会,请一些著名IT 公司的高级技术、管理专家给学生作专题讲座,让学生及时了解最新的业界动态,跟踪I T 领域的最新研究成果,从而保证了学生既能掌握软件工程领域坚实的基础理论和宽广的专业知识,又能掌握解决工程问题的最先进技术方法和实用的技术手段,让他们有较强的知识、能力和素质去适应多变的社会需求。每位软件工程硕士生除了配备双向选择的校内指导教师以外,还配备由实习单位推荐的一位具有丰富工程经验的企业人员作为校外企业指导教师。企业导师着重对实习和毕业设计的各个环节进行具体指导和严格把关,校内导师则是对学生进行设计思想的理论指导和毕业论文的指导。同时,学院还设专人对学生实习过程进行跟踪、指导与控制,在双导师之间积极促成沟通,共同完成对软件工程研究生的指导。
3.3搭建学生与企业双向选择的交流平台
由于学生在兴趣、专长和职业规划上的差异,因而他们对实习企业有各自的选择标准,但同时企业也要选择适合本单位要求的学生,为了使学生更好地找到适合自身特点的实习单位,企业能招收符合自身要求的学生,学院通过网上公布实习单位及其相关信息,学生自主报名、学院推荐,实习单位进行笔试、面试等考核程序,确定学生的实习单位。通过这种选择,企业与学生之间一开始就有了很好的信任度,双方都能最大限度地发挥主动性、积极性和创造性。
4结束语
信息化需要大批软件工程人才,各高校软件工程人才的培养应该有自己的定位和特色,目前要特别重视软件工程能力和素质的培养。实践能力是学生综合素质的重要组成部分,本文针对当前国内高校软件工程人才培养机制存在的主要不足,从改革实践教学、加强校企合作、开展国际交流合作等方面,阐述了如何加强学生的实践创新能力,培养适应企业需求的高素质的软件工程人才的几点做法,为高质量、实用性的软件软件工程人才培养作出了有益的探索。
参考文献
[1] 教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术发展战略研究报告暨专业规范(试行)[M]高.等教育出版社,2006,9.
[2] 教育部软件工程学科课程体系研究课题组.中国软件工程学科教程CCSE2004[M]. 清华大学出版社,2004,11.
[3] 杨芙清.中国软件工程二十六年.2006中国计算机大会特邀报告[R].北京,2006,10.
[4] 骆斌. 软件工程专业工程化实践教学体系的构建与实施[J]. 计算机教育, 2005,(4): 25~28.