从零开始学架构——与架构相关的概念

架构和框架、模块和组件以及系统和子系统等这些词语也许是每个程序员在工作当中听到比较频繁的词语了,但是细问什么是架构,架构与框架什么区别?什么是模块?什么是组件?组件和模块又有什么关系呢?我相信很多人都无法说出个所以来。那么,废话不多说,下面我们就来捋一捋这些基本概念。

系统与子系统

系统与子系统应该算是上边这三对词语中最容易区分和辨识的一对概念了。一般来说子系统是更大的系统的一部分,但是其也是一个完整的系统。下面,我们看看维基百科对系统的定义:

系统:系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作群体。它的意思是“总体”,“整体”或者“联盟”。

从系统的定义中,我们可以看到系统具备三个关键内容:

一:关联性,系统是由一群有关联的个体组成的,不是简单的个体的堆叠;

二:规则性,系统内的个体需要按照指定的规则运作,而不是单个个体各自为政,各干各的;

三:能力,系统能力与个体能力有着本质的区别,系统能力绝对不是个体能力的简单相加。

模块和组件

模块和组件两个概念在实际工作中真的很容易混淆,我们经常会听到某个系统包含xxx组件,xxx系统由xxx模块组成或xxx系统包含xxx模块等。那么,到底什么是组件?什么是模块呢?这两者又有什么区别和联系呢?让我们先看看维基百科对这两者的定义。

模块:软件模块是一套一致且相互有紧密关联的软件组织,它包含程序和数据结构两部分,现代软件开发往往利用模块作为合成的单位。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位,这使得它们可再用,并允许开发人员同时协作、编写及研究不同的模块。

组件:软件组件定义为包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易的被用于组装运用程序。

从两个概念的定义中可以看出,无论是模块还是组件都是用来构建系统的较小的单元,但是从定义中还是没能看出两者到底有什么区别。那这两者到底啥区别呢,有人给出了回答:“从逻辑的角度来拆分后得到的单元就是模块,从物理的角度来拆分系统得到的单元就是组件;划分模块的主要目的是职责分离,划分组件的主要目的是单元复用”。“组件”一词的英文单词component对应中文的“零件”一词,“零件”是一个物理概念,并且具备独立且可替换的特点,从这个角度来说的话,就很容易区分模块和组件了。

框架和架构

框架和架构也是比较相似的概念,且两者有较强的联系,因此这两个概念也是很难分清楚的。同样的,我们先看看各自的定义。

框架:框架通常是指为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求的基础功能的软件产品。

从框架的定义中,我们看出框架主要强调以下两点:

1. 框架是组件规范。如MVC就是一种最常见的开发规范,类似的还有MVP,J2EE等框架。

2. 框架是提供基础功能的软件产品。如Struts2,Spring MVC等框架。

架构:软件架构是指软件系统的基础结构,创造这些基础结构的准则以及对这些结构的描述。

单纯从定义的角度来看,框架和架构区别还是比较明显的,框架强调的是“规范”,架构更关注的是“结构”。

另外,有人重新定义了架构:软件架构指的是软件系统的顶层结构!

 

但是,我个人对软件架构的理解分为两个层次:

1. 狭义的架构:就像建筑一样,软件架构首先是整个软件系统的一个框架结构,它对整个软件系统进行职责划分,明确定义了每一个模块承担的责任,是整个软件系统的顶层设计和抽象,具备很好的扩展性,一旦架构师完成架构的设计,整个软件系统的开发过程的就变成编码人员往各个模块编写代码实现具体功能,填充血肉的过程。

2. 广义的架构:广义的架构包括软件和硬件部分,应该是包括数据的接入、存储、计算以及可视化等部分组成的一个有机的整体。对应狭义的架构,计算和可视化可以归结到狭义的架构中。

以上是本人关于架构的理解,如果有不对的地方,还望不吝赐教。那么你对架构的理解又是怎样的呢?欢迎留言讨论。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值