文章目录

  • 1.软件质量属性
  • 2.架构评价方法
    • 2.1SAAM
    • 2.2ATAM
  • 3.作者答疑

1.软件质量属性

系统架构评估中普遍关注的质量属性:

  1. 性能,它是指系统的响应能力,即需要多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件个数。
  2. 可靠性,它是软件系统在应用或者系统错误面前,在意外或者错误使用的情况下维持软件系统的功能性的基本能力。
  3. 可用性,它是系统能够正常运行的时间比例。
  4. 安全性,它是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或者拒绝服务的能力。
  5. 可修改性,它是指能够快速以较高的性能价格比对系统进行变更的能力,包括可维护性、可扩展性、结构重构、可移植性。
  6. 功能性,它是系统所能完成所期望的工作的能力。
  7. 可变性,它是指体系结构经扩充或变更而成为新体系结构的能力。
  8. 互操作性,它是指作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。
  • 可用性:保持稳定态的时长。
  • 稳定性:抵御故障的能力。
  • 可靠性:故障的频率。
  • 连续性:恢复能力。

2.架构评价方法

2.1SAAM

SAAM (Software Architecture Analysis Method)是卡耐基梅隆大学软件工程研究所(SEI at CMU)的Kazman等人于1993年提出的一种非功能质量属性的体系结构分析方法,是最早形成文档并得到广泛使用的软件体系结构分析方法。
如下6个步骤:

  1. 形成场景
  2. 描述体系结构
  3. 对场景进行分类和确定优先级
  4. 对间接场景进行单个评估
  5. 评估场景的相互作用
  6. 形成总体评价

下面分别给大家说明一下。

1.形成场景
指的是风险承担者们集中在一起,集体讨论,提出一个个系统需求场景。记录人员把这些场景记录在册,形成文档的过程。

2.描述体系结构
指的是体现结构设计师,对待评估的体系结构进行适当的描述,包括静态属性和动态特征,可以用自然语言也可以用形式化手段,以让参加评估的所有人员都能充分理解。
这一步骤和上一个形成场景的步骤可以合并在一起,重复进行多次。

3.对场景进行分类和确定优先级
系统可分为直接场景和间接场景,直接场景指的是本体系结构可以直接支持的场景,即不需要对体系结构做任何修改即可直接实现。
另外一种间接场景则是需要对现有体系结构做些更改才能支持的场景。
最后用投票的方法,确定间接场景的重要性优先级,以便大家将有限的时间花在最重要的事情上。

4.对间接场景进行单个评估
就是将选出来的重要场景与体系结构描述对应起来。体系结构设计师具体说明体系结构需要做哪些修改变更才能适用间接场景的要求,并估计这些变更的代价。
最后形成一份全部场景的总结性列表。
列表字段包括:场景编号、场景描述、直接/间接、需要做的更改、更改/新增构建数量、更改工作量估计

5.评估场景的相互作用
当两个或多个间接场景需要修改到同一个构建时,这时场景就在这个构件上出现了相互作用,需要特别评估。
出现这种情况,往往是设计方案中功能分配不合理,或者是设计文档未能充分说明体系结构。

6.形成总体评价
最后,评估人员对场景和场景间的相互作用做一个总体的权衡和评价。通过各个场景权重与分值得出一个总体的评价,从多个体系结构,或者一个体系结构的不同设计方案选择出一个最优的方案。

2.2ATAM

CMU/SEI(卡梅隆大学软件工程协会)提出了一套架构权衡分析方法,Architachture Tradeoff Analysis Method,简称ATAM。
传统软件架构评估方法按评估形式,一般分为三种:一是调查问卷法,即直接请对系统架构了解的专家学者对系统架构做出主观评估。二是度量法,即将软件系统架构完全量化,通过一些客观的数字指标来评估架构的好坏。三是场景评估法,即挑选出重要的系统使用场景(一系列有序的使用或修改系统的步骤,即系统涉众如何使用系统的 ),根据不同场景中各架构的表现分别作评估,ATAM属于场景评估法,主客观程度介于前面两种方法之间。
搞清楚这个问题之前,我们先来了解三个概念。

一、软件质量属性

软件质量属性说的是我们评估软件架构,到底评估它的什么特性,一般有如下几个,
性能:指系统的响应能力,即系统执行某个特定事务所需要的时间。
可靠性:即在意外或错误使用的情况下,维持软件系统的功能特性的能力。一般包括容错和健壮性两个方面的能力。
可用性:是系统能够正常运行的时间比例,和可靠性相比,可用性除了体现出错概率外,还体现出错后恢复正常的速度上。
安全性:是指阻止非授权用户使用的企图或拒绝服务的能力。又可分为机密性、完整性、不可否认性及可控性。
可修改性:是指能够快速地以较高的性价比对系统进行变更的能力。包括可维护性,可扩展性,结构重组和可移植性。

二、敏感点和权衡点
敏感点和权衡点都是在软件架构中所做的关键决策,不同的是,敏感点决策只影响一个软件质量属性,而权衡点则同时影响多个质量属性,有时不同属性间还会互相冲突,比如选择不同的加密方式同时影响性能和安全性,所以需要权衡。

三、风险承担者
风险承担者是指那些关心软件架构,个人利益受软件架构好坏影响的人,在项目管理领域也称为项目干系人或涉众。这照些人整体上又可以分为系统的生产者和系统的消费者。生产者包括架构师,开发人员,维护人员,测试人员等;消费者包括客户,最终用户等。

