线上期刊服务咨询,发表咨询:400-808-1701 订阅咨询:400-808-1721

软件工程专业8篇

时间:2023-02-02 18:23:09

软件工程专业

软件工程专业篇1

【关键词】硬件课程 软件工程 课程改革

【中图分类号】G642 【文献标识码】A 【文章编号】1006-9682(2011)11-0011-01

一、引 言

计算机学院从2005年开始招生软件工程专业的学生,现在软件工程专业学生已达到我院学生总人数的70%以上。“培养学生成为基础扎实、知识面广、实践能力强、综合素质高、能适应信息产业和软件产业需求的系统设计和开发的高级人才”是我院一直以来对软件工程专业学生的根本要求。这里的“基础扎实、知识面广”包括软件和硬件两个方面。特别是现在的软件开发越来越偏向不同的硬件平台做专业开发。而作为系统开发的人员必须掌握一定的硬件知识。对于完全不懂硬件的软件工程学生来讲,就业前景和发展都会受到极大的制约。

但是,我院硬件课程相对较薄弱。具体存在以下问题:①课程的内容深、难且不实用。学生理解计算机硬件较困难,学到的知识停留于空洞的概念,没有得到技能的提高。②技术发展迅速,硬件课程教材和实验设施严重滞后。现在的硬件教学教材还停留在70年代8086/8088阶段。③实验困难。与软件实验不同,硬件实验需要一定规模的计算机设备,同时课程教学上也没有足够的课时进行实验。④培养目标与社会需求存在差距。计算机硬件教学已严重脱离了硬件技术的发展实际,学生学习计算机硬件的基本原理的基础知识,不会开发电子产品,不会做工程项目。⑤学生的兴趣和教学的内容严重脱节。现在学生对于计算机硬件的最新技术比较感兴趣,但是硬件课程讲授的是过时的知识,学生无法在课程中体会到硬件的好处,感觉硬件课程像“鸡肋”。

基于以上分析,对计算机科学学院软件工程专业硬件课程进行改革已迫在眉睫,要培养适应社会要求的软件人才,应该而且必须加强相关硬件课程的建设,这样才能培养出全面的人才。所以,经过两年的教学实践,对于软件工程的学生应该掌握哪些硬件知识、软件工程中的硬件课程如何设置等进行了一定的探索,下面就相关内容进行简单探讨:

二、硬件课程改革的措施

我校软件工程专业硬件系列课程设置了数字逻辑、计算机组成原理、汇编语言、微机接口技术4门课程。这些课程设置虽然相对独立,但所提供的课程内容划分不明确,相互重叠现象较严重。如基本原理和指令系统的内容,在多门课程中都有出现。

所以,硬件课程改革的目标是:将4门硬件课程整合、筛选,组合为1门综合型的硬件课程,达到内容精炼、重点突出、减少重复的要求。目的是将硬件系列课程作为一个整体统一考虑,建立一个完整的、系统的课程内容体系,这对提高教学质量和压缩学时都非常有效。

1.硬件课程教学模块的设置

具体设置以下模块:数字逻辑与数字系统(核心);数据的机器级表示(核心);汇编级机器组织(核心);存储系统组织与结构(核心);接口与通信(核心);功能组织(核心);多处理和其他系统结构(核心);性能提高技术(选修);网络与分布式系统结构(选修)。

2.硬件课程教学内容的设置

教学内容:①计算机概论:计算机概述、运算基础;②数字逻辑基础:卡诺图、组合电路、时序电路;③运算器:半加器、全加器、算术逻辑部件、定点运算器、浮点运算器;④汇编语言程序设计基础:指令系统、汇编语言语法、汇编语言程序设计基础;⑤存储器系统:存储器芯片、存储器层次结构、内存接口技术;⑥控制器:中央处理器的组成和功能、指令流程、硬连线逻辑、微程序控制器;⑦输入/输出技术:I/O接口与端口、输入/输出控制方式、三种简单接VI芯片、中断系统与中断接口、总线;⑧可编程接口芯片及其应用:可编程接口芯片的几个基本概念、可编程并行接口芯片、可编程定时器/计数器、通用同步/异步接收/发送器、模/数转换器、芯片组;⑨实用接口技术:主板、硬盘接口、高速串行总线;⑩计算机系统结构概述:计算机系统结构基本概念、流水线技术、并行计算机系统结构、提高处理器性能的技术。

