【摘要】
统一支付平台建设推广应用项目是某某市卫生健康委员会于 2022 年发起的一项医疗卫生行业便民惠民信息化项目。该项目的目的是实现该市市区内患者在辖区的各公立医疗机构就诊时,可以使用微信和支付宝在线支付挂号兴、门诊费和住院预交金等功能。我作为系统架构师参与此项目的设计与开发。本文围绕常见软件系统开发方法进行了一一介绍。文章首先分别介绍了面向对象开发方法、结构化开发方法、面向构件开发方法、原型法、统一过程(RUP/UP)和敏捷方法六种软件开发方法。然后详细说明了使用面向对象技术和统一过程 UP 开发统一支付平台时,在初始阶段、细化阶段、构建阶段和交付阶段所做的具体工作以及各阶段统一建模语言(UML)的使用情况。项目经过一年的设计开发与集成,顺利通过验收并稳定运行,各医疗卫生机构对此系统给子了高度评价。
【正文】
2022 年,某某市卫生健康委员会启动了统一支付平台建设推广应用项目。该项目的目的是实现该市市区内患者在辖区的各公立医疗机构就诊时,可以使用微信和支付宝在线支付挂号费、门诊费和住院预交金等功能。我作为系统架构师参与此项目的设计与开发。软件开发方法是指软件开发过程中所遵循的办法和步骤,下面我将围绕软件系统开发方法与建模这个主题展开讨论,首先介绍常用的软件 开发方法,然后详细说明统一支付平台项目建设推广应用项目中用到的开发方法以及实施效果。
常用的软件开发方法有结构化开发方法、面向对象开发方法、原型法、面向构件开发方法、统一过程(RUP/UP) 和敏捷方法等。
(1)结构化开发方法。 这种方法以过程为中心,具有明显的阶段性,一般分为软件计划、需求分析、软件设计、程序编码、软件测试、运行维护六个阶段。各个阶段均要求输出较为齐全的文档。结构化开发方法基本思想可以概括为自顶向下、逐步求精、模块化技术。结构化建模比较常用的工具是数据流图、模块图、系统结构图等。一般来说,流程成熟的系统可以采用该方法。该方法往往采用瀑布模型进行开发。
(2)面向对象开发方法。 这种方法把数据和过程集成到对象结构中,所创建的模型称为对象模型,这种建模方法认为计算机世界只有“对象”。面向对象建模最重要的工具是统一建模语言(UML),这种语言是一种图形化语言,具有定义良好、易于表达、功能强大、适用普遍的优点。
(3)原型法。 原型法的思想是根据用户需求并利用系统开发工具快速地建立一个系统模型并展示给用户,然后在此基础上与用户交流,最终实现用户需求的信息系统快速方法。原型法一般只作为需求获取工具或者用于迭代开发的初版增量。
(4)面向构件开发方法。 基于构件的软件开发方法通过有计划地集成现有的软件部分来进行
软件开发,它可以有效地降低软件的复杂性,缩短发布时间。采用构件化开发方法后,所有的软件
解决方案将以使用预建的构件和模板,像搭积木似的建造,这种积木就是构件。构件是一个功能相
对独立的具有可重用价值的软件单元。
(5)统一过程(RUP/UP)。 统一过程是一种基于构件的通用过程框架,应用非常广泛,为软件系统建模时,统一过程使用统一建模语言(UML)。统一过程有三个显著的特点,即用例驱动、以架构为中心、迭代和增量。统一过程将项目管理、业务建模、分析与设计统一起来,是软件行业最重型的开发方法。统一过程可以分为四个阶段,四个阶段为一个开发周期和一个选代过程,每经过四个阶段就产生一代软件。
1 ) 初始阶段:为系统建立业务模型并确定项目边界,识别外部实体和与外部实体的交互。
2 )细化阶段:分析问题领域,建立完善架构。
3 )构建阶段:开发所有剩余的构件和应用程序功能,并把这些构件集成为产品。
4 )移交阶段。每个阶段都安排一次技术评审、确定阶段目标是香已经满足,如果评审结果令人满意,就可以进入下一阶段。
(6)敏捷方法。 敏捷方法强调开发团队与用户紧密协作、面对面沟通,能够频繁交付新的软件版本,成为紧谈而自我组织型团队,是一种以人为核心、迭代、循序渐进的开发方法。敏捷方法比 RUP 的周期更短。常见的敏捷方法有:以测试先行为特点的极限编程(XP)、以迭代为特点的Scrum 法、以虚拟团队和开放源代码为特点的开放式编程等。
在统一支付平台建设推广应用项目,我主要采用了统一过程和面向对象方法,使用统一建模语言(UML)描述模型。
(1)初始阶段。
首先确定此项目涉及的医疗机构,了解这些医疗机构的门诊、住院缴费流程以及流程涉及的信息系统、自助设备和人员。然后从患者缴费需求和上级部门要求出发,结合微信、支付宝当前支持的在线缴费模式,确定平台应实现的功能有:患者通过扫描自助机屏幕显示的付款二维码来完成支付:缴费窗口工作人员使用扫码设备扫描患者手机上的缴费码来完成支付,患者通过健康××义手机微信公众号在线缴费;患者通过健康XXX手机APP 来在线缴费;财务人员使用 Web 浏览器进行商户管理、用户管理、订单管理、对账管理和交易监管。
最后通过 UML用例图进行功能建模,用带泳道的 UML 活动图和时序图对用例场景建模,涉及的参与方有:微信或支付宝客户端、辖区健康 APP、自助机、缴费窗口工作人员、扫码设备、医院信息系统、统一支付平台、微信或支付宝支付系统等。其间,我通过非功能需求调查问卷、专家和用户座谈会等方式,了解平台需要实现的非功能需求,比如性能、可靠性、可用性、安全性、可修改性、易用性等,并将相关信息记录成文档。涉及
的业务规则也进行记录。
(2)细化阶段。
项目组分析上述模型后,结合参与方的职责分配,确定平台需要定义以下几种实体类:商户、预付订单、支付订单、支付二维码、支付页面、支付签名、通知单、对账单、收入统计报表、登录账户、角色等。然后为每一个实体类指派一个控制类和一个边界类,并将这些类进行分组和打包,完成构件的标识工作。构件标识工作完成后,组织一个由不同代表组成的小组,对需求和相关构件进行审查。
经过多方讨论,我们选择使用轻量级 J2EE 多层架构和前后端分离的架构风格。该架构大致分为视图层、web 服务层、服务层、数据访问对象层和数据特久层五个层次。架构选择完成后,我们将已经标识的构件映射到体系结构不同的层次。我们使用 Vue 网页用户界面渐进式构建框架和Flement 页面组件库实现视图层中的构件:使用 Spring Boot 框架实现 web 服务层、服务层、数据访问对象层中的构件:使用 MyBatis 实体关系映射框架实现持久层:数据库服务则采用 Oracle 数据库;采用 Ajax 和 REST 实现视图层和 Web服务层之间的交互。同时,按照非功能需求和质量场景的优先级,选择基于 REST 的分布式事务架构来提高平台可靠性和可修改性,选择服务 器集群架构来提高性能、可用性和安全性:选择主备 VPN 专线架构提高网络可靠性;最后使用 UML 完成平台的部署架构建模。架构设计完成后,我们组织了一次架构评审会,使用 ATAM 架构权衡分析法对架构分进行评审。
(3) 构建阶段。
在这个阶段平台完成需要的构件开发,然后将构件集成为产品,并进行详细测试。
(4)交付阶段。
在这个阶段平台完成阝测试并进行部署,同时完成相关人员的培训工作。统一支付平台建设推广应用项目经过一年的设计开发和集成,顺利通过验收并稳定运行,辖区各医疗卫生单位对此系统非常满意,给子高度的评价。未来我们将在后续的系统演变过程中进一步深入优化,以期构建更加完善的统一支付平台。