前言
软件系统属性包括功能属性和质量属性,软件架构的重点是质量属性。
软件系统质量属性
软件质量属性的本质是软件系统与各种需求(显性的和隐性的)的一致性。
质量属性的概念
可测量,用来描述stockholder的期望。分为:
- 开发期质量属性
- 易理解性,容易理解
- 可扩展性,适应新需求
- 可重用性,可以复用的难易程度
- 可测试性,可以被测试
- 可维护性,维护简单
- 可移植性,迁移系统
- 运行期质量属性
- 性能,速度、吞吐量等
- 安全性,阻止非授权
- 可伸缩性,服务增加减少,自动变化
- 互操作性,其他系统交互
- 可靠性,持续无故障
- 可用性,正常工作的占比
- 鲁棒性,非正常情况下仍能正常运作。也成健壮性和容错性
知识点
- 可伸缩性和可扩展性容易混淆,前者是系统根据俄流量自动伸缩服务质量。后者是面对新变化更加容易修改。
- 性能测试需要基准测试程序来衡量。
- 可靠性MTBF=MTTF+MTTR,失效间隔时间等于修复时间和失效等待时间,可靠性强调失效时间短,修复时间快。而可用性强调用户是否有感知,99.99%的可用用户是无法感知的。
- 容错性是系统错误后仍能确保正常运作,而健壮性不一定,系统有任何不确定的问题后按照既定的策略执行即可,确保系统不会毁坏。
面向架构的质量属性
- 性能
- 可靠性
- 可用性
- 安全性
- 可修改性
- 可维护性
- 可扩展性
- 结构重组
- 可移植性
- 功能性
- 可变形性
- 互操作性
质量属性场景描述
- 刺激源,生成刺激的实体
- 刺激,刺激到达系统时的条件
- 环境,系统处于什么状况
- 制品,被激励的一部分
- 响应,激励到达后采取的行动
- 响应度量,如何度量响应
系统架构评估
对架构的选取进行决策。包括,基于问卷调查、基于场景、基于度量。
系统架构评估的重要概念
- 敏感点,一个或多个构件的特性。
- 权衡点,影响多个质量属性的特性。
评估方法
- SAAM,1983年,非功能质量属性。
- ATAM,多个质量属性相互竞争下,折中的必要性。
- CBAM,,成本效益。Cost- Benefit。
- SAEM,起步阶段使用。
- SAABNet,不确定性和不完整的知识推理。
- SACMM,软件架构修改的度量方法。
- SASAM,预期和实际架构的比较。
- ALRRA,可靠性风险。
- COSMIC + UML,面向对象和组件图。
- AHP,层次分析法。
知识点
- ATAM,是多个质量属性折中的策略。
- SAEM,这里的M时model,所以他是原型,一般作为起始。
- CB,是成本效益。
- ATAM使用适量效用树描述场景。ATAM关注的是性能、安全性、可修改性、可用性。
- 质量属性效用树可以进行优先级的排序,(H/M/L),它的机构是,树根-》质量属性-》属性分类-》场景(叶子结点)。(H、L)表示,非常重要,容易实现。
ATAM方法架构实践
阶段一(演示)
- 介绍ATAM
- 介绍业务驱动因素
- 介绍要评估的体系结构
阶段二(调查与分析)
- 确定架构方法
- 生成质量效用树
- 分析体系结构方法,这里就要用到权衡带你敏感点和优先级。
阶段三(测试)
- 头脑风暴和优先场景
- 分析结构方法
阶段四(报告)
收集所有信息:
- 效用树
- 场景
- 分析问题
- 风险
- 最终确定的架构