软件测试实训总结范文
时间:2023-03-29 08:28:05
导语:如何才能写好一篇软件测试实训总结,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
【关键词】软件测试;工作过程;课程设计
1.课程的定位与教学设计
1.1 课程定位
《软件测试》课程作为软件专业二年级下学期的专业课,它的前导课程是《数据库设计》、《数据结构》、《软件工程实施》,后续课程是课程实训及毕业实习。通过本课程的学习,使学生加深对软件测试基本理论和基本方法的理解与应用,能熟练使用常用软件测试工具,并能运用软件测试工具完成应用软件的测试工作,提高学生对软件的测试与维护能力,并进一步培养学生的的团队协作能力。
1.2 课程设计思路
软件测试是高职计算机软件专业学生在以后的工作岗位上要用到的核心技能。因此,本课程应该作为专业必修课程和核心课程,重点培养学生在以后的工作岗位上所需的职业能力:白盒测试、黑盒测试、自动化功能测试与性能测试。
《软件测试》课程的总体设计思路是,转变传统的学科课程模式,不再以知识传授为主,构建以工作任务为中心的企业培训体系,引入企业项目,让学生在真实的企业项目中完成相应的工作任务,从而储备相关的专业知识,发展职业能力。授课内容重点突出对学生职业能力的培养。课堂上不再单纯地只讲授理论知识,而是围绕实际工作任务的需要来选取,这充分考虑了高职学生动手能力强,理论知识薄弱的特点。
2.教学设计
2.1 教学情境设计
本课程小组通过学院专业指导委员会、重庆亚德科技、重庆大佳、重庆港澳大家等软件公司的企业技术人员进行实际调查,制定了适合高职学生的软件测试课程体系与职业能力,确定了软件测试课程典型的教学情景与子情景,在教学情景中给出具体的工作任务、工作方法以及要求学生掌握的知识与技能等,在教学中贯彻理论实践一体化的教学模式,做到教、学、做三结合,充分体现工学结合的优势,培养学生的职业素质。本课程的5个工作过程及11个典型工作任务如表1所示。
2.2 教材设计
(1)教材应充分考虑软件测试的实践特性,以工作任务为导向,引入必须的软件测试理论知识,让学生在实际测试的过程中,循序渐进地掌握必要的理论知识。
(2)编写的内容要以项目驱动为原则,以企业的实际案例、场景模拟、工作过程录像为载体,增强课后的能力拓展,并根据高职学生的职业能力所需知识的深度和广度来编写,并在具体的工作任务中使学生逐渐形成团队协作意识。
(3)教材应突出软件测试技术的实用性、前瞻性和开放性,不能只是简单地介绍一些技术上的操作,而忽略了软件学生所需的职业能力,在教材中应融入软件测试技术中所用到的新规范、新技术、新标准、新工具、新知识,让学生能系统地掌握软件测试的前沿知识。
(4)教材应充分引领学生主动、积极地去学习,因此,文字表述要简明扼要,内容展现应图文并茂,内容应详略得到。
2.3 教学方法设计
由于本课程的主要教学内容涉及白盒测试、黑盒测试、自动化功能测试与性能测试等操作性很强的教学环节,必须通过课程实训才能达到对项目作规范需求分析的培养目标。具体教学方法设计如下:
(1)全班学生分为N个项目小组,3人一小组,1人任组长,组长要求协调沟通能力比较强。
(2)在教学过程中应加强学生对软件总体的测试能力,采用任务驱动教学,注重以任务引领,提高学生学习兴趣;
(3)组建软件外包中心,引进企业项目,让学生真实地体验在软件公司的测试流程。外包中心作为理论实践一体化教室,达到理论和实际不脱节。
(4)教学过程中可参考软件测试评师考试中规定的知识要求和技能等级职业标准。
(5)教师模拟企业的项目经理,必须具有开拓精神,带领团队完成工作任务,并在完成工作任务的过程中,探索基于工作过程的职业教育新模式,培养学生的软件测试能力,构建软件测试知识体系。
2.4 教学评价设计
(1)突出过程评价,结合课堂提问、实作测试、课后拓展、任务考核等手段,加强实训教学环节的考核,并注重平时考核。
(2)强调目标评价和理论与实践一体化评价,注重引导学生进行学习方式的改变。
(3)每个项目小组在完成课程后,要将所学的内容做ppt,汇报本小组项目完成的情况以及体会。
(4)实行学习过程的过程化考核。平时作业、期中与期末考试均采用上机实训的方式考核,对于不合格者,在团队的协作帮助下持续练习,直至过关。这样可以督促学生不断地练习,真正提高动手能力。
(5)课程的学期成绩=平时作业(10%)+上课考勤(10%)+小组项目测试情况(30%)+小组ppt总结情况(10%)+期末成绩(40%)
3.课程资源的开发与利用
(1)围绕软件测试课程,收集教师和学生必备的软件测试工具,制作适宜教学的多媒体教学课件。
(2)组建软件外包中心,搭建实训工作平台,为学生实训提供真实的工作环境,从而提高其职业素养。
(3)要充分开发网络课程,让学生在课余时间可以自主学习,弥补学生课本知识的不足。
(4)充分利用和开放实训中心,将教学与实训合一,将理论与实践合一,满足学生综合能力培养的要求。
(5)积极利用电子书籍、电子期刊、数字图书馆、校园网、各大网站等网络资源,使教学内容从单一化向多元化转变,通过企业技术人员的指导,课程教师的辅导,使学生知识和能力的拓展成为可能。
4.课程的实施效果
(1)基于项目化的授课内容
建立软件外包中心,引入企业项目内容,软件测试的授课内容紧紧围绕企业项目的典型工作任务开展,学生的能力与素质参照软件测试工程师的岗位要求,让学生真实感受企业环境,就业零距离上岗。
(2)基于过程化的授课方式
老师授课不再单纯地讲解理论,完全按照企业的软件测试流程开展,制定规范的软件测试计划、编写测试用例、利用测试工具测试、编制测试报告,有利于学生养成职业化的学习习惯与工作习惯。
(3)基于理论实践一体化的教学设备
学生在软件外包中心上课以及实验,真正实现了“做中学,学中做”的企业工作环境。
(4)基于能力化的学习评价
学生的评价不再单纯地以理论考试为依据,而是从学生的软件测试专业能力、利用软件测试工具的能力、团队沟通协调能力进行综合地评价。
参考文献
[1]郑泳.基于工作过程系统化的高职《软件测试》课程设计[J].漯河职业技术学院学院,2010(9).
[2]程茂,温静,吴玉洁.《软件测试》课程的教学研究[J].河北师范大学学报,2010(4).
[3]蔡建平.开源软件测试实践教学方案设计[J].计算机教育,2011(3).
篇2
关键词:软件测试;教学改革;人才培养
中图分类号:G64
文献标识码:A
文章编号:1672-3198(2010)03-0237-01
软件测试是保障软件质量的重要环节,随着中国软件行业的不断发展,企业对于软件质量意识的逐步增强,促使国内软件测试人员的地位不断提升,软件产品的质量要求与质量管理正逐渐成为企业生存与发展的核心。为了保证软件在交付使用的时候能尽量完善,大多数IT企业在软件产品前都需要做大量的质量控制工作。作为软件质量控制中的重要一环,软件测试重新显示了它的重要位置。
由于中国高等教育往往落后于企业的实际发展,所以在很多高校重开发、轻测试的思想十分严重。许多学生对测试工作存在偏见,其中对软件测试工作有三个认知误区尤为突出:一、软件测试是软件开发完成之后才进行的,只是软件编码的最后一个阶段。二、软件测试无需具备很高的技能,是没有前途的工作,工作枯燥,不具创造性。三、软件后如果发现BUG就是测试人员的责任。这些认知缺陷导致软件测试人才缺口进一步扩大,影响了企业对测试人员的招募工作,继而影响到中国IT产业的发展。同时,国内软件业因对软件质量控制的重要作用认识较晚,尚未形成系统的软件测试人才需求供应链。因此,高职院校有必要对此进行思考。
1 软件测试课程教学现状
根据各高职院校的专业设置情况来看,目前还没有高职院校设置软件测试专业,因此还没有专门培养专业的软件测试人才的体系。根据目前软件企业对软件测试技术人才的巨大需求,对于以培养满足社会发展需求的应用型人才为办学宗旨的高职院校来说,应该增加软件测试专业的设置和软件测试人才的培养。
目前,虽然很多高职院校增加了《软件测试》课程,但在教学方法上一般采用传统的灌输式枯燥地讲解测试理论和方法,使学生产生抵触和厌学情绪。软件测试是一项专业性较强的工作,它包括许多理论知识并要求测试人员具有一定的工程实践经验,缺少这些知识和经验,测试的深度和广度就不够,测试工作的质量也就无法保证。因此在该门课程教学中需要提供丰富的实例和习题,并且采用实际软件项目的测试案例,增加实训环节,激发学生的学习兴趣,促进了理论和实践的教学,把对学生的应用能力的培养融汇于教学中。
2 软件测试课程教学目标
根据目前软件企业对软件测试技术人才的能力需求,我们给软件测试课程教学制定了两个教学目标:其一,帮助学生熟练掌握规范化的软件开发流程和软件测试理论;其二,能进行一般的软件测试,能编写测试用例,能掌握至少一种软件测试工具。因此,学生应掌握的知识主要包括:(1)掌握单元测试、集成测试、系统测试、性能测试、功能测试等测试方法。(2)熟悉黑盒测试和白盒测试技术。(3)能够制定测试计划和设计测试用例。(4)掌握常用的软件自动化测试工具。(5)能够编写系统测试总结报告。
3 软件测试课程教学改革方案
3.1 修正学子对软件测试的认知误区,提高对软件测试重要性的意识
传统的瀑布模型中,软件项目主要有计划、需求分析、概要设计、详细设计、编码、测试和运行维护这几个阶段。软件测试处于运行维护阶段之前,仅仅是软件产品交付用户使用之前保证软件质量的重要手段。
随着软件业的发展,瀑布模型日益暴露出如下缺点:项目之间极少有反馈,在项目后期才能看到结果,这给经常发生需求变更的软件研发工作产生很多不便,一旦在编码阶段结束才发现设计和需求阶段的错误问题,修复的成本就会很高。因此测试人员应该在项目早期就介入,进行测试需求分析、制定测试计划等。软件测试应贯穿于整个软件开发生命周期的全过程,以保证各个阶段工作产品输出的正确性。这要求测试人员有很好的沟通能力、理解能力、分析问题能力,同时还必须对该软件服务的行业有一定的了解。
教师须结合软件测试的最新趋势,向学生普及新知识,新技术,以引起学生的学习兴趣,扩展学生视野,提高对软件测试岗位的理解,增强学生内在的学习动力,发挥学生的主动精神,将“要学生学习”变为“学生要学习”。
3.2 改革教学内容,强化实践教学,促进理论与实践教学的统一
关注新技术的发展,及时更新教学大纲,在课程内容安排上,注意理论与实践并重,将《软件测试》课程划分为二个模块组织教学。《软件测试理论》课程是理论模块,占60个学时,《软件测试实训》课程是实践模块,占60个学时。其中《软件测试理论》课程涵盖软件测试的各项基本技术和知识,以学生较熟悉的应用背景和业务流程的项目开发和测试实践为主线进行讲解,提供丰富的实例和习题,激发学生的学习兴趣,内容安排上由易到难,深入浅出。为了验证理论,加深对理论的理解和掌握,安排需求分析和软件设计的UML建模、单元测试、WEB系统的性能测试、系统集成测试等实验。软件测试实训需要着重解决的问题是实验的设计,既要考虑满足教学的条件与要求,又要实现与实际测试工作的对接,并体现出软件开发和测试的过程。
理论课和实训课的讲义,由参加了项目开发的专业老师和一些软件公司的项目负责人编写、整理出开发过程的所有文档,包括用例图、用例描述文本、时序图、类图、源代码以及单元测试和系统测试的测试计划和测试用例等。
3.3 建立了校外实训基地, 通过企业实习提高学生的岗位技能,深化教学改革
学生到企业实习是软件测试人才培养的重要组成部分。同学校周边的软件公司合作,建立校外实训基地,让学生在软件开发队伍中从事真正的软件测试工作。学生在实习中不但能亲身体会软件测试在软件开发流程中的作用,提高测试技术,而且可以培养测试人员必须具备的沟通能力、理解能力、分析问题的能力。一名好的测试人员必须能够同软件测试涉及的所有人进行沟通, 具有与技术开发者和客户、管理人员等非技术人员的交流能力,这种能力在课程教学上无法培养的。
让学生到企业实习还可以实现学生的职业能力与企业工作岗位的“零距离”,使学生根据自己的专业特长和爱好选择自己在测试团队的具体方向。掌握相关自动化测试工具的学生可以把自己定位于自动化测试人员,编程功底扎实的同学可以定位于脚本撰写人员,对相关测试中最易发现问题的地方敏感的同学可以定位于手工测试人员。4 结语
软件测试课程的教学难点在于对实践能力的高要求上,我们引入案例教学,营造学生主动学习的氛围,将课内学习和学生兴趣融为一体,切实提高了学生的软件测试能力,当然软件测试教学改革方案还需要不断根据软件技术的发展和学生的特点不断进行改进和调整,需要长期坚持不懈的探索。当前软件测试的重要性已是软件项目成败的关键环节,当它的重要性已经被各家公司提升到一定高度的时候,高校学子们也应该与时俱进,对于有志从事IT岗位的高校毕业生来说,充分了解各个职位的真实情况,对于将来职业的选择和规划都有着莫大的好处。通过对软件测试课程教学改革,可以看到教学效果明显改善。学生的理论课成绩显著提高,毕业设计阶段能够应用软件测试理论对自己的毕业设计进行测试,实验课教学质量提高了,培养了学生自主创新能力。
参考文献
[1]王中凤.开放式实验教学与创新型人才的培养[J].合肥学院学报(自然科学版),2009,(02).
[2]钟元生.软件测试实践教学特色的构建实践[J].电化教育研究,2006,(10).
[3]程宝雷.基于 Rational 的软件测试课程实验教学方法探讨[J].实验室研究与探索,2007,(12).
篇3
[关键词]软件测试 课程体系 教学改革
[作者简介]李静(1969- ),女,陕西兴平人,河北北方学院信息工程学院,副教授,硕士,研究方向为教学设计、操作系统与软件测试;赵志升(1965- ),女,河北张北人,河北北方学院信息工程学院,教授,硕士,研究方向为教学设计、软件工程、数据挖掘。(河北 张家口 075000)
[中图分类号]G642.3 [文献标识码]A [文章编号]1004-3985(2014)02-0135-02
软件测试技术近年来发展迅速,已经成为与软件开发齐头并进的专业技术。软件测试工程师承担产品功能、性能、可靠性、易用性等全方位测试,保证产品质量,满足用户需求,保证企业信誉,是当前IT业界需求量骤升的热门人才。目前我国软件产业在产品功能和性能测试领域仍然存在着严重不足,软件测试的广度和深度已成为影响企业生存与发展的核心问题。培养大量的具备专业素养和高层次技能的测试人才,更好地推进我国测试行业和测试技术的长足发展,是高等院校必须担负的职责。
一、国内软件测试专业教育现状
自2000年软件测试技术在我国兴起至今十余年,软件测试人才随着软件行业的迅猛发展呈现出供不应求的态势。专业的软件测试机构、测试网站及测试技术培训机构等迅速发展起来。目前,国内许多高校已经逐步设有本科阶段软件测试方向的专业。2011年11月,由教育部主办的“2011年高等学校软件测试课程教学论坛”在上海同济大学召开,对国内软件测试人才的培养及测试领域的全面发展起到积极推动的作用。
1.社会培训模式与现状。当前国内业界一些知名网站主要承担起测试人才的培养职责,如51testing、达内科技、北大青鸟等,为测试行业输送了大批动手能力较强的测试人才。针对性很强的短期教育模式是社会培训的特色。培训机构通常按照助理级、初级、中级和高级测试人员安排培训内容。诸如北大青鸟等规模较大的培训机构引进欧美的混合教学模式,采用“理论知识+分模块项目实践+全真项目实训+职业素质训练”的模式,形成一个科学并且实用的培训体系。培训机构通常设立自己专用的教学平台,通过网络远程授课与集中化分期分班授课方式,在半年到一年的较短时期,培训出上岗快、操作熟练、针对性强的应用人才,而且很多学员直接通过测试工程师面试,并在后期工作中累积了较深厚的测试经验,成为测试领域的支撑力量。培训课程主要内容涵盖操作系统管理、网络应用与Web编程、数据库管理等专业课程,实训环节应用主流的测试工具,如Winrunner,Loadrunner,Rational Robot等。着重于实用性的项目实践和开发是培训机构与高校教育的最大区别。参加这些培训班已成为目前大学生岗前培训的主要途径。
2.高校专业教育现状。软件测试技术要得到广泛应用和深入发展,不能仅依靠社会办学,高校系统化的专业教学体系能够为学生奠定一个更加扎实和科学的专业基础,并对测试技术本身的学科化发展起到不可替代的作用。近三年来,软件测试技术作为专业课程逐渐在多所高校开设。目前,多数高校将“软件测试技术”作为一门独立课程设置,交叉课程主要为“软件工程”。当前一些高校开始申报软件测试专业,但是软件测试技术的学科化发展目前仍受到诸多因素的影响。主要是:(1)缺乏丰富的理论支撑。软件测试目前仍是发展中的计算机技术,专业论著少,适合于高校的教学材料非常有限,并且普遍存在知识结构不合理,教学内容不规范统一,论点少并缺乏依据,实验指导教材匮乏等问题。另外作为一门独立学科,与其他学科的交叉与相辅是理论体系的必要部分,测试技术与计算机领域诸多技术关联,相互结合教学是当前教改面临的问题。(2)目前通用性测试平台仍未完善发展与普及,在高校中缺乏结合教学实验内容的通用的实践平台,实验环境单薄。多数高校停留在泛泛讲授几个热门的测试工具的阶段,缺乏成熟、实用的测试环境来实践完整的测试项目。(3)教学模式上存在严重缺陷,专业培养过程中存在大量的不规范性和随意性。主要表现在:实践课程比例小,测试项目实例缺乏;理论课程知识结构不合理;教学理念和手段陈旧,脱离测试技术发展的实际与市场应用;不重视对学生从事软件测试职业素养的培养。尖端技术的学科化发展是高等院校的职责,建立一个科学、完整的专业教学体系是高等教育最为核心的问题。
3.当前推进测试技术应用的其他途径。除了专业公司培训和高校培养外,当前软件测试行业的发展还依赖于多种良好途径:校企合作、技术沙龙、测试专业微群、社会信息辐射等。新兴技术发展需要社会传播产生的广泛影响力来推动。以MPD(亚太软件研发团队管理)峰会、51testing等领衔的线下技术沙龙活动和巡回演讲,聚集了很多高端的测试人才,相互学习交流,积极推进软件测试行业的发展。一些较有影响的网络微群提供测试技术的交流和分享,如软件测试、敏捷测试、落地微群等,大量的测试人员和测试工程师提供测试过程管理、测试工作总结等资料,有很强的借鉴性。
软件测试行业的人才匮乏仍然是当今的重要问题。依照行业需求,软件测试人员配备应是软件开发人员的2倍,而目前我国软测人员与开发人员比例却仅在15至18之间。以高等院校专业教育为主,实现多种途径的人才培养是当前软件测试行业的当务之急。
二、高校软件测试专业课程体系建设
构建专业课程体系,需要设置好基础课与专业课、理论课与实践课、必修课与选修课的比例关系,并合理安排与协调课程相互间的分工与配合。建设科学完整的软件测试专业的课程体系是一个需要多方考证借鉴和不断探索完善的工作。
1.课程设置。软件测试是一门技术性很强的专业,对专业素养要求很高。在测试模式、测试方法上与软件开发的模式、开发平台直接相关。学生必须对操作系统、软件的逻辑结构以及物理存储过程、操作实现方法达到一定深度的了解和掌握,对于硬件的拓扑结构、物理结构要也需要尽可能多地熟知。在软件测试行业,对优秀人才的要求是拥有高敏感能力、高发散能力、高分析能力,而这些都是以扎实的理论基础为前提的。建设软件测试专业课程体系,应契合技术发展、学科发展与从业需求。经过多方考证,下表所述课程囊括的专业知识对于高层次的自动化软件测试技术的掌握必不可少。
由于计算机专业课程的关联性很强,一些专业课程可以相互结合教学。比如语言类,Shell等可以结合到UNIX/Linux操作系统课程中,HTML/XML可结合到.NET以及网络技术等课程中,PHP融入Web服务器配置等专业选修课程教学中等,避免专业内容交叉而造成的重复教学现象。在教学过程中,要将软件测试的思想广泛地渗透到所有的专业课程中。如在各类程序设计语言基础课程中引入单元测试的思想,在软件工程课程中强调软件测试的重要性,增强软件质量管理意识。当前微软、苹果、惠普等软件公司都推出完整的计算机应用与开发平台,从硬件、操作系统、集成开发环境到用户应用软件,基本上提供一条龙服务。以微软为首的测试框架开发也日趋成熟。高校需要从专业建设角度考虑,把握学科发展方向,汲取众家之长,将尖端技术和主流应用平台作为专业教学内容,在有限的学时之内统筹安排,让学生形成一个专业学习的整体思想,做到知识累积层次清晰、得到一个完整的专业知识体系。随着测试技术的快速发展,课程设置需要不断更新调整,既要考虑专业建设、学科建设,又要考虑市场需求和研发需求。合理选择、科学地纳入新知识到专业课程中,是需要不断探索和改革的无止境的工程。
2.教材选择。教材选择应当宽口径,除了主要教材之外,要为学生提供更多的辅助教材和资料,给学生自主学习的空间和时间。这方面要学习西方高等教育的模式,按照教学计划和教学内容,指导学生分期、分阶段大量阅读与课程相关联的专业资料,并汇总论点和典型实例展开讨论,开阔学生的眼界,培养学生独立思考、逻辑分析能力和探索精神。另外,教材选择应把握专业技术的最新发展,与专业领域的最新研究成果、社会培训资料等结合,及时更新教学内容。例如有经验的测试工程师撰写的技术开发、测试报告与测试总结等书籍资料,是完善和填充教材的重要知识源。
3.实验教学规划。(1)实验教学内容,应包括两部分:测试框架应用和测试项目实践。前者是指基于实验室配置的测试框架,选择针对操作系统或者客户端软件、网站等的服务性能测试案例,编写一些通用的测试脚本,在测试框架上实现完整的测试流程。后者是指选择实际的软件测试项目来组织实验教学内容。在测试项目实践中,需要提供给学生被测试的软件系统代码以及软件开发综述,包括需求分析、概要设计书、详细设计书等文档,便于学生真实地模拟实际工作中的测试流程。项目实践中,可将学生分成若干个项目组,分别设置测试经理、测试负责人、测试人员等角色,依照测试用例设计、测试任务管理、测试计划实施、测试过程监控、测试日志与测试报告管理环节,安排角色各司其职,协同完整测试项目,并对被测软件系统做出质量评审,撰写格式规范的质检报告。通过实验教学,使学生深入理解和掌握常用测试工具,如单元测试工具NUnit等应用,提升学生的项目管理经验和软件测试技能。(2)实验教材选择:实验教材选择应参考社会培训机构的项目实训资料,选择基于主流测试平台的项目实例教程,并结合测试技术的应用发展现状和高校测试环境,广泛筛选辅助资料,设置测试项目,丰富实验教材的内容。(3)实验环境配置:搭建面向高校教研的通用测试环境。当前各类测试平台及测试工具不断推出,种类繁多,但针对性较强,应用性能受到限制,缺乏可被广泛普及的通用型测试平台,导致测试过程缺乏通用性和稳定性、测试标准设定和测试价值评估无法明确等问题。建立一个通用测试环境对高校的实验教学和专业研究十分必要。通用测试环境应囊括软件测试管理平台、回归测试平台和性能测试平台功能。提供软件的文档审查、安装测试、功能性测试、易用性测试等测试项目,并能提交形式内容规范的测试报告。通用测试环境搭建需要高校结合专业研究项目实施二次开发。
三、面向从业需求的教学改革
1.注重面向市场应用的课程体系改革。为了更好地为社会培养应用型人才,高校应以企业岗位能力需求为标准,不断进行课程体系改革,构建“知识+应用+研究”的混合型课程体系结构,为学生从业后尽快适应工作岗位,担负起科技职能,并进一步从事测试技术开发与研究奠定基础。软件测试课程体系改革应基于不断发展的测试技术以及社会测试岗位的能力需求,从培养学生专业素养、测试技能、项目分析能力、探索开发能力等全面素质的高度进行必要的整合和重组,把学生应具有的知识、能力、素质结构作为课程体系改革的依据,组建模块化的课程结构。
2.注重面向从业需求的教学实践改革。面向从业需求,加强教学实践环节是高校实验教学改革的重要内容。目前很多高校与自己的合作企业签订培训合约,建立人才基地,共同开发软件和培训人才、交流人才,是教学结合实际应用的最佳模式。围绕着以企业需求为目标进行实验教学,使学生在真实的项目流程中对软件测试的完整过程与实施细节、管理机制与管理措施进行全面的了解,提高测试能力和积累测试经验,便于学生日后尽快适应实际工作,在专业技术岗位发挥人才作用。
3.注重培养学生的职业素养。高等教育为社会输送专业技术人才,不能忽视对人才职业素养的培养。在教学过程中要把专业素养、技能训练和职业素质培养有机结合起来。在学生实践与实习过程中,注重培养学生综合运用所学知识发现问题、分析问题、解决问题的能力,进而培养学生的技术应用和技术创新能力,并培养学生的团队合作精神和相互协作能力,提高将来从事测试行业的职业素养。应结合社会对软件工程师的岗位需求,设立面向毕业生的专项系列讲座,为学生提供面试技巧培训、竞争意识培训、沟通与协作技巧培训和就业指南等,是极具实效且必要的教育内容。依照国外标准,软件测试工程师应与架构师处于同一等级。从事测试行业必须具备扎实的专业基础、综合的个人能力和较高的职业素养,才能真正实现高端的自动化测试。
[参考文献]
[1]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.
[2]钱丽.以就业为导向的软件测试课程体系改革探析[J].科技信息,2012(1).
[3]顿煜卿.软件测试教学过程中的思考和实践[J].计算机光盘软件与应用,2012(14).
篇4
案例教学是软件测试教学中的常用手段,对学生理解测试方法有着很重要的作用,但是目前高校教学普遍存在着教学案例陈旧过时,大部分教学都沿用了传统的教学案例。这些案例大都没有介绍软件测试的工程方法和实现过程,并且没有进行难度的区分,很难达到好的教学效果。
本专业的教师经过多年的实践,总结了大量的教学经验,按照实际工作中典型的工程师团队所需的各种技能知识为导向,按照复杂度渐增、螺旋递进的原则设置卓越软件工程师课程体系与内容,把传统的以学科知识的系统性为导向的横向课程体系改造为以个人职业角色发现和能力提升为导向的、适应团队教育培养的新型纵向课程体系。软件测试课程是软件工程卓越工程师培养课程体系的重要组成部分,课程总体跟随整体培养课程体系的大方向,并结合自身的特点进行建设。
1复杂度渐增式开设课程
在传统的以面向开发为主的培养模式下,测试课程设置单一,知识针对性连贯性不强。为了解决这些问题,在专业课程开设过程中将软件测试课程课程拆分,穿插到整个培养过程中,紧密联系软件工程其他阶段的课程,并且使用案例贯穿所有阶段,复杂度逐渐递增,让学生在学习过程中循序渐进,逐步建立学习的兴趣和信心。在第5学期分成两个阶段分别开设《单元测试与软件质量》和《软件验证与确认》。在第一阶段旨在培养学生小规模程序测试的能力不涉及复杂系统,以提高个人开发测试的基本能力为目标,学生可以运用测试课程中学习的方法在开发过程中使用,针对性强。第二阶段旨在培养学生对系统整体测试的能力,此时学生以完成基本开发能力的训练,其他相关课程的培养中也进入了系统级别。在该阶段以上一阶段培养的能力为基础,提高复杂度,跟软件开发其他阶段紧密结合。完成第5学期的测试基础课程开设之后,在第6学期还开设了《web软件测试》、《测试案例分析》、《数据库测试》等专业选修课,给有兴趣的学生提供更多的学习选择。
2基础与实践并重,充分利用虚拟实践平台课程
的开设充分考虑到测试重实践,并且与软件开发其他阶段联系紧密等特点;同时也考虑到了此时学生正处于学习阶段,直接参与实际项目对学生的学习并不能起到很好的作用,因此在课程学习阶段充分利用了校内软件实训基地,创建网上“虚拟企业”,引入企业管理模式,在这种虚拟平台下,针对基础的知识点开设虚拟项目[3],模拟软件测试的真实工程环境。学生在自己组合团队中有各自的工程任务,针对性实用性很强,学生能够在完成自己任务的同时感性的认识测试岗位工作,体会到软件测试在整个软件开发过程中的作用,将单项知识技能之间关联在一起,系统的运用专业知识和技能。
3采用螺旋式的案例教学,案例与其他软件开发阶段贯穿
篇5
关键词:实训体系;Android软件开发;培训
中图分类号:TP31 文献标识码:A 文章编号:1001-828X(2013)06-0-02
移动互联网是继通信、计算机和互联网之后的又一次信息产业的革命性发展,并成为全球信息通信行业的万亿元级新兴产业。近年来,由于3G技术的发展,国内智能手机的普及率急升,人才市场对于Android软件开发工程师的需求量也急升,因此,如何快速地培养和建设Android软件开发工程师,成为IT企业培训的热点。本文旨在探讨IT企业如何通过实训培训体系的模式快速培养有计算机基础的初学者成为相当于1-2年开发经验的开发工程师。
实训体系建设包括独特的实训形式建设、实现过程的开展以及课程和师资的组建。其中,最根本的把握好实训的内涵和监控整个实训过程的开展是关键。
一、实训形式
实训的特点就是通过项目实际操作的方式,使得每个学生通过做项目来锻炼时间的编程能力。具体的形式为每个班的学生组成软件项目组数个,每个项目组均以真实项目为背景,重新演练一个经裁剪过的项目立项、计划、需求分析、设计、编码、测试和交付的全过程,按照企业的正规开发流程组织实施,让学生熟悉软件工程在企业中的具体应用方法。项目总监由实训老师来担任,控制项目的进度和质量,学生通过直接扮演项目开发组中的成员角色,来了解在软件项目开发团队中的角色、过程、规范和执行方法,以及在团队中合作沟通能力的重要性,养成良好的职业习惯。以下是学生扮演的角色的主要职责说明,学生可以根据自己在学校的学习情况扮演如下角色。考虑到Android软件开发工程师培训的实际需要,项目开发过程中某些方面的学时将相对压缩,而把重点放在跟开发直接相关的角色上面。
二、实训过程
整个实训过程包括实训预备期和实训期两个阶段。
实训预备期:实训的学生对Android课程体系中必须掌握的业界实用技术知识清单和相关课件进行学习,必要时进行相关课程的考试,考试合格者才能进入实训环节。
实训期:以模拟公司为平台,以仿真的商业案例项目为载体,将企业文化及职业素养训练、IT技能培训、行业知识以及业务流程实践等实训内容完全贯穿在模拟公司的运营过程中,使学生在实践中体验企业工作环境,获得一定的实际经验和职业磨练。
实训师发放《项目实训学生指导手册》,手册中规定了学生在项目Android软件开发各阶段的输入、活动说明和输出。实训选择的生命周期会覆盖软件开发过程的基本要素。其中有的要素在实训中存在操作困难的,只讲解方法并直接发放相关资料。
实训中由实训老师统一指导各阶段的详细过程指导。基本过程如下:
1)搭建环境:主要讲解搭建各种手机操作系统所需开发环境所要具备的软、硬件及网络知识。包括计算机中各种硬件和接口。软件的分类、分发和授权等方式;操作系统的初步知识;注册表、病毒、安全等知识;基本协议、活动目录等知识。从而让学员可以在实际工作环境当中搭建需要的开发环境。
2)完成的软件开发过程:主要讲解实际项目的开发所涉及到的软件开发过程的各个环节,如需求开发、设计、测试、项目管理、配置管理等,并将其运用到实训项目开发。
3)Android手机软件应用开发:这是本培训课程的核心部分,主要是使学员掌握软件开发的技术,掌握编程的方法、思想,了解软件开发过程当中常犯的错误。课程注重实用性、重在培养学员对代码分析的能力,掌握编码规范,掌握调试知识和分析程序错误的能力。同时学习内存检查工具和软件配置管理等知识。课程中贯穿了一个开发项目,以增加学员开发项目的经验。
4)测试计划与软件缺陷:主要介绍软件测试的基本概念和基础知识、如何编写测试计划、识别软件缺陷、编写缺陷报告等。通过学习,学员可以掌握软件测试的流程、软件测试的策略和分类,掌握缺陷的分类和优先级等,从而对测试有一个整体的认识。介绍了缺陷跟踪管理系统(测试工具)。总体来说,本课程将使学员掌握软件测试相关的大部分基础知识。
5)数据库:通过对数据库基础知识的讲解,让学员掌握这些技术。数据库是以主流的Oracle和MySQL 数据库的运用为主。
6) 职业导向训练:进行职业引导,包括就业指导和职前引导。通过座谈会等辅助训练明确就业方向,进一步了解职业发展形式。
三、实训课程设计和引进
A.参考国内外IT知名企业现有已取得各地区政府认同的移动应用软件开发培训课程体系,以移动应用行业应用的实际需求为导向,自主研究开发适合本地企业的Android软件开发方面的案例及课件。
B.结合需要引进其他国内一流的成功Android软件开发培训课程体系。
C.培训实例设计:根据大多数软件开发企业的实际需求,以多个实际项目为原型开发出具有实战意义的案例。
D.企业培训定制:企业培训必须密切结合企业战略,从企业的人力资源规划和开发战略出发,满足组织及员工两方面的要求,考虑企业资源条件与员工素质基础,考虑人才培养的超前性及培训效果的不确定性,为企业确定员工培训的目标,选择培训内容及培训方式。
四、师资队伍建设和引进
在内部培养培训讲师和实训导师的同时,我们还将根据课程需要积极引进高端的Android培训讲师,包括网络通讯、Android应用开发等各领域的高端实战人才,建设一支实战经验、培训经验俱佳的师资队伍。
五、制定Android软件开发工程师培训大纲
Android软件开发就业培训大纲由多名资深移动应用软件开发专家及有丰富Android实战经验的工程师倾力开发而成,在本实训项目里将得到充分的贯彻执行。该课程总结了Google、中兴、华为、HTC、摩托罗拉、IBM等顶级国内、跨国大型企业的先进的软件开发理论和经验,在此基础上形成了一套适合我国国情的Android软件培训课程。目的是将优秀企业完善的Android软件开发技术和方法等推广到国内的软件产业,以提高广州本地软件企业的Android应用软件开发水平,改进开发方法和方式。
Android软件开发培训采用教师授课和学员实际练习相结合的方式。针对每个培训的章节,在课程中都会提供丰富的项目实践案例,使每个学员不仅能够学到Android软件开发的一些基本理论知识,重要的是能够让学员将学到的知识运用到实际的移动应用软件开发活动过程中。
本Android软件开发就业培训大纲主要由三大部分组成:
基础阶段:主要阐述了一个Android软件开发工程师需要了解和掌握的入门知识,包括Android开发编程语言基础,主流数据库开发技术,以及一些必要工具的使用,是迈入Android软件工程师职业必备的一些基础知识。
中级阶段:主要阐述了一个Android软件开发工程师需要掌握的常用的通信协议,整套主流的应用服务器和中间件编程技术,数据访问层框架技术,并帮助深入理解软件工程过程。
高级阶段:通过一个个具体的项目案例,将上面提到的技术、方法、度量、文档和过程相结合,掌握Android移动应用系统开发技术,包括Android环境下的音视频多媒体处理、游戏技术开发、底层核心架构技术等,并进行项目开发实战。了解不同设计模式与运用、软件性能调优、软件过程管理等。
篇6
关键词:工程实践;软件工程;CDIO
文章编号:1672-5913(2017)05-0030-04
中图分类号:G642
0 引 言
工程教育的目的是将学生培养成为“整装待发”的工程师,也就是在其从事职业前具备较好的工程能力和深厚的技术基础知识。为了达到这个目标,工程教育者的任务就是不断地改进本科工程教育的质量和内涵。CDIO教学模式改革了工程教育,教育学生理解如何在一个现代团队环境下构思―设计―实施―运行复杂的、具有高附加值的工程产品、过程和系统[1]。随着社会信息化的不喾⒄梗各行各业对软件的需求也越来越多,各种应用软件的复杂性和规模不断增加,导致软件企业亟需大量的能够构思、设计、实施和运行复杂软件系统的人才。软件企业对所需人才的要求与CDIO的培养标准是相符合的。然而,目前一些高校的软件工程专业毕业生并不具备这种CDIO能力,因此目前软件工程专业的培养标准、培养方案和课程体系有必要根据CDIO的培养标准进行调整[2]。
工程性和实践性是软件工程专业的主要特点。 CDIO工程教育强调学生工程实践能力的重要性。软件工程专业的实践教学环节主要分为3类:第1类是理论课程内的实验或上机;第2类是工程实践类课程(或称为课程设计类课程);第3类是毕业设计和实习。软件工程专业的工程实践类课程没有理论授课,全部都是实验或上机课,主要是培养学生的应用理论知识解决实际问题能力和工程实践动手能力,在整个软件工程专业的实践教学体系中占据着非常重要的一个位置[3-4]。
1 基于CDIO的工程实践类课程培养标准的制订
根据CDIO教学大纲,CDIO培养标准指标共分为三级,其中一级指标4个,分别是技术知识和推理,个人能力、职业能力和态度,人际交往能力、团队工作和交流,在企业和社会环境下构思、设计、实现、运行系统的能力。每个一级指标又分为很多二级指标,二级指标又分为若干三级指标[1-5]。结合CDIO培养标准和成都信息工程大学软件工程学院软件工程专业的培养目标,我们制定了软件工程专业的培养标准,其中与工程实践类课程相关的培养标准见表1。工程实践类课程主要培养学生的以下几方面的能力:①应用核心软件工程基础知识的能力;②工程推理和解决问题的能力;③进行工程实践所需的个人能力;④团队合作能力;⑤人际交流能力;⑥系统的构思与工程化能力。
2 软件工程实践类课程体系的构建
基于CDIO的工程实践类课程培养标准对现有的工程实践类课程进行改革,重新构建工程实践课程群,总共包括4门课程:工程实践I(编码训练)、工程实践II(软件技术)、工程实践III(软件测试)和工程实践IV(综合训练)。这4门课程的学时、学分、执行学期和培养标准见表2。这4门课分别设置在不同的学期,每门课的学时都是32学时(2学分),每门课程的培养标准三级指标都根据表1中的培养标准设定。
工程实践类课程群的构建思想:①学生通过工程实践类课程的学习,能够达到表1中的能力要求,因此所有工程实践课程的培养标准加起来能够完全覆盖表1中的培养标准三级指标;②按照软件工程由底向上、循序渐进的模式,构建工程实践课程群。
在第3学期,首先开设的是工程实践I(编码训练)课程,重点培养学生的基本编程功能, 培养学生应用所学的C语言程序设计、面向对象程序设计(C#或Java)、数据结构等课程专业基础知识解决实际问题的能力和动手编程能力。工程实践I课程为后续的3门工程实践课程打下实践基础。
在第4学期,开设的是工程实践II(软件技术)课程,重点培养学生使用高级程序设计语言(JSP、等语言)和数据库技术(Oracle、SQL Server等)进行Web编程的能力和初步软件设计能力,同时培养学生对已有软件的需求分析能力以及对设计文档的阅读和理解能力。
在第5学期,开设的是工程实践III(软件测试)课程,重点培养学生制订测试计划、设计测试用例、实施测试方案等基本的测试技能,为学生进入企业从事软件测试工作奠定坚实的实践基础。
在第6学期,开设的是工程实践IV(综合训练)课程,通过一个中型软件工程项目的完整开发,学生经历需求分析、概要设计、详细设计、程序编码、程序测试及集成运行全过程,培养软件项目构思、设计、实现和运行系统的基本能力,在企业和社会环境下,能够参与或组织一个完整软件项目的全生命周期工作,包括软件的需求、设计、实现、测试、维护等工作[4]。
3 工程实践类课程的教学主要内容和实施
所有的工程实践课程都围绕该课程的培养标准进行课程教学内容的设计和实施,课程的教学内容应该完全覆盖该课程培养标准三级指标,使学生通过该课程的学习,能力能够达到培养标准所要求的水平。所有的工程实践课程都是以项目驱动型教学方法为主,教师以一套项目案例展开教学活动,学生参考案例模板,按软件工程流程完成自己的项目。除了工程实践课程I,其他的工程实践课程都以小组为单位(4~6人组成一个小组)完成课程作业。每个工程实践课程都要求项目答辩,一人一辩。通过项目答辩可以考查和评估学生所做系统的效果以及学生的项目设计、实现、测试、集成等能力,还可以锻炼学生的口头表达能力和交流能力。每个课程项目答辩在课程最后阶段进行,一般需要8~12学时完成。
工程实践I (编码训练)课程的主要教学内容:①每名学生选择一个小型软件项目(或者老师指定一个项目),制订项目开发计划;②对项目进行初步分析和设计,完成程序模块划分和设计,撰写程序设计文档;③学习程序编码规范,编写符合编码规范的程序代码;④程序调试和测试;⑤完成项目答辩;⑥编写课程总结报告,提交项目成果。
工程实践II(软件技术)课程的主要教学内容:①任课教师提供多个信息管理系统软件的需求分析、功能结构设计、数据库设计等资料供学生选择,以选择好的项目作为后期功能实现及评价的依据;②学生小组根据项目资料,在规定时间内完成软件项目的原型设计,提交中间成果(功能设计文档和系统原型);③根据系统项目文档及前期做的原型,完成对应系统的编码及具体实现,小组成员分工合作,由小组长负责组织协调,要求每个学生至少完成一个相对完整的功能模块设计与开发;④每名学生分别讲述自己完成项目的工作情况和实现方式,进行项目答辩。
工程实践III(软件测试)课程的主要教学内容:①教师给定一个待测试软件系统的需求、设计文档以及源代码,学生分组阅读理解该系统的文档和源代码,按规范格式编写软件测试计划书;②学生根据软件测试计划书进行测试用例设计;③学生根据测试用例设计书,按步骤执行测试用例,记录测试结果;④学生分析软件缺陷分布状况和测试结果,按软件测试总结报告要求编写软件测试总结报告,提交相关文档;⑤每名学生进行项目答辩。
工程实践IV(综合训练)课程的主要教学内容:①学生以小组为单位,自选一个中型软件项目系统题目(或老师指定一个题目),进行文献检索、资料查询,按规范格式编写需求规格说明书;②根据需求规格说明书,按规范格式进行数据库设计和模块功能设计,小组共同完成概要设计说明书;③每名学生根据概要设计说明书,按规范格式完成所分配模块的详细设计说明书;④每名学生根据详细设计说明书,按照编码规范完成自己所分配模块的代码编写;⑤每名学生按标准文档格式记录测试结果,提交测试文档;⑥学生以团队为单位,完成项目集成,提交源代码;⑦每名学生进行项目现场演示及项目答辩。
4 考核方式
所有的工程实践课程均采用过程化考核方式,除了平时表现(包括考勤、课堂表现和小组讨论)之外,每门课程都设置很多中间过程考核环节。每个中间过程考核环节要求学生提交至少一个成果物(文档或程序),每门课程最后都要进行项目答辩,一人一辩,因此一名学生的课程最终成绩由平时表现成绩+中间成果物成绩+项目答辩成绩构成。中间成果物要求至少有3项,不同课程的中间成果物不一样,以工程实践IV课程为例,其中间成果物包括需求规格说明书、概要设计说明书、详细设计说明书、单元测试、代码编写和项目集成。每个课程的考核环节都要覆盖该课程的培养指标,表3是工程实践IV课程考核环节与考核指标的对应关系,所有考核环节覆盖的三级培养标准加起来要能够完全覆盖该门课程的三级培养指标,项目答辩的成绩不低于15%。
5 结 语
从4年的教学实践来看,课程改革的效果良好。经过调研,很多学生反映通过工程实践类课程学习,他们的需求分析、设计、实现、测试、集成等能力增强;很多企业雇主也非常认可这种工程实践类课程的教学模式,认为对提升学生的工程实践能力有很大帮助。当然,这种基于CDIO的工程实践类课程教学模式还需要根据毕业生、企业雇主、第三方教育评估机构的追踪调查反馈信息不断完善,这也是我们下一步的研究工作。
参考文献:
[1] Crawley E F, Malmqvist J, ?stlund S, et al. Rethinking engineering education: The CDIO approach[M]. 北京: 高等教育出版社,2009: 5-40.
[2] 澎, 熊耀华, 周慧. 基于CDIO模式的软件工程实践教学课程建设的研究[J]. 软件工程, 2016(1): 1-3.
[3] 厉小军, 谢波. 软件工程实践课程教学改革探索[J]. 计算机教育, 2012(3): 106-110.
篇7
关键词:CMMI;软件人才培养;课程改革
中图分类号:G4 文献标识码:A 文章编号:1672-3198(2011)04-0233-02
1、前 言
全球经济一体化的浪潮给我国带来了大量的服务外包业务,给软件企业提供了难得的发展机遇,特别是中小规模的软件企业。软件企业在承接软件外包业务时,面临软件的工程规范和技术规范及软件质量管理等人才短缺的困境。我国软件人才的现状如下:
(1)层次结构。按国际的管理模式和成功经验公认的最合理的人才搭配比为1(高):5(中):50(低),常称为“金字塔”。从我国统计数据来看,现在软件人才的结构呈“橄榄型”,非常急需两端人才,能进行项目研究和管理的领军人物,及训练有素的编码和测试蓝领。同时,每年各种软件专业毕业的研究生、本科生、大专生数量很大,但就业率和对口率较低,其中,中端人才的低端化使用导致软件行业基础人才不稳固,而高职类低端人才因缺乏训练而入职难,这其中不乏培养失衡等多种问题。
(2)质量结构。我国当前的教育模式下,难以培养大量掌握符合国际标准的软件工程规范和技术规范的编码人才;也难以培养既掌握软件开发技术、又熟悉软件过程管理的中层项目管理人才;更难以培养能紧跟世界前沿技术动态和趋势、熟悉软件工程管理、具有行业应用知识的专业化、复合化、国际化的顶层人才。也未能给软件从业人员提供一条明确、可望的职业成长路径。
2008年后,各地方政府推出了实施CMMI(能力成熟度模型集成)的鼓励政策后,激发了中小软件企业参与CMMI评估的热情。通过CMMI评估,可不断吸取国外的成功经验,这不仅是企业发展壮大、在同行竞争中取胜的重要因素,也是提高软件企业资质和具备国际竞争力的必由之路。
2、CMMI简介
CMMI由卡耐基,梅隆软件工程学院提出,源自美国政府和军工软件企业的一些成功实践,融合了全面质量管理的思想,为软件企业的过程改进提供了标准,为软件企业的项目管理提供了方向。CMMI是对于软件组织在定义、实现、度量、控制和改善其软件过程的进程中各个发展阶段的描述,它通过5个不断进化的层次级别来评定软件生产的历史与现状,帮助组织探索一个保证软件产品质量、缩短开发周期、提高工作效率的软件工程模式与标准规范。
美国、日本等国家的软件企业先后掀起了质量热潮,质量控制小组遍及全国,不断积累和分享过程改进的经验。印度在实施CMMI方面也取得了极大的成功,其软件业借助规范的管理进入国际市场,并逐步发展壮大。我国软件业在不断吸取国外的成功经验,参照CMMI规范,结合中国及企业现实,努力探索规范有效的软件开发过程,企业通过实施CMMI取得了一定的成效,如促进了规范化管理、提高了项目控制能力和产品质量等。
3、CMMI在软件综合实训中的实施
3.1应用思想
软件过程是人员密集和设计密集的作业过程:若缺乏有素训练,就难以建立起支持实现成功软件过程的基础,软件质量的提高亦将难以取得成效。企业通过CIVIMI评估工作优化了企业开发流程,改善现有的工作方法,从无序的混沌过程向训练有素的成熟过程演进,这涉及到团队的每一个成员。
软件及外包企业实施项目过程管理和质量全程监控,需要员工能快速融入相应的管理模式中。软件专业毕业的学生若要到实施CMMI的团队中工作,他们缺乏要在什么样的过程管理中如何去开发一个项目的能力,不明确工程化、工业化和标准化开发的工作内容、工作方法、工作过程又是怎样的。学生需要教师引导思考工程化、项目化管理等相关问题,按照“学习的内容是工作”、“通过工作来学习”新职业教育理念,将学习目标和和工作目标有机地结合在一下起,由教师指导学生完成“工作任务”,在“工作过程”中理解和应用CMMI的核心思想,解决工程化、工业化和标准化开发问题,在软件开发和项目管理过程中成长。
3.2实施内容
针对高职生的认知水平,学生不具备需求分析与系统设计的能力,工作按CMMI3的过程要求,删除需求开发、技术预研、系统设计、决策分析等过程,但强调需求变更的控制过程,由教师模拟客户在适当时机提出不同的变更,变更后的需求、设计等的修改工作由学生完成,逐渐培养其分析和设计的能力。
学生用二个月的时间完成一个信息管理系统,如OA系统、供应链系统、ERP系统等,教师提供需求定义、概要设计、数据库设计、项目编码规范、技术解决方案和CMMI的相关模板等文档,并提供需求变更等软件开发和项目管理过程真实的情景。
综合实训班级共30名学生,分成3组,每组10人,5名开发工程师和5名测试工程师,再在每个组中安排学生兼任配置管理员、质量保证工程师、度量分析师、需求分析师、系统设计师、界面设计师、数据库管理员、项目实施工程师岗位的工作,教师担任各组的项目经理。
3.3重点环节
应用CMMI于综合实训中,强调过程监控与管理,规范的项目管理体系和科学的课程实训方案保障了综合实训的质量。
(1)项目策划与监控。
让学生学会任务进度的分解、工作量的估计、项目计划的制订、按计划实施项目并周期性跟踪实施情况、保证项目顺利进行。具体包括:团队共同选择生命周期,定义项目过程,对项目组成员进行分工,明确岗位和各自的职责;项目经理根据项目范围制定产品的任务进度分解,根据产品规模进行工作量估计;按分工岗位分别制订项目支撑的软件测试计划书,项目经理整合《计划书》;各成员正确填写《工作日志》,项目经理填写《工作周报》等,收集进度、工作量等数据,分析项目状况,纠正问题和控制偏差,周期性地跟踪项目计划的各种数据从而实施监控。
(2)项目支撑。
让学生学会在项目实施过程中进行配置管理、度量分析、同行评审及质量保证,规范开发过程。具体包括:配置管理员制订配置计划,维护项目的配置管理系统,分配权限和标识整个产品生命周期的配置项和版本等,控制配置项的变更,提交《配置状态报告》等;度量分析工程师制订度量分析计划,定期采集数据填写《度量数据采集表》等,协助项目经理进行综合度量分析,填写《项目总结报告》,对定量化的过程加以理解、评估;质量保证工程师制订质量保证计划,进行各阶段的产品评审,执行过程检查评审,与项目经理一起组织同行评审,建立并维护质量保证记录,跟踪不符合问题及处理情况,直至解决,提交《质量保证周报》等。
(3)系统实现与软件测试。
让学生按规范化的方法进行软件产品开发,验证产品的功能是否达到了设计要求。具体包括:软件开发工程师熟悉项目编码规范和技术解决方案等,并搭建开发环境,根据需求与设计文档进行编码,编写单元测试用例,对已实现
的产品进行单元测试,尽可能多和早地发现并解决问题,并编写《用户使用手册》;测试工程师编写《系统测试用例》,执行测试工作,填写《BUG票》和《测试汇总表》,修复后再进行回归测试确认,保证产品的质量,最后完成《测试报告》。
(4)需求变更控制。
让学生认识在项目开发过程中需求管理的重要性,需求变更时如何进行项目的各项管理,在保证客户需求的前提下并保证项目的质量和进度。具体包括:教师模拟客户代表提出需求变更,在客户与开发方之间建立对需求的共同理解,需求分析师填写《变更申请单》,更新需求文档,项目经理组织项目组进行需求变更评审;依据更新的需求文档,团队各成员对后续设计、开发、测试等工作产品进行相应的变更,并维护《需求跟踪矩阵》,保证需求与相关工作产品的一致性。
3.4考核与评价
按形成性考核模式对学生的工作过程和工作成果进行考核,在考核中不仅是要求完成任务,更注重的是在每个阶段学生有效的提升个人能力,教师将进行针对性辅导。每个阶段活动95%学生达到合格标准后,再进入下一个阶段的实施,直至项目完成。考核与评价以自评和互评为主,项目教师在各阶段帮助学生进行总结,通过总结,有效地提高学生的管理能力,培养职业化意识。
3.5实施成效
通过结合CMMI进行软件综合实训,学生掌握工作的流程和方法,能认同和融入企业文化和企业管理方式,树立项目意识、质量意识和工期意识,增强团队间的沟通及协作能力,能养成良好的工作规范、工作习惯、工作作风和工作意识,并且在工作的过程中有掌握不断更新技术的学习能力,提高了学生的职业能力和素质,增强了就业竞争能力,缩短企业的培训时间和成本,学生进入企业顶岗实习后就业,能更快的融入到企业的团队工作中。
4、软件人才培养的思考
要将学生培养成为训练有素的准员工,进入企业后能与团队共同持续地进行软件过程改进,以适应软件企业所面对的动态环境。在人才培养机制上还应深化校企合作,注意处理两方面问题。
(1)学校不能对“企业培训最后一公里”过度依赖,从而增加学生学习成本、政府扶持成本、企业用人风险,也难以系统培养适用的高素质人才。学校需要改变与企业的合作模式,以“工作过程导向”改造专业和改革课程,采用多种方式,让学生在校学习过程中实践锻炼,逐渐积累软件开发、项目管理、质量控制的经验,提高实战能力。
(2)企业应提供行业知识和项目经验,帮助培养师资、改革教学模式和教学体系、安排学生实习,真正实现学校、企业的互联互动,探索产学研用结合的工程教育新模式,做到学校与企业的无缝链接、相互渗透,创造学校、学生和企业多赢的局面。
由此可见,在软件专业按照“工作过程导向”模式构建专业课程体系,根据职业能力的阶梯性和学习规律的渐进性,学习过程从软件的单元设计到项目开发,最后到项目管理。而第五学期的校内综合实训和第六学期的企业顶岗实习,学生通过CMMI的项目管理模式下的软件开发积累经验,有利于实现学校到企业的无缝衔接。
参考文献:
[1]2009软件人才(成都)需求分析报告[R],成都信息化办公室,2009,(4)
[2]史秋实,论剑中国软件外包振兴之道[EB/OL],http://chinaso-urcmg.mofcom.省略/content2,jsp?id=58860,2009
[3]张万军,储善忠,基于CMMI的软件工程教程[M],北京:北京交通大学出版社,2008:1-5
篇8
在软件外包人才培养方案中,强化学生的IT基本素质,以真实项目模拟演练为主,在实践中掌握专业技能知识。高职院校与企业紧密结合,培养真正企业需要的,具有较强实践能力软件开发人才。
关键词:关键外包;才人培养;设计研究
1.关于软件外包
软件外包就是企业为了专注核心竞争力业务和降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业完成的软件需求活动。一个软件开发项目通常要经历需求分析、设计、编程、测试等几个大的阶段。
其中设计又包括整体设计、系统设计、详细设计几个环节。详细设计将软件开发过程分割成各个不同的模块,然后对这些模块进行编程,到了编程阶段时,大量工作需要软件编码人员来完成。软件最后的测试是一个复杂过程,包括单元测试、系统测试、总体功能测试,期间由测试编程工程师编写测试工具,制定测试规则,完成测试的任务。
现代的软件开发工程是将整个软件开发过程明确的划分为几个阶段,将复杂问题具体按阶段加以解决。这样,在软件的整个开发过程中,可以对每一阶段提出若干明确的监控点,作为各阶段目标实现的检验标准,从而提高开发过程的可见度和保证开发过程的正确性。
2.软件外包人才的岗位需求
据商务部统计2009年我国共签订服务外包合同6万多份,信息技术外包(ITO)是服务外包的主要方式,合同协议金额超过100亿美元。
软件外包,需要方方面面的人才,其中包括:架构师、需求分析师、项目经理、程序员、界面设计师、测试员、售前售后工程师等,高等职业教育针对企业对岗位的需求,利用自身的优势,在充分提高学生的外语水平的基础上,培养基础型软件技术开发人才,基本能力要求是代码编写和技术文档处理,以团队成员和项目经理共同完成软件开发设计,具备较强的专业技术能力和表达沟通能力。
3.软件外包人才培养目标
软件外包人才培养目标是中级和一般软件人员,重点是培养动手能力和解决问题的能力。学生参加工作后,经过很短的时期就应该能进入角色,直接担当承接离岸、近岸和在岸外包业务企业中的软件编码和测试的工作。通过掌握计算机软件外包开发和软件工程的知识与技能,熟练使用英语或日语进行交流,熟悉欧美及日本等文化特点,从事外包的企业软件开发、调试、运行、测试、维护及质量管理等技术工作。
从知识结构来看,应具备计算机的基础理论知识,精通一类程序设计技术,如Java或.net,精通一门外语,如英语或日语,熟悉软件开发流程和软件开发规范,熟悉软件开发各个阶段涉及的文档和资料。
从能力结构看,不仅具备程序设计和逻辑思维能力,而且还应具备包括文字输入的基本技能和图文图表的信息处理能力,精通程序设计语言和数据库知识,阅读或编制各级各类的软件开发文档。
4.软件人才培养方案设计
对于高职类的学生,毕业后从事的岗位注重于技术操作,软件技术专业的学生可以在与软件技术相关的公司从事软件的代码编写与测试,培养具有良好的科学素养,专业基础理论扎实,掌握数据库的应用技术和编程语言技术,掌握软件自动化测试技术和技巧、能实现规模化软件测试。
(1) 稳固基础
高职学院由于学时所限,不能安排更多的理论课时进行教学,但基础课仍然是必不可少。作为专科学生,首先也属于有知识、有技能的社会有用之才,才能不仅体现在技术水平,也力求掌握各方面的基本能力。外语学习强调听说读写全面发展,重点培养使用外语的能力,而不是应付考试,也有利于将来工作中的在职学习,为自己创造更大的发展空间。
提高学生的实践能力,保障足够的学生实践操作时间,通过IT素养方面的教学,让学生能熟练地使用计算机和网络设备,还包括常用软件的安装和使用方法,局域网和互联网的使用方法。这些基本技能训练可以使学生在后续学习中对周围的信息工具运用自如,以更好地学习其他课程。
(2)与企业共建实训室
充分利用学院的实训设备,引进企业文化,搭建项目开发的实际工作环境,真实地再现企业软件开发过程中的各个环节。遵循国际化软件工程的开发流程的要求,总体规划基于需求分析、软件设计、软件编码、软件测试、质量保证、软件等环节的功能区域。
结合各种成熟的行业开发项目,在真实的特定软件开景中,将企业级的软件开发过程在实训室展现,让学生自己通过对项目的理解进行分析,分配学生在团队开发中的角色和地位,培养规范化的开发规范。
(3)项目教学法
所谓项目教学法是通过项目的形式进行教学。为了使学生在解决问题中习惯于一个完整的方式,所设置的项目包含多门课程联合的知识,在老师的指导下,将一个相对独立的项目交由学生自己处理,实施信息的收集和方案设计,项目实施及评价由学生自己负责,学生通过该项目的进行,了解并把握整个过程及每一个环节中的基本要求。
在项目教学中,学习过程成为一个人人参与的创造实践活动,注重的不是最终的结果,而是完成项目的过程。学生在项目实践过程中,理解和把握课程要求的知识和技能,体验创新的艰辛与乐趣,培养分析问题和解决问题的思想和方法。在外包软件开发的过程中,首先要了解项目的需求,读懂系统设计和详细设计的文档,熟悉软件开发的流程,联系已学的联合课程的各种知识,完成软件编码设计任务和软件测试任务,学生在各个项目小组中通过实际参与,训练其在实际工作中与不同的人进行协调、合作的能力。 改变从被动“教”到主动“学”的教学模式,创造了学生主动参与、自主协作、探索创新的新型教学模式。
在项目教学法的具体实践中,教师的作用不再是一部百科全书或一个供学生利用的资料库,而成为了一名向导和顾问。帮助学生在独立研究的道路上迅速前进,引导学生如何在实践中发现新知识,掌握新内容。学生作为学习的主体,通过独立完成项目把理论与实践有机地结合起来,不仅提高了理论水平和实操技能,而且又在教师有目的地引导下,培养了合作、解决问题等综合能力。同时,教师在观察学生、帮助学生的过程中,开阔了视野,提高了专业水平。可以说,项目教学法是师生共同完成 项目,共同取得进步的教学方法。在职业学校、职业教育中,项目教学法有其独特的优势,应更进一步总结提高,大力试用推广。
(4) 模拟真实
课程中的细节来自现实业界的个案研究作为问题设置的依据,这确保了学生能够熟悉典型的企业中各组织机构的功能,这使学员在今后的职业生涯中,能无障碍地为这些组织机构提供软件开发问题的解决方案。这意味着学员在课程结束之后,不仅在技能知识方面,而且在将知识应用于不同的商业领域方面都将获得更大的信心。在所有的课程中,这些概况都可以用作问题讨论和实践的背景知识。
在教学过程中模拟一个真实软件开发环境的基础上,以基于问题、基于榜样的独特教学手段进行课程设置,注重培养作为一个优秀软件从业人员所应具备的团队合作、分析归纳、专业技术文档制作,规范的软件开发等专业技能。 “授人以鱼,不如授人以渔。”,IT技术日新月异,在基于榜样的学习方法的指导下,不但使你掌握了最前沿的技术,更获得了自我学习与实际解决问题的规范和能力。
在教学过程中,直接将软件公司所生产的软件项目的Demo版用于教学,注重学生进行软件实践开发的能力培养,真正将高职教学成为企业的岗前培训。教师在进行教学过程中,除了辅导学生进行项目开发,更主要是要搭建软件公司项目开发环境,并进行项目管理,教师就是软件开发过程中的项目经理或项目主管,而学生就成了“程序员”,这正是我们所希望达到的目的。委派企业的工程师进入课堂,带着公司的现实项目对这些学生进行现场教学,学生不仅感到了压力,更能感受到进行软件项目开发乐趣,激发了学生的学习兴趣和工作热情。同时也对学生进行适当的企业文化的教育,让学生在思想上提前就业。解决企业在招聘人才时只能接收有工作经验人才的瓶颈问题。
5.结语
企业需要的不是实习生,而是需要能够给企业创造财富、创造价值的员工。高职院校只要与企业紧密结合,就能培养出企业所需求的具有较强实践能力软件开发人才。进而也可以委派教师进入合作企业,成为“访问工程师”,参与企业的生产管理,学习新知识、新技能,这才是真正的“双师型”教师,他们能更好促进实践化教学的进程,教学即为实践,实践也在教学,形成良性循环。
参考文献:
[1]《苏州市服务外包人才培养模式初探》 人才资源开发,喻晓雪,2009,11期
篇9
关键词:计算机专业;程序设计;实践教学;案例驱动
中图分类号:G424文献标识码:A文章编号:1009-3044(2012)02-0421-02
编程能力是计算机专业学生的基本专业能力,是就业应聘时被用人单位重点考察的能力。程序设计以及进一步的系统开发要求学生有较好的逻辑思维能力、数学基础、建模能力,能熟练掌握集成开发环境、测试工具、软件工程规范,具有良好的吃苦耐劳、团队合作精神。目前,高职计算机专业学生普遍编程能力不强、专业技能特征不明显,导致学生就业质量不高。提高学生编程能力是目前高职计算机专业人才培养亟待解决的重要问题。
1编程实践教学现状
1)编程能力培养课程群
理论基础:高等数学、离散数学;语言课程:C(或C++)语言程序设计、数据库程序设计、面向对象程序设计等;结构和算法:数据结构、算法设计和分析;系统设计:软件工程、软件测试技术等。
2)编程实践教学体系
编程课程群、其它理论课程的实验教学部分、专门的课程设计、第二课堂、程序设计类的学科竞赛、实习、毕业设计。
3)编程实践教学存在的问题
①学风可能出现问题。由于学历层次为专科,很多学生对编程自信心不足,普遍有畏难情绪,自觉性不高,没有专业自豪感,自备的学习电脑变成了玩游戏的工具。对就业市场缺乏准确认识,缺乏将来在IT企业就业的自信心,导致学习动力明显不足。
②编程的前修课程学习不到位。学生对高等数学、离散数学这些理论课程的学习意义认识不足,错误认为这类课程与计算机专业的基本技能关联不紧密,不考虑技术生涯的发展潜力和后劲。英语学习积极性不高,不能结合编程语言的开发环境阅读联机帮助中的英文内容。
③师资自身编程能力和教学方法有待提高。部分编程任课教师,没有项目研发实践经历,程序调试和系统测试技巧掌握不多,程序开发环境的功能掌握不全面。教学课件制作粗糙,不能充分利用多媒体教学平台,教学过程缺乏足够的上机演示和训练。文件、OS系统功能调用、常用基本算法的实现等不讲授或讲授不到位。
④实践教学环节质量没有得到保证。语言类课程课后编程作业量不够,且多数采用纸上编程的形式,很少布置课外上机编程作业和上机检查,考核手段主要采用笔试,程序设计语言种类设置偏多,编程作业没有结合应用和趣味性,其它相关课程(如:操作系统)的实验教学没有到位,实验室开放制度没有落实,学生课外时间没有得到真正有效利用,三年期间编程训练不断线没有落实。
2编程实践教学改革
1)提高学生专业自豪感,加强学风建设
强调社会信息化建设对合格计算机专业人才需求依然很大,学有所长的学生依然是IT企业竞相高薪聘用的对象。随着世界经济结构变化,计算机服务外包人才需求旺盛;信息技术对传统产业的技术改造以及对社会各领域快速渗透,进一步保证了社会人才市场对计算机专业合格人才持续的高需求状态。目前部分计算机专业学生因学风等问题使得专业基本技能没有学到位,从而导致就业不理想。
2)优化编程类课程群,把握课程重点
程序设计课程应当有足够的实验课时,最好设置相应的独立的课程设计(如:C语言课程设计)。不能只给学生讲解编程开发环境中最常用的功能,而至少要介绍开发环境中大部分功能,形成学生对开发环境的整体认识,程序调试技巧要着重讲解。程序设计语言种类要少,目前很多学生学了好几门语言,因时间和精力限制,最终都没学会,毕业时没有1门语言能熟练掌握。《离散数学》课程不能开设成纯粹的数学理论课,而应当配以适量的实验课(如:编程实现求解等价关系),着也为以后《数据结构》学习打下基础。《软件工程》应对软件测试方法、测试工具、测试用例构造技术做重点讲解。可在大学三年级设置《软件综合课程设计》。
3)加强校企合作,进行项目开发实训
校企合作是培养符合社会需求、了解技术发展、强化专业技能、提高职业素养的重要途径。目前进行计算机专业技能实训的社会教育服务机构、IT研发企业很多。这些企业有较好的软件开发教学案例,采用真实的软件工程方法对学生进行编程、软件测试、项目管理、行业规范的训练。学生实训地点可以是学校机房(此时机房需进行适当的软件环境改造和优化),也可为企业的研发场地。校企合作过程同时能提高教师的软件研发能力。
4)积极参加相关学科竞赛,提升编程能力
政府或学会组织的各级计算机程序设计类学科竞赛很多,如:ACM程序设计竞赛。这类竞赛能提高学生的编程等综合能力和编程兴趣。获奖学生能提高就业质量。在课程建设方面,最好把竞赛的题目作为《数据结构》或《算法设计和分析》的教学案例或课后作业。竞赛队伍可含有低年级学生,由专职教师进行专门训练和管理,学校给予政策倾斜。
5)充分利用第二课堂,设立编程类大学生创新性试验项目
编程能力提高只靠第一课堂是远远不够的。借助学工类和学生类组织,成立多个学生编程兴趣小组,由教师进行专门指导和管理。最好结合计算机技术实际应用设立编程类大学生创新性试验项目,其中完成优秀的项目可计入学分,进一步扩充后可成为学生就业应聘时进行演示,体现学生技术实力。
6)编程训练不断线,编程方向要集中
由于程序设计语言种类很多、高级语言功能类似、应用领域非常多、时间精力有限,学生最好重点掌握其中一种语言(如:JAVA语言)。若有可能,非语言类的课程的编程实现类实验项目最好使用学生自己拟专攻的语言,逐步熟悉该语言程序设计开发环境中尽可能多的功能。学生也可以结合感兴趣的应用领域(如:信息管理、网络应用、游戏)重点学习其中一种语言,此时学生自学或学校开设讲解应用领域基础知识的课程。
7)程序设计课程考核要进行笔试和机考相结合
以往程序设计课程考试一般都是笔试,主要考核学生对基本语法的掌握情况,题型主要是填空题、选择题、改错题、纸上编写小程序。此考试方法不足以考核学生编程的真实水平,而且纸上编写的程序的正确性,难以完全把握,所以应该加上机器考试环节,既能促使学生进行更多的上机编程实践,由能准确判断编程是否正确,还能考核学生对基本编程环境是否熟悉。
3案例项目驱动的编程实践教学法
案例项目驱动教学法是案例驱动和项目驱动相结合的一种教学方法。课堂上通过案例的讲解让学生充分掌握相关的知识,并让学生利用所学知识在实验课中完成一个小项目。该教学法适宜于在《软件工程》课程教学中使用,是以学生为主体,教师为辅助,以学生在项目实践中发现知识、解决问题、提高系统设计和编程实现能力为根本目标。
1)选择的教学案例应具备的条件
案例最好是由教师自主开发的已经投入实际运行的软件系统,经过改造而成,同时具备以下条件:①不会出现知识版权纠纷;②技术的综合性比较强;③有软件使用说明书,相关文档齐全;④配备针对该案例的自编教材;⑤案例涉及的应用领域知识,学生能凭借直觉理解;⑥源代码完整,使用的编程语言是学生学习过的语言;⑦软件能在学校机房环境正常运行。
2)学生开发的小项目应具备的条件
项目应该是针对教学内容而设计的能由学生独立完成的、可以收到良好教学效果的小任务。最终过渡到某种具有实际应用价值的产品。该项目应满足下列条件:
①该项目过程可以用于学习一定的教学内容;②能将教学内容的理论与实践结合在一起;③该项目能够激发学生的学习兴趣;④项目有一定综合性,技术难点在案例中有所体现;⑤项目的应用领域涉及的知识学生能理解;⑥有明确的评分标准,可以对完成的项目进行评价;⑦项目完成后,师生共同总结学习过程和方法。
3)案例项目驱动教学法的实践
项目教学过程分为四个阶段:第一阶段是让学生熟悉案例软件的使用,进行案例的感性认识,阅读相关案例的文档。第二阶段是让学生了解完成一个工程项目所需要完成的模块,直接引导学生进入项目“情景”,激发学生学习的积极性和能动性,又能让学生在以后开展项目开发时能体会到使用者的具体需要。第三阶段是在教师对案例各模块开发过程的演示下,针对本组项目开展研究讨论、分工协作,共同完成工程项目的系统分析、结构设计、代码编写、程序调试等工作。第四阶段由项目组共同完成实训项目。
参考文献:
[1]毛玉萃.计算机科学与技术专业实践教学体系的构建与实施[J].实验室科学,2009,(4):97-99.
[2]朱翠苗,郑广程等.高职计算机专业实践教学体系构建[J].职业技术教育,2009,(26):67-68.
[3]马刚.浅谈模拟软件在计算机实践教学中的应用[J].科技信息,2010(11):230,184.
[4]王永飞.高职计算机专业课程实践教学现状和对策研究[J].铜陵职业技术学院学报,2009(3):14-16.
篇10
关键词:软件工程;综合实践;软件过程;迭代开发
为了提高软件工程人才培养的水平,增强学生的实践能力,文献[1]基于建构主义认知学说提出了一种创新的人才培养模式。该培养模式的特点是在第6―7学期引入长周期的综合实训。为便于实施,该综合实训可按学期分成两段。其中第6学期的实训为期20周,如何开展全面的软件工程过程实践,是本文要探讨的对象。此实训将部分原在课堂讲授的理论课贯穿在实训中讲解,并要求学生以小组为单位完成软件开发项目,从而理解和掌握软件开发过程与技术。为有效开展此实训,本文依据现有软件过程理论和经验,对实训中的软件过程进行探讨。
1概念与研究的必要性
软件开发过程是指在工业化环境(如软件公司、大型软件开发团队)开发软件的有先后顺序的一系列活动。它是将各种软件技术组织在一起的粘合剂,是合理高效开发软件产品的保证[2]。对软件过程的描述,往往包括过程模型、活动、角色、制品等方面。
软件工程综合实训课程的目的是为了让学生熟悉软件开发过程,掌握软件开发技术,增强实际动手能力。它与实际软件开发有以下几点不同:
1) 目标不同。前者以培养学生为目标,后者以生产软件为目标。
2) 实践主体不同。前者为学生,后者为工作者。
3) 环境不同。前者在学校的模拟环境进行,后者处于具体的软件开发环境。
这意味着实训教学中应该采用接近实际的软件开发过程,但又不能完全照搬实际过程。这是我们必须探讨综合实训软件开发过程的原因。以下从软件开发过程模型、过程角色、主要活动及对学生的考核等几方面对软件工程综合实训的软件开发过程进行讨论。
2综合实训的软件过程模型
历史上,出现过多种软件过程模型,但大致可分为线性模型和迭代模型两类。线性模型也称瀑布模型,已被实践证实不能适应需求变化的场景。迭代模型认为软件开发是一个反复的过程,比较符合软件复杂、易变的本质,是当今软件开发的主流思想。
在考虑实训教学软件过程模型的选取时,应以简单易行、便于软件技术学习、便于软件过程理解为出发点。单从简单易行的角度,采用瀑布模型比较有吸引力。瀑布模型的步骤和章法清晰,教学组织方便。但是,如果使用瀑布模型,对迭代过程的介绍只能停留在口头上,学生无法从实践中领会这一重要的过程思想。瀑布模型是一次性完成需求描述,然后做全面
设计。这不利于由浅入深、循序渐进地掌握软件架构、设计和编码方面的技术。如果采用迭代式模型,虽会令实训的组织和管理变得复杂,但既可以领会瀑布模型的章法,也可以克服瀑布模型的弊端。对于本文所针对的长达一个学期的综合实训,其教学目标是多维和综合的,既要在过程中传授显性知识,也要通过过程组织和实践指导传递隐性知识。如采用瀑布模型,会将开发过程理想化,而使很多隐性知识和实践经验难以传播。因此长周期的综合实训采用迭代式过程模型更合理。
按照有关迭代开发经验[3],对于小型项目,以3周为一次迭代较合适。我们决定将20周的实训分为开始1周、结束1周、中间6次迭代18周。各次迭代的目标如表1所示。
表中,迭代1的任务是发掘和初步表述系统的主要需求,并设计系统原型;迭代2要完成系统的主要功能,约占全部功能的30%~40%;迭代3完成系统的全部功能;迭代4对系统架构进行优化,增加业务逻辑层;迭代5进一步优化系统架构,增加数据读写层;跌代6使用现有框架对系统进行重构。
在实际的软件开发过程中,早期迭代要着重于影响架构的功能和性能需求的实现,从而一开始就为系统选择合理的架构。但在实训教学中,按由浅入深的教学规律,在学生具备一定的开发经验后引入架构设计知识。因此,前几次迭代较少涉及架构设计的细节,所完成的软件在架构方面是不成熟的。在后几次迭代中,通过对代码的重构逐渐完成软件架构的优化,从而让学生牢牢树立架构设计的理念。这是实训软件过程与实际软件过程的区别。
上述各次迭代的目标,也是系统开发的里程碑。教师检查各次迭代提交制品的同时,也考核了学生团队的成绩。
3综合实训过程中的角色
基于文献[4]及文献[5]的思想,软件工程综合实训学生团队应设置对等角色。即每个小组成员担任一种角色,负责一个方面的工作,同时又是其他成员所负责工作的参与者。这既是实际开发团队的做法,也最适合学生的学习。
考虑到项目规模较小,实训时间较长,一个小组人数不宜过多。以5人一组,分别扮演组长、开发经理、计划经理、测试经理、技术支持经理等角色,各角色职责主要为[4]:
1) 组长:负责小组建设,让小组成员有共同的目标和项目愿景,激励士气,维持纪律,安排任务,主持每周小组例会、成员互评等。
2) 开发经理:主持小组开发工作,包括需求、分析与设计、实现等过程。
3) 计划经理:负责带领小组制订项目计划和迭代计划,督促各成员按要求完成工作日志,制订项目周计划,整理项目周报,对计划进行跟踪,在例会或计划会议上通报项目进度。
4) 测试经理:负责测试计划的制订,编写测试用例,组织测试实施及管理,组织每日集成测试。
5) 技术支持经理:组织执行配置管理、变更控制、数据库管理及风险管理,培训本组成员正确使用工具软件,督促每日代码签入、签出。
上述角色职责涉及的各种活动,详见第4节说明。指导教师在实训中的角色是代表客户方提出对系统的要求,同时也是学生开发活动的指导者和监督者。
在实际的软件开发过程中,团队成员的角色在一个项目中是固定的。但在实训过程中,为了让学生得到更全面的训练,可规定每两次迭代交换角色一次。这样在整个实训中,每人都可以担任三种不同的角色。这是实训过程不同于实际过程的地方。
4综合实训过程的主要活动及制品
依据文献[4]和文献[6],将学生在综合实训中的活动领域分为两大类,一类是核心开发域,包括业务分析、需求、分析与设计、实现、测试、部署等;一类是核心支持域,包括团队管理、计划管理、配置管理、环境支撑等。各活动域的活动种类、制品及负责角色如表2所示,共有约30种活动。
上述活动涉及很多学生尚不了解的知识。对于其中适合讲授的显性知识,由专题主讲老师在过程中集中讲授;对于可以通过实践过程习得的隐性知识,通过实训指导书对有关活动的规范和引导,让学生在活动中领悟。需要集中讲授的知识可以分成以下几个模块:
1) 项目辅导。介绍有关小组建设、小组沟通、工作理念、计划管理等方面的知识,对开发过程的纪
律、工作程序、会议等作具体的指导。
2) 软件开发过程。主要介绍软件开发统一过程(RUP),包括迭代开发方法,各种开发活动、角色及制品的含义,配置管理及风险管理等。
3) 数据库管理。结合项目和实训环境指导学生设计和管理大型关系型数据库。
4) 软件测试。结合项目介绍各种测试活动的要求、内容和组织实施办法。
5) 系统分析与设计。介绍面向对象的可视化建模方法、软件架构设计、模式应用等方面的知识。
6) 程序设计技术。介绍完成项目所需要的程序设计技术。包括Web应用开发、多层体系架构的实现、测试驱动的开发、应用程序框架设计与应用等内容。
在开展项目过程中,讲授也是重要的环节,这也是本实训过程与实际过程的不同之处。
5考核方式
作为一项教学活动,必须对学生学习情况进行考核并给出成绩。由于该实训长达一学期,理论课学时较多,所对应的学分也较多。如果采用一次性考核,显然操作难度很大,也不利于在过程中发现问题,激励学生。因此,本实训最适合分阶段考核,即对每次迭代进行考核,成绩由三部分组成:一是本次迭代过程有关理论知识掌握,占40%,采用笔试方式考核;二是工作成果,占30%,以测试迭代产生的结果为依据;三是工作表现,占30%,通过统计考勤、学生互评及老师评价得到。每两次迭代完成,学生交换角色前,要求每位学生提交所担任角色工作的总结报告,作为单独的角色考核。由于角色是任选的,此考核学分可作为选修学分记入成绩表。
6结语
由于实训与实际软件开发不同,实训软件过程不能照搬实际开发过程。为了与当代流行的软件开发过程一致,也为了能循序渐进地教学,在实训中选择迭代式开发模型。项目小组的成员依次承担多种角色,并产生相应的制品。实训的考核以迭代为单位进行。按照这样的过程开展本文所述约30项实训活动,必将提高学生对软件工程知识的认识和实际的动手能力。
参考文献:
[1] 郑大鹏,林国璋,张克军. 一种创新的独立学院软件专业人才培养模式[J]. 计算机教育,2010(8):1-3.
[2] Roger S. Pressman. 软件工程―实践者的研究方法[M]. 4版. 北京:机械工业出版社,1999:22-49.
[3] Craig Larman. UML和模式应用[M]. 3版. 北京:机械工业出版社,2008:13-20.
[4] Watts S. Humphrey. 小组软件开发过程[M]. 北京:人民邮电出版社,2000:163-225.
[5] 微软公司. MSF Team Model v.3.1[EB/OL]. [2010-11-06]. /msf:17-19.
[6] Ivar Jacobson,Grady Booch,James Rumbaugh. 统一软件开发过程[M]. 北京:机械工业出版社,2002:3-11.
On Software Process of Software Engineering Comprehensive Training
ZHENG Dapeng, XIAO Youqing, ZHANG Xiaoyan, ZHANG Shenyong
(Zhuhai Campus, Beijing Institute of Technology, Zhuhai 519085, China)