分析大型软件系统的经典方法

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
应用实时监控服务-用户体验监控,每月100OCU免费额度
可观测监控 Prometheus 版,每月50GB免费额度
简介: 【6月更文挑战第19天】本文介绍ATAM(架构权衡分析方法)是一种评估大型软件系统架构的工具,着重考虑性能、可用性、安全性和可修改性等质量属性的交互。ATAM提供了一种结构化方法,确保在设计早期就能理解和平衡各种质量属性,以优化系统整体性能。

1 简介

假设您计划开发一套系统,自己也认为相当有信心,但是有时候我们需要更深入的量化它,如何评估这种“相当不错”的感觉?而一个大型系统可能更加难以决定。

特别地,大型软件系统的质量属性主要是由系统的软件体系结构决定。

也就是说,在大型系统,性能、可用性和可修改性等质量的实现更多地取决于整体软件架构。

这是相对比于代码级实践而言的,比如语言选择、详细设计、算法、数据结构、测试等。

这并不是说选择算法或数据结构并不重要,而是这种选择对系统成功的重要性不如它的整体软件结构,它的架构。

因此,它给我们提供的兴趣是在建造之前就尝试分析和确定是否系统确实可以满足其期望的品质。我们可以开始这条漫漫长路。

treeoflife6.png

2 大型软件的质量分析方法

传统方法往往单独分析这些属性,但ATAM强调属性间的权衡和交互。通过需求收集、架构描述、属性模型分析和决策制定等四个阶段。

ATAM帮助识别敏感点(影响特定质量的组件)和权衡点(影响多质量属性的点),并管理风险。效应树用于可视化和分析这些关系。

虽然分析特定质量属性的方法已经存在,但是这些分析通常是单独执行的。
实际上,一个系统的交互性能会影响可修改性。

比如可用性会影响安全性。安全性会影响性能。这一切又将影响成本,等等。

虽然经验丰富的设计师知道这些权衡存在,但是还没有原则性的方法用于表征它们,特别是表征这些属性之间的交互。

出于这个原因,软件架构通常设计为“黑盒”的过程。

很多属性需要权衡 - 如果系统是要构建的,质量权衡将不能避免。但它们是通常是以临时方式构建的。

想象一下,一位画师被赋予一个 38 种色彩的图形均衡器,其中均衡器的每个控件都有效果与其他控件的某些子集交互。

但是工程师没有获得任何分析仪,并被要求设置色彩以获得最佳保真度。显然,这样的需要是站不住脚的。

实际上软件架构中的软件系统拥有的更多超过38个色彩的独立但相互作用的变量需要“调整”和“权衡”。

设计人员已经使用了一些技术来尝试降低选择架构以满足广泛的质量属性的风险。
编程方面的最新活动:设计模式和架构风格就是一个例子。

设计师可能会选择一种图案,因为它“有利于可移植性“,另一个是因为它”易于修改”。
但对模式的分析并没有比这更深入。

这些模式的用户不知道如何做到更易用,或者可修改或更健壮的架构,直到它被构建出来。

3 控制开发质量 架构权衡分析方法

架构权衡分析方法(Architecture Tradeoff Analysis Method, ATAM) ATAM是一种系统架构评估方法,
主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。

ATAM 可以分为 4个主要的活动阶段包括:

需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,

整个评估过程强调以属性作为架 构评估的核心概念。现代的 ATAM 方法采用效用树对质量属性进行分类和优先级排序,其基本活动结构如下图。

image.png

用 ATAM 方法评估软件体系结构分为演示调查和分析、测试和报告 ATAM。

4 敏感点

实现质量目标时应注意的点,它是一个或多个构件(或构件之间的关系)的特性。

为了实现某种特定质量属性,一个或多个构件所具有的特定。

关键:对查询请求处理时间的要求将影响系统的数据传输协议和处理过程的设计。

5 权衡点

指影响多个质量特征,并对多个质量特征都是敏感点的质量特征 。
改变业务数据编码方式对系统性能和安全产生影响。
影响多个质量属性的敏感点。

6 风险

