引言项目驱动教学思想起源于德国,是一种行为引导的教学方式, 即通过组织学生参加项目设计、实现和管理,在项目实施过程中完成教学任务.
①②软件工程作为计算机软件专业的一门核心课程,主要讲授保证大规模软件开发成功的方法和原理. 因此, 软件工程课程的教学案例项目应与其他课程(如程序设计语言等)所采用的示例有很大不同.在实施项目教学时,必须选择有实用价值且有较大复杂度的开发项目,否则难以实现教学目标. 但当选择复杂的开发项目作为教学案例时,如何将理论知识传授与学生工程实践有机结合,循序渐进地提高学生的软件工程理论水平和实践能力,是一个值得探讨的课题.
笔者将当前主流的软件开发思想---迭代进化式开发③,引入软件工程课程的教学过程,结合主流开发过程,采用从教师主导到教师指导再到学生独立完成的三阶段进化式的教学方式,收到了很好的效果.
一、软件工程教学现状分析.
当前,软件工程这门课程的教学主要采用传统的教学方式,即以老师课堂讲授为主,学生实验课上练习为辅的方式组织教学.教学内容组织及教学示例的设计等方面与学生的学习能力及该课程的内涵要求不太适应.
(一)理论与实践分离.
软件工程课程理论多、内容抽象,教学难度大.
当前,软件工程课程的教学内容组织方式多为“原理+示例”的形式,即前面若干章节介绍软件工程的概念、基本原理和方法等理论内容,最后介绍一个示例. 开发案例讲解往往一带而过,无法体现软件工程原理的实用价值,更无法达到训练学生软件工程能力的目标.这种理论与实践分离的教学模式使学生普遍感到该课程枯燥乏味, 难以理解和应用,因此教学效果较差.
(二)教学案例与实际生产过程脱节.
当前的软件工程教学中,虽然也引入了一些案例,但这些教学案例往往是孤立的为阐述某一概念和原理而设计的,没有向学生展示完整的软件生产过程,导致学生无法真正体会到软件生产的实际情境.
二、进化式教学的基本思想.
(一)思想来源.
迭代开发是 RUP①②和大多数现代方法中的关键实践. 在这种方法中,开发过程被组织成一系列短期小项目,称为迭代;每次迭代都具有各自的需求分析、设计、实现和测试活动,产生可执行的局部系统. 每次迭代都是对系统的持续扩展和精化,随着时间和一次又一次迭代的递进,系统增量式地发展完善,最终成为适当的系统.
这种迭代进化式地完成任务的思路对改进软件工程的教学有很好的指导意义. 首先,它符合学生的学习规律.人们对知识的掌握并不是一步到位的,往往有一个从认知到掌握到熟练应用的逐步深化的过程. 我们可以按此规律来组织教学内容,制定学生能力培养目标. 其次,这种进化式的软件开发思想使得我们可以将大规模的有实际意义的软件开发项目作为教学案例和学生练习项目引入教学中.软件工程的课程特点决定了以简化的小项目作为教学案例或学生实习项目不能很好地说明软件工程原理,训练学生应用软件工程的能力. 教学项目必须有一定的复杂度才能显示软件工程这门课程内容对软件开发活动的指导意义.传统的教学方式下,教学项目复杂度的增加使得教学内容难以组织和实施, 也不符合学生的学习习惯和认识规律.以迭代进化的方式组织教学案例可以很好地解决这个矛盾.
迭代和进化式开发是当前大规模软件开发普遍采用的方式.软件工程的核心思想之一是通过软件开发过程的管理来保证软件开发的成功,因此教学过程应符合主流的软件开发过程,必须遵循某一软件开发过程来组织教学案例,并将基本原理的传授溶入其中.
(二)软件工程进化式教学过程的构建.
该教学方法将教学过程与案例的迭代式开发过程协同起来, 以迭代进化的方式组织教学内容,设置学生的能力增长目标.整个教学过程的完成分三次迭代来实现:即基本原理与方法的传授、教师指导下的学生实践和学生自主学习、独立完成案例项目.每一次进化又可细分为初始、精化、构建和交付四个子阶段③,整个教学过程的组织见图 1.
第一次进化:案例教学.
本课程教学的第一阶段主要结合具体案例进行软件工程基本理论和方法的讲解.本轮教学初始阶段首先介绍软件工程的基本概念、软件生命周期模型及软件开发过程等,在此基础上探讨软件需求分析,引入用例技术,在所使用的案例中挑选一到两个用例进行详细描述,以此描述作为后继教学的需求分析文档.
本轮教学的精化阶段的主要内容是软件的分析和设计技术,包括概要设计、详细设计、UML 建模技术等.本轮教学的难点是面向对象的分析和设计方法,这部分内容比较抽象,因此教学时要紧密结合教学案例,向学生展示从用例文档得到软件模型的详细过程.
构建阶段主要讲解软件的实现技术,包括软件编码、单元测试、数据库设计等.
交付阶段主要讲解软件的综合测试技术,包括测试计划的制定、测试环境的搭建、测试的策略选择、测试用例的设计、测试工具的选择和使用、测试报告的书写等.
通过本轮教学,学生基本掌握了软件工程的基本理论,具备了初步的应用软件工程原理解决实际问题的能力,为下一轮教学打下了基础.
第二次进化:教师指导学生对案例项目进行第二轮迭代开发.
本轮教学的目的是加深学生对软件工程原理的理解和应用能力. 教学的主体由教师转移到学生,所采用的教学方式是教师指导学生完成本次迭代开发任务. 将学生分为若干个小组,每个小组成员为四到五人.教学过程仍然分为初始、精化、构建和交付,教师规定每个阶段的完成时间点,各阶段完成时,每个小组提交本阶段的成果,由教师统一讲评.
本阶段教学中,教师结合项目进展,补充软件项目管理、配置管理、设计模式等知识,以扩展学生视野,加深学生对现代软件技术的理解.
第三次进化:学生独立完成案例项目的第三轮迭代开发.
通过前二轮的教学,学生在掌握了软件工程基本原理的基础上,具备了应用软件工程原理和方法进行软件开发的能力. 因此,本轮教学的目标是实现对案例项目的第三次迭代开发,成果为提交一个完整的具有实用价值的项目.本轮教学任务由各小组自行完成,教师主要起到督促检查的作用. 将学生最后提交的系统质量作为评定学生本门期终成绩的主要依据.
三、教学过程实施示例.
我们在实施该教学方法时,选取图书管理系统作为开发案例. 第一轮教学所用时间为 9 周左右,在初始阶段引导学生识别出该系统的主要用例,见表 1.
选择核心用例借阅图书和归还图书作为本轮教学要实现的示例,进行详细描述,为学生演示用例的编写方法. 从这两个用例文本出发,讲解如何进行系统分析和设计. UML 已成为面向对象设计的有效工具,因此本部分教学中要加入 UML 的内容. 结合两个用例,详细讲解如何创建系统的领域模型. 得出领域模型后,如何创建系统的动态模型,进而得到系统的类模型. 得出类模型后,使用编程语言进行系统实现,创建数据库,最后进行部署和测试. 此轮教学中结合借阅图书和归还图书两个功能的从分析到实现的全过程,进行原理和方法的讲解,教学路线如图 2.
图 2 教学路线图第二轮教学以学生练习为主, 教师引导为辅,所需时间为 4 周. 教学过程可概括为“所用知识提示+学生练习+集中点评”. 在图书管理系统中,第一轮迭代完成了系统的基本功能. 本次迭代中,学生要从余下的用例中选择若干个用例进行详细定义、设计和实现,以对系统进行扩展.本次迭代的每个子阶段开始前,教师对本阶段所要用到的知识进行简要的回顾,布置本子阶段要完成的目标;然后各小组在规定的时间内完成本阶段的开发任务;各小组提交工作成果后,由教师进行集中点评,以使各小组之间能互相比较,共同提高.
第三轮教学需时 3 周左右,各小组将作为独立的开发团队进行开发工作.他们需要完成图书管理系统主学习的过程,培养动手能力和解决实际问题的能力.
四、总结.
基于案例的进化式教学方法将抽象的软件工程原理与具体案例相结合,降低了学习难度,提高了学生的学习兴趣. 借鉴 RUP 的迭代式软件开发思想,将具有实际应用价值的复杂的软件案例引入教学中,克服了软件工程教学中示例与实际项目脱节, 学生无法体验到实际的软件开发过程的缺憾.
通过“教中学”、“练中学”、“做中学”三阶段进化式学习,使学生学习的知识不停留在纸面上,而具备应用这些知识解决实际问题的能力.
0引言.软件工程专业的课程体系可以分为理论系列、系统系列、工具系列、工程系列、管理系列及其他课程共6个系列.课程体系的总体结构体现了课程之间的纵横关系,考虑到了授课内容的阶段性、连贯性和完整性.横向各系列课程之间交叉的内容较少,而纵向同一系...
在十几年之前,高校还没有进行扩招,高校的学生数量还比较少,学生的素质也相对较高,学校的学习氛围比较浓厚,学校的计算机教学工作开展得比较顺利。随着高校的扩招,学生的数量越来越多,学生的综合素质比以前有所下降,学习氛围也不再像以前那样浓厚。...
随着科技的发展以及现代化教学手段的不断地完善,我国高校在计算机教学方面的力度不断地加强,力争为我国培养更多优秀人才。在计算机教学中,传统教学方法存在许多弊端,影响教学质量。本文基于计算机教学特点,分析了高校在此方面存在的一些问题,并针对这...
0引言随着科技的发展和进步,计算机课程已经成为高等院校学生的必修课程。鉴于在计算机教学中,电脑是不可缺少的教学工具,所以通常情况下是在多媒体教室利用互联网进行教学的,但计算机这门课程是一门多动手操作的学科,这使得操作能力很差的学生对课程的...
一、引言中职学校的职责是将学生培养成应用型的技术工人,而教学目标是学以致用。项目教学法这种教学方式提倡教师以及学生共同参与,教师起到导师或者引导者的作用,对情境进行设计并分析,让学生对有关知识进一步了解,并且设定任务,引导着学生顺利完成。...
当前在中等职业学校中,在计算机教学上并不是非常完美,就学生方面而言,学生的自主学习能力比较差,过多的依赖于老师和家长,在学习过程中自己无法独立自主的学习,这给计算机的学习带来了一道道的障碍。那么要想解决这个问题,就要从教师,学生,家长三个...
计算机专业目前已经在教育体系中发展了二十年,并且也培养出来了大量的人才,为社会和国家做出了非常大的贡献,但是现在,在计算机教学的时候还存在很多问题,老师本身的教学水平很难跟上时代发展的需要,并且由于教学比较枯燥,很多学生根本没有兴趣学习计...
随着社会文明进步和科学技术的迅猛发展,知识总量的激增和信息传播方式的变化,高等院校必须改变传统的教育方式和培养模式.工科院校作为培养工程师的摇篮,要求它所培养的学生不再是传统意义上的工程师毛坯,而应该是具备现代工程意识、熟悉工程背景与环境、掌握...
0引言.随着知识经济与科学技术的发展,高等学校以传承知识为主的传统教育模式正向强调知识、能力与素质培养的创新教育模式转变.大学生创新能力的培养作为高校创新教育的基本价值取向,成为当代高校的重要任务,创新能力的培养对现行的高校教学管理提出了新的...
软件工程的重要性已经逐渐被大多数软件开发企业所承认.成功的软件项目除了技术、工具等因素之外,更多的依赖于一个好的软件工程方法和过程.好的软件工程方法和过程,带来的是更低的风险、可控的管理和较低的开发成本.正是基于大家对软件工程重要性的清醒认识,...