数字化的本质和基础

数字化的概念

「企业数字化」是目前媒体、市场上的热点关键词。

很多人都会困惑「数字化」、「信息化」、「自动化」、「标准化」这些概念的相互关系,好像时间又进行了一次轮回。

「数字化」给人直观的感受是与「智能设备」、「物联网」、「移动互联」、「云计算」、「大数据」等等等等,这些强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 的相关定义。

通过对这个例子的分析,提供方和使用方不在同一个虚拟世界里,两者无法进行「连接」。

进一步的,假设提供方与使用方分属于两个不同的企业,部署于两个完全物理隔离的机房,那这两者要进行一次有效的「连接」是完全不可能实现的。

数字化的基础

分领域统一标准

标准制定

通过上述两个例子的对比,在软件层面实现数字化,第一要务是实现统一「标准」。在前文的例子里,对于 电流 的描述,就应该首先被统一。

「标准」根据个人的实践和理解,包含两个要素:

  • 概念

    对于一个现象,给定一个便于理解的名称。

  • 关系

    不同概念之间的关联关系。

需要注意的是,概念来自于人的认知,而人的认知又受制于人的知识、人的经历。

标准的建立,应该是根据的目标适用领域以及对外影响范围进行。

领域划分

越是抽象的概念、越是抽象的标准,包容的万物越多,难度也越大。

某种意义下,领域的划分,也是因为一种抽象无法覆盖多个领域。现实的例子,就是社会的行业划分。

对于企业而言,标准的统一是一件相当困难的事,因为短期内效益没有体现,并且使用标准规范企业内部和外部的行为,需要有执行力的保障。

重要性评价

标准的重要性和影响面,可以通过对标准的引用次数来确定。这种模型类似于 Page Rank

标准的引用包含两个方面:

  • 领域内部
  • 领域外部

适应变化的机制

变化,来自于人的认知,来自于社会的进步,来自于科技进步对人类产生的影响,来自于对本质的深入理解,来自于方方面面。

企业信息系统,是一个高精度匹配的机器,任何一行关键代码的变更,都可能会导致整个系统无法正常工作。

一旦标准中的概念或者关系发生变化,需要有快速发现影响范围,并迅速制定有效的应对方案。

企业建立一套适应变化的机制,应当包含以下要素:

  • 概念的文字性描述
  • 概念的多语言代码的生成和快速引用
  • 概念代码对应在不同视角、不同领域之间的转换和适配
  • 变化的影响面分析
  • 适应性变更的快速交付

MOF与MTL

概念模型

模型是表述一个领域内部概念之间关系的方法。

概念模型是在一个系统交付过程中,设计的核心之一。

根据 MOF (Meta-Object Facility) 的概念以及 ISO/IEC 19508:2014Object Management Group Meta Object Facility (MOF) Core 国际标准,一个「概念」在信息系统落地的过程,可以包含层结构:

  • 实例 -- 一个概念(在计算机系统中)的具体实例化对象
  • 模型 -- 描述一个概念的结构的定义,类似于上文的 AlternatingCurrent 这个 Java class
  • 元模型 -- 描述模型的模型,例如 UML
  • 元元模型 -- 描述模型的模型的模型,例如 MOF

模型转换

正因为概念是标准的一部分、模型是描述概念的方法,所以模型的转换会同时发生在宏观和微观两个层面:

  • 在宏观层面:当一个模型从一个领域走进另外一个领域
  • 在微观层面:当一个模型从领域中的一个视角转换为另外一个视角

描述模型转换这件事,有专门的语言: MTL ( Model transformation language )。 ATLAS Transformation Language 是 MTL 的一个实现。