不以标准术语出现。某些做法有一些隐患可能导致一些问题。
对系统某业务逻辑的描述尚未达成共识,可能导致部分业务功能模块重复,影响系统可修改性。

7 非风险

可行的做法。比如 业务响应小于30ms,则请求响应超时设定为1秒是可以接受的。

8 效应树和执行步骤

一个评估过程包括九大步骤如下,

描述ATAM方法;
描述业务动机;
描述架构;
确定架构方法;
生成质量效应树;
分析架构方法;
讨论场景和对场景分级;
分析架构方法;
描述评估结果。 

一个典型的效应树结构示例如下:

image.png

9 总结

本文简单介绍了架构权衡分析方法(ATAM)基本概念,它是一种易于理解的结构化技术,评估设计中固有的属性权衡。

这种方法是为开发流程提供了一种有原则的方法来评估软件架构在多个竞争质量方面的适用性。

属性:其经典内容包括

可修改性、安全性、性能、可用性

这些属性相互作用:经常改进一个属性代价将使一个或多个其他情况恶化,这将在此论文中得到了证明。

ATAM是螺旋模型的设计:遵循假设候选架构之一通过分析和风险缓解,达成精细的架构。

目录
相关文章
|
2月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
49 4
|
3月前
|
数据采集 算法 数据可视化
圣牛模型是什么?与传统方法相比有哪些独特的优势和应用限制?
圣牛模型(Sacred Cow Model)是一种创新的项目管理方法,通过系统化思维解决复杂问题。它整合多元数据源,利用先进算法进行深度分析,并通过可视化界面展示结果。相比传统方法,圣牛模型具备更全面的数据分析、高准确性和预测能力、实时动态反馈及个性化定制等优势,但也面临数据质量、技术门槛、解释性和伦理等方面的挑战。结合板栗看板等工具,能进一步提升决策效率和支持效果,助力企业在数字化时代实现持续发展。
|
6月前
|
存储
业务系统架构实践问题之为什么按模型划域可能是比按领域划分更好的选择
业务系统架构实践问题之为什么按模型划域可能是比按领域划分更好的选择
|
6月前
|
网络协议 Python
系统工程是一种跨学科的方法论,旨在通过分析和设计系统的各个组成部分、组织结构、信息流和控制机制,以实现系统的整体最优运行。
系统工程是一种跨学科的方法论,旨在通过分析和设计系统的各个组成部分、组织结构、信息流和控制机制,以实现系统的整体最优运行。
|
8月前
|
运维 Cloud Native 数据库
开发人员必须知道的软件系统架构分类知识
日常工作中或者是看各种资料或阅读书籍时,大佬们关于软件架构的描述中经常会看到SaaS和云原生,微服务,事件驱动型这几种词汇,其实这几类架构描的角度是不一样的。
162 7
|
存储 大数据 OLTP
抽象真实世界的利器
抽象真实世界的利器
|
8月前
简述几种常用数值方法的优势及适用性
这篇文章简要介绍了几种常见的数值计算方法在解决偏微分方程中的应用。偏微分方程被用来描述自然界的物理现象,而当它们难以直接求解时,数值方法如有限元法(FEM)、有限差分法(FDM)、有限体积法(FVM)和边界元法(BEM)成为常用工具。有限元法适用于复杂问题,但计算量大;有限差分法简单但对复杂几何形状处理困难;有限体积法对网格质量要求低,适合流体力学;边界元法则仅需处理边界,适合边界主导的问题。各种方法各有优劣,常结合实际问题组合使用。例如,云道智造的伏图仿真平台集成多种数值方法,支持多物理场耦合仿真。
401 0
|
8月前
|
机器学习/深度学习 人工智能 供应链
传统算法是如何在销补调计划中发挥作用的
传统算法是如何在销补调计划中发挥作用的
|
存储 消息中间件 监控
大型系统应用边界设计原则与实践
大型系统应用边界设计原则与实践
大型系统应用边界设计原则与实践
|
机器学习/深度学习 Oracle 关系型数据库
华为团队开发组合贝叶斯优化框架,进行抗体计算机设计
华为团队开发组合贝叶斯优化框架,进行抗体计算机设计
180 0