知识卡片
本体用于架构模式识别的可行性
内容
本体(ontology)原本是知识表示领域的概念,用于形式化地描述某个领域的概念、关系和知识框架。把本体引入架构模式识别,核心逻辑是:架构模式和本体虽然不能等同,但两者都涉及词汇表、知识和体系结构,都是在”知识级”上描述概念,这种共性让软件模式的设计资源和本体设计资源可以在实践中互相借用——本体库和软件模式目录之间存在天然的相似结构,把本体理解成某个领域的抽象模式或知识框架、把软件模式模板理解成本体可能承载的知识,都是很自然的智力转换。具体来说,本体在架构模式识别上具备几方面优势:一是本体工程化的长期目标就是建立可复用、可互操作的知识库,这和基于组件的软件工程追求可独立升级的即插即用组件是同一种诉求,本体能够精确定义组件的语义、关系类型以及组件间的通信方式,天然适合作为设计和开发可互操作软件组件的基础;二是本体能用OWL(Web Ontology Language)这类形式化语言,准确地把架构模式所表达的设计意图描述出来,弥补了传统架构模式描述”抽象层次高、难以形式化”这个痛点;三是架构模式识别过程中最核心的”匹配”工作,可以交给本体推理机(如pellet、HermiT)自动完成,不同推理机在推理能力和推理耗时上各有取舍;四是即便本体方法本身能做到较高的自动化程度,人工参与仍不可避免——但人工介入的目的被收窄为”表达目标系统设计者的意图”(即由用户指定想要识别的模式),而不是像IDAPO或DSL方法那样让架构师承担识别过程本身的大量人工判断;五是本体方法识别出来的最终结果,落在组成架构模式的每个组件的具体元素这个较细粒度上,这意味着即使遇到某个架构模式的变种,只要核心组件元素大体不变,依然可以用识别组件元素的方式解决——这一点是前述图匹配类方法在应对模式变体时普遍做不到的。