1. 总体概览
设计活动的⽬的在于产生适应约束并达到系统质量和业务⽬标的设计。
在这个过程中,质量属性可以被分解和分配到要分解到元素中。
在分解要时刻注意去满足系统的约束。
ADD(Attribute-Driven Design) 是 属性驱动设计方法
2. 过程
输⼊:功能需求、质量属性、约束
1. 确认有足够的需求信息
用 stimulus - response 的方法决定有没有足够的需求信息
2. 找到要去分解的系统元素
如果一开始 是 “green fileld” 所有的需求都直接被分配到整个系统
如果一开始是一个部分设计好的系统,选择系统的的一部分去继续设计。
3. 对选择好的元素确定 ASR
对所有的需求根据影响力进行排序
主要进行两个方面的排序, 一个是对 stake-holders 的影响力, 另一个是潜在的对架构设计的影响程度。
4. 选择满足 ASR 的设计概念
4.1 找到设计的关键点
思考去如何去解决实际问题,列出几种方向上的方案
4.2 找到对于每个设计点点候选的 Pattern 和 Tactics
4.3 从列表中选择出合适的 patterns 和 tactics
思考在使用每种模式的时候会有什么不足,每种模式和其他的模式能不能合理的共存。
4.4 决定 patterns ,tactics 和 ASR 的关系
选择出的模式和 tactics 的结合很可能会产生新的pattern
4.5 描述出基本的架构视图
通过描述选择的模式来产生架构视图。 (不需要是完整的架构视图)
4.6 评估和解决这个过程中产生的不一致
查看是有否有一些没有考虑到的架构驱动因素等。
5. 产生架构视图并且分配职责
产生架构分解视图并且从上到下的把架构职责进行分配。
6. 决定产生的元素的接口
7. 确认和精华需求并且为元素构造约束
确认所有的需求都已经被分配到了。
8 重复上述步骤知道所有的都已经被满足了。
输出
- 软件元素, 一个可以满足不同的角色和职责的计算和开发单元, 有定义好的元素。 并且和其他的软件元素相关。
- 角色: 一系列相关的职责
- 职责: 软件元素提供的功能数据和信息。
- 属性; 一个软件元素的其他信息
- 关系: 软件元素如何和其他元素进行沟通的定义。