Keynote 原件地址
风险驱动设计方法
核心
将风险提升为选择架构技术的一种驱动力
过程
步骤一:识别风险,并排定优先级
- 风险 = 觉察到的失败概率 X 觉察到的影响
- 风险类型:项目管理风险、软件工程风险
- 风险识别:从需求开始,寻找那些似乎难以实现的内容、不完整的或容易引起误解的质量属性;召开质量属性研讨会;凭经验等
- 确定优先级:根据「风险矩阵」进行风险分类和优先级排序
步骤二:选择并运用一组技术 技术选择:
- 使用模型,比如层级图、组件装配模型及部署模型
- 对性能、安全和可靠性进行分析的技术
- 利用各种架构风格,例如客户端-服务器(client-server)和管道-过滤器(pipe-and-filter),去实现某个紧迫的质量属性需求
步骤三:评估风险降低的程度
- 评估原则: 为架构付出的努力应与失败的风险对称
- 评估方法:主观评价!是否需要针对某个风险进行建模?使用哪种模型?建模到哪种程度?
- 架构关乎于决策!架构师需要对决策负责!
技术选择一:模型与视图
视图也称投影,显示了定义模型细节子集,同时还可能包含细节的转换。
模型定义
领域模型
- 描述:领域的不变事实,代表真实的东西。也称为概念模型、概要模型或抽象模型
- 视图:信息模型(领域词汇,通用描述)、导航和不变量(关系与约束)、快照(表示具体示例)、功能场景(通过组织快照之间的关系,描述可能路径)
设计模型
- 描述:引入待构建的系统;部分对设计的承诺;递归嵌套的边界模型和内部模型。代表计算机中的记录或计算机硬件
- 视图:
- 模块视图:模块图;组件、连接器、端口类型;用例图;职责
- 运行时视图:系统上下文视图;功能性场景;组件、连接器、端口实例;组件装配
- 分配视图:分配图;环境元素
- Spanning视图:质量属性场景;设计权衡
边界模型
- 描述:对接口的承诺
- 作用:描述系统及该系统与领域交互的情况
内部模型
- 描述:符合边界模型的细节设计
- 作用:边界模型的细化
代码模型
- 描述:1对1对应到代码元素(例如类和方法);完整的对设计的承诺
- 视图:包、类、方法、变量、函数、过程、语句
- 建议:在代码中表达设计意图。包括但不限于:有意提示(例如:命名);按合约设计(例如:assert);软机制(例如:注释);硬机制(依赖程序检查)
模型之间的关系
- 设计模型中的概念与领域模型中的概念对应,保持分析与设计的统一
- 边界模型、内部模型是设计模型的子模型
- 代码模型是对设计模型中的结构元素(类型、组件等)进行细化,可以进入实现阶段
技术选择二:架构风格
风格即约束,约束了元素之间的关系。常见的架构风格详见图片或Keynote