4.2.6 价值驱动的体系结构

系统存在的目的是为利益相关方创造价值。然而,这种理想往往无法完全实现。当前开发方法给利益相关方、架构师和开发人员提供的信息是不完全和不充分的。这里介绍两个概念:价值模型和体系结构策略。它们似乎在许多开发过程中被遗忘,但创造定义完善的价值模型可以为提高折中方案的质量提供指导,特别是那些部署到不同环境中且用户众多的系统。

1.模型概述

开发建设有目的的系统,其目的是为其利益相关者创造价值。在大多数情况下,这种价值被认为是有利的,因为这些利益相关者在其他系统中扮演着重要角色。同样,这些其他系统也是为了为其利益相关者创造价值。系统的这种递归特性是分析和了解价值流的一个关键。价值模型核心的特征可以简化为三种基本形式:价值期望值、反作用力和变革催化剂。

  • (1)价值期望值。价值期望值表示对某一特定功能的需求,包括内容(功能)、满意度(质量)和不同级别质量的实用性。例如,汽车驾驶员对汽车以60公里每小时的速度进行急刹车的快慢和安全性有一种价值期望值。
  • (2)反作用力。系统部署实际环境中,实现某种价值期望值的难度,通常期望越高难度越大,即反作用力。例如,汽车以60公里每小时的速度进行紧急刹车的结果如何取决于路面类型、路面坡度和汽车重量等。
  • (3)变革催化剂。变革催化剂表示环境中导致价值期望值发生变化的某种事件,或者是导致不同结果的限制因素。 反作用力和变革催化剂称为限制因素,这三个统称为价值驱动因素。如果系统旨在有效满足其利益相关者的价值模型要求,那么它就需要能够识别和分析价值模型。 一般方法,如用例方案和业务/营销需求,都是通过聚焦于与系统进行交互的参与者的类型开始的,这种方法有如下4个突出的局限性。
  • (1)对参与者的行为模型关注较多,而对其中目标关注较少。
  • (2)往往将参与者固化地分成几种角色,其中每个角色所在的个体在本质上都是相同的(例如,商人、投资经理或系统管理员)。
  • (3)往往忽略限制因素之间的差别(例如,纽约的证券交易员和伦敦的证券交易员是否相同,市场开放交易与每天交易是否相同)。
  • (4)结果简单。要求得到满足或未得到满足,用例成功完成或未成功完成。 这种方法有一个非常合乎逻辑的实际原因,它使用顺序推理和分类逻辑,因此易于教授和讲解,并能生成一组易于验证的结果。

    2.结构挑战

    体系结构挑战是因为一个或多个限制因素,使得满足一个或多个期望值变得更困难。在任何环境中,识别体系结构挑战都涉及评估。
  • (1)哪些限制因素影响一个或多个期望值。
  • (2)如果知道了影响,它们满足期望值更容易(积极影响)还是更难(消极影响)。
  • (3)各种影响的影响程度如何,在这种情况下,简单的低、中和高三个等级通常就已经够用了。 评估必须在体系结构挑战自己的背景中对其加以考虑。虽然跨背景平均效用曲线是可能的,但对于限制因素对期望值的影响不能采用同样的处理方法。例如,假设Web服务器在两种情况下提供页面:一种情况是访问静态信息,如参考文献,它们要求响应时间为1~3s;另一种情况是访问动态信息,如正在进行的体育项目的个人得分表,其响应时间为3~6s。 两种情况都有CPU、内存、磁盘和网络局限性。不过,当请求量增加10或100倍时,这两种情况可能遇到大不相同的可伸缩性障碍。对于动态内容,更新和访问的同步成为重负载下的一个限制因素。对于静态内容,重负载可以通过频繁缓存读页来克服。 制定系统的体系结构策略始于:
  • (1)识别合适的价值背景并对其进行优先化。
  • (2)在每一背景中定义效用曲线和优先化期望值。
  • (3)识别和分析每一背景中的反作用力和变革催化剂。
  • (4)检测限制因素使其满足期望值变难的领域。 最早的体系结构决策产生最大价值才有意义。有几个标准可用于优先化体系结构,建议对重要性、程度、后果和隔离等进行权衡。
  • (1)重要性。受挑战影响的期望值的优先级有多高,如果这些期望值是特定于不多的几个背景,那么这些背景的相对优先级如何。
  • (2)程度。限制因素对期望值产生了多大影响。
  • (3)后果。大概多少种方案可供选择,这些方案的难度或有效性是否有很大差异。
  • (4)隔离。对最现实的方案的隔离情况如何。 影响越广,该因素的重要性越高。一旦体系结构挑战的优先级确定之后,就要确定处理最高优先级挑战的方法。尽管体系结构样式和模式技术非常有用,不过在该领域中,在问题和解决方案领域的经验仍具有无法估量的价值。应对的有效方法源于技能、洞察力、奋斗和辛勤的工作。这个论断千真万确,不管问题是关于科学、行政管理还是软件体系结构。 当制定了应对高优先级的方法之后,体系结构策略就可以表达出来了。架构是会分析这组方法的,并给出一组关于组织、操作、可变性和演变等领域的指导原则。
  • (1)组织。如何系统性地组织子系统和组件?它们的组成和职责是什么?系统如何部署在网络上?都有哪些类型的用户和外部系统?它们位于何处,是如何连接的?
  • (2)操作。组件如何交互?在哪些情况下通信是同步的,在哪些情况下是异步的?组件的各种操作是如何协调的?何时可以配置组件或在其上运行诊断?如何检测、诊断和纠正错误条件?
  • (3)可变性。系统的哪些重要功能可以随部署环境的变化而变化?对于每一功能,哪些方案得到支持?何时可以做出选择(例如,编译、链接、安装、启动或在运行时)?各个分歧点之间有什么相关性?
  • (4)演变。为了支持变更同时保持其稳定性,系统是如何设计的?哪些特定类型的重大变革已在预料之中?应对这些变更有哪些可取的方法? 总之,体系结构策略就像帆船的舵和龙骨,可以确定方向和稳定性。它应该是简短的、高标准的方向陈述,必须能够被所有利益相关者所理解,并应在系统的整个生命周期内保持相对稳定。

    3.模型与结构的联系

    价值模型有助于了解和传达关于价值来源的重要信息。它解决一些重要问题,如价值如何流动,期望值和外部因素中存在的相似性和区别,系统要实现这些价值有哪些子集。架构师通过分解系统产生一般影响的力,特定于某些背景的力和预计随着时间的推移而变化的力,以实现这些期望值。价值模型和软件体系结构的联系是明确而又合乎逻辑的,可以用以下9点来表述。
  • (1)软件密集型产品和系统的存在是为了提供价值。
  • (2)价值是一个标量,它融合了对边际效用的理解和诸多不同目标之间的相对重要性,目标折中是一个极其重要的问题。
  • (3)价值存在于多个层面,其中某些层面包含了目标系统,并将其作为一个价值提供者。用于这些领域的价值模型包含了软件体系结构的主要驱动因素。
  • (4)该层次结构中高于上述层面的价值模型可以导致其下层价值模型发生变化。这是制定系统演化原则的一个重要依据。
  • (5)对于每一个价值群,价值模型都是同类的。暴露于不同环境条件的价值背景具有不同的期望值。
  • (6)对于满足不同价值背景需要,系统的开发赞助商有着不同的优先级。
  • (7)体系结构挑战是由环境因素在某一背景中对期望的影响引起的。
  • (8)体系结构方法试图通过首先克服最高优先级体系结构挑战来实现价值的最大化。
  • (9)体系结构策略是通过总结共同规则、政策和组织原则、操作、变化和演变从最高优先级体系结构方法综合得出的。

results matching ""

    No results matching ""