模块与组件
模块和组件的概念在实际工作中比较容易混淆,但是实际上只要认识到模块和组件都是系统的组成部分,只是从不同的角度拆分系统就容易理解了。
从逻辑的角度来拆分系统后,得到的单元就是"模块",从物理的角度来拆分得到的单元就是"组件"。划分模块的主要目的是职责分离;划分组件的主要目的是单元复用。
系统与子系统
系统是由一群有关联的个体组成的,没有关联的个体堆在一起不能称之为一个系统,一个系统的能力不是各个个体的能力之和,而是通过这些个体的相互协作产生了新的能力。比如汽车能够载重前进,而发动机、变速器等零件本身不具备这些能力。
子系统与系统的定义一样,只是观察的角度有差异,一个系统可能是另一个更大系统的子系统。比如微信本身是一个系统,包含聊天、朋友圈、支付等系统,而朋友圈系统又包含评论、动态等模块。
框架与架构
框架是一个组件规范,例如,MVC就是一种常见的开发规范;
框架是提供基础功能的产品,例如,Spring MVC 是 JavaWeb 常用的MVC开发框架;
框架是规范及基础,则架构是按照这个规范、基础对系统做规划设计;
规范也是约束,而架构是在约束之内设计,架构的目的是使系统更具拓展性。