架构评估-架构师之路(十二)
- 软件系统质量属性
软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。
质量属性
- 性能:指 系统的响应能力,如 响应时间,吞吐率。
设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度。
- 可靠性:在意外或错误使用情况下维持软件系统功能特征。如MTTF、MTBF、MTTR。
MTTF:平均无故障时间。
MTBF:平均故障间隔时间。
MTTR:平均故障修复时间。
设计策略:心跳、PING/Echo、冗余、选举。
- 可用性:系统正常运行的时刻。如 故障间隔时间。
设计策略:心跳、PING/Echo、冗余、选举。
- 安全性:指 阻止非授权用户使用企业或拒绝服务的能力。 如 保密性、完整性、不可抵赖性、可控性。
设计策略:入侵检测、用户认证、用户授权、追踪审计。
- 可修改性:以较高性能价格比对系统进行更改。
设计策略:接口-实现分离、抽象、信息隐藏。
- 功能性:系统所能完成所期望的工作和能力。
- 可变性:指 体系结构经扩充或变更而成为新系统结构的能力。(可扩展)
- 互操作性:作为系统 组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。
- 质量属性场景
质量属性场景是一种 面向特定质量属性的需求。六个部分组成。
刺激源(source):指 某个生成该刺激的实体。(人、计算机系统或者任何其他刺激器)
刺激(stimulus):是指 当刺激达到系统时需要考虑的条件。(希望增加、删除、修改、改动功能、质量属性、容量等)
环境(environment):该刺激 在某些条件内发生。(系统设计时,编译时,构件时,运行时)
制品(artifact):某个制品 被激动,被刺激的对象,被人刺激的主体。(系统用户界面、平台或目标系统交互的系统)
响应(response):该响应是 在激励到达后所采取的行动。(查找架构所需要修改的位置,进行修改且不影响其他操作)
响应度量(measurement):应当能够以某种方式对其进行度量。(响应时候所做修改对系统其他模块产生的影响)
- 软件架构评估
前面介绍了软件质量,从质量方面开始对架构进行评估。
敏感点:为了实现某种特定的质量属性,一个或多个构件具有的特性。(只影响一个,比如安全)
权衡点:是影响多个质量属性的特性,是多个质量属性敏感点。(当影响多个,比如效率和安全)
风险点与非风险点,风险点可能引起风险因素。某些事可接受可行,则是非风险的。
软件架构评估在 软件架构设计之后,系统设计之前,目的为了是否能解决系统需求,但不单单为了解决系统需求。
三种架构评估方式:
- 基于调查问卷(检查表)方式:问卷调查。
- 基于度量方式:制定一些 定量指标 来度量架构,如代码行数。
- 基于场景的方式:
- 确定引用领域的功能和软件架构的结构之间的映射。(刺激)
- 用于体现待评估质量属性的场景。(环境,事件发生的环境)
- 分析软件架构对场景的支持程度。(架构响应刺激过程)
A是输入,C是输出,B则是真实场景。
基于场景的架构分析方法主要三个:
- SAAM
一种 非功能质量属性 的架构分析方法,是最早使用的方法。
- 特定目标,saam的目标对 描述应用程序属性的文档,验证基本的架构假设和原则。
- 质量属性,这一方法基本特点是把任何形式的质量属性都具体化场景,但 可修改性 是SAAM的主要质量属性。
- 架构描述,SAAM用于架构的最后版本,但早于详细设计,架构的描述形式被所有参与者理解。
- 功能、结构和分配 被定义为描述架构的三个主要方面。
- 方法活动,SAAM主要输入是 问题描述、需求申明和架构描述。
主要五个步骤 场景开发、架构描述、单个场景评价、场景交互和总体评价。
- ATAM(重点)
架构权衡分析法ATAM,让架构师明确如何权衡多个质量属性,参与者有评估小组、项目决策人和其他项目相关人。
四个主要活动领域:场景需求收集、体系结构视图和场景实现、属性模型构造和分析、(架构评审做一个)折中。
整个评估过程强调 以属性作为架构评估的核心概念。
在系统开发之前,对这些质量属性评价和折中。

