2019年下半年试题二:论软件系统架构评估及其应用
论文库链接:系统架构设计师论文
论文题目
对于软件系统,尤其是大规模复杂软件系统而言,软件系统架构对于确保最终系统的质量具有十分重要的意义。在系统架构设计结束后,为保证架构设计的合理性、完整性和针对性,保证系统质量,降低成本及投资风险,需要对设计好的系统架构进行评估。架构评估是软件开发过程中的重要环节。
请围绕“论软件系统架构评估及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
2.详细阐述有哪些不同的软件系统架构评估方法,并从评估目标、质量属性和评估活动等方面论述其区别。
3.详细说明尼所参与的软件开发项目中,使用了哪种评估方法,具体实施过程和效果如何。
论文参考
论软件系统架构评估及其应用
摘要
本文以我参与的清算平台建设为例,论述了软件系统架构评估及其应用。该项目的目标是构建统一的网联交易清算平台,将第三方支付公司和银行之间的数据交互隔离并解耦,以利于央行对支付数据的风险监控诉求。该项目存在影响范围广、涉及单位多、性能要求高等难度与挑战。在此项目中,我作为系统架构师及主要管理人员,参与了该项目的需求开发、系统架构设计等主导工作。我们经过实践认为架构评估是软件开发过程中的重要环节。主要的评估方法有架构权衡分析法(ATAM)、软件架构分析法(SAAM)等。选择正确的系统架构评估方法,对于保证架构设计的合理性、完整性和针对性,保证系统质量,降低成本及投资风险,都是很有必要的。网联项目的系统架构经过严格、严肃的评估并付诸实施,在各方面取得了成功。
正文
随着电子商务的发展,线上支付领域在最近十年获得了爆发式增长。尤其是微信支付、支付宝两大巨头的出现,深刻影响了人们的移动支付方式。“双十一”“618”等场景的出现,进一步促进了互联网支付的深度发展。然而,各大支付公司为了发展代扣用户银行账户余额额业务,几乎接入了每一家大大小小的银行。支付公司和银行之间形成了“网状”的数据通信,引发了央行的持续关注,认为这种“网状”数据通信不利于资金的监管、风险调控等,进而提出要在支付公司和银行之间设立“网联清算平台”,解耦并隔离银行和支付公司的直接通信,并设立风控机构,以期解决上述提出的各项问题。2022年8月,作为系统架构师及主要管理人员,我有幸参与并主导了这个国家级重点工程,并在项目实践了系统架构评估方法及应用,得到了项目组成员的认可。下面重点阐述我在本项目中的实践。
目前最主要的架构评估方法有两种,分别详述如下:
1.架构权衡分析法(ATAM)
ATAM主要针对性能、可用性、安全性、可修改性等质量属性进行评估和折中,其目标是在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件体系结构的能力的方法。ATAM的主要活动包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中等。
2.基于场景的架构分析法(SAAM)
SAAM把任何形式的质量属性都具体化为场景,使用场景技术为评估技术,以场景代表描述体系结构属性的基础,描述了各种系统必须支持的活动和将要发生的变化。SAAM的目标是描述应用程序属性的文档,验证基本的体系结构假设和原则。SAAM的目标是描述应用程序属性的文档,验证基本的体系结构假设和原则。SAAM评估活动包括:场景开发、架构描述、单个场景评估、多个场景交互评估、总体评估。
选择正确的系统架构评估方法,能够保证架构设计的合理性、完整性和针对性,保证系统质量,降低成本及投资风险。所以网联项目组在对架构评估方法选型时,结合网联平台自身的重要性和国家金融基础设施的特点,仔细考察、反复对比了两种主要的方法,最终采用了ATAM为架构评估方法。
项目建设的网联平台本身是一个涉及面比较广泛、影响比较大的国家级工程,它向前对接中国所有的支付公司,向后对接中国所有的银行,中国所有的支付交易全部要经过网联平台,才能发生实质性的个人银行账户金额划转。所以网联平台建设对非功能质量属性的要求非常高,需要分析很多重要且关键的质量属性,例如性能、可用性、安全性、可修改性等,并在质量属性中做好权衡、折中。而ATAM在评估技术、关注质量属性、特定目标、方法活动、产出的质量属性效应树等各方面都完美匹配网联平台的评估需求。在架构设计完成之后,网联项目组设计了架构评估的工作流程。参与架构评估的人员来自比较重要的支付公司和银行的首席架构师、技术负责人、支付领域业务专家、央行支付的技术领导以及网联的产品负责人、技术线负责人和关键领导等。重要干系人一起参与整个架构评估工作。整个工作分为4个阶段进行。
一、描述和介绍阶段
作为网联项目的架构师,我首先向大家介绍了ATAM架构评估方法的流程以及细则,确保大家理解ATAM方法的运作过程。然后由网联的产品负责人着重讲述网联平台建设的业务动机,包括央行对网联的关键业务需求、技术指标、功能范围,以及各银行和支付公司对网联的接入诉求等,确保大家明确网联平台建设的根本目的。最后由我来描述网联平台的总体架构设计、各业务模块划分及交互、关键技术选型等。
二、调查和分析阶段
由各单位代表提出场景诉求,并加以记录和归类整理,生成质量属性效应树。比如,支付宝技术负责人提出“‘双十一’等高峰支付场景下,网联平台须有能力处理100万并发请求的能力”归类为性能属性 ;微信支付的架构师提出“正常情况下,用户的支付结果响应要在100ms内返回”也归类为性能属性;工商银行的领域专家提出“由于交易中包含用户的敏感信息,所以网络请求需要提升加密力度,比如采用RSA算法”归类为安全性属性;央行的技术领导提出“网联作为国家基础设施,必须有技术手段保证机房发生问题时,秒级切换到备用机房”归类为可用性属性;网联自己的应用技术负责人也提出“在后期迭代过程中,系统要容易扩展新功能”归类为可修改性属性。
经过调查所有相关方的诉求后,我们收集了上百个场景,并根据重要性对这些场景设置了权重,通过归纳和整理,我们得到了一颗质量属性效应树。初步分析后我们发现,大多数场景的权重值集中于:性能、可用性、安全性、可修改性四个属性。然后,我们组织网联项目组的各技术线负责人、技术骨干、架构小组来一起进行分析,进一步识别其中的权衡点、敏感点和风险点。比如“采用RSA加密算法虽然能提升安全性,但计算量比较大,会影响请求响应时间”属于权衡点;“对可用性达到99.9999%的要求可能会因为采用主动冗余技术,而造成投入的软硬件成本急剧增加”属于敏感点;“如果机房建设未能如期完成,可能导致系统架构部分实现,从而影响整体功能”属于风险点。
三、测试阶段
由于我们在前一阶段确定了场景的权重,并因此归纳出了网联平台对于质量属性的优先级,即性能和可用性最高,而安全性、可修改性较低。我们依据属性优先级来校验我们最终的架构方案,并充分评估实现方案的可行性和合理性。性能方面,我们架设了北京、上海、深圳三地六中心机房,同时接受支付公司的流量,在每个机房内部署100套微服务实例,并做好负载均衡硬件,提升接入层的可用性;应用层采用负载均衡的分布式集群的微服务架构,提升应用服务器的整体可用性;数据层采用MySQL主从模式的主动冗余技术,以及分库分表技术带来的进一步降低出现问题时的影响范围。在权衡点做决策时,我们依据优先保证系统性能的原则。比如我们采用计算量不大的对称加密算法,保证系统性能不受影响,但通过定时自动更换对称密钥的机制,来降低对称密钥被破解带来的风险,从而在性能和安全性之间达到最佳选择。另外我们对于所有敏感点和风险点做了详细的评估,并做了充分的预案设计和应对流程设计。
四、报告阶段
经过架构评估,我们将评估的过程和结果汇总整理成文档。文档包括架构分析方法文档、不同场景及优先级、质量属性效应树、权衡点决策、风险点评估、会议记录等。
综上所述,由于运用了ATAM的评估方法和活动流程,我们做出了合理的架构决策,保证了架构设计的正确性,验证了各项质量需求,保障了系统实现、测试、验收等工作的顺利实施。网联平台上线以来,得到了支付行业内的持续关注,由于架构合理且考虑周全,进展比较顺利,得到了行业内外的认可。我们还持续优化并升级扩展机房规模,在最近几年的“双十一”和“618”等场景下,经受了大并发的性能考验。这也充分说明了在当今信息系统建设中,以ATAM为代表的架构评估方法是验证架构设计的最重要手段。