架构设计笔记-8-系统质量属性与架构评估

news2025/1/9 14:50:52

目录

知识要点

案例分析

1.质量属性

2.非功能性需求

3.质量属性效用树,风险点/敏感点/权衡点,设计策略

4.管道过滤器/仓库风格,质量属性

5.质量属性效用树

6.质量属性

7.质量属性效用树

8.质量属性效用树,风险点/敏感点/权衡点

9.质量属性效用树

10.质量属性

11.质量属性效用树

12.质量属性

13.Utility tree,风险点/权衡点/敏感点

论文

1.论软件系统架构评估及其应用


知识要点

正确识别风险点、非风险点、敏感点和权衡点是进行软件架构评价的关键步骤,其中敏感点是实现一个特定质量属性的关键特征,该特征为一个或多个软件构件所共有。权衡点会影响一个或多个属性,并对于多个属性来说都是敏感点。基于该定义,可以看出“改变加密的级别可能会对安全性和性能都产生显著的影响” 正是一个对系统权衡点的描述。

基于场景的架构分析方法(Scenarios-based Architecture Analysis Method,SAAM)是卡耐基梅隆大学软件工程研究所的 Kazman 等人于 1983 年提出的一种非功能质量属性的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法。SAAM 的主要输入问题描述、需求说明和架构描述;其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估

实现质量属性的一般策略

  1. 可用性:错误检测(Ping/Echo,命令/响应、心跳、异常处理)、错误恢复(表决(通过冗余构件与表决器相联)、主动冗余、被动冗余、备件、状态再同步、检查点/回滚)、错误预防(从服务中删除、事务(事务保证一致性)、进程监视器等)。
  2. 安全性入侵检测、用户认证、用户授权追踪审计、限制访问;
  3. 可修改性:运行时注册;接口、实现分离;信息隐藏
  4. 可靠性:主动冗余;
  5. 性能队列调度,优先级队列、增加计算资源、减少计算开销、引入并发机制采用资源调度等;
  6. 可测试性:记录/回放。 

ATAM 是在SAAM基础之上发展起来的,主要包括场景和需求收集、架构视图和场景实现、属性模型构造和分析、折中等 4 个阶段。ATAM 方法要求在系统开发之前,首先对这些质量属性进行评价和折中

ATAM 方法采用效用树(Utility tree)这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)

架构模式是软件设计中的高层决策,例如 C/S 结构就属于架构模式,架构模式反映了开发软件系统过程中所作的基本设计决策

设计模式主要关注软件系统的设计,与具体的实现语言无关;

惯用法则是实现时通过某种特定的程序设计语言来描述构件与构件之间的关系,例如引用-计数就是 C++语言中的一种惯用法。

架构评估的方式主要有三种:基于调查问卷方式,基于场景的方式,基于度量的方式。

在进行体系结构(架构)评估时,一般首先要精确地得出具体的质量目标,并以之作为判定该体系结构优劣的标准。我们把为得出这些目标而采用的机制叫做场景。场景是从风险承担者的角度对与系统的交互的简短描述。在体系结构评估中,一般采用刺激、环境和响应三方面来对场景进行描述。

  1. 刺激是场景中解释或描述风险承担者怎样引发与系统的交互部分。例如:用户可能会激发某个功能、维护可能会做某个更改、测试人员可能会执行某种测试,这些都属于对场景的刺激。
  2. 环境描述的是刺激发生时的情况。例如:当前系统处于什么状态?有什么特殊的约束条件?系统的负载是否很大?某个网络通道是否出现了阻塞等。
  3. 响应是指系统是如何通过体系结构对刺激作出反应的。例如:用户所要求的功能是否得到满足?维护人员的修改是否成功?测试人员的测试是否成功等。 

MVP 是从经典的模式 MVC 演变而来,Presenter 负责逻辑的处理,Model 提供数据,View 负责显示。当然 MVP 与 MVC 也有一些显著的区别,MVC 模式中元素之间“混乱”的交互主要体现在允许 View 和 Model 直接进行“交流”,这在 MVP 模式中是不允许的。 

 

案例分析

1.质量属性

2.非功能性需求

3.质量属性效用树,风险点/敏感点/权衡点,设计策略

4.管道过滤器/仓库风格,质量属性

5.质量属性效用树

6.质量属性

7.质量属性效用树

8.质量属性效用树,风险点/敏感点/权衡点

9.质量属性效用树

10.质量属性

11.质量属性效用树

12.质量属性

13.Utility tree,风险点/权衡点/敏感点

​​​​​​​

 

论文

1.论软件系统架构评估及其应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

架构师备考-背诵精华(架构开发方法)

软件架构风格 类型 子类型 说明 数据流风格 批处理 每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,而且数据必须是完整的,以整体的方式传递。 管道过滤器 把系统分解为几个序贯的处理步骤,这些步骤之间…

目标检测系统【环境详细配置过程】(CPU版本)

(如果你使用的是笔记本电脑,没有比较好的GPU,可以配置CPU运行环境) 链接:上百种【基于YOLOv8/v10/v11的目标检测系统】目录(pythonpyside6界面系统源码可训练的数据集也完成的训练模型) 1.安装…

leetcode热题100.编辑距离

题目 72. 编辑距离 - 力扣(LeetCode) 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符删除一个字符替换一个字符 示例 1: 输…

Spring Web MVC快速入门:掌握Java Web开发基础

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词:桃李春风一杯酒,江湖夜雨十年灯🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注&#x1f4…

