「InfoQ」怎样才能实现软件架构的“代代相传”?( 三 )


从企业内部架构走向开放式架构、推动国民经济数字化转型的过程中 , 软件架构顺应经济模式的发展 , 必须要解决标准化短板对开放性、规模化的制约 。这不仅有助于将设计人员从重复“搬砖”过程中解放出来 , 也让“砖”能更方便地盖成“楼” , 不能总把软件设计当做个体行为和个别实例 。
2
行业级标准化的核心方向
软件设计主要处理的对象就是数据和行为 , 架构设计的关键其实也在识别数据结构 , 划分处理数据的不同行为模块 。
所以 , 从设计结果角度出发 , 架构标准化主要是对数据和行为的标准化 , 而标准化的范围 , 从对设计结果应用的角度看 , 行业级的标准化是较为合适的层级 , 这个层级具有合适的语境和语义范围 , 也有行业术语作为统一概念基础 。
1. 数据标准化
数据是计算机程序的输入和输出 , 也是不同程序模块间进行衔接时必须要进行标准化处理的部分 。 在软件设计中 , 接口标准化已经是大多数项目必备的设计要求 。 目前行业级的数据模型也有实例 , 比如 IBM 之前为金融领域设计的 FSDM(Financial Services Data Model) 数据模型 。
FSMD 是上个世纪 90 年代 , IBM 针对金融行业建立核心应用系统或者数据仓库推出的数据模型 。 作为大机及大机开发服务的主要供应商 , IBM 在这方面有独特优势 , 而金融行业也是大机的 VIP 级用户 , 因此 , IBM 根据其丰富的行业经验设计这一经典的行业级数据模型 。
FSDM 是一种分层级、逐级细化的数据模型 , 包括“ABCD”四个大的层级 , 具体分层如图 1 所示:
「InfoQ」怎样才能实现软件架构的“代代相传”?
本文插图
图 1 FSDM 数据模型的层级(来自网络)
FSDM 将数据分为九个大的类别 , 各类别概念如表 1 所示:

「InfoQ」怎样才能实现软件架构的“代代相传”?
本文插图
表 1 九大概念(来自网络)
九大概念之间具有一定的联系 , 其相互关系如图 2 所示:
「InfoQ」怎样才能实现软件架构的“代代相传”?
本文插图
图 2 九大领域数据关系示例(来自网络)
FSDM 金融服务数据模型定义了金融服务机构自身和业务运作所需的基本数据概念以及相互关系 , 包含银行业的绝大部分数据 。 在实际设计中 , 数据模型会在九大领域下再细分为不同的数据主题域 , 主题域包含数据实体 , 实体下包含数据属性 , 从而自上向下完成对数据的企业级模型化梳理工作 。
FSDM 模型证明 , 只要坚持积累和钻研 , 构建一个具有一定影响力的行业数据模型是完全可行的 , 而且确实可以给软件设计提供一定的指导和便利 。
但是 IBM 当初毕竟是与其商业行为进行一定的结合 , 有适当的驱动力 。 在没有足够商业利益结合的情况下 , 如何推动行业级标准化数据模型的建设是一个难题 。 此外 , FSDM 更多承担的是指导性作用 , 还没有真的成为标准 , 需要金融企业依据其指导建立数据模型并自行维护 。
2. 行为标准化
相较于数据标准化 , 行为标准化更为困难 。 如果想要建立对软件设计起行业级指导作用的标准化模型 , 这个模型必须能指导细粒度的开发 , 而非仅传递到概念层级 , 如果比照工业标准的效果 , 应当可以指导或者直接生产出可供复用的软件“零件” 。
软件设计一直在关注如何提升对已有软件资产的复用 , 从对代码的“复制粘贴”到模块化、服务化、微服务化 , 通过对业务逻辑乃至数据封装和接口开放 , 实现软件资产的可重复利用 。 各种设计思路中 , 笔者认为 , 构件化作为推广标准化的理念而言 , 也许是更为合适的概念 。
构件化设计 , 又称 CBD(Component-Based Development , 基于构件的开发)或 CBSE(Component-Based , 基于构件的软件工程) 。 关于该方法的讨论比较早 , 文献也较多 , 例如 , Alan W.Brown 所著的《Large-Scale, Component-Based Development》(中译本名称为《大规模基于构件的开发》 , 2003 年由机械工业出版社出版 , 赵文耘、张志等译) 。