实验环节:①数字逻辑(时);②汇编语言程序设计上机练习(时);③接口实验6~8个(18~24学时)。

3.课程实施中需要关注的问题

(1)注意学生共性和个性的关系。该课程体系规划是针对软件工程专业的基本要求编写的,反映了软件工程专业对计算机硬件的共性要求,不同学校的软件工程和计算机软件专业还可根据本校培养特点做不同的选择与增删,以适应本校培养的个性要求。

(2)处理好理论讲授和实验的关系。各校根据本校培养的方向和实际条件,组织不同要求的实验教学,可进行单个实验,也可组织小系统实验。

(3)注意基本内容稳定性和新技术、新知识反映的及时性的关系。课程的基本内容(即计算机的基本理论和基本技术)必须稳定,而随着计算机技术迅速发展不断出现的新器件和新部件必须在教学中及时反映,必须考虑如何处理两者关系。

三、结束语

我院软件工程专业计算机硬件技术基础课程改革已取得一定成果,在今后的课程建设中,还需要坚持重视理论基础知识、培养实践综合能力、提高整体教学质量的总方针,真正实现理论和实际相结合,强化能力培养和创新意识,逐步建成适合培养现代化复合型软件人才的计算机硬件技术课程新体系。

软件工程专业篇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).

[2]黄明,刘震,梁旭.“信息管理与信息系统+软件工程”双专业复合型人才培养模式的探索与实践[J].高等教育研究,2010,(2).

软件工程专业篇3

>> 软件工程的课程教学改革与研究 软件工程课程教学改革的研究 卓越软件工程师Java课程群教学改革研究 软件工程方向基于课程群的实践课教学改革 软件工程专业教学改革研究与探索 《软件工程》课程教学改革研究 软件工程课程教学改革研究 软件工程课程教学改革研究与实践 基于CDIO的软件工程专业教学改革 高职《软件工程》课程教学改革的探讨 关于《软件工程》课程教学改革的探究 《软件工程》课程教学改革的探索 《软件工程》课程的教学改革探索 “软件工程”课程教学改革的探讨 电大“软件工程”课程教学改革的探索 软件工程专业Java语言系列课程教学改革研究 软件工程专业面向对象程序设计教学改革研究 基于团队学习的软件工程专业课程教学改革探索 高职软件工程专业软件测试课程教学改革探讨 关于《软件工程》教学改革的研究 常见问题解答 当前所在位置: [EB/OL], May 2013.

[3] 李慧仙.论高校课程群建设[J].江苏高教, 2006(6):73-75.

[4] 张怡文,贺爱香,王美荣.基于软件课程群的合格课程建设——《C++程序设计》合格课程建设[J].电脑知识与技术, 2012(5): 46.

[5] 肖宿.软件工程课程教学方法初步探索[J].电脑知识与技术, 2012, 8(14).

[6] 李兆翠,乔京涛.软件工程课程教学方法研究[J].电脑知识与技术, 2011(2): 090.

软件工程专业篇4

近年来,中国软件产业总体保持平稳较快发展,企业数量稳步增加,产业规模持续扩大,2012年中国软件产业共实现软件业务收入2.5万亿元,同比增长32.7%。“十二五”时期,我国软件业发展前景广阔。按照工信部的《软件和信息技术服务业“十二五”发展规划》,“十二五”期间,我国软件业将着重发展基础软件、工业软件及行业解决方案等重点领域,并实施包括龙头企业培育在内的十大重点工程。从2013到2015年,中国软件行业收入将年均增长25%以上。预计到2015年,我国软件业业务收入将达到4万亿元,占信息产业的比重将达到25%,软件出口额达到600亿美元。

随着东莞经济的高速发展和“双转型”的需要,对高素质应用型人才的需求变得尤为迫切。东莞市政府出台的《关于加快发展东莞市现代信息服务业的实施意见》支持发展信息服务业。东莞市现代信息服务业主要包括信息传输服务业、计算机服务业以及软件业三大类,将东莞打造为继深圳、广州后的又一个现代信息服务业基地。东莞的信息产业规划届时将以新显示、新能源、新一代宽带无线移动通信和软件产业“四新一软”发展战略为重点,力挺软件产业,同时大力开展人才培育工程,以产学研相结合的方式,支持各高校开展人才定制培训、综合培训、认证培训、专业课程培训等各项培训,大力培养适合企业发展需要的实用技术型和创新型人才。东莞市政府在《东莞市促进软件产业发展的若干规定》中明确指出:要大力培养符合软件产业要求和掌握规范性开发能力的大批软件技术开发人员。

