论UP(统一过程方法)的应用
摘要
去年,我参与了《广东电网公司计量营销一体化系统》的开发工作,我负责项目的分析和设计工作。《计量营销一体化系统》是在原电网公司《集中抄表系统》的基础上增加电网监测、营销计费、负荷控制等扩展功能。《计量营销一体化系统》在实现上划分为三个层次:主站层、终端层、表计层。主站和终端采用以太网或GPRS进行通信,终端和表计采用现场总线进行通信。
项目开发过程中,我协助项目经理进行分析,根据公司之前开发的项目和本项目的特点,我们决定采用RUP(统一过程方法)进行项目开发。开发过程中,主要采用了分组进行需求调研和分步完成系统设计,迭代和增量式版本发布。由于在开发前对用户的阶段需求了解比较清楚,在开发过程中有条不紊地进行,并且持续得到用户的反馈。最终项目进行非常顺利,部署完成后也得到了用户的好评。
正文
去年,我参与了《广东电网公司计量营销一体化系统》的开发工作,我负责项目的分析和设计工作。《计量营销一体化系统》是《集中抄表系统》的升级版。《集中抄表系统》也是我司研发成功的项目,功能单一,主要实现了电力用户用电信息数据采集和处理功能。《计量营销一体化系统》除了继续支持电力用户用电信息采集及处理功能外,还增加了营销业务处理功能,专变和公变监测功能,电网运行质量监测功能,大客户负荷管理功能等等,基本上集电力行业低压用电系统功能于一身。《计量营销一体化系统》在实现上划分为三个层次:主站层、终端层、表计层。主站和终端采用以太网或GPRS进行通信,终端和表计采用现场总线进行通信。
项目初启阶段,我和项目经理及所有项目组成员经过讨论,决定采用RUP项目过程进行开发。原因是《计量营销一体化系统》是《集中抄表系统》升级版,在开发《集中抄表系统》中完成的数据采集组件和数据处理组件,有些可以直接拿过来用,有些经过简单调整可以继续使用。同时《集中抄表系统》的架构还对当前开发项目有借鉴作用。另外,我们经过初步了解,客户需要我们分阶段提供系统版本给他们演示,这刚好符合RUP过程的迭代和增量的开发特点。
RUP是Rational公司开发的一套软件过程框架。RUP本身支持可裁减性,可以应付各种领域软件和不同的项目规模。RUP是个二维的软件开发模型,在竖轴上是各个工作流,如业务建模、需求、分析和设计、实现等。在横轴上是时间维。RUP把整个软件开发生命周期分为多个循环,每个循环由四个阶段组成,每个阶段完成确定的任务,结束前有一个里程碑评估本阶段的工作。四个阶段简介如下:
初始阶段:定义系统的业务模型,确定系统的范围。完成后建立目标里程碑。
细化阶段:完成系统的体系结构设计,完成系统开发计划。建立结构里程碑。
构建阶段:构造产品,并继续演进需求、体系结构和计划,直到产品完成。
移交阶段:进行系统部署,系统测试,最终移交给用户。最后建立发布里程碑。
每个阶段都由一个或多个迭代组成。每个迭代都要针对不同的业务用例或系统用例进行细化和实现。
在《计量营销一体化系统》的开发过程中,我们按照RUP的四个阶段进行演化。初始阶段,我们将项目组人员分成三组,一组研究《集中抄表系统》的文档和系统实现,一组对广东电网公司《计量营销一体化系统》的功能规范进行分析,一组赴电网公司进行需求调研,如对主站界面、操作流程等等征求用户意见。一个月后,我们三个组在公司会议室开会讨论需求调研,统一意见后完成了《需求规格说明书》初稿。之后项目经理和我及原先赴电网公司调研的同事就《需求规格说明书》和电网公司领导交换了意见,并完成了初步的评审,得到电网公司领导的认可。作为以后项目验收的依据。
在与电网公司领导进行交流的过程中,我们注意到项目必须分三个阶段完成,分别达到不同的目标。第一阶段是完成基本功能,这一阶段对主站界面不作具体要求,主要实现基本功能,以便提交给广东省电力科学院做功能性和规约一致性测试,为下一步入网做准备。第二阶段,广东电网公司为应付南方电网公司领导视察,《计量营销一体化系统》需要在现场进行试运行,以便广东电网公司领导进行演示。本阶段在第一阶段的基础上美化主站界面及优化操作。第三阶段,项目正式移交。客户的这个需求直接促成了我们采用RUP模型进行软件开发。
细化阶段中,我主导完成了系统架构设计,并协助项目经理完成了开发计划。在系统架构设计中,我充分参考原《集中抄表系统》的体系结构,并对原系统的构件进行分类,同时采用WIKI服务器对原构件进行管理,标明构件的功能,实现方法,以及在新系统中如何进行功能扩展。通过这些方法的实行,我对原系统有了一个很清楚的了解,对原有构件也一目了然,方便我在架构设计时充分考虑使用原有构件,减少开发工期,降低开发成本。
最后我们经过讨论认为主站软件采用分层架构,主要分为表示层、业务逻辑层和数据层。表示层主要完成与用户交互的组件,业务逻辑层主要完成数据采集组件,数据处理组件,电能质量监测组件,负荷控制组件,告警处理组件等等业务相关组件。由于在本系统中,终端有多种类型,每种类型的主要功能不同,有集中抄表终端,负荷管理终端和配变监测终端等,它们之间的基础功能大体一样,但都有自己的个性功能。为此终端软件也按层进行开发,分为数据资源层,基础业务层和扩展业务层。这样不同的终端在扩展业务层根据自己要实现的功能可以进行个性化扩展。
构造阶段,主站软件采用J2EE平台进行开发,主要完成数据采集组件,数据处理组件,电能质量监测组件,负荷控制组件,告警处理组件等等。终端软件基于LINUX操作系统,为了获得更好的可维护性,采用C++语言进行开发。
移交阶段,项目分三个阶段移交给客户,每个阶段都完成了用户需要的功能。第一阶段顺利完成了广东省电力科学研究院的测试。在第二阶段中,省电网公司的演示很成功,得到了领导的好评。最终在经过约十个月的开发,项目顺利移交给省电网公司使用,目前在广州供电局稳定运行至今。
《计量营销一体化系统》是我第一次采用RUP进行开发的项目,总体上来说,效果显著,达到了预期的目标。但在使用时由于项目组成员初次接触,会有一些不习惯。如迭代和增量开发方法,一开始我将每个阶段要完成的功能表全部分发给每个成员,到检查点时我发现有部分功能没有实现,原因是有的成员完成了不是本阶段需要完成的功能。后来我在会议上突出要按阶段要求的功能点进行开发,同时我将功能点再细分,按周或月进行量化,在每周的会议上进行检查。在实行RUP时,还需要和CMMI进行结合,因为我司经过了CMMI认证。因为RUP没有明显的文档格式要求,我们按CMMI的文档要求完成了相应的文档,以便支持CMMI的定期检查。
RUP的是一个比较好的开发模型,以体系结构为中心,基于构件组装的开发方式,这种方式能有效地提升软件的质量。迭代和增量则能让用户尽早地看到项目的成果,为项目成功打下良好的基础。