时间:2023-01-16 19:22:52
引言:寻求写作上的突破?我们特意为您精选了12篇软件工程专业课程范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
课程建设是专业建设的核心内涵,课程设置及其教学质量反映了一个专业的教育理念、办学特色和人才培养质量。我国软件工程专业教育可以追溯到2001年底国家推出的示范性软件学院计划,该计划中的专业定位是面向软件产业培养高素质的工程型软件实用人才。2011年2月,国务院学位委员会正式公布修订的学科目录,把软件工程新增为一级学科,这充分说明了软件工程学科在国家战略层面上已经提升到一个新的高度。虽然,我国1900多所高校中有近200所院校开设了软件工程专业,但是,软件工程的专业教育现状与软件工程的技术发展差距较大,市场对人才的需求仍存在较大缺口,适应产业市场不断发展的软件工程专业建设工作依然任重道远。
1 职业技能结构分析
软件工程专业教育同样面临着两个问题:一是培养什么样的人(即市场需要什么样的人才),二是怎样培养人(即高校的教育内容和培养模式)。在软件产业迅猛发展过程中,虽然高校招生规模不断扩大,但是制约企业发展的人才问题并没有得到有效缓解,尤其是中高端人才的矛盾还很尖锐。究其原因,一方面,大型软件企业对中高级技术和管理岗位人才需求量很大、要求也很高,这类人才通常需要3-5年的工作经验,有两个以上的项目经历;另一方面,高校教育和市场需求脱节,每年大量进入就业市场的计算机类毕业生很难直接符合企业要求,有些毕业生需要经过社会培训机构或者软件企业培训,有些毕业生甚至放弃了本专业工作。
在软件企业中,合理的软件人才结构应该是金字塔型的,塔的顶部是高级开发和管理人员,中间是相当规模的系统分析和设计人员,底部则是大量的基础程序员(也称软件蓝领)。这样一种合理的人才结构是软件企业的期待,更是对教育部门提出了人才培养的具体要求和明确目标,毕竟大量的软件人才是需要经过高等学校的学历教育。一个软件专业毕业生走出学校之后,其成长过程基本上遵循学习实践再学习再实践的模式。进入软件企业,在初始的工作岗位上,首先通过短期培训,从事初级的技术开发工作;经过一段时间的技术实践,逐步提高其职业技术水平,成为中高级工程师;通过更高级别的培训,使其承担更为重要的技术和管理工作。可见,大学生在校期间除了专业知识学习外,从事职业的技术能力和适应工作的职业素养培养十分重要。
软件工程是指导软件开发和维护的一门工程学科,换言之,采用工程的方法、技术、工具和管理手段,以期开发出低成本高质量的软件产品。从这个定义可以看出,软件人才大致可以划分为技术型和管理型两类。从产品的技术角度看,不仅有产业标准和行业规范,而且项目的施工和管理有一套技术文档,这就是软件工程规范。从项目的管理角度看,分工协作是软件产业市场的总趋势,项目团队的分工合作是现代软件工程的一个重要职业特点,因此,软件工程专业的人才培养不仅要求具有专业知识,还需要有职业技能和职业素养。
软件工程专业的专业知识可分为基础知识、专业知识和专业理论,职业技能可分为基本技能、专业技能和综合技能,职业素养可分为基本素养、职业素养和综合素养。在专业教学中,强调专业知识中的核心基础知识,不求全面知识,知识教学内容必须与技术发展同步更新。把职业技能分为特定技能、通用技能、核心技能3个层次,其中核心技能具有普遍适用性,在职业生涯中受益终生。在职业技能训练中,按照软件的阶段划分,制定不同阶段所要求的职业技能。如编码阶段,要求有规范代码书写、单元测试能力,教师或项目经理要善于观察、发掘、培养新人;根据学生的各自特点,通过固化训练或交叉培养其设计、编码、测试、文档书写等能力。在学生的职业能力成长过程中,关注哪些学生是技术型的,哪些是项目管理型的,哪些是技能操作型的。由于高校不是企业,企业也无法承担高校的职能,通过校企合作的项目实训,围绕学生职业能力训练,明确企业和高校的职责分工边界。在职业素养训练方面,着重训练学生的交流表达、文档写作、分工合作、敬业奉献等能力和精神。在教学过程中,明确软件工程专业的职业素养边界,坚持“任何人都有用”的原则,关键是用到何处。比如刁钻苛刻的人用到测试上,勤奋好胜的人用到技术攻关上,豁达人缘好的人用到项目协调上,条理规矩的人用到设计上去。
2 专业知识体系裁剪
软件工程学科是从计算机学科发展而来的,经历了从软件、软件开发技术、软件工程到软件工程教育的一个发展历程。国内许多高校参照了IEEE-CS的软件工程知识体系指南SWEBOK2004,该指南给出了软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具和方法、软件质量等10个关键知识域,指出每个知识域的教学内容。此外,SWEBOK分析了软件工程职业特征,认为软件工程学科与计算机科学、管理科学、数学、项目管理、质量管理和系统工程等学科相关。这说明该专业需要开设一些相关学科的基础课程,但是要确定软件工程与相关学科之间的知识公共边界,要对相关课程进行内容裁剪。
浙江师范大学软件工程专业教学计划的规定如下:专业毕业最低总学分为170学分,其中通识课程50学分,学科平台课程1分,专业核心课程31学分,专业方向课程30学分,基础性实践课程5学分,提高性实践课程31学分,创新性实践课程4学分。围绕人才培养目标,构建了“通识课+学科平台课程+专业核心课程+专业方向课程+实践课程(基础性、提高性、创新性)”体系,其中“学科平台课程+专业核心课程+专业方向课程”构成了专业知识体系。该计划是在调研其他兄弟院校,如浙江大学、浙江工业大学等的基础上,紧扣人才培养目标,结合本校专业课程的进度安排,设置了4个层次的专业主干课程,如表1所示。
3 专业课程体系构建
实现人才培养目标,关键在于如何构建专业课程体系。面向社会需求,以课程为载体,合理设置课程。课程设置的原则是打好专业基础以保障学生就业能力、掌握主流技术以提高学生的基本技能、训练职业素养以成就学生的职业能力。注重加强数学基础,使本专业的学生具备较强的数学功底,引入国际公认的CMM5级能力成熟度模型,旨在提高学生规范化开发和团队分工协作能力,强化程序设计基础,使学生掌握软件开发所必需的知识与技能,熟练运用开发环境和工具。
软件工程专业课程建设的基本理念是遵循软件工程思想,强调以项目驱动的教学方法,如图1所示。课程开发要求项目真实、文档齐全规范,在教学过程中,教师采取项目实例教学,通过实例体验让学生掌握知识点。通过项目式教学改革,在掌握最基本、最必要的专业基础知识的前提下,在较浅的程度内掌握一两种计算机程序设计语言,然后学习目前流行且高效率的软件开发工具(如果企业需要,还可以学习一些更加专用的软件开发工具),学习实用的软件编程、数据管理、系统维护等技术,构建以技能训练为中心的知识结构和课程体系。
在软件工程教学过程中,通过教学实践总结,我们提出了“以职业技能为根本、工作体验为主题、知识点恰到好处”的教学方法;遵循软件工程规范,把职业技能划分为特定技能、通用技能、核心技能;提出“遵循软件工程规范、研究职业技能结构”的课程建设思想,构建了以核心技能为主的3个层次的专业课程体系。实践教学环节的项目分类及内容如表2所示。
(1)开放式授课。随着行业基础框架的构成、行业发展和技术融合的国际化,软件工程的授课将不再局限于某本教材或某个案例。
(2)小组式开发。软件工程开发要求开发人员具有良好的团队合作能力和沟通能力,因此应将学生设置在以模块开发为目标的开发小组,培养学生分析问题、协调问题、解决问题的能力。
(3)模块化集训。IT环境复杂度和历史遗留系统的增加,对软件工程领域提出新的挑战。模块化的思想能够通过抽象、封装、分解、层次化等基本的科学方法提高软件工程灵活性。
(4)真实性案例。软件工程授课依托于真实案例,可加快学生对软件工程的感性理解,从而解决学生对软件产品初始建模、过程开发、测试运行、质量监控、配置与过程的管理有系统性的掌握,锻炼学生对项目开发过程的整体把握能力。
2基于项目导向的课程体系构建
合格的软件工程专业学生应具备专业基础知识、工程技术能力以及良好的职业素养。教师应结合软件工程专业人才培养标准、软件工程行业开发规范和技术特征,在不同阶段将具体项目融入教学,基于项目导向理论知识,培养工程化特征明显的学生;在项目案例引入各教学阶段时,应夯实学生的基础理论知识与基本实践技能;在强化工程技术阶段,项目案例应涵盖前端技术课程,工程实训阶段项目案例需引入企业真实项目。通过3个阶段的教学,学生能够具备软件工程师的基本编程、综合设计及工程实训等能力。我们应分析软件工程专业知识体系与课程设置,根据普通高等院校软件工程专业课程规划、设置学时,构建层次清晰的教学实践体系及内容,培养应用型软件工程专业人才;同时,在IEEECC2001SE学科的知识体系基础上结合国内软件产业及校内办学的实际情况,在基础教学、理论应用、项目实践3个层次建立软件工程专业课程体系,基础教学部分主要讲授软件工程领域的基础理论知识,以开发过程为主线详细分析和讨论软件的需求分析、结构设计、程序实现、功能测试、变更与维护、软件项目管理等内容,让学生对此有感性认知。理论应用部分主要以面向对象程序设计为基础,锻炼学生的建模和实现能力。同时,采用实践案例,让学生掌握软件开发的方法和技术,培养学生的专业能力、管理能力、团队协作能力和职业精神。项目实践部分分为基础技能实训、专业技能实训、综合设计实训、科技创新实训等4个模块,可以基于项目建立多个小组,让学生以团队合作的方式在企业开发环境中实现一定规模的软件项目。为培养“理论知识实、实践能力强”的应用型人才,需将教学计划与项目实践环节紧密结合。基于项目导向的教学体系层次实施步骤如下。
(1)基本知识技能阶段:将.NET与JAVA开发作为实习内容,让学生了解面向对象开发的基本知识。
(2)综合知识实训阶段:让学生了解并掌握软件开发方法,熟悉.NET在软件项目系统开发中的具体作用,设计和实现功能界面,实现数据库设计与应用,分析和解决软件开发过程中出现的问题,并进行功能测试。
(3)应用能力提高阶段:对之前阶段开发完成的软件项目进行详细的分析与讲解,基于项目开发的实际应用强化软件工程的理论知识,让学生感受所学知识与实践应用的对应性,加强学生实践动手能力和团队沟通合作能力。
(4)职业技能与素养提升阶段:对软件项目范围、功能实现、总体进度、软件质量、管理配置等方面进行开发训练,锻炼学生整体项目的开发能力,逐步培养学生的职业技能,结合项目开发对学生进行测试与评价,培养和提高学生的职业素养。
3基于情景的教学方法实施
情景教学能让学生对知识有感性认识,提高对课堂内容的理解效率,因此需要在一个通用的软件开发环境中进行项目开发的学习。构建符合软件工程专业课程项目开发的开发环境是提升软件工程教学效果的关键。情景模式授课能让学生在模拟的软件工程项目中实战训练,通过层次提升效率,激发学生的学习兴趣,达到最佳教学效果。教师在情景模式的授课过程中担任项目总监或技术顾问的角色,组织学生进行技术交流、成果验证、变更审核等活动;学生会依据项目不同阶段的情景扮演不同职位,提升自身项目开发技术及管理能力,培养个性化思维和团队合作思维相结合的思考模式。基于情景模式的软件工程专业课程教学过程。在具体的教学实施过程中,教师利用项目导出教学内容,围绕项目案例设计教学情景,依据情景设计安排学生在项目团队中的不同角色,尽量让学生体验真实的项目开发流程。借助项目情景模式增强了课程内容的趣味性,最大限度地调动学生的主观能动性。项目导向下的情景模式教学需要对项目选定、教学内容设定、项目进程安排、学生角色安排、项目成果鉴定等方面进行管理。基于情景模式的教学要求,学生以项目团队的方式组成项目小组(一般由3人组成),开发具有一定规模且功能较为丰富的软件系统,侧重培养学生在项目开发过程中发现问题、分析问题、解决问题的能力,培养学生的团队合作精神,使学生体验软件开发的全过程。专业课程教学内容应把软件开发分解为项目前期准备、中期分析与设计、功能测试和软件交付等三大部分,具体内容为:
(1)项目准备阶段:教师在课程初始阶段,将软件项目需求告知学生,选定项目开发小组,制定开发范围和计划。
(2)分析设计阶段:项目开发小组基于需求和开发计划,编制需求规格说明书。依据项目的总体结构,逐步设计项目所需功能,并编写相应文档。
(3)测试与交付阶段:开发团队对完成的功能模块进行整合,测试功能性和稳定性,调试并完善软件系统,最终形成达到项目需求的软件集成系统。
(4)软件交付:教师运行集成的完整系统,组织学生交叉验收。验收管理是各团队共同检验工程是否达到预定目标并进行最终确认的重要一环,每位学生必须高度重视,支持项目验收工作。在情景式的软件工程环境中,学生真正体验到一种有序的、可控的、协作的软件开发过程,在分析问题、解决问题、协调冲突、消除矛盾的过程中享受软件开发成功的成就感。项目导向的情景模式教学可以让学生在团队中练习,在练习中学习,锻炼学生独立开发与合作开发项目的能力。
2.哈尔滨工业大学计算机科学与技术学院,黑龙江哈尔滨150001)
摘要:考试是评价课程教学效果和学习效果的重要测量工具与测量手段。文章概括课程考试的地位、作用及重要性;针对高校课程考试的特征及软件工程专业教育的特点,探讨如何规范软件工程专业试卷规划、命题设计和统计分析,改善试题质量,提高考试成绩的信度。
关键词 :软件工程;课程考试;试卷规划;考试命题
文章编号:1672-5913(2015)15-0013-06 中图分类号:G642
基金项目:2013年黑龙江省高等教育教学改革项目第38号(黑教高函[2013]351号)。
第一作者简介:李全龙,男,副教授,研究方向为物联网及其应用、传感网络、情境感知计算、软件定义网络( SDN)等,liquanlong@hit.edu.cn。
1 背景
考试的最初功能是区分人和选拔人。最早的考试可以追溯到中国古代《尚书·尧典》记载的尧通过考试禅位舜的传说,而世界上第一个全国性统一考试则是科举制度。目前,我国高考、研究生入学考试、公务员选拔考试等仍然侧重于人才测评与筛选这一功能。
考试作为一种测量工具与手段已经应用于现代社会的方方面面,几乎与每个人都息息相关,它不仅越来越受到社会和人们的重视,而且也吸引众多学者和教育界从业人员对考试形式、方法等展开了讨论与研究。考试除了具备人才选拔的功能之外,还常用于对被试者进行评价,以判断被试者对某些知识或技能的掌握程度。高校教育中不同专业的教育目标和培养理念都不尽相同,有各自的特点。例如,软件工程专业教育非常强调对动手能力的培养,注重解决实际工程问题。那么,课程考核试卷如何设计才能根据专业特点及办学理念来准确、客观地评价被试者就显得尤为重要。
2 课程考试定位与命题过程
现代的考试主要分为常模参照考试与标准参照考试两大类。常模参照考试主要测量个体在群体中的相对位置,比如高考、研究生入学等选拔性考试;标准参照考试主要测量被试者是否达到某个标准,如是否及格。高校的课程考试基本属于标准参照考试,但也部分肩负着常模参照考试的作用(如依据课程成绩的高低决定保研资格等)。因此,高校课程考试重点要能够比较客观、准确地评价学生对概念、原理、方法、技术等基础知识的理解、运用以及解决问题能力的程度,同时还要能够对掌握程度的优劣加以区分。课程考试的试卷组成与试题设计必须针对课程考试这一定位,采用科学规范的命题方法,才能有效保证试题质量,进一步保证评价的客观性与准确性。
课程考试命题及分析过程大致分为试卷规划、试题设计以及试卷统计分析3个主要阶段。试卷规划阶段需要针对课程目标、课程大纲、课程知识点分布等规划试卷的总体结构;试题设计阶段是依据规划好的试卷结构设计编制每道试题、制定试题的参考答案,这个过程可能会多次迭代修正试卷结构;当试卷使用、批阅并评定成绩后,需要对试卷得分情况进行统计分析,并作为下一轮课程考试试卷规划与命题的反馈与参考。本文将按照这个过程并以计算机网络、软件工程概论、软件设计模式等课程为例,描述如何规范软件工程专业课程考试命题。
3 软件工程专业课程考试命题方法
3.1 试卷规划方法
试卷规划需要满足课程目标、课程大纲、课程考核目标的需求与约束。试卷规划的基本原则是“重点突出、充分覆盖”。“重点突出”是指课程的重要知识点应该是试卷的重点考查内容,试题量与分数占比相对要高;“充分覆盖”是指试卷考查的知识点要尽可能分散开来,覆盖面要尽可能大,避免出现试卷只偏重某部分知识点的现象。这两点要平衡好,只侧重某一方面都可能导致试卷质量不高,影响评价的客观性与可信性。
为了保证试卷质量,一定要规划好试卷考核知识点与分数的分布,具体可以利用试卷结构明细表这一有效工具,表1为2014年计算机网络课程试卷结构明细表。该表可以方便规划试卷的知识点覆盖情况、分数分配情况、考查层次(识记、理解或运用)构成情况、考点分布情况等,科学规范地指导试卷的试题编制。该表可以根据课程章节或知识点结构进行调整,试题考核层次主要分为识记、理解与运用,当然也可以根据需要加以细分。识记类考核层次主要考查学生对概念、原理等的记忆情况,理解类考核层次主要考查学生对相关知识的深入理解,运用类考核层次主要考核学生利用课程相关知识、原理和方法解决实际问题的能力。表l中信息在试卷规划阶段主要确定按章节(或知识点)的分数分配及试卷难度控制,具体试题编号、分数及难度系数则需要在试题设计阶段逐步迭代完善,最终完成表1的完整信息。
表1中每道题的难度系数为对该试题的难度估计,是对该试题难易程度的衡量,表示该题正确解答的比例,难度系数越大表示该题目越简单。难度系数可以表示为:
其中,M为样本集合,C为正确解答样本集合,p为难度系数。试卷的难度系数是每道试题的难度系数及其分值的加权平均结果。
试卷总体难度不应过难(难度系数值太小),也不应太简单(难度系数值太大),否则试卷的区分度会很差,无法达到课程考试承载的选拔性功能。通常试卷难度系数控制在0.5-0.55之间比较合适。
3.2 试题设计方法
完成试卷规划之后,可以进行试题设计。试题设计过程可以遵循如下几个基本原则:
(1)尽可能不出过于简单(p≥0.8)或过于难(p≤0.2)的试题;
(2)尽可能少出考查层次为识记类的试题;
(3)尽可能多出考查层次为运用、理解类的试题,考查学生的动手能力和灵活使用知识的能力;
(4)尽可能设计真实或接近真实的新场景、新问题,避免与往年考题重复;
(5)试题表述要力求严谨,避免歧义;
(6)主观题与客观题比例适中。
一张好的试卷考题主要考核层次应该是运用和理解,识记类的试题应尽可能少,并且分数的分配能够反映课程重点内容的分布。另外,根据软件工程专业工业化的教育理念,学生的动手能力以及灵活运用知识解决实际工程问题的能力都应该是考查的重点。因此在具体试题编制时,应该尽可能设计全新场景,来考查学生对某些知识或原理的理解或运用。例如,在软件工程概论课程中,为了考查学生对UML类图设计中类之间聚合关系的理解,可以设计一个具有聚合关系的系统需求描述(见例1)。通过对该系统需求描述的分析,不仅可以考查学生从实际需求中发现聚合关系并对该关系进行设计的能力,同时还可以综合考查学生对于UML语言的使用能力。
例1:汽车是由各个部件组成的,例如,轮胎、引擎、车框、车窗等,但是这些部件与整体汽车并不是紧耦合的关系,换句话说,部件离开了车仍然可以存在。那么,当我们对汽车及其部件进行UML建模时,应该选用以下哪个图形元素来表示汽车及其部件之间的关系。 ( )
考点:软件工程概论——软件设计方法——面向对象方法设计
答案:D认知层次:问题分析及理论知识运用难度估计:0.45
大多数课程考试都会设计类似于例1的选择题。选择题是目前各种考试中广泛采用的试题类型,具有良好的客观性。但是在命题这类题目时,许多的题目都只考虑了直观概念的考核,如类图中表示聚合关系的符号是什么?这样的命题是典型的单纯考查记忆的试题,并没有考查学生对实际问题的分析能力和解决能力。另外,这样的试题还要特别注意选项的设计。一道好的选择题,每个选项都是精心设计的,除了正确选项,每个错误选项都能代表一类常见错误,也就是“有意义的迷惑项”,而不是随意拼凑的内容。如例1中的A选项,是一个错误选项,该选项的设计是考虑到如果忽略了部件与车之间的聚合关系,只考虑关联关系,就会得到这样一个错误结果;而错误选项C是最具有迷惑性的选项,如果学生混淆了聚合关系和组合关系的话,那么就会得到这样的一个错误结果。
在试题设计过程中,还应该尽可能设计一些真实或接近真实的场景,通过该场景对课程相关知识的综合运用能力进行考查。
例2通过一个“真实”的网络综合考查学生对IP地址、子网划分、路由聚合、路由表、交换机、IP分片、域名解析等知识的综合运用能力。这种类型的综合题可以考查学生利用课程所学基本知识和基本原理解决实际问题的能力。
例2:某网络拓扑如下图所示。路由器EO、E1、E2、E3连接的均为lOOBaseT以太网,Sl、S2、S3为lOOBaseT交换机。RI互联的局域网1、局域网2和局域网3共用IP地址空间192.168.1.0/24,且已将192.168.1.0/26分配给局域网3。路由器相关接口和部分主机IP地址和MAC地址等配置信息如图1所示。Rl和R2的路由表结构为:
请回答下列问题。
(1)请将192.168.1.0/24剩余的IP地址分配给局域网1和局域网2,其中局域网1需要IP地址数不少于120个,局域网2需要IP地址数不少于60个。请给出地址分配结果,并说明局域网1和局域网2的可分配IP地址数以及可分配IP地址范围。
(2)基于问题(1)的分配结果,请分别给出Rl和R2的路由表,要求路由表的入口数(即路由表项数)尽可能少,并且包括到达DNS服务器的主机路由。
(3)请为主机Hl配置IP地址信息,包括lP地址、子网掩码、默认网关以及域名服务器。
(4)若主机H2的子网掩码被配置为255.255.255.0,DNS配置为201.18.3.254,则H2能否成功访问sma.com.cn?为什么?
(5)若交换机S2、S3的交换表为空时,主机H3给H6发送一个数据帧fl,接下来H6又给H3发送一个确认帧f2,则从物理层上能够收到fl的主机有哪些?H3收到f2后,S2的交换表中包含哪些表项?(交换表表项结构:<MAC地址,端口>)
(6)假设连接Rl和R2的链路的MTU=500B,当主机H5向互联网发送一个ID=123456,length=1500B,DF=O的IP分组时,Rl需要将该IP数据分组分几片(每片尽可能封装为最大片)?给出分片结果(包括每片的ID、length、DF、MF、offset).
软件工程专业培养的是能够解决实际工程问题的工程师,要具有较强的利用所学理论知识提出有效解决方案的能力。因此,在不同课程的考试命题中,一定要注意综合应用题的设置。例3以软件设计模式考试的应用题命题为例进行讲解。
例3:某游戏公司的一款竞速游戏中,需要设计多种不同品牌、不同性能、不同外观的赛车,请选用合适的设计模式满足这个设计的需求,并给出理由。
例3的设计是为了考查学生对于工厂方法的掌握程度。首先,学生需要正确理解题目表述的设计需求意图,知道工厂方法能解决这个问题,然后给出他们的工厂方法设计思路。
乍一看,这个题目没有什么技术含量,没有层次,但是事实上题目中隐含了潜在的需求。题目给定的背景是游戏公司的一款游戏设计需求,那么隐含的信息就是这是一款投入市场运营的游戏,它需要不断地给用户新颖的体验,游戏道具等的设计必须多样化,也就是说它的设计需要具有良好的可扩展性,对于原有的设计与实现的影响要尽量小。如果对实际工程问题隐含的需求没有敏锐的嗅觉,学生可能就会选择最简单的工厂方法进行设计(如图2所示),每增加一款新车除了需要加入新款车的类,还都需要去修改CarFactory中produceCar的方法。然而,发现了这层需求的学生则会选用抽象工厂方法进行设计(如图3所示),使得系统的可拓展性更佳。每次增加一款新车只需要一个实现了Producer接口的新款车工厂方法类( XXXCarFactory),以及一个实现了Operation接口的新车实现类用于具体实现及定义新车的性能、款式等内容。当然,学生可以使用其他合适的设计模式进行设计,如建造者模式等。此题是一个开放式的命题,学生可以根据自己的理解提出合适的设计方案。评审者要用开放的思想审视学生的解决方案,但是要对原则性的错误进行批判,对设计的优劣进行准确的判断。
试卷命题完成后,需要经过多次“打磨”,包括试卷整体结构、考查知识点、分数分布、难易程度等审核;对每道试题进行“研磨”,包括题干表述是否清晰、准确,选择题选项设计是否合理、有意义等。经过多次打磨的试卷可以避免或减少错误,尤其是科学性错误;经过多次研磨的试题才可以用于考试。在试题命题过程中(或之后),还需要编写试题参考答案及评分标准。
随着试题设计与编制的进行,需要同时更新表1,并调整试卷结构。试题命题结束,表1信息填写完成。此时可以通过表1全面了解试卷中试题结构、难易程度等,避免试卷过难、过易或者过偏。总之,试题设计的关键是要设计新场景,侧重综合应用能力的考查,避免与往年考题重复,在试题设计过程中充分利用试卷结构明细表。
3.3 试卷统计分析
试卷应用于考试之后,可以通过试评部分完善参考答案并形成评分细则,然后参照评分细则进行评分。试卷评阅完成后进行分数统计,评价试卷的评价效果。比如通过统计(全样本或抽样)分析评价试卷难度,分析每道题的难度、区分度等,并进行归档,作为未来课程命题的参考和指导。最后,还需要作好试卷的试题解析,总结试题设计的初衷,对比该试题实际考试效果,发掘可能存在的问题,反馈并改进教学。
例4:在一个采用CSMA/CD协议的网络中,传输介质是一根完整的电缆,传输速率为1Gbps,电缆中的信号传播速度是200 000 km/s。若最小数据帧长度减少800比特,则最远的两个站点之间的距离至少需要( )
A.增加160 m B.增加80m C.减少160 mD.减少80 m
考点:数据链路层——介质访问控制——CSMA/CD协议
答案:D认知层次:运用 难度系数估计:0.40统计难度系数:0.32
【试题设计思想】通过对特定场景的最小数据帧长度和最远站点距离的变化关系,考查考生对CSMA/CD协议工作原理的深入理解和运用。
【解题思路分析】CSMA/CD协议的一个重要特性是“边发送数据帧,边检测冲突;数据帧发送完成,即结束冲突检测”。因此,CSMA/CD协议若要保证检测到最极端情况下的冲突,必须保证一定的最小数据帧长度,以便传输一个最小数据帧的传输延迟时间不小于相距最远的两个站点在发送数据时出现的极端情况下的冲突。两个相距最远的站点发送数据时产生的最极端情况下的冲突,被检测到的时间为两个站点之间信号传播延迟的2倍。
若学生计算时忽略了往返时间,会得到错误的选项C;若学生搞错了比例关系,则会得出增加80米的答案,选择错误选项B;若学生既搞错了比例关系又忽略了往返时间,则会得出错误选项A的结论。
【效果及教学分析】该题在考试中实际统计难度系数为0.32,说明还有相当一部分学生对这个内容掌握不好。因此,今后教学中还应该强化该部分内容的教学,尤其需要增加相关内容的课堂例题讲解、作业等,使学生熟练掌握并运用该基本原理。
例4是对一道考查CSMA/CD协议原理的选择题的解析,包括试题设计思路解析、解题思路解析、考试效果及教学解析3个方面。试题解析结果是非常重要的资料,可以将长期积累的试题解析内容编辑成册,作为未来学生课程学习以及教学的重要参考辅助资料,这是非常有价值的信息。
4 结语
考试是课程教学效果、学生学习效果评价的重要方法,在一定程度上已经成为课程学习风向标和课程教学指挥棒,规范化、高质量的课程试卷设计对于课程教学至关重要。命题要紧扣教学特点,例如,软件工程专业的课程考核是否能够通过一张试卷检验出学生对实际问题的分析能力和解决工程问题的能力。了解并掌握规范化的试卷设计方法对于每一位教师来说并不难,关键在于我们教师能有多少时间投入到这个重要的教学环节之中。当然,由于课程之间的差异以及课程目标的不同,每门课程选择的考核方式也不尽相同,本文所述方法仅供参考,期望能对教师找到适合特定课程的最佳试卷设计方法有所启发。
参考文献:
[1]戴家干.从考试到评价:论我国考试与评价制度的改革[J]中国考试,2010(1): 3-8.
软件专业课程体系建设是深化计算机软件工程课程改革、提高软件工程教学质量必经之路。从协同创新视角而言,计算机软件工程专业的大课程体系是一个协同体系。在实践操作层面,软件工程专业体系的每一个内容模块都会影响软件工程专业大课程体系的建设成效。软件工程专业的大课程体系每个内容模块可以构建相应的创新平台,通过各内容模块的创新与发展,能有目标、有步骤地推进软件工程专业的大课程体系建设。
1国内外研究现状
根据年度毕业生就业数据报告显示,在就职业过程中,计算机软件工程专业的毕业生适应性差,课程与市场需求脱节,实践与理论脱节,工程实践与技术应用脱节等方面,大部分无法满足企业对于毕业生的需求。这是目前计算机软件工程专业教学中亟待解决的问题所在。软件工程专业的人才培养方案是使得培养的学生能够适应社会主义经济社会发展的需要、能够在德智体美劳等五个方面进行全面的发展、能迅速掌握计算机科学与技术等计算机专业方面的基本理论和基本技能,能进行计算机软件设计开发和应用,还会具有较强实践操作动手能力。学生学会软件的设计方法、学会软件的开发方法以及学会软件工程管理方面的基本训练方法[1]。除此之外,学生还会学会软件系统的研究和开发的基本能力,能壮大软件工程师的队伍,还可以在相关的信息产业部门、企事业单位从事软件工程项目的分析、设计、开发和管理工作,为我国软件产业持续、健康、高速的发展贡献微薄力量。
2协同创新体现在软件工程专业课程建设中的两大模块
大学校园为现在的科技社会输送了许多的人才。一个学校的创新能力是与社会的发展息息相关的。在学校里开展协同创新的专业课程建设有助于提高学生的创新能力的培养。目前,学校的软件工程专业的人才培养方案目标就是培养学生的实践动手能力和自主创新能力以及团队合作意识,明确自己的专业发展方向,了解社会对人才的需求,开展实训教学、实训室建设等一系列协同教学模式,教师提升自己的教学水平,努力开发软件工程专业学生的实践动手能力,协同创新以适应社会的发展需求[2]。2.1软件专业课程体系教学软件工程专业的课程教学首先需要了解课程设置问题。课程的设置需要从三个方面来进行设置,分别为职业技能结构、专业知识体系和课程教学模式3个维度。这三个维度是围绕遵循软件工程规范和研究职业技能结构的课程建设思想以及构建以核心技能为主题的3个层次的专业课程体系为中心的。专业知识体系包括基础课程、核心课程、方向课程、技能课程等。开展职业技能是为了让学生多多了解验证性实验课程、熟悉综合性实验项目、掌握课程设计。在上完理论课之后,验证性实验课程的开展会让学生加深理论课所学到知识的理解过程。开展综合性实验项目,是为了让学生的设计能力和综合能力有所提高,学生应用理论课知识,根据实验研究目的和要求,自行设计实验方案。课程设计最能体现团队合作精神,课程设计的开展,是为了培养学生的综合知识运用能力,以及团队意识和创新能力培养的重要手段[3]。教师的课程教学要注重改革教学方法和教学内容。采取多种考核方式,如课程设计答辩、课程设计成果验收、课程案例分析等方法。改革传统的刻板单一的教学方法,缩小教师与学生之间的距离感,激发大家的学习兴趣,共同探讨知识。最终,学生知识的运用能力得到提高,,学习环境和学习氛围得到改善,实践创新能力也会得到了提高。软件工程专业课程建设也可在协同创新平台的建设上去完善软件工程专业人才培养目标,进而去探索软件工程专业协同创新性实践教学体系。从课程实验教学、实训平台建设、创新训练、协同培养等方面来开展软件工程专业多维实践教学模式。其中,课程实验包括了验证性实验、综合设计性实验和课程设计三个方面。实训平台建设包括了建设软件开发实训室、软件研发中心、校外实训基地。创新能力训练包括了开展各类科研训练和学科竞赛[4]。2.2软件更新管理,建设实训基地开展实践教学,软件要更新,实训基地要建设。目的都是为学生搭建实践动手能力的操作平台、为学生创建发挥创造能力的锻炼平台。作业计算机专业的学生,尤其是软件工程专业的学生,首先要攻克程序关。也就是说,学生应该多多编程上机实现。因而在人才培养方案中的重中之重便是要求软件工程专业学生进行项目实训,提高动手实践编程能力。编程是将所学的抽象专业知识具体化。因则,学院要高度重视实训基地的建设,要努力搭建好实训平台,多多培养学生的动手实践操作能力。学校还可以与企业共同合作来搭建实训的基地,引导学生自主创新,发挥自身的潜力和特长。除此之外,我们还应该来共同来树立协同创新观念,规范软件工程专业的管理制度,整合资源,优化资源,建设学院素质教育实践基地和课程的评价机制,以构建利益共享机制[5]。
3协同创新在软件工程专业建设中的应用
现代社会经济的发展要求计算机软件工程专业培养的人才具备全面的综合素质。应用型本科大学,更加应该注重协同创新型人才培养。软件工程专业课程建设协同创新指的是六个方面为一体的协同创新机制,包括"教师与教师协同、教师与学生协同、学生与学生协同、课程与课程协同、课程与实践协同、校内资源与校外资源协同"等。这些机有助于提高学生学习的积极性,有助于激发学生的创造性,更有助于提升教学质[6]。3.1推崇校园文化,实施协同创新训练每个学校都有自己的文化,每个学校的每个专业也都有自己的特色。软件工程专业的学生的课程建设中明确规定学生需要加强创新能力训练。与此同时,学校应该为学生搭建创新平台,积极开展丰富多样的科技创新活动和竞赛活动。比赛的目的是为了培养学生将所学知识运用于工作与生活中,同时也可达到增强学生的创新意识和实践动手能力的要求[7]。3.2拓展学生综合素质,实施协同创新计划学校可以邀请企业来校参与学校的专业人才培养方案制定和实施。共建校企合作机制,搭建学校与企业合作的应用实训创新平台,协同培养具有实践能力、创新能力和团队精神的应用型人才。软件工程专业人才培养计划中明确了“工学结合、校企合作”。实则是要求学校要与企业共同来制订计划,共同来建立相关软件专业的实训室与开发平台,成立研究开发机构与部门,共同来为社会培养可塑人才。因此,企业必须和学校达成共识,深度开展人才交流与技术交流,充分利用工作环境和培训平台来为学生的创新性培养创造条件,形成协同局面。学校可以聘请企业的软件工程师来为学生授课,讲解在实际工作中企业中所遇到的问题,如软件开发的案例、软件的开发方法和开发过程。讲授案例的同时还可以模拟企业是如何来解决在实际开发过程中所遇到的各种问题的[8]。学校也要全面性了解并且掌握目前市场上对软件开发人才的需求现状,据此来安排专业课程,按需培养学生,为企事业单位输送软件的开发人才,为积极推动社会经济的不断向前发展贡献微薄力量。最终,企业和学校就会实现双方互利共赢的双赢局面。通过学校的培养,企业的参与,学生大学的学业完成后,走出校门走向社会后也不再迷茫[9]。
我国于2002年设立软件工程,近年来发展迅速,目前已有多家高校设置了软件工程专业,软件工程专业的学生数量庞大。但是我国软件工程专业的人才质量与国际上仍有不小的差距,这就对软件工程专业课程体系提出了更高的要求。根据我国国情、市场的需求和高校的实际情况,对软件工程专业课程体系进行进一步研究与创新实践,对于培养出符合软件工程产业要求的人才有重要的意义。
1软件工程专业课程体系的内容
参照2004年国际上IEEE-CS/ACM的本科生软件工程教育计划SE2004,我国教育工作者研究出了软件工程专业本科生教育计划的相关文件。SE2004的主要内容是SEEK,包括计算机科学基础,软件建模及分析,软件设计、验证及确认,软件进化、过程及质量,软件管理,职业基础,数学与工程基础等十余个知识领域。由于涉及领域较多,所以一般建议最少课时不少于五百个课时。基于最少推荐课时,SE2004又给出了课程体系,包括初级、中级、高级课程,数学课程以及非技术课程。
初级课程包括计算机科学基础优先和软件工程优先两种方案。计算机科学基础优先以程序设计基础为主要课程,包括数据结构、算法等课程。软件工程优先以软件工程为主要课程,包括软件工程与计算、算法、数据结构等课程。高级课程包括自下向上和自上向下两种课程设计方案。自下向上以由小到大的顺序逻辑思路为基础,包括软件需求分析、设计、质量保证、测试等课程。自上向下以由大到小的倒序逻辑思路为基础,包括软件的系统构造,软件测试、设计等课程。
2软件工程专业课程体系建立的必要性
长久以来,我国高校的软件工程专业的人才培养以研究型人才培养为主,以理论知识和软件设计为主要内容,目的是培养软件工程和计算机技术领域的研究型人才。目前,高校中软件工程专业的学生在理论知识的运用上缺乏锻炼,将所学知识运用于实际学习与工作中的能力不足。所以,根据我国国情和高校的实际情况,面向产业需求,建立与国际接轨的软件工程专业课程体系对于人才的培养和输运都有重要的意义。放眼国外高校,他们都能根据国家与学校的特点,结合学生的个性与全面发展,培养出适应产业需求和社会发展要求的软件工程专业人才。他们的教育观念成熟,教学手段先进,实验条件优异,并且大多与相关产业的企业有联系。与我国高校相比,他们对于理论知识的理解更深入,与产业的衔接更好,更注重实践,有效提高学生们分析解决问题的能力。所以,为了尽快在软件工程上达到国际水平,与世界接轨,建立软件工程专业课程体系是必经之路。
3软件工程专业课程体系发展现状
3.1课时分配不合理
目前的软件工程专业课程体系中计算机科学基础所分配的课时过少,压缩得太厉害,无法清楚明了地讲解计算机科学基础,对教师和程序设计者产生了不小的挑战。
3.2软件工程专业课程体系的优化不足
沿用传统的计算机的相关课程,不利于教育工作者调整优化计算机的相关课程的教学内容,从而实现软件工程专业课程体系的精益求精。
3.3创新有余,实践性不足
软件工程专业课程体系的创新方案创新性足够了,但是缺乏实践性。程序设计是软件工程专业课程体系的重要组成部分,在教学过程中软件工程与程序设计有机结合,可以取得良好的教学效果。但是软件工程专业课程体系却从软件工程的角度入手,增加了难度,不易于初学者的入门与深入学习。
3.4初级课程与高级课程的衔接性不足
高级课程的两种课程设计方案,自下向上和自上向下的设计十分巧妙,但是初级课程的软件课程导论与高级课程的衔接不够明确和顺畅,有待进一步研究。
3.5非技术性课程不能有效的融合进软件工程
非技术性课程的内容设置过于简单,不能有效地将多方面的教学内容融合在软件工程专业课程体系中。
4软件工程专业课程体系的发展目标
软件工程专业课程体系的发展目标是根据国内外对于软件工程人才的需求,培养出理论知识与动手实践能力并重的专业人才,主要针对于软件开发、工程领域、现代软件工程三个领域。软件开发领域对于人才的要求是精通算法与数据结构,数据库,多媒体技术,计算机网络等专业知识。工程领域对于专业人才的具体要求是:精通电子商务、电子政务、企业与城市信息化、信息安全等知识。现代软件工程需要专业人才精通软件需求分析、体系结构、项目管理、测试与评估等方面的专业知识。件工程专业课程体系旨在结合市场需求与社会发展的要求,根据软件工程产业的需求,在理论知识的传授下,培养软件工程专业人才的综合能力,包括交流能力、团结意识、创新素质、法律基础、专业技能等。例如,英特尔公司产学合作专业综合改革项目自2011年在教育部指导下设立,旨在结合英特尔最新技术和解决方案,面向全国高等学校计算机学院、软件学院以及相关院系,通过支持专业课程体系建设、实验体系建设、专业课程建设以及实验案例开发,从而改进课程教学内容,优化课程体系,提升计算机、软件工程等专业教学质量。同时,英特尔公司将支持学校对以上相关专业进行系统化教学改革,以期课程建设成果能够在学校实施。2016年项目申请已开放,本年度重点将根据最新技术和教学要求,以培养计算机专业、软件和相关专业具有系统化能力的人才为目标,升级和开发计算机、软件和物联网专业课程专业综合改革试点。
5软件工程专业课程体系的完善与创新实践
5.1贯彻工程教育理念
按照软件工程相关产业的需求与实际环境来设计软件工程专业课程体系,规划具体的课程安排,组织形成软件工程专业基础课程、核心课程体系。
5.2以软件工程为主线
软件工程专业课程体系的设置需要以软件工程为主线来设计基础与专业课程的具体教学内容。基础课程旨在连接软件工程和程序设计,专业课程旨在锻炼学生在特定领域的理论知识的掌握与综合实践能力,最终都是为软件工程服务。
5.3培养学生的综合素质
改造传统的软件工程专业课程体系,强化初学者对于计算机系统理念的建立,对于基本概念的掌握与理解在计算机环境下培养学生利用基础理论知识解决实际问题的能力。
5.4改变非技术课程的教学方法
非技术课程目前存在的问题是衔接性不足,不能有效地融入软件工程专业课程体系。所以教师要注意改变教学方法,改革非技术课程的教学内容,基于软件工程链接非技术课程与技术课程为一体,从而更好地发展和完善软件工程专业课程体系。
5.5注重实践性教学
关键词:民办高校;能力培养;课程体系;软件工程专业
基金项目:黄河科技学院教育教学改革重点研究项目(JG1008512103)。
作者简介:邵开丽,女,讲师,研究方向为软件工程;孔繁民,男,教授,研究方向为计算数学,软件工程。
随着民办教育的迅猛发展,其在社会多个领域中发挥着越来越重要的作用。《国家中长期教育改革和发展规划纲要》(2010-2020年)中指出“民办教育是教育事业发展的重要增长点和促进教育改革的重要力量”,进一步明确了民办教育的重要地位和作用。据2010年中国民办高校网统计(chinam /),全国民办普通高校达到350所,其中民办本科高校为48所,成为高等教育大军的重要组成部分。但是,民办教育的健康、可持续发展也面临着诸多困境和挑战[1-2],而提高办学质量则是解决问题的有效途径[3]。因此,为了推动民办教育事业的发展,有效提高民办高校的教学质量,本文以民办本科院校黄河科技学院软件工程专业为研究对象,结合本校“本科学历教育与职业技能教育相结合”的人才培养模式,研究以能力培养为目标的软件工程专业课程体系改革,为社会发展需要提供既有扎实理论基础又有较强实践能力的软件工程应用型人才,以满足目前软件产业界的各种需求。
1 软件工程专业社会需求及就业状况调查
目前国内外对应用型软件工程人才的需求十分
旺盛,并有逐年扩大之趋势。中国工业与信息化部对2010年中国软件产业规模的统计数据显示,软件产业总收入已达13 364亿元,同比增长34%,产业规模比2006扩大了几乎三倍[4]。2009年软件业从业人员213.2万[5],而且软件业人才需求量也在逐年扩大,中国电子信息产业发展研究院(CCID)针对2008年人才市场的最新调查数据显示,目前IT行业每年存在至少50万的软件人才缺口,并且还在以每年20%的速度增加。
据中华英才网对IT职场人气职位统计的结果显示,计算机软件位列前茅,其中以软件工程师、高级软件工程师及软件测试工程师人气职位增长最快。然而,从对历届的毕业生就业状况调查,多数软件类应届毕业生在面临就业时却难以感受到这些数字所带来的欣慰,很多毕业生并没有顺利找到对口的工作。虽然这些学生身份上属于工程技术类的应用型人才,在目前IT产业蓬勃发展的大环境下理应有自己的一席之地,但结果却是“毕业即失业”表现得愈加突出[6]。存在这种现象的原因主要有两个方面:一是软件工程人才短缺;二是软件工程专业人才培养模式不合理。因此,民办高校必须主动适应经济社会发展,培养具有实践能力的软件工程应用型人才,明确专业能力培养目标及其内涵,探索能力培养的方法与途径,构建与软件产业需求相适应的软件工程专业教学体系与教学模式[7]。
2 民办高校软件工程专业培养规格
2.1 基于能力的专业培养目标
目前,民办高校教育仍以专业教育为主导,因此,重视专业能力的培养成为民办高校教育的特色之一。能力是技能化的知识,是知识应用的综合体现[8]。通过培养学生的专业能力,增强学生的职业性能力和社会性能力,使学生各方面的素质得到全面提升。为了贯彻和实施黄河科技学院“本科学历教育与职业技能教育相结合”的人才培养模式,突出能力培养的重要性,软件工程专业从能力培养的角度对专业培养目标进行了重新确定,为专业课程体系的设置、培养方案的制定、教学体系的安排等环节指明了方向。
2.2 专业核心能力分析
教育部高等学校计算机科学与技术教学指导委员会编制的《高等学校计算机科学与技术专业能力构成与培养》一书指出,一名合格的计算机专业人才应该具备四大专业基本能力:计算思维能力、算法设计与分析能力、程序设计与实现能力和系统能力[8]。软件工程专业属于计算机科学与技术专业的二级学科,应该具备哪些基本能力更有利于软件工程专业人才的培养,使毕业生就业时既有专业应用能力,又有创新思维和创业能力呢?针对这个问题,教学团队成员对专业的社会需求进行了调查,并结合本校办学特色及学生自身的特点,运用软件工程思想对以上四大能力进行分析、分解,形成更适合本专业人才培养的专业核心能力,即:软件分析能力、软件设计能力、软件实现能力和软件测试能力,如图1所示。通过这些能力的培养,使学生在软件工程专业方面具有良好的科学与工程素养,系统掌握计算机基础理论、软件开发、软件管理等计算机应用技术,能运用工程化方法、技术和工具从事软件分析、设计、开发、维护等工作,具备工程项目的组织与管理能力、团队协作能力的应用型软件工程人才。
软件工程思想是一种成熟的指导软件管理和实施的先进思想,重点研究如何以系统的、可控的、高效的方式开发和维护高质量软件。企业对软件人才的知识结构要求其具备扎实的专业理论知识、先进的软件开发技术及较高的专业素质。因此,本专业运用软件工程思想对专业能力培养进行了研究和实践,依据软件工程中软件生命周期的各个阶段(问题的定义及规划、需求分析、软件设计、程序编码、软件测试和运行维护),确定软件工程专业的核心能力,以满足企业或社会的实际需求。文献[7]对软件分析与设计
能力、软件实现能力、软件测试能力及工程综合能力应该掌握或具备的专业知识进行了详细阐述。
3 民办高校软件工程专业课程体系设置
课程体系结构的设置对培养目标的落实、教学计划的制定及教学内容的安排起着决定性的作用。软件工程专业应用性强,而且技术发展迅速、变化快,需要不断更新教学内容以适应社会发展的需要,因此,课程体系结构必须注重专业能力的培养,使学生掌握专业基础知识的同时,具备较强的动手能力及快速适应专业新技术的能力。我院设计的软件工程专业课程体系主要包括理论课程体系、实践课程体系和质量保障体系,从而有效保证了专业人才培养目标的实施。基于篇幅,本文仅对理论和实践课程体系的设置进行详细介绍。
3.1 基于能力培养的理论课程体系设置
根据上述2.2中对软件工程专业核心能力的分析,我院将其理论课程体系分成普通教育平台、专业教育平台和职业与创业教育平台三部分,紧密结合学校的“本科学历教育与职业技能教育相结合”的人才培养模式,注重培养学生掌握专业学科知识与技能的同时,更关心学生将来科学研究、继续深造、道德素养及创业能力的教育。
软件工程专业理论课程体系结构如图2所示,三个平台相辅相成,互相促进。其中,普通教育平台主要包括政治、外语、数学、人文、体质等基础课程的教学,目的是培养和提高学生的综合素质能力,对专业课的学习起到积极的调节作用,而且有利于拓宽学生知识视野。职业与创业教育平台是民办教育的特色,通过培养学生创业意识和创业能力,不断提高和增强自身引导、服务社会的能力。专业教育平台是软件工程专业理论课程体系的核心部分,主要以培养专业知识和专业技能为目标,使学生具有软件分析、设计、实现和测试能力,对软件专业人才培养质量起着关键性和决定性的作用。
因此,本文着重对专业教育平台的建设进行详细探讨,分析软件工程专业人才培养规格应具备的基本能力、核心能力点、依托的核心课程、能力培养达到的程度及测试要求等方面(如表1所示),保证应用型专业能力人才培养目标的有效实施。
3.2 基于能力培养的实践课程体系设置
培养适合社会需求的应用型软件技术人才,使毕业生就业时具备所必需的实践能力、工程能力和创新能力,是应用型本科院校可持续发展的关键。因此,软件工程专业实践课程体系建设围绕以能力培养为目标,把实践教学内容按照阶梯螺旋上升的方式分为课程实验、课程设计、企业实训、专业实习和毕业设计,并把软件设计大赛、大学生创新实践训练计划项目及职业资格认证贯穿其中,进一步加强学生的职业技能教育和创业教育,完善和实践专业教学体系。软件工程专业实践教学体系如图3所示。
1) 课程实验。
为了使学生学好专业理论课,软件工程专业的每门课都设置以验证性实验为主的同步课程实验,并且
加大实验课的过程管理,具有严格的实验监管体系。要求实验课时占总课时的30%~50%;每门实验课有详细的实验指导书;学生对每次实验课的内容都要撰写实验报告,包括实验内容、操作步骤、实验结果及对实验的分析;制定详细的实验报告评阅标准,对教师的评阅情况进行阶段性评比;对优秀实验报告进行展览和评比;成立督导组不定时抽查听课。这一系列措施使学生和教师都能认真对待每次实验,而且可以让学生熟练掌握各专业理论课的实践操作和应用,更好地为后继高层次课程的学习奠定良好的基础。
2) 课程设计。
课程设计是对课程实验课的进一步深化,一般放在课程结束的学期末进行。软件工程专业的课程设计有较强的综合性、工程性和系统性,要用1~2周(至少30个课时)的时间完成。因此,开设课程设计的课程必须能体现出这些特点,如程序设计语言、数据库系统与应用、数据结构、软件工程等课程,都可以通过课程设计使学生进一步系统地掌握软件开发技术与方法。
为了突出课程设计的重要性,课程设计和专业课程的学习放在同一地位。如果课程设计不合格,与专业课程一样实行重修,从而保证课程设计的质量而不是走过场。
3) 企业实训。
企业实训是民办高校不可或缺的关键实践环节。目前,本专业已和6家企业建立了校企合作关系。企业实训环节放在每个学年的结束,时间为2周(60学时)。根据学生所在年级及掌握专业知识的层次不同,企业和学校双方共同研究制定与学生相适应的实训计划、实训方案和实训内容,共同参与学生实训成绩的考核。实训内容包括:企业文化、项目开发及企业管理。通过企业实训,学生更清楚地了解软件工程专业课程设置的目的和作用(包括在课堂上学习的各种软件开发的思想、方法、技术、开发平台及环境等),激发学生的学习兴趣,提高学生在课堂上学习的效率。通过企业实训,学生亲身体验和了解IT行业的现状、企业文化及其管理情况,使学生进一步了解职业人的风范,懂得如何才能做一个合格的职业人,为以后学生就业和创业奠定一定基础。通过在企业实训,可以让学生把在学校所学的知识融会贯通,及早地适应企业的工作模式和工作环境。
4) 专业实习。
专业实习是在学生学习完大学本科专业所有课程后进行的一次综合性社会实验,目的是通过模拟软件公司项目开发团队,培养学生的团队协作能力,提高学生的表达、沟通、讨论、写作等综合能力。实习期间,以5~10人划分成个多个项目团队,每个项目团队承担一个独立的项目,在规定的时间内(通常为1个月)完成实习内容。在此期间,每个成员必须有明确的职责和分工,并且有相应的考核标准,督促学生按计划顺和完成。通过专业实习,进一步增强学生的实践和思维创新能力,增强学生的就业信心。
5) 毕业设计。
毕业设计是高等教育中的重要实践环节。通过五个月的毕业设计工作,使学生加深对所学课程的掌握,培养学生理论联系实际的学风,进一步训练和提高学生的问题分析和设计能力、软件编程能力、软件调试和测试能力,增强学生综合运用知识、独立分析问题、发现问题和解决问题的能力。近三年来,软件工程专业的毕业设计实施第三方评审机制(聘请兄弟高校、科研院所对学生毕业设计进行评价),对本专业的毕业设计工作起到了很大的推动作用,有效提升了毕业设计的质量。
6) 软件设计大赛。
软件工程专业从大学一年级就开始就有意识地培养和组织学生参与各种软件竞赛,参加竞赛的学生比例达到专业人数的60%以上。所参加的正保教育杯国ITAT教育工程就业技能大赛、“国信蓝点杯”全国软件专业人才设计与开发大赛、河南省软件设计大赛、大学生挑战杯软件设计大赛及学校组织的软件设计大赛等,取得大小奖项20余项。2008年,学校专门成立了竞赛管理中心,负责各种赛事的信息收集、组织、培训指导及与赛事相关的服务工作。竞赛平台的搭建给学生营造了良好的软件设计和开发环境。通过参加竞赛,学生把所学的知识转化成各种成果,极大地鼓舞了学生学习专业知识的兴趣和热情,提高了学生的实践动手能力,培养了学生独立分析、解决问题的能力。
7) 大学生创新实践训练计划项目。
大学生创新实践训练计划是实践教学体系的重要组成部分,是实现学历教育特别是培养学生从事本专业实际工作和研究工作初步能力的重要举措。项目团队人数一般为3~5人,项目执行时限为半年到一年,鼓励软件专业和其他学科交叉融合,可以跨院系、专业、年级联合申报。申请的项目团队成员要有较强的独立思考能力和创新意识,对科学研究、科技活动或社会实践有浓厚的兴趣,且具备从事科学研究的基本素质和能力。获得立项或取得优秀成果的项目,学校给予一定的经费支持。两年来,本专业获得立项近10项,申报的项目技术含量较高,如基于WSN的智能楼宇管理系统研制、基于.NET和TonyOS的电量监测系统开发等。
8) 职业资格认证。
为了实现高校课程与国家职业标准的对接,更好地实现“本科学历教育与职业技能教育相结合”的人才培养模式,使“学历证书和职业资格证书”双证融通,学校向省市劳动部门申请,成立培训中心,全面负责学生资格培训的管理工作,为学生职业资格认证考试提供保障平台。为了激发学生学习职业技能的积极性,我院把职业资格认证和软件工程专业的某些课程对应起来,拿到某项证书后,就可获得一定的学分,免修对应的课程。近三年来,学生获得全国计算机技术与软件专业技术中级资格认证(如系统分析师、软件设计师、数据库系统工程师、软件评测师等)的占专业人数的23%,获初级资格认证(如程序员、多媒体应用制作技术员等)的占45%。
4 结语
软件工程专业通过建立以能力为核心的专业培养目标,系统地对专业课程体系进行大胆的改造和设置。经过三年多的实践,极大地调动教师教学积极性,学生学习计算机软件的兴趣和热情,增强学生独立分析、解决问题的能力,提高学生的动手实践能力和团队协作精神,吸引了很多企事业单位前来招聘,如:
中国电信、中兴公司、河南软件孵化园等,使软件工程专业的毕业生年平均就业率达到98%以上,签约率达到86%以上,为社会培养了一批具有较强职业竞争能力的“下得去、留得住、用得上”的软件专业应用型人才。为了进一步提高民办高校的办学质量,走向健康、持续发展之路,未来专业建设需要从教师结构、管理制度、设备投入及校企合作等方面进一步完善,特别是大力推进与软件公司的合作与交流,实现与市场接轨,争取培养出有特色高水平的民办大学IT应用型人才。
参考文献:
[1] 钱国英. 民办高校可持续发展面临的挑战、困境及对策[J]. 宁波大学学报:教育科学版,2010,32(3): 50-53.
[2] 张亚丽. 新时期民办高校可持续发展的困境与对策研究[J]. 高等理科教育,2009(6):146-149.
[3] 罗丹. 民办高校办学质量提升的途径探析[J]. 企业家天地:理论版,2010(11):172-174.
[4] 杨婧,李玲. 软件外包与我国软件产业升级[J]. 中国外资,2011,237(3):22-23.
[5] 2001-2009年我国软件产业发展概况[N]. 中国电子报,2010-5-28(1).
[6] 文志诚,曹春丽. 以社会需求为导向的软件工程专业课程体系改革的研究[J]. 计算机教育,2010(4):59-62.
[7] 檀明,张向东,许强,等. 以能力为导向的软件工程专业应用型人才培养[J]. 计算机教育,2010(21):88-92.
[8] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业人才专业能力构成与培养[M]. 北京:机械工业出版社,2010:16-24.
Research on Professional Curriculum Reform of Software Engineering of
Private Colleges and Universities Based on Ability Cultivating Model
SHAO Kaili, KONG Fanmin
1背景
中国信息产业部的数据显示,2008年中国软件产业整体保持快速增长态势,累计完成软件业务收入7572.9亿元,同比增长29.8%。与此同时,我国软件出口142亿美元,同比增长39%。企业对软件人才需求量在增大,估计人才缺口达到20万,而且这个需求将以每年20%左右的速度增长[1]。但另一方面,多数软件类应届毕业生在面临就业时却难以感受到这些数字所带来的欣慰,很多毕业生并没有顺利找到对口的工作。虽然这些学生身份上属于工程技术类的应用型人才,在目前IT产业蓬勃发展的大环境下理应有自己的一席之地,但结果却是“毕业即失业”表现得愈加突出。
软件工程专业具有巨大的发展潜力,但如何建设好软件工程专业?长期以来,国内高校软件专业主要以培养研究型人才为重点,以软件基础理论和系统软件设计为主干,目标是培养面向计算机与系统软件领域的研究型人才[2]。因此如何建立保证软件工程专业本科学生既具有可持续发展潜力又适应当前产业需求的新型知识体系,如何建立与企业应用紧密结合的先进课程体系、教学理念和教学方法,从而提高学生的综合能力,使毕业生在跨出校门时具备必需的素质,缩短从学生到企业员工的角色转换所需的时间,实现就业的“零适应期”是软件工程专业努力的目标。
国外高校在软件工程教育方面的一个共同点就是:根据各自国家和学校的特点,立足学生长远发展,培养适应社会需要与变化的人才。从软件教育的特点来看,西方著名大学有较完善的教育理念、教学手段和实验条件,有较长时间的实施经验,与企业有密切的合作关系,有一大批专家在从事计算机与软件的教育研究。这些大学的课程与我国现行的计算机和软件课程体系相比,理论更深,与新技术的接轨更快,实验和职业实践的比重更大,通过实验让学生掌握基本概念、提高分析问题与解决问题能力的力度更大。
国内高校软件专业主要以培养研究型人才为重点,以软件基础理论和系统软件设计为主干,目标是培养面向计算机与系统软件领域的研究型人才。软件专业学生在学生学科知识与实际运用有一定的距离。因此探讨如何建立符合国情,既面向当前产业需要又兼顾本专业学生发展潜力的知识体系、课程体系,是我们研究的主要内容。
2模块化的课程体系
我校软件工程专业申办于2004年,并于2008年开始招生。该专业成立的宗旨是培养高层次、实用型、复合型、具有国际竞争力的软件人才,要求学生在思维创新的基础上,提高技术创新和工程创新能力,提高软件工程实践和软件工程管理能力。我校在设置软件工程专业课程体系方面学习全国名牌大学如复旦、浙大等,并结合自己硬件及师资条件的实际,提出了如下几个设想:
(1) 合理设置课程模块,突出核心基础。
在软件工程领域,最新的、先进的软件技术文档、技术文献、发展研究等都是英文撰写的资料;合资、外资公司中的软件工程人员所使用的工作语言也是英语。因此在第一至第四学期我们对学生的英语能力进行强化训练,通过阅读、听力、写作和口语交流等方式提高其英语运用能力;在第二学期开始的所有专业基础课程、专业核心课程和专业选修课程中加入一定比例的专业英语训练,将英语融入到专业理论知识学习的过程中;同时开设几门专业课采用全英文教材,实行双语教学,达到巩固和不断提高的目的,为学生动手编写英文程序代码,查阅英文技术文献、文档扫除语言障碍。
(2) 合理设置专业入门基础课程模块,以引导为主。
以计算机导论为主,并以设置类型多样、专业覆盖面广的专业基础知识讲座或新生研讨课为辅,学生学习了计算机最基本的概念后,通过生动有趣的讲座获得更广的认识和了解。
(3) 合理设置专业核心课程模块,以应用为主。
专业核心课程关系到培养出来的软件工程人才质量。针对计算机学科需要,应设置相应的软件系统类课程、软件实现类课程、软件工程类课程以及相应课程的课程设计、实际项目开发为核心的软件设计及实现类的实践类课程。
(4) 设置专业方向选修课程,突出个性化发展。
结合时代需求,结合学生个性化发展需求,设置多个专业方向的模块化课程。设置跨大类专业选修课程,如计算机组成原理、编译原理和软件体系结构等;设置专业方向选修课程,如软件开发案例分析、软件开发新技术、软件文档写作等课程。学生可按需选修1~2个专业方向,有利于其发挥专业创新能力和专业个性化发展。
目前,我校软件工程专业课程体系架构如图1所示。
3实践教学体系
我院除设置模块化的课程体系外,还非常注重实践教学,并且构建了以项目为支撑的实践教学体系,具体开设与实践教学有关的课程如下:
第二个学期开设认识实习;
第三个学期开设面向对象程序设计课程设计;
第四个学期开设数据库原理课程设计以及.NET程序开发技术课程设计;
第五个学期开设Java语言课程设计以及UML建模工具及应用课程设计;
第六个学期开设J2EE技术课程设计及大型数据库课程设计;
第七个学期开设软件开发新技术课程设计;
第八个学期毕业设计。
针对合格的工程化软件人才所应具备的个人开发能力、团队开发能力、系统研发能力和设备应用能力,我们设计了以下4类阶梯状的工程实践课程。
程序设计实践课程:培养个人级工程项目开发能力,如面向过程程序设计(C语言),面向对象程序设计(C++语言)等课程设计。
软件工程实践课程:培养团队合作级工程项目研发能力,如.NET程序开发技术、J2EE技术、嵌入式软件开发(J2ME)等课程设计。
信息系统实践课程:培养系统级工程项目研发能力,如软件开发案例分析、面向对象系统分析与设计、大型数据库应用等课程设计。
毕业设计实践课程:培养开发软件所必备的设备应用能力,如软件开发新技术课程设计、毕业设计实践等。
我们感觉软件方面的技术五花八门,因此在专业核心课程设置上,注意其侧重点。我们将Java网络程序开发定为主要的教学方向,其中包括Java程序设计语言、网络软件开发技术、J2EE技术、以J2ME为主的嵌入式软件开发技术等。当然,我们兼顾企业实际用人的情况,开设了.NET程序开发技术等核心课程,详细的专业课程体系请参见图1。
4探索式学习
软件工程的理论和方法是从众多软件开发实践中总结出来的,但是对于缺乏软件开发实际经验的本科生来说,单纯地讲授理论知识往往使学生感到枯燥无味且难以理解。因此,我们收集和总结了一些软件开发案例,将这些案例贯穿于理论知识的讲解中,使学生真正理解这些理论知识,建立软件开发的系统化与工程化观念和质量意识。
(1) 从分析历史上的经典案例入手,诸如爱国者导弹、网络病毒攻击等。深入剖析导致软件失败的根本原因,从而引出软件开发的工程化发展方向,即以软件工程的原理和方法为指导,严格遵循软件过程规范和步骤。通过这些实例的分析,学生们逐渐改变软件开发等于编写程序代码的错误观念,开始认识到软件工程的重要性,有利于培养工程化的意识和观念。
(2) 软件过程是软件工程课程中的一个重要内容,但是对于开发经验有限的本科生来说,很难在头脑中将软件过程的抽象模型与实际开发联系起来,容易产生枯燥乏味的感觉。在教学过程中,我们从软件开发的实际案例中总结出5个不同的软件系统,结合这些系统的特点和开发策略,讲解瀑布模型、原型化方法、增量模型、形式化方法和基于组件的开发模型等。学生在思考、分析和讨论过程中更好地理解和体会软件过程的基本概念,有利于在实际开发中运用这些过程模型组织开发过程。
(3) 研究软件工程的实践特点,课程实验结合实际开发因素和参与乐趣。实践教学是本课程的一个重要的组成部分,它要求学生以开发团队(一个团队通常由3~5人组成)的方式开发一个具有一定规模的软件系统,侧重培养学生发现问题、独立分析问题和解决问题的能力以及团队合作精神,使学生初步体会到一个软件开发项目全过程。
(4) 研究和建立适合小组式开发的软件工程环境。在小组式的软件工程环境中,使学生真正体验到一种有序的、可控的、协作的软件开发过程,在分析问题、解决问题、协调冲突、消除矛盾的过程中享受软件开发成功的最终结果。软件工程实验要求学生采用“项目小组”的形式,结合具体的开发项目进行设计,班级按项目小组进行分组,每组不得超过4人。每个项目小组选出项目负责人或项目经理,由其召集项目组成员讨论、选定开发项目。学生分工合作,学习软件开发小组的组织和管理,将项目开发各阶段的任务明确,熟悉软件开发环境,培养团队精神,共同完成该项目的设计任务。项目中的每项任务要落实到个人,实验在规定的时间内,由学生独立完成。
在整个教学过程中,我们也十分注重鼓励和引导探索式学习,学生通过文献查阅以及与软件企业人员的接触交流,真正体会当前软件工程业界的真实案例和最佳实践。课堂讲解避免“一言谈”的死板方式,采取课堂互动讨论,营造活跃、宽松的课堂气氛,鼓励学生结合课程实践中的问题进行专题报告和软件演示。
在常规的课堂教学之外,我们辅之以网络课程和扩展资源,鼓励学生根据个人兴趣和需要进行自主式的学习。同时,充分利用网络教学平台,加强师生之间的交流和学生之间的协作,引导学生积极思考和参与讨论,教师由知识的灌输者成为学习的引导者,学生由被动地接受教育变成主动地探索知识。
5改革目标
我校软件工程专业以培养掌握计算机科学基础理论、软件工程的知识和技能,具有软件开发能力、软件开发实践和项目组织的初步经验,具有竞争和团队精神,能在计算机公司及相关企事业单位从事软件开发、适应软件技术发展和社会需求的软件工程应用型高级专门人才为目标。我校在人才培养坚持遵循以下原则。
(1) 坚持通识教育与专业教育结合原则,即通识教育课程要着眼于加强学生的基础知识教育,着眼于培养学生的科学素养和人文精神[3]。
(2) 坚持以人为本,因材施教原则,即在保证人才培养目标和质量规格要求的基础上,充分考虑因材施教,注重学生个性的发展,扩大学生自主学习、自主发展的时空,面向社会和学生多样化需求,提供多样化的课程体系和教育指导,为不同志向、不同能力和不同潜质的学生创造相应的培养环境和条件。通过柔性设置专业方向模块,让学生结合自身兴趣、就业志向和人才市场需求,灵活地选择发展方向,以增强专业方向优势、职业适应性建立完善的、与课程体系配套的实训、培训的“双训”教学体系,使培养的人才更加适应社会和企业的需求。
(3) 坚持应用为本,学以致用原则,即以学校办学定位和服务面向为指南,立足于培养应用型高级专门人才的目标,强化理论与实践的结合,着力培养学生的创新精神和实践能力。在实践教学体系的设计上,按照基础、提高、综合3个层次和基本实验、技能训练、专业实习、科研训练、综合实习、社会实践6大模块构建创新精神和实践能力培养体系。
(4) 建立一套以软件工程为主线的教学、实训评估标准,以确保人才培养目标的实现。
6结语
我们认为,计算机科学技术的快速发展以及企业对人才的多元化需求要求我们将新的知识单元及时引进课程体系中,使课程体系的设置要有超前和发展的眼光,随时将一些新兴的、成熟的内容吸收进课堂教学,做到对课程体系、教学计划动态调整,保持课程体系的动态性、前瞻性。
软件工程专业课程体系必须建立在对软件工程专业人才的知识结构和综合素质的全面研究之上。按照软件工程专业人才培养目标和国内外软件工程人才的需求,培养出的人才的知识结构域应该包括软件开发新技术、现代软件工程、工程领域背景技术3个主要部分[4]。我们还将在课程体系设置、教学方法、教材编写等诸多方面,充分学习、借鉴和吸收发达国家计算机教育教学的先进经验。
注:本文受“以社会需求为导向的软件工程专业课程体系改革的研究”(校级重点教改课题)支持。
参考文献:
[1] 王晴. 印度软件业崛起原因及其对我国产业结构升级的启示[J]. 生产力研究,2007(3):104-106.
[2] 吴爱华. 全国高校软件工程专业教育年会论文集(2007)[M]// 适应时展 推进高等理工科教育改革. 北京:高等教育出版社,2008.
[3] 杨芙清. 全国高校软件工程专业教育年会论文集(2007)[M]// 软件工程教育的思索与实践. 北京:高等教育出版社,2008.
[4] 李彤. 软件工程人才培养的实践与思考[J]. 计算机教育,2004(10):15-17.
Research on Professional Curriculum Reform of Software Engineering
about Social Requirement-oriented
WEN Zhi-cheng1, CAO Chun-li2
(1.College of Computer and Communication, Hunan University of Technology, Zhuzhou 412008, China;
软件工程是指导计算机软件开发和维护的工程学科[1]。为了培养高层次、实用型、复合型、具有国际竞争力的软件人才,我国于2001年底启动软件工程学科的教学。国内很多高校(包括211重点工程、地方高校)都设立了软件工程专业,为社会培养了大量的人才。然而,目前在IT人才市场却出现了高校应届毕业生就业难和企业急需合格的IT人才的矛盾。这反映了高校传统的人才培养模式与软件产业对人才规格的要求之间存在较大偏差。因此,改革人才培养模式,优化课程体系结构,培养适应企业需求的实用型软件人才是当前高等院校的重要任务之一。
借鉴发达国家工程型人才培养的成功经验,根据“海西”区域经济发展现状和我校应用型本科教育的办学定位,提出我校软件工程专业人才培养目标是:软件工程专业本科学生应该既具有可持续发展潜力又适应当前软件产业岗位需求,具备较强的工程实践能力、必需的专业技能和职业素养,能够快速完成从学生到企业员工的角色转换。围绕上述目标,笔者从理论教学课程体系和实践教学课程体系方面,提出本科应用型软件工程专业课程体系的建构思路,并应用课程群方法对课程体系进行了优化处理。
1“核心稳定、方向灵活”的专业理论课程体系构建
“软件工程”学科特有的工程性,技术与管理的综合性,新兴学科的快速发展和变化等特点,使得课程体系设计面临一系列突出问题。通过对软件行业人才知识结构和综合素质要求的全面研究,借鉴国际先进的工程教育培养理念和国内其他高校应用型软件工程人才培养模式,结合“海西”区域经济发展现状及我院办学定位,提出既面向当前软件产业岗位需要,又兼顾本专业学生发展潜力培养,具有“核心稳定、方向灵活”的课程体系设计思路。
1.1专业必修课程体系设计策略
专业基础课程、专业核心课程应根据计算机基本知识理论体系设置。该课群主要培养学生具有扎实的计算机理论知识,具备良好的软件分析和设计能力,能够利用专业理论知识指导实践。为了培养学生潜力和可持续发展能力,提高学生未来职业发展的核心竞争力,避免“后劲不足”,在专业课程体系设计中采取了三个优先策略:
1) 基础课程优先策略。高级语言程序设计、离散数学、算法与数据结构、数据库系统原理及应用、微机原理及接口技术、面向对象程序设计、计算机组成与结构、数据通信与计算机网络、软件工程、操作系统原理及应用、软件测试技术等重要的专业基础课程、专业核心课程,必须优先保证其课时安排并配备最好的教学资源。
2) 程序设计优先策略。程序设计是学习后续课程所必需的技能,也是训练学生软件开发能力必要的手段。第一学期就安排了高级语言程序设计课程。其后,通过算法与数据结构、结构化程序综合设计、数据库系统原理及应用、C/S程序综合设计等课程,不断加强学生程序设计能力的训练。尤其是结构化程序综合设计、C/S程序综合设计这两门课程,被设计成以任务驱动的实践性实验课程,通过每周一次的案例设计指导和结果检查,来提高学生程序设计和项目开发的综合能力。
3) 专业外语优先策略。社会对国际化人才的需求越来越强烈,为了培养具备一定国际视野的IT专业人才,也为了使学生能更快更好地更新专业知识,增强其职业发展的潜力。将专业外语课提前到第三学期,并在专业基础课程、专业核心课程和专业选修课程中加入一定比例的双语课程,将英语融入到专业理论知识学习的过程中,为学生编写英文程序代码,查阅英文技术文献、文档扫除语言障碍。
1.2专业方向选修课的“逆推”设计法
基于软件企业岗位需求划分专业方向,努力缩小高校培养的软件人才与企业需求之间的差距。具体做法是:首先依据专业定位和社会需求选择若干个岗位确定为专业方向,如:企业计算方向、嵌入式系统方向、日语加强班、企业定制培养实训班(针对岗位到企业实训、请企业技术人员到学校授课)、考研班等。明确每个专业方向毕业生应具备的能力和应掌握的知识,采用“逆推”的方法[2]设计专业方向选修课群,制定模块化的专业方向选修课程体系,如图1所示。专业方向选修课设置要紧紧跟踪软件行业人才需求变化和新技术发展,不断进行动态调整加以完善,保持专业方向选修课设置的可扩展性和灵活性。
2注重职业技能培养,构建工程化实践教学体系
实践教学是指有计划地组织学生通过观察、试验、操作,掌握与专业培养目标相关的理论知识和实践技能的教学活动[3]。尽管实践教学部分的课时在总课时中所占比例不低,但实际的实践教学效果却并不理想。传统实践教学的主要弊端是:①忽视了理论课程与实践课程之间、不同的理论课程之间以及不同的实践课程之间的联系;②在课程设计和软件开发实践环节中,缺乏对过程的有效指导和控制,工程意识的培养和训练不够充分,难以培养学生的软件工程能力。
2.1以岗位技能培养为目标,构建三级实践教学体系
针对传统实践教学中存在的上述问题,提出以职业岗位能力需求为导向,构建工程化实践教学体系的思路。具体做法是:根据职业岗位对人才知识和能力的要求,制定工程实践教学的一级目标,将一级目标分解为二级目标,二级目标进一步分解为三级目标。三级目标、二级目标、一级目标分别对应课程实验、课程设计、毕业设计实践教学三级体系,如图2所示。
一级目标和每个二级目标都是由三个阶段组成:知识串讲;案例实现;项目完成。整个实践教学体系围绕学生专业技能和职业素质的培养分层次、分阶段实施,为学生提供了一条从编程到软件项目开发的渐进式发展之路,形成一个融基础理论、实验教学、工程实践为一体的整体化培训机制,使学生各方面的能力都得到全面均衡的发展,适应现代软件产业的需求。
2.2校企合作,加强学生职业素质教育
建立校企合作的企业实训基地,实施“3+1”教学模式。即大学最后一年,让学生到软件企业顶岗实训。通过真实的生产实训、任务驱动、项目导向,加深学生对软件工程实际运用性的理解,全面强化学生的专业实践技能,培养其工程能力以及工程经验,了解企业文化,树立团队合作精神,缩短学生走上实际工作岗位时的适应期。
引 言
随着软件在各种领域迅速发展,软件的类型、规模、复杂度都急剧增长,在有限的时间和成本约束下开发出高质量的软件被人们高度关注,冈此提高各类信息化系统开发人员的软件工程能力越来越受到普通和军队高等院校的普遍重视。然而,由于软件从业人员所需知识更新快以及大量软件开发人员接受软件工程教育的经历不足,仅靠传统的高校课堂内授课方式,难以满足社会和军队信息化快速发展对软件工程人员的需求。研究如何通过建设软件工程专业在线课程加快软件工程人才的培养、优化软件工程课程资源的配置,对于我们国家和军队未来的发展具有重要价值与深远意义。
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 结语
中图分类号:G712 文献标志码:A 文章编号:1674-9324(2014)25-0189-02
《软件工程》是高职高专软件技术专业一门必修的专业课程,涉及计算机、数学和管理等多个学科领域的知识,是在软件开发实践中总结经验的理论课程。《软件工程》课程在软件技术专业课程体系中占有重要地位,它的作用是使学生了解软件产品的研发过程和开发规范,提高软件质量意识,掌握基本的开发方法、技术和工具等内容。但该课程具有较强的抽象性和实践性[1,2],学生很难参与到具体的工程实践,无法体验实践中的概念、原则、开发模型、开发方法和开发技术等内容,教师也很难把握住课程把抽象的知识转换成具体的实践,让学生在具体的实践中去体验知识。张振琳[3]等人对软件工程课程实践教学进行了探索,李金靖[4]对软件工程的格罗SSDL模型和建构主义两种教学方法进行了探讨,杨洋[5]等人对软件工程课程中的概念、教学方法、团队合作设计和实践教学等进行了探讨。笔者依据软件工程的多年教学经验,对软件工程中抽象的概念、开发模型和需求开发等教学内容进行了探讨。
一、概念的抽象和混淆
通常软件是由程序、数据和文档等构成的。从未学习过《软件工程》课程的学生往往认为程序即是软件,这种看法是严重错误的。如果不区分这种基本概念,学生会认为软件只需要编程而忽视需求分析、设计和测试等工作任务,而这些任务却是开发软件的重要任务,其比重远远高于编程。在教学中可以借助比喻、案例和启发式等多种教学法避免概念抽象和混淆。教师先用电饭煲产品作比喻,可把程序看成是电饭煲,程序具有“煮饭”等功能;把数据看成是电饭煲要加工的各种饭菜,数据是要程序处理的;把文档看成是电饭煲说明书和设计图等资料;把软件看成是电饭煲+饭菜+说明书等。通过比喻,学生初步认识了软件、程序、数据和文档的概念和彼此之间的关系。然后教师用学生熟悉的暴风影音等软件作为案例进行演示和分析,其程序是指暴风影音图标所对应的“.exe”文件,通过该程序可以打开播放界面实现各种功能,其数据包括影碟文件和在线影视数据等,这些数据被程序加工才显示出丰富的影视效果。由于用户会遇见播放等问题,暴风影音提供了在线帮助文档。通过这个案例学生能把软件概念和真实的软件建立起联系,深化了学生对概念的认识。最后学生根据自身体验分析一款熟悉的软件并指出软件中的程序、数据和文档文件。学生会依据之前对概念的认识主动思考“软件中的什么文件是程序?什么文件是数据?什么文件是文档?”等问题,学生互动带来了良好和轻松的学习气氛,之后教师再进行点评,包括对问题分析和学生表现等方面进行点评。经过上述教学,学生能较好分析游戏软件,能把存盘文件和存储用户名和密码的数据库归类为数据,能把游戏密技说明书和游戏教学视频文件归类为文档,能找出游戏对应的“.exe”程序文件。
二、细化软件开发模型
同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,这称为软件的生命周期。生命周期模型规定了生命周期划分成哪些阶段及各个阶段的执行顺利。典型的软件生命周期模型特点是模型数量多、知识抽象性和模型工作任务多等,这使学生很难区别各个模型的特点,很难激发学生的学习兴趣,很难让学生参与模型工作任务的实践,以及很难弄清彼此间的关系。把抽象知识适应性地转化为具体的和容易实践的任务能降低学生的学习难度。在教学中,可先让学生以团队的形式讨论分析软件工作任务的开始时间和工期等内容细化软件开发模型,再绘制出细化后的软件开发模型,最后比较和讨论分析各种软件开发模型,这能使学生更加深刻地认识软件开发模型。以增量模型教学为例,先让学生团队在课堂上召开会议,讨论软件立项和以头脑风暴法粗估计系统功能。讨论软件立项是让团队成员提出软件项目交给团队共同讨论,其目的是统一成员意见和激发学生的学习兴趣,它是后继工作的基础。要召开好会议要把握好会议时间和系统功能规模等几个要点,会议时间要短,以5~10分钟为宜,时间过短就会有成员没有机会参与讨论,时间过长会议效率将降低。团队成员都要熟悉已立项的软件系统,这样所有队员才能积极参与到会议中,这样的软件可以是寝室管理系统或教务管理系统等。系统功能规模以4~6个主要功能为宜,功能过少就不能很好地仿真真实的系统,很难激发学生兴趣,功能过多则很难在规定的时间内完成任务。然后再让学生团队讨论估算每个功能的开始工作日期以及需求分析、设计、编码和测试等任务的工期,功能的开始工作日期按业务紧急优先度安排,开始工作日期应安排在前序功能的编码或测试阶段,功能的工期取各个成员估计工期的平均值。这样做能避免学生感觉知识抽象,让学生感觉到事物较具体且容易实施。最后要求学生应用Excel软件制作表格填写系统各个功能的开始工作日期和需求分析等任务的工期,并依此生成甘特图。由于学生在计算机文化基础等课程中未绘制过甘特图,因此教师要演示操作如何绘制表格和生成甘特图。该教学法能让学生全程参与实践,从而强化了对增量模型的认识,学生能通过甘特图较直观地观察到工作任务间的关系以及功能之间的关系。通常学生都较好地完成工作任务,但存在工作任务开始工作日期安排不合理等问题。例如,某功能的开始工作日期安排在前序功能测试工作任务之后,教师可以组织学生讨论这样的安排是否会导致开发人员无事可干,让学生更加深刻认识模型。
三、面向用户的需求分析教学
软件需求分析是指对要解决的问题进行详细地分析,弄清楚问题的要求,确定系统必须要做什么。软件需求可分为三个不同层次的需求:业务需求、用户需求、功能需求。它们分别从组织、用户和开发人员角度描述了需求。当软件规模较小,软件开发关注的是代码而不是需求,而现代软件都较复杂且规模较大,需求分析在软件开发中越来越重要甚至直接关系到软件的成功与否。在实际教学中,学生通常不会区别需求的层次性,其直接关注的是功能需求,其更关注的是如何编码实现系统。但由于软件复杂和规模较大,不可能直接获取到软件功能需求,这导致学生认为用户需求是直接获取的。面谈、问卷、UML用例图和用户故事点等技术方法是用户需求获取的常用技术方法。这些技术方法的一个共同特点是需要用户参与到需求分析中,由于学生没有工作经历不能够把用户的业务需求描述出来,这加大了学习难度,所以用户角色不应该由学生扮演。相对而言,教师工作和生活阅历丰富,能较好认识和描述业务,用户角色可由授课教师或邀请相关教师扮演。扮演用户角色的教师其职责是学生交互描述需求和审核学生是否正确描述出用户需求等。学生团队的工作是设计面谈和问卷问题以及应用用户故事点等方法描述需求。学生设计的问题往往存在不够系统、题量偏少、需求相关性较低和未从用户角度描述需求而是描述系统操作等问题,教师在教学时应该要注意该类问题的发生和指明问题所在。这种教学法把传统的讲授法转成用户和开发人员的沟通交互教学,把需求案例讲解转成开发人员描述需求和用户对需求进行审核,其特点是仿真度较高、可操作性高和实践性强等。
文中探讨比喻等教学法在软件和程序概念中的教学应用,探讨在教学中融进软件功能以及功能的工作开始日期和工作任务工期,细化软件开发模型避免教学空洞,探讨软件需求层次及面向用户需求层次的教学方法。教学实践表明,这样的教学把抽象的知识具体化、形象化和层次化,强化了教学实践性,能够提升教学效果。
参考文献:
[1]李亚红.《软件工程》课程教学改革探讨[J].长江大学学报(自然版),2013,10(01):1,96-98.
[2]孟庆见.软件工程课程教学方法改革研究与实践[J].福建电脑,2013,(04):29,167.
[3]张振琳,张雪松,于慧艳.“软件工程”课程实践教学改革探索[J].中国电力教育,2012,(29):90,103.
[4]李金靖.对软件工程教学方法的探索[J].信息系统工程,2012,(04):153-154.
软件工程专业的培养目标是面向我国软件产业培养急需的工程应用型人才。软件产业的发展要求学生具备较强的系统分析、设计、开发与维护能力[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.
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)27-0137-02
一、引言
近年来,中国软件产业总体保持平稳较快发展,企业数量稳步增加,产业规模持续扩大,2012年中国软件产业共实现软件业务收入2.5万亿元,同比增长32.7%。“十二五”时期,我国软件业发展前景广阔。按照工信部的《软件和信息技术服务业“十二五”发展规划》,“十二五”期间,我国软件业将着重发展基础软件、工业软件及行业解决方案等重点领域,并实施包括龙头企业培育在内的十大重点工程。从2013到2015年,中国软件行业收入将年均增长25%以上。预计到2015年,我国软件业业务收入将达到4万亿元,占信息产业的比重将达到25%,软件出口额达到600亿美元。
随着东莞经济的高速发展和“双转型”的需要,对高素质应用型人才的需求变得尤为迫切。东莞市政府出台的《关于加快发展东莞市现代信息服务业的实施意见》支持发展信息服务业。东莞市现代信息服务业主要包括信息传输服务业、计算机服务业以及软件业三大类,将东莞打造为继深圳、广州后的又一个现代信息服务业基地。东莞的信息产业规划届时将以新显示、新能源、新一代宽带无线移动通信和软件产业“四新一软”发展战略为重点,力挺软件产业,同时大力开展人才培育工程,以产学研相结合的方式,支持各高校开展人才定制培训、综合培训、认证培训、专业课程培训等各项培训,大力培养适合企业发展需要的实用技术型和创新型人才。东莞市政府在《东莞市促进软件产业发展的若干规定》中明确指出:要大力培养符合软件产业要求和掌握规范性开发能力的大批软件技术开发人员。
二、软件工程专业发展概况
随着网络的普及和应用,信息技术不断深入社会生活的方方面面,软件的应用越来越广,软件产业不断扩大,社会需要大量的软件技术人才,系统、规范地培养软件工程人才已受到国内外高等学校、科研院所和企业界的普遍重视。由ACM和IEEE/CS联合工作组组织制定的软件工程知识体SWEBOK、计算教程软件工程卷CCSE2004于2004年5月正式。软件工程专业将根据广东和东莞人才市场需求,以软件领域人才需求调查结果为基本依据,以提高学生的综合职业能力为宗旨,培养具有从事应用软件系统分析、设计、开发、应用、管理与维护的能力,立足东莞、服务广东、面向全国的高素质应用型技术人才。
三、专业能力构成
1.软件工程专业能力。根据2006年教育部计算机课程教学指导委员会的《软件工程本科专业规范》能力结构要求,掌握软件工程的知识与技能,具备软件工程师从事工程实践所需的专业能力。主要分为:①获取知识能力:终身学习能力、信息获取能力、适应学科发展的能力等。②应用知识能力:需求分析和建模的能力、软件设计和实现的能力、软件评审与测试的能力、软件过程改进与项目管理的能力、设计人机交互界面的能力、使用软件开发工具的能力等。③创新能力:在基础研发、工程设计和实践等方面具有一定的创新意识和能力。
2.软件行业岗位能力。根据人才培养目标和用人单位对软件工程专业人才的能力需求以及软件开发生命周期各环节技术要求,我们将软件工程专业能力归纳为系统分析、软件设计、软件开发、数据库开发与管理、软件测试、软件技术支持与系统维护等六个方面。①系统分析与管理能力。精通计算机行业的前沿理论,精通代表主流开发思想的程序开发语言,精通建设信息系统所要求的各种具体技术,熟悉应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制定项目开发计划,协调信息系统开发与运行所涉及的各类人员,能指导制定企业的战略数据规划,组织开发信息系统,能评估和选用适宜的开发方法和工具,能按照标准规范写系统分析、设计文档,能对开发过程进行质量控制与进度控制,能具体指导项目开发。②软件设计能力。针对客户的需要和软件开发项目管理及软件工程的要求,根据设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档;具有理解需求分析与整体设计能力;模块级详细设计能力及数据库设计能力。③软件开发能力。根据软件产品的需求、理解和分析系统概要设计,进行模块级详细设计,按照规范编写代码,进行单元测试,修改缺陷,提交代码,编写整理技术文档。要求具有较强的逻辑思维能力,理解面向对象思想;掌握主流开发工具,精通一至两种程序语言,按照规范编写代码;具有数据库开发能力;掌握单元测试、集成测试的方法与技术;编写、整理技术文档的能力。④数据库开发与管理能力。根据需求进行数据库分析和设计,创建符合规范的数据库,满足系统运行的需要;完成数据库日常维护、备份及恢复,能对数据库性能进行优化。掌握数据库基本原理;熟练掌握一种以上大型数据库系统的应用;具有数据库设计与开发能力;具有数据库备份、恢复及日常维护的能力;具有对数据库性能优化的能力。⑤软件测试能力。根据需求分析和设计规范,对软件进行测试和检验,发现软件的错误或缺陷,对软件产品质量进行客观评价。掌握单元测试和集成测试、功能测试和性能测试的基本方法和步骤;熟悉软件开发过程,掌握软件测试流程和技术;具有编制测试大纲、计划、方案及设计测试用例的能力;熟悉使用常用测试工具;具有测试执行、缺陷跟踪的能力;具有测试管理能力;能够编写测试技术文档的能力。
四、课程体系设计