当前位置: 首页 > news >正文

架构评估-架构师之路(十二)

  • 软件系统质量属性

软件系统质量熟悉分为 开发期质量属性 和 运行期质量属性。

质量属性

  1. 性能:指 系统的响应能力,如 响应时间,吞吐率。

设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度

  1. 可靠性:在意外或错误使用情况下维持软件系统功能特征。如MTTF、MTBF、MTTR。

MTTF:平均无故障时间。

MTBF:平均故障间隔时间。

MTTR:平均故障修复时间。

设计策略:心跳、PING/Echo、冗余、选举

  1. 可用性:系统正常运行的时刻。如 故障间隔时间

设计策略:心跳、PING/Echo、冗余、选举

  1. 安全性:指 阻止非授权用户使用企业或拒绝服务的能力。 如 保密性、完整性、不可抵赖性、可控性。

设计策略:入侵检测、用户认证、用户授权、追踪审计

  1. 可修改性:以较高性能价格比对系统进行更改。

设计策略:接口-实现分离、抽象、信息隐藏。

  1. 功能性:系统所能完成所期望的工作和能力。
  2. 可变性:指 体系结构经扩充或变更而成为新系统结构的能力。(可扩展)
  3. 互操作性:作为系统 组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用

  • 质量属性场景

质量属性场景是一种 面向特定质量属性的需求。六个部分组成。

刺激源(source):指 某个生成该刺激的实体。(人、计算机系统或者任何其他刺激器)

刺激(stimulus):是指 当刺激达到系统时需要考虑的条件。(希望增加、删除、修改、改动功能、质量属性、容量等)

环境(environment):该刺激 在某些条件内发生。(系统设计时,编译时,构件时,运行时)

制品(artifact):某个制品 被激动,被刺激的对象,被人刺激的主体。(系统用户界面、平台或目标系统交互的系统)

响应(response):该响应是 在激励到达后所采取的行动。(查找架构所需要修改的位置,进行修改且不影响其他操作)

响应度量(measurement):应当能够以某种方式对其进行度量。(响应时候所做修改对系统其他模块产生的影响)

  • 软件架构评估

前面介绍了软件质量,从质量方面开始对架构进行评估。

敏感点:为了实现某种特定的质量属性,一个或多个构件具有的特性。(只影响一个,比如安全)

权衡点:是影响多个质量属性的特性,是多个质量属性敏感点。(当影响多个,比如效率和安全)

风险点与非风险点,风险点可能引起风险因素。某些事可接受可行,则是非风险的。

软件架构评估在 软件架构设计之后,系统设计之前,目的为了是否能解决系统需求,但不单单为了解决系统需求。

三种架构评估方式:

  1. 基于调查问卷(检查表)方式:问卷调查。
  2. 基于度量方式:制定一些 定量指标 来度量架构,如代码行数。
  3. 基于场景的方式:
  1. 确定引用领域的功能和软件架构的结构之间的映射。(刺激)
  2. 用于体现待评估质量属性的场景。(环境,事件发生的环境)
  3. 分析软件架构对场景的支持程度。(架构响应刺激过程)

A是输入,C是输出,B则是真实场景。

基于场景的架构分析方法主要三个:

  1. SAAM

一种 非功能质量属性 的架构分析方法,是最早使用的方法。

  1. 特定目标,saam的目标对 描述应用程序属性的文档,验证基本的架构假设和原则。
  2. 质量属性,这一方法基本特点是把任何形式的质量属性都具体化场景,但 可修改性 是SAAM的主要质量属性。
  3. 架构描述,SAAM用于架构的最后版本,但早于详细设计,架构的描述形式被所有参与者理解。
  4. 功能、结构和分配 被定义为描述架构的三个主要方面。
  5. 方法活动,SAAM主要输入是 问题描述、需求申明和架构描述。

主要五个步骤 场景开发、架构描述、单个场景评价、场景交互和总体评价

  1. ATAM(重点)

架构权衡分析法ATAM,让架构师明确如何权衡多个质量属性,参与者有评估小组、项目决策人和其他项目相关人

四个主要活动领域:场景需求收集、体系结构视图和场景实现、属性模型构造和分析、(架构评审做一个)折中

整个评估过程强调 以属性作为架构评估的核心概念

在系统开发之前,对这些质量属性评价和折中。

 

描述阶段

  1. 首先描述ATAM方法。(类似宣读规则)
  2. 描述业务动机。
  3. 描述架构。

架构分析阶段

  1. 确认架构方法。
  2. 生成质量属性效用树(非常重要)
  3. 分析架构方法。

测试阶段:

  1. 讨论场景对场景进行分级。
  2. 分析架构方法。
  3. 描述评论结果。

http://www.lryc.cn/news/138237.html

相关文章:

  • 手写模拟SpringBoot核心流程(二):实现Tomcat和Jetty的切换
  • Python土力学与基础工程计算.PDF-土的三项组成
  • 危化安全生产信息化平台在煤化领域的应用
  • Linux(CentOS)运维脚本工具集合
  • 【Java alibabahutool】JSON、Map、实体对象间的相互转换
  • 按软件开发阶段的角度划分:单元测试、集成测试、系统测试、验收测试
  • 【python】Leetcode(primer-dict-list)
  • 网络安全(黑客)入门
  • 在CSS中,盒模型中的padding、border、margin是什么意思?
  • 有线耳机插入电脑没声音
  • 【面试 反思】Retrofit源码与设计 7 连问
  • flutter 雷达图
  • 机器学习之损失函数(Loss Function)
  • 创邻科技张晨:图数据库,激活数据要素的新基建
  • 使用端口映射实现Spring Boot服务端接口的公网远程调试:详细配置与步骤解析
  • stm32之点亮LED
  • SA8000认证的难点及注意事项
  • Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤
  • 告别数字化系统“物理叠加”,华为云推动智慧门店价值跃迁
  • k8s 常用命令(四)
  • 大语言模型的分布式训练
  • 【JavaEE】Spring全家桶实现AOP-统一处理
  • HQL解决连续三天登陆问题
  • (一)Docker简介(一篇足以)
  • RK3568 安卓源码编译
  • 第4篇:vscode+platformio搭建esp32 arduino开发环境
  • 2023前端面试笔记 —— CSS3
  • iOS 如何对整张图分别局部磨砂,并完全贴合
  • Packet_Tracer的使用
  • WPF如果未定义绑定的属性,程序如何处理