1.2良好架构的优势
这些复杂的系统能否满足利益相关者的需求并体现出价值?它们是否能够轻松地整合、灵活地进化?它们操作起来是不是很简单,运作得是不是很可靠?架构良好的系统确实是如此。
用最简单的方式来说,架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。在由人类所构建的系统中,架构可以表述为一系列的决策。
本书基于这样一个前提:如果我们能够找出使系统架构得以确立的决策点,并谨慎地做出决策,那么系统更有可能取得成功。本书想要把与早期的系统决策有关的经验与分析方式总结出来,并指出这些决策之间的共性。在过去30年间,分析与计算能力的提升使得我们拥有更多的选项以及更加广阔的权衡空间(trade space)。在很多领域,权衡空间的增长速度已经超越了我们理解它的速度。系统架构领域的发展,得益于一些从业者的努力,他们试着把在过去的设计工作中所得到的专业经验总结起来,并加以推广,使我们可以借此来解决以后可能出现的设计问题。
产品和系统所处的竞争环境是残酷的。波音公司(Boeing)对787客机及其复合材料的研发,就是一项“以公司的前途作为赌注”的行动。波音是全球两个大型客机制造商之一,它的核心业务模式,并不是把风险分散到许多小的项目中,而是把成功的希望寄托在一件产品上。与客机市场相比,移动设备的市场要更大一些,而且目前的竞争还是比较激烈的。尽管移动产品的研发风险显得更加分散(也就是说,某一件产品的研发投入额,在公司的总资金中所占的比例更小),但依然有黑莓(BlackBerry)及爱立信(Ericsson)这样的巨头在竞争中衰落。为了占领市场份额,系统必须要能够提供创新的产品、融合新鲜的技术,并满足多样的市场需求。为了在紧张的市场竞争中占得优势,设计系统时要优化它的生产成本,而且要通过多层次的供应链来进行生产。良好的架构决策可以使公司在艰难的市场环境中取得竞争优势,而不良的架构决策则会使大型的研发活动从刚一开始就变得难以推行。
由人类构建的每个系统,都有其架构。手机软件、汽车、半导体生产设备等产品,都是由早期研发环节中的几个关键决策所确定的。比如,在汽车的研发工作中,像发动机的安装方式等早期技术决策,会影响后续的很多其他决策。如果选择将发动机横置,那么发动机的模组设计、变速箱、传动系统、悬架系统及乘客舱都要受影响。系统的架构在很大程度上影响着产品的结构。
在设计复杂系统时,有许多早期的架构决策都是在不了解系统最终样貌的情况下做出的。这些早期决策对最终的设计有重大的影响。它们限定了性能的范围及可供考虑的生产地点,也决定了供应商是否能够分得配件市场(aftermarket)的收入份额。有时需要收集下游的信息以供上游使用,例如John Deere的农作物喷洒车,其宽度就必须小于生产基地两个柱子之间的距离。在这种情况下,开发团队能够明确地知道宽度的限制,因为它并不是一个未确定的或隐藏的因素,然而在农作物喷洒车的产能方程中,宽度却是一个主要的变量,因此,开发团队还是需要收集此信息。
本书的核心观点是认为这些早期决策可以加以分析和处理。尽管充满着不确定的因素,有时甚至不知道各个组件的详细设计情况,但是我们所做的系统架构依然要能经得起检验。架构系统的过程是柔性的,它是科学与艺术的结合。我们并不指望此过程能够成为或应该成为可以产生最优方案的线性过程,而是想在本书中把我们在系统架构工作中的一些核心理念及做法总结出来。我们的核心观点是:结构良好的创造活动要优于毫无结构的创造活动。
对决策的关注,使得系统架构师可以直接权衡每个决策的各种选项,而不用深入它们所对应的底层设计,这能够促使我们去评估更多的概念。同时,这套决策语言也使得系统架构师可以根据每个决策对系统效能的影响力来调整决策之间的顺序,很少有哪个系统的架构是一次就定好的,它们一般都是在逐步评估一系列决策之后才定出来的。
美国国家极轨环境卫星系统(National Polar-Orbiting Environmental Satellite System,NPOESS)的失败,就是架构决策妨碍系统发展的例子。NPOESS项目创立于1994年,旨在把原有的两个气象卫星项目合并起来,一个是民用的天气预报项目,另一个是军用的天气与云量图像项目。这次合并不是完全没有道理的,因为原有那两套相关数据的收集系统,展现出了13亿美元的合并机会[9]。合并之后的项目,在早期阶段就决定把原先那两个项目的设备所具有的能力都涵盖进来。比如,要把原有的三台设备所具有的功能,都集成到可见红外光影像辐射仪(Visible Infrared Image Radiometer Suite,VIIRS)中。
这项合并计划有一个假设,认为新项目的功能复杂度与原有那两个项目的复杂度之和呈线性比例。假如这个项目的需求和概念是从原先那些设备中得出的,那么这个假设或许能够成立。然而接下来还有一项决策,却令系统的架构完全无法发挥其效能,这项决策列出了一些脱离系统概念的新功能。比如,它要把原有的三台设备所应完成的任务,全都交给VIIRS这一台设备来完成,可是VIIRS的重量和体积,比原先那三台设备中的任何一台都小。
早期的一系列架构决策,导致NPOESS项目进展得漫长而艰辛,这些决策想要创建的那些详细设计方案,忽视了系统中的一些基本问题。而且,由于项目早期并没有指定一位架构师来负责对这些决策进行权衡,因此后面会遇到种种障碍。该项目于2010年取消,原来估计耗资65亿美元,实际上花了85亿美元。
本书并不会给出一套开发产品所用的公式,也不打算编成一本产品开发手册。我们不能保证按照本书的做法一定可以成功。经验告诉我们:错误的架构可能会毁掉整个项目,而“正确的”架构仅仅是创建了一个产品开发平台,产品可以依赖这个平台而取得成功,但也依然有可能失败。
本书的内容在许多方面是可以适用于各种系统的,这些系统有的是由人类构建的,还有的是经过社会发展或自然进化而形成的。无论是构建出来的系统,还是演化而成的系统,我们都可以分析它的架构。比如,研究脑部的学者,想要展开脑部的架构;城市的规划者,要处理城市的架构;政治学者与社会学者要理解政府及社会的架构,等等。本书所关注的系统,主要是由人类所构建的系统。