成功的体系结构遵循各种指导原则和最佳实践。SEI 在这方面做了广泛的研究,并最终创建了几种用于改进和评估体系结构的方法。四种代表性的方法如下:
l 质量属性专题研讨会 (QAW)
l 体系结构权衡分析方法 (ATAM)
l 软件体系结构分析方法 (SAAM)
l 积极的中间设计审核 (ARID)
QAW 在定义体系结构之前执行,ARID 在设计工作过程中执行,而 ATAM 和 SAAM 则在已经完成体系结构之后执行。这些方法的引出部分的执行由一个协调人员引导。有关这些方法的更多信息,请参见参考资料。
质量属性专题研讨会方法
QAW 方法是一种用于在创建软件体系结构之前发现质量属性的方法。诸如性能或安全性等特定质量的实现高度依赖于设计良好的软件体系结构。
经常缺失质量属性或者完全没有指定质量属性的情况并不鲜见。这会在生命周期的后面实现解决方案时导致灾难。例如,如果没有在早期良好地定义系统安全性,则很难在以后进行添加,因为系统安全性是一个影响解决方案的多个级别的属性,这些级别包括从组件到基础设施元素的范围。
QAW 引出活动是在由协调人员和系统参与者组成的专题讨论会中执行的。QAW 划分为八个步骤,如表 1 所示。
表 1. QAW 步骤
步骤 | 描述 | 操作 |
1 | QAW 陈述和介绍 | QAW 协调人员描述专题讨论会的理论基础、QWE 涉及的步骤和该工作中的预期。 |
2 | 业务和使命陈述 | 某个参与者陈述系统的业务和使命驱动因素。协调人员捕获相关信息。 |
3 | 体系结构计划陈述 | 在解决方案的 SLC 中的这一方面,可能还不存在详细的系统体系结构。可能具有大致的描述、关系图或其他附带技术细节的元素。某个技术参与者向与会人员陈述这些内容。协调人员继续捕获重要的方面以便以后分析。 |
4 | 确定体系结构驱动因素 | 协调人员临时退出讨论并整理笔记。向参与者陈述所记录的重要体系结构驱动因素以达成共识。 |
5 | 场景自由讨论 | 一旦就体系结构驱动因素达成一致,协调人员将充当场景生成活动的召集人。每个参与者定义满足其所关注方面的场景。至少执行两个回合的表决。协调人员确保每个体系结构驱动因素至少存在一个场景。 |
6 | 场景合并 | 协调人员向参与者询问可能的场景合并,从而更好地集中于更可靠的场景。 |
7 | 场景优先排序 | 由参与者驱动的所需结果是一组目标,这些目标按照对手边项目的重要性进行优先排序。 |
8 | 场景细化 | 细化最重要的四个或五个场景(取决于时间),阐明这些场景的刺激因素、响应、刺激源、环境、所刺激的构件和响应度量。 |
QAW 工作的输出是一个体系结构驱动因素列表、场景、一个经过优先排序的场景列表和细化的场景。您可以使用此信息来细化需求、开发原型、影响设计决策等等。
体系结构权衡分析方法
QAW 方法在设计出体系结构之前产生文档和质量元素的优先排序。ATAM 假设已经交付了某个体系结构。在 ATAM 中,可以重用 QAW 成果来交付清楚的质量属性定义。ATAM 包括“权衡”,因为它不仅描述某个体系结构对特定质量目标的满足程度,而且还提供了对那些属性在体系结构质量中所具有的权衡的深入认识。
表 2. ATAM 步骤
步骤 | 描述 | 操作 |
1 | 陈述 ATAM | 类似于 QAW 步骤 1。 |
2 | 陈述业务驱动因素 | 类似于 QAW 步骤 2。 |
3 | 陈述体系结构 | 项目架构师陈述体系结构,并集中于该体系结构如何满足业务驱动因素。 |
4 | 确定体系结构方法 | 集中于所要处理的驱动因素,架构师确定在该体系结构设计的构造过程中采用的方法。协调人员对这些方法做文档记录(这些方法尚未经过讨论)。 |
5 | 生成质量属性功能树 | 允许更好地可视化和组织与项目相关的质量属性。QAW 步骤在这里会非常有用。一直对属性进行分解,直到分解为支持这些属性的场景。 |
6 | 分析体系结构方法 | 将步骤 4 中发现的体系结构方法与处于质量属性功能树树叶上的场景作比较,以更好地了解所采取的方法是否与参与者的驱动场景相匹配。确定权衡点和风险。 |
7 | 自由讨论并优先安排场景 | 为了确保没有忽略任何重要细节,与参与者一起进行另一回合的场景发现活动。对发现结果进行优先排序(举行一轮表决)并做文档记录。 |
8 | 分析体系结构方法 | 可能存在新的场景,因此再次执行步骤 6 的活动,并集中于具有高优先级的场景。 |
9 | 陈述结果 | 向参与者陈述信息——方法、场景、权衡、风险。可以做出有关该体系结构和参与者需求的适用性决策。 |
ATAM 提供了一种方法,用于执行体系结构审核以评估当前体系结构对其业务驱动因素的适用性。它帮助您更好地将参与者需求与解决方案设计保持同步。
软件体系结构分析方法
先于 QAW 和 ATAM 的 SAAM 是用于分析软件体系结构的具有文档记录的最早方法之一。它提供了比 ATAM 更简单的方法。SAAM 的促进因素之一在于,许多架构师发出了一些经不起考验的声明,例如“我的体系结构很容易维护”。有些 SAAM 步骤与有些 ATAM 步骤相匹配;表 3 指出了它们之间的区别。
表 3. SAAM 步骤
步骤 | 描述 |
1 | 开发场景 |
2 | 描述体系结构 |
3 | 对场景进行分类和优先排序 |
4 | 分别评估间接场景。间接场景定义这样的方面,在这些方面中,某个场景与步骤 2 中描述的体系结构方法之间不存在匹配。 |
5 | 评估场景交互。类似于 QAW 步骤 6 的合并活动。 |
SAAM 提供了一种将可测量的质量属性场景附加到一般属性声明的方法,从而支持更间接地进行测试的情形。
积极的中间设计审核方法
ATAM 和 SAAM 都集中于完成后的体系结构。ARID 方法集中于未完成的体系结构。其好处在于,您不必等待体系结构设计完成即可了解该设计是否在沿正确的方向进行。表4 显示了相关步骤。
表 4. ARID 步骤
步骤 | 描述 | 操作 |
1 | 确定审核人员 | ARID 中的审核人员是设计参与者(对可靠设计的创作进行了投资的各方)。 |
2 | 准备设计讲座 | 这里的目标是设计人员足够详细地陈述该设计,以便审核人员能够使用该设计。 |
3 | 准备初始场景 | 由协调人员和设计人员执行。 |
4 | 准备资料 | |
5 | 陈述 ARID | 类似于 QAW 和 ATAM 中的步骤 1。 |
6 | 陈述设计 | |
7 | 对场景进行自由讨论和优先排序 | 正如在 ATAM 中一样,场景用于涵盖适当的需求范围。 |
8 | 应用场景 | 从优先排序列表中最高位置的场景开始,审核人员使用伪代码来验证场景的适用性。 |
9 | 总结 | 对评估工作的结果做文档记录并交付给适当的参与者。 |