知识卡片

架构恢复的三种过程与两阶段划分

结构图卡

内容

软件架构的恢复过程通常有三种形式。自顶向下过程:把架构师提供的架构设计和描述信息与代码信息相结合,检查架构是否合理并进一步精化——先建立设计视图与代码之间的对应关系,再扫描代码检查是否存在这种对应关系,以此衡量架构的偏离程度(代表方法:反射模型);这种过程的前提是已经存在可信的高层架构描述,恢复工作本质是”验证代码是否符合设计”。自底向上过程:从源代码提取架构视图,再逐步精化得到最终架构视图——通常先从源代码提取依赖信息、模式信息等,再把相关联的源代码实体聚合为组件,这是架构恢复最常采用的过程(代表方法:ARMIN、Alborn、DSM,代表工具:Rigi);这种过程完全不依赖预先存在的架构描述,是”从零构建对架构的认知”。混合过程:结合前两者——一方面从底层提取架构信息、在此基础上恢复架构视图,另一方面用高层架构信息校验恢复出的架构实体是否存在缺陷(代表方法:Focus、ManSART、DiscoTect);混合过程本质是让”自底向上恢复出来的东西”和”自顶向下已知的设计意图”互相印证,弥补单一方向各自的盲区。不管采用哪种过程,恢复工作都可以概括为两个阶段:信息提取(识别架构元素及其依赖关系)和信息表达(在更高抽象层次上建立系统的表达形式)——调查表明大部分架构恢复方法更侧重”方法本身”而非”数据来源”,不同来源的数据也确实可以用不同方法进行恢复,这意味着”用什么方法”和”从哪里取数据”是两个相对独立、可以自由组合的维度。

结构图

flowchart TD
    A["自顶向下过程<br/>已知设计 vs 代码对比<br/>验证是否偏离"] --> D[信息提取阶段]
    B["自底向上过程<br/>从源代码提取视图<br/>逐步精化聚合"] --> D
    C["混合过程<br/>自底向上恢复 + 自顶向下校验<br/>互相印证"] --> D
    D --> E[信息表达阶段<br/>建立更高抽象层次的系统表达]

参考来源

- 位置:《软件架构理论与实践》第10章《软件架构恢复》"10.1.1 软件架构的恢复过程"节(源文件:_epub-src/OEBPS/text00080.html) - 结论依据:原文说明"软件架构的恢复过程通常有三种形式:自顶向下、自底向上和混合过程"并分别给出定义和代表方法,随后说明"不管采用哪种架构恢复过程,一般可以把恢复过程概括为信息提取和信息表达两部分",直接支撑本卡片的结构图与内容解释。 - 原始内容:自顶向下过程(top-down process):将架构师所提供的架构设计和描述信息与代码信息相结合,检查架构是否合理,进一步对架构进行精化……不管采用哪种架构恢复过程,一般可以把恢复过程概括为信息提取和信息表达两部分。