架构学习笔记:架构定义
软件架构指的是软件系统的顶层结构。
我们一起来看看几个相似的概念:系统与子系统、模块与组件、框架与架构。
系统与子系统
维基百科上系统的定义是:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。
首先是关联,没有关联的个体堆在一起不能成为一个系统。例如:发动机和手机放在一起不能称为一个系统,而发动机、底盘、轮胎、车架组合起来才能成为一台汽车。
然后是规则,系统内的个体需要按照指定的规则运作,而不是单个个体各自为政。规则规定了系统内个体分工和协作的方式。还是以汽车举例:发动机负责产生动力,然后通过变速器和传动轴,将动力输送到车轮上,从而驱动汽车前进,各司其职。
最后是能力,系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能力。例如:汽车能够载重前进,而发动机、变速器、传动轴、车轮本身并不具备这样的能力。
子系统的定义是:由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。
模块与组件
模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。
从逻辑的角度来拆分系统后,得到的单元就是“模块”;从物理的角度来拆分系统后,得到的单元就是“组件”。划分模块的主要目的是职责分离;划分组件的主要目的是单元复用。
框架与架构
软件框架通常指的是为了实现某个业界标准或完成特定基本任务的软件组成规范,也指为了实现某个软件组件规范时,提供规范所要求指基础功能的软件产品。
软件架构指软件系统的“基础”结构,创造这些基础结构的准则,以及对这些结构的描述。
框架关注的是“规范”,架构关注的是“结构”。
版权声明: 本文为 InfoQ 作者【风翱】的原创文章。
原文链接:【http://xie.infoq.cn/article/e4330449e0bdcbafd8c5508ca】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论