本文基于软考高级系统架构师的相关书籍和视频,记录学习过程中的知识点。后续可能还会继续更新后面章节的知识点,感兴趣的可以点个收藏和关注
如有错误,还请评论区指点。
软件系统质量属性
开发期质量属性
- 易理解性
- 可扩展性/灵活性:因适应新需求或需求变化而增加新功能的能力,
- 可重用性
- 可测试性
- 可维护性:实施修改的难易程度
- 可移植性
运行期质量属性
- 性能
- 安全性
- 可伸缩性:当数据量增加时系统维持高服务质量的能力
- 互操作性:与其他系统交换数据和相互调用服务的难易程度
- 可靠性
- 可用性
- 鲁棒性/健壮性/容错性:在非正常情况下仍正常运行的能力
面向架构评估的质量属性(案例必背)
如下
- 性能 : 在规定时间内系统的响应能力
-
- 资源需求:减少资源占用,控制资源使用
- 资源管理:增加计算资源、并发机制
- 资源仲裁 :优先级队列
- 可靠性 : 在系统出错的情况下维持系统基本功能的能力,比如平均失效等待时间 MTTF、平均失效间隔时间 MTBF
-
- 策略:心跳、冗余、选举
- 可用性:能够正常运行的时间比例,比如故障间隔时间
-
- 错误检测:心跳
- 错误恢复:冗余、选举
- 错误避免:服务下线、服务监控
- 安全性 : 在向合法用户提供服务的同时能阻止非法用户使用的能力
-
- 抵抗攻击 :认证授权、限制访问
- 检测攻击 :入侵检测、 追踪审计
- 可修改性 : 能够快速地以较高的性价比对系统进行变更的能力
-
- 局部化修改:高内聚低耦合、模块通用
- 防止连锁反应:信息隐藏
- 推迟绑定时间:多态
- 功能性:系统所能完成所期望工作的能力,或者说需求的满足程度
- 可变性:架构经过扩充或变更而成为新架构的能力
- 互操作性:通过可视化或接口方式提供好的交互操作体验的能力
软件架构评估
架构评估概念(案例必背)
正确识别风险点、非风险点、敏感点和权衡点是进行软件架构评价的关键步骤。
敏感点:影响到某一种特定的质量属性,一个或多个构件所具有的特性。
权衡点:影响多个质量属性的特性,是多个质量属性的敏感点。
- 例如“改变加密的级别可能会对安全性和性能都产生显著的影响”正是一个对系统权衡点的描述。
架构风险是指架构设计中潜在的存在问题的架构决策所带来的隐患。
风险点:某个做法如果有隐患,有可能导致一些问题,则为风险点。
非风险点:如果这个做法是可行且可接受的则为非风险点。
软件架构评估方法
基于场景的架构分析方法 SAAM
SAAM 的主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估。
场景:场景是从风险承担者的角度对与系统的交互的简短描述。在体系结构评估中,一般采用刺激、环境和响应三方面来对场景进行描述。
架构权衡分析方法 ATAM
在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。
ATAM 可以分为4个主要的活动阶段,包括场景和需求收集、架构视图和场景实现、属性模型构造和分析、折中,整个评估过程强调以属性作为架构评估的核心概念
质量属性效用树
ATAM 方法采用质量属性效用树这一工具来对质量属性进行分类和优先级排序
效用树以“效用”作为根节点,优先级排名为高、中和低