对组件、模块、子系统、系统、框架、架构 定义浅析

内容总结自 极客专栏

模块与组件

模块组件两个概念在实际工作中很容易混淆,我们经常能够听到类似这样的说法:

  • MySQL 模块主要负责存储数据,而 Elasticsearch 模块主要负责数据搜索。
  • 我们有安全加密组件、有审核组件。
  • App 的下载模块使用了第三方的组件。

但是实际上只要认识到模块和组件都是系统的组成部分,只是从不同的角度拆分系统就容易理解了。
从逻辑功能的角度来拆分系统后,得到的单元就是“模块”,从物理的角度来拆分得到的单元就是“组件”。划分模块的主要目的是职责分离;划分组件的主要目的是单元复用,不要太纠结名词。

系统与子系统

系统是由一群有关联的个体组成的,没有关联的个体推在一起不能称之为一个系统,一个系统的能力不是各个个体的能力之和,而是通过这些个体的相互协作产生了新的能力。比如汽车能够载重前进,而发动机、变速器、等临件本身不具备这些能力。
子系统与系统的定义一样,只是观察的角度有差异,一个系统可能是另一个更大系统的子系统。

以微信为例:
1.微信本身是一个系统,包含聊天、朋友圈、支付等系统
2.朋友圈这个系统 又包含了 动态、评论、点赞等子系统
3.评论这个子系统 可能又包含了 发布审核、发布、存储、防刷、屏蔽等子系统
4. 评论审核子系统不再包含业务意义上的子系统,而是包括各个模块或者组件,这些模块或者组件本身也是另外一个维度上的子系统。例如Mysql、Redis是存储子系统,但不是业务子系统。

框架与架构

框架是一个组件规范,例如,MVC就是一种常见的开发规范;
框架是提供基础功能的产品,例如,Spring MVC 是 JavaWeb 常用的MVC开发框架;

框架是规范及基础,则架构是按照这个规范、基础对系统做规划设计;
规范也是约束,而架构是在约束之内设计,架构的目的是使系统更具拓展性。

总结

来自微信公众号:《代码荣耀》总结的一句话

架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从业务维度上职责的划分;系统是相互协同可运行的实体。

你可能感兴趣的:(Java,Java,架构,设计,组件,模块)