您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 极限编程在开发供电客户服务监控系统中的应用
极限编程在开发供电客户服务监控系统中的应用林鹏程,王默玉(华北电力大学计算机科学与技术系,北京102206)摘要:针对传统软件编程的缺点,详细介绍极限编程思想的核心内容和意义,并且阐述了该方法应用于开发供电客户服务监控系统。一、引言进行开发软件过程中,必须考虑到各方面的因素,软件需求可能会发生变化,这些变化会包括质量、整体、范围、进度、人力资源、成本、沟通、风险、环境等方面的因素。若采用传统的软件编程方法,需求的变化可能会引起后期进行软件设计的重大变化,轻则造成成本的指数上升,重则使整个软件在整个设计中面临失败。为了寻求迅速建立软件途径并适应不断变化的用户需求,克服许多公司的软件团队陷入不断增长的过程的泥潭,美国软件工程大师KentBeck等人,在“敏捷联盟”中提出了一种创新的软件工程设计方法-极限编程(ExtremeProgramming简称XP编程)。Xp编程是一种轻量级的、灵活的编程方式,自身规定了核心价值和方法,强调沟通和反馈,整个设计过程由一系列简单却互相依赖的实践组成,在理念、管理和项目计划方法等方面和传统的软件开发过程不同。二、极限编程2.1传统软件设计模型如图1所示,传统软件设计中规定了各项软件工程的活动包括:制定系统计划,进行详细需求分析和说明,实现编码,对系统进行测试。整个设计规定了自上而下,相互衔接,如同瀑布一样将各个不同阶段串联起来,并用文档提交来驱动下一个环节,常有许多规则和文档,要正确的实施它,在开发流程上有较高的要求。该模型最大的缺点是:缺乏适应需求变化的灵活性,更改程序的成本会随时间的推移而呈指数方式上升;而且对进度的估计经常容易失误,可能导致工期的延长,因而要付出高额代价来返工或者在维护中纠正错误。图12.2Xp编程的设计模型简单来说,极限编程是一个高迭代的过程,在控制论(ControlTheory)中,迭代过程可以不断向系统提出反馈,以确保得到预计的最终结果,而在Xp编程中,将需求分析的时间大大缩短,之后的开发中4个活动(需求、设计、编码、测试)同步进行,每一次迭代都是建立在上一次迭代的基础上进行,其开发模型如图2所示。图22.3Xp编程的核心思想要达到高迭代过程,开发组中必须具备以下四种不同的思想:沟通(Communication)、简单(Simplicity)、反馈(Feedback)和勇气(Courage)。Xp编程认为开发组不只是包括开发人员,还包括客户和管理人员,强调成员间要经常进行交流。尽量减少在关键性的领域决策出现严重失误;开发人员应当在进行当前阶段设计,力求以简化的方式完成已知的工作,待在以后阶段中,如有必要再做修改,避免将资源花费在复杂而又不符合客户真正需求的程序中;对系统当前的状态不断的进行反馈,需求分析设计编码测试需设编测求计码试反馈要以不同的时间进行,以便提供更多的机会来调整设计,保证把握正确的方向;对于以上的这些思想,一旦发现错误,要勇于对自己的代码进行修改,才能符合Xp编程所提倡的“拥抱变化”。2.4Xp编程的实践方法主要包括:(1)小版本:符合需求的前提下,经过了一个或几个迭代周期后,向客户提供一个版本,通过频繁发布小版本,从客户中得到更多的反馈。(2)规划策略:客户负责编写系统需求(Xp称为素材),程序员对每个素材所需要的开发时间做出估测,客户根据所估计的时间为基础,决定素材的优先级。通过以上活动开发人员可以迅速得到粗劣的计划,规划策略不是只进行一次,每次迭代完毕后,都要重新修正。(3)现场客户:为加强同客户之间的交流,建议在开发过程中有一个客户随时与开发人员一起,现场随时向开发人员提供其业务需求,素材的优先级及其其他相关信息。(4)系统比喻:为了让所有项目参与人员对系统有一致的理解,将系统设计制定一系列的比喻来表达系统的轮廓、工作和组织方式。(5)简单设计:开发人员使他们的设计尽量简单,满足计划在本次迭代中要完成地用户需求,而不用考虑未来地用户需求,因为在每次的迭代中,系统设计不断的优化,使之正在实现的用户需求保持在最优状态。(6)重构:在不改变代码所要完成的任务前提下,对其进行一系列的小改造,重构是持续进行的,而不是在项目结束时、迭代结束时才开始。通过重构,可以持续保持尽可能简单并且具有实用性的代码。(7)测试驱动开发:先编写测试用例,再编写所有代码。由于要测试的功能还不存在,所以会运行失败。为了让使失败的单元测试能够通过,开始编写代码。这样做会确保更改没有对程序造成任何破坏,且有利用重构,降低各个模块间的耦合度。(8)持续集成:程序员在独立开发后,要进行系统集成。程序员完成对模块的修改后拆入回去,所做的改动应该和在他前面拆入该模块的程序员做的改动进行合并。(9)结队编程:所有代码都需由结对的程序员使用同一台电脑共同完成。结对人员中的一位控制键盘并输入代码,另一位观察代码并寻找代码中的错误和可以改进的地方,两人频繁互换角色,强烈的进行交互。(10)代码共有:任何人在任何时候都有权对源代码做出修改,以增加新的功能、除错或进行重构。(11)编码标准:为了实现代码共有的目的,必须建立一个所有人都遵守的编码标准,增强程序的可读性和可维护性,方便整个小组的工作。(12)每周40小时工作制:极限编程不赞同长时间的工作,过长时间会引起错误率上升,不能保证高质量的工作。这12个实践活动在我们以往的编程实践中已经用上了,因此不是独创。在Xp编程中,这些活动是相互支持,才能达到极限编程所体现的原则。2.5Xp编程的活动过程如图3所示,在开发过程中,用户进行需求分析,同时设计出测试场景,需求分析结合原型结构。运用系统比喻,得到了计划版本,这些版本对所做的用户需求不做深入的设计和细节的开发,而只是提供用来可完成的估计时间,按照这个时间进行“设计、编码、测试、发布”4个过程进行,任何一个过程出了问题,立即回馈到计划版本中进行迭代。经过了开发人员编码实现并测试后,当前版本就可以发布,然后转入下一个版本,逐步形成最终的发行版本。与发行版本相关最重要的任务是使计划版本用户在开发人员的指导下,从需要实现的需求中选择最有价值并完成一定功能的最小素材集。迭代是指通过一定的迭代规划,将用户若干素材分成若干任务,重复进行“编码、测试”,添加到当前版本中去,最后发布。迭代规划必须确定每次需要完成的工作量,严格确定迭代时间,而且可以根据实际情况动态调整。计划版本迭代系统比喻发行计划最新版本验收测试用户素材测试场景原型结构需求新需求错误图3极限编程活动图三、极限编程在“供电客户服务监控系统”的应用在开发“供电客户服务监控系统”中,由于该系统的需求不能完全确定,系统的测试又要求比较高,所以采用了Xp编程的方法。系统的主要功能模块为工作简报、业务汇总、人员管理、常见问题四个模块,其模块功能分布如图4所示。工作简报模块,主要包括满意率简报、简报列表、简报管理三个子模块。通过满意率简报能够按条件查询客户对各地的满意程度,简报列表能够及时了解每天各地的工作情况,简报管理模块提供了对工作简报进行维护功能,以方便工作人员进行操作和管理。业务汇总模块,对各供电公司的服务业务进行统计汇总,服务业务包括:综合统计查询、业务量统计、话务量统计、故障明细统计、投诉明细统计、历史业务统计。该模块将各地市供电公司的各种业务按照“新受理”、“已处理”、“累计结存”进行汇总,统计。人员管理模块,对使用系统的人员进行同一管理,主要包括操作人员管理、权限管理、密码修改等功能。主要功能实现维护用户信息、为用户分配权限等功能。常见问题,针对系统使用常见的一些“故障”问题进行回答,并可以通过此模块了解系统的功能及使用方法。这些系统需求,具体细节不能在短期内确定。由于各地供电系统客户服务提供的情况不一,给出的查询条件限制无法立刻统一确定,简报列表提供具体图状显示结果,在开发初期没有考虑;故障和投诉表收集和处理,需要明细表结构,如何进行分类处理,定义帮组信息必须和用户进行频繁交流;在累计结存过程中,需要不断进行数据测试,保证数据结果的可用性。图4供电客户服务监控系统总体需求图鉴于上述情况,在本项目中,我们借鉴极限编程许多思想和方法,采用了如下工作方式:(1)开发小组由7人组成,7个人集体参与需求分析和设计,而并不是由项目负责人独立进行,同时在开发过程中随时听取用户意见,力求及时准确理解客户需求。(2)在具体实施中,开发小组分为两组:业务组和技术组。业务组负责明细模块中的函数接口,定义函数功能;技术组负责编写代码,主要负责编码的规范和为自己所的代码编写测试用例,在编码过程中,业务组和技术组进行结对编程。最后由一人负责帮组客户完成功能测试,最终所有测试由客户认可。(3)由于项目开发时间短,我们在开发中简化了设计文档,但对于测试文档和测试用例,提交到项目负责人中进行严格审核。(4)统一的编程风格,包括变量的定义、供电客服监控系统工作简报业务汇总常见问题人员管理满意率简报简报列表简报管理话务量统计故障统计投诉统计业务量统计信息管理权限管理帮组信息问答留言函数的接口、文件命名的规范、文件类型的定义等。(5)每天工作8小时,每天工作结束时,通过CVS工具提交当天所完成的代码和测试用例,并且通过该工具每个人都了解和熟悉其他成员的工作进度,且可以进行及时的调整进度。在版本规划阶段中,我们通过与客户交流,共同决定了6个发行版本,如表1所示,根据这个规划逐步编码,在编码过程中不断与用户交流,使用户逐步完善需求。表1版本规划表版本开发时间(单位:天)功能实现V1.010工作简报原型:显示简报列表,对该表进行管理业务汇总原型:处理话务量、投诉、故障状态信息,实现数据库导入导出操作V1.115完善数据导入功能。对工作简报进行满意率简报管理,能按条件对各地信息进行查询;对业务汇总模块实现业务量统计,并且可以进行业务查询。V1.210对于人员管理,用户、管理员信息管理,操作权限设定;在常见问题中,实现问答留言功能。V1.35编写基本帮组信息,完善输出界面,发行最终版本。四、结束语极限编程由于自身的特点,它适用于几人的小项目组,不适用非常大的项目团队,但是许多思想可以被其他开发方法借鉴;在国内也很难严格遵循它所有的12个实践方法,但可以根据实际情况来调整和使用极限编程。实践证明:极限编程能灵活应对需求变动大和测试要求高的开发案例,目前我国电力行业正走向信息化,许多开发团队大都是非电力行业专业人员或对电力行业知识理解不深的人员,应用极限编程提倡与用户直接交流,能够保证需求理解的正确;并且通过迭代编程的思想来发行多个版本,开发人员和用户能在较短的时间内获得理解正确的功能,大大加快了软件的开发时间;极限编程重视测试,能很好的提高了软件的质量。因此,恰当运用极限编程,能提高我国电力行业软件的质量和我国软件行业的竞争力。参考文献[1]KentBeck著解析极限编程-拥抱变化[M]北京:人民邮电出版社,2002[2]KentBeck著规划极限编程[M]北京:人民邮电出版社,2002[3]雷剑文,陈振冲等著超越传统的软件开发-极限编程的幻象与真实[M]北京:电子工业出版社,2005[4]蒲菊华,熊璋等XP方法及其应用研究[J],计算机工程,2003,29[5]黄敏用极限编程解决软件开发项目中的常见问题[J],电子科技,2004,3作者简介:林鹏程(1980-)男,在读硕士研究生,研究方向为数据库与管理信息系统电子邮件:linpch@sina.com.cn邮政编码:102206通讯地址:北京市德外朱辛庄华北电力大学(北京)389信箱联系电话:13811748263(手机),010-51963190(宿舍)王默玉,女,副教授,硕士生导师,研究方向为数据库与管理信息系统电子邮箱:my_wang@126.com
本文标题:极限编程在开发供电客户服务监控系统中的应用
链接地址:https://www.777doc.com/doc-1595955 .html