0 引 言.
软件工程专业的课程体系可以分为理论系列、系统系列、工具系列、工程系列、管理系列及其他课程共 6 个系列.课程体系的总体结构体现了课程之间的纵横关系,考虑到了授课内容的阶段性、连贯性和完整性.横向各系列课程之间交叉的内容较少,而纵向同一系列各课程之间可能出现较严重的交叉及重叠.课程内容适当的重叠与交叉有利于学生融会贯通所学知识,但不恰当的内容重叠与交叉,会使授课信息重复、浪费教学时间、无谓地占用学生的课余时间,得不到好的授课效果.某一专业课程内容的重叠与交叉既有主观因素,也有客观因素.因为专业是学科研究方向的基本单位,是根据学科分类和职业分工划分的[1],因此同一专业的各门课程之间总是相互联系的,这是课程重叠交叉的客观原因.但是如果将这种联系随意放大,而忽略了对该专业各门课程进行科学的规划,则可能造成授课内容不合理的重叠交叉,给教学带来麻烦.因此合理安排相关课程交叉重叠的内容,保留客观的、必要的课程交叉与重叠,避免无谓的、人为因素造成的交叉与重复是非常必要的.
软件工程导论、系统分析与设计、面向对象技术与 UML 是软件工程专业的 3 大核心课程,它们之间的重叠与交叉虽是不可避免的,但要想将这几门课程内容较好地传授给学生,避免不必要的时间及人力上的浪费,必须规划好它们之间的关系.
1 三门课程的交叉和重叠
IEEE SE2004及我国教育部软件工程学科课程体系研究课题组都给出了软件工程知识体系结构.图 1 是 IEEE 制定的 SE2004 软件工程知识体系,包含 10 大知识域.软件工程导论课几乎涵盖了整个知识体系,而系统分析与设计和面向对象技术与 UML 位于云框所标注的位置.
软件工程导论中要讲解“软件需求分析、软件设计”相关的内容,系统分析与设计同样要讲解“系统需求分析、软件系统设计”,而面向对象技术与 UML 这门课也要讲“需求分析及设计”,由此看出这 3 门课程存在客观上的交叉重叠.这种交叉和重叠是不可避免的,从某种角度来说,这3 门课程是“高层理论”到“低层理论”的映射.
目前软件工程 10 大知识域的教材均有多种版本,教材质量良莠不齐,编写没有统一规划.
有些编者为了充实教材内容,将许多相关内容也编入教材中,这样给教师选择教材及编写教案带来困难,经常会出现交叉重复现象.如果选择了不恰当的教材,或者没有依据所讲课程对教材中的内容进行合理取舍,就会造成主观上的重复,使得先讲的课程与后讲的课程出现不合理的交叉重叠,给后讲课的教师带来困难,也会造成后讲的课程学生不爱听,出勤率下降,浪费教师和学生的时间.这种主观上的重叠与交叉会严重影响教学质量,浪费课时,挤占学生课余时间,也不符合我们培养卓越工程师的宗旨.
2 三门课程的教学目的
软件工程导论是软件工程专业本科生的第一门涉及专业内容的基础(引导)课程.该课程概要论述软件工程中心思想,用较为概括的语言来论述这一学科基本的和整体的思想,从而使学生对该专业有较为整体和系统的把握.其目的使学生了解软件项目开发和维护的一般过程,理解软件工程的基本概念、规范,了解软件开发方法和工具以及软件工程各领域的基本内容和发展动向,为后续课程的学习及在后续的学习中开展“基于项目的学习”打下基础,为今后从事规范化软件开发工作作准备.
系统分析与设计课程教学目的是使学生能够利用各种软件开发方法、技术、工具进行软件开发,从而理解软件系统分析与设计的重要性,掌握系统分析与设计的各种方法、技术、描述工具和建模过程.使学生具有对软件开发项目进行完整的系统分析与设计能力,并能给出相应的分析与设计模型和实施方案.
面向对象技术与 UML 课程的目的是使学生掌握面向对象分析、设计方法,能够设计健壮的、可扩展的、可重用的、可维护的软件系统.
使学生学会面向对象的思维方法进行软件开发,进一步增强解决实际问题的实践能力,为后继课程的学习和解决工程问题、科学技术问题奠定基础.该门课程严格来说是一门语言类课程,它以统一建模语言 UML(Unified Modeling Language)为工具讲解面向对象技术.UML 是一种用于描述、构造软件系统以及商业建模的语言,综合了在大型、复杂系统的建模领域得到认可的优秀的软件工程方法.UML 是大多数公司采用的标准,是 ANSI 和 OMG 等部门采用的标准.
3 交叉和重叠的解决
课程之间客观上的交叉重叠,是某一专业知识体系的内在联系,如果将其强行去除,将会破坏这个体系的完整性,因此应该保留.但主观上的不必要的交叉和重叠则必须要解决,可以考虑从以下几个方面入手.
(1)课程体系的制定者要明确专业定位、人才培养目标及专业所涵盖的知识域.在制定课程体系时要充分考虑到课程之间的相互关系以及学生的认知结构和认识逻辑.目前 IEEE SE2004 及我国教育部软件工程学科课程体系研究课题组都给出了软件工程知识体系结构,课程体系的制定者可以作为参考,依据人才培养目标,对核心课程进行有效的裁减和调整.协调好各门课程的关系,分清先后,注重本质性的变化,形成自身的特色,把好教学内容的第一关.
(2)大纲制定者要认真研读课程体系及中心思想,领悟课程体系的设计思路,根据本科教学培养目标的要求,在宏观上把握重叠.教学大纲是理论教学和实践教学的基本指导文件,是落实培养计划的具体形式.授课教师依据授课大纲选编教材、制订授课计划、实施教学过程,是教学工作顺利进行的保证.相关课程大纲制定者要及时沟通,对相关课程教学内容进行全面系统的梳理,保证大纲正确反映本门课程在教学计划中的地位和作用,注意课程之间的衔接.在保持该门课程科学性、系统性、连贯性的前提下加强本门课程的基本理论、基本知识的教学,着重培养和提高学生的自学能力、独立思考能力及实际应用能力.大纲应能够阐述本门学科的规律,理论联系实际,并能及时进行教学内容的更新,做到科学性和系统性相结合,避免不必要的重复.
(3)授课教师要合理安排授课内容.大纲只能在宏观上把握课程的重叠及交叉,如果要在细节上避免课程内容的重叠及交叉还需授课教师的具体操作.授课内容不必要的重叠与交叉最容易发生在具体授课这一环节上.因此授课教师在教材选择及细节制定上要进行合理的取舍.在深入研究教学大纲,领悟其精髓之后,对相关教材进行调研,科学合理地选择所用教材.如果没有合适的教材,可以考虑组织专家和教师结合本专业的人材培养目标编写所用教材,使教材内容适合本专业培养人才需要.相关课程授课教师之间也要及时沟通,必要时所有教师可以坐在一起进行讨论,加强课程在细节内容上的融合,减少重复.对于大纲上重复交叉的内容,结合所授课程的重点,教师之间可以分工协作,从不同角度,不同侧重点讲授,使知识点能系统地传授给学生.通过合理地延伸概念的应用范围,有效地解决交叉重叠问题.
4 课程的具体安排
图 2 为哈尔滨工业大学软件学院软件工程专业 3 门课程的主要授课内容,从中可以看出 3 门课程间的交叉和重叠.这种交叉重叠是客观的,体现了同一专业课程间的内在联系,关键是如何从具体授课内容上避免重复.
图 3 为整合后的软件工程导论课程内容,该门课是将涉及内容很广的软件工程作概括性介绍.这门课程原来为 28 学时,整合后为 24 学时.其中软件需求分析及软件设计课程的内容与软件工程导论课程中的“软件过程”及“建模技术及开发工具”两部分有重叠.其中“软件过程”原为 6 学时,现整合后为 4 学时,不再包含软件需求具体分析方法的相关内容,而是概括性介绍需求分析及软件设计主要概念、方法,使学生建立起需求分析及软件设计的完整且清晰的概念,让学生有一点专业知识,不再非常深入地讨论需求分析及软件设计详细内容,主要是一般性的介绍,为后续课程打下基础.“建模技术及开发工具”原为 4 学时,整合后变为 2 学时,这部分内容作为软件工程导论的最后一部分,主要是概要性的介绍,使学生对软件工程有一个较完整认识.
图 4 为系统分析与设计课程的知识点,该门课程是在软件工程导论的基础上较深入地讲解系统分析与设计的相关知识,共计 28 学时.使学生掌握系统分析与设计方法、技术和工具,掌握软件的建模过程,具备软件系统的分析与设计能力.软件工程导论课程到系统分析与设计课程的过渡是一个由“面”到“线”的过程.系统分析与设计这门课程并不会完全集中讲解一种技术,而是涉及多种类型的分析与设计技术.考虑到后续的面向对象技术与 UML 课程,可以弱化这部分内容的讲解,而重点讲解面向对象技术与UML 课程不涉及的内容,以便为该门课程留出讲解空间,避免不合理的交叉重叠.
图 5 为整合后的面向对象技术与 UML 课程主要内容.原为28学时,现为24学时.其中“面向对象技术概述”和“需求与用例技术”各压缩了 2 学时.系统分析与设计课到面向对象技术与UML 课的过渡是一个由“线”到“点”的过程,因此可以在原有的系统分析与设计课程的基础上进一步深入.该门课程集中于系统分析与设计中的一个点,即使用 UML 采用面向对象技术进行系统分析与设计,包括面向对象分析(Object-Oriented Analysis,简称 OOA)、面向对象设计(Object-Oriented Design,简称 OOD)及面向对象编程(Object-Oriented Programming,简称 OOP)3 部分内容.面向对象分析主要讲解如何对问题进行抽象建模(包括使用实例建模、类和对象建模、组件建模和分布建模等),来产生一种描述系统功能和问题论域基本特征的综合文档.面向对象设计主要讲解如何将面向对象分析所创建的分析模型转变成作为软件构造蓝图的设计模型.
面向对象程序设计主要讲解如何使用类和对象以及面向对象特有的概念进行编程.上述内容的讲解要结合统一建模语言 UML,因此课程要重点讲解统一建模语言 UML 相关的语法符号.使用 UML 描述系统中的对象、对象的属性和操作、对象的动态特性、对象间的构造关系和通信关系等,从而建立系统的静态结构和动态活动模型,将系统分析、设计及编程的内容用 UML 体现出来.也可以将内容从深度和广度两个方面进行扩展,在深度方面讲解分布对象技术、构件技术、软件代理 (Agent) 技术和模式与框架技术.在广度方面,可适当加入一些面向对象技术与电子商务、面向对象与 XML 和面向对象与嵌入式系统等方面的内容.
通过以上课程内容的安排可以较好地解决课程之间的重叠交叉,有效利用授课学时,突出重点,将这 3 门核心课程内容系统全面地传授给学生.
5 结 语.
软件工程核心课程之间的交叉和重叠有其客观原因也有主观原因,客观上的交叉重叠体现了同一专业知识的内在联系,这种重叠是必要的.
我们不能盲目剥离这种交叉重叠内容,否则与整个学科知识衔接背道而驰.但是主观原因造成的交叉重叠,我们必须认真对待,否则就会浪费人力、物力、财力,收不到好的授课效果.整合后这 3 门课共计减少了 8 学时,减轻了教师的授课负担,也使学生有了更多的课余时间.目前新课程体系实施已经 2 年,通过对抽样数据及督导听课数据的分析,与整合前 2 年的数据相比,在出勤率方面除“软件工程导论”基本无变化外,另外两门课程的出勤率分别提高了 4.2% 和 6.5%.
通过对评教系统中数据的分析,学生对“课堂教学内容是否饱满”这一项的打分,整合前的总平均分为 9.2 分,整合后的总平均分为 9.6 分.
在十几年之前,高校还没有进行扩招,高校的学生数量还比较少,学生的素质也相对较高,学校的学习氛围比较浓厚,学校的计算机教学工作开展得比较顺利。随着高校的扩招,学生的数量越来越多,学生的综合素质比以前有所下降,学习氛围也不再像以前那样浓厚。...
随着科技的发展以及现代化教学手段的不断地完善,我国高校在计算机教学方面的力度不断地加强,力争为我国培养更多优秀人才。在计算机教学中,传统教学方法存在许多弊端,影响教学质量。本文基于计算机教学特点,分析了高校在此方面存在的一些问题,并针对这...
0引言随着科技的发展和进步,计算机课程已经成为高等院校学生的必修课程。鉴于在计算机教学中,电脑是不可缺少的教学工具,所以通常情况下是在多媒体教室利用互联网进行教学的,但计算机这门课程是一门多动手操作的学科,这使得操作能力很差的学生对课程的...
一、引言中职学校的职责是将学生培养成应用型的技术工人,而教学目标是学以致用。项目教学法这种教学方式提倡教师以及学生共同参与,教师起到导师或者引导者的作用,对情境进行设计并分析,让学生对有关知识进一步了解,并且设定任务,引导着学生顺利完成。...
当前在中等职业学校中,在计算机教学上并不是非常完美,就学生方面而言,学生的自主学习能力比较差,过多的依赖于老师和家长,在学习过程中自己无法独立自主的学习,这给计算机的学习带来了一道道的障碍。那么要想解决这个问题,就要从教师,学生,家长三个...
计算机专业目前已经在教育体系中发展了二十年,并且也培养出来了大量的人才,为社会和国家做出了非常大的贡献,但是现在,在计算机教学的时候还存在很多问题,老师本身的教学水平很难跟上时代发展的需要,并且由于教学比较枯燥,很多学生根本没有兴趣学习计...
随着社会文明进步和科学技术的迅猛发展,知识总量的激增和信息传播方式的变化,高等院校必须改变传统的教育方式和培养模式.工科院校作为培养工程师的摇篮,要求它所培养的学生不再是传统意义上的工程师毛坯,而应该是具备现代工程意识、熟悉工程背景与环境、掌握...
0引言.随着知识经济与科学技术的发展,高等学校以传承知识为主的传统教育模式正向强调知识、能力与素质培养的创新教育模式转变.大学生创新能力的培养作为高校创新教育的基本价值取向,成为当代高校的重要任务,创新能力的培养对现行的高校教学管理提出了新的...
软件工程的重要性已经逐渐被大多数软件开发企业所承认.成功的软件项目除了技术、工具等因素之外,更多的依赖于一个好的软件工程方法和过程.好的软件工程方法和过程,带来的是更低的风险、可控的管理和较低的开发成本.正是基于大家对软件工程重要性的清醒认识,...
软件开发能力是计算机相关专业学生从业的基本能力之一,其培养需要通过一系列理论学习和实践环节的锻炼逐步形成.如何加强理论和实践课程之间的联系,缩短学生软件开发能力培养的周期,是一个非常现实和重要的课题.本文在分析课程群内涵的基础上,提出一种以软件...