本节摘要:OAF(Object-Attribute-Function)分析是 USIT 的建模语言——把问题情境翻译成"对象带属性、属性承载功能、功能连接双对象"的标准结构。它是一切后续分析的底座:三轴展开查的是 OAF 图,冲突排查改的是 OAF 图,算子操作的还是 OAF 图。
OAF 的语法规则只有三条,但每条都有存在理由。
规则一:对象必须封闭世界内可指认。 写不进封闭世界的对象不许入图。这条规则逼着分析者对"要不要把物流环节画进来"这类问题当场表态,防止模型无限膨胀。
规则二:属性必须长在对象上且可辨识。 "用户体验差"不许出现——它不长在任何对象上。改写成"封片.开孔直径偏小"才算属性。属性是 OAF 图里唯一会被改造的东西,所以它必须精确到"可以被参数指认"的程度。
规则三:功能必须双对象、可及物。 标准句式"甲的某属性对乙做了什么"。密封胶(凭弹性)对护套接缝——封堵;饮用口(凭孔径)对液体——限流。只写一个对象的功能是无效功能,因为单对象功能没有改造杠杆:改功能必须通过改某一端的属性来实现。
以第 1 章的杯盖为例,完整 OAF 图的核心边:
封片[厚度 软化温度] --阻挡--> 热饮[温度 液面高度] 饮用口[孔径 边缘轮廓] --引导--> 液体流[流速 温度] 蒸汽[压力 上升速度] --顶开/逸出--> 封片[厚度] 嘴唇[耐热阈值] <--接触-- 饮用口[边缘温度]
四条功能边写完,"烫嘴"这个问题立刻有了结构:蒸汽对封片的"顶开"边、饮用口对嘴唇的"接触"边是两条致害路径,封片的"阻挡"边是不足功能(阻挡力不够对抗蒸汽压力)。问题不再是"体验差",而是"三条功能边中两条致害一条不足"——每条边都是潜在的改造入口。
OAF 建模的第二步是给每条功能边标注身份,共三种:
身份标注的价值在于对症下药的方向不同:有害功能要削弱或反转,不足功能要加强或换承担者,而加强一条边的最懒办法(加材料)往往正是冲突的来源——第 3.5 节会看到封片厚度的两难正是这么长出来的。
完整流程五步:列对象 → 逐对象盘属性 → 两两问功能 → 标身份 → 找最短致害链。第五步是点睛之笔:从被伤害对象(嘴唇)反向回溯,找出最短的那条"谁最终伤到了它"的路径,这条路径上的边就是分析主战场。
# OAF 图的最小实现:边表 + 功能身份 + 最短致害链回溯 edges = [ # (源对象, 功能, 目标对象, 身份) ("封片", "阻挡", "热饮", "有益"), ("饮用口", "引导", "液体流", "有益"), ("蒸汽", "顶开", "封片", "有害"), ("饮用口", "高温接触", "嘴唇", "有害"), ("封片", "阻挡", "蒸汽", "不足"), # 阻挡力不敌蒸汽压 ("液体流", "冲击", "封片", "有害"), ] def harm_chain(target, edges, seen=None): seen = seen or [] incoming = [(s, f) for s, f, t, r in edges if t == target and r in ("有害", "不足")] if not incoming: return [seen] if seen else [] out = [] for s, f in incoming: if s in seen: # 防环 continue out += harm_chain(s, edges, seen + [f"{s}--{f}-->{target}"]) return out or ([seen] if seen else []) for chain in harm_chain("嘴唇", edges): print("致害链:", " ".join(chain))
回溯输出把"烫嘴"还原成两条链:蒸汽顶开封片后高温液体经饮用口接触嘴唇、饮用口自身边缘高温直接接触嘴唇。第一条链更长但更根本(源头是蒸汽压力),第二条链是旁支。建模阶段就能看到:主战场在"蒸汽—封片"这条边,旁支在"饮用口—嘴唇"。后续三轴分析的两条线就此确定。
常见建模错误有四种,见下表,都值得自查:
| 错误 | 症状 | 修正 |
|---|---|---|
| 悬空属性 | 属性没写主语 | 补对象名,属性必须挂在名词后 |
| 单对象功能 | 只写"密封" | 追问"谁对谁",补齐双对象 |
| 身份错标 | 把不足标成有害 | 问方向:方向对强度不够是不足 |
| 图越画越大 | 对象超过七个 | 回封闭世界砍外援对象 |

架构图回答"系统由什么组成、怎么连接",是设计视角;OAF 图回答"问题在哪些对象之间发生、靠什么属性发生",是问题视角。同一系统的两张图长得不一样很正常:OAF 图只画封闭世界内对象、只画与不期望效应相关的边。拿着架构图做 USIT 是新手常见弯路——图太大,焦点全无。
以问题为中心画十到十五条为限。贪多的团队会画出三十条边的"全景图",但分析的火力只能覆盖主干。经验法则:先画最短致害链上的边(通常五到八条),再补与链上对象直接相关的边,其余不画。
可以,而且多条边往往正是问题所在。密封胶对接缝既有"封堵"(有益)又可能在老化后"释出小分子"(有害),双边并存提示这个对象身兼正反两职——改造它时要同时评估对两条边的影响。这种"一人分饰两角"的对象,常常是属性冲突的高发地,值得在图上用双色笔标出。