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