数字化的概念
「企业数字化」是目前媒体、市场上的热点关键词。
很多人都会困惑「数字化」、「信息化」、「自动化」、「标准化」这些概念的相互关系,好像时间又进行了一次轮回。
「数字化」给人直观的感受是与「智能设备」、「物联网」、「移动互联」、「云计算」、「大数据」等等等等,这些强IT概念联系紧密。
企业似乎只要把它们捏在一起,好像就实现了时髦的数字化转型,公司就可以和互联网、物联网联系在一起。
在这里,也许没有办法给出直接的「数字化定义」,个人对于数字化的观点,是把「数字化」理解成一种现象,一种市场语言。
比较实体与虚拟连接
早在大秦帝国,秦始皇做的最了不起的事情是「书同文、车同轨、统一度量衡」。
这几件事情,是在整个国家之内统一了标准,降低了社会的沟通成本、协作成本,促进了社会的发展效率。
实体世界的连接
现实世界的实体连接,已经通过长时间的工业化得到了沉淀,比如把插头插到插座就可以使用电能。
工业标准定义了插头与插座的形状、交流电压的高低和频率。 即便是世界上没有完全统一,依然存在中国标准、美国标准、英国标准等等标准,市场上也提供了各种各样的转换适配器。
软件世界的连接
为了便于理解,对 交流电 这个概念进行展开。如果用 java 来描述一个 交流电 的最基本属性, 比如电的 伏特 ,以及 频率 ,那么两个不同的程序员,会产生两种不同的描述。
概念的代码实现
比如下面这两个代码对 交流电 实现:
- 我的实现
package wang.yanjiong.electronic;
import wang.yanjiong.electronic.Volt;
import wang.yanjiong.electronic.Frequency;
public interface AlternatingCurrent {
Volt getVolt();
Frequency getFrequency()
....
}
- 其他人的实现
package other.people.electronic;
public interface AC {
int getVolt();
int getFrequency()
....
}
可以看到两者都通过代码描述了 交流电 这个概念,但在IT这个虚拟世界内,是截然不同的两个概念代码实现。
在第一种 wang.yanjiong.electronic 这种实现方法,是对电压 ( Volt ) 和 电流 ( Frequency ) 进行了更为复杂的定义。
连接的代码实现
任何一个连接,都会有两方或者三方以上的出现。在两方的情况下,一般有:
- 提供方
- 使用方
在三方的情况下,一般有:
- 提供方
- 使用方
- 监管方
为例了便于表述,以两方为例:
提供方用 java 代码声明了一个接口 (API, Applicaion Programming Interface), 便于使用方获得全世界的各种 交流电 信息:
package wang.yanjiong.connect;
import wang.yanjiong.electronic.AlternatingCurrent;
public interface ProviderAPI {
AlternatingCurrent[] getAlternatingCurrents();
....
}
使用方同样用 java 完成了使用代码的编写:
package other.people.electronic;
public class ConsumerService {
AC[] acs = ProviderAPI.getAlternatingCurrents();
....
}
很显然,使用方的代码,在编译的过程中就会出现错误,因为使用方没有 引用 提供方关于 ProviderAPI 的相关定义。
通过对这个例子的分析,提供方和使用方不在同一个虚拟世界里,两者无法进行「连接」。
进一步的,假设提供方与使用方分属于两个不同的企业,部署于两个完全物理隔离的机房,那这两者要进行一次有效的「连接」是完全不可能实现的。
数字化的基础
分领域统一标准
标准制定
通过上述两个例子的对比,在软件层面实现数字化,第一要务是实现统一「标准」。在前文的例子里,对于 电流 的描述,就应该首先被统一。
「标准」根据个人的实践和理解,包含两个要素:
概念
对于一个现象,给定一个便于理解的名称。
关系
不同概念之间的关联关系。
需要注意的是,概念来自于人的认知,而人的认知又受制于人的知识、人的经历。
标准的建立,应该是根据的目标适用领域以及对外影响范围进行。
领域划分
越是抽象的概念、越是抽象的标准,包容的万物越多,难度也越大。
某种意义下,领域的划分,也是因为一种抽象无法覆盖多个领域。现实的例子,就是社会的行业划分。
对于企业而言,标准的统一是一件相当困难的事,因为短期内效益没有体现,并且使用标准规范企业内部和外部的行为,需要有执行力的保障。
适应变化的机制
变化,来自于人的认知,来自于社会的进步,来自于科技进步对人类产生的影响,来自于对本质的深入理解,来自于方方面面。
企业信息系统,是一个高精度匹配的机器,任何一行关键代码的变更,都可能会导致整个系统无法正常工作。
一旦标准中的概念或者关系发生变化,需要有快速发现影响范围,并迅速制定有效的应对方案。
企业建立一套适应变化的机制,应当包含以下要素:
- 概念的文字性描述
- 概念的多语言代码的生成和快速引用
- 概念代码对应在不同视角、不同领域之间的转换和适配
- 变化的影响面分析
- 适应性变更的快速交付
MOF与MTL
概念模型
模型是表述一个领域内部概念之间关系的方法。
概念模型是在一个系统交付过程中,设计的核心之一。
根据 MOF (Meta-Object Facility) 的概念以及 ISO/IEC 19508:2014 的 Object Management Group Meta Object Facility (MOF) Core 国际标准,一个「概念」在信息系统落地的过程,可以包含层结构:
模型转换
正因为概念是标准的一部分、模型是描述概念的方法,所以模型的转换会同时发生在宏观和微观两个层面:
- 在宏观层面:当一个模型从一个领域走进另外一个领域
- 在微观层面:当一个模型从领域中的一个视角转换为另外一个视角
描述模型转换这件事,有专门的语言: MTL ( Model transformation language )。 ATLAS Transformation Language 是 MTL 的一个实现。
扩展阅读
- Page Rank: https://en.wikipedia.org/wiki/PageRank
- MOF: https://en.wikipedia.org/wiki/Meta-Object_Facility
- MOF 2.5: http://www.omg.org/spec/MOF/2.5/
- ISO/IEC 19508:2014: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=61844
- UML: https://en.wikipedia.org/wiki/Unified_Modeling_Language
- Model transformation language : https://en.wikipedia.org/wiki/Model_transformation_language
- ATLAS Transformation Language: https://en.wikipedia.org/wiki/ATLAS_Transformation_Language