知识卡片

架构模式识别技术谱系与四大共性缺陷

普通读书笔记卡

内容

学术界已提出的架构模式识别方法路数很多,但可以按核心机制归成几类:基于模型检测(Penta和Santonep利用系统日志建立CCS通信系统演算模型,结合候选架构模式判断系统是否为SOA模式)、基于约束满足(Paakki把识别问题转化为一组变量+一组约束,目标是找到满足全部约束的变量组合)、基于架构原语的半自动化(Haitzer用DSL领域特定语言表示架构模式,主要工作由模式实例文档工具完成)、基于查询语言(Sartipi提出AQL架构查询语言,把架构表示成查询语句去匹配真实恢复出的架构)、基于图匹配(Peters用语义丰富模块化架构SRMA表示模式、用遗传算法做图匹配;Lungu从源代码结构中先提取低级模式、再迭代交互式地产生更高级视图)、基于逻辑推导(Anastasia用命题配置逻辑描述给定组件和配置,再用一阶/二阶逻辑扩展来描述不同类别组件并推导)、以及基于运行时观察(Yan的DiscoTect工具通过观察系统运行时行为来预测动态架构,但要求系统必须处于运行状态)。这些方法虽然路径各异,但共同暴露出四类缺陷:覆盖领域窄(如Penta的方法只能识别SOA模式,局限性太大)、识别精度低(如Peters把源代码包依赖图直接当作系统架构图,可信度不高;Sartipi和Peters的图匹配类方法容错率高但精确度低,容易匹配错误;Anastasia基于配置逻辑推理的方法容错率低,很难得出结果)、自动化程度低(Haitzer和Sartipi的方法都需要架构师根据系统文档和分析人工构造抽象架构视图或AQL表示,人为因素干扰太大)、以及约束条件高(如Yan的DiscoTect需要系统处于可运行状态,而开源软件的运行环境搭建往往很复杂,可行性因此大打折扣)。这四类缺陷归结到一点:架构模式识别技术目前最大的短板是自动化程度不高,过度依赖架构师的人工操作和领域知识,架构模式的描述环节几乎完全交给人工完成——这正是本章后续要介绍的基于本体的方法试图突破的方向。

参考来源

- 位置:《软件架构理论与实践》第22章《软件架构模式识别》"22.2.2 架构模式识别现状"节(源文件:_epub-src/OEBPS/text00184.html) - 结论依据:原文逐一列举Penta、Paakki、Haitzer、Sartipi、Peters、Lungu、Anastasia、Yan等人的方法及其具体局限("Penta和Santonep的方法只针对于SOA模式,局限性太大……架构模式识别最大的问题是自动化程度不高,过度依赖人工操作和用户的领域知识"),直接支撑本卡片对技术谱系和共性缺陷的概括。 - 原始内容:架构模式识别技术现在还不是很成熟,这些不成熟主要体现在以下几个方面:覆盖领域窄、识别精度低、自动化程度低和约束条件高……架构模式识别最大的问题是自动化程度不高,过度依赖人工操作和用户的领域知识。