这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
个人学习青训营课程的课后笔记,如有疏漏错误还请读者指正。
上课的时候被太多概念搞懵了,一直没搞懂架构是个啥概念,又被什么框架组件模块给砸晕了。因此课后又去查了查资料,在此记录下查阅到的定义和自己的理解。
架构&框架的区别: 软件架构: 软件架构(Software architecture)是指设计软件的人为软件赋予的形状,这个形状是指系统如何被划分为组件(Components),各个组件如何排列(Arrangement),组件之间如何沟通(Communication,通讯)——定义来自Robert C.Martin《架构整洁之道》
软件框架: 软件框架(Software framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
虽然从平常的语义上我们很容易搞混,但架构和框架实际完全不一样。也就是说,软件架构是设计者对整个系统如何运作的规划,因此软件可以有很多种架构而我们要选择最合适的一种,并以此为蓝本制作这个软件,是从设计角度去看软件。而框架具有支撑性和约束性,是开发人员开发时遵循的规范,同时也可以是开发时使用的特定工具,总体而言是一种辅助我们开发的工具,是从使用角度去做软件。
模块&组件的区别:
软件模块(Module)是一套一致而互相有紧密关联的软件组织。它分别包含了程序和数据结构两部分。现代软件开发往往利用模块作为合成的单位。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。
软件组件(component)定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。
以上定义来自维基百科。
这两个之间的区别就很难细说,很多人这两个概念就混着好用。模块和组件是软件的实现一定目标的部分,是软件的组成部分。但组件特别强调独立可拆分可复用,模块强调设计某个项目里的功能区域。二者实际上没有任何关系,只是人们看软件组成部分的角度不同。我们可以说一个用于实现某功能的模块由多个(独立的)组件构成,也可以说这个为了实现这个独立组件我们把它划分成多个模块编写实现。