时间:2023-03-08 15:35:11
序论:在您撰写软件开发培训总结时,参考他人的优秀作品可以开阔视野,小编为您整理的7篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
关键词:高职;软件开发课程;虚拟实训;实践教学
中图分类号:G712 文献标识码:A 文章编号:1007-9599 (2012) 11-0000-02
一、引言
为培养应用型和技能型软件开发人才,在高职软件技术专业中实施三阶段技能递进培养模式,该模式将技能培训分为基本技能积累、专业核心能力培养和综合技能培训三阶段。基本技能积累阶段包含培养学生基本操作技能和编程技能的课程,如程序设计基础等课程;专业核心能力培养阶段包含培养更高一级专业能力的课程,如桌面应用程序开发、web应用程序开发等课程;综合技能培训阶段是在前两个阶段的基础上,开展以提高职业行动能力为目标的综合技术应用训练。
学生在教学阶段递进过程中需要通过大量实践掌握软件开发技能,因此每一门专业核心课程都设置相应的实训课程,这些课程与综合技术应用训练都是以软件开发项目为载体,通过实训,使学生提高实践能力、积累实际软件开发经验。为实现实践教学过程与软件开发过程的对接,必须采用相适应的教学模式以及提供合适的软件开发实训环境。由于培养费用、实践场地的限制,让每个学生都走上实际工作岗位参加真实环境中的项目开发存在很大的困难。在软件开发实训课程中采用基于虚拟实训的实践教学模式可以很好的解决上述问题,虚拟实训作为一种打破时间、空间限制的实训方式在节约教学投资、优化教学情境和实现资源共享等方面均起到十分重要的作用。
二、构建基于虚拟实训的实践教学模式
(一)构建思路
根据对软件开发人员岗位需求的调研,软件产品开发工作过程包括项目立项、需求分析、设计、编码、测试等一系列工作。工作任务对工作和技术的要求为熟悉软件开发流程,掌握相关开发技术,具备良好的代码编码习惯及技术文档编写能力,有较强自学能力、分析和独立解决问题的能力、团队合作精神和沟通能力。
为达到学习过程与工作过程的一致性,引入虚拟公司形式,采用虚拟环境与真实项目相结合、虚拟员工与真实管理相结合的方式,构建基于虚拟实训的实践教学模式。在学校的实训室中,模拟公司的工作环境,以真实项目为载体,按照公司的软件项目开发流程完成项目开发,缩短学生所学知识和应用的距离。通过教师学生员工化,模拟公司开发部的组织结构,教师担任项目经理的角色,完成岗位相应的工作,包括协调人员配置、制定项目解决方案、监控项目执行、提供技术指导、组织项目评审。学生担任开发部普通员工的角色,在软件开发员岗位上完成项目开发各阶段任务,在项目实践过程中熟悉规范的软件开发流程,掌握高效的软件项目开发方法和技能。
(二)内容结构
基于软件开发岗位工作任务的要求,构建具有“工学结合、校企结合、虚实结合”特点的虚拟实训教学模式。该模式主要由四部分组成:知识培训、项目实施、项目管理和项目评审。各组成部分涉及三大类角色:项目经理(教师)、项目组长(学生)、项目成员(学生),项目经理负责完成知识培训和项目管理,项目组长和项目成员负责项目实施工作,项目经理、项目组长和项目成员共同完成项目评审。
知识培训部分:包括专业基础知识、实训项目涉及的关键技术与知识以及项目应用领域知识的培训。专业基础知识培训包含软件工程基本知识、特定语言的代码规范、团队开发规范、技术文档编写、软件测试用例的执行和记录等项目开发支撑知识。关键技术与知识的培训由项目经理根据课程目标和项目特点展开,包括关键技术和常用架构的学习、企业最新技术和开发工具的引入。领域知识培训是指项目应用领域背景知识的介绍,例如财务管理系统的开发背景涉及金融财会的相关知识。
项目实施部分:项目实施是虚拟实训教学的重要组成部分,包括实训任务分解和项目实现。项目组接受来自项目经理的实训任务,由项目组长进行任务分解并分配到各项目成员。项目成员按照企业软件开发流程执行项目实施各阶段的典型工作任务。
项目管理部分:项目管理包括进度控制和过程检查两部分,由项目经理实施以保证实训项目按实训计划、实训大纲的要求如期完成。项目经理指导项目组长制定项目开发计划,根据项目计划监督各组的工作进度。过程检查部分包括设定过程检查点以及阶段通过标准,项目经理按照通过标准审查阶段成果,确保项目完成质量。
项目评审部分:项目评审部分由项目演示交流和项目考核两部分组成。在项目演示交流环节,各项目组介绍开发过程、演示项目运行结果、进行项目答辩。在项目考核方面,采用多元化的考核体系,注重对学生实训过程的评价,在项目经理考核的基础之上,参照项目组长评价,得出最终评价结果。
(三)应用过程
关键词:核电工程软件;软件开发;过程控制
中图分类号:TP311
文献标识码:A
文章编号:1009-2374(2012)24-0118-03
1 概述
随着我国核电事业的蓬勃发展,在核电行业尤其是核电厂,无论是从设计、制造、运行到退役等各个阶段,还是从控制、测量、检查等各个环节,无不涉及到计算机软件的应用。作为我国核电行业生产管理和安全保证的重要手段和工具之一,核电工程应用软件正扮演着越来越重要的角色。
本文主要以软件工程化开发和软件工程化管理的思想和方法为依据,以我们研制的核电工程应用软件——核电厂系统化培训管理系统为例,介绍了核电工程应用软件的研制过程控制管理以及在此过程中要遵循的主要原则和规范,并对过程管理和研制特点做了简要分析总结。
2 项目概况
2.1 背景
核电厂各类人员的整体、综合素质和业务能力对达到电厂“安全、可靠、稳定、经济运行”的目标至关重要。为了保持人员的资格和工作能力、保证人员的培训质量和工作绩效,核电厂将在培训管理活动中,采用IAEA推荐的国际上普遍应用的SAT(Systematic Approach to Training)系统化培训方法对培训活动进行管理控制。
针对系统化培训活动中控制过程复杂、数据信息量大、用户接口繁多等特点,相关核电厂决定借助目前流行的计算机技术,遵循核电厂人员系统化培训方法的控制流程,开发一套“核电厂系统化培训管理系统(以下简称TMS-SAT系统)”来辅助核电厂的被培训人员、培训管理人员和电厂管理人员,系统地规范核电厂现有的培训活动,提高培训效果和效率,使核电厂各类人员能获得并保持完成所承担工作的资格和能力。
2.2 项目目标和范围
核电厂系统化培训管理系统属于核电工程软件类项目,目标是在将来核电厂内的培训工作中以TMS-SAT系统为载体推广SAT培训方法,全面推行系统化培训的理念和管理,不断完善核电厂的培训管理工作,该项目主要完成软件系统平台的开发,主要内容包括:岗位任务分析子系统开发,培训大纲管理子系统开发,培训教材管理子系统开发,培训记录管理子系统开发,评价反馈管理子系统开发以及考试题库管理子系统开发。
3 项目实施和过程管理实践
TMS-SAT项目的控制管理是按需求确定范围、按目标制定质量计划和开发计划、按计划执行管理的过程,对该项目软件系统开发各阶段加强控制管理的根本目的在于增强对软件开发的控制能力,提升软件开发的质量。TMS-SAT按以下6个阶段
进行:
3.1 项目的定义与分析
该项目的立项由用户单位根据自身业务的工作需要,对立项目的、业务需求范围、技术经济指标、开发周期要求等方面做简要概述,进行项目立项的可行性论证。单位在该阶段协助用户完成系统的定义与分析,协助用户编制《技术规格书》并交付用户审查,使用户能了解我们的研发能力和对此软件开发所需投入的人力、物力以及此项目最终达到的目标。
3.2 需求分析阶段
当第一阶段工作完成后,我们将制定适合本项目开发活动中的《质量计划》来控制软件开发周期内所有活动的工作条件、工作结果、评审要求等节点和各工作阶段的质量控制点要求;为了向用户描述有关此项目文档要求、人力资源、开发进度、审查要求、最终交付的产品等内容,编制此项目的《开发计划》和《测试计划》。
然后根据《技术规格书》的要求,进一步了解此项目的数据输入、输出、系统性能、环境以及最终将达到的目标等详细内容,形成本项目的《软件需求分析说明书》和《数据要求说明书》。
3.3 系统设计阶段
当软件需求分析阶段的审查通过后,根据《软件需求分析说明书》和《数据要求说明书》的要求,完成“应该如何解决这个问题”和“具体解决此问题应该采取的办法”这两项工作。根据此系统的总体概要设计,通过数据流图和数据字典的形势来表示系统的逻辑模型,形成《概要设计说明书》和《数据库设计说明书》。
3.4 系统开发
开发人员按照《详细设计说明书》和《软件开发规范》的要求,编写出正确的、容易理解和便于维护的程序模块。在每个子模块形成后,程序开发人员和软件测试人员对此子模块进行单元测试,形成《单元测试报告或记录》。在此阶段,还将根据《测试计划》和《详细设计说明书》的要求,编制此软件系统的《测试程序》,将所需测试的内容、步骤、结果、案例等描述出来供测试阶段使用。
3.5 系统测试阶段
该项目软件系统在开发人员完成所有软件模块编码后,测试人员及用户将根据《测试程序》进行软件系统测试。对测试中产生的软件不符合项,形成“软件问题报告单”,并最终形成《系统测试报告》。当软件交付给用户使用时,还将同时向用户提交《软件系统现场安装实施手册》、《用户手册》和《维护手册》等相关文档。
3.6 运行和维护阶段
项目正式交付给用户使用后,关键任务是通过各种必要的维护活动使软件系统能长久地满足用户的需要。为完成此任务,我们从改正性、适应性、完善性、预防性等几方面来进行维护活动中的工作。
4 项目控制管理的分析总结
4.1 项目开发管理质量化
该项目组通过编制《项目质量计划》、《项目开发计划》和《项目测试计划》等质量文件,对该项目进行全过程监督、控制,使各质量相关活动在受控状态下完成,确保项目中的各项质量要求得到了满足。
4.2 项目开发过程规范化
该项目的软件系统在依据软件工程化开发和软件工程化管理的理念和方法的基础上,通过严格执行有关软件开发管理和工作程序,规范软件研发过程,同时也更好地指导了培训大纲和基础理论教材的开发工作;项目所有过程文档资料及软件编码均采用统一的编码和编写格式。
4.3 项目开发控制进度化
依据软件工程化开发和软件工程化管理的理念和方法,科学地划分和制定核电工程应用软件的研制过程,同时各阶段也兼顾了培训大纲和基础理论教材的开发工作;采用三级进度管理体系,分级落实进度责任制。
4.4 项目开发监督岗位化
由于该项目软件系统的《需求分析说明书》往往是采用软件设计的术语编写,业务需求方难以理解,也就很难发现需求报告中与实际需求不符之处,更难提出建设性的意见。因此在该项目软件系统的研制开发过程中引入了软件监督岗位,由核电厂信息技术管理部门担任,协调业务需求部门和软件开发方的关系,监控软件开发任务的执行情况,给开发人员和管理层提供反映软件过程质量的信息和数据,提高项目透明度。
4.5 人员配备专业化
项目编制了各类人员的配置计划,如系统分析人员、系统设计人员、软件开发人员、测试和验证人员等,明确了具体的工作方式、内容和要求,并根据岗位要求进行必要的培训和再培训,以便使他们获得并保持必要的能力。
5 结语
实践证明由于该项目在软件系统方面依照软件工程化开发和软件工程化管理的理念和方法,严格按照我们单位提出的核电工程软件研制方法进行研制、设计和开发,加强软件研发的规范化管理,同时也更好地指导了培训大纲和基础理论教材的开发工作,从而保证了软件研发乃至整个项目的进度和质量,使得我们开发的产品可维护性好,特别是在出厂验收后大大减少了在现场测试和维护的人员投入,最终也得到了用户的认可。
参考文献
[1] 国际原子能机构.核电厂人员培训及其评价(技术报告丛书第380号2005版)[S].
[2] 中国标准出版社.软件工程术语(GB/T11457-2006版)[S].
关键词:实训体系;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环境下的音视频多媒体处理、游戏技术开发、底层核心架构技术等,并进行项目开发实战。了解不同设计模式与运用、软件性能调优、软件过程管理等。
关键词:软件开发;实训;外包;测试
中图分类号: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.
关键词:敏捷转型;反模式;软件开发
1敏捷开发方法的出现
软件工程是20世纪70年代提出来的概念。传统的软件开发方法有瀑布模型、螺旋模型、喷泉模型、RUP4类,它们注重文档的完整、程序的易读性、结构的完整性,属于重型软件开发方法。在过去的一段时间,传统软件工程的方法很好地适应了软件开发的需求,其不仅关注软件构造方式的完美型,同时也注重总体的可预测性,以文档为驱动,按照需求分析、概要设计、详细设计、编码、测试、软件交付的流程来进行开发。在软件产业不是很发达、软件开发人员稀少的过去,这样严格的开发流程无疑是很适用的[1]。随着市场环境的变化,传统软件开发方法面临着严重的挑战。一方面是用户需求的多样性、个性化和快速变化,另一方面则是来自激烈的市场竞争对软件的质量和价值提出了更高的要求[2-3]。这就要求软件开发需要以更灵活的手段来应对不断变化的需求,用更短的时间和更低廉的代价将产品推向市场满足用户需要,由此人们开始对软件开发过程的本质重新进行思考和探索,在20世纪90年代,一系列轻量级开发方法相继被很多软件大师提出。2001年2月在美国犹他州的雪鸟滑雪场召开了软件开发大会,本次会议了“敏捷宣言”,包括4个核心价值观和12条基本原则,这标志着敏捷开发的诞生。相对于传统软件工程,敏捷开发主要有3个重要特点:(1)敏捷开发是“适应性”而非“预设性”的,传统软件工程试图对一个软件开发项目在很长的时间跨度内做出详细的计划,然后依据计划进行开发,这类方法在计划制定完成后拒绝变化,而敏捷开发欢迎变化,甚至允许改变自身过程来适应变化;(2)敏捷开发是“面向人”的而非“面向过程”的,它们试图使软件开发工作能够利用人的特点,充分发挥人的创造力和主动性;(3)敏捷开发是“产品驱动”而非“文档驱动”,开发过程只需要较少的过程文档,在软件的迭代开发过程中,一直保持软件产品的可用状态,以产品的增量来衡量进度的实际状态。敏捷开发的诸多优点吸引了越来越多的软件企业研究敏捷开发,积极实施敏捷转型。
2敏捷转型的反模式
尽管敏捷开发方法已经提出多年,但实施过程中还是出现大量的疑问和难点,在传统型软件企业里面还大量存在敏捷转型的失败案例。这些失败案例可以总结为6条失败教训,即敏捷转型的反模式。
2.1缺少管理层支持
敏捷宣言告诉我们,“围绕被激励起来的个人来构建项目,给他们提供所需要的环境和支持,并且信任他们能够完成工作。”在转型过程中,同样要求管理层需要关注团队成员的状态,为转型工作提供足够的资源保障。
2.2转型目的缺失或不明确
管理层必须明确希望从敏捷得到什么,如果对要解决的问题都不清楚,那么努力的效果就会大打折扣或无功而返。“别的公司或别的项目那样做”并不足以成为自己采用的理由。所以敏捷转型必须紧盯自己的问题,弄清楚为什么希望做出改变,进而再启动敏捷转型。
2.3组织结构与角色和敏捷不相容
敏捷宣言提到“最好的架构、需求和设计出自于自组织的团队”。在传统软件企业中需求分析、编码开发和测试常常分属不同的行政部门,这样的组织架构容易阻碍自组织团队建立,让敏捷团队的成员感觉仅仅能够做局部优化。
2.4指导不足
敏捷转型过程中,需要向团队成员讲述敏捷的思想和方法,过少的培训甚至没有培训,将让团队感到迷茫。在实践过程中,还会存在很多疑问或误区,还需要有经验的敏捷教练现场一对一指导。
2.5将敏捷等价为Scrum
敏捷的范畴比Scrum要大得多。Scrum本身并不涉及工程卓越、业务目标、大型团队扩展或者技术发展等。在转型过程中,需要从改善工程实践入手。否则,团队初期的Scrum的活动显得很热闹,但因为代码问题迟迟无法解决,质量和效率没有得到根本的改善,过程依然痛苦。
2.6对工程实践缺乏足够认识
工程实践对于解决代码问题具有直接的帮助,但每一种工程实践都有其门槛,需要付出学习成本才能掌握。不加选择的实施,将会带给团队难以承受的压力,而导致成员的抵制。这些问题都会导致敏捷转型的失败。而失败又会带来连锁反应,一方面让转型的软件开发团队大大降低对敏捷的热情和信心;另一方面,也会给其他周边的团队带来负面影响,使其充满疑虑、裹足不前。
3敏捷转型策略
针对敏捷转型的反模式,就可以有针对性地制定转型策略。
3.1宽松环境
敏捷转型是在项目交付过程中实施的,团队成员需要付出额外的工作和努力。改进活动需要时间、资金、办公环境的支持,甚至改进过程中会遇到挫折和失败。团队的管理层对此有清晰的认识,保持关注、积极支持、容忍失败,建立一种宽松的转型氛围。
3.2转型小组
敏捷教练通常对于敏捷价值观有深刻的理解,对敏捷管理实践或技术实践有非常好的掌握,并且具备一定的沟通和引导技能。这种角色对于传统团队的转型是非常关键的,起到引导实践、转变思想的作用。在传统团队内部通常难以独立培养敏捷教练,需要从外部引入,帮助团队转型。以教练为核心加上团队内部骨干建立转型小组,可以帮助转型工作顺利开展。
3.3痛点驱动
传统团队在研发过程中通常受制于自身的能力和外部的压力,遇到各种问题。常见的问题包括:(1)维护代码规模大,遗留故障多,团队陷于质量的焦油坑;(2)用户需求多、变化快,驱使团队过于追求进度,却无法充分理解用户需求;(3)分工壁垒严重,开发人员和测试人员之间对抗造成大量浪费活动;(4)团队成员技能提升缓慢,加班过多,士气低落。转型小组一起分析团队现有问题,再与团队成员开诚布公地探讨,通常会得到强烈的共鸣。不以引入新概念、新模式为目的,而以痛点驱动的态度面对问题,敏捷开发的起步就容易得到支持。
3.4实践选择
经过多年的业界探讨和尝试,敏捷方法论层面Scrum,XP和精益看板得到了广泛认同。但即使这样,从这几个方法论里面挑选合适的敏捷实践仍然不是件容易的事情,先做什么后做什么同样也是难以抉择的事情。盲目的实施实践只会加重团队的负担,而难以获得期望的效果,并将开发团队陷于交付和改进的双重压力中。而转型的初衷是在短期内付出可以接受的学习成本,提升过程能力从而获得长期的交付能力提升,因此,短期内的改进必须要获得可见的成果。通过多个项目的探索和实践,总结出敏捷转型初期的3个关键实践:Scrum、用户故事、持续集成。从管理、价值、交付3个关键方面可以帮助团队在短期内以较小的成本奠定敏捷开发的模式的基础,并可以在此基础上持续自我提升。Scrum是一种轻量化的敏捷软件开发管理框架,每隔1~4周,每个人都能看到能实际工作的软件,并且据此决定是这个版本还是继续开发以加强其功能,这样将原先的长周期的开发过程切割成若干个小段,用户反馈速度大大提升。有了轻量化的管理框架,团队的基本的工作模式、协作方式就会发生明显变化。用户故事(UserStory,US)是从用户的角度来描述用户渴望得到的功能,能把一个功能像讲故事一样叙述出来,不仅描述了产品需求、业务价值,同时还包含了一系列验收标准。一个好的用户故事包括3个要素:(1)角色,谁要使用这个功能;(2)活动,需要完成什么样的功能;(3)商业价值,为什么需要这个功能,这个功能带来什么样的价值。通过使用用户故事,可以增进开发人员与业务人员的沟通,帮助开发人员充分理解需求含义,并确保每个迭代都能关注用户期望的高优先级需求。没有用户故事就难以有真正意义上的迭代,也无法做到敏捷开发所倡导的快速反馈、快速学习和快速价值交付。持续集成是极限编程里面的重要实践。采用完全的自动化构建过程,使得一个开发团队在一天中多次构建并测试软件。持续集成鼓励软件开发项目团队在一天内多次提交代码,同时保证每次签入操作都不会损害已经通过的构建。这样做的目的就是为了快速反馈,使得缺陷及早被发现,并能以可视化手段快速反馈。有了持续集成作为质量安全网,团队的缺陷可以快速反馈和解决,作为工作产品的软件版本就可以一直保持在可工作状态。
3.5敏捷培训
要让团队正确实施敏捷实践,转型小组需要实施多层次多类型的培训。给团队的敏捷培训可以分为3个类型:(1)敏捷价值观的导入培训,向所有团队成员解释敏捷从哪里来的,它是什么、不是什么,与传统软件开发的异同点及其背后的原理,这样可以让团队成员能够在理论层面理解敏捷;(2)敏捷实践方法的培训,有针对性地向各角色介绍敏捷实践方法的要领;(3)本地化敏捷管理要求的培训,即为了使敏捷方法在团队落地而制定的各种管理要求,需要宣贯给团队成员,例如Scrum的活动计划和执行要求、用户故事书写规范、持续集成纪律等。通过一系列培训及时准确地传递敏捷的思路与各种要求,促进团队建立共识,提升实践能力。
3.6迭代改进
敏捷转型不是一蹴而就的,转型小组的改进工作需要按照敏捷开发的模式迭代前行。每个阶段制定切实可行的目标、范围和计划,定期组织回顾总结。通过透明化的成果展示获得管理层支持,及时发现风险改进工作安排,保证转型工作始终在平稳和可控的轨道上。
4结语
敏捷开发是一系列轻量级方法论的集合,具有共同的价值观。敏捷转型行为是由策划的敏捷方法引入到传统开发团队中,合理应用可以显著提升团队交付的效率、质量及个人能力。敏捷多种方法论及其实践都有其特点和学习成本,这就给敏捷转型带来了诸多风险和难点。本文在大量实践的基础上,针对转型中的反模式,提出了系统化的敏捷转型策略以帮助传统团队成功转型。需要注意的是,短期的敏捷转型任务完后,转型小组中应该能培养出内部教练,以便有能力引入更多的方法实践,帮助团队向更卓越的目标前行,而团队需要保持敏捷的意识和习惯,形成持续改进的良性循环。
参考文献
[1]科恩.用户故事与敏捷方法[M].李国彪,滕振宇,译.北京:清华大学出版社,2010.
[2]保罗•杜瓦尔,史蒂夫•迈耶斯,安德鲁•格洛弗.持续集成:软件质量改进和风险降低之道[M].王海鹏,译.北京:机械工业出版社,2008.
图1英特尔软件网络社区
为表彰英特尔® 软件网络社区中最活跃的成员对我们一如既往的支持,我们推出了英特尔® 黑带软件开发计划。通过授予“英特尔® 黑带软件开发人员”荣誉称号,表彰那些具有出色的英特尔® 技术专业知识,并对社区建设有突出贡献的成员。他们乐于与他人分享知识和专业技能,在论坛提供帮助和支持,发帖并积极参加社区活动,极具领导地位。
为确保“英特尔®黑带软件开发人员”评选的严谨与可靠,英特尔® 软件网络成立了专门的评选委员会,成员包括我们的软件开发工具专家、资深应用工程师及社区经理。委员会定期召开例会,提名新的成员,审核、验证他们在过去一年中对英特尔® 软件网络社区的贡献。评选标准包括成员向社区贡献内容的质量和数量(即专业技术水平)、在社区内的领导地位及为社区带来的支持成员三个方面,最后评选出的英特尔®黑带软件开发人员会得到相关奖励。
在最近一次的评选中,杨剑锋博士、周伟明先生、李铎锋先生成为中国首批荣获“英特尔®黑带软件开发人员”称号的社区成员,如图2所示。他们拥有精湛的专业技术知识,为社区发展作出了杰出贡献。
图2三位“英特尔® 黑带软件
开发人员”
在首批荣获“英特尔®黑带软件开发人员”称号的成员中,杨剑锋老师来自武汉大学。杨老师积极参与英特尔的高校合作计划,从师资培训、课程开发与教学,到网上的英特尔学术社区建设,他都投入了大量精力,开展了细致的工作,是目前英特尔学术社区乃至英特尔®软件网络上积分最高、贡献最多的成员。
杨剑锋老师
2007年,多核相关课程在国内高校尚处于起步阶段,杨剑锋老师在武汉大学主持了“多核架构及编程技术”课程的开发。课程组老师经过努力,将业界的最新技术与电子通信遥感等学科相结合,引入课程教学,为培养适应时展的实用技术人才作出了巨大贡献!同年,该课程荣获英特尔―教育部精品课程。基于“合作、发展和创新”的主题,英特尔与武汉大学建立了多核技术联合实验室,将其作为推广多核课程内容开发与教学的种子院校之一,相继于2008和2009年在武大举办了两次多核师资培训,协助华中、华西、西北等高校教师进行多核课程建设,受到各位专家的好评,也为多核技术的推广贡献了力量。杨老师在师资培训结束后总结了相关经验,在英特尔学术社区上发表了博客,与大家分享。
2008年秋,在包括杨剑锋老师在内的众多高校教师支持下,英特尔®学术社区中文版正式,为“英特尔多核大学合作计划”提供了网上支持,给老师们提供了与英特尔专家和全球高校教师交流学习的平台。2008年底,杨老师受邀担任了英特尔学术社区网络研讨会的嘉宾,与全球90
余位教师分享了武汉大学等国内高校开展多核技术教学的情况,交流了成功经验和需要解决的问题。这是中国高校教师第一次在英特尔学术社区中与全球教师互动交流,让全世界其他地区的老师们了解了中国高校在新技术领域内开展的工作。自2008年以来,杨老师受邀参与包括英特尔、微软、IBM、Nvidia、Sun、AMD、Adobe等公司技术专家及加州大学伯克利分校、乔治亚理工、北爱荷华大学等教授组成的全球并行教育工作小组,参与并行教育的讨论,加强了中国并行教育的国际流。
2009年6月,杨老师在英特尔®学术社区上了由他主持开发的“多核架构及编程技术”教育部―英特尔精品课程,包括所有的教学幻灯片、实验代码、指导用书及课程建设参考资料,与全球教师共享;还特别了课程组倾力开发的部分题库及动手实验和教学录像。这些教学资源为学生学习多核知识提供了巨大支持,也为兄弟院校开展教学提供了极具价值的参考,实现了英特尔®学术社区“学习、进步、分享、创新”的理念。
2009年底,作为英特尔®软件网络中积分最高、贡献最多的成员,杨剑锋老师荣获“英特尔®黑带软件开发人员”称号。
为帮助更多英特尔® 软件网络成员尽快成为黑带软件开发人员,英特尔® 软件学院为软件开发人员提供了丰富的技术培训课程,帮助他们掌握和应用英特尔的最新技术及经验,提升产品开发技能。学院依托英特尔®软件和
服务事业部的强大师资力量,沿袭英特尔用户需求至上的传统;与国内多家知名公司、大学建立起长期的合作关系,已成为面向软件开发及管理的优秀一站式培训服务基地。
在未来的日子里,英特尔将一如既往地致力于为中国的软件开发提供最优质的培训服务,推动我国IT产业的持续发展,也期待更多的软件开发人员获得“英特尔® 黑带软件开发人员”称号!
杨剑锋,本科、硕士、博士均就读于武汉大学电子信息学院,现任武汉大学电子信息学院副教授,主要从事多核技术、嵌入式系统及网络通信等方向的科研与教学工作,同时承担多核和嵌入式相关课程的实验教学,2008年担任全国大学生电子设计竞赛嵌入式专题邀请赛专家组成员、评委。
关键词:项目管理;软件;开发应用;问题;对策
现在,信息技术发展速度越来越快,在这种背景下,企业需要应对信息化变化的挑战就必须高度重视软件的开发在具体项目中的应用。但目前一些企业在软件的开发与应用中存在着许多不容忽视的问题,需要我们认真研究并努力解决。
一、项目软件管理的基本内涵
1、什么是项目管理
项目管理是在一定的约束条件下,以高效率地实现项目业主的目标为目的,以项目经理个人负责制为基础和以项目为独立实体进行经济核算,并按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。
2、为什么要有项目管理
没有项目管理,项目也有可能成功。但没有管理的项目,很难保证项目的利润空间,对公司来说,亏损的风险就大。所以,我们要有项目管理,以保证公司在总体上是盈利的,注意不是每一个项目都要盈利。
二、项目软件管理的发展现状
现在项目管理作为一种现代化管理方式在国际上已获得了广泛的应用,从最初的国防、航天、建设工程领域,迅速发展到电子、通信、计算机、软件开发、金融等行业以及政府机关的项目管理工作。随着计算机、网络系统的迅速发展,项目管理技术的不断进步,项目管理软件产品层出不穷,其功能、特点、应用对象也各不相同。从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
软件开发是一项复杂的系统工程,牵涉到各方面的因素,实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。目前的软件开发正逐步趋向于复杂化、多元化,大多数开发团队中都会出现同时开发多个版本、开发维护工作并存、多地点同时开发等情况,给软件开发管理带来了前所未有的困难。如果管理不善,必将造成版本混乱,各个开发人员的工作相互交叉、干扰,整个开发团队的工作在一种无秩序的不良状况下运行,严重影响软件产品开发的进度和质量。
三、项目软件管理常见问题及解决策略
1、缺乏项目管理系统培训
项目经理在项目管理方面的培训较少或不够系统。项目经理或管理人员不了解项目管理的知识体系和一些常用工具和方法,所以在实际工作中没有项目管理知识的指导,完全依靠个人现有的知识技能,管理工作的随意性、盲目性比较大。在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。
解决策略:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。应实行项目经理知识技能资格考核制度,让项目经理自觉补充学习项目管理的知识和一些常用工具和方法。
2、项目计划意识问题
项目经理对总体计划、阶段计划的作用认识不足。项目经理认为计划不如变化快,项目中也有很多不确定的因素,做计划是走过场,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。没有计划或者是随意的不负责任的计划的项目是一种无法控制的项目。
解决策略:在高技术行业,日新月异是主要特点,因此计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关各种知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。
3、管理意识问题
部分项目经理没有意识到自己项目经理的角色,没能从总体上去把握管理整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。
解决策略:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。
4、风险管理意识问题
项目经理没有充分分析可能的风险,对付风险的策略考虑比较简单。项目经理在做项目规划时常常没有做专门的风险管理计划文档,而是合并在项目计划书中。有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。
解决策略:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。
5、不重视项目经验的总结
项目经理在项目结束时有些是因为自身对写文档工作的兴趣或意识,或者是因为紧接着要参加下一个项目,总体对项目总结的重视程度不够。有些是项目总结报告一再拖延,有些是交上来的报告质量较低,敷衍了事。