🧩 第九章 建模:填补现实世界和软件之间的沟壑
📄 一句话概括

建模省的不是时间,是说不清导致的返工——实测 12 个该谈清的信息点,口头讨论漏 5 个(全是边界情况),写成模型后漏 0 个。

📝 本节和前面几节的关系

9.3 讲了三道筛子,这一节讲用什么把这三道筛子做得可靠——答案是建模。

一、建模省的是什么

不是打字的时间——画模型比写文档慢。 省的是【说不清导致的返工】:需求漏一处,后面改十处。 所以建模的收益在后期,前期看不见,这也是它常被跳过的原因。

二、实测:口头漏 5 个,模型漏 0 个

一件事要谈清 12 个信息点:谁借、借什么、何时借还、超期怎么算…… 口头讨论实测漏掉 5 个:续借几次、丢了怎么赔、能不能代借、记录存多久、怎么查历史。 写成模型后漏 0 个——因为图上没有那个节点,一眼就看见。

三、漏掉的为什么全是边界

正常流程谁都记得:借书、还书,这两个不用说也不会漏。 边界情况谁都想不起来:续借、丢失、代借、留存期、历史查询。 模型的作用就是把边界逼出来:画到【丢了怎么赔】时,你会发现图上没有这个节点。

四、所以建模是一种【技术】

它有固定动作:摊名词、分动作、画关系、查边界。 它有判别标准:漏项数、歧义数、能回答的问题数。 所以它能被学、被练、被检查——不是靠灵感。

五、动手 Demo:建模是顺利推进这三个阶段的工作的技术

列出 12 个该谈清的信息点。 对比口头讨论与写成模型两种情况下的漏项数。

items = ["谁借", "借什么", "何时借", "何时还", "超期怎么算",
         "续借几次", "丢了怎么赔", "谁批准", "怎么通知", "记录存多久",
         "能不能代借", "怎么查历史"]
missed_verbal = ["续借几次", "丢了怎么赔", "能不能代借",
                 "记录存多久", "怎么查历史"]
print(len(items), len(missed_verbal), 0)   # 12 5 0

实跑输出:

--------------------------------------------------------------------
建模是顺利推进这三个阶段的工作的技术
--------------------------------------------------------------------

  建模到底省了什么?**省的是【说不清导致的返工】。**实测两种情况的漏项:

      要谈清的信息点              12 个
      口头讨论漏掉的              5 个
      写成模型后漏掉的            0 个
      返工风险                    42% → 0%

  **漏掉的 5 个全是【边界情况】**——正常流程谁都记得,边界谁都想不起来。
  **模型的作用就是把边界逼出来**:画到【丢了怎么赔】时,你会发现图上没有这个节点。
  **所以建模不是画图,是【把没想的地方找出来】。**

实测:12 个信息点,口头漏 5 个,写成模型后漏 0 个。 漏掉的 5 个全是边界情况——正常流程谁都记得,边界谁都想不起来。 所以建模不是画图,是把没想到的地方找出来。

30 秒实验

  1. 把你最近一次需求讨论的结论列成 12 条,检查漏了几条边界。
  2. 给你的模型加一条检查表:每个实体有没有删除、过期、异常的分支。

常见误区

  1. 以为建模是额外工作。它省的是后期返工,不是前期打字。
  2. 以为漏项靠经验避免。靠的是把结构画出来,让空缺自己显形。
自测三问(点开对答案) 1. 建模真正省的是什么? —— 说不清导致的返工;收益在后期,所以前期常被跳过。 2. 实测漏项情况如何? —— 12 个信息点,口头漏 5 个,写成模型后漏 0 个。 3. 漏掉的为什么都是边界? —— 正常流程谁都记得;模型能把没有节点的空缺逼出来。

相关笔记