知识卡片

基于DSL的半自动架构模式识别方法

普通读书笔记卡

内容

相比IDAPO的纯人工比对,基于DSL(Domain Specific Language,领域特定语言)的架构模式识别方法引入了工具支撑,是一种半自动化方法,但架构师仍然在其中起关键作用——DSL本身用来描述模式库中的架构模式和特定系统的架构图,而”模式实例文档工具”则基于模式库和架构图去自动做架构模式识别。这个方法能识别出的架构模式种类,完全取决于模式库里已经存了哪些模式——库里有的能识别,库里没有的天然识别不出来,这是它相对IDAPO的一个结构性限制(IDAPO好歹能靠人工经验去猜测库外的模式,DSL方法则被模式库的覆盖面直接锁死)。识别流程分六步:用类模型解析工具从源代码解析出类图;架构师据此抽象出架构的组件图;架构师总结各种架构模式、用DSL描述后沉淀成可复用的架构模式库;模式实例文档工具根据当前系统的架构图和模式库,计算出哪些模式模板能够被实例化,得到一批候选模式实例;架构师对这些候选实例做人工甄别,确定一个或几个真正适用的架构模式;最后用DSL把确定下来的架构模式描述并存档,反哺模式库。书中给出的FreeCol案例(一个约10万行Java代码的回合制多人开源游戏,本身架构已知是C/S架构——单机模式在本地服务器运行,多人模式必须连接专用服务器)演示了这套方法在中型系统上的实际效果:通过重构和文档处理还原出架构图,定义出10个组件及其相互关系,最终经模式实例文档工具和DSL描述得到的候选架构模式是Broker模式和MVC模式——这个结果本身也说明了识别出的候选模式未必唯一,同一个系统可能同时呈现出多种模式的特征,最终判定仍需要架构师结合系统实际情况做取舍。

参考来源

- 位置:《软件架构理论与实践》第22章《软件架构模式识别》"22.3.2 基于DSL的架构模式识别方法"节(源文件:_epub-src/OEBPS/text00185.html) - 结论依据:原文说明"该方法能够识别的架构模式是由模式库中所存储的架构模式来决定的",并给出FreeCol案例结果"利用基于DSL的架构模式识别方法,得到候选架构模式是Broker模式和MVC模式",直接支撑本卡片结论。 - 原始内容:DSL是架构师用于描述模式库中的架构模式和特定系统的架构图的语言,而模式实例文档工具是基于模式库和架构图的架构模式自动识别的工具……这个例子展示了架构模式识别技术在10万行左右源代码的中型系统中应用的成果。