软件系统的多维性能模型
技术的多变性需要一个系统性能的多目标模型。软件系统面临着如此多样化的需求,如果有一种虚拟进化的话,或许只有最适合的应用程序才能存活下来。
如果把性能定义为“系统与其环境交互以获得价值和避免损失的程度”,软件系统要包括四个要素: 边界,支持内部结构,输出效应器和输入受体。就像人类一样,人都有一个皮肤界限,内部的大脑和器官,代理肌肉的行动输出和感觉输入。计算机有物理外壳、主板结构、屏幕和键盘/鼠标“接收器”。软件有内存边界、内部程序结构和专门的输入/输出模块。
每个元素在系统性能中扮演着各自的角色,必须与其环境成功地交互。如果成功的交互通常会最大化系统获得收益的机会,并且最小化系统受损风险的话,那么将四个一般要素与两个一般的环境交互类型相结合,可以给出互联网应用系统性能网络(WOSP)的八个一般性能目标:
边界:管理系统入口以启用有用的入口(可扩展性)并拒绝有害的入口(安全性) ;
内部结构:控制和维持系统以适应外部变化(灵活性)和内部变化(可靠性) ;
效应器:管理环境的直接变更,以最大限度地提高外部效果(功能性)和最小限度地降低内部工作(可用性)
受体:管理对环境的感知,以支持数据交换(连接)和限制数据交换(隐私)
WOSP八个目标可以用一个网络来说明(参见图1) ,其中一个点到中心的距离就是该性能维度的程度。这个表现为一个区域,一个形状和目标的张力。Web 区域代表了系统的整体性能,因此更大的区域具有更大的适应度潜力。Web 形状是系统的性能描述,它随环境而变化; 例如,威胁环境可能需要更多的安全性。连接线是目标的相互作用,或者说是张力。可以把它们想象成不同张力的橡皮筋,连接着性能的维度,因此增加一个可能会突然拉回另一个。对于我们来说,WOSP 的目标没有一个是新的; 新的是他们的概念整合到一个共同的框架中。
一个系统的边界决定了什么可以进入和离开,可以被设计用来抵御外部威胁(安全)和接受外部数据的机会(可扩展性)。
可扩展性是一个系统利用外部元素的能力(例如一辆卡车可能会添加拖车,软件可以有扩展和插件)。人工工具的使用也以同样的方式扩展了性能,并且程序可以使用第三方插件,这相当于一只开放的人工手。然而,一辆汽车要通过拖车来延伸自己,它的拖链必须与拖车的链接相匹配,所以扩展性要求一个已知的链接形式。开放标准创造了这种好处,并代表了开放源码的价值。可扩展性是影响信息系统性能的关键因素。
安全性是系统防止未经授权进入、滥用或接管的能力(就像汽车拥有锁和钥匙,应用程序拥有登录和密码)。安全硬件是密封且防篡改的,进入-拒绝原则对于硬件和软件是相同的。病毒和黑客的威胁使边界防火墙和登录检查对系统生存至关重要。安全缺口是系统故障,因此是性能故障。安全性是信息系统性能的关键部分。
系统的内部结构可以设计为管理内部变化(可靠性)或外部变化(灵活性)。灵活性是一种系统在新环境中工作的能力,就像履带使车辆在复杂地形中工作那样) ; 同样,移动设备可以在复杂的网络区域接收信号。CSMA/CD 协议的性能优于更可靠但不灵活的轮询协议。灵活的关系数据库取代了更有效但不灵活的数据模型。大多数现代软件都有一个参数设置模块(例如 Windows 控制面板)来为硬件、软件或用户环境进行配置。灵活性是信息系统性能的另一个关键方面。
可靠性意味着一个系统在内部发生变化(如部分故障)的情况下仍然能够正常运行,能够正常运行是一件很棒的事情。可靠的系统几乎总是可用的,能在压力或负载下生存,如果受到影响,系统会优雅地退化降级,而不是灾难性地崩溃。在信息系统中,平均故障间隔时间测量的是随着时间的推移系统无故障运行的概率。同样重要的是快速恢复,无论是通过代码修复还是状态回滚。可靠性是至关重要的信息系统性能。
系统效应器改变外部环境,可以设计为最大效应(功能性)或最小化产生这种效应的成本(可用性)。功能性能是一个系统直接作用于其环境以产生预期变化的能力。关注功能性需求可以生成功能性很强的软件,人们为了新的能力而升级,因此功能性在信息系统性能中非常重要,甚至是系统存在的根本原因。
可用性是一个系统最小化行动的相对资源成本的能力。在同样的工作中使用更少的代码,精简指令集的性能优于复杂指令集。轻量级软件在后台运行良好,因为它使用很少的 CPU/内存。在20世纪80年代,图形用户界面取代了命令行界面,因为它们减少了用户的认知成本。在当今的网络世界,如果用户不满意的切换成本很低,所以可用性同样是信息系统性能的关键部分。
连通性为系统性能增加了一个社会维度,它既可以支持信息交换(连接性) ,也可以限制信息交换(隐私性)。连通性是一个系统与其他系统通信的能力。我们有时将行为与效应器联系起来,即行为发生在感觉引导的反馈回路中。同样,我们把信息和受体联系起来,因为受体处理创造了意义,即使是交流的行为也需要效应器。信息的交流最终结果来自受体以及随后的加工 ,就像效应器创造行动的最终结果一样。对于现代软件来说,连通性对于 信息系统的性能而言几乎是必需的。
隐私是一个系统控制自身信息发布的能力。保密性是工程师从软件的角度而不是从用户的角度给予隐私的名称。军方重视隐形飞机的原因和动物伪装自己的原因是一样的。在技术环境中,隐私是信息系统性能的关键部分。
WOSP 八个目标在概念上是模块化的; 定义并不重叠。理论上,任何维度上的任何性能水平都可以与任何其他维度相结合。在设计实践中,维度相互作用,系统必须满足所有需求。然而,概念模块性意味着它们的定义可能产生的任何两个这样的需求之间不一定存在的关系。
WOSP的实际意义
WOSP 模型可用于系统设计或系统评估。虽然性能可以被认为是绝对的,但 WOSP 模型将性能视为相对于环境的性能,因此性能没有“完美”的形式。在 WOSP 的八个目标中,四个通常是成功的元素——创建功能性、灵活性、可扩展性、连接性,四个是避免失败的元素——安全性、可靠性、隐私性和可用性。这是有用的,因为环境可以变化:
机会: 行动可以给能够收获它们的系统带来好处;
风险:行动可能损害不能处理危险的系统;
动态性:风险行动和机会行动的影响、损失和收益可以迅速改变。
如果性能有一个形状和一个区域,那么不同的形状可能更适合不同的环境。WOSP 模型通过为性能维度分配权重,帮助开发人员实现适合其环境的性能形状。
在传统的信息系统开发中,功能是首要目标,非功能性需求是次要需求。然而,许多软件系统最终会出现更多的错误或接口代码,经常由于意想不到的非功能或质量原因而失败。如果非功能性需求可能导致系统故障,需要将其定义为性能并对其进行修改。在 WOSP 模型中,功能与其他性能目标的区别仅仅在于表征更加明显。糟糕的可用性会使功能失效,就像糟糕的功能会使可用性变得无关紧要一样。
现代通信技术说明了性能的许多方面。手机可以让人们在任何时间任何地点通话,但必须是功能性的(语音质量) ,可用的(按键或虚拟键盘不能太小) ,可靠的(如果丢失) ,安全的(如果被盗) ,可扩展的(耳机,手机套) ,连接的(可以收发) 和私人的(防止窥探)。每个标准可能有不同的权重,但其中任何一个都可能是关键的。手机软件必须灵活地使用不同的设备/网络,同时还要能够对数据输入错误和电源故障有弹性。它必须是可扩展的,但安全性避免病毒攻击,在保持连通性的同时保护用户的隐私。一个信息系统如果具有如下特征,失败将不可避免。
无效的(Ineffectual):不能胜任工作;
无法使用(Unusable):用户无法使其工作;
不可靠(Unreliable):经常坏掉;
缺乏安全感(Insecure):屈从于病毒;
僵化(Inflexible):当技术或业务环境发生变化时失败;
不兼容(Incompatible):不能使用标准插件或数据;
时常断线(Disconnected):不能沟通; 及
不慎重( Indiscreet):透露个人或公司信息
WOSP 模型对于新技术设计者来说是一个有用的检查表; 成功需要许多原因,失败可能只需要一个。
WOSP 模型表明,如果在一个维度的性能提升上也会显著降低其他维度的性能,那么真正的性能提升可能不会成功。在图1中,只有总面积的增加才是进步,以牺牲另一个维度为代价增加一个维度可能不会产生这样的价值,突破可能需要在一个以上的 WOSP 维度上取得进展。
对于新的系统,WOSP 开始“松弛”并且包含很少的张力,因此增加性能目标通常也会增加整体性能。然而,随着系统的发展和 WOSP 面积的增加,目标的紧张度也随之增加。由于专业目标将系统拉向不同的设计方向,一个目标可以跨越另一个目标。同样地,特性蠕变可能导致难以使用并维护复杂臃肿的软件,并且一维的“进展”可能会反咬一口。性能目标之间的相互作用解释了一个奇怪的悖论: 成功产品的后续版本,经过大量的努力和增加许多额外的特性之后,可能会比原始版本执行得更差。
开发人员可以通过同时“拉动”两个或多个侧面来扩展系统; 例如,登录子系统(安全性)可能会按照名称欢迎用户并回忆他们的偏好(增加了可用性)。灵活性不需要否定可靠性,功能性不会降低可用性,互联网连接也不一定滥用隐私权。在 WOSP 模型中,明显的对立面(如安全性和开放性)可以通过创新来调和。
调和目标冲突发生在各维度的交叉点。传统项目按照专业(如接口和数据库设计)定义系统需求,因为它们需要不同的技能。为外接程序设计需要标准知识,而安全设计可能需要病毒知识。WOSP 模式欢迎这样的目标专业化。根据项目的不同,多达八个项目的专业团队可以使用单独的规范、代码和测试来设计不同的系统层。然而,这意味着一个设计要求超过那些规定,即他们的创新整合。
伴随着专业化,效率提高了,但集成度可能会降低,随之而来的是系统性能。敏捷和XP的项目方法通过鼓励每个人都参与到系统设计的各个方面来解决这个问题。它们的流行和成功表明集成在系统设计中和专业化一样重要。一体化可以通过两种主要方式与专业化相结合:
跨学科整合(例如全栈架构师):在各个专业之间进行调解,主持公共会议,协调交叉冲突,并创造协同效应;
跨专业团体:可能有四个组,一个用于操作(功能性和可用性) ,一个用于交互(安全性和可扩展性) ,一个用于偶然性(可靠性和灵活性) ,还有一个用于社交性(连接性和隐私性)
可以预期的是,复杂的新项目比简单的旧项目需要更多的整合,因此开发复杂的社会技术系统可能与传统的专业化一样需要创新的整合。
WOSP的理论意义
WOSP 模型解决的是系统的性能属性,而不是外部影响(如营销、政治和分销)对系统性能的影响。系统成本也不在 WOSP 的范围之内,因为它假设买家希望为更高的性能支付更多的费用。最后,WOSP 的逻辑假定可系统“世界”定义在四个层次之一: 机械的、信息的、认知的和社会的。每一个都依赖于前一个,因为软件依赖于硬件,但也出现了更大的需求和更大的潜力。例如,为了极大地提高系统生产力,社会层面需要合理的互动。为了应用 WOSP 模型,必须首先定义世界级别,因为该模型适用于任何信息系统级别,而不是全部适用。例如,一个系统可能硬件可靠,但软件不可靠; 或者硬件和软件可靠,但操作者不可靠; 或者与个人可靠地工作,但是当规模扩大到社会水平时就会崩溃。
系统设计理论(如瀑布方法)提出了实现已知目标的方法。然而,WOSP 模型解决了这些问题,并提出了一个系统性能的网络。当研究性能模型时,往往会将其他目标纳入其专业领域。例如,通用安全模型在通用安全概念下包括可用性、完整性、可靠性和机密性。
然而,增加容错(可靠性)的机制可以降低安全性,但如果可靠性是安全性的一部分,那么这些机制就是不合逻辑的。可靠性和安全性的区别就像维护社区的工程师和保护社区的警察的区别一样,前者旨在提供服务,后者则拒绝提供服务。同样,保密(隐私)也未必是安全的一部分,每个专业都包含其他专业是不合逻辑的。
技术接受模型(TAM)认为,可用性在信息系统中可能和有用性一样重要。它质疑一个过于难以使用的强大系统的性能价值。然而,对于 Web 用户来说,安全和隐私标准可能比现在传统的功能和可用性标准更加重要。人们可以扩展原来的 TAM 理论,使安全成为“有用”的一部分,因为不安全的系统是没有用的。然而,同样的观点可能会使可用性成为有用的一部分,因此这个观点就站不住脚了。拓展 TAM的可用性概念也好不到哪里去。当可用性度量包括对任务(功能)的适应性和错误容忍度(可靠性)时,可用性,就像安全性一样,就变成了一个令人困惑的包罗万象的性能术语。当灵活性的支持者认为可伸缩性和连接性是灵活性的一个方面时,概念就会扩展,以填补理论空间并造成混乱。WOSP 方法不是概念上的扩展,而是概念上的约束或“模块化”,例如可用性、安全性和灵活性等概念,将它们全部置于系统性能的一般标题之下。
在虚拟现实成为现实之前,互联网一直是技术极客的天下。在创建今天的在线社会之前,很多网络理念被学术界和工业界所忽视。在人人都有手机之前,手机都是实验室里的玩具。这些例子以及更多的例子说明了性能和进步是多维的。互联网提供了大规模的连接; 文本电子邮件易于使用; 网络是可扩展的; 手机是灵活的。每一个都增加了一个不同的系统性能因素网络,因此进展可能看起来是不可预测的,但是这种多样性是多维发展的本质。虽然有些人认为进步是单一方向上前进,但是 WOSP 模型把它看作是一列在多条轨道上的火车,在它们之间切换以增加进步时的覆盖面积。
这个模型隐含的意思是,今天的趋势不一定是明天的创新。从本质上讲,专家是过去的专家,所以他们预测的进步并不总是发生。WOSP 模型表明,开发系统较弱的方面可能比开发较强的方面产生更大的性能提升,尽管后者通常创造了成功。如果性能是 WOSP 区域,最大的面积增加是通过扩展最短的维度来实现的。
小结
如果软件按照生命进化的方式进化,那么信息系统的进化将会采取多种形式。有趣的是,杀手级应用程序(如电子邮件和聊天)功能简单,至少在开始阶段是这样。也许更少的能力创造了全方位性能扩展所需要的 WOSP 的松弛。用户不仅需要功能,他们还需要可用性、可靠性、灵活性、安全性、可扩展性、隐私性和连接性,这些都是性能的要素。
随着信息系统变得更加复杂,性能集成问题将变得更加关键。信息系统是多维性能空间中形式的综合,其中每个设计选择影响每个维度。必须认识到我们所面临的问题: 系统的整体性大于各个部分的总和。对于跨领域的系统设计,如果没有跨学科的人才来进行,就不是真正的系统设计。推进一体化和专业化,实现平衡和卓越,都需要理论与实践。