描述阶段
- 首先描述ATAM方法。(类似宣读规则)
- 描述业务动机。
- 描述架构。
架构分析阶段
- 确认架构方法。
- 生成质量属性效用树(非常重要)
- 分析架构方法。
测试阶段:
- 讨论场景对场景进行分级。
- 分析架构方法。
- 描述评论结果。
相关文章:
架构评估-架构师之路(十二)
软件系统质量属性 软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。 质量属性 性能:指 系统的响应能力,如 响应时间,吞吐率。 设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度。 可靠…...
手写模拟SpringBoot核心流程(二):实现Tomcat和Jetty的切换
实现Tomcat和Jetty的切换 前言 上一篇文章我们聊到,SpringBoot中内置了web服务器,包括Tomcat、Jetty,并且实现了SpringBoot启动Tomcat的流程。 那么SpringBoot怎样自动切换成Jetty服务器呢? 接下来我们继续学习如何实现Tomcat…...
Python土力学与基础工程计算.PDF-土的三项组成
5.3 Python求解 Python 求解代码如下: 1. # 定义已知参数 2. G_s 2.7 # 比重 3. w 0.2 # 含水量 4. e 0.6 # 孔隙比 5. gamma_w 9.81 # 水的重度 6. 7. # 根据公式计算饱和度 8. S_r G_s * w / e 9. print("饱和度为", S_r) 10. 11.…...
危化安全生产信息化平台在煤化领域的应用
一、背景介绍 煤化工行业是一个集煤炭、石油、化工等多种产业于一体的综合性行业,其特点是工艺流程复杂、设备繁多、安全隐患大。近年来,随着煤化工行业的快速发展,安全生产问题日益凸显。为了有效提高危化安全生产水平,某煤化工…...
Linux(CentOS)运维脚本工具集合
使用说明 备份指定目录 # 备份指定目录文件到指定目录,备份文件名称为:备份目录最后一层目录"_"日期.tar.gz # 第一个参数:backdir 第二参数:备份文件保存目录 第三个参数:备份目录/文件 sh script.sh backdir /root/…...
【Java alibabahutool】JSON、Map、实体对象间的相互转换
首先要知道三者的互转关系,可以先将JSON理解成是String类型。这篇博文主要是记录阿里巴巴的JSONObject的两个方法。toJSONString()以及parseObject()方法。顺便巩固Map与实体对象的转换技巧。 引入依赖 <!-- 阿里巴巴 JSON转换 以下二选一即可 没有去细研究两者…...
按软件开发阶段的角度划分:单元测试、集成测试、系统测试、验收测试
1.单元测试(Unit Testing) 单元测试,又称模块测试。对软件的组成单位进行测试,其目的是检验软件基本组成单位的正确性。测试的对象是软件里测试的最小单位:模块。 测试阶段:编码后或者编码前(…...
【python】Leetcode(primer-dict-list)
文章目录 260. 只出现一次的数字 III(字典 / 位运算)136. 只出现一次的数字(字典)137. 只出现一次的数字 II(字典)169. 求众数(字典)229. 求众数 II(字典)200…...
网络安全(黑客)入门
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全…...
在CSS中,盒模型中的padding、border、margin是什么意思?
在CSS中,盒模型(Box Model)是用来描述和布局HTML元素的基本概念。它将每个HTML元素看作是一个矩形的盒子,这个盒子包括了内容(content)、内边距(padding)、边框(border&a…...
有线耳机插入电脑没声音
有线耳机插入电脑没声音 首先确保耳机和电脑都没问题,那就有可能是声音输出设备设置错误 右击任务栏的声音图标-打开声音设置-选择输出设备。...
【面试 反思】Retrofit源码与设计 7 连问
前言 在实际项目中往往是使用Retrofit来做网络请求工作。Retrofit采用RESTful风格,本质上只是对OkHttp进行封装,今天我们根据几个问题来进一步学习一下Retrofit的源码与设计思想。 1. 使用方法 直接看一下官方介绍的使用方法。 public final class S…...
flutter 雷达图
通过CustomPainter自定义雷达图 效果如下 主要代码 import package:flutter/material.dart; import dart:math; import dash_painter.dart; import model/charts_model.dart;class RadarChart extends StatelessWidget {final List<ChartModel> list;final double maxV…...
机器学习之损失函数(Loss Function)
损失函数(Loss Function)是机器学习和深度学习中的关键概念,它用于衡量模型的预测与实际目标之间的差异或误差。损失函数的选择对于模型的训练和性能评估至关重要,不同的任务和问题通常需要不同的损失函数。 以下是一些常见的损失…...
创邻科技张晨:图数据库,激活数据要素的新基建
“数据经济时代,数据要素产业链的各细分领域均蕴含机遇,图技术作为网络协同和数据智能的底层发动机,将深度掘金数字中国价值潜能”。 8月22日,在2023中国(南京)国际软件产品和信息服务交易博览会的信息技术…...
使用端口映射实现Spring Boot服务端接口的公网远程调试:详细配置与步骤解析
文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…...
stm32之点亮LED
今天,记录一下stm32如何点亮一个LED,程序本身十分简单,但主要是学习编程的格式。 led.h #ifndef _led_H #define _led_H#include "system.h"/* LED时钟端口、引脚定义 */ #define LED1_PORT GPIOB #define LED1_PIN GPIO_Pin_5 #d…...
SA8000认证的难点及注意事项
SA8000认证是什么? SA8000即“社会责任标准”,是Social Accountability 8000的英文简称,由社会责任国际组织(SAI)制定与执行,是全球首个道德规范国际标准。自1997年问世以来,它创建了一个衡量社会责任的共同语言&#…...
Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤
基于微服务JavaSpring Cloud Vue UniApp MySql实现的智慧工地云平台源码 智慧工地是指利用云计算、大数据、物联网、移动互联网、人工智能等技术手段,为建筑施工现场提供智能硬件及物联网平台的解决方案,以实现建筑工地的实时化、可视化、多元化、智慧化…...
告别数字化系统“物理叠加”,华为云推动智慧门店价值跃迁
文|智能相对论 作者|叶远风 有大屏幕滚动播放广告; 有人脸识别系统让消费者自助结账; 有订单管理系统综合分析一段时间内总体经营情况; 有全门店监控直连总部机房; …… 以搭载数字化系统的硬件设备为表面特征的智慧门店&a…...
《永恒战士2-无双战神》无限金币版(提供apk下载)安卓Android逆向记录学习-Deepseek-AI辅助
《永恒战士2-无双战神》无限金币版(提供apk下载)安卓Android逆向记录学习-Deepseek-AI辅助 不知道会不会有人来技术论坛找一个10几年前的游戏安装包 我是前段时间,突然想起来这个游戏,上网搜,网上都说有 那我就去找&am…...
SiameseUIE与LangChain集成:构建智能问答系统
SiameseUIE与LangChain集成:构建智能问答系统 你是不是也遇到过这种情况?面对一份几十页的行业报告、一堆杂乱的技术文档,或者一个复杂的客户案例,想快速找到某个具体问题的答案,却不得不花大量时间从头到尾翻阅。传统…...
go-zero 数据库自动化:从 SQL 到 CRUD 的生产级实践指南
go-zero 数据库自动化:从 SQL 到 CRUD 的生产级实践指南 一、先说结论:数据库自动化不是“偷懒”,而是工程标准化 在中大型后端系统里,数据库访问层往往有两个典型矛盾: 业务迭代要求快,表结构一变,CRUD、缓存、查询接口都得跟着改。 生产环境要求稳,任何一处 SQL、事…...
py每日spider案例之某website影视链m3u8获取(jsjiami.com.v5 混淆和aes算法 难度中等)
逆向参数: 逆向代码: CryptoJS = require(crypto-js);function decrypt(_0x11b1d8) {try {...
【TTS 语音】合成技术解析与开源方案全景
文章目录TTS 语音合成技术解析与开源方案全景一、引言二、TTS 技术架构演进2.1 三代架构对比2.2 关键技术组件解析三、主流开源方案技术解析3.1 Kokoro-82M3.2 F5-TTS3.3 CosyVoice 系列(阿里巴巴 FunAudioLLM)3.4 Spark-TTS(0.5B)…...
Python可视化进阶:从Matplotlib到交互式图表
Python可视化进阶:从Matplotlib到交互式图表一张好图胜过千言万语,但大多数开发者却止步于基础的折线图和柱状图在数据驱动的时代,将复杂数据转化为清晰直观的可视化图表已成为每位开发者的必备技能。你是否曾遇到过这样的困境:花…...
告别重训练!用Upsample Anything (UPA) 给SAM、DINOv2的特征图无损放大,实测教程
告别重训练!用Upsample Anything (UPA) 给SAM、DINOv2的特征图无损放大,实测教程 视觉基础模型(如SAM、DINOv2)在提取图像特征时,通常会输出低分辨率的特征图。这对于需要像素级精度的下游任务(如分割、检测…...
Keil5环境下STM32F103ZET6工程创建与软件仿真全攻略
1. Keil5开发环境与STM32F103ZET6简介 STM32F103ZET6是STMicroelectronics推出的一款基于ARM Cortex-M3内核的微控制器,具有72MHz主频、512KB Flash和64KB SRAM,广泛应用于工业控制、消费电子等领域。Keil MDK(Microcontroller Development K…...
Wand-Enhancer深度解析:解锁WeMod高级功能的双轨解决方案
Wand-Enhancer深度解析:解锁WeMod高级功能的双轨解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 你是否厌倦了WeMod的高级功能限制&…...
别再怕环路!手把手教你用锐捷RG-IS2700G交换机配置ERPS环网(附完整命令)
锐捷RG-IS2700G交换机ERPS环网实战:从零搭建高可靠企业网络 第一次接手企业园区网核心交换机的运维工作时,看到拓扑图上那个醒目的环形结构,我的手指在键盘上方悬停了整整十分钟——毕竟谁都不想成为"那个让全公司断网的新人"。直到…...
