问学必有师,讲习必有友,以下是细致的小编为大家收集整理的9篇软件测试培训的相关文章。
统一思想,明确目的.大学生电子设计大赛是考察在校大学生专业知识和实践能力的综合型竞赛,是检验学校办学能力的高水平竞赛,同时保证参加大赛的同学能通过大赛这一平台有所收获和进步.指导教师通过比赛积累经验,实现比赛在学校可持续发展,实现以赛促管、以赛促学、以赛促改.大学生电子设计大赛组织过程分为宣传、动员、报名、培训、筛选、强化、竞赛、奖励、总结.赛前准备包含赛前组织和赛前培训.赛前组织包括人员组织、经费组织、设备与耗材组织,赛前培训是对学生进行针对性高强度模拟训练,赛前精心准备是竞赛成功的一半,让每位指导老师和同学在电子设计大赛赛前、赛中、赛后都有所收获.
1.1赛前组织
1.1.1人员组织
学校成立电子设计大赛领导小组.全国大学生电子设计大赛和省级大学生电子设计大赛轮流隔年举办一次,领导小组是常设机构,负责电子竞赛组织、管理、协调工作.电子设计大赛领导小组组长一般由主管教学副校长担任,副组长由学校教务处处长和相关学院院长共同担任,办公室主任由电工电子实验中心主任担任.办公室设在实验中心,负责处理大赛日常事务,成员包括指导老师、实验员及大赛相关人员.电子设计大赛领导小组负责相关部门协调和政策落实和大赛组织和宣传,负责参赛人员管理和学生培训,负责赛前制定培训计划收集整理资料,负责与赛区组委会联络和大赛专项经费管理,负责元器件及耗材保管、整理、发放、采购和培训竞赛场地管理,负责培训竞赛后勤保障和学生管理.电子设计大赛人员组织包含指导老师的组织和参赛学生的组织.强有力的指导老师团队是电子设计大赛取得成功的基础.随着技术发展,大赛专业知识广度和深度不断加深,题目更加新颖贴近生活,包括电源类、控制类、无线收发类、仪器仪表类等,涉及电子技术各领域和方向,对指导老师综合素质和能力提出了更高要求.指导老师需要精通模拟电路、数字电路、高频电路,精通51单片机和熟练运用CORTEX-M3嵌入式系统、CPLD/FPGA可编程逻辑器件、DSP数字信号处理器等,有丰富的实践经验和极强攻坚能力.根据实际情况组建指导教师团队给学生全方位的指导,充分发挥指导教师特长,取长补短,相互学习,共同提高.参赛学生是大赛主体,加强宣传,吸引更多同学参与大赛,同时保证竞赛质量和水平,经选拔合格或任课老师推荐才能正式报名参加.大三学生知识结构和实践能力强于大二学生,选拔时以大三学生为主,适当选取大一、大二学生保证后备力量,组成电子设计大赛参赛队伍.通过学校宣传、领导小组动员、辅导员讲解,使参赛同学全方位多角度了解电子设计大赛的意义和目的,对就业和成长的帮助,调动学生竞赛积极性和热情.
1.1.2经费组织
电子设计大赛经费使用原则:预算清晰,专人管理,专款专用,合理使用,厉行节约,保证运行,各项开支在预算内完成,开支与预算一致.经费来源分为学校年度预算和校内部门筹集,用于电子设计大赛基本运行和指导教师课时补贴.基本运行包含报名费、管理费、电子元器件及耗材采购添置、竞赛期间餐费及其他杂费.指导教师课时补贴指赛前教师培训课时费、竞赛期间指导教师补贴.电子设计大赛经费不含教师差旅费和竞赛获奖后学校发放奖金,赛后根据政策另行拨付.
1.1.3设备耗材组织
大赛设备耗材专人管理,专人采购,统一分配;培训类耗材由培训教师提出计划统一采购.
1.2赛前培训
电子设计大赛赛前对学生的培训是学生提高的重要过程,很大程度上决定了比赛成绩.指导教师根据历年竞赛内容和特点,结合自身特长制定详尽的培训计划和方案.大三学生知识相对全面但实践应用能力较差,没有系统设计经验,知识点孤立难以将各门课程融合到一起,大二学生专业知识结构不完整,认识片面,指导教师根据学生实际情况因材施教做出个性化的培训与辅导,使培训效果达到最佳.培训分两个阶段,时间5~6周.第一阶段(3~4周)采用集中授课与实际制作相结合的方式,第二阶段(2~3周)采用三人一组半开放自主设计的方式.第一阶段包含模块电路分析、设计、调试、制作、参数测试、基本仪器使用及报告书写,对往届比赛重点模块电路进行有针对性专题讲座和制作.重点模块有电源电路、信号调理与运算放大电路、传感器与微弱信号检测电路、信号发生电路、通信电路、电压与频率转换电路,单片机最小系统、人机交互电路、数据采集电路、驱动电路等.设计报告内容包含:摘要,叙述核心技术、实现方法与发挥;系统设计方案,叙述方案选择、系统结构、实现方法;硬件电路设计与分析计算,叙述硬件电路原理、计算、设计与实现;软件设计,叙述软件程序思想、流程、实现方法与重点程序;测试结果与分析,叙述测试仪器、测试方法、测试结果、数据分析;总结与展望,总结题目完成情况、存在问题与展望.第一阶段使学生掌握基本模块电路,对电子设计进一步了解和认识,优秀学生脱颖而出,具备冲击奖项实力,指导教师对这部分同学重点关注,毕竟指导教师精力有限,不可能面面俱到,拿奖也是一项重要而艰巨的任务.第二阶段3人一队进行赛前热身.按比赛要求自主设计,锻炼同学们系统分析与设计、制作与调试、参数测试、团队分工与协作能力.每队由3名同学自愿组合组成,1名同学负责软件编写,1名同学负责硬件制作,1名同学负责报告撰写.实际比赛有很多突况需共同讨论、共同参与、共同应对、共同解决.指导教师可以根据以往题目特点、内容和难度自行设计题目,也可以直接选择往届典型题目.第二阶段模拟训练展现了各队水平和能力,也暴露存在的问题,指导教师根据每队实际情况进行赛前辅导.
2赛期管理
比赛前2~3周,组委会发放比赛用单片机和开发平台,提前让参赛队熟悉开发环境,赛前一周公布本届电子设计大赛可能用到的元器件测试仪器,指导教师团队根据公布元器件清单估计本届比赛可能出现的题目和用到的模块.指导教师对器件进行分析,列出本次大赛可能用到元器件详细清单,交器件管理员清理汇总,不足部分立即准备和采购,采购应确保器件质量,排除器件质量问题带来的故障和干扰.参赛队在赛前调试好竞赛场地仪器设备,查看元器件清单结合指导老师分析对新器件和不熟悉模块进行搭建与调试,为比赛正式开始做好准备.4天3夜的电子设计大赛开始后,第一天选择题目、设计方案与具体电路,领取元器件及耗材,不足的元器件汇总立即采购.第二天完成软件编写和部分模块电路搭建.第三天完成软硬件联调和报告书写.第四天完成参数测试,有能力的同学完成发挥部分设计.
3赛后总结
关键词:软件测试;校企合作;面向企业;教学改革
0 引言
随着软件技术的发展和应用日益广泛,软件系统的规模和复杂性与日俱增。然而,由于软件本身是逻辑实体,软件开发目前还主要依赖手工劳动,软件的变更比较频繁等,导致了软件质量很难得到保证。软件缺陷导致的各类损失不断增加,甚至带来灾难性的后果。软件质量问题已成为所有软件使用者和开发者关注的焦点,而作为软件质量保证和质量控制的有效手段,软件测试受到了企业、用户及专家越来越多的关注。随着用户对软件质量要求的提高,企业对软件测试人才的需求量逐年递增。据前程无忧网数据显示,2011年国内软件测试人才缺口高达20万,2012年缺口突破30万人。作为人才培养的主要基地,高校成为企业挖掘软件测试人才的主要关注地。然而,从目前的企业反馈来看,应届毕业生很难直接被使用,而是需要经过长时间的培训,成本较高,这导致了企业对高校人才引进的信任危机。高校也慢慢意识到了这些问题,开始加强软件测试人才的培养。笔者从企业软件测试人员的引进及使用现状、高校软件测试人才的培养及教学现状进行分析,对软件测试课程教学改革进行讨论,并提出一些意见,以期能够对目前的软件测试人才培养起到一定的促进作用。
1 高校软件测试课程教学现状
2001年12月,国家批准建立了35所部级示范性软件学院,其中软件测试课程成为本科及硕士研究生的专业核心课程之一。然而受传统人才培养模式的影响,高校在软件测试课程设置及人才培养上存在着如下不足。
1.1 传统“知识碎片”式的教学模式
在软件测试课程的教学上,大多数高校仍然采用的是以理论教学为主,实践教学为辅的教学模式,教师在课堂上讲授理论知识,学生上机完成相应的作业。教师授课时采用的案例和学生课后的作业,大多数都是以掌握知识点为主,比较片面,学生无法形成对软件测试工作的整体认识,更多的是一些“知识碎片”。如讲授测试用例设计方法时,教师已讲完等价分类法,学生也做了作业,但是学生最终还是不清楚到底为什么要学习等价分类法、在什么情况下用等价分类法,甚至实际应用中真正的测试用例是什么样子都不清楚。类似的单一孤立知识点的学习对学生来说并不合适。
1.2 具有专业知识及实际经验的师资力量匮乏
目前在高校从事软件测试课程教学的教师中,不具备软件测试专业知识及实际软件测试项目经验的占很大比重。一些教师未经过软件测试专业知识培训,不具备实际经验,仅仅是凭借书本进行理论教学,对现实企业中的软件测试工作不了解,无法针对企业的人才需求展开具有针对性的教学活动。
1.3 实践教学环境不完备
软件测试是一门实践性要求较高的课程,仅仅是通过小型的测试练习是无法达到实践的目的和效果的,必须建立完备的实践教学体系和环境。目前高校普遍缺乏真正的软件测试环境,学生无法通过项目实践来理解和深入学习软件测试的相关技能,如软件测试工具的使用,网络架构对软件系统性能的影响,大批量数据处理的性能测试及分析等。
1.4 对学生的理解误区未给予正确的引导
学生在大学校园中的学习受到社会观念的影响,对软件测试产生错误的认识和理解,对现实中的软件测试工作缺乏兴趣,从而影响到对软件测试知识和技能的学习。如“软件测试工作的技术含量较低,发展前景不如软件开发工作”“软件测试工作薪资较低”等,对于这些错误的认识,教师在教学过程中未给予正确的引导,从而导致学生就业后不愿意从事软件测试工作。
2 企业软件测试人才需求及使用现状
2.1 企业软件测试人才引进现状
软件测试属于软件质量管理的范畴,与软件开发不同,软件测试并不直接产生效益,所以企业在这方面的人员投入相对比较谨慎。在欧美等软件产业发达国家的软件企业中,测试人员与开发人员的配置比例一般已达到或超过1:1;而在国内被调查软件企业中,能够基本达到该比例的企业仅占22%,很多软件企业的测试人员与开发人员的比例达到1:7以上。
随着国内软件市场不断扩大,软件企业逐渐走人正轨。近年来,软件质量越来越被关注,软件测试日益引起国内软件企业的高度重视,企业在软件测试人力上的投入也在逐渐增大。而目前企业引进软件测试人才的主要途径有3个方面:高校、培训机构和自主培养。自主培养软件测试人员的周期相对较长,无法满足人才需求的快速增长;社会培训机构举办的各类培训价格不菲,生源相对较少,且培养出的人才质量良莠不齐,无法缓解人才市场的紧缺状况,这就使得高校成为软件测试人才引进的主要源头。然而,国内高等教育院校对相应的市场需求反应迟缓,开设软件测试专业的院校很少,且应届毕业生常常无法马上胜任相关工作。
2.2 企业软件测试人才技能要求
目前,企业中软件测试人员的工作岗位主要包括以下几种。
1)测试员。
测试员的技能需求主要包括:根据测试规程执行测试,记录测试过程及结果,编写测试日志和提交BUG描述;编写用户手册、在线帮助;参与整理测试项目相关文档、资料等。
2)测试工程师。
测试工程师的技能需求主要包括:根据自动化测试设计,编写测试脚本;根据测试模拟环境设计,开发测试模拟环境及测试工具;协助OA人员对代码进行规范性检查(按照公司标准文件),并记录检查结果;代码测试及走查;制定测试规程,审查测试员的测试日志及BUG描述,并对测试员的测试工作进行指导;分析测试过程及结果,指出可能出错的原因等。
3)高级测试工程师。
高级测试工程师的技能需求主要包括:制定测试方案;分析软件项目需求,进行测试需求分析;根据软件项目概要设计、详细设计和测试需求,进行测试设计,编写测试用例;进行自动化测试设计,并指导测试工程师编写测试脚本;测试工具及测试模拟环境的设计,并指导测试工程师进行测试工具及测试模拟环境开发;进行测试结果分析,编写测试分析报告;在统计分析的基础上对软件整体质量进行评估,提出软件过程改进建议;改进测试过程、方法、技术和工具等。
4)测试经理。
测试经理的技能需求主要包括:测试项目总体计划的制订;组织测试项目总体计划的评审;测试项目执行过程的跟踪和监控管理,并向软件项目组负责人和质量部测试主管报告测试项目的执行情况;分析测试项目资源(人员、设备等)需求,申请资源并参与相关协调工作;制定测试规范;制定阶段测试计划,分配测试任务;组织测试方案、测试需求、测试设计、测试用例、测试脚本、测试分析报告等的评审;组织测试人员的相关培训;测试项目总结;测试项目组的日常管理工作;测试项目组内部的沟通与协调;测试项目组与开发组之间的沟通与协调;测试项目组内部人员的绩效考核管理;向软件项目组提交测试分析报告等。
3 软件测试课程改革方案
综上可以看出,高校在软件测试人才方面的培养模式已经不能适应我国软件产业发展的现状,不能够提供适合企业需求的软件测试人才。为适应我国经济结构战略性调整的要求和软件产业发展对人才的迫切需要,实现软件人才培养的跨越式发展,笔者认为高校应该根据企业需要,针对软件测试课程展开深入的教学改革和实践活动,调整培养方案,从而培养出大批合格的软件测试人才。
软件测试属于软件工程专业的一个方向,可以依托软件工程专业,加强软件测试课程建设,加大软件测试方面的师资力量,改进教学方法,加强实践教学环节,培养出具有扎实的软件测试理论基础、掌握测试方法和具有一定测试经验的人才。
3.1 正确引导学生的学习观念,培养学习兴趣
要想培养优秀的、符合企业要求的软件测试人才,必须正确引导学生的学习观念,培养学习兴趣。由于社会上一些错误观念的引导,导致了学生毕业后不愿意从事软件测试工作,从而对软件测试课程的学习兴趣不浓。学生中普遍认为“软件测试工作的技术含量不如软件开发”“软件测试工作是一种简单的、重复性的劳动”“软件测试工作更多的是需要耐心,而不是能力”等,对于这样的错误观念,应加以正确的引导。
首先,应分析这种观念产生的原因。在毕业生就业时,很多企业对软件开发人员开出的薪资比软件测试人员高,这是实际存在的现象。进一步分析这种现象产生的原因主要与企业目前的软件测试工作现状有关,大部分企业所作的测试主要集中在功能测试,甚至是界面测试上,难度相对较小;招聘岗位基本上定位为测试员,所以开出的薪资较低。而对于测试工程师、高级测试工程师等软件测试岗位,企业开出的薪资并不会比软件开发岗位低。
其次,可以将软件测试工作和软件开发工作相比较,目前在企业里的软件开发基本上都是采用成熟的开发框架,开发人员只需要编写少量的代码就可以完成相应的功能模块。同时为了开发效率高,企业基本上会将开发人员定位为某个技术领域,比如界面层开发、业务逻辑层开发、数据处理层开发等,不会让开发人员随意变更技术领域。每个领域的开发都是有“前辈”积累的代码或成熟的框架和组件,开发人员的开发难度相对较低,在不同项目中重复性很高,“技术面狭窄、无法深入”已经成为开发人员的明显特征。反观软件测试工作,虽然测试员的工作相对简单,但是对于测试工程师和高级测试工程师来说,其工作涉及需求分析、设计和编码等范围,在项目中要涵盖每一个领域。比如功能测试要涉及业务的全面理解,性能测试要涉及各个知识领域,包括框架、数据库、通信、网络等;从技术来说,软件测试人员比软件开发人员的知识领域和知识理解程度“更宽、更深入”。通过引导,让学生更清楚软件测试工作的现状和未来发展,从而提高其学习兴趣。
3.2 基于完整项目的实践教学
软件测试的目的是“尽可能地发现软件中的缺陷”,要达到这个目的就必须要了解软件,了解软件的开发过程,了解软件开发人员的思维方式。目前很多高校软件测试课程的实践教学都采用小组的形式完成一个测试任务,编写《测试计划》《测试用例》《测试总结报告》等文档,但是这样的实践教学模式过于形式化。学生基本上都是“为了测试而测试”,生搬硬套文档模板,是因为并不了解软件及开发流程,无法从本质上寻找问题,测试流于表面。
要想更好地提高测试技能,必须改变实践教学模式,不能将测试与开发相脱离,而应该让学生投入一个完整的项目实践课题,从中体会测试与开发的关系。项目实践课题可以关注以下几个方面。
(1)课题内容以学生学习和生活中所熟悉的软件系统为对象,如《学生宿舍管理系统》《图书馆管理系统》《校园邮件收发管理系统》等,这样可以更好地引起学生的兴趣。
(2)课题的组织采用小组的形式,3~5人为一个小组,自由组合,并推选一位项目负责人来管理项目。
(3)课题的目标是完成一个软件系统的开发及测试。考虑到与企业里的真实工作流程相结合,项目采用“交叉测试”形式,即每个小组完成本组软件系统的开发任务,然后将软件(包括文档)提交给另外一组进行测试,这就符合“第三方测试”的要求。
(4)课题的考核采用小组答辩的形式。每个小组将自己的开发成果、测试成果进行展示,其他组的同学和老师可以有针对性地提出问题,并对每个小组进行打分,然后根据权重值产生每组的最终成绩。
通过这样的项目实践,可以让学生了解软件项目的开发和测试整体流程。在开发时考虑可能会出现的问题;在测试时进行反思,并深入挖掘,以自身的开发实践来促进测试,对测试的技术难度和复杂度有更深切的体会,从而提高软件测试技能。
3.3 加强校企合作,提高师资水平,建设课程实践环境
企业需要人才,高校为企业培养人才,这无疑为校企合作提供了可行性。高校目前在软件测试课程教学上存在着一定的困难,一方面是师资问题,缺乏具有实际软件测试经验的教师;另一方面是课程实践环境问题,缺乏真实的软件测试环境。这些问题都可以通过校企合作来寻求解决。
(1)高校将教师送到专门的培训机构学习软件测试技能;还可以与企业合作,将教师送入企业参与实际的软件项目,与测试人员一起工作,在实践中学习。这样就可以培养出一批具有实际测试经验和技能的专业教师团队。
(2)高校和企业合作建立软件测试模拟环境,可以参照企业来建立自己的测试模拟环境,也可以和企业共享。这样既节约了成本,又能使得测试环境更加专业,满足学生课程实践的需要。
(3)聘请企业中的资深高级软件测试工程师和软件开发工程师到学校担任助教或顾问,与学生面对面交流,对学生的学习和实践进行指导,从而开拓学生的视野。
(4)在教学中引入企业的实际项目作为案例,结合实际项目中所用到的测试方法和测试技能;也可以请实践项目的开发人员和测试人员现身说法,与学生共享实际经验,让学生真切体会实际项目和理论教学之间的差别,从而达到理论和实践相结合的目的。
(5)聘请企业中资深的软件测试人员带领学生进行课程实训,实训的题目可以是虚拟的也可以是企业中的实际项目;或者让学生到企业进行实训,参与实际的软件项目,让他们真正了解实际的软件测试流程及方法,在实践中提高测试技能。
通过与企业合作,不仅能够培养一支具有实际经验的师资队伍,也能让学生从企业的项目中学习到实际的技能。同样,企业也可以在与高校的合作中引进自己所需要的人才,这对于双方来说都是非常有价值的。
3.4 走教学产业化发展道路
虽然高校并非是盈利机构,主要以培养人才和科学研究为主,但是“巧妇难为无米之炊”,培养人才和科学研究必须要有相应的资源。如果单纯依靠国家的投入,无疑是“杯水车薪”,所以,需要考虑依靠自身的力量和优势来获得资源。教学产业化是一条可以尝试的发展道路。
在软件测试的课程建设中,可以考虑通过国家投入和企业合作的方式,建立一个完整的软件测评环境以及一支由高校教师和企业资深的软件测试工程师共同组成的软件测评队伍,这样的测评环境和测评队伍可以在满足高校实践教学的基础上面向社会,与一些具有资质的测评中心合作,共同承担企业的软件测评任务。这反过来能够促进测评环境和测试队伍的建设和发展,不仅满足了教学要求,又寻找到了一条产业化的发展道路,无疑会对高校其他学科的建设和发展提供借鉴。
4 结语
笔者正是从企业用人的实际需求出发,提出加强校企合作的如上思路,提出面向企业的软件测试课程教学改革方法,让企业能够真正引进优秀人才,让高校走上产业化促进教学发展的道路。
参考文献:
[1]杨鹏,贺平。高职软件测试专业的构建与探索[J].计算机教育,2008(2):63-66.
[2]王福良,任传荣,杨彩萍。关于普通高校教学课程体系改革的思考与实践[J].天津工业大学学报,2002,21(3):26-28.
该书充分考虑了国内大多数院校办学条件不足,实验教学经费有限,无法全方位引进商用软件测试工具,无法开展软件测试实验室建设的实际情况,对国内外主流的开源软件测试工具进行全面分析、研究和优选,并经过北京工业大学软件学院5轮实践教学的检验,来设计该书的实验教学重点和实践能力要求。该书的实验内容之广,涉及的软件测试知识之多,以及开源软件测试工具介绍之全面,无论是对于教师进行实验指导,还是培训机构进行实战训练或者学生进行自学自练,都是不可多得的实验教材。
该书与国内常见的软件测试实践教材重点讲授某个或某几个商用软件测试工具的方法不同,它是以现代IT企业软件测试需求为背景,以主流的软件测试技术和方法为基础,以当前的软件测试应用为实例,全面介绍了支持各种软件测试类型的开源软件测试工具的主要功能、应用流程及实际案例。特别突出了软件测试工具在实际测试项目中的使用能够有效地巩固所学软件测试知识,掌握软件测试方法和技术以及提高软件测试实战能力。
该书分为管理、静态分析、单元测试、GUI测试、性能测试以及软件综合评测等6大部分,共有12章。主要内容包括:软件缺陷管理、软件测试管理、程序理解、代码静态分析、xUnit单元测试框架、单元覆盖测试、Java GUI基础类库应用测试、Web页面测试、Gtk+用户界面测试、单元性能测试、Web应用性能测试以及软件综合评测工具等。在该书中,较大篇幅地介绍了如何使用主流开源软件测试工具建立测试环境,如何将它们用于实际软件项目的测试。这种举一反三、抛砖引玉的内容设计,对高校软件测试实践类课程的开设、培训机构软件测试的实战培训以及开发人员和测试人员自学是非常有现实意义的。该书在最后一章特别强调了软件综合评测的意义,并以南京大学研制的Eastt工具为实例,全面介绍了软件评测的思想和过程,有助于学生全面掌握软件评测的方法和技术,提高实际的软件评测能力。
【关键词】Scrum 敏捷开发方法 软件开发 实训教学 应用
【中图分类号】 G 【文献标识码】 A
【文章编号】0450-9889(2014)12C-0059-03
一、问题的提出
1970年温斯顿・罗伊斯在软件开发中提出了著名的“瀑布模型”。该模型将软件生命周期划分为制订计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本阶段,各阶段工作必须按次序自上而下开展,每个阶段要撰写大量文档,并对工作结果进行严格验证,只有上一阶段工作结束,才能开启下一阶段工作。这种开发模式应对上世纪60年代出现的软件危机问题,是一种很好的解决方案,成为了软件开发模型的经典。
当前,随着软件开发技术的进步,人们发现“瀑布模型”灵活性差,不适用于需求不明确的软件项目,很多软件企业已不再使用“瀑布模型”,但它作为软件开发模型的经典仍广泛应用在高校软件开发实训课堂中。实际上,应用“瀑布模型”进行教学的高校计算机软件开发相关专业学生毕业时的动手能力远远达不到企业的要求,这说明该教学方法和实训模式存在问题。为了提高学生实践能力,很多高校与计算机软件开发培训机构或企业进行联合办学,以弥补学校实训教学能力的不足。
二、“瀑布模型”实训教学存在的问题
应用“瀑布模型”进行的实训教学中主要存在如下问题:
首先,学生把握项目需求的能力差,难以达到“瀑布模型”对开发者的要求。“瀑布模型”适用于需求明确的项目,要求开发者具有很强的整体把握能力和前瞻性。但是对于初学开发的学生来说,需求再明确的项目,他们也不能很准确地把握细节,导致实训进程不能按计划正常开展,影响了实训效果。在实际教学中,虽然很多实训项目在以往的教材中有类似的解决方案,但是区别还是存在的,学生看不到软件在实际应用中可能出现的问题,到了项目开发后期才发现错误,导致实训项目失败。
其次,在“瀑布模型”开发的每一个阶段,都要求撰写细致准确的文档,这大大占用了学生的实训时间。据统计,如果严格按瀑布模型的要求来撰写文档,消耗的时间至少是整个实训时间的1/5。本来实训课堂留给学生实训的时间就不多,对一些效率低的学生来说,文档还没写完实训期就结束了,整个实训过程变成了纸上谈兵的演练。
最后,“瀑布模型”实训方式过时,学生不能学以致用,实训技能与企业要求脱节。当今的软件开发中,已经很难看见完全实施“瀑布模型”的企业,大家都已对“瀑布模型”进行了改进或者实施其他更先进的开发方法。教育部曾多次指出,高校教育应服务地方和行业,密切与行业、企业合作,为企业提供人才培养和技术服务支撑。这要求我们必须改革过时的实训模式,使教学与行业结合,与企业接轨。
三、Scrum敏捷开发方法概述
近年来,很多先进的软件开发模型在实际应用中得到了推广,这里要特别提出的是敏捷开发。著名IT组织VersionOne在2013年进行的敏捷现状调查结果显示,在全世界收集的3501份调查报告中,使用敏捷开发方法的占88%,其中使用Scrum敏捷开发方法或Scrum变种开发方法的占73%。这个调查数据充分说明了敏捷开发方法在行业中的主导地位。
敏捷开发(Agile development)是一种以人为核心、迭代、循序渐进的开发方法,它把项目分割分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。敏捷开发方法包括Scrum、Crystal和极限编程(XP)等,是一组开发方法的总称。它也是软件开发的一个过程管理框架,遵循了敏捷开发的主要价值观:个人与交互重于开发过程与工具;可用的软件重于面面俱到的文档;与客户的合作重于对合同的谈判;响应变化胜过遵循计划。
Scrum敏捷开发过程是迭代的增量开发,整个开发过程由若干个短周期的迭代组成,每一个迭代周期称为Sprint(冲刺),每个迭代实现不同的特性,迭代中重大的、优先级高或风险高的特性优先实现。Scrum敏捷开发方法重视软件的可用性,强调与客户的沟通,开发过程能够快速响应用户需求变更,尽早处理风险问题。
四、Scrum敏捷开发方法在软件开发实训教学中的优势
相对于“瀑布模型”,Scrum敏捷开发方法具有更多适合软件开发实训教学的优势,主要表现在如下方面:
第一,能够快速响应需求变更。与实际开发相似,学生的实训项目都是在重复多次的修正需求、修改设计后才交付实现的。Scrum敏捷开发方法中的Sprint都很小,即使需求变更很大,也可以在短时间内修改设计完成开发。而“瀑布模型”希望需求是稳定的,但不变只是愿望,变化才是永恒。如果在软件设计后期提出需求变更,那会是一种灾难。这种影响小则使实训进度不可控,重则导致实训项目失败。
第二,Scrum敏捷开发方法要求尽早编码,尽快开发出系统原型,尽早使客户见到可运行的软件,暴露项目的技术风险,从而提出优化意见。这恰好迎合了学生开发实训时急切渴望进行编程实现的心理,激发了学生学习的积极性。而“瀑布模型”要求推迟实现,要尽可能把需求分析透彻,设计完整,完成文档编写后才能进行编码实现。这个过程对急切渴望编程的学生无疑是一种打击。
第三,Scrum敏捷开发方法不要求文档面面俱到,更注重于软件可用性设计。在敏捷开发中,很多文档只是一个草图,大部分文档在集成测试阶段产生,而且只写有必要的文档。所以实训团队不需要安排专人撰写完备的开发文档,从而使学生有时间专注于开发实训工作。
第四,Scrum敏捷开发方法能更全面地培养学生的软件开发技能。在Scrum项目中,每个开发成员主动认领开发任务,开发过程涉及的设计、编码和单元测试全部是个人独立完成,实际上一个人承担了传统开发模式中系统架构师、程序员、测试员和产品构建经理等角色工作。这种实训方式有助于提升学生软件开发的单兵作战能力,从而快速适应企业软件开发工作的各个环节。
五、Scrum敏捷开发方法在软件开发实训教学中的实施
综上所述,在软件开发实训教学中使用Scrum敏捷开发方法,可以更好地促进教学,提高学生实践能力,实现教学与行业结合,与企业接轨。具体实施方法如下:
(一)组建开发团队,实行双教师教学
在实训中,可将教师和学生按Scrum敏捷团队角色分组,主要有以下三类角色:一是Product Owner(产品负责人)。该角色可安排熟悉产品需求的教师承担,负责产品需求的提炼、条目化和优先级排序。二是Scrum Master(团队负责人)。该角色可安排熟悉Scrum开发流程的教师承担,负责整个Scrum团队的协作运行,并协作解决非技术问题。三是Team团队成员。Team团队由Team小组长和3~5名小组成员组成。小组长由开发能力较强的学生担任,其他成员根据开发能力强弱穿插分配。每班学生可分为若干个Team团队,每个开发实训项目由一个或多个开发小组的学生在老师指导下完成开发任务。
在实训开发课堂中,之所以要实行双教师教学,一是开发团队角色需要,二是为了让教师能在实训过程中相互讨论,取长补短,弥补高校教师在实践经验上的不足,提高实训教学的整体质量。
(二)约定开发规范,精简开发流程
实训开始前,开发团队应约定统一的开发规范和流程,以便学生掌握团队开发方法,并养成良好的编码习惯。图1为经过精简的Scrum实训开发过程模型。
图1 Scrum开发过程模型
图1是Scrum开发的一个迭代周期。其中,Product Backlog为软件产品总的需求条目,这些需求多以用户故事(User story)的形式展现,Product Owned负责维护;Sprint Backlog是Product Backlog的一部分,通过计划会议(Planning Meeting)讨论选定,是需要在当前迭代(Sprint)中完成的需求条目;圆环为迭代开发(Sprint)的过程,一般周期为2~4周,迭代过程包含分析―设计―实现―测试等工作。迭代开发过程中,Team成员每天进行15分钟的站立会议(Daily meeting),主要汇报昨天做了什么、今天要做什么和遇到了什么问题。Scrum master每天负责绘制任务燃尽图(Burn Down Chart),以曲线展现当前Sprint任务的剩余量,这对团队开发有很大的鼓舞作用。每一次迭代开发完成后,教师要组织Team团队成员召开评审会议(Review Meeting),一个可执行的软件版本(Release),并让相关人员和团队成员提出优化意见。
(三)结对编程,以强带弱,相互促进
学生的学习能力和实践能力是强弱不一的。在实训过程中,教师的指导作用固然重要,但师生间的沟通往往没有学生间的沟通那么自如。因此,可以安排一个能力强的学生与一个能力弱的学生结对编程,充分发挥先进学生的带头作用,让后进学生有机会学习别人优秀的学习方法和实践经验,互相监督,互相促进,最终实现实训目标。
(四)持续集成,交换测试
在我们的实训中,并没有设立专门的软件测试小组,开发团队只是对软件进行了简单的单元测试。如果整个项目都要等到软件开发后期才进行集成测试,项目失败的风险就会很高。Scrum要求团队开发要尽可能频繁地进行集成测试,也就是持续集成。持续集成可以尽可能快地发现集成错误,通常每个成员每天至少集成一次,也可能进行多次集成。每次集成都通过自动化的构建(包括编译、、自动化测试)来验证,减少开发团队进行集成测试的时间消耗。实践基础好的团队可尝试实施测试驱动开发(TDD),即先编写测试代码,后编写功能代码,用测试代码驱动功能开发,这可以降低自动化测试的出错率,提高软件运行质量。如要进行人工测试,可安排各个开发团队进行交换测试,因为他人测试比自己测试更容易发现软件存在的错误。 (下转第87页)(上接第60页)
总之,Scrum敏捷开发方法是一种新兴的软件开发方法,很多实践方法和理论还在不断地研究中。实训教学终究是以传授技能为主,不需要拘泥于Scrum开发的全部形式,教师可对Scrum开发方法进行修剪和优化,从而更好地实现教学目标。自2013年起,柳州师范高等专科学校在软件开发实训教学中实施Scrum敏捷开发方法,现已成功开发了教学质量监控系统、科研工作管理系统两个真实项目,用户对软件的满意度很高,实训教学取得了良好的效果,但相关管理制度和实训措施还需要进一步探索和优化。
【参考文献】
[1]VersionOne Inc.8th Annual State of Agile[R]. VersionOne Inc,2013
[2]Mike Cohn. Scrum敏捷软件开发[M].北京:清华大学出版社,2010
[3]Freder ick P.Brooks,Jr.人月神话[M].北京:清华大学出版社,2007
[4]陈国栋,罗省贤。 Scrum敏捷软件开发方法实践中的改进和应用[J].计算机技术与发展,2011(12)
[5]Henrik Kniberg. Scrum and XP from the Trenches[M]. C4Media Inc,2007
[6]商惠华。计划驱动下敏捷开发过程的软件质量管理[J].汕头大学学报(自然科学版),2011(4)
【基金项目】广西高等教育教学改革工程项目(2013JGB301)
一软件测试课程教学存在的不足
目前,在很多高校计算机课程中,并没有单独开设软件测试技术课程,只在“软件工程”课程的某一章节进行了介绍,而在“软件工程”课程中,软件测试只是在软件开发进行以后才开始进行,这对于学生理解软件测试是极为不利的[3]。软件测试技术方面的教材不是很多,而且质量良莠不齐。有些学校开设的软件测试课程作为选修课,过多注重软件测试理论的讲解和测试方法的介绍,对于实践环节重视不够,缺乏系统的训练,距离软件公司对软件测试人才的要求差距较大。
软件测试课程教学中存在的问题主要有:(1)理论与实践脱节导致学生学习兴趣不浓;(2)软件测试实验室的环境搭建受限,课堂教学与实践结合的不紧密;(3)课堂教学内容与公司实际操作有出入,使得学生不受用人单位的欢迎;(4)学生缺乏完整项目的测试经验,无法掌握项目测试的流程和步骤[4]。(5)学生的开发经验不足,对于理解测试驱动开发有难度。
二创新模式的课程改革
针对目前软件测试课程教学存在的问题和不足,对目前高校开设的《软件测试》课程进行了调研、分析和研究,为了使授课内容更接近实践要求,我们深入企业并与软件测试部门的人员进行沟通交流,从教材内容、教学方法等方面对软件测试课程的教学进行探讨。
1教材的选择
软件测试实践性非常强,而且课程开设较晚,更新较快,教材的选择尤为重要。针对学生接受的实际情况和教材的实用性方面对教材进行选择,经过筛选,我们选择两篇外文教材:(美)佩腾(Patton,R.)著,张小松等译的《软件测试(原书第2版)》和(美)梅耶(Myers,G.J.)等著的《软件测试的艺术(原书第3版)》,一本中文教材:朱少民老师主编的《软件测试方法和技术(第二版)》,教学过程中把中文教材作为授课教材,外文教材作为参考书,来更好的扩大学生的视野[5]。
2课程内容的选择和改进
作为一个实践要求非常高的课程,我们在选择课程教学的内容上做了很多探索。经过实践发现,上课时在讲解基本知识和概念的同时,如果穿插讲解一些经典案例,教学效果会更好。学生不但能够掌握理解基本概念,又能结合实际应用,积累一些实践经验,这对于以后从事软件测试工作有着非常大的帮助。
在教学过程中,我们始终以学生为中心,让他们参与到软件测试的教学过程中来,调动其主观能动性,使他们更容易接受所学知识。
3测试工具的选择
在课堂教学和实践教学过程中,测试工具的选择很重要。如果建一个相当规模的测试实验室,投入是很大的。如何选择既能达到课程要求又能节省费用的测试工具就显得尤为重要。在最大限度的接近业界实际使用的前提下,可以选择一些开源的软件。对于业界关注度不够的测试环节,在讲授软件测试时要重点讲解,比如,静态测试在企业中就重视度不足,认为无关紧要,实际上该方法能够培养良好的编程风格。我们在授课时选择PMD、FindBugs等工具让学生熟悉,不但能培养学生的测试能力,同时也能督促学生养成良好的编程习惯[6]。对于单元测试部分,根据时下软件开发的两大趋势,选择Junit进行讲解,掌握该软件的使用,对于其他工具开发的软件进行单元测试也是非常容易的。
4实践环节的加强
除了课堂教学以外,实践教学的开展对于软件测试课程来说更重要。包括上机实践课和企业实践两部分。
上机实践环节应抓好以下环节:⑴定好计划,每次上机要明确任务,对于任务的选择要有针对性,要更具有可操作性,要更贴近实际。比如对于Junit的实践,每一次上课做什么都详细制定,把各种断言、套件测试、参数化测试等重要部分要重点关注,这样对于学生掌握这部分知识能起到很好的作用。(2)加强考核,对于实践环节所做的任务,要认真检查,并对学生完成情况进行总结,这样才能提高学习的效果。(3)加强与学生的沟通,让学生完成任务时,加入不同的小组,通过小组之间的沟通和交流,起到更好的促进作用。(4)完整项目的实践,除了平时的练习外,整个课程结束后,通过完整项目的带动,让学生参与到整个测试过程中,使理论与实践融合,知识掌握更牢固。
同时要深化企业实训,加强与企业的合作,让学生有机会深入到企业的软件测试部门,了解软件测试企业实际工作时如何开展的,与软件测试部门人员沟通交流,增强学生学习的自信心,加强学生实践能力的培养。学生每年9月份到北京实习,并与富士康签订了合作协议,这些举措都是为了更好地提高学生的实践能力。为了使效果更好,可以从以下几个方面抓起:(1)学校拟定一个校外实纲,与实习企业一起制订校企实习基地协议、实习安全协议、学生实习规范和学习实习鉴定表等,不断促进校外实习制度化,规范化、完善化。(2)企业要提供良好的实训场地,并配备资深的讲授老师。在实训前,讲授教师先了解一下实训生的情况,对讲课计划和讲课内容做适当的调整。(3)在实训期间,学校可以留一些教师监督实训过程,并实时地提出建议,保证学生训有所获。(4)实训结束后,要对实训生做一个项目式的考核,并认真填写实习成绩评定表。
5注重软件测试人才的软实力培养
软件测试是一门热门行业,软件企业在招聘人员时,不仅要求应聘人员有一定的理论知识和实践动手能力,同时要求应聘人员有良好的职业素质。而在当前的教学模式下,对职业素质方面的教育还是比较欠缺。这需要对学生进行培训,增加就业几率。
(1)注重培养学生的团队协作与沟通能力
对于软件测试行业来说,测试人员的沟通能力非常重要。一个合格的软件测试人才,应该具有较高的团队协作与沟通能力,可以快速融入团队,高效地展开团队式工作。一个不善于表达自己思想的人不可能成为一名优秀的测试工程师。我们在实践课开展过程中,重视培养同学的沟通能力,团队协作能力,在学生中树立良好的团队意识。
(2)培养学生的怀疑精神
软件测试的目的就是为了找出软件存在的不足,因此我们鼓励学生怀疑一切可疑的地方,尽自己最大的努力来验证自己的判断。即使再简单的功能,也要站在用户的角度,多用一些边界值进行测试,验证系统是否有问题。
(3)搜索能力的培养
一个好的软件测试工程师,要有很强的搜索发现新知识和技能的能力,这不仅指一般性知识的搜索和查阅,更多是指与本专业相关的测试工具软件、插件、测试学习网站等的搜索与下载,比如51testing就是国内比较好的测试学习网站,其上就有很多软件测试方面比较成熟的知识和实践技巧。在信息爆炸的当代社会,软件的种类繁多,软件技术的变化日新月异,所以大学生应该掌握软件测试的检索技术,以满足自己学习和工作的需要。这种能力是自己的充电器,会使自己终生受益。
此外,一个优秀的测试工程师还应有高度的责任感、耐心、洞察力,在技术层次都相差不大的情况下,这些软实力对于测试工程师的发展有着至关重要的作用。
总之,通过《软件测试》课程的教学方法的探索,通过系统科学的知识传授,并辅以上机实践和企业实践,学生的实践动手能力有了很大提高,这直接反映到学生的就业和以后的学习中。有一部分学生在毕业后进入企业的软件测试部门并得到用人单位的好评,一部分学生在考取研究生之后选择了软件测试方向作为自己的研究方向。如何在现有的探索的基础上,更大限度的提高教学的效果,是我们下一步的研究重点。
参考文献
[1]朱少民。软件测试方法和技术(第二版)[M].清华大学出版社,2010.
[2]聂长海。关于软件测试的几点思考[J].计算机科学,2011,38(2):1-3.
[3]陈树峰。面向对象软件的依赖性分析与回归测试[J].计算机应用,2009,29(11):3110-3113.
[4]李雯睿,张鹏程,杨种学。基于主动学习策略的软件测试教学方法初探[J].计算机教育,2012(8):54-57.
在软件开发的整个过程中,要经历这样几个阶段:需求分析提出总体方案系统规划概要设计详细设计代码设计测试用户培训试运行用户意见反馈产品完善正式运行用户意见反馈产品升级,最终成为完善的软件产品。
其中最重要的是需求分析阶段。只有明确需求,并满足软件设计人员和用户在对同一问题的理解完全一致的前提下,才能确保一个软件开发工作的顺利进行,该阶段是项目能否成功的关键。这个阶段需要和用户反复沟通,明确用户要实现的功能、达到的效果以及其现有硬件设备和网络环境等情况。一个大的项目有时需要进行几十次需求沟通,每次形成一个简单的需求说明书,当需求说明书得到用户的认可后,才可以进入下一阶段。也有人说,完成需求,就已经完成了项目的一半。该阶段需要介入的人员有项目经理、系统分析师、软件设计师、美工。其中,项目经理负责整个项目的协调工作;系统分析师和软件设计师负责根据用户提出的需求,判断该需求根据现有人员、技术是否可以实现,如果不可以,协商用户以可以实现的方式解决问题;美工负责理解用户对软件产品展现形式的需求,并以此来设计软件的外观(包括内容展现形式、色调、风格等)。该阶段形成的书面材料:《需求分析说明书》。
明确需求后,由系统分析师和软件设计师严格按照《需求分析说明书》为用户设计总体方案,该方案是面向用户的,内容尽量少地涉及技术层面内容,主要侧重功能描述。包括该软件有多少功能模块,具体功能描述,辅助手段说明,最终达到的使用效果,以及对一些用户关心的特性(如安全性、可靠性等)方面的描述,同时,为客户提供一些硬件设备选择方案。该阶段形成的书面材料:《项目总体方案》。
系统分析师和软件设计师根据《项目总体方案》,做系统规划和概要设计。从该步骤开始,以下的各步都将面向开发人员,形成的文字材料均以专业术语和列表等形式展现,尽量少用或不用描述性语言,力求言简意赅地表达。该阶段按软件模块提取功能点,不同模块间有交叉或相似内容的进行合并,并详细说明每个模块下包含的具体功能点,如增加、删除、修改、检索、分类、排序等,即对功能模块进行细化。形成的书面材料:《概要设计说明书》。
在概要设计基础上,系统分析师和软件设计师进行详细设计。该阶段将搭建软件系统的整体框架,框架搭建一般有两种方式:一种从技术角度,按功能点搭建;另一种按内容,即按模块来组织。其中第二种用的居多,即按内容分成若干模块,在每个模块下,确定需要开发的功能函数(在面向对象的设计方法中我们称其为方法),把这些函数或方法要实现的功能都确定下来,并设计数据库的结构,包括有多少表,每个表有哪些字段,主键,外键,字段长度,是否需要索引,表与表间是否有关联,是否需要建立触发器等内容。形成的书面材料:《功能设计说明书》、《数据库设计说明书》。
代码设计,即逐行编写代码的过程,也是从无到有建立该软件的过程。很多人通常所说的开发,都狭义地指这部分。实际开发中,这部分在前面各项设计完成的基础上,仅仅是一个实施过程,难度很小。该阶段主要介入的人员是软件设计师和程序员。形成的书面材料:《项目实施计划》、《软件安装手册》、《客户端配置说明书》、《性能优化配置参考》、《系统常见问题帮助文档》、《用户使用手册》、《管理员使用手册》、《软件验收确认单》、《培训计划》等。
【关键词】航电系统 实训平台 总装测试 民用飞机
1 引言
综合航电系统是飞机的重要系统,随着飞机航空电子系统设备、功能不断增多,交联信息呈几何级数增长,软件呈规模化增长,导致航空电子系统的复杂度越来越高,需要工程人员不仅熟悉单个设备,而且要熟练掌握系统的交联,对工程人员的技术要求也越来越高。随着民用飞机航空电子系统的复杂程度越来越高,航电系统在总装车间的机上地面功能试验操作的复杂性及掌握内在机理的难度越来越大,对于总装上岗员工的培训则是非常必要的。
2 重要意义
在总装机上地面功能试验中,利用真实飞机培训代价大、培训周期较长,不能满足人员上岗的培训需求,并且使用真实飞机开展人员操作培训,存在误操作损坏飞机的隐患。因此,探索航电系统新型总装试验培训平台是非常有意义的,不仅仅可以提高上岗人员培训效果,而且可以降低总装飞机的低效占用,对于提高总装的工作效率、缩短机上功能地面试验的周期具有重要的意义。同时,通过航电系统新型总装功能试验培训平台可以开展机上故障复现,系统内部工作机理理解等工具,从而提高民机总装测试能力。建立一套综合航电系统功能试验实训平台,对总装系统安装调试人员、机上功能试验人员的综合航电系统功能试验展开实训,可以大大的提高总装试验效率。
3 新型功能试验平台总体设计
基于对总装功能试验培训平台的应用场景,该平台具有以下几个能力:
(1)完成对总装系统安装调试人员、机上功能试验人员的综合航电系统功能试验实训,通过进行机上地面功能试验、开展操作实训,以便在早期掌握试验操作要领;
(2)要根据飞机各个系统之间的故障警告和设备自检信息模拟飞机各系统的实际运行情况,并模拟机组人员按照操作程序对发生的故障按照预先设计的处理程序进行人机交互,该仿真系统能够初步培训新员工熟悉飞机驾驶舱仪表、面板的处理操作和人机交互的实物体验;
(3)受训人员利用该平台逐步培训技能操作人员按照机上功能试验测试程序和维修手册规定模拟飞机功能试验操作或进行维护和维修的程式练习;
(4)通过该实训平台的培训,最终使员工达到深入了解飞机各系统间的逻辑关系、熟悉驾驶舱仪表、面板的指示与操作以及分析和排除故障的能力。
3.1 平台组成
综合航电系统功能试验仿真平台以某机型为仿真建模对象,通过数字化仿真技术,依据机上功能试验测试程序和维修程序,实现的高逼真度的模拟训练平台。平台具有能够模拟飞行动态参数、飞行内外环境、驾驶舱人机接口、飞机告警、飞机测试监控等座舱内航电系统,通过模拟状态测试场景对系统总装、机上地面试验等的工作人员进行实训,从而达到支持新上岗人员熟悉航电系统及上岗培训的目标。
综合航电系统功能试验仿真平台主要包括驾驶舱操作程序仿真、环境仿真、参数仿真、告警及重要故障仿真、飞机重要参数监控以及数据互联平台等部分。
平台组成结构图如图1所示。
3.2 平台主要功能
平台主要用于完成对总装系统安装调试人员、机上功能试验人员的综合航电系统功能试验实训等。本平台将具备如下能力:
(1)通过数字化仿真系统,仿真飞行动态参数、飞行内外环境、驾驶舱人机接口、飞机EICAS、飞机测试监控等试验功能,同时模拟状态测试场景,可以根据需要灵活设置;
(2)支持飞机多电系统的集成协同仿真;
(3)支持系统总装、机上地面试验等的工作人员熟悉系统和实训平台支持,完成故障的复现;
(4)进入服务后,支持新上岗人员熟悉航电系统及上岗培训。
3.3 新型功能试验平台的实现
为了满足学员实训的需要,新型功能试验平台在实现中应该紧密的结合应用场景,如OATP程序、ATP程序等,并使平台拥有较好的扩展性和灵活性,从而使平台满足多种用途的需要,并兼顾后续机型。
3.3.1 平台基本构成
新型功能试验平台由模拟驾驶舱部分、计算机仿真系统部分、飞行参数仿真部分、飞行外坏境模拟部分、断路器模拟部分、主控台等部分构成,各部分之间使用以太网进行连接,如图2所示。
(1)模拟驾驶舱部分。模拟驾驶舱部分是模拟驾驶舱环境,模拟驾驶舱舱体、显示仪表板、中央控制台、顶部操纵板、左/右操纵台、操纵杆及断路器控制板等构成,用于实现高逼真的驾驶舱试验环境。
(2)计算机仿真系统部分。计算机仿真系统部分包括飞行内环境仿真计算机、视景计算机、系统互联/重要参数监控计算机、故障仿真算机、显控数据管理计算机、以太网交换机、配电模块、UPS电源、机柜等,是软件运行、系统互联的重要部分。
(3)飞行参数仿真部分。飞行参数仿真系统包括工业计算机和ARINC429总线板卡、模拟量板卡、离散量板卡等,用于模拟真实的物理航电设备信号。
(4)飞行外环境模拟部分。飞机外环境模拟部分包括投影机、投影幕、音响系统等,用于模拟飞机飞行过程中的外部场景。
(5)断路器模拟部分。断路器模拟采用实物模拟的方式实现,能够模拟真实的断路器开关的通断状态,用于故障仿真过程中的排故操作。
(6)主控台。主控台主要包括显示器和键盘、鼠标操作设备,用于整个平台软件系统的运行控制和操作。
3.3.2 平台功能模块
平台软件由驾驶舱操作程序仿真软件集群、飞行环境仿真软件、飞行参数仿真软件、飞机驾驶舱告警及重要故障仿真软件、飞机重要参数监控系统和数据互联系统等部分构成,整个软件以数据互联系统为中心,分系统之间通过以太网通讯实现互联。主控系统负责各系统的统一操控调用,各系统之间依据培训任务、试验任务的不同,相互交联并与硬件系统构成完整的闭环系统。如图3所示。
整个软件系统由驾驶舱操作程序仿真、环境仿真、参数仿真、告警及重要故障仿真、飞机重要参数监控以及数据互联平台等部分构成,软件模块组成如图4所示。
3.3.3 系统总成
平台通过驾驶舱操作程序仿真、环境仿真、参数仿真、告警及重要故障仿真、飞机重要参数监控以及数据互联平台等部分的硬件与软件相互协同构筑成有机的整体,相互支持协同支持民机航电系统总装功能试验操作模拟培训。并根据试验任务和任务的需要,基于平台开发教学的课件及评估程序,不断地提高实训效果及上岗人员对系统工作原理的认知。另外,后续还可以结合信息化技术,对平台的功能进行扩展,建立1+N的网络化教学平台,让该平台发挥更大的作用,让更多人从中获得知识和技能。
4 新型功能试验平台关键技术
该新型功能试验平台在平台的架构设计、人机交互式体验、底层通信互联、面向应用的设计等几个方面进行了创新,涉及以下几方面的关键技术:
(1)架构设计方面,整个系统由模拟驾驶舱部分、计算机仿真系统部分、飞行参数仿真部分、飞行外坏境模拟部分、断路器模拟部分、主控台等部分构成,各部分之间使用以太网进行连接,即保证模块的独立性,又兼顾了系统之间的耦合与完整性;
(2)飞行参数仿真系统,可与机载航电设备交联,输出与真实设备一致的接口物理信号;
(3)断路器实物模拟,通过信号采集与故障仿真进行交互处理,融入驾驶舱试验环境;
(4)软件系统中各子系统通过千兆以太网交互及反射内存,有效的保证了系统之间信息传输的实时性;
(5)模拟驾驶舱显示器、CDU、RTU、CCP、FCP、DCP、RSP、ACP、电气断路器面板等均采用1:1的半实物功能替代件,有效提高学员侵入式无差别体验;
(6)采用新型的驾驶舱内部互联系统架构,采用以显控数据管理为中心的“一加多”模式,提供统一的数据管理功能,包括航线、航点、机场等信息数据库,多个显示仿真设备的数据同步,提高操作关联的协同性;
(7)计算机资源和线缆均预留50%的冗余,充分考虑后续的扩展,特别是与信息数字化平台的互联。
5 结语
在对民机航电系统总装工作中的机上地面试验、ATP、机上故障定位等的试验需求进行分析后,提出了民机航电系统新型总装功能试验培训平台的设计方案,并对其硬件方案与软件方案进行了论述,由于篇幅有限,未做全面展开。经过项目的实施,大大的提高了上岗人员对系统的熟悉程度。近年来,国外大型民机制造商及航空企业纷纷建设类似实训平台,此实训平台在我国的建设尚属首例,该平台的建设提高了我国民用航空总装生产线的调测水平和工艺水平。
参考文献
[1]曹全新,严林芳等。民机非航电系统模拟器综述[J].民用飞机设计与研究,2008,12(04):1-4.
[2]文彬,曹全新等。基于模块化设计理念的新型航空电子集成测试平台[J].电子技术与软件工程,2015.11(21):118-119.
[3]龚京忠。基于功能-行为-结构的产品概念模块设计研究[J].计算机集成制造系统,2006(12):72-75.
作者简介
徐小龙(1986-),男,毕业于上海交通大学,硕士学位。现为上海飞机制造有限公司总装车间工艺技术组组长,工程师。主要研究方向为民用飞机电子电气系统装配及调试工艺研究。
作者单位
关键词:软件开发;实训;外包;测试
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)36-8332-02
1 背景
工信部近日印发《软件和信息技术服务业“十二五”发展规划》,规划明确了“十二五”的发展思路和发展目标,确定了10项发展重点和8项重大工程。而据业界预计,到2015年,我国软件行业收入将突破4万亿元,年均增长25%以上,出口突破600亿美元。
2 项目实施的必要性和可行性分析
外包人才的缺口从结构层次来看,不是局部的人才短缺,而是全方位的供应不足。正规院校培养出来的学生能掌握基本的软件开发技术,但缺乏软件开发工作经验、项目交流和团队合作锻炼,需要经过相当的项目知识与技能培训。超过60%的高校开设了计算机专业。但是,适应外包企业需要的大学毕业生很少,大学毕业生常常需要企业花大力气培养,而企业希望招来就用,不愿自己培养人才增加成本。本软件开发、测试实训室应此目的设置,目标培养中低端软件人才。
3 建设实训中心项目的可行性
职业教育与普通教育相比有四个特点:一是教育性质和目标不同。重在对准备就业的学生传授职业知识,培养职业技能,陶冶职业道德,提高职业能力和劳动素质教育。二是教育内容与要求不同。以提高学生的专业知识与技术能力为主,重在让学生懂得做什么、怎么做,使学生学有专长,毕业后投身于社会经济建设的实践活动。目前尽管有部分学生升学,但就总体看,其教育内容与要求未变。三是课程模式与结构不同。其课程模式注重实践教学环节,课程结构注重强化学生技能的应用性、针对性和职业性。四是学校功能与任务不同。要求实施职业教育的学校必须具有实训实操的条件,否则职业教育很难获得应有的效果。
4 软件开发和测试实训室建设目标
软件开发技术实训可以包含四类实训课程:
软件开发实训:包括完整的生命周期的软件开发过程
软件阶段实训:选取软件生命周期其中某个阶段独立工作(例如编码工作)的实训;
软件测试实训:包括软件开发过程随行测试和独立的软件测试技术实训;
软件项目管理:这是关于软件技术高级培训。
实训装备:
硬件设备:5组服务器;50台工位电脑;网络和交换设备;5组光盘刻录、扫描仪和打印机等辅助设备;1套投影和无线扩音设备;互联网接入;软件平台:Windows 和Linux服务器平台,mySQl、SQL Server数据库系统、J2EE和。net开发平台和课程相关的软件工具;LoadRunner 、WinRunner等常用测试工具;项目管理工具MS Project;办公系统 Ms Office 管理软件:实训管理软件
实训方法:采用模拟企业运营方式将教练和学员混编成项目组方式完成软件开发和测试实训;打破学科界线和知识体系,以项目目标驱动安排教学内容,编制教材和教学课件,教学内容来源于合作企业以往的实际项目,由企业和学校共同对原项目分解、重组、封装形成教学课件,以实际项目文档为基础编制实训文档。
实训课程:本实训室分设以下类型实训课程
素质教育类课程:敬业精神、团队合作
企业标准类课程:ISO9000和CMM认证,企业化管理制度
项目管理类课程:项目管理方法和项目管理系统使用;
软件开发、测试类课程:包括软件生命周期理论、文档编制和理解、软件工具、编码和测试方法、系统部署、和版本管理等;
实训过程:
先期培训:素质类、企业标准、项目管理、背景知识等
基础培训:由教师教授课题涉及的基本方法、工具和规范;
开题培训:由专业项目管理人员做课题报告,解释项目要点;
5 实训课题:软件开发实训
本实训室培训软件开发人员和软件测试人员,实训方法可以将学员分组,在同一项目中分别承担软件开发和软件测试工作,也可以独立执行软件开发和软件测试实训课程
软件开发实训包括一下实训模块:
1)背景和基础知识:包括软件开发规范,软件企业ISO9000和CMM认证,学校软件工具等;
2)搭建开发环境:能够配置自己的软件开发环境,包括安装操作系统和开发工具包;能够配置自己与别人的协同开发环境,包括网络配置,文件共享,安装远程打印机等;
编写代码:使学员能够读懂详细设计,掌握开发工具的配置与使用,掌握开发语言的基本知识和数据结构,了解简单的算法,会设计简单的界面,并应用常见控件,具有数据库编程的初步能力;
图1
3)测试:使学员除了掌握测试的理论知识外,还应该学会编写单元测试案例,编写单元测试文档,在执行单元测试的时候,记录测试结果,并分析错误原因,以利于下一步的调试。
学员应掌握以下具体技术、平台和工具,Windows系列和Linux操作系统;Visual Studio工具;Borland 公司工具,SQLServer,Oracle ;Apache+tomcat,Web Logic 等;TCP/IP,创建网络连接,网络打印;基于UML的详细设计文档,面向对象分析和设计;单元测试,黑盒测试,白盒测试,设计测试案例等;执行测试并调试错误,系统和配置技术;
软件测试实训包括以下实训模块:
计算机及常见操作系统、软件设计语言基础、 数据库基础、软件工程基础、软件测试基础、自动化测试:包括OSI模型、TCP/IP模型及常见网络协议,常用软件平台、工具使用LoadRunner 、WinRunner测试工具使用,各种测试规范
6 总结
在当今社会信息化的进程中,综合应用各种新技术的系统软件功不可没的,软件开发和测试使全社会的信息管理、信息检索、信息分析达到了新的水平,因此,学习软件开发、测试的相关基础知识,对于信息时代的每一个成员都是十分必要的。
参考文献:
[1] 杨文宏,李心辉。面向对象的软件测试[M].北京:中信出版社,2002.
[2] Ron Patton.Software Testing [M]. 2版。 北京:机械工业出版社,2006.
关键词: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-省略/content2,jsp?id=58860,2009
[3]张万军,储善忠,基于CMMI的软件工程教程[M],北京:北京交通大学出版社,2008:1-5