软件架构评估

软件架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它也可以灵活地运用于对软件架构进行评审等工作中。

1 软件架构评估的方法

    业界已开发出多种软件架构评估的方法,按基于的技术手段来看,可以分为三类:基于调查问卷或检查表的方式、基于场景的方式和基于度量的方式。

(1)基于调查问卷或检查表的方式:该方式的关键是要设计好问卷或检查表,它充分利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于评估人员的主观推断。

(2)基于场景的方式:基于场景的方式由 SEI  首先提出并应用在架构权衡分析法(Architecture Tradeoff Analysis Method,ATAM)和软件架构分析方法(Software Architecture Analysis Method,SAAM)中。它是通过分析软件架构对场景(也就是对系统的使用或修改活动)的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。下节将对ATAM 进行重点介绍。

(3)基于度量的方式:它是建立在软件架构度量的基础上的,涉及三个基本活动,首先需要建立质量属性和度量之间的映射原则,即确定怎样从度量结果推出系统具有什么样的质量属性;然后从软件架构文档中获取度量信息;最后根据映射原则分析推导出系统的质量属性。它能提供更为客观和量化的质量评估,但它对评估人员及其使用的技术有较高的要求。ATAM 中也使用了度量的思想(度量效用)。

2 架构的权衡分析法

从技术角度对软件架构进行评估,旨在通过分析来预见软件的质量;通过分析来创建、选择、评估与比较不同的架构。例如,Kazman 等人在 2000 年提出的架构的 ATAM 方法。 ATAM 方法不但能够揭示架构如何满足特定的质量需求(例如,性能和可修改性),而且还提供了分析这些质量需求之间交互作用的方法。使用 ATAM 方法评价一个软件架构的目的是理解架构设计满足系统质量需求的结果。

ATAM 产生如下结果。

(1)一个简洁的架构表述:ATAM  的一个要求是在一小时内表述架构,这样就得到了一个简洁、可理解的、面向普通项目关系人的架构表述。它是从架构文档中提炼形成的。

(2)表述清楚的业务目标。

(3)用场景集合捕获质量需求。

(4)架构决策到质量需求的映射。

(5)所确定的敏感点和权衡点集合:这个集合是一些对一个或多个质量属性具有显著影响的架构决策。如:备份数据库就是这样一个架构决策,它对可靠性产生正面影响,而对系统性能产生负面影响,因此需要进行权衡。

(6)有风险决策和无风险决策。

(7)风险主题的集合。找到这些风险主题旨在采取相应的措施。

(8)产生一些附属结果。评估过程形成的文档(经受住了评估的考验)可以作为经验保留下来。

(9)还产生一些无形结果,如能够使项目关系人产生“团队感”,提供了一个交流平台和沟通渠道,使大家更好地理解架构(优势及弱点)。

ATAM 的 9 个步骤如下。

(1)ATAM 方法的表述:评估负责人向参加会议的项目代表介绍 ATAM(简要描述 ATAM 步骤和评估的结果)。

(2)商业动机的表述。项目决策者从商业角度介绍系统的概况。

(3)架构的表述。对架构进行详略适当的介绍。设计师要描述用来满足需求的架构方法或模式,还应描述技术约束条件及与其他系统的交互等。

(4)对架构方法进行分类。通过研究架构文档及倾听上一步的表述,了解系统使用的架构模式和方法(进行明确命名)。

(5)生成质量属性效用树。可以选取这样一棵树:根——质量属性——属性求精(细分)——场景(叶)。修剪这棵树,保留重要场景(不超过 50 个),再对场景按重要性给定优先级(用 H/M/L 的形式),再按场景实现的难易度来确定优先级(用 H/M/L 的形式),这样对所选定的每个场景就有一个优先级对(重要度,难易度),如(H,L)表示该场景重要且易实现。

(6)分析架构方法。评估小组按优先级对上述效用树的场景进行分析(小组成员提问,设计师回答、解释),探查实现场景的架构方法。评估小组把相关架构决策编成文档,确定其有风险决策、无风险决策、敏感点、权衡点,并对其进行分类(分别用表格列出)。