二、软件工程专业发展概况

随着网络的普及和应用,信息技术不断深入社会生活的方方面面,软件的应用越来越广,软件产业不断扩大,社会需要大量的软件技术人才,系统、规范地培养软件工程人才已受到国内外高等学校、科研院所和企业界的普遍重视。由ACM和IEEE/CS联合工作组组织制定的软件工程知识体SWEBOK、计算教程软件工程卷CCSE2004于2004年5月正式。软件工程专业将根据广东和东莞人才市场需求,以软件领域人才需求调查结果为基本依据,以提高学生的综合职业能力为宗旨,培养具有从事应用软件系统分析、设计、开发、应用、管理与维护的能力,立足东莞、服务广东、面向全国的高素质应用型技术人才。

三、专业能力构成

1.软件工程专业能力。根据2006年教育部计算机课程教学指导委员会的《软件工程本科专业规范》能力结构要求,掌握软件工程的知识与技能,具备软件工程师从事工程实践所需的专业能力。主要分为:①获取知识能力:终身学习能力、信息获取能力、适应学科发展的能力等。②应用知识能力:需求分析和建模的能力、软件设计和实现的能力、软件评审与测试的能力、软件过程改进与项目管理的能力、设计人机交互界面的能力、使用软件开发工具的能力等。③创新能力:在基础研发、工程设计和实践等方面具有一定的创新意识和能力。

2.软件行业岗位能力。根据人才培养目标和用人单位对软件工程专业人才的能力需求以及软件开发生命周期各环节技术要求,我们将软件工程专业能力归纳为系统分析、软件设计、软件开发、数据库开发与管理、软件测试、软件技术支持与系统维护等六个方面。①系统分析与管理能力。精通计算机行业的前沿理论,精通代表主流开发思想的程序开发语言,精通建设信息系统所要求的各种具体技术,熟悉应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制定项目开发计划,协调信息系统开发与运行所涉及的各类人员,能指导制定企业的战略数据规划,组织开发信息系统,能评估和选用适宜的开发方法和工具,能按照标准规范写系统分析、设计文档,能对开发过程进行质量控制与进度控制,能具体指导项目开发。②软件设计能力。针对客户的需要和软件开发项目管理及软件工程的要求,根据设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档;具有理解需求分析与整体设计能力;模块级详细设计能力及数据库设计能力。③软件开发能力。根据软件产品的需求、理解和分析系统概要设计,进行模块级详细设计,按照规范编写代码,进行单元测试,修改缺陷,提交代码,编写整理技术文档。要求具有较强的逻辑思维能力,理解面向对象思想;掌握主流开发工具,精通一至两种程序语言,按照规范编写代码;具有数据库开发能力;掌握单元测试、集成测试的方法与技术;编写、整理技术文档的能力。

④数据库开发与管理能力。根据需求进行数据库分析和设计,创建符合规范的数据库,满足系统运行的需要;完成数据库日常维护、备份及恢复,能对数据库性能进行优化。掌握数据库基本原理;熟练掌握一种以上大型数据库系统的应用;具有数据库设计与开发能力;具有数据库备份、恢复及日常维护的能力;具有对数据库性能优化的能力。⑤软件测试能力。根据需求分析和设计规范,对软件进行测试和检验,发现软件的错误或缺陷,对软件产品质量进行客观评价。掌握单元测试和集成测试、功能测试和性能测试的基本方法和步骤;熟悉软件开发过程,掌握软件测试流程和技术;具有编制测试大纲、计划、方案及设计测试用例的能力;熟悉使用常用测试工具;具有测试执行、缺陷跟踪的能力;具有测试管理能力;能够编写测试技术文档的能力。

四、课程体

系设计 在课程体系设置时,围绕软件工程专业六种能力的培养,我们如图1所示的课程体系,该课程体系由基础必修课、专业必修课、专业组选课(分方向开设)、专业任选课和专项实践课所组成。为了适应社会需求,我们根据软件工程专业所需要的知识结构和能力结构,经过我们对多家企业的招聘信息、学生就业跟踪、以及与多家企业进行了实地接触和深入访谈,比较全面地掌握了企业用人需求,目前Java和。NET技术为主流技术市场,因此我们在软件工程专业设置了“。NET技术方向”和“JAVA技术方向”,采用“双线分向”教学改革,学生可根据自身能力和职业规划,自主选择其中一个方向作为主修方向,另一个方向以专业选修的方式拓展,学生所学技能更加适应市场的需求。

