前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的软件测试课程总结主题范文,仅供参考,欢迎阅读并收藏。
随着计算机软件技术的高速发展,软件测试在软件开发过程中的地位也越来越重要,软件测试是保证软件质量和可靠性的重要手段之一,软件测试人才需求猛增,软件测试已经成为计算机专业的重点专业课程。传统的软件测试教学模式,测试理论和测试实践严重脱节,不能很好的满足软件企业对测试人才的要求。依托广东东软学院的特色教学实践1321教学模式,进行以实践能力和就业能力为导向的课程综合实践探索,深化教学改革,激发学生的兴趣,让学生贴近现实的工作场景中学习,了解在软件开发过程中测试岗位的工作过程和知识要点,培养学生软件测试应用技能型人才培养为目标。
二、软件测试课程实践构建的主要思路
软件综合实践安排在大三课程开始之前的实践学期进行,为期4个星期,每天4学时的实践教学指导,软件测试专业的学生已经学过专业基础课《Java程序设计》、《计算机文化基础》、《网页设计》、《数据库设计》、《软件开发过程实践》,专业课《软件测试概论》、《功能测试》,学生初步具备了参与综合实践的专业素质能力。在综合实践开发团队中,将软件开发专业、网站规划与设计专业、数据库管理专业、软件测试专业和网络技术的同学,以3:1:1:1:1这样的比例进行团队建设,从中选出一位同学兼职项目经理,实现学生自主管理,配备具有双师素质的专业老师,一位教师负责指导5-7个团队的项目开发,当需要进行专业指导时,临时进行专业化实践指导,全方位分阶段、分岗位进行进行全程交叉技术指导,同时邀请合作单位的软件工程师,同步进行项目过程的跟踪,给予学生岗位最精准的实践指导。采用项目驱动的方法开展实践教学,通过开发真实的软件项目,以软件工程开发过程为导向,制定软件综合实践——软件测试方向的实践方案,分阶段进行实践,选择有较强的实践性和创新性的项目给学生选题,选题要贴合实际项目,需求相对容易获取,具有一定的创新性,能够激发学生的学习兴趣。首先需求的调研,需求的评审,编写测试计划,设计测试用例,测试执行,测试记录的跟踪和测试总结报告,对每个测试阶段进行教学设计,不断的将所涉及到的知识点融入到实践中,增强学生职业岗位素养能力,团队合作的意识,同时探索以学生管理学生的模式进行实践探索。
三、软件综合实践测试岗位的工作过程与方法
在软件综合开发实践过程中,对软件测试岗位的同学依据软件工程的理论进行指导,结合企业的工作流程,采用分组的教学模式,采用软件测试常用的W模型,进行教学指导,培养学生的团队合作能力,沟通能力,实践能力。测试岗位的工作主要分成两个三个部分,第一部分是需求的调研和评审,测试计划中测试策略的选择、任务的时间安排和测试用例的设计;第二部分主要是测试执行,安装测试工具,部署测试环境,按照测试所设计的测试用例进行手动功能测试,尝试利用自动化测试工具QTP进行自动化测试,运用所学过的黑盒测试方法,进行web测试,兼容性测试等方法的测试工作,将所发现的问题记录到测试管理平台(QC)的缺陷缺陷跟踪表中,修复后,进行验证性测试,第三部分就是测试总结报告。
四、软件综合实践的考核
1.答辩委员会的组成。立体化全方位的考核方式,采用学生团队答辩的方式进行最终的考核,答辩委员会成员由软件开发方向教师、网站规划与开发教师、数据库管理方向教师、软件测试技术方向教师和企业工程师共同组成。2.软件测试岗位的知识点的考核。每个专业都设计了一套科学有效的评价体系,从三个部分对学生的能力进行全方位评。第一部分IT职业素养能,占总成绩比例的30%,考勤、项目管理能力、文档编写能力、团队合作与沟通能力、演讲与答辩能力;第二部分团队实践成果,占总成绩比例的30%测试环境部署、测试工具软件的安装、测试执行中缺陷报告的跟踪、测试总结报告的编写;第三部分岗位技能成果,占总成绩比例的40%,软件开发过程文档:需求评审报告、测试计划报告、测试用例报告。
五、软件综合实践教学实践的意义
1.软件综合实践项目分组教学的意义2.软件测试岗位同学的收获3.综合实践教学的后续影响4.软件综合实践教学的改革未来方向
作者:张彤宇 李晶 姚庚梅 单位:广东东软学院计算机科学与技术系
参考文献:
[1]罗先录.IT类专业实践教学的三个层次[J].计算机教育,2007(18):14-15.
关键词:应用型本科;分层次教学;软件测试;教学改革
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)24-0169-02
一、软件测试行业现状
近年来,我国IT软件产业呈现迅猛发展的态势,但是由于许多国内软件企业存在着“重开发,轻测试”的倾向和认识的误区,往往导致在软件开发工程师开发出一个软件后,却没有一个好的软件测试工程师对软件项目进行测试,从而导致所开发的产品出现质量问题,这也从侧面突显了我国软件测试人才的极度匮乏。国外IT企业中的软件测试与软件开发人员的比例一般维持在1∶1左右,而在国内的一些IT企业中,这一比例却仅在1∶4~1∶5之间。因此,高校如何培养符合社会需求的大批高质量软件测试人才,如何尽快建立软件测试人才的系统培养机制,进而保障软件业的健康化发展,已成为现阶段应用型本科院校人才培养极为艰巨和紧迫的任务。
二、软件测试课程的现状
当前,《软件测试》课程已从隶属于《软件工程》课程单独一章的内容发展成为软件工程专业中一门独立、必修、核心的课程,甚至有些学校已经单独开设了“软件测试”这一专业。笔者结合近几年的教学情况,总结了该课程中尚存在的若干问题。
1.授课内容陈旧,理论知识多、枯燥。随着软件开发技术的发展和进步,当前软件测试领域不断涌现出新的测试理论、测试技术、测试方法及测试工具,如:敏捷开发所引起的敏捷测试技术、探索式测试技术及快速迭代测试技术,不断普及的自动化测试催生了大量自动化测试工具的产生及应用,等等。而反观当下大多数与软件测试有关的教材及参考书,绝大部分仍以传统而深奥的理论知识为主,同时辅以传统的测试模型及测试方法的介绍,缺乏案例教学及项目驱动教学的实例,授课内容多,一个学期的课时往往不够安排,教与学的过程都显得极为枯燥乏力。
2.缺乏良好的实训平台,实验内容与理论知识难以结合。软件测试按不同的标准可分为不同的类型,如图1所示。这些不同类型的测试在理论课上往往都会涉及到,但在实验课上却难以一一展开,尽管安排了“2+2”的周课时(即每周2节理论课+每周2节实验课),但由于受限于实验案例的选择、机房上机环境的配置、缺乏良好的实训平台及学生基础参差不齐等原因,实验内容与理论知识始终难以结合。
3.“重开发,轻测试”的思想普遍存在,学生疲于应付考试,死记硬背多,考完即忘。软件测试是一门综合性强、涉及学科领域多的课程,学生普遍缺乏具体认识,大多存在“重开发、轻测试”的心理,认为只要能把系统开发出来,做不做测试都无关紧要。这也导致学生对这门课的学习不够重视,期末考试也是疲于应付,对一些基础知识甚至是软件测试领域中的常识问题,不注重理解,死记硬背,其结果必然是背得快、忘得也快。基本考核结束之后,所有的知识点也都还给授课教师了。
三、分层次概念的提出
“分层次教学”的思想源于孔子提出的“因材施教”。目前“分层次教学”的思想在高等教育领域尚处于探索与研究阶段,为适应社会和经济发展对工程创新型人才的需求,龙岩学院信息工程学院积极推行“应用型本科人才培养模式改革与实践”的人才培养方案,不断在专业培养方案、教学模式、课程体系及教学方法和手段等方面进行创新和变革,以期提高教学效果和人才培养质量。软件工程专业在上述大环境下,根据自身特点和社会市场对软件人才的需求,对课程体系进行重新调整,并按照专业能力分阶段、分层次的培养目标,运用宏观调配的方法对课程体系各知识模块进行整合与优化。
四、拟采取的措施
《软件测试》课程是软件工程专业的一门专业核心课,是培养学生软件测试理论、技术、方法和能力的重要课程,同时,软件测试也是当前IT行业最热门和紧俏的职业之一,是保证软件产品质量、提高软件可靠性、降低软件成本和风险的重要手段。基于此,《软件测试》课程必须在教学内容和教学方法上及时调整和更新,使课程建设与学科建设紧密结合,既要满足软件业对软件测试人才的需求,又要保证软件工程专业中各知识模块之间的系统性和完整性。本节以下内容将详细描述此次分层次教学改革中所采取的措施。
1.对学生分组。笔者所在学院软件工程专业,一直采用“3+1”的教学模式,软件测试课程开设在大三上学期(相比其他院校,开设时间提早了一个学期),学生经过大一、大二两学年专业基础课及部分专业课的学习,基本能找到自己的学习兴趣并定位自己的学习方向,如:有学生对某门程序设计语言,即编程感兴趣,有学生对嵌入式开发、物联网感兴趣,当然也有学生对软件测试行业感兴趣,等等。结合学生自己的兴趣及学习情况,对学生进行分组,主要分为三类,其中:I类――基础了解类;II类――一般测试类;III类――测试开发类。
2.实施不同的措施。根据课前对学生的上述分组,对不同层次要求的学生,实施以下分层。
(1)理论教学内容。结合前文第2节所述软件测试课程教学中存在的问题,将理论授课内容进行调整后主要分为以下四个部分:①软件测试基本概念篇;②软件测试技术篇;③软件测试过程篇;④软件测试项目实践应用篇。其中①中主要介绍软件测试的概念、分类及软件缺陷等内容,②中主要包含黑盒测试技术及白盒测试技术,③中主要是对单元测试、集成测试、系统测试及验收测试等进行描述,④则主要按测试模型中的不同步骤进行介绍,包括:测试需求分析与测试计划、设计与维护测试用例、部署测试环境、测试执行与跟踪、缺陷报告与质量分析报告等。
对理论教学内容所采取的策略是:I类、II类、III类不同分组的学生,都需要对①、②、③中的内容进行学习;II类、III类学生还需要对④中涉及的内容进行学习;此外,III类学生还需利用课外时间,学习与测试自动化及测试框架相关的知识。
(2)实验教学内容。结合理论教学内容及实验室配置环境等因素,在软件测试课程中所开设的实验教学内容主要有:①测试之初体验(在没有任何测试基础的情况下如何进行测试);②黑盒测试;③白盒测试;④单元测试;⑤功能测试;⑥性能测试;⑦系统测试。
对实验教学内容所采取的策略是:I类、II类、III类不同分组的学生,都需要实验的内容是:①、②、③、④;II类、III类学生还需要对⑤、⑥部分进行学习和实践;此外,III类学生还需利用课外时间,学习并实践⑦的内容。
(3)考核方式。为避免学生应对考试死记硬背的现象,将期末总评的成绩按以下标准进行:总评成绩=考勤×10%+期中×20%+实验×20%+期末×50%,即适当降低期末卷面分数的比例,提高期中及实验成绩比例。鉴于学校教务处要求,期末考试依然采用统一的试卷,但期中考试则根据不同层次的学生采用不同的试卷进行考核,实验部分的成绩也依据不同层次学生的不同表现进行评定,且要充分利用分层的优势进行考核。
3.成效。此次教学改革的受益对象主要是我校2012级软件工程共计109位学生及2013级软件工程共计106名学生。对于I类层次的学生,除了学习了软件测试基础知识之外,他们还能将学习的重心放在自己感兴趣的其他科目上;对于II类、III类层次的学生则对课本及课外知识都进行了学习,这为他们毕业之后的职业发展奠定了良好的基础。
五、结语
教学改革任重而道远,非一朝一夕能成。未来还需努力的方向在于:①引入更多的案例进行教学,丰富实验课堂;②进一步完善针对本校不同层次学生的《软件测试》课程实验指导书;③给学生加以更多职业规划方面的辅导,为当今社会IT行业中培养“全面软件测试工程师”而努力。
参考文献:
[1]余久久,张佑生,傅廷亮.软件测试课程教学思考[J].安庆师范学院学报(自然科学版),2013,19(4):121-126.
[2]毛强,彭振生.大学物理课程分层次教学改革初探[J].巢湖学院学报,2009,11(6):137-139.
国家示范性软件学院的一个重要职责就是要在教学研究、教学实践以及教学改革方面进行大胆的探索和实践。因此,在完善已有课程体系及授课的同时,应该充分利用优秀的教学资源,总结教学经验和科研成果,编写专业教材,力争探索出一条为国家快速培养高素质软件工程人才之路。
北京工业大学软件学院蔡建平教授长期从事软件工程、软件测试及软件质量保证的研究,在多年讲授软件测试课程经验和体会的基础上,对软件测试课程教学内的知识点进行调整、补充和完善等方面的改革,针对软件质量评价和软件高可靠性的要求,针对国内软件研发和测试外包的本地化要求,以及针对软件测试用于各种应用领域的要求选择授课的知识点,并取得了较好的效果。
目前国内关于软件测试的书籍较多,其中很多书籍是翻译的、为培训用的或介绍软件测试技术和方法,作为教材满足各类测试人员的学习还有一定的距离。本书是在作者长达二十几年软件工程、软件测试和软件质量保证实践经验和教学经验的基础上,借鉴前人成果,参考当前软件测试方法和技术应用实践案例进行编写的。蔡建平教授编写的《软件测试大学教程》一书,以现代软件测试需求为背景,以现代软件测试技术和方法为基础,以当前软件测试通常应用为典型实例,从软件危机及软件缺陷开始,全面介绍软件测试的基本概念,软件测试的技术、方法和工具应用,以及软件测试在当前主流应用中的具体开展和实施。
其特点如下:
(1) 内容全面。突出全生命周期软件测试概念、软件质量分析手段、现代软件测试技术、主流测试工具应用以及典型应用测试方法等,帮助学生了解和掌握现代软件测试的各种原理、方法和技术,并能够选择合适的软件测试工具进行相关测试。为培养学生今后成为高素质、专业化的软件测试人才打下基础。
(2) 针对性强。针对软件开发方法和技术的发展变化,针对我国软件外包服务的蓬勃兴起,针对我国国防工业如航空、航天、船舶、电子、通讯等大量重要软件或关键软件的实际应用情况和测试需求,特别是对软件高可靠性的要求,选择教材的知识点。
(3) 重实践性。该书对支撑现代软件测试技术应用的测试工具进行了全面地介绍,特别是对开源软件测试工具的介绍,这对高校开设软件测试实验课程是非常有意义的。在教材中给出了软件测试在几个典型应用领域具体实施的要点和注意事项,这对缺乏实践经验的培养对象而言具有极好的引领作用,对开阔软件测试人员的眼界、思路和具体实践有很大帮助。
(4) 具前瞻性。书中不少内容取材于互联网,在一定程度上体现了软件测试技术的最新发展,具有较强的新颖性和现代性。
关键词:软件测试;企业需求;教学方法
中图分类号:TP311.53—4 文献标识码:A 文章编号:1007—9599 (2012) 14—0000—02
随着软件产业迅速发展,软件产品的质量成为人们共同关注的焦点,软件测试的作用和地位越来越显得突出,它是软件产品质量控制的具体实现环节及其根本保证[1],社会对软件测试人才的需求量剧增,对软件测试人员的综合素质要求也越来越高。
但由于我国的软件测试技术起步比较晚,并由于主客观方面的种种原因,在大学计算机教育中,软件测试教育存在很多问题,无法达到《软件测试》课程教学的目的和要求,也无法满足业界对软件测试人才的需求。
一、教学现状
在目前的教学环境中,虽然《软件测试》是一门理论性和实践性都很强的专业课,但大多数院校在教学过程中,仍会忽视强调测试理论和相关基础的重要性。在理论教学过程中,不重视测试的基础教学,在培养过程中更多地停留在知识传授,忽视软件测试职业素质的培养,实际上,一个合格的测试人员除了具备测试专业知识外,严谨的工作习惯、良好的沟通能力和团队合作精神也是软件测试人员所必需的[2]。在实验教学过程中,一味依赖教材的理论内容,忽略思考的智力技能培养,所设计的实验内容不符合现实需求,软件测试的实践教学存在同社会脱节。在教学方法方面,传统教学方法形式单一,学生学习兴趣很低,自主学习能力较低。本文针对教学过程中理论教学、实践教学、教学方法三个方面,对软件测试人才的培养总结一些思考和心得。
二、思考和实践
(一)重视并渗透理论教学
重视软件测试课程的理论教学,基础的扎实与否直接影响了能力的可持续发展性。在制定课程大纲时,加大理论课时的分配,使学生从根本上认识到理论在课程学习中的重要性,不再简单的认为软件测试只是简单的“点击”等操作,而是一门对思考和逻辑要求很高的课程。好的软件测试人员拥有高敏感能力,高发散能力,高分析能力,而这些都是以扎实的理论基础为前提的。并在教学过程中,不仅仅以教材为理论传授基准,应结合项目中的实际测试场景和案例,加深对各个理论点的理解和运用,以树型结构串联零散的知识点,注重知识的内部体系结构,使学生系统的掌握测试的理论知识,锻炼思维发散和思考能力,从而引导学生对知识和技能进行举一反三、触类旁通的迁移。
将软件测试的思想深入广泛地渗透到所有的专业课程中。例如在各类程序设计语言基础课程中引入单元测试的思想,在软件工程课程中,强调软件测试的重要性,增强软件质量管理意识,在面向对象的分析和设计课程中,强调测试和开发并行并重的思想[3]。
(二)以企业需求作为实验教学的目标
1.以企业项目为教学内容
在传统教学中,软件测试实验的内容通常只单纯的利用教材上介绍的不同测试方法来“设计”实验,所设计的实验内容泛泛化,不仅不符合企业的需求,而且不符合项目测试中的完整性和规范化。在实际工作中,一个项目中所涉及到的测试技术和方法,以及这些技术的重难点,都很难在现有的实验教材中得以体现。而以项目为实验教学的方法,是以企业的需求和实践流程为出发点,在实验的教学过程中以项目为主线展开,以测试的流程由浅入深,把相关知识点融入到项目的各个环节中去,将项目完整的进行剖析,循序渐进[3]。
2.重视文档和流程
在企业的实际测试工作中,文档是非常重要的。我们以一个符合现实性的完整B/S模式的“图书管理系统”作为测试案例,该项目涵盖课程的主要知识要点和基本技能,项目大小和难易适中,提供给学生系统的代码、需求分析、概要设计书、详细设计书等必须文档[4],只有具备以上资料,才可真实的模拟实际工作模式。通过文档,使得学生明白所测软件提供什么功能?是否符合用户的需求,设计是否合理,结果与设计是否一致,通过文档,使得学生一边熟悉系统一边思考软件研发者在设计过程中的遗漏点。文档,不仅是测试人员与开发人员之间沟通的直接桥梁,而且这种彼此的不断沟通以及思考,直接影响了软件测试的最终质量。同时,除了以项目为教学的基本单位,并强调文档在项目中的重要性,还要严格按照工作中的实际情况,将学生分成若干个项目组。项目组分别设置测试经理、测试负责人、测试组员等角色,各尽其责。这种强调文档,各尽其责的项目教学方式,更加符合企业的实际需求,并有效锻炼了学生的团队合作能力。
关键词:项目;软件测试;黑盒测试
随着软件产业的发展,软件测试被越来越多的软件企业重视,很多软件企业还设立了专门的软件测试部门,对软件测试人员的需求量非常大,而真正能符合软件测试的人员却很短缺。所以,软件测试技术作为高职软件技术专业的一门专业课程,教学模式的改革势在必行。传统的软件测试课程以测试的理论知识为主,忽视了软件企业中真实测试岗位的要求,造成课堂教学与测试岗位需求的不一致。本课程以企业软件测试工程师作为主讲教师,将企业中实际测试项目作为教学项目,为学生提供个尽量真实的软件测试环境,让学生真正参与到测试中来。通过学习该课程,让学生了解软件测试的基本过程,掌握单元测试、功能测试、系统测试的一般步骤和方法,并能够进行相应测试。
1 测试项目的选择
在基于项目的课程设计中,测试项目设计是一个关键环节。本课程确定以项目作为载体的设计思路后,选取企业中实际测试的项目作为教学项目,这样的项目既有在企业中应用的普遍性和典型性,又能有效地促进学生职业能力发展,达到本课程的教学目标。在本课程中选择“能力验证样品软件”作为测试项目。
2 测试项目的实施
2.1 测试环境的搭建
在软件测试企业中,测试人员作为软件项目开发的一分子,为了及时、有效的与程序设计人员进行沟通,通常应用BugFree来实现缺陷管理。BugFree是基于PHP和MySQL开发,免费、开源的缺陷管理系统,通过该软件能很好的协调开发人员、测试人员和需求三方的关系,规范软件的研发流程。
2.2 测试小组的确定
在项目测试过程中,以教师引导、学生自愿为原则,每五人组成一个小组,每个小组的总体能力、水平相当,并保证每个小组至少有一名组织能力较强的学生作为组长,负责协调教师与学生、小组成员之间以及小组之间的关系等工作。测试组成员一起讨论本组的测试计划,根据软件的需求规格说明书,制定详尽的测试计划,一起搭建测试环境,同时测试组长对测试小组成员的工作进行分工,测试组长负责本组测试的全面工作,并且严格地按照测试计划执行。
2.3 测试的执行
(1)测试项目引入。在测试开始前,教师演示预测试项目,并对照“需求规格说明书”,明确此次测试的任务:完成对系统的功能测试,并通过BugFree来实现测试用例的管理和缺陷的管理。任务实施前,教师先演示一个缺陷的查找过程,让学生看到真实的“缺陷”,从而产生跃跃欲试的感觉。然后让学生在没有掌握查找缺陷的方法情况下,用自己的常识进行缺陷的查找。
(2)黑盒测试知识的导出。黑盒测试的两个关键技术:等价类类划分法和边界值分析法。等价类划分法是一种重要的、常用的黑盒测试方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。边界值分析法通常是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
(3)在理论知识的指导下进行缺陷查找。在黑盒测试理论的指导下,科学、有效的进行测试用例的设计。为便于学生的学习讨论和测试用例设计,课程教学直接在有职业氛围的软件技术实训室进行。
(4)考核标准和考核方法。该课程的考核重点放在了对学生学习过程的考核上。每个任务都有明确的考核标准。待学生完成任务后,教师对学生完成的任务成果进行点评,并对任务的完成情况进行总结。作为该部分教学,会让每组同学展示其缺陷列表,通过查找到的缺陷的数量和级别作为评判标准,同时结合平时表现,综合给出项目任务的成绩。最终的考核评价成绩由4个部分组成:平时表现10%,每次完成项目任务的情况25%,课程实训25%,综合技能考核40%。
3 项目教学的效果
3.1 采用项目教学法,提供学生专业技能
项目教学是指学生在教师的指导下完成一个典型项目的过程,在项目完成过程中学习知识和技能。学生通过解决在项目中遇到的问题,提高了学习兴趣,调动了学习的积极性和主动性。项目教学注重的是完成项目的过程,而不是最终结果。
3.2 采用分组教学法,提高学生团队意识
在教学过程中,我们把班级同学分成若干个项目组,每个同学在小组中担任不同的角色。
3.3 采用企业管理模式,促进学生零距离就业
通过校企合作,将企业的运行模式引入到课堂中来。请企业里有经验的软件测试工程师作为主讲教师,将企业里有代表性的真实项目作为测试项目,并搭建企业中的测试环境,让学生尽可能多的融入到真实的测试环境中,从而促进学生零距离就业。
[参考文献]
[1]朱雷.软件测试技术课程项目式教学的探索与实践.辽宁高职学报,2011年第9期,52-54.
关键字:服务区经济;软件测试;课程建设
1市场需要和目前现状
随着IT技术的发展和普及,我国软件行业对于测试专业工作人员的需要超过20万人。但是目前我国本科的课程中大部门都没有专门的建设软件测试的课程,仅仅只是作为软件工程中的一个要点被简单地学习,学生在学习过程中普遍重视开发,轻视测试,进入测试行业的人数非常少。高职学院很多都在后期单独建设软件测试的课程,但是由于学时还很少,总的来说,学生经过课程的学习,虽然能够基本掌握软件测试的基本含义和理论,了解基本的测试技术和测试的方法,但是能够真正使用到技术分析和在实际岗位中使用的专业能力还是不足。
目前我国很多软件企业的总人数在50人以下,达到70%。很多没有成立专门的软件测试相关部门,这些中小型的软件企业都希望使用有工作经理的软件测试工作人员直接工作。很多社会上的培训机构,在市场经济方面非常重视,这些机构一般会开设将近210节课时的课程,学生大部分都是还没有找到工作的应届毕业生,主要老师都是曾经在相关电信、证券、金融行业负责过软件测试的负责人,有很多机构在课程接收后可以推荐学生就业,很多中小型软件企业也愿意吸收。但是,这类培训机构很多价格都非常高,而且培训机构数量众多,质量无法得到保证。
2目前存在的不足和对策措施
目前高职软件测试技术课程建设中存在的不足还有很多,下面进行简单的分析研究。
2.1教材不完善
目前我国面对高职院校的软件测试教材还很少,内容还不完善。近年来出版的基本相关教材都是对软件测试的基本概念、理论和使用知识进行详细的讲解,但是还存在着很多相同的问题:(1)没有大型集中项目的功能、性能测试实际事例的全过程,没有把比较分开的知识要点和主要技能综合起来进行分析研究。(2)在实现技术操作上比较重视,但是在文档工作上的重视度不足,对于这一点,可以增加怎样编写“测试计划”和“测试报告”的模板,并且给出测试的记录和日记模板。同时,还可以编制出软件测试工作中根据经验得出的工作经验,比如软件测试的十条标准、十大经典事例等。这些经验都非常实用,如果进入工作岗位中就可以马上使用。(3)在现在的教材中关于测试工具的使用方法都是来自产品的使用说明书上的内容,很难让学生产生学习兴趣。在教材的编写中,要以学生的角度来编写,在实践指导上多重视,让学生能够在最少的实践中熟练掌握和应用测试技能。(4)测试的工具要使用中小型软件企业经常使用的软件,比如在功能的测试上使用Mercuey QuickTest Professional(QTP),在性能的测试上使用Mercuey LoadRunner,在管理工具中可以使用开源的并行版本控制的CVS,使用Test Director或者相同类型的新版工具Quality Center(QC)。在2个极端中要注意:一是避免教材中出现已经在市场中不再使用的工具;二是避免价格高昂的软件教育,比如IBM Rational中的Clear Case,ClearQuest,Functional Tester,Performance Tester,虽然这些软件的性能比较好,但是在市场中的使用率很低,只有成熟度能力CMM高的大型软件才能使用。
2.2教师队伍建设
高职院校在软件测试的教育中,经常使用事例教学和实际的项目结合到课程的教育和设计里,它是经过一直的累积和创新,主要存在在教师头脑中的知识,所以,提高教师本身的知识量明显比提高在教材上的知识更加重要。提高教师知识储量,让教师有终身学习的良好素质,在教育和教学的发展中,要更加加深教师对于教学中专业经验、教学理念和方法的反省,不停探索学习相关专业知识。
从封闭的知识变为开放的知识,目前知识的更新速度非常快,教师也要在软件行业的前线,了解行业的发展情况,把目前市场中的最新技术和理念带到课程中,让学生的学习课程和市场统一。教师的自身知识水平需要不断的扩充和提高,让自身的知识能够形成一种开放的、动态的模式,进行自我的调节和管理。而且教师应该走在行业的尖端,或者参加相关企业的项目研发,获得行业资格证,这也是提高师资队伍水平的有效方法。
很多软件企业的测试人员都有着丰富的项目实际测试经验,是知识的应用和创新中最有效的资源。如果在条件允许的情况下,可以邀请他们来学校兼职进行教育授课。同时,可以使用提高学习的有效方法来深入研究其成果共同学习。共同学习是在目前技术系统中的创新改革,在信息、知识、技能中间建设共同进步、共同学习的关系。让双方可以在学习的内容中和学生进行有效的互动。在信息的结构上,要提高信息的聚合制度。总的来说,就是加深交流,综合信息,共同写作,合作创新,产生一种共享知识的形态。
2.3改进教学方法的对策措施
课程应该建立在一个知识充实的职业技能培训制度中,使用新型的“场景教学方法”。用实际的工作内容作为主体,使用项目方向的角色模拟形式,提出“以实用为基础,学以致用”的教学观念。把实际中的经验作为主要的指导,使用任务驱动的方法,加强实际的测试技能学习,给一些企业进行测试项目。
2.3.1工作场景
这是企业的实际操作过程和工作的场景,使用已经开始使用的需要测试的资料和代码,开始项目的分析和工作分解,模拟出企业在测试工作中的环境。
2.3.2主导项目
所有的学习点和方法都是经过一个或多个项目结合的。学生经过可以扩充的项目实际例子来进一步学习相关知识和技能。所有的学习都是在进行项目中的实际工作任务,了解在测试过程中经常使用的技术、过程和人员配合情况,并学会运用有关的解决方法。学生使用这种方法可以拥有一定的完成项目的主导能力。
2.3.3模拟角色
学生在真实的动手过程的课程和项目时间上,利用实际的企业项目、实际的工作流程和使用的工作,开始模拟项目中所需的角色。共同完成项目的任务。这样可以了解不同角色需要的工作技能并且积累相关的工作经验。
2.3.4分解任务
在需要完成的整个项目中,对于必须掌握和理解的概念和知识,把一个项目分成多个任务,然后对每一个任务所需要了解的知识、技能以及要求进行逐个的分析讲解。并经过每个小任务的完成的完成方法对整个学习内容进行组织和设计。
2.3.5六步教学
在知识和技能的学习和教育过程中,从特别的到普通的,一般都是根据以下6个步骤来进行学习的组织,分别是:提出问题、分析问题、解决问题、总结相关规律和知识、扩展相关知识和技能、能够解决相关相似的更高级问题。在教学的过程中,为了让学生对于知识的层面和思维方法更加丰富,可以鼓励学生自己解决。经过实际训练课程中的试验,项目的模拟,让学生对于学习具有举一反三的思维,让学生能够更加熟悉地掌握重点技术的使用方法,给日后积累更多的经验。
2.3.6团队合作
在教学的过程中,可以把学生分成几组团队,每一个团队按照课程的教学内容和教师的安排,使用技术分析、讨论,实际使用等方法,完成这个项目中的任务。
2.3.7岗位信息
进行软件测试技术课程学习的都是软件的测试员或工程师,目前市场中对于这类人才的需求非常大。案例库也是一个动态的资源系统,所以可以把网络、报纸、合作单位、专业人员的信息进行结合,一方面可以让毕业生就业问题更加轻松,还能帮助学生了解企业对于工作人员的要求。用在线的方式,帮助毕业生、测试工程师等了解相关的岗位信息,更有针对性。
关键词:软件测试;可靠性;意见
中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2012) 10-0204-01根据研究显示,目前我国的软件公司有专门性的软件技术测试部分的还不到五成,而这五成当中设立专门性质的软件测试技术部门的仅仅不到四成,而有着软件测试工具开发部门的公司则仅有一成。从以上数据显示,目前我国的软件公司不够重视对软件测试工作,其所持有的态度也显得不够重视,我国软件公司成立起专门性的软件测试部门所占有的比例远远不能够满足我国企业的需求,而具备可靠性的软件产品,这必须依赖于在软件测试的各个环节进行把关,对产品进行性能和功能的测试这必须充分依赖于通过软件测试手段达到使用根据测试方案实施,在此基础上对软件测试系统进行维护和设计,分析和评估测试方案当中所能够出现的各种问题。对软件测试用例进行执行之后,并且要做到对故障进行跟踪,使得开发出来的软件产品能够对用户所要求的需求相适应,从而确保软件的可靠性和质量的提高。在进行软件项目的研发过程当中,软件测试具有十分重要的作用,可是由于我国的软件行业起步比较晚,只有像华为、联想、用友等大的软件开发公司具备专门性的测试人才和岗位,没有一定的了解在软件测试当中,而软件测试这个环节国外显得非常重视,如微软公司所从事的重要工作就是对软件进行测试,而且在进行该方面的投入显得非常大。
一、忽视软件测试环节的主要原因分析
通过对软件测试行业当中比较资深的人士进行交流发现,目前我国软件公司对测试环节进行忽视的原因主要为以下几点:
(一)节约资金
由于目前我国的小型软件公司为了对开支进行节约,对软件上线成功运行的瓶颈进行制约的就是软件测试,如果项目是属于中小型,公司就会将软件测试环节耗费资金、力量和时间,在软件测试环节使用项目资金,错误的观点认为后期和需求进行技术支持更好,没有这个必要进行软件测试工作。
(二)没有这个必要性
目前很多软件公司错误的认为开发人员自行测试所开发的程序,通常来说对技术开发的难度比测试技术更高,这就不需要专门性的软件测试人员,开发人员对自己所开发出来的程序进行检查,这就显得更加准确和有效率性相对于外来人员检查。
(三)由于受到思想意识局限
由于对软件测试重要性的理解不够,出现重编码而轻测试的现象,许多人认为程序能够基本运行,客户没有提出软件存在错误,就算成功,没有必要进行专门的测试,但是却忘记了即使现在自己所谓的“成功”,却存在着许多潜在风险。
(四)项目时间限制
随着项目时间的缩短,大多项目经理会把剩余时间给予开发人员,没有多余的时间交给测试人员进行测试,或者说等到项目尾声,给测试人员程序,草草的测试一下就算成功过关,但是他们却没有估算,随着项目的逐渐推进,修改BUG的成本是成倍翻滚,等软件给客户上线后在发现错误去修改,那么耗费的不只是维护费用和人力,丢失的还有公司信誉。
(五)合适人员难求
现今专业软件测试人员供求量很少,具了解,从2009年部分大学院校才正式引进这门课程,而且从这少数人中挑出符合自己公司需要的员工,变的更加艰难。公司挑员工,员工也会挑公司,对于测试人员的福利待遇来说,薪资远远低于开发人员,工作压力却居高不下,所以测试人员对应求公司的眼光也是非常犀利。
(六)组织内的冲突
开发与测试的工作是对立的,经常会有冲突,没错,的确会有。软件测试本来就是给开发人员“挑刺”,使开发人员的进度和工作量增加。有些公司就会认为,软件测试工作对其作用不是特别大,而且事端挺多,很难处理,因此对软件测试印象大打折扣。
二、对软件测试和软件可靠性两者之间关系的认识
要对我国的许多软件公司对软件测试当中的错误认识进行改变,其中最重要的就是从心理意识上去进修认可,使得了解软件测试所具备的功能,深切的理解在进行项目开发的过程当中使用软件测试所带来的重要作用,充分理解进行软件测试对软件的可靠性和质量有着密切的关系,在软件项目的开发流程当中软件测试相对于工程监工的角色,要对潜在和暴露出来的BUG能够及时的寻找出来,使得在软件的开发中初期能够将最高密集度的缺陷进行控制,这样就会使得大幅度的降低进行缺陷修改的成本,目前从事IT行业的人士心中都了解,降低项目的缺陷成本,在公司内部成立起进行软件测试的部门,测试资金就会远远小于缺陷成本,也可以这样说,对软件测试进行科学和理性的看待,不能够局限于现状的要求,要对长远发展进行充分考虑,对公司来说必不可少的就是软件测试工作。
三、总结
笔者立足于客观现实情况来粗略的分析和研究对于软件测试当中的相关知识,传统的作坊式的软件企业,在当今高速发展的高新技术环境下已经遭到淘汰,这就必须要让我国的软件企业能够摈弃原有的思想意识,循序渐进的实施,对于软件测试和软件可靠性两者之间的关系有着清醒的了解,这样才能做到软件企业成长进步。
参考文献:
[1]史济民.软件工程原理、方法与应用[M].高等教育出版社,1990
[2]杜梅,刘丙利.浅析提高软件测试效率的方法[J].科技信息.2011,15
关键词: IT行业;人力资源需求;计算机教学
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)01-0107-03
1 概述
重庆IT行业前景广阔,人才缺口巨大。 “十二五”未,重庆电子信息产业产值将达10000亿元,成为重庆第一支柱产业。万亿级的IT产业将带来80万的人才缺口,其中仅IT人才未来5年内缺口就将达到10万人。但是调查显示,虽然重庆IT行业人才需求巨大,重庆各大高校计算机专业的毕业生就业的数量和质量都不高,原因是重庆地区高校IT相关专业的人才培养不符合市场的需求。因此,深入了解研究重庆IT人才市场需求并以之引导地方高校计算机专业教学是非常必要而且紧迫的。该文对重庆地区IT行业人才需求做了深入调查,并对重庆地区高校计算机专业教学提出了具备一定引导性的建议。
2 IT行业的相关概念
IT行业涉及的内容非常广泛。狭义的理解,IT行业就是各种从事计算机硬件、软件、网络、通信设备及服务等行业。我们把这些从事IT行业的企业称之为IT企业,比如美国的微软、SUN公司、苹果公司,中国的联想、中兴、华为等IT企业。广义的理解,IT行业已经深入世界上的各行各业中,诸如银行、医院、超市等,它们都要依赖于信息及信息系统。计算机软硬件、因特网和其他各种来连接上述所有的东西的网络环境和从事相关设计,维护,支持和管理的人员共同形成了一个无所不在的IT行业。
3 重庆地区IT行业相关企业招聘职位及相关要求
根据调查,以下几种人员是当前重庆地区IT行业需求最旺盛的几种:
3.1 软件工程师
软件工程师是从事软件开发相关工作的人员的统称。它是一个广义的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位,工作内容都与软件开发生产相关。
在对惠普、富士康、仁宝等IT企业的网上的招聘信息以及重庆各大招聘会上来看,软件工程师在所有IT人才需求中的需求量是最大的,占所调查对象的31%左右。其中JAVA软件开发工程师、.NET软件开发工程师和PHP软件开发工程师为企业主要的招聘对象。随着重庆“硅谷”梦想的实现,相信重庆IT行业对软件基础开发方面的人才将会持续增长,处于所有行业的领先位置。
对软件工程师的基本要求如下:
1)熟练运用Delphi、Power、Builder、Ms 开发工具的一种或多种,熟悉Java、C#、PB、Delphi、VB任意语言编程,熟悉SQL Server、Oracle数据库及其开发,并具有两年以上开发工作经验(.net方向);2)理解J2EE系统架构,具有J2EE体系结构模块设计和代码开发经验,熟悉主流开源框架,能够熟练应用Spring、Hibernate、Struts、EBATES等(Java方向);3)具备良好的编程习惯和编写开发文档的能力等。
3.2 软件测试工程师
软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),决定软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时纠错及时更正,确保产品的正常运作。
随着近几年来IT行业的快速发展,软件测试越来越受到一个企业的关注。在很多IT企业当中,软件测试不只是纯粹的挑出软件开发人员在软件开发过程中所忽略的问题和缺陷,它的重要程度与软件开发工作相差并不会太少。实际上,软件测试过程与软件开发过程基本上是并行进行的。
在大多数情况下,通常每两个软件开发人员都会配备一个测试人员。而在一些信息产业发达的国家,开发人员与测试人员的比例达到1:1甚至是以上[5]。从网上的信息来看,重庆现在的软件开发急需5000名软件高级人才,再加上其他的一些软件人才缺口,重庆的软件开发人才缺口将有数万之众。按照每两个软件开发人员配备一个软件测试人员计算,重庆软件测试人员也会有几千上万的人才需求。随着重庆IT行业的不断成熟,对于软件测试的要求也会越来越高,相信在未来很长一段时期内,软件测试人才需求量将会出现上升趋势。
3.3 系统集成工程师
系统集成工程师又称为系统集成项目管理工程师。是指进行数据库的安装和维护、进行数据平台的安装、配置和使用,各种应用服务器的安装和配置的人员。
目前市场招聘系统集成工程师的要求如下:1)熟悉企业多层交换网络、各种路由协议、广域网等基础知识,熟悉网络安全及常见防黑技巧,有系统集成方案撰写能力;2)熟悉操作系统(Windows、Unix、Linux),熟悉Oracle等数据库的优化及常规维护;3)能够对计算机硬件故障方面进行检测,并维护的能力。
3.4 网络工程师
网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员。网络工程师从事计算机信息系统的设计、建设、运行和维护工作。
招聘网络工程师的要求如下:1)2年以上网络管理工作经验,具有CCNA、CCNP、MCSE、CISP或CISSP等证书者优先;2)熟练掌握网络体系的基本结构,实际组网建设的设计和实施;3)深层理解网络操作系统以及各种网络应用技术和服务机制;4)熟练运用网络设备的软硬件配置及管理的各种命令和参数。
3.5 3G技术开发工程师
第三代移动通信技术(3rd-generation,3G),是指支持高速数据传输的蜂窝移动通讯技术。3G服务能够同时传送声音及数据信息,速率一般在几百kbps以上。3G是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。3G技术开发工程师就是从事3G相关行业的技术开发人员。
从调查资料显示,重庆在3G网络方面,面临着专业人才的严重匮乏,3G无线软件开发、3G网络规划、Android软件开发以及Windows Phone更是招聘不到相关的人才。
3G工程师的要求如下:1) 必须拥有通信、电子类专业本科以上学历,熟悉移动通信原理及微波通信技术;2) 能熟练使用C或C++语言编程,具有丰富的数字电路设计或硬件开发工作经验,或者具备CDMA、GSM或TD-SCDMA、WCDMA等手机软/硬件开发经验等。
3.6 Android开发工程师
Android工程师是指从事Android移动应用操作系统、游戏和各种Android平台功能的应用、开发和测试的技术人员。以手机开发为主要对象,包括Android应用软件开发工程师、Android游戏程序员、Android网络游戏程序员、Android软件移植工程师、Android嵌入式设备软件开发工程师、Android游戏开发工程师、Android网络游戏开发工程师等。
目前Android市场正在如日中天的扩展,据市场研究公司IDC最近研究报告称,预计今年中国智能手机市场在全球市场上所占份额将会从去年的18.3%上升至26.5%,可以预测将来会有更多的用户选择Android系统的手机或是无线终端设备。
随着Android平台的扩张,引发了Android人才荒,2011年移动开发人才需求几十万,未来人才需求缺口将达百万。但符合条件的Android工程师屈指可数,在未来几年内,Android开发工程师将成为IT行业炙手可热的岗位之一。
4 对学校教育的建议
根据上述调查数据,目前重庆的IT行业迫切需要一大批的IT专业人才。这对于IT人士和IT行业相关的学生来说,是一个非常好的机会。但是,市场需求与高校计算机专业毕业生具备的专业素养之间差距不小,结果是一方面是企业求才若渴,一方面却是毕业生就业困难。该文根据调查分析,针对学校现有的IT相关专业教育提出一些建设性的意见。
4.1 根据社会需求,定期更新专业课程体系
IT行业是一个日新月异的行业,对人才的需求也随着产业的发展的不断变化,高校计算机相关专业对人才的目标也应随之定期更新,学生才能更好的适应市场的需求。从当前学校的教育来看,大部分的高校在进行专业课程体系的设置上比较落后,跟不上社会的需求。上文列举的目前市场紧缺的人才,除了较为传统的软件工程师、网络工程师、系统集成工程师外,其他近几年兴起的软件测试工程师、3G技术开发工程师、Android开发工程师等职位,大部分高校均未设置相关课程。高校计算机专业应该定期追踪社会新需求,并及时开设适应需求的课程甚至新专业。这一方面有利于满足社会需求,一方面可以促进高校毕业生就业质和量上的提高。
4.2 加强实践能力的培养
从用人成本考虑,绝大部分企业希望所招聘人员具有较强的实践能力和项目开发能力。如果学生实践操作能力不强,上岗后对所在职位的适应时间就会相对而延长。高校课程设置应该大力加强实践课程所占比例,在注重学生学好理论知识的同时,也要注重学生实践能力的培养。在课程中可以引入真实的IT项目,培养学生项目开发的能力;并提供学生自己动手开发项目的平台,使学生能将理论知识应用于实际项目的开发。这样不仅有利于学生加深对理论知识的理解,同时增加了学生的实际项目开发经验,为以后的工作打下坚实的基础。
5 总结
重庆IT行业的人力资源框架越来越成熟,IT工作人员的薪资水平也处于各行业的领先位置,重庆现在及未来对IT专业人才的需求量巨大,重庆地区高校应把握机会,适时改革IT相关专业人才的培养教学,更好地促进重庆信息工业的良性发展,更好的促进相关专业高校毕业生的就业。
参考文献:
[1] 李利东.IT人才需求新增70万[N].重庆人民政府网,2010.1.27.
[关键词]软件工程;案例库;教学模式;可扩展实践平台
[前言]我校软件工程课程群包括“软件工程”“软件系统分析与设计”“高级软件工程”“面向对象设计方法”“软件测试与质量控制”等多门课程,面向本科生、硕士研究生、博士研究生和任职培训等多个层次,课程门数多、内容交错、衔接紧密,培训要求差别较大。为使软件工程系列课程更好地服务于提升学生工程实践能力和协作创新能力的培养目标,我们积极开展实践平台和案例库建设,进行教学方法改革等。通过设计不同粒度、不同类别的案例,构建软件开发全过程案例库,以适应多层次多类型教学任务;在教学过程中融合基于案例的情景体验教学、基于项目牵引的工程实践教学、基于角色扮演和团队协作的项目研讨式教学等多种教学模式,使得每个学员都能参与到项目开发过程中,保证了软件工程实践的规范化;同时建立基于框架的可扩展实践平台,学生自主设计开发软件程序,提高了学生的学习兴趣和实践动手能力。
一、对实际工程项目进行提炼,构建软件开发全过程案例库
为了将枯燥、抽象的教学内容形象化、实例化,案例教学对于保证软件工程课程授课效果至关重要。案例教学与传统的讲授式教学存在较大不同,传统的讲授式教学主要是教员向学生传授知识,沟通的渠道是单向的,而案例教学不仅有教员与学生之间的沟通,还有学生之间的沟通,沟通的渠道是多向的。同时,讲授教学侧重理论,并通过演绎推理来传授知识,案例教学则侧重启发式教学过程,引导学生主动参与到课堂教学中,更注重实践与理论的结合。因此,探索软件工程类课程的案例式教学方法,总结、提炼、归纳、设计相关的教学案例,构建一个贯穿始终、设计合理、资源丰富的软件开发全过程案例库十分必要。
(一)案例的选取和设计
在案例教学中案例的选取和设计是案例教学的关键。好的教学案例应该来源于实际工程项目,同时在维度、粒度和内容上精心设计,既要相互衔接,体现生命周期全过程的要求,又要大小适中,适合单个教学模块的教学需求。从实际工程项目中精心选取、提炼、设计开发涵盖软件分析、设计、测试、项目管理等全生命周期的教学案例库,可为软件工程系列课程的案例教学提供有效的支撑条件,对课堂教学效果的提升起到极大的促进作用。
案例的设计应针对软件工程课程群各模块知识点的所处阶段、应用场景和授课目标的差异,既要有覆盖具体知识点的基本案例,又要有体现全生命周期工程化要求的系统案例和综合应用案例。案例内容包括软件过程中的工程案例、管理案例,贯穿全软件生命周期各阶段。
案例的选取应以全生命周期软件项目为主,从实际工程项目中挑选一批具有代表性的、能突出授课要求的素材,在此基础上进行加工提炼和补充开发,最终构建满足教学要求的系列案例。如从自主研制的“软件过程管理平台”中选取典型模块作为测试对象,针对不同测试类型的教学实验需求,对软件代码进行有针对性的变异和缺陷注入,编写对应的测试需求、测试计划、测试设计和测试报告,形成功能测试、性能测试、单元测试等测试案例。
软件工程课程要强调软件设计和软件测试的重要性,对软件设计和软件测试方法进行讲解时,除了要有设计合适的案例,还可以通过当前主流工具(如软件设计的RationalRose建模工具、单元测试的JUINT工具、功能测试的QTP工具等)的演示,使学员加强对软件设计和软件测试过程的可操作性的理解,并将其运用于实践项目中。
(二)案例库规范化设计
软件工程课程群的多门课程需要多样化的案例,适用于不同的场景,映射出不同的知识点。为了规范这些案例,需提取其公共要素,定义案例库规范化设计的基本元素。
案例库规范化设计基本元素中的“案例表现形式”可将案例设置为文档、代码框架、原型系统等。如在本科生的软件系统分析与设计课程中,案例是为学生搭建的一个OpenFrame框架,即一个半成品的代码框架,学生可从半成品框架中学习相应开发技术,然后自己完善半成品的代码框架,将学习与实践过程融入案例中。
案例库规范化设计基本元素中的“案例类型”可分为工程类案例、管理类案例、支持类案例等。工程类案例包括不同项目不同阶段的工程类开发案例,如客户需求规格说明书、软件需求规格说明书、概要设计说明书、详细设计说明书、软件代码、软件测试计划和测试报告。管理类案例包括项目策划、项目监控、风险管理、需求管理等。支持类案例包括配置管理、质量保证、测量分析等。根据案例的规模及适用情况,可将案例分为:基本案例、模块案例、系统案例。基本案例覆盖一个知识点,简单、清晰地通过一个实例展现知识点的具体应用,适合于基础理论知识传授阶段;模块案例覆盖多个相关联的知识点,通过知识点的综合应用将知识串起来,适合综合理论知识的应用阶段;系统案例覆盖的是一个独立的理论体系,通过完整具体的实例将理论应用于实际操作,适合实践教学阶段。
例如,在“软件测试”中,通过判定三角形的例子来让学生理解等价类划分法,这是一个基本案例,穿插在知识点讲授过程中。在三角形实例中补充边界值法、错误猜测法等测试用例,形成黑盒测试案例,这就是一个模块案例。而系统案例内容多、设计比较复杂,例如功能测试案例的设计,要包含测试计划、测试策略、测试设计的方法、测试用例的生成、测试用例的执行、自动化脚本的设计、测试运行结果分析以及测试报告等内容。
二、融合多种教学形式,紧密衔接理论和实践教学
传统的课堂教学教员在课堂上讲授软件工程方法、技术等理论知识,但由于这些理论较抽象难懂,课堂教学效果往往不理想。传统的实践教学主要是采用分组模式进行项目开发,但由于没有过程监督控制,通常是由一个能力稍微突出的学员完成所有过程,缺乏讨论、协作,最后往往把精力放在代码实现中,提交一套漏洞百出的代码。针对软件工程课程的特点,笔者结合本校人才培养目标和先进教学理念,对传统教学方法和手段进行改革,在教学过程中融合、应用基于案例的情景体验教学、基于项目牵引的工程实践教学、基于角色扮演和团队协作的研讨式教学等多种教学模式,加强了理论教学和实践教学的耦合度,培养学生工程化理念和团队协作意识,提高了学生探索问题、分析问题和解决问题的综合能力。
(一)基于案例的情景体验教学模式
案例教学法从实际案例出发,分析其中存在的问题,探索问题产生的根源和解决问题的过程与方法,用案例将理论和实践联系在一起,并逐步上升到理论,用理论来概括、归纳、指导一类问题的解决方法。同时,以鲜活生动的实例吸引学员,提高学员学习的兴趣,使他们从案例中吸取成功经验和失败教训,加深对理论的理解。在实践教学中,我们以“做中学”为指导,以实际案例项目的生命周期为主线,通过搭建的实践平台和设计的实践项目,使学员在解决具体问题的过程中加深对理论知识的理解、技术方法的灵活运用,提高自身的实战素质能力。基于案例的情景体验教学通过借助来源于实际工程的典型案例,将学生置身于特定的工程项目情景之中,给予他们恰当的引导,为他们提供了一个广阔的思维空间和贴近实战的学习环境。
(二)基于项目牵引的工程实践教学模式
基于项目牵引的工程实践教学,将工程项目与软件工程知识体系有机融合,以工程项目为牵引,让学生在学习理论知识的同时,同步开展生命周期相应阶段的各项任务实践,实现了创新实践与工程认知导引相结合的教学模式。首次上课要求学员分组,各组自主选择感兴趣的项目,后续根据授课进度按阶段完成该项目的整个开发过程。为了提高学生的实践兴趣和做足需求分析,选取项目时,应尽量选择贴近学生生活、需求场景熟悉的项目,如公差勤务系统、图书馆座位管理系统等。如果是从零开始的项目,需要多方面多手段进行软件需求分析,并重点做好软件体系结构设计。另外,选做的项目也可以是已有软件,因为大部分软件开发工作是在老版本的软件基础上进行改进的,已有软件可以是网上开源软件或往届学生留下的作业,要引导学生分析其功能上的缺陷后对其进行改进。通过项目牵引,可使学生在动手实践过程中深刻理解软件工程基本理论知识。
(三)基于角色扮演和团队协作的项目研讨式教学模式
学生以团队协作方式进行项目开发,通过扮演团队中客户、软件需求人员、软件设计人员、编码人员、软件测试人员等不同角色,完成特定任务,并在项目实施过程中及时对项目开发进程和工作产品进行研讨和评审,真正体验一种有序、可控和协作的软件开发过程。描述了软件过程中角色职能及软件开发各阶段的工作产品,并将项目开发活动和项目管理过程映射到课程各知识点,使学员在动态角色参与的项目演练过程中加强对理论知识的理解。
三、针对实践能力培养需求,构建基于框架的可扩展实践平台
软件工程学科课程理论与实践联系紧密,实践教学的有效实施对提高课程整体教学效果具有重要意义。然而,大部分学生系统设计能力较弱,加之课堂教学时间有限,课程内容比较抽象,为了帮助学生更好地掌握所学知识,有效提高其工程实践能力,在现实教学中急需加强学生动手实践环节的时间投入和条件建设。
传统实践教学通常要求学生全程自主完成程序开发并提交相应实践报告。这种“从零开始”的实践教学模式受到学生编程能力、实践学时等因素的制约,难以取得良好教学效果。同时,学生缺乏大型项目的工程实践经验,如果仅以小规模程序为对象开展实践教学,也会严重制约其对软件工程思想的理解和掌握。为此,我们构建了基于OpenFrame框架的开放式教学实践平台,该平台采用当今主流的面向对象技术和框架进行开发,既实现了跟系统结构紧密相关的核心公共模块,又支持学生根据个人兴趣,自主、灵活添加符合接口规范的功能应用模块,从而完成整体系统的开发与设计,有效支持学生根据小组任务分工快速开发上层应用功能模块,协同完成整体系统的设计、开发与集成。该开放式教学实践平台将教师课堂授课与学生情景体验有机结合,使得抽象内容形象化、具体化,同时既能让学生了解到框架技术、敏捷软件开发等面向对象新技术,又能培养学生基于公共体系结构进行团队化工程开发的能力。
通过搭建满足教学需求的实践平台,设计合理有效的实验项目,构建“做中学”的环境,使学员利用有限的学习时间,在实践过程中快速加深对知识的理解,提高自身的素质能力,不断积累实战经验,培养专业自信,提高学习兴趣和实践动手能力。我们鼓励学员在实践中发现问题、分析问题并解决问题,注重学员创新意识和综合素质的培养,将被动的学习转化为主动的参与、实践,引导学员更深刻地体会和理解软件工程全生命周期各阶段的任务、技术和方法。
四、基于项目过程的考核评价方式
考核评价是教学过程中必不可少的环节,针对软件工程课程考核存在着实践考核不足、学习效果测试不及时、考核评价机制不完善等问题,可采用多元考核和评价方式,弱化期末考试成绩,加强过程考核,着重考核项目开发过程中学员思考解决问题的能力。考核包括期末考试和实践项目两部分,期末考试成绩占30%,采用开卷笔试方式,实践项目成绩占70%,采用阶段评审方式对各小组阶段产出的工作产品进行评审,通过学员互评和教师评价相结合的方法确定团队成绩(40%)和个人成绩(30%)。学员分组进行讲解、答辩、成果演示,学员和教师分别对各组进行整体评价,获得团队成绩,个人成绩由组长根据组员在项目开发中的表现以及对项目的贡献大小获得。
五、结语
通过梳理软件工程课程群理论知识点,构建软件开发全过程案例库,并在案例库基础上,对实践教学方法进行研究,融合、应用基于案例的情景体验教学、基于项目牵引的工程实践教学、基于角色扮演和团队协作的研讨式教学等多种教学模式,加强了理论教学和实践教学的耦合度,并构建了基于框架的可扩展实践平台,通过项目牵引和角色扮演使学员将学到的理论直接应用于实际项目开发,培养了学员的工程化理念和团队协作意识,提高了学员探索问题、分析问题和解决问题的综合能力。
[软件工程硕士论文参考文献]
[1]邹红,王健,苏丹.以能力培养为导向的软件工程专业核心课程群建设研究与实践[J].高教学刊,2018(12).
[2]张爱玲,周世生.新工科背景下软件工程人才培养的研究与实践[J].计算机教育,2018(6).
[3]伍春香,刘斌,李小红.基于能力培养的软件工程教学实践[J].计算机教育,2017(8).