作产品会设计到不少的领域,可是这些领域中出现的概念每每是比较稳定的,而他们的变化点在于由不一样的产品(这里指在这个领域作产品的人)
会根据他们对这个领域以及互联网的理解去设计他们本身的产品规划(流程,规则),做为需求分析的人员来讲大部分状况是咱们是基于产品的原型,prd进行
需求分析和设计的,这里面其实咱们应该作的第一个工做就是找出这个领域中不变的领域概念(领域名词)。
下面咱们就来介绍一下俺们大神使用面向对象的方式抽取领域名词的步骤。程序员
若是有原型就在原型中查找全部名词,从左到右从前到后一个名词都不放过,
把你全部认为能够做为备选的所有列出来。
若是没有原型就在客户或者产品的口中获取到反复出现的名词。学习
不要去经过本身的理解去修更名词叫法
不要去忽略本身以为不重要的名词
不要考虑表怎么存储
不要考虑非名词
这些陷阱很容易让后期返工。设计
删除和产品(领域)无关的名词。
好比:文案可能出现了故宫或者平台名等和本领域无关的名词。视频
必需确保每一个名词都是职责单一,不可替代的。
若是两个名词在概念上比较类似,可是表面词语不太同样的能够将这两个词归为一类,删除多余的名词。
通常去重的特征以下:不一样的名词体现出来的属性,功能和生命周期是同样的,只是描述不一样。
好比: 不一样角色的人在对同一个名词描述不一样,他们在新增的时候属性类似度很是高,流程也特别像。
通常的反问本身或者产品:对象
把属性名词聚合到其余跟内聚的对象里。
有一些名词都是能够分到一个组中去的,好比:程序员,人事,cto,都是公司的员工,因此能够分到员工对象中去。
这里只放自描述属性,其余的属性暂时不考虑,由于能够很方便的经过关系来描述,并且这个也常常会变化。blog
在描述一个概念的时候,必须经过很是多其余对象,并且常常提。
虽然产品没有提过,可是在实施的时候发生有不少对象有同样的特性。常见状况:生命周期
在作项目中咱们不免会作超出咱们认知范围内的领域知识,
找产品和客户搞清楚这些名词的含义,能够帮助咱们肯定这个名词的描述。
好比:课表:是学生报名以后根据所报年级的课产生的上课安排。开发
到目前为止领域中的核心名词都抽取出来了,也肯定了这个名词的含义,也就是说咱们的对象列表以及对象的职责也就肯定了。
下面就是该找这个对象的属性了。get
一个对象的属性大体分为几个类型:
自描述属性,关联属性,冗余属性,功能性属性原型
通常体现出来的就是手动输入。好比:名称,标题,描述等等
有依赖来源,即在别的地方是手动输入,可是当前功能是选择。好比:选择地区,选择类型
方便查询,减小复杂度。通常有如下状况:
个性化业务,纯粹是为了作功能
只留自描述,这个很难。须要深层次了解领域。经过领域驱动设计。这样能够经过面向对象,经过不多的关注点,对整个系统有个静态的认识。并且还能够判断出产品变动的时候对整个系统的结构(即数据存储)有什么影响。特别是出现新名词的时候。
须要根据产品的实际状况来判断这些属性怎么规划。
若是是想要快速、简单,可是4种类型都放到pojo上,开发是最快的,
可是同时确定也是扩展性最差的。
也须要根据产品的真实需求来判断怎么处理后面3种类型的属性。
这些都是和咱们大神交流学习得来的,看起来会有一些晦涩难懂,后面会根据一个实际项目进行举例。
最后附上大神博客园:
http://www.cnblogs.com/ansn001/