结构
效用树一般分为三层:
- 第一层(根节点):系统的整体效用(Utility),代表系统被建造的总体目标。
- 第二层(质量属性):系统应具备的主要质量属性,如性能、可用性、安全性、可维护性、可扩展性等。
- 第三层(场景):将质量属性具体化为可评估的场景,并赋予它们优先级(重要性、难度)。
分类及示例
质量属性 | 示例场景 |
---|---|
性能(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)