MIME-version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0076_01C29953.BE473C30"; type="text/html" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 This is a multi-part message in MIME format. ------=_NextPart_000_0076_01C29953.BE473C30 Content-Type: text/html; Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/Users/xxx/AppData/Local/Temp/~tmp{e00d1d36-7991-41d1-a2f3-b55be01f58c3}199634.TMP.html
【摘要】
2011年3月,我参加了某市供电公司《电力营销管理信息系统》的开发工作,并担任系统架构师一职,主要负责系统分析和架构设计。该系统包括业扩管理、计量管理、电量电费核算管理、收费与账户管理、线损管理等五个模块。系统采用了Struts+Spring+Hibernate的主流Web应用框架,降低了开发的难度和成本,降低了组件的耦合度,增强了软件的可维护、可扩展性。项目的成功很大程度的归功于项目开发采用了RUP模型,对整个的开发过程进行规范和改进。本文以该项目为例,结合作者的实践,讨论了UP(统一过程方法)在软件开发中的应用。从初始阶段建立业务模型并确定项目边界,细化阶段分析领域、选择构件,构建阶段把构件组合成产品,最后把软件移交给用户四个阶段说明了UP的具体应用。重点介绍了分析领域、选择构件。
【正文】
2011年3月,我参加了某市供电公司《电力营销管理信息系统》的开发工作,并担任系统架构师一职,主要负责系统分析和架构设计。该供电公司年供电量在10亿度以上,计量点915个,大客户209个。以前的业务流程是电话报装、手工派单、自主开发的VFP系统算费、财务系统收费开票等。随着供电量业务的扩展,原业务流程暴露出各环节分散,无法进行统一的管理,客户的满意度低。为了解决上述问题,该供电公司决定建设一套电力营销系统。以系统的建设促进用电管理水平的提高,以电力信息化推动电力企业现代化。杜绝重复投资,整体规划,实现用电管理信息的高速交互和决策,提升客户的满意度,降低管理成本。系统采用了Struts+Spring+Hibernate的主流Web应用框架,开发工具采用MyEclipse10.0,硬件配置:两台IBM X3650安装Oracle10g做数据库服务器,在两台服务器上搭建了高级复制功能,保证数据库中数据同步。两台IBM X3650以双机热备的方式做营销应用服务器,两台服务器上运行着集群软件,通过“心跳”来检测对方的状态,发现故障能自动切换。一台IBM X3650做算费服务器。RUP统一软件开发过程是一个面向对象且基于网络的软件开发方法论。可以应付种类广泛的软件系统,不同的应用领域,不同的组织类型,不同的性能水平和不同的项目规模。UP是基于构件的,与其他软件过程相比有三个显著的特点:用例驱动、基本架构为中心、迭代和增量。正是由于UP具备上述特点,使采用UP
模型的开发过程能提高团队成产力,简洁清晰的过程结构,为开发过程提供了较大的通用性。 根据RUP模型,我们把整个的开发过程分为:初始阶段、细化阶段、构建阶段和交付阶段。每个阶段结束的时候都要安排一次技术评审,如果评审结果令人满意就可进入下一阶段。
1. 初始阶段 初始阶段的任务是建立业务模型、确定系统边界。首先,我们采用用户访谈、用户调查和联合讨论会的方式捕获用户需求,详细了解用户对系统的预期目标,捕获在系统招标书中没有明确的性能指标。其次,我们专门召开了一次联合讨论会,会上参与的各方代表经过讨论,就需求的优先等级达成一致意见。最后,对需求进行分析,确定了项目的目标、特性和用例模型,完成了《需求规格说明书》的初稿,并通过了用户的评审。
2. 细化阶段 细化阶段的任务是分析问题领域、建立体系结构、选择构件。通过对问题领域的分析,我们把系统划分为5个主要模块:业扩管理、计量管理、电费电量核算管理、收费与账户管理和线损管理。确立了软件的整体架构,部件之间的交互接口,构件的设计与选择。 基于构件的开发可以减少开发中重复的工作,降低开发成本,缩短开发周期,提高软件的质量和灵活性。获取构件有多种途径,第一种是在现有构件库中直接提取符合要求的构件,或对已有构件做适当的修改。第二是采购第三方构件,现在市场上有很多成熟的产品,比如开发平台、数据库平台、各种通用构件等。第三是自己开发符合需要的构件,当构件库和第三方构件没有满足需求时,必须自己开发满足需要的构件。 该项目中上述的三种方法我们全部都用到了。在以前的项目开发中,我们提取了很多的可重用构件加入自己的构件库。比如:权限管理对于任何管理系统都很重要,我们提取符合RABC(基于角色的访问控制)模型的独立授权构件,将权限与角色相关联,通过成为适当角色的成员来获得该角色的权限,简化了授权的管理。该系统的流程要求根据业务需要可以配置,我们提取了工作流引擎,可以满足流程的调度、图形化的定义和管理。 市场上有很多成熟的构件,包括开源的和商业的,是不需要自己开发的。直接使用可以缩短开发周期,降低开发成本。我们采用的Struts+Spring+Hibernate框架就是典型的开源框架,可以让我们把主要的精力放在业务的实现上,而不用去关心数据如何从数据库中读出和写入,请求如何在各层之间传递等。报表是管理信息系统必不可少的功能,我们采用明宇公司的如意报表,满足报表在Web下的设计、浏览、打印等功能。 有一部分构件是本系统独有的,没有现成的产品,必须自己开发。该系统对电费的计算有很多灵活的要求,变压器容量的固定冲减、月度结算中变压器容量的退补、特殊单位执行特殊电价、子表电量追加自动冲减母表等。根据这些要求,我们不能把算法写死在程序中,而是自主开发了一个电费计算引擎,通过计算规则和电费计算相分离,实现了算法的方便配置修改,提高了电费计算的灵活性。 在细化阶段我们更新了需求规格说明书和软件体系文档,选择了适合的构件,并完成了用户对其的评审
3. 构建阶段 构建阶段的任务是把各种构件组装成产品。我们采用基于功能和面向对象的组装技术相结合,根据系统的需求,把各种渠道获取的构件组装成产品,并完成系统的集成测试和系统测试。每次迭代的成果都展示给用户,让用户详细了解进度,并提出反馈和改进意见,我们及时调整开发。该阶段结束时,向用户交付了系统的Beta版本。 4. 交付阶段 交付阶段的任务是把产品成功的分发给用户。由于用户要求是新的业务应用该系统,不存在新老系统的业务移交问题,所以交付阶段比较简单。首先,在用户提供的环境下部署Beta版本,进行系统的Beta测试。其次,对各种错误和缺陷做出修改,增加文档和培训资料,并对用户进行培训。最后,配合用户完成了验收测试。
【结束语】
该系统于2011年11月成功的通过了用户的验收,大大提高供电公司的用电管理水平,提高了客户的满意度,降低了管理的成本。项目的成功很大程度归功于采用了RUP的开发模型,对整个开发过程进行规范和改进。在迭代的开发过程、需求管理、可视化建模、验证软件质量控制变更等方面,为每个开发成员提供了各阶段必要的准则、模板和工具指导。 RUP虽然具备很多优点,但也存在一些不足,如:RUP仅仅是开发过程,没有覆盖软件的维护和技术支持着两个重要的过程。不支持组织内的多项目开发,导致组织内的大范围重用无法实现。在度量管理、重用管理、人员管理等方面存在不足。在实际的应用中可以根据需求对其改进,可用OPEN、OOSP等其他软件过程的相关内容对RUP进行补充和完善,使整个开发过程更加适合自己的项目。