8.2-系统架构评估
系统架构评估就是对系统架构的质量进行分析,以便帮助设计者作出架构决策,确保系统能够符合需求。评估方法大致分为三种:
-
基于问卷或检查表:通过设计好的问卷或清单,收集开发人员和相关人员的反馈。这种方式依赖于评估者的经验和主观判断,可能带有一定的主观性。
-
基于场景:由卡耐基梅隆大学提出的方式,像 ATAM(架构权衡分析法)和 SAAM(软件架构分析法)都是基于场景的评估方法。这里的“场景”指系统的具体使用或变化情况,通过分析架构在场景中的表现,判断其是否符合需求。
-
基于度量:测量架构的各项指标来评估,比如性能、可靠性等。首先将质量需求与度量标准进行映射,然后从架构文档中获取数据,最终通过这些指标来评估系统的质量属性。
8.2.1 重要概念
-
敏感点 (Sensitivity Point) 和权衡点 (Tradeoff Point):
- 敏感点:是架构中影响某个质量目标的“关键点”。比如,如果想让系统反应更快,可能得特别关注一些核心模块的设计。
- 权衡点:是指对多个质量目标有影响的“重点”,往往需要在不同目标之间找到平衡。比如,增加加密可以提高安全性,但也可能让系统变慢,这样就得在安全和性能之间取舍。
-
风险承担者 (Stakeholders):
- 风险承担者,也称利益相关人跟系统设计有利益关系的人,比如开发人员、用户、运维人员等。每个人都有自己最关心的质量目标,像用户在意易用性,开发人员在意性能,而运维人员在意系统是否容易维护。
-
场景 (Scenarios):
- 场景是在架构评估中用来明确质量目标的描述方法。每个场景简短地描述系统在某个特定环境下的表现,比如高负载或网络故障等。场景通常由刺激 (Stimulus)、环境 (Environment) 和响应 (Response)三个部分构成,用来分析架构在实际情况下的表现和满足需求的程度。
8.2.2 系统架构评估方法
1、SAAM——基于场景的软件架构分析方法
SAAM是一种系统化的架构评估工具,通过场景模拟来探测和优化架构的质量表现,帮助设计出更稳健、更易维护的系统。
-
背景和目的
SAAM由卡耐基梅隆大学开发,是一种基于“非功能性需求”的架构分析方法。最初用于比较不同架构的可修改性,后来扩展为一种通用评估方法(其他质量属性)。 -
评估技术——方法
SAAM采用“场景分析”技术,通过模拟系统可能的使用场景(如系统需支持的活动和状态变化)来评估架构的表现。例如,查看架构是否便于修改、是否支持多种环境等。 -
质量属性
SAAM重点分析“可修改性”这一属性,也适用于其他质量需求,如可移植性和可扩展性。 -
风险承担者——利益相关者
SAAM促成了不同利益相关方(如用户、开发人员、运维人员等)之间的讨论,以便在设计上形成共识。这一共识是后续决策的依据。 -
架构描述方式
SAAM面向架构最终版本,主要涵盖功能、结构、分配等三方面,确保架构清晰明了,便于各方理解。 -
SAAM评估步骤
- 场景开发:通过与利益相关方讨论,生成一系列任务场景,即系统需支持的各种活动。
- 架构描述:使用简明的架构图描述系统中的模块和关系。
- 单个场景评估:评估每个场景与系统架构的匹配度。
- 场景交互分析:分析各场景间的相互影响,列出它们对系统的整体影响。
- 总体评估:综合场景分析结果,对架构的优缺点进行总结,明确可修改性、扩展性等质量属性的表现。
-
知识复用:不考虑
-
方法验证:SAAM已应用于多个实际系统,证明其效果和实用性。
2、ATAM方法——架构权衡分析方法
-
目的和背景
基于SAAM方法,重点在系统开发前期,帮助理解架构设计中可能的多个质量平衡。 -
质量属性关注点
分析多个相互竞争的质量属性,开始时考虑的是系统的可修改性、安全性、性能和可用性。 -
利益相关者的参与
ATAM需要系统中的各类利益相关者(例如用户、开发人员、维护人员等)参与。 -
架构描述方式
架构描述基于多种视图,包括功能结构、代码结构等,用以全面呈现系统架构的各个方面。借助消息顺序图等方式展示系统的运行时交互情况。 -
评估技术
“场景分析”:用例场景(典型使用情况)、增长场景(系统可能的改动)和探测场景(系统的极端负载情况)。“定性启发式分析”:是精确分析模型的粗颗粒度版本。 -
分析流程
ATAM包括四个阶段:- 阶段1:场景和需求收集。收集系统的典型场景和相关需求,明确对系统的约束条件。
- 阶段2:架构视图和场景实现。通过场景来理解系统在不同视图下的实现。
- 阶段3:属性模型构建与分析。专家独立构建模型,分析各质量属性,揭示架构的敏感和权衡点。
- 阶段4:权衡。对比不同设计方案,确认在多个质量属性之间的折中方案。
-
效用树工具
ATAM使用“效用树”工具对质量属性分类,并优先级排序。效用树的结构包括根节点(质量属性)、属性分类、质量属性场景(叶子节点),重点关注性能、安全性、可修改性和可用性。这种分类帮助确定优先级,确保系统设计符合利益相关者的核心需求 -
方法验证
ATAM在多个实际系统中应用,如交通控制系统、嵌入式系统等。其工具和方法仍在不断发展,特别是在架构描述、场景分析和工具支持方面。
3、CBAM——成本效益分析法
基于ATAM发展的,利用ATAM分析的结果,进一步评估架构策略的经济回报。CBAM主要关注在复杂系统设计中的经济性,通过建模架构设计决策的成本和收益,帮助利益相关者做出更合理的投资决策。
CBAM的八个步骤:
-
整理场景
从ATAM中获取的场景中,筛选出与商业目标高度相关的场景,并优先选择其中权重最高的1/3进行详细分析。 -
细化场景
对每个场景进行详细分析,获取其在不同条件下的质量属性响应(例如最坏、当前、期望和最好情况),用于后续的效用评估。 -
确定场景的优先级
利益相关者根据每个场景的“期望”质量属性响应值投票,生成每个场景的权重(即其优先级),为后续的架构策略评估奠定基础。 -
分配效用
建立场景效用表,定义各场景在不同响应级别下的效用值,以便明确哪些质量属性响应最有助于实现商业目标。 -
架构策略与质量属性的关系
建立“架构策略-场景-响应级别”的映射,明确每个架构策略对质量属性的影响程度。 -
计算期望效用
使用内插法确定期望质量属性响应的效用,通过前两步的效用表和映射关系,计算各架构策略对各场景的期望效用值。 -
计算总收益
综合第3步的场景优先级和第6步的效用值,得出各架构策略的总收益分数。 -
按ROI选择架构策略
根据估算的架构策略成本,结合第7步的收益值,计算每个策略的ROI(投资回报率),并按ROI排序,选择最优的策略组合。