Keynote 原件地址

风险驱动设计方法

核心

将风险提升为选择架构技术的一种驱动力

过程

步骤一:识别风险,并排定优先级

  • 风险 = 觉察到的失败概率 X 觉察到的影响
  • 风险类型:项目管理风险、软件工程风险
  • 风险识别:从需求开始,寻找那些似乎难以实现的内容、不完整的或容易引起误解的质量属性;召开质量属性研讨会;凭经验等
  • 确定优先级:根据「风险矩阵」进行风险分类和优先级排序

步骤二:选择并运用一组技术 技术选择:

  • 使用模型,比如层级图、组件装配模型及部署模型
  • 对性能、安全和可靠性进行分析的技术
  • 利用各种架构风格,例如客户端-服务器(client-server)和管道-过滤器(pipe-and-filter),去实现某个紧迫的质量属性需求

步骤三:评估风险降低的程度

  • 评估原则: 为架构付出的努力应与失败的风险对称
  • 评估方法:主观评价!是否需要针对某个风险进行建模?使用哪种模型?建模到哪种程度?
  • 架构关乎于决策!架构师需要对决策负责!

技术选择一:模型与视图

视图也称投影,显示了定义模型细节子集,同时还可能包含细节的转换。

模型定义

领域模型

  • 描述:领域的不变事实,代表真实的东西。也称为概念模型、概要模型或抽象模型
  • 视图:信息模型(领域词汇,通用描述)、导航和不变量(关系与约束)、快照(表示具体示例)、功能场景(通过组织快照之间的关系,描述可能路径)

设计模型

  • 描述:引入待构建的系统;部分对设计的承诺;递归嵌套的边界模型和内部模型。代表计算机中的记录或计算机硬件
  • 视图
    • 模块视图:模块图;组件、连接器、端口类型;用例图;职责
    • 运行时视图:系统上下文视图;功能性场景;组件、连接器、端口实例;组件装配
    • 分配视图:分配图;环境元素
    • Spanning视图:质量属性场景;设计权衡

边界模型

  • 描述:对接口的承诺
  • 作用:描述系统及该系统与领域交互的情况

内部模型

  • 描述:符合边界模型的细节设计
  • 作用:边界模型的细化

代码模型

  • 描述:1对1对应到代码元素(例如类和方法);完整的对设计的承诺
  • 视图:包、类、方法、变量、函数、过程、语句
  • 建议在代码中表达设计意图。包括但不限于:有意提示(例如:命名);按合约设计(例如:assert);软机制(例如:注释);硬机制(依赖程序检查)

模型之间的关系

  • 设计模型中的概念与领域模型中的概念对应,保持分析与设计的统一
  • 边界模型、内部模型是设计模型的子模型
  • 代码模型是对设计模型中的结构元素(类型、组件等)进行细化,可以进入实现阶段

技术选择二:架构风格

风格即约束,约束了元素之间的关系。常见的架构风格详见图片或Keynote