ATAM通过理解体系结构方法来分析体系结构,评估过程分9个步骤
1- 描述ATAM方法
即评估小组负责人向参加会议的风险承担者介绍ATAM评估方法,让大家清楚接下来要做什么,每个人的角色和任务。

2- 描述业务动机
项目经理从业务角度介绍系统的概况,一般包括业务环境,背景,业务约束条件,技术约束,质量属性需求等内容。

3- 描述体系结构
首席设计师或设计小组对体系结构进行详略适当的介绍。包括技术约束,与本统交互的其他系统,用以满足质量属性要求的体系结构方法(功能,模块,进程,硬件)。

4- 确定体系结构方法
由设计师确定体系结构方法,由分析小组捕获,但不进行分析。

5- 生成质量属性效用树
评估小组,设计小组,管理人员和客户代表一起确定系统最重要的质量属性目标,并对这些目标设置优先级和细化。

6- 分析体系结构方法
7- 讨论分级场景
8- 分析体系结构方法
9- 描述评估结果

3.作者答疑


  如有疑问,请留言。

软件架构设计师-软件质量属性-架构评价方法-SAAM-ATAM相关推荐

  1. 系统机构设计师 - 软件质量属性

    架构设计风险 潜在的 隐藏的 架构决策导致的隐患 敏感点 一个或多个构件的质量属性,输入方差小时,输出方差很大 权衡点 影响多个质量属性,且这些质量属性都是敏感点的 质量属性.

  2. 系统架构设计师如何进行架构设计

    9.1 软件架构概述 9.1.1 软件架构的定义 定义1:软件或计算机系统的软件架构是该系统的一个(或多个)结构,而结构有软件元素.元素的外部可见属性及他们之间的关系组成. 定义2:软件架构为软件系统 ...

  3. 浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

    我们工作中一直强调要做架构设计.系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计.前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享 ...

  4. 软件架构设计杂记: 分层架构 与 PO、VO、DTO、BO、POJO、BO/DO、DAO

    软件架构设计杂记: 分层架构 与 PO.VO.DTO.BO.POJO.BO/DO.DAO 原创: 陈光剑 Kotlin 开发者社区 前天 某位计算机大师说过: 计算机科学领域任何问题,都可以间接的通过 ...

  5. 音视频技术:视频质量评价方法简介 1

    视频质量评估(VQA)一直是个很活跃的研究领域,原因其一是业内一直缺少一种统一且准确的评估标准,其二是影响视频质量的因素过多,且包含很多主观因素,难以客观.定量地评价.经过这么多年的研究,已经诞生了非 ...

  6. matlab杜哈梅尔积分,非平稳地震作用下桥梁系统碰撞间隙宽度的概率评价方法与流程...

    本发明涉及土木工程领域的桥梁碰撞间隙设置宽度的评估,特别涉及非平 稳地震作用下桥梁系统碰撞间隙宽度的概率评价方法,具体地说是基于非平稳 随机振动的虚拟激励法.精细积分法和矩阵运算方法的桥梁系统概率的计 ...

  7. 纵览神经架构搜索方法

    从谷歌渐进式的架构搜索到 CMU 的可微架构搜索,利用神经网络自动搭建不同的神经网络架构已经受到广泛的关注.最近弗莱堡大学的研究者发表了一篇论文纵览不同的神经架构搜索方法,他们从神经网络的搜索空间.搜 ...

  8. 流媒体视频质量评价(单刺激连续质量评价方法)

    2019独角兽企业重金招聘Python工程师标准>>> Stefan Winkler等人在论文<Video Quality Evaluation for Internet St ...

  9. 软件质量属性的两个模型(Software Quality Attributes)—中英文对照

    本文的目的是定义术语"软件质量属性",并将该术语放在SQA和软件过程改进(SPI)的上下文中. (The purpose of this article is to define ...

最新文章

  1. [OI]Noip 2018 题解总结(普及)
  2. GAN作用——在我做安全的看来,就是做数据拟合、数据增强
  3. CTFshow php特性 web104
  4. 《慕课React入门》总结
  5. 一步一步教你抓数据——用.net精确提取网站数据的通用方法 [转]
  6. Python更改数据类型——astype()方法和to_numeric()函数
  7. Oracle/PLSQL CURSOR FOR Loop
  8. 【Kafka】Flink kafka TimeoutException Timeout expired while fetching topic metadata
  9. git pull 报错:git - error: RPC failed curl 18 transfer closed with outstanding read data remaining 解决
  10. 量化策略回测ATRRSI
  11. 水墨流动生太极,四式''拳诀''展存储
  12. SpringBoot常见面试题总结一
  13. 一个本科生学习嵌入式的心得~
  14. 如何检查电脑端安装的Flash Activex 控件版本?
  15. 个人网站选择支付宝api
  16. NTVDM遇到一个硬错误
  17. matlab logpolar,GitHub - luxinjin/polar-code: matlab simulation for polar code
  18. HTML5+CSS3小实例:菜单栏图标悬停效果
  19. jq删除,清空子元素和恢复的方法
  20. 基于Java毕业设计研究生推免系统源码+系统+mysql+lw文档+部署软件

热门文章

  1. js时间戳​(timestamp)​与时间字符串相互转换
  2. 7-3 jmu-JavaPython-统计文字中的单词数量并按出现次数排序
  3. workon找不到文件!!!
  4. 【gojs中常用的API有哪些】
  5. 催人奋进的10个故事 !!!
  6. 邮件地址的正则表达式
  7. 第四章 初始化D3D
  8. 爬虫实战| 1宅男女神(秀人网专区)---让人心情愉悦的图片爬取 !
  9. mysql怎么连接别人的数据库
  10. Acwing 第 89 场周赛