架构评估-架构师之路(十二)
- 软件系统质量属性
软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。
质量属性
- 性能:指 系统的响应能力,如 响应时间,吞吐率。
设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度。
- 可靠性:在意外或错误使用情况下维持软件系统功能特征。如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…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...