在网上也看了很多有关概念建模的理解和表述,但是都很难理解,非常的空洞,所以我决定写这个博客。谈谈我对概念建模的理解,希望大家能够提一些意见,大家一起进步。
概念
概念数据模型(CDM)中包含概念以及定义,还包括了概念之间地相互关系,概念的维度
在概念模型中概念是什么意思呢?既关键,又简单,用户经常被提及的概念。 关键是如果没有这一个概念,业务会被极大地改变,甚至不存在。简单是大部分概念都是容易识别地,如"顾客"、"员工"、"产品",用户经常被提及是指当你和你的建模用户在进行模型讲解或讨论过程中,这一概念会不断提及。
有了概念那么我们就需要对这些概念进行定义,在概念模型建模阶段,清晰完备地记录每个概念地含义是至关重要的。比如
1,辅助业务和IT决策。如果企业用户对某些概念做出不同的解释,二并非概念的实际意义,这时很容易做出不明智的决定,从而连累整个系统。
2,帮助记录和解决在同一概念上的不同观点。
3,提高数据模型的精确度。比如 订单行不能够脱离产品存在,如果对于产品缺乏定义或定义不清,我们便降低了对概念及其关系认识的信任。原材料或中间产品是产品吗?还是只有最终出售的东西才算产品?我们能够订购一项服务吗?
4,提供广泛的理解。仅仅一张纸就可以帮助我们理解非常复杂的事务,包括业务流程、应用需求,甚至整个行业中,使具有不同背景和角色的人就某些概念,相互交流、理解,就存在的问题进行讨论并达成一致。
5,范围定义及指导。通过概念和业务规则的可视化,便于我们分析和认知模型的子集
6,提供积极的分析。通过为项目开发建立易于理解的概念模型,将极大地增加我们认知概念地不同定义、在项目范围内地不同解释等各类问题地机会,节约大量地时间和经费。
7,建立IT和业务之间地融洽关系。
在概念层对概念的定义达成一致,那么对于更多的逻辑和物理分析将变得更为的顺利,并能有效节约时间。
概念数据模型中的概念之间的关系也非常重要。与逻辑模型和物理模型不一样的地方在于概念模型有多对多的关系,比如客户可以拥有一个或者是多个账户,每个账户都必须被一个或多个客户持有,每个账户可以设定一个或多个账户余额。
在概念数据建模中概念的维度也非常重要,因为我们需要清晰的知道在某个地方我们的销量是多少,在某个季度我们的销量是多少,这样就有利于我们对未来的目标进行准确的计划,而这里的地方和季度就是概念中的维度。 再比如账户余额是哪个国家的,又是这个国家的哪个区域的,账户是哪一年的,哪一个月的。
步骤
1,询问5个策略性的问题。
1),应用程序将要做什么?准确、清晰地用几句话记录下这个问题地回答,同时需要确信是否要替换现有系统,是否要提交新功能模块,是否要将现有地应用系统整合再一起。
2),"正如"还是"将要"你应该去了解,是否需要对当前业务环境进行考察,是否需要为当前业务建立模型。即这是"正如"视角。还是你应该去了解,是否需要对一个新地业务提案进行考察,是否需要为新地业务提案建立模型,即"将要"视角。
3),统计分析是必须地吗?统计分析是和数字打交道地领域,即使用各种量度,如总销售额或库存数量,并且可以再不同地粒度下进行查阅。
4),谁是用户?搞清楚哪个组织是最终地验证者。
5),灵活还是简洁性,在设计阶段,通常需要在灵活性和简洁性方面不段平衡、折中。
2,概念的识别与定义。
我们会用6个类别的名词(谁,什么,何时,何地,为何,如何)的名词或名词短语来识别概念。我们用这6中类别创建出概念模板,以掌握概念数据模型中的实体。
3,创建关系。
对于关系数据模型需要描述所有的业务规则,所以我们再关系概念层的目标就是明确实体间的相互关联,清晰掌握所有的规则。对于模型中的每一个关系线,我们应该提出8个问题,其中两个关于参与性,2个关于可选性,4个是有关于子类型的。
问题 | Yes | No |
实体A可以与多个实体B的实例相关联吗? | ||
实体B可以与多个实体A的实例相关联吗? | ||
实体A是否可以再没有实体B的情况下存在? | ||
实体B是否可以再没有实体A的情况下存在? | ||
实体A的实例是否有助于交流沟通 | ||
实体B的实例是否有助于交流沟通 | ||
实体A对于某概念生命周期的解释是否重要? | ||
实体B对于某概念生命周期的解释是否重要? |
前面两个问题是参与性问题,接下来两个问题是可选性问题,最后4个问题则决定了再概念模型的什么地方引入子类型。
创建维度。 对于维度模型,我们需要对上一步汇总的问题进行处理并创建一个粒度矩阵(Grain Matrix) 。粒度矩阵是一张二维表,列由根据业务问题而形成的维度级别构成。
学生数目 | |
金融资助指标 | 1 |
学期 | 1,2,3 |
年 | 1,2,3,4 |
院系 | 1,2,3 |
奖学金指标 | 2 |
毕业指标 | 3 |
高中申请指标 | 4 |
大学申请指标 | 4 |
4,明确最有效的形式。
有人需要查阅你所完成的工作,或者想使用你再建模过程中的发现,所以明确最有效的形式是非常重要的一环。搞清楚谁或者哪个组织是最终的验证者,来确认你对CDM的理解.比如如果验证者或者用户已经知道或者熟悉输建模符号,那么我们可以用统一建模语言去构建模型,如果用户不熟悉这个呢,那么我们可以做一个简单的可视化的模型去给用户看。
5,检查并确认。