系统架构设计(十五):质量效用树

结构

效用树一般分为三层:

  1. 第一层(根节点):系统的整体效用(Utility),代表系统被建造的总体目标。
  2. 第二层(质量属性):系统应具备的主要质量属性,如性能、可用性、安全性、可维护性、可扩展性等。
  3. 第三层(场景):将质量属性具体化为可评估的场景,并赋予它们优先级(重要性、难度)。

分类及示例

质量属性 示例场景
性能(Performance) 用户在5秒内收到搜索结果;系统支持每秒1000次交易
可用性(Availability) 系统在任意时间99.99%的可用;服务器故障时1秒内切换
可维护性(Maintainability) 开发人员在1天内定位并修复一般bug
可扩展性(Scalability) 系统在新增节点后性能提升线性增长
安全性(Security) 非法用户无法访问系统敏感数据;支持SSL传输加密
易用性(Usability) 用户第一次使用系统在5分钟内完成注册流程
可部署性(Deployability) 系统升级不影响当前运行服务;新版本1小时内部署完毕

图示(文字示意)

                                效用(Utility)
                                      |
    ----------------------------------------------------------------
    |             |              |              |               |
  性能        可用性         可维护性         安全性         可扩展性
    |             |              |              |               |
  [场景1]       [场景1]        [场景1]        [场景1]         [场景1]
  [场景2]       [场景2]        [场景2]        [场景2]         [场景2]

每个场景还可以标注两个属性:

  • 重要性(1-5)
  • 实现难度(1-5)

例如:

安全性
  └── 支持用户权限隔离(重要性=5,难度=3)
  └── 数据传输必须加密(重要性=5,难度=2)

示例

某系统需要保障高可用性和高安全性,同时具备中等程度的可维护性和扩展性。请构建其质量属性效用树的主要部分,并说明权重设置理由。

解答:

效用
├── 可用性(权重:5)
│   └── 系统主服务故障时10秒内自动切换到备用(重要性5,难度4)
├── 安全性(权重:5)
│   └── 所有外部接口需进行身份认证与权限校验(重要性5,难度3)
├── 可维护性(权重:3)
│   └── 系统日志需完整记录操作,辅助问题定位(重要性3,难度2)
├── 可扩展性(权重:2)
│   └── 新增模块不影响核心服务(重要性2,难度3)

你可能感兴趣的:(#,软件架构设计,系统架构)