目录

1.软件架构评估的方法

1.基于调查问卷

2.基于度量

3.基于场景

1.架构权衡分析法

2.软件架构分析法

2.软件架构评估的相关概念

1.质量属性

1.性能

2.可靠性

3.可用性

4.安全性

5.可修改性

2.敏感点,风险点


1.软件架构评估的方法

软件架构评估有三种方式:基于调查问卷,基于度量,基于场景

1.基于调查问卷

是指组织相关人员进行评估,这种方式最简单易行,但是主观性强。

2.基于度量

强调量化指标,最客观,但是这种方式实施难度大,因为需要评估者对系统非常熟悉,不然很难量化清楚各项指标。

3.基于场景

筛选出系统的关键场景,根据系统在不同场景中的表现进行评估,这种方式客观程度介于2者之间,这也是目前较为流行的结构评估方法。

基于场景的方式主要有三种:架构权衡分析法(ATAM,Architecture Tradeoff Analysis Method),软件架构分析法(SAAM,Software Architecture Analysis Method),成本效益分析法(CBAM)。前2种方式用得比较多。

1.架构权衡分析法

架构权衡分析法(ATAM,Architecture Tradeoff Analysis Method)是在SAAM上发展而来。核心是结合质量属性效用树对系统进行评价,确定风险点、敏感点、权衡点,并对系统架构做出决策和折中。整个评估过程强调以质量属性作为评估核心。

其过程如下

1描述ATAM方法->2描述商业动机->3描述架构方法->4确定架构方法->5生成质量属性效用树->6分析架构方法->7讨论确定场景优先级->8分析架构方法->9表述结果

ATAM分成4个阶段

  1. 描述和介绍阶段(包含1,2,3)
  2. 调查和分析阶段(包含4,5,6)
  3. 测试阶段(7,8)
  4. 报告阶段(9)

在描述和介绍阶段,由系统架构师向大家介绍ATAM方法,然后由产品经理和大家描述商业动机,最后由架构师向大家描述系统架构,系统分为几层,表现层,业务层,数据层等系统架构方面的东西。

在调查和分析阶段,先确定了系统的架构,然后生成质量属性效用树,然后通过这些场景分析系统的风险点,敏感点,权衡点。

测试阶段,我们根据需要分析的系统的特性,确定场景的优先级,由高到低是什么,例如性能,可用性,可修改性,安全性。每一个质量属性都很重要,但是根据系统特点需要对质量属性有优先级排序,所以我们在系统设计时有权衡和折中,架构权衡分析法的权衡就在此体现。

确定优先级之后,我们需要阐述对每个质量属性都采用什么方案,例如性能,优先级管理,资源仲裁。可用性,ping/echo,冗余。

报告阶段,把评估的过程和结果整理成文档,其中包括质量属性效用树,风险点,敏感点,权衡点,以及每次会议的会议纪要和最后的架构决策。

描述和介绍阶段参与者是架构师(1,3)和产品经理(2),调查和分析阶段参与者是评估小组,设计人员,管理人员和客户代表。

现在新的定义是分成如下4个阶段

  1. 场景和需求收集
  2. 架构视图和场景实现
  3. 质量模型构造和分析
  4. 质量模型折中

2.软件架构分析法

软件架构分析法分为6个步骤

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

2.软件架构评估的相关概念

1.质量属性

质量属性包含性能,可靠性,可用性,安全性,可修改性。

1.性能

指系统的响应能力

代表参数:吞吐量,并发数等

提升策略有

  • 优先级策略
  • 资源调度
  • 并发编程
  • 增加服务器
  • 分布式缓存
  • 读写分离
  • 分库分表

2.可靠性

包括容错性和健壮性,在异常或错误使用情况下维持系统软件功能的基本特性,例如空值引发空指针异常,不应该出现在系统中。

提升策略有

  • 拦截:提升系统可靠性可以采取参数校验,判空校验,合法枚举值校验等,提升业务可靠性可以增强业务校验,例如活动有效期校验,库存校验等。
  • 告警:在发生异常时,及时感知并立即告警,例如数据库失败等。

3.可用性

系统能正常运行的时间比例。例如系统可用性99.9999%。

代表参数:故障间隔时间

提升策略有

  • 冗余+故障转移:是只多台机器部署同一份代码,都可以对外提供服务,故障转移是只在主服务器发生故障时从服务器自动切换成主服务器,继续提供服务。
  • 降级策略:指系统无法承受压力时,选择性关闭非关键的功能,把资源提供给最关键的服务。
  • 延时策略:指削峰,例如在秒杀系统的时候使用消息队列。
  • 隔离策略:应用部署在不同的物理机,不同机房,资源不会相互影响。
  • 心跳线
  • ping

4.安全性

系统向合法用户提供服务的同时阻止非授权用户企图的能力。

提升策略:

  • 追踪审计
  • 用户认证
  • 用户授权
  • 限制访问

5.可修改性

系统是否能够以较高的性价比对系统进行变更的能力,其包括可扩展性,可维护性,结构重组,可移植性。

提升策略:

  • 信息隐藏
  • 抽象

2.敏感点,风险点

  • 敏感点:是实现某种特定的质量属性,为一个或多个构建所具有的特性 .影响单个质量属性
  • 权衡点:影响多个质量属性的特性,涉及多个敏感点,有好的,有坏的,所以有了权衡的概念
  • 例如加密就会影响到提高安全性和降低性能,它就属于一个权衡点
  • 风险点:系统设计中潜在的隐患,例如需求中有个地方没有达成一致,这有可能在后面带来隐患,这就是个风险点。
  • 非风险点:没有风险的点。