目录
一、 软件工程学科及其知识体系
二、 软件工程硕士的能力结构
三、 软件工程硕士的课程体系
四、 软件工程硕士实践环节
五、 结束语
参考文献
摘要
关键词
软件工程是一门交叉性的工程学科,它将计算机科学、数学、工程学和管理学等基本原理应用于软件的开发与维护中,研究重点是大型软件系统的分析与评价、规格说明、设计和演化,同时也涉及管理、质量、创新、标准、个人技能、团队协作和专业实践等方面的内容。本文在充分理解全国工程硕士专业学位教育指导委员会[2007]8号文件《关于工程领域工程硕士专业学位标准制订指南》[1]精神基础上,分析软件工程学科的知识体系、软件工程硕士培养的知识与能力需求,提出教学与实践体系构造思路,为软件工程领域工程硕士专业学位标准的制定提供参考。
一、 软件工程学科及其知识体系
软件工程学科的思想首先出现于IEEE_CS/ACM联合研究推出的CC2001(Computing Curriculum 2001)。CC2001是在CC1991的基础上发展而来的。CC1991提出用知识领域、知识单元、知识点构成知识体系,替代传统的课程作为专业教育的基本要求。CC2001继承了这种科学描述,并关注于大学科———计算学科的整体发展。此后的CC2005进一步将计算学科分成计算机科学、计算机工程、软件工程、信息系统与信息技术等五个相对独立又彼此关联的部分,比较清晰地确定了软件工程的学科边界[2]。随着软件产业的发展及软件学科资源的不断完备,软件工程逐渐成为相对独立的学科,具备了相对完整的知识体系。
20世纪90年代初,美国IEEE的计算机协会和ACM组成协调委员会,为软件工程职业化制定相应的准则和规范,作为产业决策、职业认证、课程教育的依据。SWEBOK是这个项目的子项目,旨在明确大学毕业四年后应达到的软件工程教育水平。它规范化了软件工程硕士培养的知识体系,包括10个知识领域[3],如表1所示。
以上10个知识领域对应软件工程学科10个范畴,是软件工程知识体系的分类表示。每个知识领域都包括诸多知识点,知识点代表了知识领域中相对独立的主题模块。它们是软件工程核心课程体系的构建基础。本文在第三部分会进一步说明软件工程核心课程对表1所列知识点的覆盖情况。
二、 软件工程硕士的能力结构
软件工程硕士的培养目标是面向产业需求,培养学生具有坚实的基础理论、宽广的专业知识,具有创新意识,具有运用先进技术方法和现代技术手段解决工程问题的能力,具有独立从事软件研发以及担负工程项目的组织与管理的能力。软件工程的强实践性使得其对研究生能力的要求更加强烈。与软件工程知识体系相适应,与信息化社会需求相符合,软件工程硕士应该加强七种能力的训练:
1.基础开发技能
软件工程硕士应该具有扎实的软件工程及相关专业基础理论,熟练掌握软件工程知识和技能,并且具备作为软件工程师从事工程实践所需的专业能力。
2.团队合作能力
软件工程硕士既要能够独立从事软件项目开发,又要能够在团队中与项目组成员协同工作。在团队工作中,学生要具有团队合作精神,严格开发纪律,坚守约定期限,保证按期交付合格制品。
3.文档撰写能力
软件工程强调以文档作为开发者、管理者、用户沟通的渠道和开发过程记录载体。要求软件工程硕士掌握文档撰写规范、内容组织方法、文档评审要点,以及如何运用配置管理手段对文档实施全过程全方位管理。
4.工程管理能力
软件工程硕士要了解工程项目的特点,协调相互冲突的项目目标,能够进行风险预测和控制,在有限开销、时间、知识、已有系统和组织之间找到一个可接受的折衷方案,运用工程化的方法和技术,实施软件工程项目开发和维护。
5.系统建模能力
能够理解并能运用软件工程理论、方法和技术进行问题识别和分析、设计、构造、测试,掌握应用于各阶段的模型表示和语义。熟悉常用的建模工具,了解模型验证的基本原理。
6.沟通表达能力
软件工程硕士应该具备较强的沟通能力,掌握有效的沟通技巧,能够与客户、用户、开发与管理人员建立通畅的沟通渠道,能够及时掌握对方的意图和想法,并能清楚地表达自己的理解和方案思路。
7.适应发展能力
能够认识到专业知识持续发展的必要性,当新的模型、技术和工艺出现的时候,积极主动地学习适用不断发展的需要。
以上七种能力的训练,可使软件工程硕士能够应用软件工程及相关专业知识,高质量地综合解决复杂系统的工程相关问题。
三、 软件工程硕士的课程体系
软件工程学科已经发展为计算学科的分支学科,并与计算学科的另外四个子学科,计算机科学计算机工程、信息系统与信息技术,密切相关[4]。顺应这种发展趋势,我们将软件工程硕士课程体系描述为图1所示三层结构,其中,最下面两层是基础比较稳定,最上面一层可根据培养面向动态调整。
图1中,计算机基础是计算机学科核心知识点区别于计算机专业课程,这部分内容需要侧重于知识的应用,如数据库原理课程,计算机系讲授的重点是如何设计一个数据库,而这里讲授的重点是如何应用数据库产品有效组织大型应用系统的数据资源。
为更好地组织讲课过程,并配合能力训练环节,我们将软件工程基础知识分配到三门课程中,分别是软件开发方法、软件工程管理和软件开发过程。这三门课覆盖了软件工程基础所有知识点。表2列出了它们对表1所列知识点的覆盖情况。
软件工程课程体系结构最上面一层的设置力图与软件工程硕士的职业规划相联系。总体上可以分成三类,一类是软件工程提高类。这类课程指导学生深入研究软件工程问题,强化软件工程专业训练,为未来成为系统架构师、系统测试工程师、软件工程项目监理等专业化人才做准备。第二类课程是相关学科交叉类,如嵌入式系统方向属于软件工程与电子通信工程等学科交叉领域。学生在掌握了软件工程核心知识之后,通过学习嵌入式操作系统、DSP开发技术、通信技术与应用等课程,扩展专业面向,成为复合型人才。第三类是特定领域应用类,关注软件工程在特定技术领域的应用,如网络信息安全专业方向针对网络环境下的信息安全应用技术,通过讲授密码技术与网络安全基础、网络安全协议、网络安全防护技术等内容,着重培养学生利用现有网络安全算法、协议和技术,解决工程和应用中的实际问题的能力。
四、 软件工程硕士实践环节
按照知识与能力需求,配合课程教学,我们将软件工程硕士实践环节分为两部分:软件工程一级实践、软件工程二级实践。软件工程一级实践旨在训练学生的软件开发基本技能,以建立高质量程序设计的理念。根据水平测试成绩把学生分成多个10~15人的学习讨论小组,以Windows和Linux为开发平台,通过大量的实例强化训练和有针对性的讨论辅导,使学生在熟练掌握程序设计技能的同时,深入理解计算机基础有关的操作系统、编译技术、网络技术、数据库基础知识。该环节着重训练学生的基本开发技能和沟通表达能力,为进一步从事软件开发打下良好基础。
软件工程二级实践要求学生组成4~6人的开发小组,按照软件开发过程管理规范,以团队形式开发完成具有一定规模的应用性项目,旨在提高学生的软件开发与管理能力,特别是团队合作能力、文档撰写能力、系统建模能力和沟通能力。该环节建立典型案例库,开发小组成员分担项目经理(负责整个项目实施与过程跟踪)、架构师(负责系统分析与架构设计)、工程师(负责详细设计和开发)、质保人员(负责测试和阶段评审等质量管理),以及发布管理人员(负责实践资源申请、配置管理,以及发布系统)角色。二级实践过程实施严格的阶段管理,学生需要提供阶段文档,包括项目开发计划、需求说明、设计说明、测试计划、测试分析报告、用户手册,以及会议记录和个人总结。
除以上两个独立实践环节外,主要专业课程都配以项目作业,以提高学生的专业知识应用能力。最后阶段的学位论文是最为重要的实践环节。论文题目要求来源于企事业单位,具有明确的应用背景和实用价值,同时应具有先进性、一定的技术难度和工作量,能体现作者综合运用本专业基础理论和专业知识解决工程实际问题的能力、从事软件项目开发和管理的能力,以及适应发展的能力。论文主要分为工程项目技术报告类和研究类两种形式。
五、 结束语
以上阐述了软件工程知识体系的构成,总结了软件工程硕士应具备的能力结构,分析了软件工程硕士的课程体系架构和思路,说明了工程实践环节对能力结构的支持。论文核心思想在北京航空航天大学软件学院得到了良好的验证。如果将其扩展为软件工程领域学位标准尚需进一步考虑培养质量评价体系。美国工程教育专业认证机构ABET于1995年公布了工程标准EC2000[5]。EC2000指出,工程专业认证的重点应从教育输入(教什么)转向教育产出(学到什么),强调发展学生的职业技能,如解决问题能力、有效交流能力、团队合作能力。EC2000认证标准已经对全球工程教育计划产生了积极甚至是巨大的影响,也必将对软件人才培养模式的改革产生积极作用。相信借鉴国内外工程教育研究成果,总结软件学院办学经验教训,综合考虑软件行业对软件人才质量评估的反馈,软件工程领域工程硕士学位标准将会集科学性、指导性和可操作性于一身,对软件工程硕士培养质量的提高产生重要作用。
参考文献
[1]全国工程硕士专业学位教育指导委员会.关于工程领域工程硕士专业学位标准制订指南[R].北京,2007.
[2]IEEE-CS/ACM Joint Task Force for Computing Curricula2005.Computing curricula the overview report[R].http://sites.computer.org.
[3]Alain Abran,etc.Guide to the software engineering body ofknowledge[EB/OL].http://www.swebok.org.
[4]教育部软件工程学科课程体系研究课题组.中国软件工程学科教程CCSE 2004[M].北京:清华大学出版社,2005.
[5]王昕红.美国工程与技术教育认证的新进展[J].高等学校理工科教学指导委员会通讯,2008(6):26-30.
摘要:分析了软件工程知识体系及其知识单元,在此基础上,指出软件工程硕士应该加强基础开发技能、团队合作能力、文档撰写能力、系统建模能力、沟通表达能力和适应发展能力的训练。以软件工程知识体系代写工程硕士论文为核心,论文提出了包括计算机基础、软件工程基础,软件工程提高类、相关学科交叉类和特定技术应用类课程群的三层课程体系架构及相应的实践环节安排。
关键词:软件工程;专业学位;知识体系;工程实践;学科