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

  • 软件系统质量属性

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

质量属性

  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. 描述评论结果。
相关推荐
群联云防护小杜20 分钟前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
PyAIGCMaster42 分钟前
ubuntu装P104驱动
linux·运维·ubuntu
奈何不吃鱼42 分钟前
【Linux】ubuntu依赖安装的各种问题汇总
linux·运维·服务器
爱码小白1 小时前
网络编程(王铭东老师)笔记
服务器·网络·笔记
zzzhpzhpzzz1 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
蜜獾云1 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
陌北v11 小时前
Docker Compose 配置指南
运维·docker·容器·docker-compose
柒烨带你飞1 小时前
路由器转发数据报的封装过程
网络·智能路由器
只会copy的搬运工1 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins
娶不到胡一菲的汪大东2 小时前
Ubuntu概述
linux·运维·ubuntu