简介:
本文将描述用于了解现有软件体系结构质量的方法。这里的目的不是为软件体系结构评估或质量研究工作提供全面的参考,而是提供对该领域中有用方法的描述。此项工作处理以下问题:如何能够更好地了解和增强某个软件体系结构?此问题存在不同的答案;本文的中心思想是质量可以通过体系结构评估得到改进。
引言
在本文中,了解四种由卡内基梅隆大学的软件工程协会(Software Engineering Institute,SEI)定义的软件体系结构评估方法。
评估方法可以帮助您分析软件体系结构设计是否适合于一组给定的需求。这是非常重要的,因为需求提供了用以确定质量预期的上下文;如果软件成果的需求得到满足,那么其质量目标也应该会得到满足。
在适当的情况下,活动将定位在由 Rational Unified Process (RUP) 指定的软件生命周期(software
life cycle,SLC)模型中。选择该模型是由于它在整个行业的现代开发工作中的普及性。
背景知识
在我们讨论特定的评估方法之前,下面几个部分将详述一些关键的背景概念。
质量
定义质量并不像看起来那么简单。起初,该概念可能类似于“质量就是好的东西”或“质量就是好的工艺”等等。在几乎所有领域中,每个人都认同质量对于实现成功结果的重要性。例如,在团体性运动中,团队的融洽性经常意味着胜败之间的区别。在烹饪上,高品质的配料通常标志着普通餐与高档餐之间的区别。可以将这样的正面涵义应用于软件质量:质量越高,项目成功的机会就越大。
项目通常具有提高质量 的目标,同时还要将增加功能 和缩短日程作为目标。这通常是不可行的,因为实际只能实现三个选项中的两个选项,而无法同时实现所有三个选项。例如,质量和功能的增强需要花更多的时间来完成任务。如果没有计划更多的时间,人们不得不在每个任务(包括测试)上花更少的时间,从而可能影响他们的工作质量。
方法 减轻了这三个方面之间的依赖性。例如,如果存在一种允许更高效地添加功能的方法(也许是添加一个简单易用的专用
CASE 工具),则日程和总体质量可能不会受到同样程度的影响。本文稍后描述的方法可帮助处理依赖性,并重点集中于改进质量。
质量属性
了解如何提高质量应该是任何软件工作的优先考虑事项。在能够改进质量之前,需要对质量进行测量和分析。质量属性提供了测量和分析质量的上下文。
质量属性是刻画特定上下文质量的元素,例如性能、安全性、可移植性、功能等等。这其中每个属性都不是绝对量;它们的相关性直接与给定的情形联系在一起。例如,如果某个客户不太关心可移植性(也许所有系统都在运行相同的操作系统),而是非常关心性能,则性能将优先于可移植性。这允许按照对客户有重要意义的方面来组织任务。
为了能够正确测量属性,必须进行进一步的任务分解。例如,可以将性能属性分解为数据延迟和事务吞吐量。此时,要使用的可能指标就变得更明显了。可以将这其中每个细化后的实体进一步分解为特定的场景,这是引出需求信息的理想方法。
需求和质量属性之间的关系有助于了解软件体系结构的适用性。如果没有这样的映射,要真正了解为什么在体系结构中设计了某些功能就会更加困难。是因为该功能对设计人员有意义吗?它是商业杂志一直推荐的功能?或者它是参与者指定的功能?需求与质量属性之间的关系还可以帮助有效地确定工作优先级,因为它帮助阐明了对客户非常重要的方面。
您可以使用质量属性来限定特定的场景,这些场景可用作引出进一步设计细化的理想工具。
软件体系结构分析
软件体系结构允许交付复杂的软件系统。软件架构师并不是集中于每个细节,而是集中于对手边的解决方案具有高度影响的细节。与建筑物的建筑师一样,软件架构师并不太关心浇注水泥以建造房子所必需的详细技术,而是关心所要建造的特定房子的可行性。给定现代软件项目中的解决方案元素之间的互连性质,要让一个人去跟踪所有这些元素是相当困难的。软件架构师最重要的任务之一是通过确定对成功最相关的元素,从而将复杂性分解为可管理的多个部分。下一步自然是研究质量、质量属性和软件体系结构之间的动态关系,以更好地了解如何能够提高质量。要高效地实现该目标,应该遵循如本文所述的恰当的分析方法。
评估方法
成功的体系结构遵循各种指导原则和最佳实践。SEI 在这方面做了广泛的研究,并最终创建了几种用于改进和评估体系结构的方法。四种代表性的方法如下:
- 质量属性专题研讨会 (QAW)
- 体系结构权衡分析方法 (ATAM)
- 软件体系结构分析方法 (SAAM)
- 积极的中间设计审核 (ARID)
QAW 在定义体系结构之前执行,ARID 在设计工作过程中执行,而
ATAM 和 SAAM 则在已经完成体系结构之后执行。这些方法的引出部分的执行由一个协调人员引导。
质量属性专题研讨会方法
QAW 方法是一种用于在创建软件体系结构之前发现质量属性的方法。诸如性能或安全性等特定质量的实现高度依赖于设计良好的软件体系结构。
经常缺失质量属性或者完全没有指定质量属性的情况并不鲜见。这会在生命周期的后面实现解决方案时导致灾难。例如,如果没有在早期良好地定义系统安全性,则很难在以后进行添加,因为系统安全性是一个影响解决方案的多个级别的属性,这些级别包括从组件到基础设施元素的范围。
QAW 引出活动是在由协调人员和系统参与者组成的专题讨论会中执行的。QAW 划分为八个步骤,如表 1
所示。
表 1. QAW 步骤
步骤 |
描述 |
操作 |
1 |
QAW 陈述和介绍 |
QAW 协调人员描述专题讨论会的理论基础、QWE 涉及的步骤和该工作中的预期。 |
2 |
业务和使命陈述 |
某个参与者陈述系统的业务和使命驱动因素。协调人员捕获相关信息。 |
3 |
体系结构计划陈述 |
在解决方案的 SLC 中的这一方面,可能还不存在详细的系统体系结构。可能具有大致的描述、关系图或其他附带技术细节的元素。某个技术参与者向与会人员陈述这些内容。协调人员继续捕获重要的方面以便以后分析。 |
4 |
确定体系结构驱动因素 |
协调人员临时退出讨论并整理笔记。向参与者陈述所记录的重要体系结构驱动因素以达成共识。 |
5 |
场景自由讨论 |
一旦就体系结构驱动因素达成一致,协调人员将充当场景生成活动的召集人。每个参与者定义满足其所关注方面的场景。至少执行两个回合的表决。协调人员确保每个体系结构驱动因素至少存在一个场景。 |
6 |
场景合并 |
协调人员向参与者询问可能的场景合并,从而更好地集中于更可靠的场景。 |
7 |
场景优先排序 |
由参与者驱动的所需结果是一组目标,这些目标按照对手边项目的重要性进行优先排序。 |
8 |
场景细化 |
细化最重要的四个或五个场景(取决于时间),阐明这些场景的刺激因素、响应、刺激源、环境、所刺激的构件和响应度量。 |
AW 工作的输出是一个体系结构驱动因素列表、场景、一个经过优先排序的场景列表和细化的场景。您可以使用此信息来细化需求、开发原型、影响设计决策等等。
体系结构权衡分析方法
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 |
总结 |
对评估工作的结果做文档记录并交付给适当的参与者。 |
在本文描述的方法中,ARID 是最新的方法。由于此方法具有许多与其他方法相同的特征,因此它重用了那些方法的经过证明的技术。
使用模式
在现实生活中,这些方法将在流程框架的上下文中使用。这就是牵涉到 RUP 的地方。RUP 定义了一个经过证明的软件生命周期,该生命周期具有带文档记录的各个阶段、定义良好的规程和实用的角色。RUP
的一个核心原则在于,RUP 是一个以体系结构为中心的流程:体系结构对于使用 RUP 的任何应用程序的成功都是至关重要的。大部分体系结构开发在初始生命周期阶段中交付,并在以后的阶段中根据需要进行修改。
QAW 最适合于 RUP 的初始阶段,因为接着就要对描绘将来的体系结构的想法进行具体化了。QAW 还可以在以后阶段中用于细化初始的发现。“需求”规程将会得益于对
QAW 向 RUP 引入的质量属性分析的格外重视。
ARID 应该在 RUP 的细化阶段中执行,因为软件体系结构正是在此阶段得到巩固的。ARID 将有助于作为
RUP 的“分析和设计”规程的一部分执行的各种审核工作。
ATAM/SAAM 工作可以在该生命周期中需要体系结构审核的任何地方进行。一个很适合的地方将是在 RUP
的构造阶段,因为资源是在此阶段开始按照体系结构计划执行的。ATAM 能够将所交付的体系结构与质量目标进行比较,这一点非常适合于
QAW 输出的重用。
总结
下表总结了使用本文中描述的方法的建议。这些建议按照在各个 RUP SLC 阶段中的使用顺序列出。其中还列出了角色和规程,以便在现有的知识领域中更好地定位该工作。
表 5. 方法和角色矩阵
方法 |
角色 |
规程 |
阶段 |
QAW |
软件分析人员 |
需求 |
初始 |
ARID |
技术审核人员 |
分析和设计 |
细化 |
ATAM/SAAM |
软件架构师 |
分析和设计 |
构造 |
使用评估方法可以促进对当前体系结构设计的更好了解,并支持更高效地确定软件体系结构中的质量。将需求与场景驱动的质量属性进行匹配,可以促进更准确的软件体系结构。本文描述的方法充当这些类型的连接的催化剂,并允许外部化以前没有清楚看到的重要关系。使用评估方法可以帮助确保体系结构设计的适用性,并提高体系结构的质量。 |