当前位置: 首页 > article >正文

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为代表的架构评估方法是验证架构设计的最重要手段


http://www.kler.cn/a/402056.html

相关文章:

  • VSCode自定义插件创建教程
  • LLM评测指标与评测方法
  • 纯前端实现语音文字互转
  • 基于普中51单片机开发板的电子门铃设计( proteus仿真+程序+设计报告+讲解视频)
  • 网络安全:我们的安全防线
  • 深度学习:卷积神经网络的计算复杂度,顺序操作,最大路径长度
  • Node.js | Yarn下载安装与环境配置
  • 【JAVA】正则表达式中的正向肯定预查
  • Java安全—log4j日志FastJson序列化JNDI注入
  • 创新租赁APP开发提升用户体验与业务效率
  • 【经典】webpack和vite的区别?
  • D - Strange Mirroring(AtCoder Beginner Contest 380)
  • ServletConfig、ServletContext、HttpServletRequest与HttpServletResponse常见API
  • 记录———封装uni-app+vant(u-upload)上传图片组件
  • windows C#-编写 C# LINQ 查询(上)
  • IPv6 NDP 记录
  • vue2侧边导航栏路由
  • 三、计算机视觉_02计算机视觉领域的四大基本任务
  • AI 无人直播常见问题剖析:轻松一键开播,畅行智能直播新时代
  • 第T8周:Tensorflow实现猫狗识别(1)
  • Python Web 开发的路径管理艺术:FastAPI 项目中的最佳实践与问题解析20241119
  • Jmeter中的后置处理器(三)
  • CH02_泛型
  • 分析 Vue 3 页面数据加载延迟问题
  • 学习笔记:黑马程序员JavaWeb开发教程(2024.11.18)
  • jmeter--CSV数据文件设置--请求体设置变量