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

本文涉及的产品
云原生网关 MSE Higress,422元/月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【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是螺旋模型的设计:遵循假设候选架构之一通过分析和风险缓解,达成精细的架构。

目录
相关文章
|
SQL 安全 算法
移动端安全基础
移动端安全基础
|
消息中间件 分布式计算 Hadoop
利用Hadoop进行实时数据分析的挑战与解决方案
【8月更文第28天】随着大数据技术的快速发展,企业和组织面临着越来越复杂的实时数据处理需求。Hadoop 作为一种分布式存储和处理大数据的框架,虽然擅长于批处理任务,但在处理实时数据流时存在一定的局限性。为了克服这些限制,Hadoop 经常与其他实时处理框架(如 Apache Kafka 和 Apache Storm)结合使用。本文将探讨如何利用 Hadoop 结合 Kafka 和 Storm 实现近实时的数据处理,并提供相关的代码示例。
920 0
|
Kubernetes API 微服务
「架构风格」SOA(面向服务)和微服务
**SOA与微服务对比摘要**: - **SOA**:企业级,服务粒度大,重用性强,常通过ESB通信,服务部署集中,技术栈统一。 - **微服务**:服务粒度小,单一职责,轻量级协议如REST,独立部署,技术多样性,去中心化治理。 - **区别**:服务大小、独立性、通信协议、部署方式和技术栈不同,微服务更强调敏捷和独立性。 - **示例**:Python Flask简单示例展示了服务创建,SOA服务间通过HTTP请求通信,微服务每个服务独立运行。 - **权衡**:涉及服务发现、负载均衡、容错和安全,常用技术如Docker、Kubernetes和API网关。
984 0
|
关系型数据库 数据库连接 数据库
Python执行PG数据库查询语句:以Markdown格式打印查询结果
使用Python的`psycopg2`和`pandas`库与PostgreSQL交互,执行查询并以Markdown格式打印结果。首先确保安装所需库:`pip install psycopg2 pandas`。接着建立数据库连接,执行查询,将查询结果转换为DataFrame,再用`tabulate`库将DataFrame格式化为Markdown。代码示例包括连接函数、查询函数、转换和打印函数。最后限制列宽以适应输出。
|
9月前
|
数据采集 存储 数据挖掘
构建电商数据采集系统初定位
构建电商数据采集系统需经历需求分析、技术选型、系统设计、开发实现、测试优化及部署维护六大步骤。过程中要明确目标与数据范围,选择合适的工具和数据库,并设计合理的架构与采集策略。还需考虑合法合规、分布式采集、数据质量控制及动态调整等策略,确保系统高效、稳定运行,适应电商环境变化。
|
10月前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB逻辑存储结构
MongoDB的逻辑存储结构由数据库(Database)、集合(Collection)和文档(Document)组成,形成层次化数据模型。用户通过mongoshell或应用程序操作这些结构。视频讲解及结构图详见下文。
294 3
|
SQL 关系型数据库 MySQL
mysql密码的初始化,修改与重置
【8月更文挑战第16天】在 MySQL 中,可通过特定步骤初始化、修改或重置密码: 1. **初始化密码**:适合首次安装或遗忘 root 密码。需先停用 MySQL 服务,以特殊模式启动(跳过权限表),登录后更新 root 用户密码,并重启服务。 2. **修改密码**:直接使用 `ALTER USER` SQL 语句或通过客户端工具如 MySQL Workbench 修改现有用户的密码。 3. **重置密码**:若遗忘密码且初始化方法不可行,则需停用服务、修改配置文件以允许无密码启动 MySQL,登录后更改密码,并恢复正常配置重启服务。
3641 2
|
消息中间件 前端开发 编译器
10种常见的软件架构模式简述
10种常见的软件架构模式简述
|
Docker 容器
docker设置国内镜像源
docker设置国内镜像源
34563 5
|
12月前
|
NoSQL 关系型数据库 OLAP
如何选择最合适的数据库,帮助企业及个人业务更好的开展
如何选择最合适的数据库,帮助企业及个人业务更好的开展