知识卡片

框架关注规范,架构关注结构:同一系统的多个"正确"架构

普通读书笔记卡

内容

“我们的系统是MVC架构”“我们的系统基于SSH框架开发”——这类说法看起来把框架和架构混用了,但其实都没说错,理解为什么”都对”要先厘清框架和架构各自关注的维度。框架关注的是”规范”:软件框架指为了实现某种业界标准或完成特定基本任务而提供的组件规范,以及满足这套规范所需的基础功能产品,比如MVC是一种开发规范,Spring MVC则是满足这套规范、同时提供了注解、Security、JPA等一整套基础功能的具体产品。架构关注的是”结构”:软件架构指软件系统的顶层结构,以及构造这些结构的准则和描述。关键在于”结构”这个词本身没有限定是从哪个角度切分出来的——同一个系统,从业务逻辑的角度分解会得到一种架构(比如登录注册、个人信息、个人成绩几个模块的关系),从物理部署的角度分解会得到另一种架构(比如Nginx、Web服务器、MySQL的部署关系),从开发规范的角度采用MVC来组织代码又会得到”MVC架构”这第三种描述——这三种架构描述的是同一个系统,只是站在不同的角度去看,它们全部都是这个系统”正确”的架构,这正是IBM的RUP方法论要用”4+1视图”从多个角度描述同一套架构的原因。因此判断这个原则时,重点不是纠结”到底该叫框架还是架构”,而是先明确”现在讨论的是哪个维度的结构”,维度想清楚了,用哪个词描述反而是次要问题。

参考来源

- 位置:《从零开始学架构》第01讲《架构到底是指什么?》"框架与架构""重新定义架构"(源文件:_epub-src/OEBPS/text00000.html) - 结论依据:原文说明"框架关注的是'规范',架构关注的是'结构'……究竟什么说法是对的,什么说法是错的呢?其实这些说法都是对的,造成这种现象的根本原因隐藏于架构的定义中,关键就是'基础结构'这个概念并没有明确说是从什么角度来分解的……这些'架构',都是'学生管理系统'正确的架构,只是从不同的角度来分解而已,这也是IBM的RUP将软件架构视图分为著名的'4+1视图'的原因",直接支撑本卡片结论。 - 原始内容:框架关注的是"规范",架构关注的是"结构"……究竟什么说法是对的,什么说法是错的呢?其实这些说法都是对的,造成这种现象的根本原因隐藏于架构的定义中,关键就是"基础结构"这个概念并没有明确说是从什么角度来分解的……这些"架构",都是"学生管理系统"正确的架构,只是从不同的角度来分解而已,这也是 IBM 的 RUP 将软件架构视图分为著名的"4+1 视图"的原因。