知识卡片

架构模式识别的意义与设计模式识别的成熟度差距

普通读书笔记卡

内容

软件架构模式简单说就是一个有名字的”问题-解决方案对”:为了解决架构设计中某类特定问题而采用的整体或局部方案,这类方案能在未来遇到类似场景时被复用。架构模式识别,就是反过来从一个已建成的系统里,判断它实际用了哪些架构模式——这件事之所以重要,源于一个很现实的组织行为问题:设计人员使用架构模式时经常不规范甚至用错,出了问题后往往倾向于把系统缺陷归咎于”架构模式本身有问题”,用来给自己的设计失误找借口;架构模式识别提供了一种客观核验手段,能判断架构模式的使用是否合法合规,从而定位系统问题的真正根源,而不是被”甩锅”话术带偏。随着软件版本迭代和架构演进速度加快,持续跟踪系统里架构模式的实际变化,也成了管理和控制架构演进的重要抓手。但架构模式识别的技术成熟度明显落后于同一谱系里的软件设计模式识别——设计模式识别已经发展了近20年,理论上已经可以做到近似自动化,而架构模式识别大多还需要人工参与,即便存在个别自动化方法,识别精度也不高。这个差距的根源在于:架构模式识别和设计模式识别一样都要解决”模式的描述”和”模式的识别”两个核心问题,但架构模式所处的抽象层次更高、涉及的系统范围更广、模式本身的边界和变体也更模糊,导致目前还没有一套完整的理论方法和技术手段能够支撑起架构模式的自动化识别——这也是本章要重点介绍作者团队采用的基于本体的识别方法的动机所在。

参考来源

- 位置:《软件架构理论与实践》第22章《软件架构模式识别》"22.1 引言"节(源文件:_epub-src/OEBPS/text00183.html) - 结论依据:原文说明"设计人员在使用架构模式进行软件架构设计时,往往存在使用不规范甚至错误的情况,导致的结果是把软件系统存在的问题归结为软件架构模式自身的问题,为自己寻找推卸责任的借口",并对比"设计模式的识别技术已经得到了将近20年的发展……但软件架构模式的识别大多还需要人工参与,即使有一些能够实现自动化的识别方法,但识别的精度不高",直接支撑本卡片结论。 - 原始内容:软件架构模式识别的意义在于:通过识别和恢复系统中可能存在的软件架构模式,判断架构模式使用的合法性和合规性,定位软件系统存在问题的根本原因。