架构特性 《软件架构:架构模式、特征及实现指南》 第四章

Posted on Aug 5, 2021

定义架构特性

架构特性必须满足三个条件

指出一种非领域设计考量
影响设计的一些结构方面
对应用成功至关重要

运行类架构特性

可用性:系统的可用性
连续性:灾后恢复能力
性能:压力测试,高峰分析,函数调用频率,能力要求和响应时间
恢复能力:业务连续性要求,灾难发生后多块可以重新上线,影响备份策略和冗余硬件
可靠性/安全性:评估系统是否需要安全地失败?是否它是性命攸关不容失败的?是否会导致公司损失一大笔钱
健壮性:当断电或硬件错误发生的时候处理错误和极限条件的能力
伸缩性:系统应对大量用户请求时候的能力

结构类架构特性

可配置性:终端用户是否能够通过有用的界面容易地改变软件的配置
可扩展性:插入新功能是否很重要
可安装性:在所有必要平台安装的容易程度
复用性
本地化能力:支持多语言,多字体
可维护性:系统变更有多容易
平台适配性:系统能够在各自平台上运行吗
支持能力:应用技术支持水平。需要怎样日志的水平来debug
可升级性:服务端或客户端可以快速从一个版本升级到新版本的能力

交叉类架构特性

可访问性:能够被所有用户访问,包括色盲耳聋的失能人士
可归档性:数据需要在一段时间之后被归档或者删除吗
鉴权:验证用户身份的安全需求
授权:保证用户只能访问特定功能的需求
法律:法律对系统有什么法律约束
隐私:对内部员工隐藏事务的能力(加密事务以便使得即使是数据库管理员和网络架构师也无法看)
安全性:数据需要被加密吗?内部系统之间的沟通需要加密吗?
支持能力
可用性和可获得性:用户需要多少训练才能达成她们的目标

ISO定义的能力

性能有效性:衡量在已知条件下,使用单位资源达成的性能。包括:
时间行为(响应时间,处理时间,吞吐量)
资源利用(使用资源的数量和类型)
能力(超出最大既定限制的程度)
兼容性:
系统和其他产品,系统或者模块能够交互信息的程度,
能够与其他系统在共享环境资源条件下共存的能力
可用性:用户可以有效,高效,满意地完成它的目标
可识别性:用户可以辨别系统是否适合他的需求
可学习性:用户可以轻松的学习如何使用软件
用户错误保护
可触达性:各自特征和能力的用户都能使用
可靠性
安全性
可维护性
可迁移性

建议

永远不要瞄准最好的架构,要瞄准最不差的架构

把架构设计成可迭代的