现在我们把CBAM方法应用到实际系统.以给出该方法在实际应用中的一个示例。
该系统具有重要的性能和可用性需求。该项目具有长期性,因此可修改性也非常重要。
ECS项目的管理人员只有有限的年度预箅来维持和增强当前的系统。在ATAM评估 中,我们从系统涉众那儿获取了许多期望对系统进行的变更。从而产生了大量的构架策略. 现在的问题就是只能选择一个很小的子集来实现,因为在所建议进行的变更中.实际只能 给10%〜20%提供资金。管理人员使用CBAM,根据投资回报的经济标准做出了一个合 理的决策。
在接下来的CBAM评估中,我们重点分析ECS系统的数据访问工作组(DAWG)部分,
12.4.1 步骤1:整理场景
把从ATAM评估中得到的场景与从ECS涉众那儿获取的一组新场景进行比较。因为 涉众已经参与了 ATAM评估,因此这一步相对来说比较简单,
DAWG小组提出了原始场景的一个子集,如表12.1所示。请注意,这些场景还不是 很标准(即不具备场景的3个部分),有些场景没有已定义的响应。我们将在第2步中解 决这些问题,这时,场景的数量会减少。
表12.1按优先级顺序收集的场景
12.4.2步骤2:对场景进行求精
对场景进行求精,尤其要准确规定刺激-响应度量。我们已经获取并记录了每个场景 的最坏情况、当前情况、期望情况和最好情况的响应目标,如表12.2所示。
表12.2所求精场景的响应目标
12.4.3步骤3:确定场景的优先级
在对求精后的场景进行投票时,这个志同道合的小组的做法稍稍偏离了 CBAM方法的要求,他们没有进行单独投票,而是对每个场景进行了集体讨论,共同确定了该场景的 权值.分配给整个场景集合的选票为100张,如表12.3所示。尽管我们并没有要求涉众给 每个场景分配的票数是5的倍数,他们认为这样分配选票很合理.更精确地分配选票既没必要也不合理。
表12.3已投票的求精后的场景
12.4.4步骤4:分配效用
在这一步中,由涉众来确定每个场景的效用,这次采用的仍然是由涉众达成一致的方 法。效用得分为0表示没有效用.效用为100表示可能的最大效用。表12.4给出了该过程 的结果。
表12.4给出了得票数和效用得分的场景
12.4.5步骤5:为场景开发构架策略并确定其期望的质量属性响应级别
根据前面叙述的场景所暗示的需求,ECS设计师开发了一组构架策略,我们曾说过-个构架策略可能会影响多个质量属性。为了说明这些复杂的关系,必须就每个相关场景确 定预计每个策略将要实现的期望的质量属性响应级别。
表12.5给出了构架策略集合以及它们所解决的场景的确定。对于每一个构架策略/场 景对.都给出了关于该场景的期望实现的响应级别(为了对二者进行比较.还给出了当前 的响应)。
表12.5构架策略和所解决的场景
12.4.6步骤6:使用内插法确定“期望的”质量属性响应级别的效用
对于一组场景,一旦刻画了每个构架策略所期望的响应级别,就可以对所有受影响的 质量属性,使用每个场景当前的和期望响应的效用得分来计算其效用。我们可以使用这些 得分采用内插法计算应用到ECS的DAWG中的构架策略/场景对的期望的质量属性响应级别的效用。 、
表12.6给出了该计算的结果,针对的是表12.5中给出的构架策略/场景对„
表12.6构架策略和其期望的效用
12.4.7步骤7:计算从某个构架策略中获得的总收益
根据所收集的信息(已在表12.6中给出),现在可以根据12.2.1节给出的公式,计算 每个构架策略的总收益。该公式将总收益计算为每个场景产生的收益的和,它根据场景的 相对权值进行了标准化。表12.7给出了每个构架策略的总收益得分。
表12.7构架策略的总收益
12.4.8 步骤8:根据受成本限制影响的ROI选择构架策略
为了完成分析,小组要估计每个构架策略的成本,该估计基于开发系统的经验。计算每个构架策略的投资回报。可以使用ROI对构架策略进行排序,表12.8给出了各个策略 的位置。该策略的排序与建议每个策略的顺序大致相同:策略1排在第1位;策略3排在 第2位:策略9排在第10位;策略8排在第9位。这验证了涉众对于哪些构架策略将会 带来最大收益的直觉。对ECS来说,这些策略就是首先建议采用的策略。
表12.8构架策略的ROI
12.5 CBAM评估的结果
表12.8给出了 CBAM评估的最明显的结果:根据其预测的ROI对构架策略的排序, 然而,与ATAM方法相同.CBAM的收益不仅仅是所得到的这些定性结果,评估还能带 来社交方面和文化方面的收益。 •
在CBAM评估中,与对构架策略进行排序同样重要的是,耍在收集信息和制定决策 的过程中进行讨论。CBAM过程为一般都是未结构化的讨论提供了大量的组织结构,在这 种未结构化的讨论中.需求和构架策略随意混杂在一起,刺激和响应目标的划分也不是很 消晰。CBAM过程迫使涉众预先使其场景变得清晰,分配具体响应目标的效用级别,并根 据所得到的效用划分这些场景的优先级。最后,该过程可以澄淸场景和需求,这本身就是 一个重大的收益。
12.6小 结
CBAM是一种迭代式获取过程,它与决策分析框架结合在-起。它采用场景来表示各种质量属性。涉众通过获取效用-响应曲线来理解系统的效用如何随着质量属性的变化而 变化,从而对决策进行分析。在达成一致的基础上,该方法允许涉众进行讨论,以在涉众 之间进行澄淸。设计决策的可跟踪性允许设计过程随着时间的推移而不断得到更新和改进。
从实际项目中获取信息是很困难的。作为研究人员,我们负责创建工程师可以在实际 项目中使用的方法。用涉众的话说就是.这些方法需要快速产生有用的结果,并且“价格” 合理。使用CBAM的经验告诉我们,从理论上解决•个问题并将其应用到实践中是很困 难的。在儿次把该方法应用到NASA的ECS中后,我们已经对CBAM进行了很大修改。
除了实际应用中的困难外,我们认为经济技巧的应用从本质上说耍比当今项目(甚至 包括相当复杂的项目)所采用的流行的决策制定方法好。使用CBAM的经验告诉我们, 给人们提供适当的工具来组织其讨论和决策制定过程能够给复杂软件系统的规范化幵发 带来巨大收益。
12.7可进一步参阅的文献
[Kazman 01]和[Asundi 01]中包含了关于 CBAM 的 早期作品。[Boehm 81]和[JonesWj
12.8讨论题
(1〉CBAM所独有的一个方面就是创建了效用-响应_线。考虑一下阁12.2中给出的 曲线形式。您认为每条曲线是在什么环境下从涉众那儿获取来的?每条曲线代表的是什么 情况?
(2)在确定成本和收益时有很多不确定性因素。您通常必须处理什么不确定性原因? 您打算如何刻画、度量不确定性并使其最小?