论软件架构评估
摘要
我所在单位是国内某商业银行,2017年1月我行决定开发全新一代绩效考核平台系统,我担任本次系统开发的架构师,主要负责整个系统的架构设计工作。该系统既满足内控管理的绩效考核,又满足银行粉丝客户参与营销的综合性绩效平台,是银行应对互联网金融变革和笃行普惠金融的重要系统。本文结合我的实践,以绩效考核平台系统建设为例,论述软件系统架构评估。首先分析了软件架构评估所普遍关注的质量属性并阐述其具体含义,然后详细说明本次项目软件架构评估采用的 ATAM评估方法、实施过程,评估小组经过对系统中的风险点、敏感点、权衡点分析后生成质量效用树。通过ATAM 架构评估保证了绩效考核平台系统的顺利完成,目前系统已经稳定运行 1年多,得到了领导、员工、客户的一致好评。
正文
我所在的单位是长三角地区某城市商业银行,机构覆盖全国多个省、直辖市。目前银行业正面临互联网金融浪潮的冲击,银行需要积极转型、自我变革,不仅要服务好优质客户还要抓住普通大众客户,发展新零售拓展小微企业客户业务成为当下银行的战略要点,绩效考核将成为银行战略转型的有效指挥棒。正是在这一背景下我行提出建设全新一代绩效考核平台,既对传统的绩效考核做出调整,又结合互联网化的“粉丝及员工”理念,搭建多维度、多渠道、多群体的绩效考核平台。
银行绩效考核涵盖传统存贷款考核、产品营销考核、专项考核几大方面,对银行员工管辖的存贷款计价模型计算员工创造利润、产品营销结果、专项产品达标情况等可量化的指标来考核员工,对客户为银行推销的产品进行量化统计并给予奖励,银行总部通过不同的计价系数和组合策略引导全体员工向政策目标迈进,将绩效考核形成指挥棒。
本次绩效考核平台系统采用J2EE 技术开发的B/S架构系统,使用 SOA架构设计方法,数据库使用 IBMDB2 10.5, Redis内存数据库,服务器操作系统采用 Redhat 7.2 等。
软件质量特性是软件架构设计关注的一个重点,在软件架构评估中的质量属性包含性能、可用性、安全性、可修改性、可靠性、易用性、可测试性等,其中前4个质量属性是质量效应树的重要组成部分。具体含义:
(1)性能是指系统响应能力,即系统多久能才对某个事件做出响应,或在某段时间内能处理事件的个数;
(2)可用性是指系统能正常运行的时间比;
(3)安全性是指系统除了能对合法用户提供服务的同时还能阻止非授权用户使用的企图或拒绝服务能力;
(4)可修改性是指能快速地并以较高性价比对系统进行变更的能力;
(5)可靠性是指软件系统在应用或错误面前、在意外或错误使用情况下维持系统的功能特性的基本能力;
(6)易用性是衡量一个用户使用软件产品完成指定任务的难易程度;
常用的架构评估有基于问卷调的评估方式、基于度量的评估方式、基于场景的评估方式。基于问卷调成方式具有主观性不太适合本项目,基于度量的方式虽然评价比较客观,但需要评价者对系统架构有精确的了解,所以也不太适合本项目,而基于场景的方式要求评估者对系统中等了解,评价比较主观,故本项目采用了基于场景的评估方式。基于场景的评估方式又分为架构分析法SAAM、架构权衡分析法ATAM 和成本
效益分析法CBAM。本项目中根据不同质量属性使用了ATAM 作为系统架构评估的方法。在进行架构评估时,按照需要确定了评估参与者,评估小组有总行业务人员、支行行长代表、主办会计代表、客户经理和柜员代表、客户代表等组成;项目决策组成员包含总行行长、首席信息官、业务部主管、系统架构师、项目经理、员工代表等组成。架构涉众包含还包含项目开发人员、测试人员、运维人员等。架构评估经历了描述和介绍阶段、调查和分析阶段、测试阶段、报告阶段。下面我分别对这四个阶段进行介绍:
(一)描述和介绍阶段,由于参与评估的人员有部分是对 ATAM评估不了解,我首先介绍了 ATAM 架构评估的方法和目的。项目决策组行长、业务主管等人介绍了绩效考核平台的业务动机。最后作为系统架构的我描述了整个系统采用SOA架构实现,将系统划分为若干独立子系统,各个子系统包含的功能及讲解,如何与银行内的其他系统协作, 这么进行安全规划。
(二)在调查分析阶段,结合场景不同角色的需求方都基于各自立场提出了相关需求,需求及质量场景如下:
A)正常网络负载情况下,系统必须在 2S内响应用户操作请求。
B)服务端与客户端、微信端的交互,使用ssl证书,实现 https 安全加密访问。
C)系统能够抵御 99.99%的黑客攻击。
D)微信端客户绑定认证使用客户在银行预留的身份证,姓名,手机号等信息。
E)支行用户和客户代表提出 WEB页面要简介美观,各功能简单易用,尽可能让用户少输入数据项。
F)网络失效后,系统需要在 1 分钟内发现错误并启用备用网络。
G)将请求重定向到灾备机房服务器。H)主机房断电后,必须在 3 秒内过程的设计。
对查询请求的处理时间的要求将影响到系统的集群方式和处理
I)微信端的异常和员工的操作失误,不影响系统功能的正常使用。J) 科技信息部提出的更改系统加密
的级别将对安全性和性能产生影响。
K) 更改系统的WEB 页面必须在2人天内完成,修改绩效考核计算规则必须在1周内完成。
L)目前对系统使用“统一的绩效认领中心”业务逻辑描述尚未达成共识,这可能导致部分业务功能模块
的重复和绩效计算不准确,影响系统的可修改性。经过分析总结我们获得了系统质量效用树,属于性能的有 A,属于可用性的有 F 和G,属于安全性的有 B和C,属于可修改性的有 K, 属于可靠性的有1,属于易用性的有 E。在这些场景分析中评估人员分析了系统的架构风险、敏感点、权衡点。架构风险是指系统设计过程中潜在的、存在问题的架构决策所带来的隐患,其中 L描述的是架构风险;敏感点是指为了实现某个特定质量属性,一个或多个构建具有的特性,其中H 属于敏感点;权衡点是指影响多个质量属性的特性,且每个质量属性都属于敏感点, 其中J属于权衡点。
(三)在测试阶段,结合银行的特殊性,经过项目干系人集体讨论后, 确定了不同场景的优先级:系统安全性、可用性、可靠性最高,性能、可修改性其次,易用性优先级较低。在保障系统安全方面使用 SSL 数字证书的HTTPS访问协议,网络设备使用网闸、多层异构防火墙、入侵防护系统,数据访问使用分级授权和数据加密存储。可用性方面使用VMware 虚拟化平台加心跳技术,当服务器出现问题时候 VMware 虚拟机自动迁移到冗余主机。可靠性使用服务单独拆分、分层解耦设计,降低一个模块错误对全系统的影响,使用Spring拦截器对用户操作引起的错误进行统一容错处理。性能方面使用采用 WEB中间件集群,针对高并发读写操作数据库使用DB2 pureScale 磁盘共享集群技术加SSD 盘存储阵列。可修改方面系统对功能服务进行拆分,通过接口调用实现便捷修改。易用性采用界面设计的八大黄金法则,设计出多种风格
让用户自由选择。
(四)报告阶段,经过架构的评估,将评估的过程和结果都汇总整理成文档。其中包括架构分析方法文档、不同场景及各自的优先级、质量效用树、风险点决策、非风险点决策、每次评估会议的记录。经过实践证明,实施软件架构评估能正确的识别项目风险点、敏感点、权衡点,提前预判并做好应对措施,做出合理的架构决策,从而提高项目开发的成功率和质量。进过7个月的开发,绩效考核平台已经顺利上线并稳定运行1年多,充分发挥了绩效激励、赛马式营销、政策指挥棒的作用,目前已在全行推广使用,得到了领导、员工、客户的一致好评。
论软件系统架构评估v2.0
统一支付平台建设推广应用项目是我市卫生健康委员会2019年发起的一项医疗卫生行业便民惠民信息化项目,目的是实现辖区内患者在辖区各公立医疗机构就诊是,可以使用微信和支付宝在线支付挂号费、门诊费和住院预交金功能,我作为系统架构师参与此项目。本文围绕软件系统架构评估这个主题,首先介绍性能、可用性、安全性、可修改性、可靠性、易用性等几种常用的质量属性,然后详细说明使用 ATAM架构权衡分析法对统一支付平台架构进行评估时,下述七个步骤的具体工作:1、描述 ATAM 方法;2、描述业务动机;3、描述系统架构;4、确定架构方法;5、讨论场景和生成质量效应树;6、分析架构方法;7、描述评价结果。项目经过近一年的设计开发和集成,顺利通过验收并稳定运行,辖区各医疗卫生单位对此系统非常满意,给予高度评价。
随着互联网技术在医疗卫生行业的广泛应用,互联网+医疗便民惠民服务受到各级政府的高度重视,2019年,我市卫生健康委员会启动了统一支付平台建设推广应用项目,目的是实现辖区内患者在辖区各公立医疗机构就诊时,可以使用微信和支付宝在线支付挂号费、门诊费和住院预交金功能。我作为系统架构师参与此项目。
软件质量属性是软件架构设计关注的一个重点,在软件架构评估中质量属性包含:性能、可用性、安全性、可修改性、可靠性、易用性等,其中前四个质量属性是质量效应树的重要组成部分,具体含义:
性能是指系统的响应能力,即系统多久才能够对某个事件作出响应,或者在某段时间内能处理事件的个数。
可用性是指系统能正常运行的时间比。
安全性是指系统除了能对合法用户提供服务的同时,还能阻止非授权用户使用的企图或者拒绝服务的能力。
可修改性是指能够快速地并以高性价比对系统进行变更的能力。
可靠性是指软件系统在应用或者系统错误面前,在意外或者错误使用的情况下维持系统的功能特性的基本能力。
易用性是衡量一个用户使用软件产品完成指定任务的难易程度。
常用的架构评估方法有架构分析法SAAM、架构权衡分析法 ATAM 和成本效益分析法CBAM等,ATAM评估方法一般包含9个步骤,有迭代的过程,我们根据项目特点对某些步骤进行合并,分成了个步骤。
本次架构评估,评估小组由各医疗卫生机构收费窗口人员代表,信息科科长和财务科科长组成,决策小组由卫健委财务和信息化分管领导、规划信息与财务科科长,信息中心主任,项目负责人、系统架构师等组成,同时,开发人员、测试人员、运维人员等相关人员也参与了评估。
一、描述ATAM 方法:我首先介绍了 ATAM 架构评估的方法和目的。
二、描述业务动机:卫健委财务和信息化分管领导从业务角度介绍了平台的概括。
三、描述系统架构:我作为架构师,从功能、开发、部署、集成几个角度,描述了统一支付平台的架构。平台包含5个功能:1、患者通过扫描自助机屏幕显示的付款二维码来完成支付;2、缴费窗口工作人员使用扫码设备扫描患者手机上的缴费码来完成支付;3、患者通过健康 XXX 手机微信公众号在线缴费;4、患者通过健康XXX 手机APP 来在线缴费。5、财务人员使用 web 浏览器进行商户管理、用户管理、订单管理、对账管理和交易监管。统一支付平台使用轻量级J2EE多层架构、实现前后端分离,前端运行在各医院财务人员的网页浏览器上;后端应用服务器和数据库部署在服务器集群上。平台需要与辖区健康 APP、辖区健康微信公众号以及各公立医院信息系统(医院HIS 系统),医院自助机系统等实现集成。集成使用 REST架构风格为基础的分布式事务架构。平台和HIS 系统之间通过主备VPN 专线连接。
四、确定架构方法,在介绍整体架构的基础上,我进一步介绍具体的架构方案:
轻量级J2EE 多层架构方案:视图层采用 Vue网页用户界面渐进式构建框架和 Element 页面组件库实现; Web 服务层(控制层)、服务层和数据访问层使用 Spring Boot框架实现,数据持久层选用 myBatis 对象关系映射框架。
基于REST 架构风格的分布式事务架构方案:统一支付平台应用服务器与其他系统集成时,通过REST交互,内部使用 HTTPS 和JSON。平台提供账单回滚接口,当支付遇到问题时,医院信息系统或自助机系统会使用后台创建退费订单的方式来调用回滚接口,将用户的缴费状态重置为未缴费。
基于数据库共享的批量对账架构方案:医院每日1点将前一天的支付数据上传到指定的 mysql数据库,然后统一支付平台每日3点从这个数据库抓取数据,导入平台进行对账操作,医院使用消息队列实现上传重试机制,自动上传一周内未上传的数据,平台对账工具检测前一周内未对账的数据,自动重新对账。
服务器集群架构方案:平台应用服务器部署在多台虚拟机通过 Nginx组成的高可用负载均衡集群上,数据库系统部署在两台小型机组成的Oracle RAC实时应用集群上,操作系统为 CentOS 7.4,使用光纤存储区域网络来保存数据。
主备VPN 专线架构方案:平台和医院信息系统通过电信卫生专网和移动卫生专网连接,电信卫生专网为主线路,移动卫生专网为备用线路,医院负责专网监测和主备切换。
五、讨论场景和生成质量效应树,我们经过集体讨论,确定最重要的质量属性和场景,并设置优先级,形成质量效应树:
1、由于涉及到财务安全,所以要尽可能自动化的处理单边账(单边账指某个账单在HIS 系统与平台出现了不一致的记录),属于可靠性,高优先级。
2、由于基层财务人员年龄偏大,计算机能力较弱,所以需要对账界面简洁易用,属于易用性,低优先级。
3、正常情况下,平台不能出现超过5分钟无法访问的情况,属于可用性,高优先级。
4、在正常网络负载情况下、平台必须在25内响应 HIS系统发出的请求,10秒内无响应,HIS 系统需要自动探测网络并切换到备用线路,HIS系统界面不能卡死,属于性能和可用性,可用性为高优先级,性能为中优先级。
5、平台需要通过互联网连接健康 XXX手机 app、微信公众号、微信和支付宝支付后端平台,所以要求平台能够抵御99.9%的黑客攻击,属于安全性,高优先级。
7、未来需要添加医保支付、健康宝贝代金券支付功能,需要2个月之内完成相关功能,属于可修改性,中优先级。
六、分析架构方法,我在这个步骤解释各种架构方法如何实现高优先级的质量属性需求,并通过评估得到相关架构风险,敏感点和权衡点。架构风险是指系统设计过程中潜在的、存在问题的架构决策所带来的隐患,敏感点是指为实现某个特定质量属性,一个或者多个构件所具有的特性,权衡点是指影响多个质量属性的特性,且每个质量属性都属于敏感点。基于 REST的分布式事务架构方案关注可靠性和安全性,服务器集群架构方案主要关注性能、可用性和安全性;主备 VPN 专线架构方案关注可用性;基于数据库共享的批量对账架构方案主要关注可靠性;轻量级 J2EE 多层架构方案主要关注可修改性。以基于REST 的分布式事务架构方案为例,当患者出现缴费问题时,平台会后台创建退费订单自动退费冲红,否则,就需要窗口收费人员和医院信息科、财务科和卫健委信息中心的工程师协调手工解决问题,影响业务且容易引起患
者投诉,但这种问题存在的问题是:后台创建的订单会让对账流程和对账界面复杂化,降低可用性,所以是一个权衡点。
七、描述评估结果,最后我们将架构方法、质量场景及优先级、效应树、所发现的决策风险、敏感度和权衡点等相关信息汇总成书面材料,反馈给相关风险承担者。
项目经过一年的设计开发和集成,顺利通过验收并稳定运行,辖区各医疗卫生机构对此平台非常满意,给予高度评价,通过本次实践,我体会到,现代信息系统越来越复杂,架构评估的作用变得越来越重要。
评论区