(7)集体讨论并确定场景的优先级。由于项目关系人的不同角色及所关心的场景不一致,因此,应鼓励项目关系人考虑效用树中尚未分析过的场景。集体讨论后,可通过投票的方式获得各场景的优先级。通过把集体讨论确定了优先级的一组场景与效用树中的那组场景进行比较,能发现设计师所想的与项目关系人实际所要的是否存在差距,这一差距是否导致风险。

(8)分析架构方法。类似于第 6 步,这时,评估小组引导设计师实现在第 7 步中得到的优先级最高的场景。

(9)结果的表述。把在 ATAM 分析中得到的各种信息进行归纳总结,并呈现给项目关系人。主要有:

  • 已编写了文档的架构方法;

  • 经过讨论得到的场景集合及其优先级;

  • 效用树;

  • 所发现的有风险决策;

  • 已编成文档的无风险决策;

  • 所发现的敏感点和权衡点。

3 成本效益分析法

在大型复杂系统中最大的权衡通常必须考虑经济性,因此,需要从经济角度建立成本、收益、风险和进度等方面软件的“经济”模型。成本效益分析法(the Cost Benefit Analysis Method,CBAM)是在 ATAM 上构建,用来对架构设计决策的成本和收益进行建模,是优化此类决策的一种手段。CBAM 的思想就是架构策略影响系统的质量属性,反过来这些质量属性又会为系统的项目关系人带来一些收益(称为“效用”),CBAM 协助项目关系人根据其投资回报(ROI)选择架构策略。CBAM 在 ATAM 结束时开始,它实际上使用了 ATAM 评估的结果。

CBAM 的步骤如下。

(1)整理场景。整理 ATAM 中获取的场景,根据商业目标确定这些场景的优先级,并选取优先级最高的 1/3 的场景进行分析。

(2)对场景进行求精。为每个场景获取最坏情况、当前情况、期望情况和最好情况的质量属性响应级别。

(3)确定场景的优先级。项目关系人对场景进行投票,其投票是基于每个场景“所期望的”响应值,根据投票结果和票的权值,生成一个分值(场景的权值)。

(4)分配效用。对场景的响应级别(最坏情况、当前情况、期望情况和最好情况)确定效用表。

(5)架构策略涉及哪些质量属性及响应级别,形成相关的策略—场景—响应级别的对应关系。

(6)使用内插法确定“期望的”质量属性响应级别的效用。即根据第 4 步的效用表以及第 5 步的对应关系,确定架构策略及其对应场景的效用表。

(7)计算各架构策略的总收益。根据第 3 步的场景的权值及第 6 步的架构策略效用表,计算出架构策略的总收益得分。

(8)根据受成本限制影响的 ROI(Return On Investment,投资报酬率)选择架构策略。根据开发经验估算架构策略的成本,结合第 7 步的收益,计算出架构策略的 ROI,按 ROI 排序,从而确定选取策略的优先级。

