数据的三重奏:业务实体、数据对象与属性
695
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
打通COSMIC与NESMA/IFPUG的概念鸿沟
在软件规模估算领域,COSMIC与NESMA/IFPUG如同两束探照灯,照亮了数据与功能的复杂关系。它们虽路径不同,却共享着对“数据”这一核心要素的深刻洞察。其中,NESMA的逻辑文件与记录类型,COSMIC的兴趣对象,这些术语的差异常令实践者困惑。究其本质,这些概念均指向数据世界的两个关键维度:业务领域与系统领域。本文试图建立一个统一的概念框架,用“业务实体-数据对象-属性”三个层次,打通COSMIC与NESMA之间的概念壁垒,让两种方法在数据层面实现清晰的对话。
一、业务之眼:聚焦“业务实体”
在业务领域的高地上,用户关心的从来不是数据如何存储,而是业务对象本身的状态和流转。我们把这种业务层面可识别、可处理的整体对象,称为业务实体。
业务实体是业务的最小有意义数据单元,是业务能力的原子交付物,业务方对其状态与完整性全权负责。
例如,当一位销售经理问“我的订单怎么样了?”时,他关心的是一笔交易的整体状态——是否已付款、是否已发货、客户是否满意。他并不关心这笔交易的数据在系统中是存储在一张表还是拆成了订单头和订单明细两张表。在这个语境下,“订单”就是一个典型的业务实体。
然而,业务实体并非永远是一个简单的整体。当业务本身的复杂性上升时,业务人员对“实体”的认知也会发生分层。以保险合同为例:
一份保险合同在业务上无疑是一个整体,但保险公司的业务专员在日常工作中,可能需要独立地维护“合同主信息”(如投保人、有效期)、“合同标的物清单”(如被保的车辆或房产)、“合同受益人清单”(如受益人和受益比例)。对他们而言,这三个部分虽然同属一份合同,但在功能上是三个独立的、可维护、可查询的业务对象。
在这种情况下,我们可以说,“合同”是一个复合业务实体,而“合同主信息”、“合同标的物清单”、“合同受益人清单”则是构成它的原子业务实体,或是业务层面的“子实体”。这正是NESMA方法中逻辑文件概念的来源——逻辑文件正是从用户视角识别出的、一组逻辑相关的数据,它可以直接对应到一个原子业务实体。
核心结论:NESMA的逻辑文件 ≈ 业务实体。它是站在业务立场定义的、承载核心价值的数据单元。
二、系统之眼:雕琢“数据对象”
当视线转向系统实现层,我们需要考虑如何用技术手段将业务实体落地。这时,数据被拆解为计算机可以独立存储和管理的单元,我们称之为数据对象。
数据对象是系统的最小有意义存储单元,开发人员对此负责。它反映了技术实现的存储粒度,服务于高效存取与操作。
数据对象与业务实体之间是“实现”与“被实现”的关系。一个业务实体可以对应一个数据对象,也可以对应多个数据对象。这种对应关系,取决于业务实体的复杂度和技术实现的选择。
场景一:1对1的关系
如果一张订单上只有一个商品,业务逻辑相对简单,那么系统可能只需要一张“订单表”即可存储所有信息。此时,业务实体“订单”对应一个数据对象“订单表”,业务实体与数据对象之间是简单的一一对应。
场景二:1对多的关系
如果一张订单上可以有多个商品,为了避免数据冗余和更新异常,系统通常会采用范式化设计,将订单拆分为“订单头表”和“订单明细表”两张表。订单头存储订单的全局信息(如订单号、客户ID、总金额),订单明细存储每个商品的具体信息(如商品ID、单价、数量)。此时,一个业务实体“订单”对应了两个数据对象——“订单头”和“订单明细”。两张表通过外键关联,共同表达同一个业务实体。
这正是COSMIC方法中兴趣对象概念的内涵。兴趣对象关注的是软件能够识别的、持续存储的数据结构,无论它在业务上是否独立。因此,在COSMIC视角下,“订单头”和“订单明细”是两个独立的兴趣对象。
有趣的是,这也与NESMA中的记录类型(RET) 完全对应。在NESMA中,一个逻辑文件(业务实体)可以包含多个记录类型,记录类型正是数据对象层面的概念。例如,“合同”这个逻辑文件可以包含“合同主信息记录”、“合同标的物记录”、“合同受益人记录”三个记录类型。
核心结论:NESMA的记录类型(RET)≈ COSMIC的兴趣对象 ≈ 数据对象。它们是系统为实现业务实体而设计的物理或逻辑存储单元。
三、属性:构成数据的原子内容
无论是业务实体还是数据对象,都需要有具体的描述信息,这些描述信息就是属性。
属性是数据对象内部的细节,构成了数据对象的原子内容。
一个数据对象可以有一个属性,也可以有多个属性。例如,“订单头”可以有订单号、客户ID、订单日期等属性;“订单明细”可以有明细ID、商品ID、单价、数量等属性。
当多个数据对象共同表达同一个业务实体时,它们之间需要通过某种方式建立关联。这种关联关系通常通过一个特殊的属性来实现——即外键。外键是连接数据对象的桥梁,它告诉系统哪些数据对象属于同一个业务实体。
以订单为例,订单明细表中的“订单号”字段就是外键,它指向订单头表的订单号。正是这个属性,将分散在两张表中的数据重新组合成了一个完整的“订单”业务实体。
核心结论:属性是数据的原子颗粒,外键则是维系业务实体完整性的粘合剂。
四、三个层次的统一框架
基于上述分析,我们可以构建一个从宏观到微观、层层递进的数据概念框架:
| 层次 | 概念 | 定义 | 对应NESMA | 对应COSMIC | 责任主体 | 示例 |
| 宏观层 | 业务实体 | 业务视角的最小有意义数据单元,业务能力的原子交付物 | 逻辑文件 | ——(广义兴趣对象) | 业务方 | 订单、保险合同 |
| 中观层 | 数据对象 | 系统视角的最小有意义存储单元,实现了业务实体 | 记录类型(RET) | 兴趣对象 | 开发方 | 订单头、订单明细、合同主信息 |
| 微观层 | 属性 | 构成数据对象的原子内容 | 字段 | 兴趣对象的属性 | 开发方 | 订单号、商品数量、投保人姓名 |
关键纽带:外键——当一个业务实体映射为多个数据对象时,需用外键属性显式建立关联,确保系统知晓它们共同描述同一业务实体。
五、殊途同归:统一视角下的双模型
通过引入“业务实体-数据对象-属性”三层模型,COSMIC与NESMA的核心数据概念得以贯通:
业务实体 = NESMA逻辑文件 = COSMIC广义兴趣对象:这是业务侧的最小意义单元,关注“用户能识别什么”。
数据对象 = NESMA记录类型(RET) = COSMIC狭义兴趣对象:这是系统侧的最小存储单元,关注“软件能存储什么”。
二者并非矛盾,而是观察角度的不同:
NESMA的逻辑文件站在业务视角,关注用户可见的数据组。
COSMIC的兴趣对象站在系统视角,关注软件可存储的数据结构。
当一个业务实体对应多个数据对象时:
NESMA用一个逻辑文件包含多个记录类型来描述。
COSMIC用多个兴趣对象来描述。
两者在数据对象层面实现了完美的概念对齐。
六、示例印证
以保险合同系统为例:
|
业务实体 |
NESMA视角 |
COSMIC视角 |
|
合同(复合业务实体) |
逻辑文件:合同 |
兴趣对象:合同(广义) |
|
├─ 合同主信息 |
记录类型:合同主信息 |
兴趣对象:合同主信息 |
|
├─ 合同标的物清单 |
记录类型:合同标的物 |
兴趣对象:合同标的物 |
|
└─ 合同受益人清单 |
记录类型:合同受益人 |
兴趣对象:合同受益人 |
在NESMA中,“合同”作为一个逻辑文件,包含三个记录类型;在COSMIC中,系统实现时拆分为三个兴趣对象分别存储。两种描述方式,在数据对象层面实现了统一。
七、结语:穿透术语,直抵本质
COSMIC与NESMA对数据的命名差异,本质是业务视角与系统视角的自然分野。业务实体承载着用户的价值诉求,数据对象则支撑着技术的优雅实现。
理解“业务实体-数据对象-属性”的三层结构,如同获得一把钥匙,既能打开估算模型的黑箱,也能洞见业务与系统协同的底层逻辑。通过这套统一框架,我们可以清晰地看到:
NESMA的逻辑文件指向业务实体,记录类型指向数据对象
COSMIC的兴趣对象同样指向数据对象
两者在数据对象层面实现了概念的完美对齐。这种统一视角的意义,不仅在于帮助我们更好地理解两种估算方法,更在于让我们看清一个本质:无论是业务分析还是技术实现,数据始终是软件的核心。而理解数据的层次性,是打通业务与技术的关键——唯有在这双重维度间自由切换,方能精准度量软件世界的复杂之美。
麦哲思科技任甲林
麦哲思科技(北京)有限公司总经理 敏捷性能合弄模型评估师 认证的Scrum Master 认证的大规模敏捷顾问SPC CMMI高成熟度主任评估师 COSMIC MPC,IAC 成员,中国分部主席
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
白皮书上线