软件工程专业篇5

关键词:新工科;软件工程专业;课程体系;能力培养

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

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

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

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

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

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

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

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

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

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

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

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

本专业以培养学生的工程实践能力和创新能力为核心,从加强课程设计、实习和科研创新等实践环节入手,在不同学习阶段/学期分层次开展各种形式的实践性教学活动。此类课程总学分为40学分,占总学分174的22.99%,在学分比例方面,达到了工科专业认证通用标准(≥20%)的要求。本文首先阐述新工科背景下软件工程专业发展,并剖析在该背景下软件工程课程体系建设存在的问题。针对上述发展背景和课程体系存在的问题,本文构建软件工程课程体系建立的制度和程序,修订过程采用动态评价修订方式,课程体系的架构要求以学生为中心,基于OBE理念,根据毕业要求反向设计。建立基于能力培养的软件工程课程体系,该课程体系从建立理论与实际结合的教学计划、建立课程体系对学生毕业要求的支撑、加强实践性教学环节三个方面实施,同时给出重点课程对本专业所需工程知识和工程能力的具体支撑,指出该课程体系下相关课程的设计能有效培养“新工科”人才的能力。

软件工程专业篇6

关键词:软件工程;课程体系;培养方案

软件工程教育兼属科学教育和工程教育范畴,软件工程的科学教育属性主要是引导学生对人类意识与智慧进行科学理解、增强运用软件本质特性(构造性与易演化性)和解决具体问题的能力;而软件工程的工程教育属性主要是引导学生综合应用计算机科学、数学、管理等科学原理,借鉴传统工程的原则、方法,提炼和固化知识,通过创建软件来达到提高质量、降低成本的目的。然而,McKinsey Global Institute2005年10月发表的一份报告称,我国2005年毕业的60多万工程技术人才中适合在国际化公司工作的不到10%,主要原因是中国教育系统偏于理论,学生在校期间几乎没有受到Project和团队工作的实际训练,这对我国高等院校工程教育改革与创新提出了挑战,也为软件工程专业建设指明了方向。

合理的课程体系是高等院校保证培养目标和形成办学特色的重要手段。目前,我国1900多所普通高校中虽有100多所院校开设了软件工程专业,但与当前软件工程技术发展差距较大。为了培养出既有理论知识又有应用技能的工程型实用软件人才,软件工程专业课程体系必须进行改革。对此,本文结合CC2005、SE2004、SWEBOK、国内软件工程专业课程设置现有的研究成果,探索软件工程专业本科教学课程体系建设问题。

1 软件工程专业课程体系设计策略

计算学科本科教学常用的课程体系设计策略主要划分为:课程启动策略、课程组织策略、特色课程设置策略。课程启动策略主要包括:1)围绕算法设计展开的算法优先策略;2)自底向上展开的硬件优先策略;3)从计算机导论展开的广度优先策略:4)强调编程能力的程序设计优先策略;5)强调系统使用命令优先策略;6)从面向对象展开的对象优先策略。

课程组织策略主要有:1)基于主题的组织模式,它把知识体系中的每个知识域组织成一门或几门课程;2)基于系统的组织模式,它把每类计算机软硬件系统设置成一门或几门课程;3)混合模式,在课程设计时不考虑区分前两种方法,兼而有之。特色课程设置策略主要依据本校办学特色和研究专长来确定。

由于软件工程教育兼属科学教育和工程教育范畴,其科学属性和工程属性决定了软件工程专业本科教学课程规划,一方面要强调工程性、技术性、实用性、系统性、综合性和复合型,另一方面要强化基础软硬件知识在解决复杂软件构造和应用方面起到的关键作用。对于课程启动策略而言,传统计算机科学专业的课程启动方式并不适合于本专业,但工程优先策略似乎也不适合于没有任何计算机基础的本科生;同样,在课程组织策略上,基于主题的组织模式更多地具有科学研究属性,而基于系统的组织模式又不利于基础知识强化;此外,特色课程设置时,有时会缺乏全面综合考虑,因人设课会造成特色课程系统性差问题。因此,在软件工程专业课程体系设计策略方面,应根据软件工程学科自身属性,综合考虑以上各种策略特点,全局思考,统一规划,避免课程系统性差、教学内容重复和遗漏并存等现象。