基于Arduino的红外遥控智能小车实现方法

一、简介 使用红外遥控器实现智能小车前进、后退、左转、右转、停止运动五种动作。 二、控制方法 使用红外遥控器遥控智能小车运行之前,需要使用红外线接收电路来读取红外线遥控器的按键代码,将获取的按键代码定义为控制智能小车前进、后退、左转、右…

Web Socket 使用详解

在信息爆炸的时代,用户对网页的期待早已超越了静态内容的展示。实时聊天、股票报价、协同编辑等功能的实现,都离不开服务器与客户端之间持续、高效的数据交互。传统的HTTP请求-响应模型难以满足这种需求,而WebSocket的出现,为构建…

个人健康系统|个人健康数据管理系统|基于小程序+java的个人健康数据管理系统设计与实现(源码+数据库+文档)

个人健康数据管理系统 目录 基于小程序java的个人健康数据管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师…

C语言刷题 LeetCode 删除单链表的重复节点 双指针法

题目要求 链表结构:题目中提到的是未排序的链表,链表是由一系列节点组成的,每个节点包含一个值(数据)和一个指向下一个节点的指针。去重:我们需要遍历链表,删除所有重复的节点,只保…

开源新生活,社区齐乐活:COSCon'24 社区合作和开源集市招募中,诚邀广大社区参与!...

一年一度的开源盛会,COSCon24第九届中国开源年会暨开源社10周年嘉年华,将于11月2-3日,在北京•中关村国家自主创新示范区展示中心召开!本次大会的主题是:「Open Source,Open Life | 开源新生活」&#xff0…

react antd redux 全局状态管理 解决修改菜单状态 同步刷新左侧菜单

npm i react-redux1.src新建两个文件 globalState.js 全局状态定义 store.js 全局存储定义 2.globalState.js import { createSlice } from "reduxjs/toolkit";export const globalState createSlice({name: "globalState",initialState: { data: {} },r…

Qt 学习第 天:QPainter类

一、先创建一个widget窗口 二、包含头文件 #include <QPainter> #include <QFont> 三、在widget.h中声明paintEvent函数 使用画家类在窗口中画图, 操作必须在paintEvent函数中完成 #ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { cla…

Spring Boot框架下的知识管理自动化

3系统分析 3.1可行性分析 通过对本知识管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本知识管理系统采用JAVA作为开发语言&#xff0c;Spring Boot框…

C语言题目练习3

这一篇博客也来看看和链表有关的题目~ 反转链表 反转链表&#xff1a; https://leetcode.cn/problems/reverse-linked-list/description/ 这个题目已经十分清晰了&#xff0c;那我们可以怎么做呢&#xff1f; 结合前面单链表的知识点&#xff0c;我们很容易可以想到第一个思路…

RTC -

RTC 目录 RTC 回顾 RTC 如何实现RTC制作一个时钟日历 代码编写 rtc.c完整代码 模块开发的步骤&#xff1a; 1、找文档 2、 在文档里面找通信方式&#xff0c;通信过程&#xff08;协议&#xff09; 3、代码> -- 前面学的是模块的开发&#xff0c;串口类&#xff0c;I…

决策树和集成学习的概念以及部分推导

一、决策树 1、概述 决策树是一种树形结构&#xff0c;树中每个内部节点表示一个特征上的判断&#xff0c;每个分支代表一个判断结果的输出&#xff0c;每个叶子节点代表一种分类结果 决策树的建立过程&#xff1a; 特征选择&#xff1a;选择有较强分类能力的特征决策树生成…

【论文阅读】SRCNN

学习资料 论文题目&#xff1a;Learning a Deep Convolutional Network for Image Super-Resolution&#xff08;学习深度卷积网络用于图像超分辨率&#xff09;论文地址&#xff1a;link.springer.com/content/pdf/10.1007/978-3-319-10593-2_13.pdf代码&#xff1a;作者提出的…

Java 一维数组作为函数参数

//一维数组的引用 #define SIZE 5 void input(int a[], int len); void output(int a[], int len);//函数的声明 int main(void) { int i 0; int arr[SIZE] { 86,85,85,896,45 };//同理五个数据只是偶然&#xff0c;可能会更多 //输入 input(arr, SIZE); …

目标检测系统操作说明【用户使用指南】(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

1.链接&#xff1a;上百种【基于YOLOv8/v10/v11的目标检测系统】目录&#xff08;pythonpyside6界面系统源码可训练的数据集也完成的训练模型&#xff09; 2.目标检测系统【环境搭建过程】&#xff08;GPU版本&#xff09; 3.目标检测系统【环境详细配置过程】&#xff08;CP…

241012-绿联UGOSPro-在仅无线WLAN网络条件下添加虚拟机网络

A. 新建NAT模式的虚拟子网 虚拟机-管理-网络管理-添加网络-如下设置 B. 虚拟机网络选择 C. 不同网络的对比 support.ugnas.com Virtio、e1000和rtl8139有什么区别&#xff0c;在创建虚拟机时&#xff0c;我应该如何选择&#xff1f; Virtio、e1000和rtl8139是三种不同的虚拟…

[论文阅读]SCOTT: Self-Consistent Chain-of-Thought Distillation

中文译名&#xff1a;SCOTT: 思维链一致性蒸馏 会议&#xff1a;Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) 链接&#xff1a;SCOTT: Self-Consistent Chain-of-Thought Distillation - ACL Antholo…