知识卡片

IDAPO人工识别方法与JBoss案例

普通读书笔记卡

内容

IDAPO(Identifying Architecture Pattern in OSS)是一种彻底人工驱动的架构模式识别方法,核心思路是不断收集与目标系统架构模式应用有关的各方面信息,其中不少信息本身就来自网络搜索这类非结构化渠道。它的处理流程分三步:先根据目标系统的类型和所属应用领域,判断系统是否可能采用了架构模式、并列出候选模式清单(这一步依据的逻辑是架构模式的选用天然和目标系统类型、应用领域绑定,比如企业级系统更可能用分层架构,分布式系统更可能用微内核或Broker);再通过源代码和开发文档(往往不全)还原出系统架构图,也就是识别出系统的组件、连接件以及它们之间的关系;最后把这张还原出的架构图与前面列出的候选架构模式逐一比对,确定系统实际采用的模式。书中给出的JBoss案例很好地展示了这个方法的实际效果与局限:选择JBoss是因为它是工业界广泛使用、文档资料齐全、且架构模式事先已知的系统,便于验证方法本身的有效性。分析过程用了调查报告、技术报告、以前的架构模式识别报告三种不同信息来源,每种来源又各做三次独立分析;根据调查报告列出的候选架构模式包括微内核、层次结构、Broker、动态代理、代理、拦截器、C/S和活动库共8种,但根据源代码分析得到的组件和连接件依赖信息,候选清单里只有20%的模式最终被识别确认——这个悬殊的落差直接说明了纯人工、信息驱动的识别方法存在很大的”候选膨胀”问题:靠系统类型和领域知识能猜出一堆看似合理的候选模式,但只有极少数能在真实的组件依赖结构中得到证实,人工识别方法的精度瓶颈正体现在候选筛选这一步。

参考来源

- 位置:《软件架构理论与实践》第22章《软件架构模式识别》"22.3.1 IDAPO方法"节(源文件:_epub-src/OEBPS/text00185.html) - 结论依据:原文说明IDAPO"是一种人工识别的方法,主要利用软件系统的一些模式应用信息来人工地识别系统中使用的架构模式",并给出JBoss案例结果"根据分析调查报告,我们列出了可能成为候选的架构模式,包括微内核、层次结构、Broker……根据源代码分析得到组件和连接件的依赖信息,我们得到候选架构模式列表中只有20%的模式被识别出",直接支撑本卡片结论。 - 原始内容:首先需要根据目标系统信息、领域信息等确定系统是否采用架构模式,并列出系统可能采用的架构模式;其次,通过源代码和开发文档(可能不全)可以得到系统架构图……最后,通过把系统架构图与候选的架构模式进行比对,即可得到系统所采用的架构模式。