2 软件工程专业课程体系架构模型设计

根据软件工程专业本科教学的培养目标及规格要求,其课程体系采用“夯实基础教育、提高系统认知、强化软件开发、推进工程实训”为主线的设计思路,构建了“分层次、互动式、工程化”的课程体系架构模型(如图1所示)。该模型共分为四个层次,即基础知识教育层、系统认知教育层、工程设计开发层和工程实践训练层。各层次不是相互独立的,而是相互关联、相互影响、逐层递进的演进关系。该模型简化了计算机科学核心课程数量,突出基于主题的组织模式,沿着由浅入深、循序渐进的认知路径,力图实现“基础与编程一体化、编程与系统一体化、系统与工程一体化、工程与职业一体化”四位一体的工程型实用软件人才教学目标。

2.1 基础知识教育层

基础知识教育的设计思路,强化学生的基础知识和编程意识,实现“基础扎实和编程意识强”两个目标。基础知识教育层结构具体划分为:数学基础类课程模块、外语类课程模块、软件基础类课程模块、其他公共基础类课程模块。根据各模块自身特点,全面考虑各模块之间的关联性,做好彼此之间的衔接。在课程启动策略方面,主要采取基于基础的编程优先策略。在数学基础类课程模块中确定一门衔接较好的基础课作为软件基础类课程模块的启动,软件基础类课程模块率先启用软件设计基础课程,力图达到“基础与编程一体化”的教学目标。在课程组织策略方面,采取基于主题的组织模式,有利于学生掌握基础理论知识。

2.2 系统认知教育层

系统认知教育的设计思路:强化学生的编程能力和对软件系统的认识能力,实现“编程能力强和系统级认知”两个目标。根据软件工程专业对硬件系统和系统软件的知识要求,系统认知教育层结构划分为:数据库系统类课程模块、网络系统类课程模块、操作系统类课程模块和编译系统类课程模块。在课程启动策略方面,主要采取基于编程的系统优先策略。通过软件基础类课程模块的数据结构等课程和系统认知类课程模块的数据库原理及应用等课程,进一步强化学生的编程能力,并以程序设计为主线引导学生的系统级认识能力,实现“编程与系统一体化”的教学目标。在课程组织策略方面,采取基于系统的组织模式,简化计算机科学核心课程数量,提高学生学习的有效性和对知识的掌握程度。

2.3 工程设计开发层

工程设计开发的设计思路:以工程化方法为手段,依托项目培养学生的“工程”意识,锻炼学生对软件系统的设计与开发能力,进一步强化学生的系统级认识,实现“更完整的系统级认识和软件系统工程化设计开发技术”两个目标。根据软件工程项目开发流程,工程设计开发层结构划分为:软件过程类课程模块、软件设计类课程模块、软件架构类课程模块、软件测试类课程模块、人机交互类课程模块、特色项目类课程模块、可扩充类课程模块。该层综合考虑核心专业课程和特色项目课程设置,基于专业方向设置若干动态可扩充课程,全面考虑课程之间的关联,强调统一设计、统一规划。学生在这个层次必修一些工程设计开发系列课程,选修可扩充类课程,达到“系统与工程一体化”的教学目标。课程启动策略采取基于系统的工程优先策略。课程组织策略采取项目的组织模式,以此来提高学生的软件系统设计与开发能力。

2.4 工程实践训练层

工程实践训练总体设计思路:通过实验训练、专业实习、项目实训、毕业设计等教学环节,依托校内 外实习实训基地,采用校外实习实训、自主实习实训、校内实习实训和外聘软件工程师等形式,强化学生的工程能力,培养学生的职场素质,实现工程与职业一体化的教学目标。工程实践训练层结构具体划分为两大类,一类是实验与实习类课程模块,另一类是工程实训与毕业论文类课程模块。其中,实验与实习类课程模块的具体设计思路,通过基础实验、系统体验、编程能力训练三个环节,进一步夯实学生的基础知识,完善学生的系统级认识,强化学生的开发技能;而工程实训与毕业论文类课程模块的具体设计思路,通过“软件工程项目实训”这个载体,采取“企业+实训+论文+就业”捆绑的运作模式,与多家国内知名IT公司合作,让学生到企业进行实际项目综合训练,并完成毕业论文设计工作,实现理论与实践结合、技巧与职业素质结合的教学目标,同时也为学生就业提供一个良好平台。

