论文部分内容阅读
摘要:针对“软件工程”教学中出现的问题,提出了基于任务驱动和项目驱动相结合的教学模式。它以学生为主体,以任务驱动和项目驱动相结合进行教学,并建立反思性评价机制。实践证明该模式在“软件工程”教学中取得了良好的效果。
关键词:软件工程;任务驱动;项目驱动
作者简介:郑豪(1976-),男,江苏南京人,南京晓庄学院数学与信息技术学院,讲师。(江苏 南京 210017)
基金项目:本文系南京晓庄学院教改基金项目(项目编号:4083430)的研究成果。
中图分类号:G642.3 文献标志码:A 文章编号:1007-0079(2011)04-0101-02
一、任务驱动教学法、项目驱动教学法简介
“软件工程”作为一门抽象性和实践性都比较强的计算机专业课程,常规的教学方法和实践模式使学生无法真正理解与掌握其精髓,更难做到学以致用。Evelyn等在其著作Project-Based Software Engineering: An Object-Oriented Approach中指出,传统的教学不能有效培养学生的软件开发技能,学生应该具有项目开发的经历。为了改进这种以“教”为中心的教学模式,国内外一些学者先后提出了基于任务驱动的“软件工程”教学模式和基于项目驱动的“软件工程”教学模式。这两种方法都是以学生为中心的教学模式,教师在整个教学过程中起组织者、指导者、帮助者和促进者的作用。下面简单地介绍一下两种教学法。
任务驱动教学法是一种建立在建构主义教学理论基础上的教学法。它的基本特征是“以任务为主线、教师为主导、学生为主体”。任务驱动教学法符合探究式教学模式,强调学生的学习活动必须与任务或问题相结合,学生在信息处理任务的驱动下展开学习活动,以探索问题来引导和维持学生的学习兴趣和动机。教师引导学生由简到繁、由易到难,循序渐进地完成一系列任务,在完成任务的过程中,培养分析问题、解决问题以及用计算机处理信息的能力。在这个过程中,学生带着真实的任务学习,拥有学习的主动权,会不断地获得成就感,可以更好地激发他们的求知欲望,从而培养独立探索和创新的能力。[1]
项目驱动教学法来源于建构主义学习理论,与其相适应的项目驱动教学模式为:以学生为中心,教师在整个教学过程中起组织和指导作用,利用情境、协作、会话等学习环境要素充分发挥学生的主动性、积极性和创新精神,最终达到使学生有效实现对当前所学知识的意义建构的目的。[2]项目的主题与真实世界密切联系,以成果为驱动力。既可在本专业也可跨专业选取实施综合性项目,具有学科交叉性和综合能力运用的特点。学生根据自己的兴趣选择内容和形式的决策机会,使学生能够自主、自由地进行学习,从而有效地促进学生创造能力的发展。项目内容中含有学生从未遇到的问题,但通过分析和努力又可以得到解决,项目的设计明显要比任务难得多。[3]
二、基于任务驱动和项目驱动相结合的教学模式
目前,大部分学校都采用单一的任务驱动教学法或项目驱动教学法。采用单一的任务驱动教学法,虽然能够使学生在任务中学习新的软件工程知识,但是对于学生系统地綜合理解和应用软件工程知识还是欠缺的。[4]同样,采用单一的项目驱动教学法,由于基础欠缺,完全由学生独立设计与实施显然是不合适的。所以我们提出将两者结合的教学模式,使两种教学法相互补充,取长补短。该教学模式分为三个阶段:第一阶段先使用任务驱动法使学生得到新知识和新技能的储存,第二阶段实施项目驱动教学法,第三阶段是基于反思性评价机制的成绩评定。
1.任务驱动法
第一阶段分成四个时期。第一时期是任务提出期,第二时期是任务分析期,第三时期是任务完成期,第四时期是任务总结期。
在教学过程中,第一时期是布置任务,要求教师先要对任务进行细化,在“软件工程”学习总任务的框架下,把总任务细分成一个个的子任务,通过这些小的子任务来体现总的学习任务。教师先向学生布置“软件工程”课程的学习子任务,要求学生带着要完成的子任务去学习,以探索问题来引起学生学习的兴趣和动机。第二时期是分析任务,提出任务之后,要让学生讨论、分析任务,提出完成任务需要做哪些事情,即提出问题。对于已经学习过的问题,学生自己能够运用已有的软件工程知识进行解决,对于任务中存在的新问题,学生通过第三时期解决相应的问题。第三时期是让学生通过实践活动,找出完成任务的方法。学生可以采用自主探索或互助协作开展探究活动,围绕主题展开学习,查阅信息资料,进行尝试探索,完成对问题的理解和知识的应用。教师在这个时期要根据学生提出的问题,引导和帮助学生完成任务。第四时期可由教师进行归纳总结。由于学生学习程度存在差异,所以学生掌握的知识也不同,为了防止两极分化,要进行知识点的回顾和总结,使所有学生赶上教学进度,达到教学要求。[5]
2.项目驱动法
第二阶段分为三个时期,第一时期是项目制定期,第二时期是项目实施期,第三时期是项目评审期。[6]
第一时期是制定项目。制定项目是决定项目驱动教学成败的重要因素,项目的设计既不能太大也不能太小。如果项目工作量太大,会导致学生望而却步,容易打消学生项目实施的积极性。如果项目工作量太小,就起不到项目驱动的效果。
项目大小设计合适就会让学生领会到每前进一步都是有成果的,从而激励他们不断学习、不断进步。在课程初期,教师布置项目课题,学生进行自由分组(6~7人),各小组根据兴趣选择项目,每1组根据学生的个人能力分配角色,选出组长1人负责项目的整体工作进度安排与组员间的协调工作,并定期向教师汇报各项目进度。
第二时期是实施项目。在项目实施过程中,学生首先想如何去完成项目,在完成项目过程中会遇到哪些不能解决的问题,这就调动了学生主动求知的欲望。为完成项目,学生又会想方设法读教材、查资料、互相学习交流,经过不断修改和完善,既完成了项目,又达到了掌握知识、提高能力的目的,充分体现了“做中学”的主导思想。项目开展的每一阶段,都必须以组为单位提交标准化、规范化的阶段文档,并要求组内成员执行严格的文档评审机制。实施期产出的代码应在不同的小组中进行严格的交叉测试。测试结束后,各小组提交全部软件,由教师随机将软件系统交叉试用,发现错误,反馈给开发小组进行维护工作。通过项目实践,让学生完整经历软件开发的各个阶段,为以后的工作打下良好的基础。而且在开发过程中,组员之间的协调工作培养了大家的团队合作意识,这是软件人员一种最基本的职业素养。
第三时期是评审项目。项目开发结束后,组织学生进行讨论,相互评定,找出其中的不足。学生能够在积极融洽的环境中相互学习、取长补短,不断完善自己的作品。项目评比中,适当的激励也是项目驱动的必要措施,以表扬为主的激励方式可以培养学生的创新意识。对于一些创意新颖、主题突出、有独创性的作品,教师则应及时给予表扬和鼓励,这样可以不断加强学生的信心,让学生能长期保持饱满的热情。
3.基于任务驱动和项目驱动的教学方法的实施
下面通过一个实际的例子说明在“软件工程”教学中如何应用这种教学方法。例如在讲述设计阶段时,不是单纯地介绍概念,而是将所有内容设计为“等级考试题库系统的开发”这一具体的任务。教师对这一任务又分为总体设计和详细设计,学生就会对总体设计如何进行模块化、设计模块的规模进行讨论。设计时力争做到低耦合、高内聚,降低模块间的耦合程度,从而获得较高的模块独立性。详细设计则涉及界面设计等内容,学生就会对如何设计出人机交互比较友好的界面进行讨论。最后学生结合总体设计中面向数据流的设计方法,利用层次图和HIPO图进行实践。结合详细设计中面向数据结构的设计方法,利用Jackson图进行实践。
第一阶段任务驱动法完成后,就可以针对“等级考试题库系统的开发”这一具体项目进行项目驱动法。要适当降低学生做项目的难度,这样有利于激励他们的学习积极性。在做项目前,学生6人分为一组,每组选组长1人负责项目的协调。对项目阶段划分要合理,为了让学生能在指定时间内完成项目内容,对项目每个阶段的内容要进行认真考虑,工作量要大小适宜。先对系统进行分析,画出数据流图、实体关系图、数据字典,然后再进行设计。根据系统的功能,我们分为四大模块:登录模块、考生模块、考试模块、管理模块。模块完成后进行模块的测试,随后模块装配、联调,系统测试。每个阶段完成后,要组织学生进行讨论和总结,让学生充分发表自己的见解,提出遇到的问题,通过学生之间的交流,可以充分调动学生学习的积极性。同时教师要及时指导学生,让学生保持学习的热情。
4.基于反思性评价机制的成绩评定
为提高学生学习的主动性和积极性,培养学生的反思能力,本课程建立反思性评价机制。反思性评价是指教师和学生在多元、客观、开放的评价过程中,根据基础性发展目标和学科学习目标的达成度、学与教过程的合理性、学与教策略的有效性等方面即时生成的信息主动反思,不断调节学与教的行为,以促进学生的学会学习与教师的学会教学相统一的发展性评价方式。“软件工程”课程考核的应该是学生运用软件工程的思想和方法进行软件开发及项目管理的综合能力,具体评价可由自评、组内互评、组间评价及教师评价4种评价方式构成。评价的内容应针对“软件工程”一学期的完整教学活动进行,包括对专业知识的学习态度和成效、对小组的贡献、对项目的责任感、团队意识、项目成果等方面,最终形成一个结合4种评价方式、分阶段的反思性评价体制。
5.基于任务驱动和项目驱动相结合的教学模式特点
(1)能培養学生参与项目开发的兴趣。由于分阶段进行“软件工程”学习,学生能够循序渐进,加深理解与掌握软件工程生命周期各阶段的理论和方法,从而能够解决具体的实际问题,并能在以后的实际工作实践中应用软件工程,使学生产生成就感,进而增强了其参与项目开发的兴趣。
(2)能够提高学生的综合素质。学生通过这种教学模式,必须理论联系实际,编写软件开发各阶段的文档材料必须具备完整性、可读性及可理解性,这样有利于提高其文学修养及文字处理能力。在评审阶段的陈述与答辩也有利于提高其口头表达能力。
(3)能够引导学生正确学习“软件工程”这门课。传统的软件工程学习模式使学生死记硬背,不能很好地理解“软件工程”这门课的实质,无法取得很好的教学效果。新的教学模式采用了反思性评价机制,从多方面、多角度来评价课程学习效果,使学生积极地参与到课程中间,发挥自己的主观能动性。新模式是对学生学习能力、实践能力、创新能力的综合考查,同时在很大程度上避免了有的学生平时不好好学习,试图通过期末临时抱佛脚过关的现象,以及学生中大量存在的“高分低能”现象的发生。
三、结语
本文提出了基于任务驱动和项目驱动相结合的“软件工程”教学模式,并在教学中进行了实施。从学生反馈的结果来看,效果良好,极大地提高了学生对本门课程的学习兴趣。学生经历了软件开发的全过程,锻炼和培养了系统分析能力、设计能力、编程能力、测试和维护能力、团队协作能力和文档书写能力,提高了学生的实践动手能力和综合素质。
参考文献:
[1]李锋,孙莉.任务驱动式方法在离散数学教学中的运用[J].计算机教育,2006,(3).
[2]游琪.项目驱动在数据结构实践教学中的应用研究[J].软件导刊,2010,(1).
[3]徐肇杰.任务驱动教学法与项目教学法之比较[J].教育与职业,2008,(11).
[4]冯林,郑薇薇.“任务驱动”与“项目驱动”相结合的创新教育研究[J].黑龙江教育,2010,(4).
[5]李海华.任务驱动教学法在软件工程教学中的应用[J].电脑知识与技术,2007,(9).
[6]卞琛.项目驱动法在计算机专业教学中的应用[J].乌鲁木齐职业大学学报,2008,(1).
(责任编辑:麻剑飞)
关键词:软件工程;任务驱动;项目驱动
作者简介:郑豪(1976-),男,江苏南京人,南京晓庄学院数学与信息技术学院,讲师。(江苏 南京 210017)
基金项目:本文系南京晓庄学院教改基金项目(项目编号:4083430)的研究成果。
中图分类号:G642.3 文献标志码:A 文章编号:1007-0079(2011)04-0101-02
一、任务驱动教学法、项目驱动教学法简介
“软件工程”作为一门抽象性和实践性都比较强的计算机专业课程,常规的教学方法和实践模式使学生无法真正理解与掌握其精髓,更难做到学以致用。Evelyn等在其著作Project-Based Software Engineering: An Object-Oriented Approach中指出,传统的教学不能有效培养学生的软件开发技能,学生应该具有项目开发的经历。为了改进这种以“教”为中心的教学模式,国内外一些学者先后提出了基于任务驱动的“软件工程”教学模式和基于项目驱动的“软件工程”教学模式。这两种方法都是以学生为中心的教学模式,教师在整个教学过程中起组织者、指导者、帮助者和促进者的作用。下面简单地介绍一下两种教学法。
任务驱动教学法是一种建立在建构主义教学理论基础上的教学法。它的基本特征是“以任务为主线、教师为主导、学生为主体”。任务驱动教学法符合探究式教学模式,强调学生的学习活动必须与任务或问题相结合,学生在信息处理任务的驱动下展开学习活动,以探索问题来引导和维持学生的学习兴趣和动机。教师引导学生由简到繁、由易到难,循序渐进地完成一系列任务,在完成任务的过程中,培养分析问题、解决问题以及用计算机处理信息的能力。在这个过程中,学生带着真实的任务学习,拥有学习的主动权,会不断地获得成就感,可以更好地激发他们的求知欲望,从而培养独立探索和创新的能力。[1]
项目驱动教学法来源于建构主义学习理论,与其相适应的项目驱动教学模式为:以学生为中心,教师在整个教学过程中起组织和指导作用,利用情境、协作、会话等学习环境要素充分发挥学生的主动性、积极性和创新精神,最终达到使学生有效实现对当前所学知识的意义建构的目的。[2]项目的主题与真实世界密切联系,以成果为驱动力。既可在本专业也可跨专业选取实施综合性项目,具有学科交叉性和综合能力运用的特点。学生根据自己的兴趣选择内容和形式的决策机会,使学生能够自主、自由地进行学习,从而有效地促进学生创造能力的发展。项目内容中含有学生从未遇到的问题,但通过分析和努力又可以得到解决,项目的设计明显要比任务难得多。[3]
二、基于任务驱动和项目驱动相结合的教学模式
目前,大部分学校都采用单一的任务驱动教学法或项目驱动教学法。采用单一的任务驱动教学法,虽然能够使学生在任务中学习新的软件工程知识,但是对于学生系统地綜合理解和应用软件工程知识还是欠缺的。[4]同样,采用单一的项目驱动教学法,由于基础欠缺,完全由学生独立设计与实施显然是不合适的。所以我们提出将两者结合的教学模式,使两种教学法相互补充,取长补短。该教学模式分为三个阶段:第一阶段先使用任务驱动法使学生得到新知识和新技能的储存,第二阶段实施项目驱动教学法,第三阶段是基于反思性评价机制的成绩评定。
1.任务驱动法
第一阶段分成四个时期。第一时期是任务提出期,第二时期是任务分析期,第三时期是任务完成期,第四时期是任务总结期。
在教学过程中,第一时期是布置任务,要求教师先要对任务进行细化,在“软件工程”学习总任务的框架下,把总任务细分成一个个的子任务,通过这些小的子任务来体现总的学习任务。教师先向学生布置“软件工程”课程的学习子任务,要求学生带着要完成的子任务去学习,以探索问题来引起学生学习的兴趣和动机。第二时期是分析任务,提出任务之后,要让学生讨论、分析任务,提出完成任务需要做哪些事情,即提出问题。对于已经学习过的问题,学生自己能够运用已有的软件工程知识进行解决,对于任务中存在的新问题,学生通过第三时期解决相应的问题。第三时期是让学生通过实践活动,找出完成任务的方法。学生可以采用自主探索或互助协作开展探究活动,围绕主题展开学习,查阅信息资料,进行尝试探索,完成对问题的理解和知识的应用。教师在这个时期要根据学生提出的问题,引导和帮助学生完成任务。第四时期可由教师进行归纳总结。由于学生学习程度存在差异,所以学生掌握的知识也不同,为了防止两极分化,要进行知识点的回顾和总结,使所有学生赶上教学进度,达到教学要求。[5]
2.项目驱动法
第二阶段分为三个时期,第一时期是项目制定期,第二时期是项目实施期,第三时期是项目评审期。[6]
第一时期是制定项目。制定项目是决定项目驱动教学成败的重要因素,项目的设计既不能太大也不能太小。如果项目工作量太大,会导致学生望而却步,容易打消学生项目实施的积极性。如果项目工作量太小,就起不到项目驱动的效果。
项目大小设计合适就会让学生领会到每前进一步都是有成果的,从而激励他们不断学习、不断进步。在课程初期,教师布置项目课题,学生进行自由分组(6~7人),各小组根据兴趣选择项目,每1组根据学生的个人能力分配角色,选出组长1人负责项目的整体工作进度安排与组员间的协调工作,并定期向教师汇报各项目进度。
第二时期是实施项目。在项目实施过程中,学生首先想如何去完成项目,在完成项目过程中会遇到哪些不能解决的问题,这就调动了学生主动求知的欲望。为完成项目,学生又会想方设法读教材、查资料、互相学习交流,经过不断修改和完善,既完成了项目,又达到了掌握知识、提高能力的目的,充分体现了“做中学”的主导思想。项目开展的每一阶段,都必须以组为单位提交标准化、规范化的阶段文档,并要求组内成员执行严格的文档评审机制。实施期产出的代码应在不同的小组中进行严格的交叉测试。测试结束后,各小组提交全部软件,由教师随机将软件系统交叉试用,发现错误,反馈给开发小组进行维护工作。通过项目实践,让学生完整经历软件开发的各个阶段,为以后的工作打下良好的基础。而且在开发过程中,组员之间的协调工作培养了大家的团队合作意识,这是软件人员一种最基本的职业素养。
第三时期是评审项目。项目开发结束后,组织学生进行讨论,相互评定,找出其中的不足。学生能够在积极融洽的环境中相互学习、取长补短,不断完善自己的作品。项目评比中,适当的激励也是项目驱动的必要措施,以表扬为主的激励方式可以培养学生的创新意识。对于一些创意新颖、主题突出、有独创性的作品,教师则应及时给予表扬和鼓励,这样可以不断加强学生的信心,让学生能长期保持饱满的热情。
3.基于任务驱动和项目驱动的教学方法的实施
下面通过一个实际的例子说明在“软件工程”教学中如何应用这种教学方法。例如在讲述设计阶段时,不是单纯地介绍概念,而是将所有内容设计为“等级考试题库系统的开发”这一具体的任务。教师对这一任务又分为总体设计和详细设计,学生就会对总体设计如何进行模块化、设计模块的规模进行讨论。设计时力争做到低耦合、高内聚,降低模块间的耦合程度,从而获得较高的模块独立性。详细设计则涉及界面设计等内容,学生就会对如何设计出人机交互比较友好的界面进行讨论。最后学生结合总体设计中面向数据流的设计方法,利用层次图和HIPO图进行实践。结合详细设计中面向数据结构的设计方法,利用Jackson图进行实践。
第一阶段任务驱动法完成后,就可以针对“等级考试题库系统的开发”这一具体项目进行项目驱动法。要适当降低学生做项目的难度,这样有利于激励他们的学习积极性。在做项目前,学生6人分为一组,每组选组长1人负责项目的协调。对项目阶段划分要合理,为了让学生能在指定时间内完成项目内容,对项目每个阶段的内容要进行认真考虑,工作量要大小适宜。先对系统进行分析,画出数据流图、实体关系图、数据字典,然后再进行设计。根据系统的功能,我们分为四大模块:登录模块、考生模块、考试模块、管理模块。模块完成后进行模块的测试,随后模块装配、联调,系统测试。每个阶段完成后,要组织学生进行讨论和总结,让学生充分发表自己的见解,提出遇到的问题,通过学生之间的交流,可以充分调动学生学习的积极性。同时教师要及时指导学生,让学生保持学习的热情。
4.基于反思性评价机制的成绩评定
为提高学生学习的主动性和积极性,培养学生的反思能力,本课程建立反思性评价机制。反思性评价是指教师和学生在多元、客观、开放的评价过程中,根据基础性发展目标和学科学习目标的达成度、学与教过程的合理性、学与教策略的有效性等方面即时生成的信息主动反思,不断调节学与教的行为,以促进学生的学会学习与教师的学会教学相统一的发展性评价方式。“软件工程”课程考核的应该是学生运用软件工程的思想和方法进行软件开发及项目管理的综合能力,具体评价可由自评、组内互评、组间评价及教师评价4种评价方式构成。评价的内容应针对“软件工程”一学期的完整教学活动进行,包括对专业知识的学习态度和成效、对小组的贡献、对项目的责任感、团队意识、项目成果等方面,最终形成一个结合4种评价方式、分阶段的反思性评价体制。
5.基于任务驱动和项目驱动相结合的教学模式特点
(1)能培養学生参与项目开发的兴趣。由于分阶段进行“软件工程”学习,学生能够循序渐进,加深理解与掌握软件工程生命周期各阶段的理论和方法,从而能够解决具体的实际问题,并能在以后的实际工作实践中应用软件工程,使学生产生成就感,进而增强了其参与项目开发的兴趣。
(2)能够提高学生的综合素质。学生通过这种教学模式,必须理论联系实际,编写软件开发各阶段的文档材料必须具备完整性、可读性及可理解性,这样有利于提高其文学修养及文字处理能力。在评审阶段的陈述与答辩也有利于提高其口头表达能力。
(3)能够引导学生正确学习“软件工程”这门课。传统的软件工程学习模式使学生死记硬背,不能很好地理解“软件工程”这门课的实质,无法取得很好的教学效果。新的教学模式采用了反思性评价机制,从多方面、多角度来评价课程学习效果,使学生积极地参与到课程中间,发挥自己的主观能动性。新模式是对学生学习能力、实践能力、创新能力的综合考查,同时在很大程度上避免了有的学生平时不好好学习,试图通过期末临时抱佛脚过关的现象,以及学生中大量存在的“高分低能”现象的发生。
三、结语
本文提出了基于任务驱动和项目驱动相结合的“软件工程”教学模式,并在教学中进行了实施。从学生反馈的结果来看,效果良好,极大地提高了学生对本门课程的学习兴趣。学生经历了软件开发的全过程,锻炼和培养了系统分析能力、设计能力、编程能力、测试和维护能力、团队协作能力和文档书写能力,提高了学生的实践动手能力和综合素质。
参考文献:
[1]李锋,孙莉.任务驱动式方法在离散数学教学中的运用[J].计算机教育,2006,(3).
[2]游琪.项目驱动在数据结构实践教学中的应用研究[J].软件导刊,2010,(1).
[3]徐肇杰.任务驱动教学法与项目教学法之比较[J].教育与职业,2008,(11).
[4]冯林,郑薇薇.“任务驱动”与“项目驱动”相结合的创新教育研究[J].黑龙江教育,2010,(4).
[5]李海华.任务驱动教学法在软件工程教学中的应用[J].电脑知识与技术,2007,(9).
[6]卞琛.项目驱动法在计算机专业教学中的应用[J].乌鲁木齐职业大学学报,2008,(1).
(责任编辑:麻剑飞)