软件架构设计---软件架构评估相关推荐

  1. 系统架构设计师 - 软件架构设计 - 架构评估

    软件质量属性 记忆口诀 : 安全 操作 功能 修改 靠/用 可变 性 安全性 系统提供功能给合法用户的同时,拒绝 非法用户的访问请求 或 企图 的能力; 互操作性 系统与外部系统 (环境) 进行相互作 ...

  2. 软件架构设计---软件架构概述

    像学写文章一样,在学会字.词.句之后,就应上升到段落,就应追求文章的"布局谋篇",这就是架构.通俗地讲,软件架构设计就是软件系统的"布局谋篇". 人们在软件工程 ...

  3. 软件架构设计——软件架构风格

    软件架构风格 软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用.也就是说,能否在不同的软件系统中,使用同一架构.基于这个目的,学者们开始研究和实践软件架构的风格和类 ...

  4. 软件架构设计---软件架构风格

    软件架构风格 软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用.也就是说,能否在不同的软件系统中,使用同一架构.基于这个目的,学者们开始研究和实践软件架构的风格和类 ...

  5. 软件架构设计-软件架构评估、 产品线、架构复用

    一.软件架构评估 软件架构评估是在对架构分析.评估的基础上,对架构策略的选取进行决策.它也可以灵活地运用于对软件架构进行评审等工作中. 二.软件架构评估的方法 业界已开发出多种软件架构评估的方法,按基 ...

  6. 系统架构设计师考试题库重点案例:软件架构设计与评估(效用树)

    题: 某单位为了建设健全的公路桥梁养护管理档案,拟开发一套公路桥梁在线管理系统.在系统的需求分析与架构设计阶段,用户提出的需求.质量属性描述和架构特性如下: (a) 系统用户分为高级管理员.数据管理员 ...

  7. 系统架构设计师 - 软件架构设计 - 软件架构风格

    文章目录 软件架构风格描述 数据流风格 批处理风格 管道过滤器风格 调用返回风格 主子程序风格 面向对象(显式调用风格) `层次结构`风格 独立构件风格 调用返回风格(隐式调用) 虚拟机风格 基于规则 ...

  8. 软件架构设计---软件架构视图

     软件架构视图 从软件架构本身的特点出发讨论了架构建模及与特定应用领域密切相关的架构风格.本节将从对架构编档的角度对软件架构视图及其风格进行讨论. 1 软件视图的分类  现代软件系统非常复杂,通常在某 ...

  9. 软考备考-系统构架师-12-软件架构设计相关试题整理

    博客迁移 不恰饭的小站 说明 1 整理2009~2016年系统构架师"软件架构设计"题目 2 内容见文档:"考点按章节整理\第 9 章 软件架构设计\软件架构设计.doc ...

最新文章

  1. 【Android 逆向】frida 框架安装 ( 设置 Python 3.7 版本 | 安装 frida 12.7.5 版本 | 安装 frida-tools 5.1.0 版本 )
  2. 关于splice()方法,slice() 、split()方法讲解,reverse()方法、replace()方法
  3. Spring Integration Framework简介
  4. java构造方法的签名_如何在 Java 中构造对象(学习 Java 编程语言 034)
  5. 第二篇 服务消费者(rest ribbon)(Finchley版本)V2.0_dev
  6. 积米浏览器如何清除浏览数据
  7. System.Threading.Thread类方法
  8. 【转】SQLite3简介及在.Net程序中的使用(自增列的创建)
  9. 面向对象一些概念简述
  10. 超准!生活中48条让人匪夷所思的诡秘心理...
  11. 树莓派远程监控+运动目标检测
  12. jdk8 lambda
  13. 视网膜正常oct图_POAG患者视网膜各层厚度的OCT分析
  14. Mac上进行session hijack
  15. 【zc1415926】Unity3D的Android移动之路(二) 辅助神器——Unity Remote
  16. 2018/10/25 模拟赛 纸牌
  17. 帝国cms网站迁移到新的服务器,帝国cms网站迁移教程
  18. 华东、华北、华南的城市
  19. 蠕虫病毒Synaptics.exe感染日记
  20. android studio官方教程 pdf,android studio教程pdf

热门文章

  1. linux用户视角可分为,经济学原理下全球视角尔雅答案
  2. 机器视觉VS计算机视觉
  3. 解密编程——程序诞生的基本工序
  4. Elliptic Curve Cryptography (ECC) and Pairings 椭圆曲线密码学与配对
  5. jmpi 与ljmp指令分析
  6. dsf5.0 有确认按钮的弹框
  7. 长微博图片制作(无水印)
  8. Yau 近代几何讲座
  9. java计算机毕业设计自习室座位预约管理源码+mysql数据库+系统+lw文档+部署
  10. MIPI摄像头工程=7系列FPGA + OV5640(MIPI) + 15 分钟 + VITIS