上述四个教育层是彼此联系和互动发展的,在课程体系设计中充分考虑衔接性、系统性和创新性。交流、沟通、讲演、写作的培养更多体现在第二课堂科技学术活动中。

3 软件工程专业核心课程设置

3.1 课程设置原则

软件工程专业课程设置遵循六个基本原则,即先进性、灵活性、复合性、工程性、创新性和模块化。1)先进性:课程设置和课程内容需反映国际上先进的软件技术发展成果和软件企业对先进技术的需求,以及相关的基础理论。2)灵活性:课程设置需具有灵活性,应根据软件技术的发展及时调整。3)复合性:课程设置需包括技能、工程、管理等方面的教学内容,使学生具有必要的综合技能和基本素质。4)工程性:课程设置面向软件工程实践,强调工程实践能力培养,使学生能够自觉运用先进的工程化方法和技术从事软件开发和项目管理,具有团队协作精神。5)创新性:课程设置应倡导学生自主学习,并给予必要的指导,从而培养学生自主学习和自我提高能力,以及勇于开拓和善于创新能力。6)模块化:课程应按照模块化准则设计,课程模块设计可以交叉。根据软件技术最新发展、当前市场需求及专业培养方向、学生目前具备的领域知识等,灵活调整课程设置和课程内容。

3.2 核心课程模块设置

1)软件基础类课程模块设有:计算机硬件基础、软件设计基础、数据结构、计算机组织原理、面向对象程序设计、算法分析与设计等课程。2)操作系统类课程模块设有:操作系统原理、LINUX系统基础、嵌入式系统基础等课程。3)网络系统类课程模块设有:计算机网络、网络规划与集成、网络安全检测与防范技术、网络协议与网络软件等课程。4)数据库系统类课程模块设有:数据库原理及应用、ORACLE数据库、数据仓库与数据挖掘技术等课程。5)编译系统类课程模块设有:编译系统原理、编译技术等课程。6)软件过程类课程模块设有:软件工程、需求工程、软件项目管理、软件建模技术UML等课程。7)软件设计类课程模块设有:C++高级程序设计、J2EE与中间件、.NET架构技术、设计模式等课程。8)软件架构类课程模块设有:大型软件系统构造、软件体系结构等课程。9)软件测试类课程模块设有:软件测试技术、软件测试与评估等课程。10)人机交互类课程模块设有:人机交互技术等课程。11)特色项目类课程模块设有:软件工程项目案例解析、大型软件工程项目实训等课程。12)可扩充类课程模块设有:手机游戏开发、网络游戏开发、计算机图形学、嵌入式Linux网络及GUI应用开发、嵌入式Linux驱动开发、手持设备软件开发等课程。

4 软件工程专业培养方案制定与实施

软件工程专业培养方案制定是基于软件与工程的复合,将软件工程与领域应用相结合,强调计算机科学和数学基础的同时,将专业课程重点放在软件新技术和软件工程新技术方面,通过对实践类课程工程化改造,增设软件工程项目实训环节,开设部分技能课程,试图使学生的基础知识、专业技能、创新能力、工程能力和职业素质都能得到全面均衡发展。具体措施如下。

4.1 建立英语为主日语为辅的外语教学体系

根据IT市场的实际需求,软件工程专业培养方案制定,除正常开设四个学期大学英语外,增开两个学期标准目语和一个学期专业英语,坚持外语学习四年不断线,旨在为学生选择日企或对日外包企业就业提供方便。

4.2 建立工程化实践教学体系

建立“四年不断线、三个层次相呼应、两大措施为保障”的工程化实践教学体系。“四年不断线”是指实践环节四年不断线,每个学期至少有一个集中性的实践教学环节,体现“全过程”实践;“三个层次相呼应”主要是从实践教学内容设计上考虑的,包括第一层次教学实验,第二层次课程设计及专业实习,第三层次工程项目实训与毕业设计;“两大措施为保障”主要指教学计划保障和考核制度保障。

4.3 设置专门的实践课程

