2.4.1 概念建模
概念建模(Concept Modeling)的主要目的是将业务需求转换为数据需求,站在软件的角度将业务需求结构化和系统化。通过概念建模,所有的业务需求都可以归结到对象(包括对象属性的定义)与对象之间的关系上。换句话说,通过对象与对象之间的关系,可以描述现实中任意一个事物,以及组织对事物的管理要求。
概念建模是业务需求与软件开发的桥梁。在保证概念模型中对象、对象属性、对象之间的关系被完整清晰定义的前提下,概念模型在形式上也可能容易被业务人员所理解,这涉及概念建模的语言和工具的选择。当前,业内常用的概念数据建模工具有E-R实体与关系模型、UML统一建模语言和OPM对象过程模型。
(1)E-R实体与关系模型
E-R模型以两类要素——实体(Element)和关系(Relationship)为基本构件,来描述业务需求。其中,实体类似于面向对象编程中的对象,关系类似于面向对象编程中的方法或事件。
如图2.8所示,其中的业务对象有合同工、员工、组织单元、岗位和技能,事件则有雇佣、终止、离职、转岗、晋升、评价等。对象之间还有“被拥有”与“拥有”“管理”“汇报给”等关系类型。
(2)UML统一建模语言
UML是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,在软件开发工程师之间比较常用。UML中包括功能模型、对象模型和动态模型,由模型元素(Model Element)、图(Diagram)、视图(View)、通用机制(General Mechanism)等几个部分组成。
(3)OPM对象过程建模
相比UML统一建模语言,OPM对象过程建模的方法更简单,不仅可以用于软件开发领域,也可以用于其他产品的设计和建模。
图2.8 E-R概念数据建模方法举例
如果从模型学的角度,世界基本由三种要素构成,即物(Object)、事或过程(Process)和关系(Relationship)。从时间变迁的角度,物是物理或信息上的静态存在(Existence);过程是一种时间和动作序列化的动态存在(Happening);关系则是物与物之间、过程与过程之间、物与过程之间的相互关联,可以表现为结构(Structure)或行为(Behavior)。世界或世界的某部分,都可以用这三方面的要素建构或解构。在这种思想的指导下,诞生了很多模型方法论,通用性比较强又相对简单的是对象关系方法论(Object-Process Methodology,OPM)。
在OPM方法论中,人们(用五官或理性思维)看得见也可言说的关键要素只有两类,即对象(Object)和过程(Process)。关系则只能根据最终结果或输出来意会,难以言说或书面化,它是现实世界中的“玄”和“玄之又玄”。过程对对象的影响主要有三种:
1)过程消耗或消灭对象,比如制造过程要消耗原材料;
2)过程催生或创造对象,比如制造过程产生副产品或产成品;
3)过程改变对象的状态,比如制造过程将所使用的设备设置为“忙”的状态。
在制造过程中,人、机、料(含原材料、在制品和产成品)和环是对象,法和测是过程。此外,对象还可能是过程的操作者(Operator),过程由对象触发或控制;对象还可能为过程提供支持(Instrument),过程的推进依赖某些工具或设备。
用OPM的方法描绘的通用制造系统模型如图2.9所示。
图2.9 用OPM描述的通用制造系统模型
由图2.9的模型图,可以得出以下结论:
1)制造系统的核心作用是转化,即将能源、人力、原材料等资源转化为产品;
2)制造系统的运行过程中还会产生一定的无价值副产品,比如排放、返工、等待、工料费等;
3)制造系统的改进方向是减少资源消耗,杜绝无价值副产品,增加价值产品的产出;
4)制造系统的改进路径是优化对象与对象之间、对象与过程之间、过程与过程之间的关系,即结构和行为。
(4)对象、类和类的层次
选择什么样的建模语言或工具,主要取决于当事人的偏好,选用任何一种建模工具都不能保证数据建模的高质量,还要在数据模型中的对象、类,以及类的层次上下功夫,考验的是当事人的哲学思维和架构能力。下面以业内知名的物联网平台——PTC ThingWorx数据建模为例,来谈谈其中所蕴含的数据建模思想。
应用软件是解决方案的“母体”,PaaS平台是应用软件的“母体”。
从业务需求到解决方案,从解决方案到应用软件,从应用软件到PaaS平台,抽象化越来越高,通用性越来越强。平台之所以称为平台,就是因为它是高度抽象化、模型化的架构式软件系统,它能衍生出千千万万的“子孙”——应用软件。
PaaS平台是模型和架构思维在IT行业的具体实例,其模型化、架构化的程度越高,平台的生命力就越强。在PTC ThingWorx平台中,基本架构要素如图2.10所示,主要有七个:Thing Shape、Thing Template、Thing、属性、服务、事件和订阅。
图2.10 PTC ThingWorx平台中的架构要素
Thing是物联网中对象的统称,可以代表智能设备、资产、产品、IT系统、人员、流程等。简而言之,在物联网世界中,万事万物都是Thing。
Thing Shape和Thing Template是Thing的类,是在Thing之上更高层面的模块化。Thing可以继承Thing Shape和Thing Template的各种属性和方法。一个Thing需要分配一个Thing Template,也可同时分配一个或多个Thing Shape。
Thing Shape可以理解为迷你型Thing Template。Thing Shape可以分配给Thing Template,反之则不行。分配给Thing Template或Thing的Thing Shape可以为一个或多个,而分配给Thing Template或Thing的Thing Template则只能为一个。
属性、服务、事件、订阅等用于描述物联网中各种Thing的特性和方法。属性、服务、事件和订阅可以分配给Thing Shape和Thing Template,然后再间接继承到相关的Thing,也可以直接将其分配给Thing。
属性是对Thing的描述,可以是静态的,也可以是动态的。
服务是由一段代码所构成的方法或功能,以帮助Thing完成某个特定的活动。
事件是触发器,用于触发Thing的状态变化,也可以驱动某个业务逻辑或活动。
订阅是伴随着事件的活动,可用于业务的优化或自动化。
根据业务需求,应用PTC ThingWorx平台进行业务建模,基本遵循以下过程(如图2.11所示):
图2.11 PTC ThingWorx中的数据建模过程
1)业务需求的准确性、完整性记录和澄清;
2)将业务需求分解成相对独立的用户故事;
3)将用户故事的内容拆分成业务对象(实例,Instance)和对象之间的关系(Relationship);
4)将关系的内容和性质进一步拆分成属性、服务、事件和订阅;
5)将第4步中的属性、服务、事件、订阅等进行归纳和分类;
6)根据第5步的分类,定义必要的Template或Shape,并将所有的属性、服务、事件、订阅等分配给Template或Shape;
7)将第3步实例清单中的实例与第6步的Template或Shape进行关联;
8)用Template、Shape、Thing、属性、服务、事件、订阅等要素,以相互之间的分配与继承关系完整地描绘第2步的所有用户故事。
利用ThingWorx对物联网业务场景进行建模,就是从特殊到一般、从个体到模型的过程,其中的关键是实例与实例之间关系的整理和结构化。将关系拆分成不可分割的属性、服务、事件或订阅,然后再合并同类项,最终完成从关系到属性和方法、从属性和方法到模型化的过程。