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,一经查实,立即删除!

相关文章

网络安全-蓝队基础

声明 学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致…

集群策略选择vs生产需求点(负载/可用性、灾备/安全性)

• 集群策略分类 负载均衡靠: -主从。读写分离。 灾备靠: -同步( 主备,一定带同步功能。主从,一定带同步功能。主主,一定带同步功能。由于主备、主主不常用,同步基本等价于主从。)…

AI开发-三方库-PyTorch-NumPy

1 需求 官网:https://numpy.org/ 2 接口 3 示例 4 参考资料

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模式(类…

PostgreSQL 无法为连接创建新的进程

PostgreSQL could not fork new process for connection 前几天在使用 PostgreSQL 数据库的过程中遇到这样一个错误。 could not fork new process for connection: Resource temporarily unavailable 看字面意思是无法克隆一个新的进程供连接使用,资源暂时不可用。…

HBase 安装与基本操作指南

以下是关于 Apache HBase 安装、配置以及简单操作的详细指南: HBase 简介 Apache HBase 是一个基于 Hadoop 的分布式数据库,擅长处理大规模、结构化的海量数据。它采用行列式存储方式,与 Hadoop 和 HDFS 紧密结合,是支持大数据实…

ES6基础

一、变量声明 1.let 语法:let 变量名 值; 特点:存在块级作用域;不存在变量提升(考虑暂时性死区),即变量一定要在声明后使用,否则报错;不允许重复声明(包括普通变量和函…

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

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

基于STM32设计的大棚育苗管理系统(4G+华为云IOT)_265

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】国内外研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 参考文献1.6 系统框架图1.7 系统原理图1.8 实物图1.9…

spring boot项目打成war包部署

1.修改pom.xml 在 pom.xml 里设置 <packaging>war</packaging>2.移除嵌入式tomcat插件 在 pom.xml 里找到spring-boot-starter-web依赖&#xff0c;在其中添加如下代码&#xff0c; <dependency><groupId>org.springframework.boot</groupId>&l…

植物明星大乱斗1

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 scene.hmenuScene.hgameScene.hmainscene.cppmenuScene.cppgameScene.cpp scene.h #pragma once #include <graphics.h>/* 场景菜单角色选择游戏 */ class Scene { public:virtual ~Scene() 0; public:virt…

校园二手交易网站毕业设计基于SpringBootSSM框架

目录 一、引言 二、需求分析 2.1用户需求分析 2.1.1学生用户 2.1.2管理员 2.2系统功能需求 2.3系统非功能需求 ‌2.4技术需求 ‌2.4.1 技术选择 ‌2.4.2系统架构‌ 三、详细设计 3.1系统架构设计‌ ‌3.2前端设计‌ ‌3.3后端设计‌ ‌3.4数据库设计‌ 本文介绍…

批量规范化与ResNet-paddle

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

云速搭助力用友 BIP 平台快速接入阿里云产品

用友 BIP 是用友在 2017 年开始战略投入、规模研发的全新一代的产品&#xff0c;作为全球领先的企业数智化平台与应用软件之一&#xff0c;用友 BIP 商业创新平台&#xff08;Yonyou Business Innovation Platform&#xff09;是用友采用新一代信息技术&#xff0c;按照云原生、…

PHP Session

PHP Session PHP Session 是一种在 PHP 中用于跟踪用户会话的技术。会话允许在用户浏览网站时存储和访问用户信息。本文将详细介绍 PHP Session 的工作原理、如何创建和销毁会话、会话的安全性和最佳实践。 什么是 PHP Session? 在 Web 开发中,HTTP 是一种无状态的协议,这…

从零开始快速构建Vue3项目

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

74HC245

74HC245&#xff1a;典型的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. 迷宫中离入口最近的出口 . - 力扣&#xff08;…