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.mzph.cn/diannao/60512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链

一、pop1链的跟踪 1、路由关系 2、漏洞触发口unserialize(base64_decode($data)); 2、__destruct(),魔术法方法调用close函数方法 3、未找到利用链,尝试__call魔术方法 4、逆推找call_user_func 函数 第一部分 namespace yii\db; class BatchQueryResu…

Maven 构建项目

Maven 是一个项目管理和构建工具,主要用于 Java 项目。它简化了项目的构建、依赖管理、报告生成、发布等一系列工作。 构建自动化:Maven 提供了一套标准化的构建生命周期,包括编译、测试、打包、部署等步骤,通过简单的命令就可以执…

任务调度中心-XXL-JOB使用详解

目录 详解 调度中心 执行器 原理 快速入门 源码仓库地址 1.初始化数据库 2.配置调度中心 1.解压源码 2.需改配置文件 3.启动调度中心 3.配置执行器 1.引入pom依赖 2.修改配置文件 3.执行器组件配置 4.部署执行器项目 4.开发第一个任务 BEAN模式(类…

ROM修改进阶教程------安卓14 安卓15去除app签名验证的几种操作步骤 详细图文解析

在安卓14 安卓15的固件中。如果修改了系统级别的app。那么就会触发安卓14 15的应用签名验证。要么会导致修改的固件会进不去系统,或者进入系统有bug。博文将从几方面来解析去除安卓14 15应用签名验证的几种方法。 💝💝💝通过博文了解: 1💝💝💝-----安卓14去除…

批量规范化与ResNet-paddle

批量规范化与ResNet——paddle部分 本文部分为paddle框架以及部分理论分析,torch框架对应代码可见批量规范化与ResNet import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1批量规范化 批量规范化(Batch Norma…

从零开始快速构建Vue3项目

一、技术选型 组件大类 具体插件 vue3插件 相关插件开发文档 基础架构搭建 初始项目搭建、打包构件工具:vite开始 | Vite路由管理及菜单权限封装vue-router介绍 | Vue Router状态管理Pinia介绍 | Pinia 中文文档API请求及异常封装axiosUI框架 element-uihttps…

74HC245

74HC245:典型的CMOS型缓冲门电路 在这里用于增加电压

BFS 算法专题(三):BFS 解决边权为 1 的最短路问题

目录 1. 迷宫中离入口最近的出口 1.1 算法原理 1.2 算法代码 2. 最小基因变化 ★★★ 2.1 算法原理 2.2 算法代码 3. 单词接龙 3.1 算法原理 3.2 算法代码 4. 为高尔夫比赛砍树 (hard) 4.1 算法原理 4.2 算法代码 1. 迷宫中离入口最近的出口 . - 力扣(…

「数据要素」行业简报|2024.11.上刊

纵观数据要素行业动态,洞察行业风向,把握行业脉搏! 一、政策发布 1、《山东省公共数据资源登记管理工作规范(试行)》公开征求意见 11月7日,为认真贯彻落实《中共中央办公厅 国务院办公厅关于加快公共数据资源开发利用的意见》《…

有什么好用的 WebSocket 调试工具吗?

在开发和测试 WebSocket 应用程序时,确保客户端能够正确地与服务器建立连接、发送和接收消息是非常重要的。 市面上有许多通用的 API 测试工具,它们大多专注于 HTTP 请求,而对于 WebSocket 的支持则显得较为有限。这种局限性使得开发者在寻找…

MQTT协议解析 : 物联网领域的最佳选择

1. MQTT协议概述 1.1 MQTT协议是什么 MQTT : Message Queuing Telemetry Transport 模式 : 发布 / 订阅主题优点 : 代码量小、低带宽、实时可靠应用 : 物联网、小型设备、移动应用MQTT 常用端口 : 1883 MQTT是一个网络协议,和HTTP类似,因为轻量简单&…

鸿蒙HarmonyOS 网络请求获取数据Http

注意的是;要为接口返回值指定类型 ,以及定义接口数据类型 index.ets import { http } from kit.NetworkKit;interface createAtType {date: number,}interface dataListType {createAt: createAtType;imgUrl: }Component export default struct TabBar {State dat…

2024136读书笔记|《飞鸟集》——使生如夏花之绚烂,死如秋叶之静美

2024136读书笔记|《飞鸟集》——使生如夏花之绚烂,死如秋叶之静美 《飞鸟集》[印]泰戈尔,一本有意思的诗集,中英文对照着读更有意思。“你是谁,读者,百年后读着我的诗?”让我觉得有些久别重逢,忽…

ROS Action

在 ROS 中,Action 是一种支持长时间异步任务的通信机制。与 Service 不同,Action 允许客户端发起一个请求,并在任务执行的过程中不断接收反馈,直到任务完成。这种机制非常适用于可能需要较长时间来完成的任务,比如机器…

约束(MYSQL)

not null(非空) unique(唯一) default(默认约束,规定值) 主键约束primary key(非空且唯一) auto_increment(自增类型) 复合主键 check&#xff08…

笔记 | image may have poor performance,or fail,if run via emulation

在Docker Desktop中现象如图: 当你运行 AMD64 平台代码时(Intel 和 AMD 芯),你的 Mac 必须模拟其CPU架构(因为你自身是ARM)。这通常会非常吃性能。 Docker Desktop 警告你在模拟 Intel/AMD x64 CPU 时性能可…

【C++】C++11特性(上)

✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:C 个人主页:Celias blog~ 目录 一、列表初始化 二、std::initializer_list 三、右值引用和移…

24/11/7 算法笔记 PCA主成分分析

假如我们的数据集是n维的,共有m个数据(x,x,...,x)。我们希望将这m个数据的维度从n维降到k维,希望这m个k维的数据集尽可能的代表原始数据集。我们知道数据从n维降到k维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这k维的数据尽可能表…

JS 实现SSE通讯和了解SSE通讯

SSE 介绍: Server-Sent Events(SSE)是一种用于实现服务器向客户端实时推送数据的Web技术。与传统的轮询和长轮询相比,SSE提供了更高效和实时的数据推送机制。 SSE基于HTTP协议,允许服务器将数据以事件流(…

C/C++每日一练:查找链表的中间节点

链表(Linked List) 链表是一种线性数据结构,由一系列节点(Node)通过指针链接在一起。与数组不同,链表中的元素在内存中不需要连续存储,每个节点包含两部分: 数据部分:存…