第1篇:研究生软件测试课程实施案例交叉教学法新探
从目前国内研究生“软件测试理论与技术”课程教学实际出发,在分析目前国内研究生学习基础、学习需求及学习能力的基础上,提出一种紧密结合测试案例、测试理论与实践交叉进行的教学新方法。
随着国家信息化建设步伐的不断加快,软件日益成为信息系统中极为重要的组成部分。软件的可信性已倍受关注,目前软件测试仍然是保障和提高软件质量的一种有效方法。同时随着国内软件产业的标准化与国际化,越来越需要专门的软件测试高级人才。当前高校仍然是培养软件测试专业人才的重要机构。
目前我国高校开设软件测试课程按学历分主要有三个层次:大专、本科与研究生阶段。大专和本科阶段的软件测试课程在我国已经开设有较长时间了,主要是教授基本的软件测试理论与技术,侧重以基础知识为核心。一些高校已经摸索出一些好的教学经验和方法,发表了一些教学体会[1-3]。但是,研究生(本文特指硕士研究生,下同)阶段的软件测试课程教学却面临很多新的问题。特别是随着近几年高校研究生招生规模的扩大及招生形式的多样化,各高校研究生生源相差较大,学习目的与培养形式也有所差异,使得研究生的软件测试课程教学很难采取统一标准,给各校任课老师提出了新的挑战。从我校研究生软件测试课程教学实际出发,笔者分析了近年来研究生在学习基础、学习能力及学习目的上的诸多变化,提出了一种“紧密结合测试案例、测试理论与实践交叉进行”的软件测试教学新方法。该方法连续实施在两级研究生的教学实践中,从课堂反应、课程考核、案例测试实践指标来看,该方法较大程度地激发学生的学习兴趣,提高了研究生测试理论知识及实践测试动手能力。
1传统教学及面临的新问题
1.1传统的研究生软件测试教学形式
面向研究生的软件体系结构课程教学探索
针对研究生教学的特点和软件体系结构课程的教学特点,提出了“研讨式教学+案例教学+实践教学”的软件体系结构教学方法,集学生主体性、启发性、实践性于一体,使学生增长知识、开阔视野,有助于学生综合能力的提高,促进教学相长。
目前,研究生软件体系结构教学中存在的主要问题是本课程的理论性较强,概念繁多,内容抽象,学生缺乏对本课程自主学习的积极性,无法真正理解软件体系结构在提高软件质量方面的重要性,更无法在软件设计中灵活运行软件体系结构的基本理论和方法,设计出高质量的软件体系结构。分析在教学过程中存在的问题,具体原因主要如下:教学方式简单;以理论教学为主,缺乏实践教学环节;学生对软件体系结构的重要性认识不足,学习的积极性不高。我们在实际讲授研究生的软件体系结构课程中,根据研究生的特点和本门课程的目标,采用了研讨式教学和案例教学、实践教学相结合的方式,取得了很好的效果。
一、研讨式教学法的运用
研讨式教学发源于早期的德国大学,现已成为西方发达国家高校中的一种主要教学方法。研讨式教学是以解决问题为中心的教学方式,通过由教师创设问题情境,然后师生共同查找资料,研究、讨论、实践、探索,提出解决问题办法的方式,使学生掌握知识和技能。它包括阅读自讲式、讨论式、启发式、专题式、课题制式、案例和讲授式等多种具体教学方式。研讨式教学要求以“导”为主,设置贴近学生生活、富有吸引力的情境,提出有思考价值的问题,要求教师有全面、深刻、独到的见解,了解学生原有知识基础和能力水平,并且有熟练利用现代化手段教学的能力。要求学生通过查阅资料、研究讨论后解决问题。教师要收集足够的资料,便于双方节约时间,变原来组织教学为讨论讲解,引导学生利用资料,表达自己的看法,教师应珍视之,并予以鼓励。教师还要参与多方面研讨,使研讨式教学有广度又有深度。在软件体系结构课程中采用研讨式教学,主要实施步骤如下:
1.布置题目。按照题目大小将其进一步细化,根据学生专业情况、知识基础有针对性地布置题目,并给出必要的提示。在上一节授课的过程中就要布置下题目,给同学们课下留出一周左右的时间准备。比如在学习经典软件体系结构风格一节时,下课前,在总结各种经典软件体系结构风格的特点和优缺点的基础上,就要引出目前流行的B/S和C/S结构风格,给大家布置题目:查阅相关资料,分析B/S和C/S结构风格的特点、优点和缺点,以及两种风格混合的可能性,同时分析一个具体案例,如某公司网络财务管理系统,给出初步的需求,请同学们作为软件架构师,为该系统选择合适的软件体系结构风格,并设计出初步的软件体系结构。
2.引导学生查阅案例和文献,指导学生对资料进行消化、归纳,准备研讨资料。针对研讨题目涉及的文献资料的获取,可以采用介绍相关资料和指导学生自己查找相结合的方式进行。由于软件体系结构课程本身的性质,学生主要是上网查阅相关软件体系结构设计的案例和相关资料,通过案例学习优秀软件架构师的设计思想,在理解的基础上能够达到重用的目的。通过查阅案例和文献,也能冲破教材的束缚,开阔同学们的视野,拓展思路。学生通过对资料进行总结归纳和准备研讨资料的过程,将这些材料消化成自己的知识,提高自己的认识和能力水平。
3.组织讨论、交流及讲评、总结。在上课的过程中,学生依据所选择的题目在全班进行报告,所有的学生共同进行讨论,给出自己的想法和观点等。在这期间,教师一方面要注意时间的掌控,及时对讨论进行引导、启发、点拨,以免出现冷场或跑题、偏题等现象发生,使研讨不断深入;另一方面还要针对每一个学生的发言给出评价,并作为考核的一部分依据。最后教师对研讨、交流的情况进行归纳、总结,形成共识。如对上节课布置的题目某公司“网络财务管理系统”,请同学们介绍自己的体系结构风格的选择和设计思想,大家共同讨论,教师最后总结各位同学的观点,给出合理的体系结构设计。
二、研讨式教学法和案例教学法相结合的运用
软件体系结构是一门实践性比较强的课程,只谈空洞的设计理论和思想比较抽象,难以理解。在授课的过程中,结合案例教学,就能给学生以直观的印象,而且能引发同学的思考和讨论。比如在学习软件系统的需求种类时,我们采用如下的教学过程:先请同学们根据自己的理解和项目经验,谈一下自己认识的需求都有哪些种类。在同学们讨论的基础上,总结出一张需求分类表。软件需求划分为功能需求和非功能需求,非功能需求又可分为质量属性和约束。软件质量属性划分为运行期质量属性和开发期质量属性两大类。通过总结大家的观点形成图的形式,清晰直观地展现了知识点,避免了学生在做需求分析的时候经常遗漏掉某些需求的情况。在强调“约束”的重要性时,可以举一个例子,比如某教学网站系统,由于在需求分析的时候,没有考虑将来部署时WEB服务器的版本要求约束,而采用了VISUALSTUDIO2010作为开发工具,可是开发完成,在部署时,服务器却不支持.NETFRAMEWORK4.0,而VISUALSTUDIO2010却恰恰是基于.NETFRAMEWORK4.0的,所以导致开发出来的系统无法在服务器上部署,最后不得不重新买了一台新的服务器,增加了一大笔成本。我们从这个例子可以认识到,在需求分析时全面考虑各种需求是多么重要,它直接决定软件的质量,甚至决定软件的成败。通过这个生动的例子,同学们深刻认识到了进行全面需求分析的重要性,尤其是需求中“约束”的重要性。
三、实践教学法的运用
软件体系结构是一门实践性很强的课程,仅仅学习书本上的理论是不够的,必须在项目实践中去学习,才能更好地理解软件体系结构的基本理论和方法,并在实践中逐渐增长经验;才能结合具体的项目需求,设计出高质量的软件体系结构。本课程设置了实践环节,在第一次上课时,就要把实验大纲、实验指导书、实验要求和实验报告模版给大家讲明白,并且请同学们自由结组,3~6人一组,每组一个题目,题目可以自己拟定,也可由教师给出。整个实验需要大家完成需求分析、系统设计、软件测试和系统编程实现,并提交相应的报告。最后每组要进行答辩,根据系统完成情况、答辩情况、实验报告情况和每个人的工作量和表现综合评分。经过实践教学,学生可以把理论应用到实践,用实践来加强对各种软件体系结构风格的理解,增长设计经验,提高软件体系结构设计的综合能力。
四、总结
研究生教学实践证明,本文采用的研讨式教学结合案例教学和实践教学的方法,在软件体系结构课程的学习中取得了良好的效果,不仅充分调动了学生的积极性和主动性,而且增强了师生沟通和互动交流,提高了学生的综合能力。因此,它是研究生软件体系结构课程教学中值得提倡的方法。
作者:薛桂香,林涛,魏立来源:教育教学论坛·中旬2012年5期
第2篇:面向研究生的软件体系结构课程教学探索
2010年5月我们参加了第四届全国软件工程领域硕士培养工作研讨会,与会期间我们和软件测试同行进行了广泛的交流。大部分院校认为软件测试教学大纲仍然沿用研究生招生改革之前的大纲,即教学对象为传统的学术型研究生,课程教学仍然以理论教学为主,教学内容也以书本为主,按章节进行教学。课程结束考试仍以论文报告的形式完成。总结大部分高校共同的教学内容有:
1)软件测试概述;
2)测试人员的离散数学;
3)测试人员的图论;
4)功能性测试;
5)结构式性测试;
6)集成测试;
7)系统测试;
8)面向对象测试等。
传统教学以教授学生理论知识为主,旨在培养懂理论的学术型研究生。未考虑学生的水平、学习需求、学习目的及学习能力等因素的差异,导致相当一部分同学失去学习兴趣。此外教学过程没有测试案例及其他实践测试环节,导致总体教学效果不理想,课程结束后大部分同学均没有掌握基本的软件测试理论与技术。
1.2研究生教学的新特点
随着近年来国家研究生招生及培养方式的改革,研究生的招生规模、招生形式及培养方案等均变化较大。以前是以工学硕士为主,重点培养懂理论、会创新的高级学术型研究人才。近年来,国家硕士研究生招生已细分为工学硕士及工程硕士,工学硕士又分为学术型与应用型。工程硕士和应用型硕士侧重于培养工程开发、工程应用、工程管理等应用创新型高级人才。研究生招生及培养制度的改革促使培养方案不一样,相应的课程大纲及教学方式也应不一样。故研究生软件测试课程教学面临的主要特点有:
1)理论与实践并重;
2)加强工程案例的测试教学;
3)激发学生兴趣,互动教学;
4)侧重于培养学生的实际测试动手能力。
现阶段研究生软件测试课程应考虑所有选修学生的学习基础、学习需求、学习目的及学习能力的多
样化,重点学习以下内容:常用软件功能性测试方法;面向对象程序测试技术;WEB软件测试;错误注入测试技术;安全性测试、主流软件自动化测试工具及大公司常用测试方法等。通过课程的学习,使学生较好地掌握软件测试理论、先进的软件测试技术和主流测试工具,并能较好地应用于实际软件工程项目中。
2案例交叉教学法大纲及其教学过程
基于研究生培养方案的诸多变化,我们提出了一种紧密结合测试案例、测试理论与实践交叉进行的教学新方法。该方法以学生为中心,旨在激发学生的学习兴趣,提高学生的理论知识和实际案例测试能力。
2.1江苏大学研究生软件测试教学大纲
表1是我校现行的研究生软件测试教学大纲,全校理工科研究生也可选修。
2.2案例交叉教学法教学过程
案例交叉教学法总体分成两个阶段:课前案例程序编写和课堂理论与案例交叉教学。
第一阶段:课前案例程序编写。上课前一周布置实现两个测试案例,每学期难度类型与之类似。
案例1:使用C、C++或C#语言编写一个程序,计算任意两个正整数a,b的最大公因数,其中0≤a,b≤1060。并撰写程序设计说明书。
案例2:使用ASP或JSP技术,数据库SQLServer实现具有用户注册、登陆验证的简单B/S结构系统。
当然,可以根据不同学生的水平布置不同的案例程序,要求所布置程序难度、功能和工作量与案例1和2相当,即案例1满足后期单元测试、功能测试、类测试、错误注入测试、安全测试及编写测试驱动等测试需求,案例2满足后期GUI测试、WEB测试、错误注入测试、安全测试及测试工具的教学等测试需求。
第二阶段:课堂理论与案例交叉教学。结合前面两个案例,自第二章开始结合测试案例、测试理论与实践交叉进行教学。具体教学流程如图1所示。
S1代表第1章,其它类似。案例1重点是让学生掌握基于程序结构的测试方法,如边界值测试、等价类测试、类测试、数据流与控制流测试方法等。案例2重点让学生掌握基于程序规格说明的测试方法,如GUI测试、错误注入测试及基于状态的测试等方法。此外,结合案例1和2,不但教授学生重要的功能性测试方法,而且教授学生一些关于软件安全
性、可靠性及稳定性的测试思路,全面提高学生的综合测试能力。
此外,我们的教学过程中将联系国内外大型软件企业的实际测试方法及测试工具。如我们选用的教材之一便是微软软件测试工程师们撰写的教程,所讲授是主流自动化测试工具系列:Parasoft公司AEP方案系列、MercuryInteractive公司系列及IBMRational系
列。重点讲授的自动化测试工具主要有:ParasoftC++Test;Mercury公司主要产品LoadRunner、WinRunner、TestDirector、QuickTestPro、IBMRationalPurify等。同时将结合程序案例1、2及其他大型测试案例进行工具的演示教学。
3教学效果分析
我们连续对两级研究生运用了案例交叉教学法,在课程结束后对50名学生进行了问卷调查,同时结合学生考试成绩及课程测试报告情况,结果表明案例交叉教学法教学效果明显好于传统的按章节教学方法。表2从学生兴趣、理论掌握度、测试用例设计、测试驱动编写、测试方案设计、测试思想及自动化测试工具的掌握等方面进行了教学效果对比分析。
学生问卷调查中的学生兴趣度以调查结果为主,其他调查项均以课程考核结果为主,调查结果为参
照。在课程期末考核中除了考查常规的测试基本理论与技术之外,同时还要求学生交叉测试其他同学的程序案例,最后撰写测试用例设计报告及程序测试报告。
由表2数据对比分析可知,案例交叉教学法在各方面都明显优于传统的按章节教学法,特别是学生在掌握测试思想及测试自动化工具方面近96%以上的学生掌握较好。
4结语
随着近年来软件企业规模化、正规化及国际化步伐的加快,社会越来越需要大量的专业化高级软件测试人才,这给高等院校及高级软件人才培训机构带来了新的挑战。本文提出了一种紧密结合测试案例、测试理论与实践交叉进行的教学新方法。该方法综合考虑学生的学习要求、学习基础及学习目的等诸多因素,以培养学生的测试兴趣为出发点,以学生自己编写的程序为测试案例,将测试理论、测试技术、测试案例及测试工具结合起来进行教学。课程最后介绍了微软公司常用的一些测试方法。
通过测试能力考核及课后调查表明,绝大部分学生认为新方法教学更有利于他们掌握软件测试基本理论,提高测试案例实践编写能力,特别是学会了主流自动化测试工具的应用。教师们也普遍反映软件测试课程的教学质量和教学效果有明显的提高。
作者:陈锦富,杨鹤标来源:计算机教育2010年22期
第3篇:研究生《软件工程》课程教学改革与研究
软件工程是培养学生软件开发能力和软件工程素养的一门重要的课程,对提高学生从事软件开发能力,尽快融入到项目开发实践中起着重要作用。该文从实际教学工作出发,对软件工程这门课程的教学现状与困难进行了分析,对教学内容体系、教学方法手段、实践教学模式和考核验收方式进行了研究和探索。
TeachingReformandResearchforCourseSoftwareEngineering
ZHANGYou-wei1,MAfei2,MADeng-wei1,HOUYi-fan1,QIXu-yan1
(1.SurveyingandMappingInstitute,InformationEngineeringUniversity,Zhengzhou450052,China;2.NanyangVadioandTelevisionUniversity,Nanyang473000,China)
Abstract:SoftwareEngineeringisanimportantcoursetofosterthestudents'capabilityofsoftwaredevelopmentandsoftwareengineeringqualities,whichissignificantforstudentstoimprovetheabilityofengaginginsoftwaredevelopmentandstepintoprojectpracticeassoonaspossible.Inthispaper,byproceedingfromthepracticalexperiencesofteaching,theteachingactualitiesanddifficultiesofsoftwareengineeringhavebeenanalyzed.Furthermore,severalissuesonthecoursehavebeendiscussed,namely,systemofteachingcontents,teachingmethods,teachingmodewithpracticeandwayofcheck.
Keywords:softwareengineering;case-basedteaching;teachingmethod
目前,软件工程作为我院各专业的一门选修课,课程教学内容主要包括:软件危机、软件工程、软件过程、结构化分析与设计、面向对象的分析与设计、软件测试、软件项目管理、软件维护与软件质量保证等。本课程对培养研究生在掌握软件工程基础理论,传统的软件方法学、面向对象的软件方法学,以及软件项目管理等方面具有重要作用。通过本课程的学习,使得研究生掌握软件工程的理论知识及基本的研究方法,了解传统的软件方法学、面向对象的软件方法学的区别和优势,增强软件项目开发的能力,及时了解本学科的最新发展状况及前沿研究领域,从而使其具备在实践中能够正确、熟练地运用软件工程中技术、方法和工具的能力。
由于软件工程是一门综合性和实践性很强的课程,现行的教学内容,教学模式、教学实践等环节上都存在很大不足,且直接影响了课程教学效果和人才培养质量,因此,开展本课程教学内容和教学方法改革研究具有重要的现实意义和实践价值。
1教学现状与困难
目前本课程的教学现状主要有如下两个特点:
一是传统的内容多,新技术新方法少。在目前的教学中,基本是按照软件生命周期各阶段的顺序来进行内容组织和讲授,对于UML语言、面向对象的软件工程、XP极限编程、RUP、RationalRose、CVS等这些新的方法、技术和工具涉及很少。随着这些新技术、新方法的应用日益广泛,有的甚至成为主流,如果不及时引入到课堂教学中,容易造成教学和实际运用的脱节,不利于学生很快融入到导师的项目研发工作中;二是理论教学内容多,实践教学内容少。本课程教学时数为40学时,大部时间都在进行理论教学,仅仅安排了6学时进行试验,由学生独立完成,最后提交项目源程序和开发过程中各阶段的文档、报告等。在教学过程中我们发现过多的理论内容,只能使学生被动地听课,学生感到讲课内容抽象枯燥,常常是似懂非懂,有的学生甚至觉得本课程没什么实用价值,不太喜欢学,所以教学效果也不好。软件工程是一门工程性的科学,学生不可能靠听讲软件工程基本原理、方法和技术就学会开发一个实际的软件,而是要在实际的“动手做”和“真正练”中去体会软件工程思想,掌握软件开发方法和技术,最终才能熟练运用到真实的软件项目开发中。
目前本课程的教学难题主要有三点:
一是软件工程理论发展日新月异,教学内容更新速度跟不上发展。尤其是近10年来,随着IT技术日益深入到现实社会的方方面面,软件工程的新概念、新技术和新方法不断涌现,教学没能及时跟上软件工程理论、技术的发展。因此,如何实现学生所学知识与未来实际工作的无缝衔接,教学与实际需求紧密结合是本课程的一个教学难题。
二是教学缺乏实际项目背景,过多的理论教学容易陷入说教。完成本科阶段学习的学生,一般只学习过一些编程语言,编写单个程序的代码很少能够超过5000行,编写程序的数量和时间很是有限,大部分学生缺乏实际的项目开发经历和较正规的开发训练。然而软件工程课程教学内容是针对较大规模的软件开发而设计的、是全世界优秀软件工程师的经验教训总结,如果照本宣科,只进行书本理论知识的灌输,学生很难理解该课程的精髓,很容易对该课程产生虚无缥缈的感觉,使得教学流于形式,该课程变成了需要背诵记忆的课程,学生学无所获。因此,如何将教学内容变抽象为具体、变枯燥为生动,从而调动学生积极性与热情,是软件工程课程教学中的一个难题。
三是培养的学生缺乏团队开发意识,难以满足导师对研究生软件开发能力的需求。随着计算机硬件技术飞速发展,软件开发技术不断提高,软件复杂程度和代码行数呈指数级别增长。因此,一般工程项目或软件开发都必须以团队形式进行,个人英雄主义和黑客独来独往的思想对工程化的软件开发是很不利的。然而,目前本课程的实验和实践教学环节主要还是以学生个体为主,即使有一些团队训练项目,从检查验收结果看,往往还是由那些开发能力强的学生独立完成,最后进行成果分享。缺少对学生团队开发能力和职业素养行之有效的训练方式,培养的学生与实际需求存在较大脱节。因此,如何培养学生软件团队开发能力和软件开发职业素养,缩小教学与导师对研究生软件开发能力需求之间的差距,是软件工程教学中的又一难题。
2教学改革与措施
2.1构建先进的教学内容体系
结合学院各专业理论需求和测绘软件开发特点,我们构建在理论、应用、实践三个层次上的软件工程教学内容体系。理论部分主要讲解软件需求、软件设计、软件实现、软件测试、软件演化、软件过程、软件质量、软件配置管理和软件项目管理等软件工程课程核心内容。应用部分以当前流行的统一开发过程、面向对象技术和UML语言为核心,融入实践教学案例,覆盖RUP、RationalRose、CVS、Junit等软件工程工具和环境,使学生掌握当前先进的软件工程方法与技术。实践部分要求学生以团队的方式协作开发一个具有一定规模的软件系统,建立支持小组开发的支持环境,让学生从“可实践”软件工程角度学习和运用先进的软件工程思想、技术解决软件开发中遇到的问题。
2.2采用多样化的教学手段
1)激发学习兴趣。兴趣是最好的老师,通过构建先进的教学内容体系以及课程内容精心组织,突出各知识点之间内在联系,建立软件工程知识体系的系统性和实践性,激发学生学习积极性;通过梳理软件工程的历史发展脉络、揭示隐藏在知识点背后的思想深度,激励学生主动探索、积极实践的学习热情。以学生为主体,采用启发式、讨论式等多种教学手段,让学生走上讲台——学生讲解、教师总结,从而活跃课堂气氛、增加学习热情。对遇到的问题,教师组织学生集体讨论、启发、引导学生解决问题,目的是培养学生合作学习和探究性学习的能力与热情。
2)采用案例式教学。目前在软件工程教学过程中存在较多的理论内容讲授,这使得学生缺乏对软件工程知识的感性认识。为了解决这个问题,我们将近年来主持研发的一些专业软件项目和开发经验进行总结、抽取,梳理相关设计方案、技术文档和源代码等内容,形成一个个独立工程项目案例;同时也收集国内外经典软件工程教学案例(比如微软公司和IBM的),进行消化吸收。将这些案例(包括成功与失败的)提供给学生作为素材,实施案例教学。部分案例由教师在课堂上讲解,部分案例由学生分析、讨论、讲解。学生对项目成功与否,哪些地方符合软件工程思想,哪些地方违背了软件工程理论,怎样改进等问题进行讨论并提出自己的解决方案。这样,既培养了学生的实践能力,又丰富了教学手段。
3)制作高质量电子课件。高质量的电子课件对学生专心听课、提高学习积极性、提升教学效果都有很大帮助。因此在制作课件时,要尽量使其具有动态性,尽量用图、表等来表现讲课内容,使整个课件具体生动。避免过多的文字堆砌,更不能将大段大段的课本内容搬上课件,否则只能使学生看着PPT就感觉“头大”,不愿意听课。能用鲜活事例、动画、图表的地方尽量不要出现过多的文字,这样既能讲清楚问题,也容易吸引学生注意力,活跃课堂气氛,对讲课内容的掌握也当然就更加牢固,对提高教学效果和授课质量也大有好处。因此,我们准备用OFFICE2007+FLASH重新制作电子课件和教案,下发给学生中文版课件和教案,而上课时采用英文版电子课件和教案。
4)开展双语式教学。为了逐步培养学生适应英语授课和英语思考问题的意识,我们准备采用外国原版英文教材,课堂板书和作业都采用英语作为教学语言,教师进行英语提问,并鼓励学生使用英语回答。在讲课过程中,对易于理解的内容采用全英语讲解,不易掌握的部分用汉语讲解。同时给学生提供英文软件工程课外阅读资料,以使他们及时了解国际上软件工程的最新发展和动态。这样做既能活跃学生思路,开阔学生眼界,同时也能深挖掘学生想象力和创造力。
5)使用英文原版教材。为配合双语教学,同时满足研究生课程教学要求,在众多软件工程英语教材中,我们选择了高等教育出版社出版的《软件工程——理论与实践》(第三版影印版),由ShariLawrencePfleeger博士主编,Pfleeger博士是世界顶级软件工程专家。该书完美体现了软件工程的两个重要方面——实践者的经验和研究者的理论,并将这两个方面进行了完美结合,而且针对软件工程中的关键问题,讨论了该如何分析并提出了解决方案。书中介绍了目前最新的软件工程技术和工具,引用大量实例研究和文献中的例子,讨论了他们如何影响我们构建和使用最终软件工程产品。
2.3创新实践教学模式
课程实践主要内容是按照先进的项目管理和开发模式,由团队独立完成一个软件项目的开发,使学生得到较全面、系统和规范的软件工程实践训练,培养创造性的软件设计能力和综合分析、解决问题的能力。具体的设想如下:
1)以案例为导向。大多数学生一旦进入到真实的软件开发项目中,往往不能快速下手、进入状态。因此我们结合学生专业方向进行了案例设计,案例分析过程引入“Learningbydoing”的先进教学理念,引导学生通过分析,提出案例的解决方案。目前我们已经建成了一定规模的案例库,具体包括:软件演化过程支撑工具、专业人才数据支撑平台、支持软件并行开发的CASE系统、云雾剔除软件系统、科研论文平台软件系统、Linux应用软件开发工具、嵌入式GIS公共数据平台、月球表面地貌三维模拟系统、空中交通管制系统、医院病房监护系统、银行网络ATM系统和高速公路三维信息化系统等等。案例库的建成为学生项目实践打下了基础。
2)结合兴趣选题。实践项目命题原则是:尽量结合教学、科研的实际课题,反映学院专业需求,以获得更好的工程设计训练。由于项目受到时间、开发环境、条件等限制,命题应从实际出发,确定课题的大小规模和难易程度。要求学生自愿组合开发小组,结合专业需求与兴趣选题。三十多命题为学生自主选题提供了不同应用领域空间,有利于激发学生主动参与开发实践的积极性。
3)进行分段实施。实践过程按照真实的项目管理和开发模式进行,重点放在软件需求和软件设计两个阶段。在这两个阶段各安排1-2次项目方案讨论,小组内部交流与协作,考察方案对需求变更的适应能力,要求开发过程反复、迭代进行,从而培养学生“在实践中学习”的意识。
通过这种实践教学模式,不仅能够激发学生参与项目的积极性和主动性,引导学生去发现问题、分析问题,最后提出解决问题的方案,是培养学生进行探究性、协作性学习和团队精神的一种很好的模式。
2.4改变考核验收方式
在考试方式上,我们准备改变以往的做法(卷面考核和项目实践考核并重),改为以项目实践考核为主,卷面考核为辅。最终课程成绩考核包括平时考核(10%)、项目考核(60%)和卷面成绩考核(30%)。平时考核包括平时作业、课堂讨论及出勤等;项目考核包括项目的完成情况、项目各阶段的文档和报告,源代码,可运行软件等;卷面考核采取闭卷笔试,主要考察学生对软件工程理论内容的掌握。同时对课堂学习表现优异的学生额外可以有一定数量的附加分,从而激发学生学习动力。项目考核成绩则由各阶段文档及其规范层度(20%)、软件功能及其是否可运行(40%)、学习态度与独立编程能力(20%)和项目设计报告(10%)组成。项目成绩由小组之间互评(40%)和任课教师评分(60%)共同确定,这样既保证了最终学生成绩的合理性,又激发了各组学生之间的竞争意识和团队意识,促进学生将理论学习与能力培养紧密结合。
3结束语
由于软件工程一直在不断变化与发展,新的方法和技术也会不断出现,因此对软件工程的课程教学也应该不断进行改革、调整。目前,在学院相关教学部分的大力支持下,软件工程这门课程的教学改革计划与方案已经得到批准,我们准备从2011年下学期开始,对研究生的软件工程教学内容、教学方法和教学模式进行了上述一些改革和探索,从而提高课堂教学效果和教学质量,夯实学生软件工程素养和软件开发能力。
作者:张有为,马飞,马登伟,侯一凡,戚旭衍来源:电脑知识与技术2011年13期