目录
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,2,3)
- 调查和分析阶段(包含4,5,6)
- 测试阶段(7,8)
- 报告阶段(9)
在描述和介绍阶段,由系统架构师向大家介绍ATAM方法,然后由产品经理和大家描述商业动机,最后由架构师向大家描述系统架构,系统分为几层,表现层,业务层,数据层等系统架构方面的东西。
在调查和分析阶段,先确定了系统的架构,然后生成质量属性效用树,然后通过这些场景分析系统的风险点,敏感点,权衡点。
测试阶段,我们根据需要分析的系统的特性,确定场景的优先级,由高到低是什么,例如性能,可用性,可修改性,安全性。每一个质量属性都很重要,但是根据系统特点需要对质量属性有优先级排序,所以我们在系统设计时有权衡和折中,架构权衡分析法的权衡就在此体现。
确定优先级之后,我们需要阐述对每个质量属性都采用什么方案,例如性能,优先级管理,资源仲裁。可用性,ping/echo,冗余。
报告阶段,把评估的过程和结果整理成文档,其中包括质量属性效用树,风险点,敏感点,权衡点,以及每次会议的会议纪要和最后的架构决策。
描述和介绍阶段参与者是架构师(1,3)和产品经理(2),调查和分析阶段参与者是评估小组,设计人员,管理人员和客户代表。
现在新的定义是分成如下4个阶段
- 场景和需求收集
- 架构视图和场景实现
- 质量模型构造和分析
- 质量模型折中
2.软件架构分析法
软件架构分析法分为6个步骤
- 形成场景
- 描述架构
- 对场景进行分类和确定优先级
- 对场景进行单个评估
- 评估场景的相互作用
- 形成总体评价
2.软件架构评估的相关概念
1.质量属性
质量属性包含性能,可靠性,可用性,安全性,可修改性。
1.性能
指系统的响应能力
代表参数:吞吐量,并发数等
提升策略有
- 优先级策略
- 资源调度
- 并发编程
- 增加服务器
- 分布式缓存
- 读写分离
- 分库分表
2.可靠性
包括容错性和健壮性,在异常或错误使用情况下维持系统软件功能的基本特性,例如空值引发空指针异常,不应该出现在系统中。
提升策略有
- 拦截:提升系统可靠性可以采取参数校验,判空校验,合法枚举值校验等,提升业务可靠性可以增强业务校验,例如活动有效期校验,库存校验等。
- 告警:在发生异常时,及时感知并立即告警,例如数据库失败等。
3.可用性
系统能正常运行的时间比例。例如系统可用性99.9999%。
代表参数:故障间隔时间
提升策略有
- 冗余+故障转移:是只多台机器部署同一份代码,都可以对外提供服务,故障转移是只在主服务器发生故障时从服务器自动切换成主服务器,继续提供服务。
- 降级策略:指系统无法承受压力时,选择性关闭非关键的功能,把资源提供给最关键的服务。
- 延时策略:指削峰,例如在秒杀系统的时候使用消息队列。
- 隔离策略:应用部署在不同的物理机,不同机房,资源不会相互影响。
- 心跳线
- ping
4.安全性
系统向合法用户提供服务的同时阻止非授权用户企图的能力。
提升策略:
- 追踪审计
- 用户认证
- 用户授权
- 限制访问
5.可修改性
系统是否能够以较高的性价比对系统进行变更的能力,其包括可扩展性,可维护性,结构重组,可移植性。
提升策略:
- 信息隐藏
- 抽象
2.敏感点,风险点
- 敏感点:是实现某种特定的质量属性,为一个或多个构建所具有的特性 .影响单个质量属性
- 权衡点:影响多个质量属性的特性,涉及多个敏感点,有好的,有坏的,所以有了权衡的概念
- 例如加密就会影响到提高安全性和降低性能,它就属于一个权衡点
- 风险点:系统设计中潜在的隐患,例如需求中有个地方没有达成一致,这有可能在后面带来隐患,这就是个风险点。
- 非风险点:没有风险的点。