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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 【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是螺旋模型的设计:遵循假设候选架构之一通过分析和风险缓解,达成精细的架构。

目录
相关文章
|
6月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
78 4
|
7月前
|
数据采集 算法 数据可视化
圣牛模型是什么?与传统方法相比有哪些独特的优势和应用限制?
圣牛模型(Sacred Cow Model)是一种创新的项目管理方法,通过系统化思维解决复杂问题。它整合多元数据源,利用先进算法进行深度分析,并通过可视化界面展示结果。相比传统方法,圣牛模型具备更全面的数据分析、高准确性和预测能力、实时动态反馈及个性化定制等优势,但也面临数据质量、技术门槛、解释性和伦理等方面的挑战。结合板栗看板等工具,能进一步提升决策效率和支持效果,助力企业在数字化时代实现持续发展。
|
9月前
|
缓存 负载均衡 架构师
优化大型数据处理系统的性能:从设计到实施
在数据驱动的世界中,大型数据处理系统的性能对企业运营至关重要。本文将探讨如何通过优化设计、选择合适的技术栈以及实施高效的策略来提升数据处理系统的性能。我们将深入分析数据库设计优化、并发处理、数据缓存策略、和数据流管理等关键领域,提供实际案例和技术建议,以帮助开发人员和系统架构师构建高效、可扩展的数据处理系统。
|
10月前
|
存储
业务系统架构实践问题之为什么按模型划域可能是比按领域划分更好的选择
业务系统架构实践问题之为什么按模型划域可能是比按领域划分更好的选择
|
负载均衡 监控 算法
转:启发式算法对网络行为管理系统的应用研究、实用性分析及实现难度
启发式算法在网络行为管理系统中的应用研究是一个重要的领域,它可以帮助改善系统的性能和效率。启发式算法是一种通过模拟自然界的演化过程或启发式规则来解决复杂问题的方法。
110 2
|
存储 消息中间件 监控
大型系统应用边界设计原则与实践
大型系统应用边界设计原则与实践
大型系统应用边界设计原则与实践
|
XML 设计模式 JSON
领域驱动设计总结——如何设计大型系统
本文为领域驱动设计系列总结的第五篇,主要对领域驱动设计概念做个介绍,本系列领域驱动设计总结主要是在Eric Evans 所编写的《领域驱动设计》 一书的基础上进行归纳和总结。本文主要介绍在领域驱动设计中如何设计大型系统。
264 0
|
数据可视化 定位技术 容器
软件系统中的模型
软件系统中的模型
软件系统中的模型
|
SQL Web App开发 网络协议
作为一个程序员需要了解多少网络方面的基础?网络基础总结(不断更新)
OSI网络体系结构分为七层: 从下到上分为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 TCP/IP协议结构分为四层: 从下到上分为:网络接口层、网际层、传输层、应用层 网络接口层对应于OSI的物理层和数据链路层,应用层对应于OSI的会话层、表示层、应用层。
|
运维 架构师 Cloud Native
软件工程:为数十亿用户设计架构
在过去,我们已经分享过了支付宝伴随着双十一大促一路走来的技术演进,今天,我们邀请到了支付宝全局架构师曹刚,请他给大家分享一下,给 12 亿用户设计架构是什么体验。
软件工程:为数十亿用户设计架构