@Arno(surfacew) 近期研究模块化书籍注记。


Screen Shot 2021-12-15 at 3.38.08 PM.png

:::info 由于该书在大陆内没有出版,所以这里主要是笔者相对蹩脚的英文翻译,有些错误或者细节的缺失还请理解。
这里是关键章节的摘要和个人理解。 :::

Intro: Artifacts, Designs, and the Structures of Industries

设计是一种造物的能力,deeply rooted in the very nature of things.

  • Artifact 概念的越界,不仅仅是真实的制件,技术、知识、软件等也开始步入这个范畴,虚拟的如果软件代码产物真正意义上 Artifact 化。
  • 行业的定义:Indeed, products and technologies and firms and markets evolve interatively over time to create a complex adaptive system, which we call “an industry”。
  • 在论及复杂性和模块化程度的时候,作者说道:
    • Complexity is at the heart of the story of electronic computers.
    • 模块的设计带来的影响和价值,可以从工程设计(Engineering Design)以及经济组织(Economic Organization)的两个维度去思考
      • 从工程视角来看,模块化主要实现了人们能够分离协同工作,提升协同效率,让分工效率更为明确,因此也开始形成一些所谓的模块产品的设计原则 Modular Design Rules。也同时意味着,设计和产品的流程需要严格遵循这些规则才能够让整个模块化设计系统 Work 起来。
      • 在经济效益视角来看,这种严格的生产模式并非容易执行,但一旦成功实践,它对产品的影响力是非常大的,它能够很大程度上降低新设计的实现成本,让设计能够更加灵活同时能够在模块的层面上进行演进,是一种实现规模化产品产出的重要保证,具备很强的经济效应
  • 作者以 IBM 大型机 System / 360 为例,讲述了模块化的设计对硬件系统设计的冲击。
    • IBM System 360严格意义上的第一台模块化的计算机,它让生产的上下游(软硬件供应商)建立了模块的生态(文中叫做 Module Cluster)。
    • 文中提及了 Complex Adaptive SYSTEM(复杂的自适应系统)的设计原则,这块后续会在模块化的设计系统中展开。

The Microstructure of Designs

  • Artifacts:关注结构(Structure)和功能(Functions)

    • 为了描述结构,我们需要引入一种描述的媒介(Medium),实体的就好比用于塑性的黏土,虚拟的好比 UML 设计语言,这种形式化的结构展示是需要的。
    • 对于功能描述,我们需要结构化掉,往往也会和结构做更深层次的连接
  • 概念 Design:a design is a complete description of an artifact。一个设计是对一个制件的完整描述。

  • 概念 Design Parameters:一个完整的设计可以分解为更小的单元,我们称之为 Design Parameters。比如:红色的盒子和绿色的盒子,他们的差异就在于颜色这个设计参数。
  • 概念 Design Tasks:制件选择需要实现(embody)的设计参数。
  • 概念 Design Structure:一个制件的设计结构,包含了一系列的设计参数,以及模块之间物理和逻辑的依赖结构。
  • 概念 Task Structure:设计过程的任务结构,则包含了一系列的任务,这些任务需要去完成设计同时关注任务之间的关系。

本质上,DesignTasks 和 DesignStructure 是同构(isomorphic)的。

Design Parameters

为了保证思考的准确度,引入 Design & Task Structure Matrix(DSM or TSM)工具去描述设计结构和设计任务结构。
Screen Shot 2021-12-15 at 4.58.46 PM.png

  • 从功能点的视角来看,一个 Point 可以是一系列 DesignParameters 的组合。
  • 整个设计参数,也具备层级结构(Hierachical Design Parameters),换言之有些设计参数会决定其子设计参数是否有效可见。
  • Design Parameter 也是互相依赖的,可能存在复杂的依赖关系,从某种立场上来说尽量保证设计参数的独立性是简化设计的重要要素。
  • 而对于 Design Parameters 值的寻求,也是一种设计的艺术。这种空间意味着 N 个参数之前的选择 TradeOff 以及组合。这种选择需要智慧。

Design Structures with DSM

描述设计参数之前的关系结构。

Screen Shot 2021-12-15 at 5.29.45 PM.png
Screen Shot 2021-12-15 at 5.33.35 PM.png

Design Functions

  • 设计功能描述一般会分为:主要的(Primary)、次要的(Subsidiary)以及补充附加的(Supplemental)
  • 结构化的功能描述利于功能的表述

In general, an artifact’s value or worth in society is determinded by its functions, and not by its structure.

但结构支撑了功能的存在。

Artifact 的三个过程

  • 设计:产出 Artifact 的设计描述
  • 生产:根据设计描述产出产品
  • 使用:用户和产品实现交互

设计和生产的环境可以独立,也可以在一起,这里需要一种平衡。软件生产明显属于设计生产相对维系在一个团队的。(外包模式相对会有一些不同)

The Role of Designers

  • 创造式的设计,是无中生有
  • 增量式的设计,不断优化存量设计,提供更高质量的设计产出
  • 设计师需要关注未来在功能上的可变度,做出设计的空间