针对工程化软件人才应具备的个人开发能力、团队开发能力、系统研发能力和设备应用能力,以必修课和选修课形式,开设四类特色化、阶梯状工程实践学分课程,即程序设计类实践课程、软件工程类实践课程、项目管理类实践课程和网络平台类实践课程,构成了系统全面的学生实践能力训练体系。

4.4 提高专业课程教学中的实验课时量

除个别侧重理论教学的专业课程外,80%以上的专业课程包含实验或实习环节,实验或实习成绩占总成绩的30%以上,一部分实践性较强的课程是以上机考试和答辩作为最终考试方式。

4.5 开设部分技能课程

在技能课程中,与该领域内具有国际领先水平的企业在课件共享、教师培训和资源投入等方面展开合作,共同设计、讲授和评估课程。鼓励学生参与企业提供的专业认证考试,或参加国家相应的专业资格考试,对此,学院将计算机网络、Oracle数据库、J2EE与中间件等认证课程纳入本科教学计划中,全面体现学生的“多证多能”。

软件工程专业篇7

(国防科学技术大学 计算机学院,湖南 长沙410073)

摘 要:针对国家和军队信息化建设对软件工程人才的迫切需求,以及软件工程专业课程面临的知识与工具变化快、项目实践要求高、强调协同与合作等特征为目前在线课程模式和平台带来的挑战性问题,分析研究2014版软件工程知识体(SWEBOK)对在线课程建设的影响,分别针对大规模公开在线课程(MOOC)和小规模私有在线课程(SPOC)的建设提出一系列建设思路与方案。

http://

关键词 :软件工程;在线课程;软件工程知识体;MOOC;SPOC

第一作者简介:董威,男,教授,研究方向为可信软件工程技术、软件分析与验证,wdong@nudt.edu.cn。

0 引 言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

参考文献,使得每次开课时学生教材也可以尽快进行相应修订。

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

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

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

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

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

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

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

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

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

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

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

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

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

4 结 语

软件工程专业课程具有变化快、对实践要求高、需要团队协作等特征,这些使建设软件工程专业在线课程具有更高的难度。MOOC课程和SPOC课程都是未来软件工程专业在线课程所需的模式,尽管已经有一些相关实践,但是如何建立较为系统、各门课程完善、质量高的软件工程专业在线课程,还需要更多的研究与实践。目前对SWEBOK中知识子域对在线课程建设影响的分析还较为初步,下一步还需要更具体地针对所包含的知识点研究如何通过在线课程进行讲授。此外,软件工程专业在线课程应该与软件协同开发环境有机结合,这还需要我们进一步进行研究,针对知识点要求形成科学的集成平台体系框架并进行建设。

http://

参考文献:

[1] 齐治昌, 谭庆平, 宁洪. 软件工程[M]. 3版. 北京: 高等教育出版社, 2012: 10-11.

[2] IEEE Computer Society. Software engineering 2004[EB/OL]./sites.computer.org/ccse/.

[3] IEEE Computer Society. Swebok V3[EB/OL]./www.computer.org/web/swebok/v3.

[4] Graduate Software Engineering 2009(GSwE2009). Graduate software engineering 2009[EB/OL]./www.gswe2009.org.

[5] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范[M]. 北京: 高等教育出版社, 2006: 248-330.

[6] Brienza V. The 10 best jobs of 2012[EB/OL]./www.careercast.com/jobs-rated/10-best-jobs-2012.

[7] Fox A, Patterson D, Ilson R, et al. Software engineering curriculum technology transfer: lessons learned from MOOCs and SPOCs [EB/OL]./www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-17.html.

软件工程专业篇8

 

引 言

 

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

 

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 结语

 

软件工程专业课程具有变化快、对实践要求高、需要团队协作等特征,这些使建设软件工程专业在线课程具有更高的难度。MOOC课程和SPOC课程都是未来软件工程专业在线课程所需的模式,尽管已经有一些相关实践,但是如何建立较为系统、各门课程完善、质量高的软件工程专业在线课程,还需要更多的研究与实践。目前对SWEBOK中知识子域对在线课程建设影响的分析还较为初步,下一步还需要更具体地针对所包含的知识点研究如何通过在线课程进行讲授。此外,软件工程专业在线课程应该与软件协同开发环境有机结合,这还需要我们进一步进行研究,针对知识点要求形成科学的集成平台体系框架并进行建设。

推荐期刊