前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的软件测试培训总结主题范文,仅供参考,欢迎阅读并收藏。
软件质量重于泰山
软件质量重于泰山,软件质量是核心竞争力之一。现在和未来软件企业的竞争力不仅体现在产品类型的多样性,产品功能的先进性,更多的体现在产品质量的稳定性和可靠性。软件应用的领域不断深入,设计的复杂程度逐步增加,开发的周期不断缩短,质量的要求水涨船高,软件企业面临着巨大挑战。
用户对软件产品质量的要求不断提高,促使软件企业把提高软件质量作为增强竞争力的策略。提高软件质量要素在哪里?可以通过采用软件设计技术,加强软件过程管理,实施软件测试等方法。从提高软件质量的显著程度、投资回报率和可实施性等方面比较,实施有效的软件测试,提高软件测试的效率,是保证软件质量的显著方法。
软件测试是通过技术、流程、工具、人员以及管理手段,检测软件文档、软件中间产品和最终产品,查找和报告软件缺陷、错误以及隐患的专业技术。通过跟踪缺陷、错误及隐患的修正过程,确保软件产品、中间产品和文档符合软件工程过程需求和用户的最终需求。
软件测试创新之道
软件测试在国内仍处于起步阶段,各种软件测试的方法、技术和标准都还在探索阶段。国内软件行业规模普遍偏小,缺乏大型软件产品经验,开发过程不够规范,这决定了国内软件质量和测试行业,必须根据国内行业现状,确定软件质量目标和测试策略方法,而不是照搬照抄国外成熟软件企业的测试方法。
观念创新
提高软件质量的决定因素不是软件测试技术,而是对软件质量和测试的思想观念。只有把提高软件质量上升到企业战略发展的高度,才能从根本上解决问题。长期以来,国内软件行业对软件质量重视程度不足,对于软件测试的作用认识不够,造成项目因质量问题造成进度推迟甚至失败。
为了彻底改变这种被动现象,企业高层管理人员必须从管理思想、资源支持等方面为软件质量和测试部门提供全力支持。软件项目经理必须坚持软件开发和软件测试并行处理并且互相协调。软件开发人员重视和配合软件测试人员。
观念创新不要仅停留在口头上,而要落实在具体行动上,通过软件质量和测试的有效流程进行推动,通过过程改进进行提高。通过有效组织管理,形成“以重视软件质量为荣,以轻视软件质量为耻”的工作氛围。
流程创新
测试流程决定软件质量。软件测试如同软件开发一样,需要经过收集测试需求、确定测试策略、设计测试、执行测试、分析测试等流程。软件测试不是软件开发的最后阶段,而是贯穿于软件项目的整个生命周期。
软件测试流程既不是僵化的生搬硬套,也不是随机的增添取舍。软件企业的质量管理部门和项目开发团队需要根据公司技术、资源现状,针对项目的特点和客户需求,从保证软件质量、项目进度和测试成本等方面,进行优化设计并且不断改进流程管理。对于项目周期长、应用领域广、对质量要求高的软件,必须制定和遵守严格的测试流程。
测试流程创新的目标是在公司内部制定和执行完善的项目质量管理体系。优化项目生产方式,跟踪和度量生产过程和产品,使得生产过程和各阶段产品处于可控制和可度量状态,保证产品符合客户的功能和进度需求。
技术创新
软件测试是一项软件工程领域的专业技术,而不是简单的把软件测试认为随便找个人运行几次软件,就可以发现全部的软件问题。前文已经提到,软件测试需求和测试设计是决定软件测试效果的关键因素,因此,加强测试技术创新的重点是在测试需求和设计设计的创新。
在软件测试技术创新方面,要避免陷入过度追求自动化测试技术的误区。自动化测试确实可以在某些方面显著提高测试效率和准确性,但是自动化测试只适合测试软件的某些方面的质量,80%左右的软件缺陷是靠测试人员手工测试发现的。
对于某些特别需要自动化测试的软件特性,需要加强开发软件测试工具,而不是全部依赖市场上的现有测试工具。这是因为商业工具功能繁多,价格昂贵,培训和学习周期很长,选择不当就会造成巨大浪费。
管理创新
软件测试管理的目标是实现软件质量、进度、成本之间的最佳平衡。有效的测试管理需要企业管理层、软件开发团队、质量保证与测试团队通力合作,采用计划、组织、领导、控制等手段,组建高效团队,制定完善的测试流程,做好测试设计,有效执行测试,加强过程跟踪,从而顺利完成质量保证和测试任务。
测试管理创新的核心是软件质量和测试的团队建设,软件质量和测试是技术密集型活动,团队的知识结构、创造力和凝聚力是保证测试流程、测试技术充分实施的基础。质量和测试团队建设的重点是设置和培养各类技术和管理人才,进行有效交流,形成良好的评估和促进机制。
测试管理创新的另一个重点是测试管理平台建设。包括构建测试项目管理的集成系统,实现公司产品和项目数据信息的有效管理和顺序控制,使项目数据透明化,技术知识有效传承,项目质量和进度数据化、图形化。可以根据公司的现状,购买软件测试管理的商业工具,也可以内部开发软件测试管理工具。
软件测试技术路线图
如果把软件测试之道成为测试战略,要发挥测试战略的现实意义,需要把测试战略转化为测试战术。测试的“道”与“术”的无缝集成,才能显著地、持续地、逐步地提高软件产品质量。实施软件测试的战术是一系列过程的组合,涉及测试团队建设、流程设计、测试平台、测试管理等多个方面。
测试团队建设
测试团队可以是测试部,也可以是测试组。公司规模决定了测试团队的大小和组织形式。测试团队建设需要执行两个原则:第一,测试团队必须独立于开发团队,而不是附属于开发团队,实现测试的独立性和公正性;第二,测试团队必须具有明确的工作目标,即发现和报告软件缺陷,推动和确认缺陷修正,协助软件开发的过程改进,提高软件整体质量。
软件测试团队根据规模可以设置多个职位,每个职位具有明确的岗位职责。例如,测试部门经理、测试项目经理、测试组长、测试架构师、高级测试工程师、测试工程师等。对于刚刚成立的测试团队,可以一个人兼任多个职位,完成多项测试任务。测试人员的总数应该与开发人员相适应,最好在1:1到1:2之间。
流程设计
测试流程设计必须与软件设计流程相对应,基本测试流程包括测试需求分析、测试计划设计、测试用例设计、测试执行、测试评价、测试总结等。
根据软件需求和软件设计规格说明进行测试需求分析,测试需求分析的目的是明确需要测试的对象、特征、范围和方法,从而制定测试计划,确定测试策略。
测试计划设计是为了有效配置测试过程、人员和工具,充分利用现有的资源,按照项目计划进度,组织有效的测试。测试计划设计的输出结果是测试计划文档,它是指导软件测试活动的纲领性文档。
测试用例设计是指导具体测试内容和方法的关键内容,如果需要执行自动化测试,还需要依靠测试用例设计生成对应的测试脚本。测试用例设计的输出结果是不同类型的测试用例,这些测试用例必须以标准、一致的形式设计、评审、存储、更新。
测试执行是报告软件缺陷的阶段,根据软件计划的进度,分配测试内容,构建测试环境,依靠测试用例运行测试程序和程序文档。测试执行的输出结果是缺陷报告、测试进度报告等。
测试评价是度量软件测试执行效率和有效性的过程。测试评价的输入是测试用例的执行情况,软件缺陷的报告数据。测试评价的输出包括测试用例的有效性分析,软件缺陷的类型和有效性分析等,测试进度和有效性分析等。
测试总结包括测试过程每天或者每周的过程总结,也包括测试项目结束后的测试项目总结。测试总结的输出是测试总结报告,总体评价软件质量,指出测试存在的问题,提出改进的方法和进程,总计测试的有效经验。
测试平台设计
测试平台设计包括测试技术平台设计和测试管理平台设计。测试技术平台包括设计测试环境,设计或设置测试工具等。测试管理平台设计包括测试文档系统设计、测试版本配置管理、缺陷数据库设计、测试进度和质量分析系统设计。
测试技术平台设计需要根据测试计划的测试内容和测试环境要求,组织软件、硬件、数据库和网络等,这经常是一项较为耗时的工作,同时它影响着测试的正确性,必须尽快在测试开始阶段完成,最好采用有效的方法把搭建的测试环境进行备份保存,以便今后可以快速恢复,重复利用。
测试管理平台设计,影响测试管理的复杂度,好的测试管理平台可以使测试管理人员,方便地跟踪、查询、分析测试进度,评估测试人员的工作绩效,评价测试的总体质量。对于测试技术人员而言,可以方便的寻找测试对象和测试文档,报告和输出测试结果,共享测试数据,提高测试效率。
测试管理
测试管理关注人员、过程、产品三要素的互动与变化,测试管理包含项目计划和组织结构管理,测试阶段管理,时间、资源和质量管理,文档管理和团队管理等。测试部门经理、测试项目经理和测试组长是测试管理的主要执行者,需要与测试团队成员、开发人员、公司管理人员密切配合。
为了加强测试管理,需要确保测试数据信息流通畅,使测试团队、开发团队、质量保证团队之间有效交流。测试管理的其他内容包括团队成员参与各种培训,客观积极的绩效评估,识别项目测试风险,实现人尽其才,信息共享,进度可控,规避风险,降低成本,提高质量。
国家示范性软件学院的一个重要职责就是要在教学研究、教学实践以及教学改革方面进行大胆的探索和实践。因此,在完善已有课程体系及授课的同时,应该充分利用优秀的教学资源,总结教学经验和科研成果,编写专业教材,力争探索出一条为国家快速培养高素质软件工程人才之路。
北京工业大学软件学院蔡建平教授长期从事软件工程、软件测试及软件质量保证的研究,在多年讲授软件测试课程经验和体会的基础上,对软件测试课程教学内的知识点进行调整、补充和完善等方面的改革,针对软件质量评价和软件高可靠性的要求,针对国内软件研发和测试外包的本地化要求,以及针对软件测试用于各种应用领域的要求选择授课的知识点,并取得了较好的效果。
目前国内关于软件测试的书籍较多,其中很多书籍是翻译的、为培训用的或介绍软件测试技术和方法,作为教材满足各类测试人员的学习还有一定的距离。本书是在作者长达二十几年软件工程、软件测试和软件质量保证实践经验和教学经验的基础上,借鉴前人成果,参考当前软件测试方法和技术应用实践案例进行编写的。蔡建平教授编写的《软件测试大学教程》一书,以现代软件测试需求为背景,以现代软件测试技术和方法为基础,以当前软件测试通常应用为典型实例,从软件危机及软件缺陷开始,全面介绍软件测试的基本概念,软件测试的技术、方法和工具应用,以及软件测试在当前主流应用中的具体开展和实施。
其特点如下:
(1) 内容全面。突出全生命周期软件测试概念、软件质量分析手段、现代软件测试技术、主流测试工具应用以及典型应用测试方法等,帮助学生了解和掌握现代软件测试的各种原理、方法和技术,并能够选择合适的软件测试工具进行相关测试。为培养学生今后成为高素质、专业化的软件测试人才打下基础。
(2) 针对性强。针对软件开发方法和技术的发展变化,针对我国软件外包服务的蓬勃兴起,针对我国国防工业如航空、航天、船舶、电子、通讯等大量重要软件或关键软件的实际应用情况和测试需求,特别是对软件高可靠性的要求,选择教材的知识点。
(3) 重实践性。该书对支撑现代软件测试技术应用的测试工具进行了全面地介绍,特别是对开源软件测试工具的介绍,这对高校开设软件测试实验课程是非常有意义的。在教材中给出了软件测试在几个典型应用领域具体实施的要点和注意事项,这对缺乏实践经验的培养对象而言具有极好的引领作用,对开阔软件测试人员的眼界、思路和具体实践有很大帮助。
(4) 具前瞻性。书中不少内容取材于互联网,在一定程度上体现了软件测试技术的最新发展,具有较强的新颖性和现代性。
关键词:市场需求;软件测试;课程体系
中图分类号:G64文献标识码:A文章编号:1009-3044(2012)14-3353-02
Course System Research of Software Testing Technology Based on Demand of Talent Market
ZHENG Hao, LIU Jian-fang
(Pingdingshan University, Pingdingshan 467000, China)
Abstract: This paper analyze the actual needs of talent market at first, and then set up the Curriculum system based on the software testing theory and technology. Paying more attention on the application, we want to construct course system to meet the market, which has deep foundation and strong skills. All of these promote the quality of the professional course.
Key words: Market requirement; software testing; Curriculum system
最近的年度软件测试行业专项调查报告显示,社会对软件测试人才的需求越来越大,可人才市场提供的人力资源、实际能力却不能满足这种需求。目前国内对测试人才职业化培养体系还不够充分,现行的传统教育体制重学历教育,轻职业技能培训,导致了软件测试人才告急。如何结合人才市场的实际需求,构建适合的课程培养体系,成为软件测试课程改革迫在眉睫的问题。
1中国软件测试行业的市场需求分析
在我国,软件产业的兴起和发展也就是这短短十几年。在前面的兴起和发展壮大阶段,一般的软件公司都是重开发轻测试,甚至存在把测试工作都放在用户那里去做的错误思想;追求眼前功能的实现,开发软件追求“短”、“平”、“快”。不太考虑性能和功能的优化。软件测试以往一直被中小IT企业所忽视,只有一些知名企业才有专门的软件测试人员。
现在,更多的国内企业认识到测试的重要性,但是由于国内测试人才的储备相对较少,据国家权威部门统计,中国软件人才缺口超过100万人,其中很大一部分为软件测试人才,缺口达到30~40万。但由于软件测试的重要性是近几年才被充分认识到的,高校教育和企业培养都还没有跟上,致使软件测试需求严重供不应求。
分析年度软件测试行业专项调查报告,目前对测试人员的素质和要求逐步提高,测试人员不仅应掌握相关计算机知识背景、软件工程基本知识、熟悉项目编程语言、熟悉项目技术架构及需求内容,而且要求工作有责任感、独立分析能力及团队精神等方面。其中“动手能力”和“实际经验”是软件企业在招聘软件测试人员时最为看重的,而这也恰恰是很多求职者的“软肋”。
2现有软件测试课程体系存在的问题
2007年,我校软件学院认证管理中心被授予计算机软件测试人才培养基地。软件学院软件工程专业以及软件技术专业均开设有软件测试相关课程。由于软件测试是一门实践性很强的课程,应采用精讲多练的原则开展教学,即学生通过大量的上机实践,循序渐进地提高自身的软件测试用例设计、开发、执行能力以及软件测试的管理能力。但在具体实践教学组织中,教师普遍感觉有许多不如意的地方,具体存在的问题有:
1)对实践课程的认识程度和重视程度不够,软件测试开展的不够彻底,测试过程中存在大量的不规范性;
2)缺乏合适的教材,同时教师缺乏相应的实战经验,导致教学上知识结构不合理,教学内容与具体应用脱节,尽管教师都能很好的讲解软件测试理论知识,但却由于缺乏合适的测试案例,没有将理论教学内容和最新相关技术结合,使得学生思维局限性大,并没有真正提高学生自主思考的能力和创造性思维。
3)教学方法和手段因循守旧,学生对软件测试职业存在一些片面的,甚至是错误的理解。
3基于人才市场需求的《软件测试技术》课程体系研究
基于人才市场需求的软件测试技术课程体系研究主要是分析目前人才市场对软件测试行业人才的岗位需求,掌握软件测试人才需要具备的职业素质,同时调查研究在学生对前续课程的掌握情况,以及目前所具备的相关职业素养的程度,计划从技术、沟通协调能力、经验和技能、综合素质能力等方面分别对岗位需求和学生水平展开调研。
3.1课程体系目标定位
我校软件工程专业的培养目标是培养适应社会发展需求,具有扎实的计算机知识基础,掌握软件工程领域的前沿技术和软件开发方法,具有较强的软件实践能力和创新精神,具备较强的软件项目的分析、设计、开发和维护能力,能够按照工程化的原则和方法从事软件开发和管理的应用型人才。
作为该专业的一门专业必修课,为构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系。将以软件技术为基础,测试理论与技术为核心,进行课程体系设置。理论教学目的是让学生深刻理解软件测试思想和基本理论;熟悉多种软件的测试方法、相关技术和系统地软件测试过程;会熟练编写测试计划,测试用例,测试报告,并熟悉几种自动化测试工具,从而从工程化角度提高和培养学生从事大型软件的测试技术和能力。
同时在实践环节,要求学生通过实验学习,培养与提高项目测试过程中采用的主要技术、设计测试用例、编写测试总结报告等能力,激发学生创新精神和创新能力,具体应达到下列基本要求。1)使学生掌握分析问题和解决问题的技巧,通过具体实验使学生掌握常用的黑盒测试技术、白盒测试技术、自动化测试工具。2)让学生了解测试流程,掌握测试总结报告的编写。通过实验使学生理解软件缺陷的描述,并能结合项目设计出较完善的测试用例。
3)了解Web系统的测试范围,使学生能在应用场景下联系实际和所学知识分析和解决问题,缩短理论和实践的距离。
3.2课程教学内容选取
结合课程体系目标定位,该课程在教学内容选取上主要是基于人才市场需求,厚基础、强技能、注重技术应用。总学时共72学时,其中理论和实践各36学时。结合课堂教学和实践教学,软件测试技术课程包括以下几部分:
1)软件测试基本理论及方法:包括软件测试的概念、测试的原则、用例的设计、各种测试方法及技巧,测试策略。同时通过实验掌握软件测试的步骤、方法及常见问题的处理。
2)测试流程及文档写作:软件测试流程、各阶段的文档编写;书写测试计、测试用例、测试报告、产品安装手册、产品使用手册。在实践环节,通过SATM系统让学生掌握软件测试流程各个阶段的相关技术、测试相关文档的写作技巧。
3)系统学习软件测试的各种工具,包括:自动测试工具WinRunner;压力测试工具LoadRunner;测试管理工具Testdirector;流程管理工具CVS;JAVA单元测试工具Junit。要求学生掌握自动化测试理论与方法,熟练使用常见测试工具。
4)软件过程控制与质量保证:软件质量的概念及软件质量管理的基本方法;测试项目的范围管理、人员组织结构、理解测试的配置管理、风险管理、成本管理等。
5)项目实训:引入具有真实企业背景的软件测试案例,充分考虑人才市场的需求,突出强调工学结合的重要性。通过实际项目掌握实际工作中开发和测试的流程,使用相关工具,完成各种测试目标,实现软件测试实践环节单项专业知识与整体技能综合运用的目标,提高测试能力和积累相关经验。
3.3课程教学方法设计
为构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系,在教学过程中,需要把技能训练和职业素质培养有机结合起来,注重学生综合能力的培养与提高,突出强调职业岗位针对性。提高学生综合运用所学知识发现问题、分析问题、解决问题的能力,进而培养学生的技术应用和技术创新能力。在教学方法设计上做了一下改进:
1)突出工学结合:在讲解基本理论知识的基础上,引入具有真实背景的软件测试案例,并结合理论知识讲解将案例进行改造,使案例的分析应用与理论知识相呼应。目前市场上IT公司在招聘测试人员时按照所需技能的不同,将测试人员分为三个等级,分别为初级测试工程师、中级测试工程师和高级测试工程师。分析不同等级的要求,在教学过程中,主要针对初级和中级的技能要求循序渐近的展开教学。使通过此教学改进,既弥补了教师缺乏实战经验带来的不足,也使学生能较真实的接触到实际应用,从一定程度上实现了人才培养与市场需求的接轨。
2)强调团队合作:在教学过程中实施“1-7”模式,即在实验课教学中,采用团队合作的方式,分组完成各项任务。在实验初期由教师合理分配各团队成员间的任务,培养学生的基本岗位技能。经过两个实验任务的完成,每个团队挑出一名同学为项目组长,模拟公司招聘的形式,招聘4~6个组员组建自己的团队。后期实验任务的分工由团队组长负责项目进展、分工协作、制定测试计划等工作,其他小组成员则按要求完成自己的工作,如编写测试策略、设计测试用例、撰写测试报告等,教师主要起引导作用,充分发挥以学生为主体。为了全面培养学生,在不同的任务中,组员通过角色互换,充分发挥其沟通能力及综合技术能力。在学期末,通过团队评比,以提高平时成绩的形式对表现优秀的团队进行奖励。通过此教学手段,可以培养加强学生面试技巧、沟通能力、团队意识、竞争意识等职业素质的培养。
4结束语
基于人才市场需求的《软件测试技术》课程体系研究定位在对人才市场的实际需求分析之上,针对软件测试人才的特点要求,把行业、企业对人才的要求转化为教学中的具体目标。构建厚基础、强技能、注重技术应用的适合应用性人才培养的课程体系。
参考文献:
[1]朱少民.软件测试方法和技术[M].北京:清华大学出版社,2010.
[2]古乐.软件测试案例与实践教程[M].北京:清华大学出版社,2007.
[3]马民生,马友忠,任刚.以就业为导向的软件测试实践课课程改革[J].电脑知识与技术,2010(4):241-242.
[4]刘伟.独立学院软件测试课程的教学探索与实践[J].广西教育.2009(24):31-33.
关键字:服务区经济;软件测试;课程建设
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岗位信息
进行软件测试技术课程学习的都是软件的测试员或工程师,目前市场中对于这类人才的需求非常大。案例库也是一个动态的资源系统,所以可以把网络、报纸、合作单位、专业人员的信息进行结合,一方面可以让毕业生就业问题更加轻松,还能帮助学生了解企业对于工作人员的要求。用在线的方式,帮助毕业生、测试工程师等了解相关的岗位信息,更有针对性。
关键词:开发内化教学法;就业竞争力;软件测试人才培养
中图分类号:G642文献标识码:A
武昌理工学院坚持以“成功素质教育”为特色的教育理念和人才培养模式,致力于培养“专业素质扎实、非专业素质过硬、个性特长突出、创新与实践能力强”的高素质人才 [1]。通过广大师生十余年的努力,我校毕业生的就业率和就业质量稳步上升,取得了一定的成效。2010年,我校被列为国家教育体制改革试点高校,承担“创新民办高校高素质人才培养模式”的改革试点任务,目前,我校正沿着这一任务的指导思想,采用通过教师的开发促成学生内化的教学方法,进一步深化教学改革。近两年来,笔者主要承担计算机科学和软件工程专业软件测试课程的教学任务,在此,简要分析软件测试人才的市场需求及软件测试课程教学中存在的问题,结合课程特点和开发内化教学法,探索软件测试人才的培养模式。
一、软件测试人才的需求状况
软件产业发展的几十年中,软件测试已逐步渗透到各个领域,成为越来越重要的技术成分。很多优秀的企业中,开发人员与测试人员的比例达到了3:1或2:1[2]。大量的人才需求导致我国软件测试人才严重缺乏,专家分析其主要原因是国内软件测试人才教育相对滞后[3]。实际上,我国从2003年起计算机相关的教育机构就相继开设了软件测试课程,经过多年的软件测试人才培养,用人单位依然缺乏软件测试人才,而学过软件测试课程的毕业生还是难于找到工作。针对这一问题,笔者对软件测试人才的市场需求进行了调研。
调研结果显示,各公司的用人条件和考察内容虽不尽相同,但多数条件都比较相似,归纳起来包括以下几个方面:
① 计算机相关专业毕业;
② 有测试工作经验;
③ 能独立编写各类测试文档;
④ 熟练相关工具使用(包括测试工具及配置管理工具);
⑤ 熟悉主流操作系统;
⑥ 具备很强的语言表达能力、沟通能力和团队合作精神;
⑦ 学习能力强,能快速上手新技术,新业务。
此外,其他调查结果显示,在计算机行业,随着外包开发行业快速发展,对人才在代码和文档方面的规范性、技能和工具的熟练程度要求越来越高[4]。前面列举的软件测试人才招聘条件也应证了这一点。
二、软件测试课程的教学现状
近年来,各教育机构的教师们围绕该课程展开了一些课堂和实验教学的研究,在教学中采用案例教学法,强化实验教学环节,取得了一定的成果,但从案例的规范性和实验体系看,忽略了软件测试具有以工程项目为对象、以设计文档为依据的特征。主要存在的问题表现在以下几个方面:
① 缺乏规范的系统案例;
② 重技术实现轻文档训练(使用及书写);
③ 测试工具流于产品说明;
④ 缺乏面向项目的实验教学体系。
由此可见,我们教学中存在的问题正是人才市场的需求所在。
三、开发内化教学法在软件测试人才培养中的应用
成功素质教育的基本教学方法包括启发式教学法、互动式教学法、实战式教学法,成功素质教育的基本学习方法包括自主式学习法和研究式学习法[1]。开发内化教学法以培养和调动学生自主学习的积极性为前提,通过教师的开发促成学生内化的一种教学方法,笔者认为开发内化教学发就是成功素质教育的基本教学方法和基本学习方法的总和。软件测试是近年来诞生的一门新学科,目前已基本形成其独立的理论体系,但是随着软件产业的发展,有关软件测试的有效技术和方法还有待人们进一步探索。软件测试课程主要针对计算机相关专业高年级学生开设,需要多门先修课程作为铺垫。针对具备一定计算机专业知识的教学对象及还有较大发展空间的学科来说,采用开发内化教学法是比较适合的。下面主要针对人才市场需求和软件测试课程教学中存在的问题,利用开发内化教学法探索软件测试人才培养模式。
(一)启发式教学法的应用
启发式教学能提高学生的学习能力、快速上手新技术和新业务的能力,因此,能帮助学生达成人才需求条件中的⑦,并能促进学生养成自主式学习和研究式学习的良好习惯。
软件测试是一门主要由计算机科学及管理学相结合的新学科,目前,教材中的很多内容基本都是前人采用技术的介绍,这些技术往往是利用计算机技术和管理学的思想,在软件测试实践中探索出来的。因此,在教学中,对于各种测试技术的学习,不是直接介绍技术实现的方法,而是先提出一个具体的测试对象,让学生思考怎么测试更科学,在这一过程中,我们经常发现学生们也能利用先修课程学到的知识想到教材上介绍的方法,抓住这样的时机,鼓励学生,表扬学生,让学生坚定“我行”的自信心,有了自信心学生们就能更大胆更主动地思考和解决问题。
对软件进行有效的测试,提升测试效率,是软件测试面临的关键性挑战,也是软件测试技术进一步发展的瓶颈,各种测试工具的诞生正是基于这样的出发点。但由于种种原因测试工具的使用还远远达不到普及的程度和期望的效果,这说明工具不够完善,有待我们去开发更有效更易于使用的新工具来突破这一瓶颈。在软件测试工具的学习中,我们主要不在介绍工具的作用,而主要是启发学生去思考测试工具采用的技术并评判这种技术,让学生通过查阅资料进一步学习,思考还有没有更好的手段和方法来改进测试工具。
此外,由于软件测试的手段基本都来源于计算机专业的相关知识,教学中就要引导学生去挖掘已经学过的知识来解决测试中的问题,并不失时机地强调每一位计算机专业的学生都要有“计算机头脑”,这个“计算机头脑”要善于观察,捕获日常生活中一切可以用计算机来解决的问题,并思考解决方法。
(二)互动式教学法的应用
互动式教学法能提高学生能过的思考能力、资料查阅能力、归纳总结能力、表达能力,因此,能帮助学生达成人才需求条件中的⑥和⑦。
启发式教学产生的最佳效果就是带来师生间良好的互动,由于授课时间和内容的制约,我们采用启发式教育常常是教师自问自答的方式。目前,我校推行的教学改革,倡导学生自主学习,大力提倡课堂提问,并要求加大授课时间中提问和互动时间的比例。在这一改革思想的指导下,软件测试教学中将按照启发式教育中针对的相关内容,提出问题,采用让学生随堂回答的方式和课后查阅再做答的方式进行。主要以两种方式进行提问:第一,预习提问,在这一环节,设置基本概念和知识点的提问,主要检验学生的预习效果,并在提问过程中对重点内容进行讲解;第二,复习提问,复习提问的难度比预习提问有所加大,属于基本知识的衍生提问,需要学生在掌握基本知识的基础上经过一定的思考或资料查阅才能回答。通过这两种形式的提问,可以促进学生掌握知识、训练学生灵活运用知识解决实际问题的能力。
(三)实战式教学法的应用
人才需求条件中的测试工作经验是毕业生们就职难的关键,而实战教学法是达成这一条件的主要途径,在软件测试的实战中,还能训练学生测试文档写作及测试工具的使用,因此,实战教学法能达成人才需求条件中的②、③和④。
在近两年的教学改革中,主要采用案例教学法,在实验教学中用规范完整的案例模拟企业测试工作模式,让学生在实践中形成“技能”、具备“经验”。实验内容的安排上,注重指导学生使用设计文档、自己编写测试文档,并利用自动化测试工具实施测试,兼顾测试技能训练及工具熟练程度的提高。
1. 规范案例的选择:早期的软件测试教材只涉及一些小的程序段和非系统的案例,2009年以后的软件测试教材在这方面做了很大的改进,出现了较多的案例教程及实践教程。利用系统案例作为理论知识讲解的载体,将更直观地让学生理解知识。但要让学生具备软件测试经验,教材中的案例还存在一些问题,学生的经验只有通过动手实验才可能具备,而且这里所说的经验不是零散的,而是系统化的软件测试经验。在实际工作中,软件测试过程中的单元测试、集成测试、系统测试、验收测试分别对应软件设计中的详细设计、概要设计、系统设计和需求分析,要让学生在实验中完成一个系统的较完整测试过程,不仅需要被测案例系统的完整代码及数据,还必须提供全套的设计文档,这样的案例系统是现有软件测试教材和很多软件开发的实例参考书所不具备的。
我们通过企业调研,分析软件行业的流行开发模式,主要从清华大学出版的系列丛书“软件开发全程实录”中选择案例,并陆续补充完案例的设计资料(需求分析、系统设计、概要设计、详细设计)。利用规范的案例系统,在理论教学中用系统案例诠释理论,在实验教学中用系统案例模拟实际工作模式进行实战训练。
2. 实际测试过程的模拟:在实验教学中,我们花1/3的时间进行软件测试基本技能训练,主要针对白盒及黑盒测试技术选择最实用的测试技术进行用例设计,这一部分是常规的软件测试课程的主要实验内容,属于基本功训练实验。我们用2/3的时间进行模拟实验,在这部分,根据学生的实际情况及笔者多年企业工作经验,模拟企业对新手软件测试人员的培养及职业规划模式,循序渐进安排实验。
在软件测试的模拟实验中,我们采用文档齐全的规范案例实施教学,采用先实施后设计的顺序,依次让学生进行单元测试、集成测试、系统测试的实施及用例设计。注重测试过程、设计文档的使用及测试文档的书写训练,在实验后期,采用分组实验的方式,让学生分担测试任务中的不同角色,模拟团队协作完成测试任务。
3. 一体化教学的实施:从软件测试人员的招聘条件看,除了要求具备软件测试的基本知识,要设计出较好的测试用例、跟踪软件缺陷并改正软件缺陷、选择较好的测试手段提高测试效率等,还需要相关计算机专业知识的支撑。此外,企业期望的是懂编程、设计、测试、管理的综合人才,因此,必须结合专业方向形成课程体系。我们已经进行了在同一学期三门课程之间,利用同一案例进行一体化教学的尝试,即在软件建模设计课程、编程语言课程、软件测试课程中采用相同的案例推进教学,以期让学生更深入地体会软件开发的全过程,具备软件工程化的“经验”。
四、结论
在“创新民办高校高素质人才培养模式”的改革试点中,软件测试课程的教学改革将在总结前面教学改革经验和教训的基础进一步推行开发内化教学法。在今后的教学中,我们打算进行相同案例跨学期跨课程的一体化教学探索,在这一探索过程中,将建设规范的教学案例资源库,探索合理的一体化教学体系,以帮助学生系统地学习专业知识、领悟知识的连贯性、提高学生的工程素养和实战能力。参与一体化教学的各门课程在试验教学中注重企业工作模式和场景的模拟,让学生在学习过程中具备软件工程全过程的“经验”,以进一步提升学生就业竞争力。
参考文献:
[1] 赵作斌. 大学成功素质教育理论与实践[M]. 武汉: 武汉大学出版社, 2009.
[2] 张向宏. 软件测试理论与实践教程[M]. 北京: 人民邮电出版社, 2009.
[3] 刘德宝. 软件测试工程师培训教材[M]. 北京: 科学出版社, 2009.
[4] 北京阿博泰克北大青鸟信息技术有限公司. 行业规则和行业经验手册[M]. 北京: 科学出版社, 2008.
[5] 吴建平. 高职“软件测试技术”课程存在问题和应对措施[J]. 计算机教育, 2007(9).
[6] 陆慧娟等. 面向本科就业市场的计算机工程型人才培养研究[J]. 计算机教育, 2011(5).
[7] 佟伟光. 软件测试[M]. 北京: 人民邮电出版社, 2008.
各位领导、老师,亲爱的同学们:
大家下午好!
我叫xx,来自xx班级,很高兴能够代表2018软件测试国赛队上台发言。在这次全国比赛中,xx和xx和xx组成的代表队很荣幸获得一等奖,成为此项赛事湖北省唯一获奖的代表队。这一成绩不仅凝结着我们的汗水,更离不开学校和软件工程学院领导的关心支持,辅导老师的辛勤培育。
这次参赛,使我们得到了很大提高和锻炼,使我深深认识到了只要我们自己付出汗水和努力,就一定能够得到回报。接下来,我代表我的队员发表一下我们从培训到参赛期间的心得体会:
1、始终保持一颗学习的心
刚开始训练的时候,我们每个人对软件测试都了解的比较浅薄,需要重新去学习这方面的知识,而理论知识的学习上是枯燥的,在这个过程中,我们每个人都戒骄戒躁,认真学习,讨论、根据老师给出的测试用例设计方法来举一反三。同时,我们要端正对训练期间学习的态度,不能把训练期间学习的内容当作要去比赛而完成的任务,要真正的探讨,把老师教会的知识完全理解、学会,然后运用到实际操作当中。
2、
责任心和毅力是获奖重要因素
从3月初选拔到5月底竞赛,中间经历了将近3个月的训练,我们每天早8晚8,训练12个小时,每天进行2次模拟练习,练习、总结、再练习、再总结。这个过程是枯燥的,别的同学周末、清明节、劳动节在放假、休息时,我们在培训室敲打着键盘,每天都想着自己去提升自己,比如说:比昨天多写50条测试用例,两篇文档的时间再缩短5分钟,Bug找的更多,性能测试能够解决环境问题。4个小时的比赛时间,我们训练时间从最初的4个小时,压缩到3个半小时,再压缩到3个小时。时间安排上从刚开始的早上2小时,下午2小时,改到和比赛时间相符的早上9点到下午1点。每次训练完后我们都会向老师汇报任务完成度,不足之处,进行自我总结,不浪费一丝时间,甚至在去往许昌的高铁上,我们每个人都拿着一撮打印好的知识要点默读,直到参赛前一天的晚上,才结束这种状态。
3、
细节和临场应对是取胜关键
比赛中有很多实力强的团队,但是有的获得了一等奖,有的没有获得一等奖,其原因就在于细心和临场应对能力。4个小时,6篇文档,很多队都能做到,但是得分的关键就在于细节。我们从训练开始就注重细节问题,尽量不因细节问题丢分。其次是临场应对,赛场上的环境是多变的,我们训练的环境并不可能百分百与赛场环境相符,为了保证在比赛期间不因环境问题打乱计划,在训练的过程中,出现的环境问题都是我们尽量自己去解决,实在解决不了才会询问老师。同时,我们还假想了很多赛场上会出现的问题,并且制定了相应的策略,以充足的准备去面对赛场。
4、
团队协作很重要
关键词:PLC软件;工程化;管理实践
中图分类号: TU71 文献标识码: A 文章编号: 1673-1069(2016)35-23-2
0 引言
本文结合本单位装检类设备及高端工艺装备中PLC软件特点,推广深化GJB5000A体系应用,对PLC软件工程化管理进行了初步探索与实践,提出了PLC软件工程化管理方法与规范,管控关键性过程活动和文档质量,以测试推动PLC软件工程化,提升PLC软件的综合效能,有效支撑本单位装检设备及高端工艺装备的高质量研制与管理。
1 PLC软件工程化管理的迫切需求
软件工程化管理是提高软件研制质量的必经之路,不仅能降低开发成本,缩短开发周期,更能降低软件研制风险,提高软件的质量和可靠性,增强软件的可维护性。作为工业控制系统的重要组成部分,PLC软件的工程化管理对于保障控制系统安全与可靠运行、提升效能和增值等具有重要作用。
PLC(Programmable Logic Controller),即可编程逻辑控制器,应用于自动化、高可靠性要求的工业环境,成为工业控制系统的重要单元,广泛应用于逻辑控制、运动控制、工艺过程控制、信号测试与诊断等领域,因此广义上的PLC,亦包括可编程自动化控制器、可编程控制器。
相对于PLC硬件的固态化与显性化,PLC软件具备更灵活的柔性与更强的扩展性,成为PLC产品功能实现与性能提升的关键载体,因此,PLC软件质量亦成为工业控制系统质量与可靠性的关键。PLC软件广泛应用于各类测试设备、实验装置、装检设备以及高端工艺装备等,在自动化与智能化控制、安全性与可靠性等方面发挥着重要作用。
集成化装检设备离不开PLC软件。实现装检自动化,包括实现传感仪表信号检测、流程自动控制、状态监控、应急安全处理及报警等需要高质量、高可靠性的PLC软件。因此PLC软件是实现装检自动化与智能化的保障,可以显著提升产品质量可靠性、提高应急响应能力和环境适应能力、降低劳动强度和操作技能要求、减少人体危害风险等。
面向超精密加工领域研发的高端工艺装备,几乎均涉及PLC控制,如金刚车系列机床、磁流变抛光系列机床、激光焊接机床等,实现电机与仪表驱动、人机交互、运动控制、加工工艺过程控制、数据采集、通信及故障诊断等。
在高端工艺装备中,PLC软件作为控制系统的重要组成部分,从功能看, 它是实现运动(协调)控制、开关量逻辑控制、工艺参数与工艺过程控制、数据处理及通信的重要载体;从性能看,它是实现高端工艺装备安全性、可靠性的重要技术手段。
综前所述,PLC软件在当前和未来均存在巨大的现实和潜在需求。相对于PLC软件技术的不断发展,需要在PLC软件管理方面与时俱进。经过分析,以下方面制约了PLC软件的质量与研发进度。
①使用的PLC产品种类繁多,各PLC产品技术差异性大,包括平台架构方式、编程与测试方法等,导致PLC软件设计差异性大,尚未结合本单位产品特点形成相应的PLC软件技术规范。
②PLC软件开发人员分工不明确,设计、编码与测试多由同一人承担,软件质量与开发进度无法保证,人员更替对项目研发和后期维护影响较大。
③PLC软件开发过程活动、软件相关开发文档和软件版本,未进行有效管控,导致PLC软件质量与开发进度成为项目发展的瓶颈之一。
④针对PLC软件的测试平台和测试手段较为欠缺,测试过程缺乏规范。
大量研究和实践表明,软件工程化是提高软件开发质量的必经之路。中国工程物理研究院机械制造工艺研究所在软件工程化管理方面开展了体系研究,于2015年11月通过GJB5000A二级正式评价,形成了软件工程管理手册、管理规范和技术规范,切实提高了本单位软件工程化水平。
但本单位软件工程化管理尚未涵盖PLC软件。有别于其他软件,PLC软件与硬件耦合度高,对硬件平台依赖性大;PLC软件驱动硬件单元,对系统综合性能影响大;PLC软件测试难度大,包括测试平台的搭建、真实工况与异常工况的模拟等;PLC软件涉及更多的接口,包括与机械结构、电气硬件、上位软件及复杂的现场工况。因此,实施PLC软件工程化,加强PLC软件质量控制,确保其有效推动提高PLC软件质量和开发进度,需探索与PLC特点和本单位工业控制系统相适宜的管理办法。
2 PLC软件工程化管理调研
为探索PLC软件工程化管理方法,我们对国内相关单位的PLC软件管理进行了调研。根据调研初步情况,国内还没有单位将PLC软件纳入GJB5000A体系进行管理,尚未针对PLC软件形成工程体系化的管理方法和规范。一般均将PLC软件纳入电气控制系统管理,存在与电气硬件强耦合、开发角色分工不明确等带来的一些问题,包括PLC软件规格需求不清晰、开发过程无法有效跟踪和控制、测试不规范、PLC软件质量对人的依赖性大等。但从调研单位的工程实践看,有诸多可供加强PLC软件质量控制的有效手段。
机床厂专机的控制软件,与本单位PLC软件具有较大相似度。机床厂对专机在控制软件界定及分类管理、设计原则和技术要求、评审与软件验证、软件版本管理等方面,进行了规范与要求。
同为下位控制的PLC软件,可借鉴FPGA软件管理。虽然FPGA软件面向芯片级、侧重时序逻辑,而PLC软件面向控制系统集成,两者在技术上差异性较大,但在管理方面具有较大的相似性。该院对FPGA软件质量进行了有效的体系管理,形成了设计准则及测试规范等,相关管理经验包括配置、需求、角色分配、评审与测试规范等方面,对于PLC软件管理均是有益的参考。
重视软件测试。PLC软件测试,包括测试平台的搭建和测试方法的构建、PLC程序的执行效率、PLC软件的配置与移植、PLC软件对硬件变化或性能衰减的适应性、PLC软件对控制系统总体的安全性和可靠性影响等内容。从调研情况看,分阶段(包括单元测试、接口测试、集成测试)、多方法(包括数字仿真、硬件在回路、形式化验证等)测试是有益的,同时,编制测试规范、测试计划及测试过程需要对相关控制软硬件知识的深入认识。
3 PLC软件工程化管理初探
作为总装备部组织国内专家制定、用于指导军用软件研制机构改善软件过程和加强软件开发过程控制与管理的标准,GJB5000A对提升软件研制质量和管理水平、实现软件研制能力由基于个人的能力转变为组织的能力,提供了科学管理理念和做法。本单位在高端工艺装备多个软件项目开发中推行GJB5000A,切实提升了上位控制软件的研制质量。鉴于国内尚未将GJB5000A涵盖PLC软件管理的现状,本单位PLC软件管理遵循GJB5000A“服务于本单位组织目标和质量目标、追求有效性和适用性,渐进推进”的思想,结合本单位PLC软件和组织特点,对PLC软件工程化管理进行了初步探索与管理实践。
基于本单位的软件工程管理体系(QJZ53/54/55),结合本单位PLC软件特点、PLC软件研制管理基础等,借鉴同行相关管理方法,形成适宜于本单位PLC软件应用需求、与研发人员能力和组织管理水平相匹配的PLC软件研制管理要求,按此要求,在武器型号装检设备及高端工艺装备项目中,推行PLC软件工程化项目试点,通过项目实践及时总结评价,在实践中不断提升人员的研发和管理能力、组织管理水平,并迭代完善PLC软件研制管理要求,从而引导、促进PLC软件研制能力成熟度不断进步。
如前所述,将制约本单位当前PLC软件质量和项目进度的这些薄弱环节,设置为重要环节和节点,纳入质量目标加以规范管理,并基于GJB5000A本地化的软件工程管理体系进行裁剪简化,形成PLC软件研制管理要求,其流程:重点从项目开发的人员配置、过程重要节点管控和测试规范、文档质量等方面推进PLC软件工程化管理。
3.1 人员配置
改变设计、编码与测试由同一人承担的开发方式,软件开发人员至少由2人构成,包括需求与设计员、程序编码员(根据目前人员情况,需求与设计员和程序编码员可以由同一人承担)、程序测试员。
软件工程化总是关注过程,而过程的关键因素是人。针对当前PLC研发人员不熟悉GJB5000A体系、而掌握GJB5000A的人员又不理解PLC技术的现况,一方面开展培训,提高专业技术人员在PLC技术及软件工程化管理两方面的知识储备;另一方面,让专业技术人员参与数项PLC软件工程化试点项目,并交叉承担开发人员、QA、CM、测试人员等不同角色,在过程实践中理解各角色要求、发现问题、改进方法、形成共识,进而形成两类人员相互匹配和相互促进的持续改进过程。
3.2 重视设计文档,管控关键过程
加强并规范源头设计,重视设计文档,对关键过程活动进行管控。重点对软件研制任务书、软件需求规格说明书、软件设计说明书,进行评审确保设计文档质量。评审通过后,才能进行下环节,即根据软件研制任务书、软件需求规格说明,进行软件设计工作,形成软件设计说明书、软件测试计划与说明书,指导软件编码设计和测试工作。
简化文档形式,强化文档内容,确保设计文档能有效提升PLC软件质量和开发进度。鉴于PLC软件与子系统(包含机械结构、电气硬件和上位软件)涉及多接口,重点要求对接口详细分析和说明;要求以流程框图对控制功能模块的逻辑进行说明。
3.3 以软件测试推动PLC软件工程化
规范并加强PLC软件测试工作。PLC软件测试包括单元测试和系统集成测试,由项目组内部控制,测试前要求编制测试计划与说明书,由程序测试员根据测试计划与说明书,进行测试、迭代优化;测试后,编制软件测试报告。测试过程中,除测试软件研制任务书要求的功能与性能外,重点考察下位软件对控制系统安全性、可靠性的防护和保障,考察程序的执行效率和关键信号的实时响应性。
3.4 加强软件版本进行控制管理
参照软件工程管理手册,对PLC软件建立至少两级受控库,并进行分级受控库的配置管理。针对PLC涉及多接口及对系统影响直接,加强版本变更对影响域的详细分析与说明。
4 小结
GJB5000A对软件研制提供了一套科学管理理念和做法,这是一个结合单位实际实现软件质量持续优化、不断改进的过程,对刚起步的PLC软件工程化管理尤其如此。今后,将在GJB5000A体系涵盖PLC软件研制的基础上,结合各试点项目反馈,持续优化PLC软件的管理活动,完善PLC软件技术规范,切实加强PLC软件质量控制。
关键词:软件“准职业人”;实训教学
中图分类号:TP31-4
1 软件专业毕业生面临的主要问题
1.1 缺乏实用技能。在实际项目中,客户首次接触软件时关注的是界面风格是否美观、大气、整齐一致,询问是否有能够给自己工作带来便利并解决问题的功能;而学生在学校里接受的训练主要以完成基本功能为目标,所以在应对实际项目时,他们总认为软件项目的界面交互式设计是美工的事,以软件实现功能的多少来衡量自己开发能力的高低。
1.2 缺乏分析能力。很多毕业生习惯于想到哪儿就做到哪儿,很少有人在做项目之前先使用有效的需求规格说明书和原型与客户交流,缺乏软件开发的条理性。很多人只对编程感兴趣,对开发需求、系统设计、组件重用、技术评审、交互设计、版本控制、测试驱动等重要实践步骤不予考虑。
1.3 缺乏有效的沟通能力。主要体现在多人一起开发一个项目时效率极为低下。其主要原因在于他们通常不愿意倾听对方的意见,容易武断。为此我院软件技术专业提出了基于“企业学院”的“知训合一、课证相融”软件“准职业人”人才培养模式。在此人才培养模式的指导下,我们构建了符合软件“准职业人”培养目标的多层次、模块化的实践教学体系。
2 符合软件“准职业人”培养目标的多层次、模块化的实践教学体系
2.1 研究思路。第一条主线以软件企业“准职业人”的职业成长路线贯穿整个教学过程,使学生通过“职场体验―实境训练―顶岗历练”来感知职业环境氛围、职业岗位流程,培养职业岗位素质、技能,体验岗位能力需求,逐渐从Freshman(新员工)转变为Junior(正式员工),最终成长为Senior(核心骨干)。如图1:
第二条主线按照软件企业项目开发工作过程来组织教学实施。毕业生常抱怨“以往的实践没有开发真实工程项目的经历,很难形成完整的知识体系和能力体系”。我们在教学过程中就选取当前中小型企业普遍采用的快速原型开发法,按照“项目规划-需求分析-软件开发-多次迭代-逐步完善项目原型-软件测试-项目验收-软件维护”的真实企业软件开发过程的顺序来进行项目的实施。如图2:
2.2 多层次、模块化的实践教学体系。实践教学环节由学校的教师跟企业的项目经理配合,共同完成。在项目经理进校园这个环节,不将模拟项目带到学校来,而是由项目经理带领学生,按照学校的需求定制开发系统,比如食堂管理系统,大学生创新创业计划管理系统等,项目开发完全产品化。并希望产品未来能够对外推广,将科研成果产品化。在这个过程中学生也接受全真项目锻炼,相当于在毕业时学生就已经有了真实的系统项目开发经验。如图3:
技术迭代:循序渐进培养学生不同技术结构的开发技能。
设计迭代:培养学生软件设计及架构思路。
项目主线:一个项目贯穿整个培养过程,保持思路连贯性。
3 实训教学的具体实施(以《项目实战为例》)
3.1 逆向制定教学内容。通过对典型职业岗位程序员,拓展职业岗位测试员、界面设计师、技术支持的分析,得出完成岗位工作任务所需的特有的知识、能力、素质和共有的知识、能力、素质,再结合第二条主线软件企业项目开发的需要,对课程内容进行选取。对选取出来的内容,再按照第一条主线职业成长路线的需要,对课程内容进行了重新组合,科学设计了入职培训、食堂管理系统、大学生创新创业计划系统,将专业技能和知识点进行整合、优化。
3.2 各阶段实施过程。(1)入职培训。入职培训的目的是让学生了解企业文化,学习管理制度,并通过一系列的素质拓展训练来培养员工的沟通能力、表达能力和团队协作能力。由企业兼职教师对员工进行企业文化和管理制度的培训。比如完美表达的训练,地雷战的训练,摆造型等。(2)食堂管理系统。这是为试用期的员工而设计的。在企业里试用期由老员工指导新员工完成项目的开发,注重的是技能的培养。在这里由老员工(教师)带领新员工(学生)来理清项目开发的一般流程从项目背景介绍到解决方案的给出再到项目开发、项目测试、项目汇报直至项目总结,重点介绍企业级开发中涉及到的技术要点,以及这些技术要点之间的关系,帮助学生在短时间内将所学的知识点串接起来并形成体系。(3)大学生创新创业计划系统。根据软件开发流程,将项目划分为项目策划、需求分析、系统设计、编码测试、部署和项目总结六个任务。在本阶段我们的学生已经成长为企业的正式员工,由学生主体来完成项目的开发。在分组时充分考虑每位员工的特性。岗位分配的原则是从前两个阶段的考核结果中提取沟通能力、表达能力,界面的友好性设计,功能的完整性,技术含量的高低,测试水平等制成图表,从图中将清晰的显示每位员工的优劣势所在,在进行岗位分配时注意扬长避短。比如某员工在界面设计性方面显示出较强的能力,而他的编码能力则显得相对较弱,在岗位分配时可以给他分配一个难度相对较低的模块,同时让他兼任界面设计美化的工作。要求每位员工每天给出日工作日志,每周给出周工作日志。需求分析阶段主要由项目经理完成,同时穿插对技术支持和界面设计师的培养。比如在需求分析的前期由技术支持先与客户沟通,将收集到的有用的信息反馈给我们的项目经理。在这过程中教给技术支持一些实用的技巧。在需求分析的中后期由界面设计师不断的构建项目原型与客户进行沟通,直至客户满意为止。再比如软件测试阶段,由各组根据项目经理提供的学习资源自主完成集成测试、数据库测试和系统测试。
4 实训教学的效果
通过以企业真实工程项目做载体,扎根企业,引用企业标准,共享企业资源,借鉴企业机制,熏陶企业文化来培育人才。学生在教师的指导下能利用所学知识去提供技术服务,开发了我院的工资查询系统,同时还对教师的科研项目进行了自主开发,比如市科技项目“南通市主要农作物生产信息化网络共享服务平台”的子课题“南通市主要农作物生产技术数据库”;“长江药用植物园”药用植物数据库的设计与开发等。在对毕业生的跟踪调查中用人单位普遍反映这批学生掌握了职业核心能力,职业素质也大幅提高,真正实现了与企业需求的零距离对接。
参考文献:
[1]张舜德,张琪.高职软件技术专业多层次实训体系的设计[J].职教论坛,2010(5).
[2]李唯.高职院校软件技术专业实训教学的研究与实践[J].计算机教育,2012(20).
[3]史玉珍,李波.基于.net的软件实训体系构建与研究[J].职业技术教育,2009(11).
关键词:学校;软件工程;教学
中图分类号:G642 文献标识码:A 文章编号:1006-4311(2012)02-0216-02
0 引言
软件工程与其他计算机课程,如程序设计语言、数据结构、编译原理、数据库以及操作系统等课程都是相互作用和影响的。在一定程度上说,软件工程讨论的是在实际开发当中综合运用这些课程中讲过的理论和方法,将这些课程的理论和方法放在一个统一的目标下,这个目标就是在有限的时间及预算条件下,开发出高质量的令用户满意的软件。
软件是信息化的核心,各行各业的信息化建设都离不开软件,软件产业的发展需要大量的人才,无论是公办学校还是民办学校,作为人才培养的基地,都应该培养学生掌握软件工程的基本理论、基本概念和方法和技术,并将其应用于软件开发的具体实践中,为国家的信息化建设服务。
1 《软件工程》教学内容与课程特点
《软件工程》是针对计算机及相关专业高年级学生开设的课程,在学习《软件工程》课程之前,学生必须完成《高级语言程序设计》、《数据结构》、《数据库系统原理》、《操作系统》、《计算机网络》等先行课程的学习。本课程的知识点是软件工程的整个知识体系结构,即软件需求、软件设计、软件实现、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程的工具和方法、软件质量等十个知识点,特别是软件过程的概念和软件系统的分析设计技术。
软件工程涉及到计算机、经济学、管理学、工程学、市场学等多个领域的知识,由于涉及内容太多、太宽,使学生感到这门课中包含的知识非常丰富,而且其本身还处于不断发展中,这是本课程的突出特点。正因为这一特点,软件工程教学中要突出重点,扩大学生的知识面,同时要重视实践环节,通过多种教学形式使学生掌握各种知识的综合应用。
2 学校《软件工程》课程教学存在的问题
普遍教学条件和设备资源比较短缺,师资力量较薄弱,教师教学水平、教学条件以及所处的社会大环境方面都表现出一些特性,具体到《软件工程》课程教学方面,存在一些问题。
2.1学生基础较差,文化课学习积极性不高学生普遍基础较差,学习积极性、主动性不高,还有的学生存在自卑心理,对学习有畏难情绪,对于《软件工程》课程的前修课程,如《高级语言程序设计》、《数据结构》、《数据库系统原理》等学习的不够扎实,许多知识体系不能连贯起来,给《软件工程》课程教学带来一定的问题。
2.2教师教学水平问题教师大多数是近几年新招聘的其他高校毕业生,他们毕业以后直接进入学校,缺乏实际软件工程项目的锻炼,教学方法比较单一,教学经验不足,不利于搞好《软件工程》课程教学o
2.3教学条件问题学校普遍存在办学资金紧张的问题,因此,教学设备和教学条件等方面不一定能全部满足需要,如有的学校多媒体教室、电脑等设备不能满足要求,学校在计算机软件方面的投资就更少;还有的学校校园网络的建设也没有到位,这些都给提高《软件工程》课程教学质量带来一定的困难。
2.4社会环境问题不容质疑,现在社会上普遍存在着轻视学校的现象,突出表现在学校毕业生求职、就业等方面,学校要求得发展,必须高度重视毕业生的就业问题。在具体课程教学中,要从培养“应用型”人才这一目标出发,紧密结合社会需要,不断改进教学内容,抓好新技术、新知识教学,同时大力加强实践性教学环节,培养与社会需要“接轨”的“产品”。
3 《软件工程》教学改进的内容和方法
3.1教学过程引入实际案例软件工程课程涉及面很广,如果不结合实际工程项目进行教学,很难把教学内容教授给学生。因此,在教学过程中引入案例,将复杂抽象的概念用具体生动的实例进行诠释,能够收到事半功倍的效果。例如,在授课时教师可结合1个“学校教材购销系统”实例,给学生介绍具体的开发过程和方法。案例教学法也是在软件工程教学中经常采用的一种方法,软件工程案例教学通过以企事业单位中的实际项目或从中抽取的模拟项目为研讨核心,为学生创造一个仿真环境,使其在课堂上就能接触到实际问题和环境,从而学会在复杂条件下利用所学理论解决问题。要搞好案例教学,必须从教学准备、教学组织与实施、教学总结与讨论几个环节抓起,同时,在具体教学中,还要注意以下问题:第一,选择与设计案例时,要考虑案例的针对性、复杂性,最好是授课教师与具有丰富经验的软件工程师共同编写,可以从软件工程生命周期的角度出发,选择一个软件工程项目的全部过程,也可以将一个大型项目的某一个阶段作为教学案例。第二,案例涉及多门计算机课程。在讲授过程中,最好由多位相应课程老师共同组织教学。第三,教师布置案例后,学生可以进行“讨论式”学习,在这个过程中,学生是项目的主体,教师起到组织、指导、咨询的作用。可将学生分成若干个小组,每个学生均有机会参加讨论。
“软件过程及管理”是软件工程教学内容中的一个重点,软件过程及其管理是长期开发实践中提炼的内容,如软件开发过程中的时间控制、人与人之间的合作和交流等。该内容只有在实践中才能切身体会到其正确性和必要性。因而这部分的教学宜采用“实践型”教学方式,以课程设计的形式,学生以小组为单位共同讨论、协商完成任务。
3.2组织课堂讨论,形成教学互动我国有句名言:“授人以鱼,不如授人以渔”。学生是教学活动的核心,教师要利用合适的方法调动学生的积极心理和参与意识,改变传统的教师高高在上的教学方式,让学生参与教学过程,有机会发表自己的看法。
为了提高软件工程教学质量,学校还可以采取开办讲座的形式,针对一些专题,如UML知识、软件测试技术与岗位需求、第四代技术等。聘请软件园区或科研院所的专家到校内开展讲座,扩大教师和学生的知识面。网络教学也是一种较好的教学形式,软件工程相关教师共同建立软件工程学习网站,将课程安排、教学大纲、多媒体课件、研究案例、文档模板、工程规范和标准、作业、实践项目和要求等,以及大量的、有价值的参考书籍清单、电子文献等放在网上,供学生随时查阅。同时,教师和学生也可以在网上进行交流和答疑,扩大教学时间和空间。
如上所述,软件工程教学内容宽泛,涉及面广,教学中有许多图形,利用多媒体教学手段,将教学内容制作成多媒体课件,能够在同样的一节课内教授更多的内容,形象化地展示软件工程基本原理,还可以动态演示软件项目结构和设计细节,利于学生理解教学内容。
3.3加强实践环节从本质上看,软件工程的实践性和综合性是其他相关课程难以比拟的。因此,必须结合设计项目和实际应用加以施教。才能取得良好的教学效果。那么,在把握教学进度的同
时,必须及早安排好课程设计,让学生同步开展课程设计。这样,理论课讲完了,课程设计也基本结束,学生们能从理论和实践的结合上,加深对软件工程知识难点、重点的理解,进一步深刻理解软件过程和系统消化理论知识,训练项目设计的思路,锻炼实际开发能力,培养严格规范的项目开发方法和步骤,体验文档编写整理、阶段性评审总结以及软件测试等各个方面的工作流程,直接培养了学生从事实际开发的能力。
3.4派骨干教师参加企业项目实践学校的教师大多是青年教师,实际开发经验较少,要将《软件工程》课程教好、教活,有一定的难度,学校办学资金紧张,也不可能花钱送教师参加培训,可以利用暑期时间,派骨干教师参加软件企业具体项目的开发,既为专业培养了教师,也节约了成本,同时教师参与开发的具体项目也可以作为教学中的案例或项目驱动教学中的项目积累起来。
3.5引进培训机构,多方共同培养学生目前计算机软件类培训机构非常多,其中有一批专门针对计算机专业毕业生,受软件企业委托开展定向培训,其培训内容与《软件工程》课程内容有许多是相同的。在国家的大力支持下,国内已经建设了中关村软件园、大连软件园、成都软件园、西安软件园等国家级软件企业园区,同时也成立了大型的实训基地与培训中心,这些机构目前都开展软件工程项目培训。学校在师资力量薄弱、硬件资源相对落后的情况下,可以考虑与上述培训机构合作,采取派学生出去、将培训机构引进学校、课程输出和置换等各种方式,开展软件工程培训,提高教学质量,培养学生实际工作能力,为学生顺利就业打下良好的基础。
4 结束语
《软件工程》教学的目标,一是培养学生运用软件工程的基本知识开发实际软件项目的能力,强调对过程的理解,方法的掌握,技术和工具的应用,以及对团队的重视:二是培养学生严谨、求实的科学态度和团队合作精神。以上仅从从实践教学环节,教师队伍培养,引进培训机构,改建教学方法、采取多种教学形式等方面提出了一些想法,要想真正达到上述目标,还需要进一步深入研究和思考。
参考文献:
[1]杜晶,王凤芹,李祁.软件工程课程教学特征与改革[J]福建电脑,2010,(06)
[2]沈备军,顾春华.软件工程教学模式的研究和实践[J].计算机教育,2005。(01)
[3]潘娅歙件工程教学方法探索[J].西南科技大学高教研究,2006,(02)