mcpField
L
layers-conceptual-model

layers-conceptual-model

github.com/jamiemill设计与 UI3132.0k 次安装22 周前更新
代码仓库

关于 layers-conceptual-model

用于构建产品概念模型的设计技能,梳理对象、关系、操作、状态和词汇。它提供多种决策方法,帮助模型贴合用户需求,但不规定固定流程。

主要功能

  1. 01识别领域对象及其边界
  2. 02梳理对象关系与角色
  3. 03定义对象操作和状态变化
  4. 04统一产品概念词汇
  5. 05按设计问题选择合适方法

适用场景

  1. 01从研究记录中提取候选对象
  2. 02厘清产品实体之间的关系
  3. 03建模影响操作的状态与转换
  4. 04解决同一概念的不同命名

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jamiemill/layers-skills --skill layers-conceptual-model

安装后在 Claude Code 中输入/layers-conceptual-model确认已加载。

详细介绍

/layers-conceptual-model

假设已加载 /layers-intro。此技能是一套技巧库,而非脚本——请参阅其中的“如何使用这些技能”。

概念模型是最常被忽视、却承载着关键内容的一层。它定义产品所识别的对象、对象之间的关系、对象可能处于的状态,以及描述这一切的词汇——这是对产品如何建模其领域所作的审慎决定,与任何界面无关。

它不是用户杂乱的心智模型(那属于领域层),也不是数据库架构、线框图或流程。但这个模型与工程师实际构建的内容之间的差距很重要:未经审视的巨大差距既是 UX 债务(用户面对的产品与模型相矛盾),也是技术债务(系统难以演进)。


这一层需要做出的决定

  • 产品识别哪些对象,以及每个对象的边界在哪里
  • 这些对象之间有什么关系——基数,以及对象担任多个角色时为这些角色命名
  • 用户可以对每个对象做什么,或使用每个对象做什么
  • 对象可能处于哪些状态,以及哪些状态转换很重要
  • 产品的词汇——一个概念对应一个名称,一个名称对应一个概念

如果这些问题都没有真正待定的部分,那么你现在可能不需要这一层。请直接说明,而不是为了做而做。


准则——让模型保持准确

无论按什么顺序,都可以将这些准则应用于你产出的内容。它们是这一层中最有价值的部分。

  • 只建模真实对象。 真正的对象必须是可实例化的(可以有多个)、有结构的(拥有自己的属性),且有用的(用户本身就关心它)。这能避免两种错误:把属性提升为对象,以及——更常见的——把实例误认为对象:“CAC”和“ROAS”不是对象,而是同一个对象——Metric——的实例。当多个名词属于同一类型时,应将类型建模为对象;具体名称则是实例或取值。
  • 真正属于关系的属性。 如果某个属性只是模型中另一个对象的名称或 ID,就应将它建模为关系,而不是重复存储。
  • 对象承担多个角色时,为角色命名。 写“属于一个 User(作为推荐人)”,而不是“属于一个 User”。
  • 不要臆测添加内容。 每个对象、属性、操作和关系都应能追溯到明确提出的用户需求。在这里扩展范围会影响上方的每一层。(能追溯到策略词汇不算——策略用语还不是对象。)
  • 能建模为对象 ≠ 应该一开始就设为一等对象。 “只建模真实对象”这一检验能告诉你某个东西可以成为对象——但不代表产品就应该将它确立为一等、持久且有状态的实体。这样的提升是一项有成本的设计押注。应以具体用途为依据:什么流程或任务要求这个东西必须持久存在、保留状态并被再次访问? 如果没有这样的用途,它就是临时的,或是为时过早。而如果某个对象的存在完全源于尚未验证的策略押注,就应将其标记为暂定——把它视为假设,不要“定案”,在押注得到验证之前,也不要基于它构建上层。
  • 动词要精确。 通用动词(Edit、Delete、Update)是否掩盖了现实后果不同的操作?“Edit address”混淆了更正拼写错误(直接覆盖即可)和记录搬家(应保留历史记录)。当一个通用动词可能表示实质不同的事情时,就应分别命名这些操作——“Correct address”和“Register change of address”并非啰嗦,而是精准。
  • 实现不等于设计。 如果讨论开始偏向某个东西如何存储、生成或计算,就应将话题引回用户可以做什么,以及引用该对象的内容会发生什么。对于确实与实现紧密交织的问题,应标记出来,留待与工程团队讨论,而不是过早强行给出答案。

技法

根据当前需要做出的决策选择合适的技法——不要全部都用。

技法用途
名词搜集 + OOUX(Sophia Prater)从研究资料或领域笔记中提取对象。当你需要从自然语言材料中挖掘信息时,这是默认选择。根据上文的“仅保留真实对象”测试,将名词分为对象/属性/实例或取值/暂不纳入(UI 元素、含糊的抽象概念、伪装成名词的操作)。
对象定义明确一个对象:它是什么(用一句话描述,从用户视角出发)、它的属性、它的关系(基数 + 角色名称)以及它的操作。
先勾勒流程(向前推演,向后回溯)对象性尚不确定——某样东西是否应成为持久对象,取决于它的使用方式。先用面包板法梳理流程(/layers-interaction-flow),看看哪些内容必须持久存在、保存状态或可供用户返回,然后再回来,只对这些内容进行正式建模。这通常是区分真实对象与临时对象最快的方法。
关系对象图(erDiagram)一起查看对象及其关系,找出缺失、颠倒或多余的连接。||=恰好一个,o{=零个或多个,|{=一个或多个;乌鸦脚放在“多个”一侧;标签按第一个实体 → 第二个实体的顺序读取。
状态转换图(stateDiagram-v2)适用于状态变化会影响用户操作的对象——列出状态、状态转换,以及每个状态禁止的操作。
操作(CTA)清单将用户可执行的所有操作跨对象汇总在一处——形成产品的行动号召词汇表。把它们放在一起列出(而不是按对象逐一列出),才能发现不一致(同一种操作有 Add、Create、New 等不同说法)和过度扁平化(一个动词掩盖了不同的操作)。
通用语言清单统一命名。对每个有争议的概念,记录选定的术语、舍弃的备选词及原因。每个概念只用一个名称,每个名称只表示一个概念——在 UI、帮助文本、API 名称和内部交流中都保持一致。
语义 IxD/操作语法(Rosenberg)审查多个操作和对象之间动词使用的一致性与准确性。
事件风暴——命令/策略(Brandolini)适用于流程繁重的领域:从发生的事情入手,反向梳理涉及的对象。
卡片分类用户或团队对词汇的理解不清楚或存在分歧。
走查现有产品适用于重新设计:当前 UI 展现了隐含模型——将其与用户的实际思维方式进行比较。

对于任何存在相关问题的对象,也要探查 /layers-intro 中的时间性决策——中间操作状态、读取模型延迟、关系的时间性、删除语义和历史记录。


与设计师协作

找出上述哪些决策当前需要解决。提出合适的技法:有材料可挖掘时用名词搜集,重新设计时走查产品,若对象已知且只需确定其形态,则直接进行对象定义。只做下一步有用的事,不要把整套工具都用一遍。

只记录最终留下的内容——已敲定的对象定义(以及仍属暂定、有待验证假设或流程梳理的定义)、能体现真实关系或生命周期的图表、术语决策和待解决的问题(定义仍不扎实的对象、留待工程团队决策的事项)。不要写设计师不会重读的报告。

如果尚未开展领域研究,请直言:在有证据之前,这个模型只是假设。

当对象和操作稳定后,下一步自然是设计用户如何在它们之间流转——/layers-interaction-flow。

评论

支持 Markdown