Design Task Process

  • 将设计参数的范围,分解为任务,去做具体的设计参数的选择(生成、赋值)
  • 生成的设计任务也会形成依赖结构

最终可以形成关系结构:

Screen Shot 2021-12-15 at 5.40.03 PM.png
在 DSM 图形中,我们也可以建立有效的设计变更的影响轨迹用于分析:
Screen Shot 2021-12-15 at 5.43.52 PM.png
而跨部门、跨团队的设计,其实也可以在一个复杂的设计参数图中体现出来协同的方式。通过类似:工作小组、通讯渠道、信息筛选、解决问题策略的报告去做连接。

而模块化本质上就是在优化这种设计之间及其复杂的连接,提供子域的解决方案和手段。作者提供了四种经典的设计结构:
Screen Shot 2021-12-15 at 5.48.54 PM.png

  • 结构一:独立解耦,也就是高内聚低耦合的表现,实际的项目中,这类形式是很难发现的,在复杂结构中,发现这类结构是一种优雅的方式,它是模块化设计的核心。
  • 结构二:严格分级和顺序结构,这类适合一种严格的顺序执行,无论是设计还是生产过程,设计参数之间是顺序依赖的。然而顺序结构是阻塞式的,不利于现实生活中的设计和生成。
  • 结构三:典型的紧耦合结构,两组设计参数交织在一起,紧耦合。模块化的设计,自然就是一个解耦合的过程,需要尽量将这类关联结构弱化掉。
  • 结构四:混合式的,即几种不同的耦合结构可能出现在一个大的关注结构里。

What is Modularity

  • 模块化是一个设计的结构,能够让设计参数和设计任务互相独立。
  • 模块化的概念在很多处理复杂系统的领域上都有所提及,对模块是什么的定义,这里总结了两个点:
    • 第一 interdependency within and independence accross modules
    • 第二 abstraction, information hiding, interface
  • 这里揭示了一种通用的控制系统复杂性的方式:高内聚 & 低耦合,抽象,封装(信息隐藏),接口
  • 利用设计规则(DesignRule)来消灭设计参数耦合,达到设计参数解耦的目的。设计规则的制定是一个渐进升级和纠正的过程。

Screen Shot 2021-12-16 at 1.14.34 PM.png

A complete set of Design Rules:

  • Architecutre:模块化的架构,需要明晰模块在整体扮演的角色
  • Interfaces:差异化的模块如何交互,包括它们的:组装、连接、通信等等
  • Integration protocol and testing standards:能够让设计者可以组装整个体系并且能够有效验证的标准

The Ecnomic System Surrounding Artifacts and Designs

Screen Shot 2021-12-16 at 1.37.00 PM.png

设计与制件(产品)依旧需要关联到宏观背景,比如:技术、政治、经济、商品市场、组织管理(让我想起康威定律)等背景。
价值评估技术(Valuation Technologies):评估设计产出的价值。引出价值函数 V(x)。价值的评估维度有几种:

  • 事前预测价值 v.s. 事后实际价值(Ex Ante Predicted Value v.s Ex Post Realized Value)
  • 个人价值 & 市场价值
  • 产品市场价值 & 资本市场价值

使用顶层的一些设计,来形成设计规则,做全局规则的生成。

这里我理解是需要洞见,对价值,对社会,对经济,对消费者需求 … 一系列的洞见。

The Modular Operators

类似于控制模块演变的设计操作。

Screen Shot 2021-12-16 at 3.06.41 PM.png
在一个复杂的适应性系统里面,操作可以定义为设计结构从存量到增量的变化动作。

6 个关键的模块操作:

  1. Splitting a design and its tasks into modules
  2. Substituing one module deisgn for another
  3. Augmenting —— adding a new module to the system
  4. Excluding a module from the system
  5. Inverting to create new deisgn rules
  6. Porting a module to another system

1 & 2 更关注非模块化系统进行模块化设计。这 6 个操作会让我们更好地分类设计变更。

:::info 这里和 Refactor 这本书里面涉及的各种 OO 面向对象的重构技巧有高度相似点,看来通用的设计准则在 OO里面果然有映射。 :::

🤔 前端模块重构的一些思考

The Creation of Modularity in Computer Designs

DEMO in Computer Hardware Manufactory, like IBM System 360.

Design Evolution via Modula Operators

:::info 介绍了大量评估模块化操作的成本和收益计算策略。这里不再赘述,比较形式化,很难直接度量真实的成本和收益,仅作参考。 :::

这里以:UNIX System Design Demo

FROM:

Screen Shot 2021-12-16 at 3.31.51 PM.png

TO

Screen Shot 2021-12-16 at 3.32.07 PM.png

Porting C Programming Lang. to top-level design.

The Emergence of Modular Clusters

  • ModularCluster 是模块化设计到一定规模之后,在行业级别产生影响时形成的组织结构
  • 以规模经济效益来考量模块化系统的生态,将更多企业、组织等社会效益加入考量
  • 规模化的基础(模块标准)可以由中间的组织来建立,比如 workgroup 或者独立的标准组织

Competition amaong Hidden Modules and Industry Evolution

  • 寻找隐式的模块结构去优化成本,提升规模效益