本节书摘来自华章出版社《系统架构:复杂系统的产品设计与开发》一书中的第3章,第3.5节对复杂系统进行思索,作者[美]布鲁斯·卡梅隆,更多章节内容可以访问云栖社区“华章计算机”公众号查看
3.5对复杂系统进行思索
系统思考者在对复杂系统进行分析或综合时,可以使用许多技巧来帮助自己思考。
3.5.1自顶向下及自底向上式的思考
自顶向下(top-down)和自底向上(bottom-up)是思考系统时的两种方向。本书的绝大部分内容都是按照自顶向下的方式来阐述的。我们先从系统的目标开始,然后思考概念及高层架构。在制定架构时,我们会反复地对架构进行细化,并在我们所关注的范围内,把架构中的实体分解到最小。这种方法相当于系统工程V字模型中的左侧部分[2]。
与之相对的思考方式是自底向上。也就是先思考工件、能力或服务等最底层的实体,然后沿着这些实体向上构建,以预测系统的涌现物。除了这两种方式外,还有一种办法是同时从顶部和底部向中间行进,这叫做由外向内(outer-in)的思考方式。
设计Team XT时,我们主要用的是自顶向下的方式,先确定系统及其功能,然后对系统进行分解,并确定其内部的各种过程。Team XT所在公司的CEO当然也可以用自底向上的办法来思考,例如CEO决定把16个最为合适的员工请到某间办公室,叫他们自己去组织一个团队,并研拟一套最有效的设计方案。
真正复杂的系统实际上是没有顶和底的,因此,我们在现实的工作中总是会使用由内向外(middle-out)的办法,也就是在系统层级中选定一个点,然后试着由该点开始,向上或向下探索1~2层。好的架构师应该要能够运用所有这四种方法。
3.5.2交替思考
Zigzagging(交替思考、Z字形思考)是Nam Suh在研究公理化设计(axiomatic design)时提出的一个术语[3]。Suh发现,我们在思考系统时,思维会在形式领域和功能领域之间来回切换,也就是先在其中某个领域尽可能久地进行思考,然后再换到另一个领域。
我们一开始在思考Team XT时,先认清了该团队的功能,那就是“研发设计方案”。然后切换到形式领域,并且确定了小组这一形式概念。把团队分解成小组之后,我们又切换回功能领域,思考每个小组都要完成什么功能,同时也思考“研发设计方案”这一功能应该如何涌现出来。在思考系统的其他层面时,我们依然可以运用这种在形式与功能之间反复跳跃的思维模式。