软件架构知识1-什么是框架、架构

系统与子系统

系统定义(维基百科):泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独 完成的工作的群体。其中3点关键内容:

1、关联:系统是由一群有关联的个体组成的,没有关联的个体堆在一起不能成为一个系统。

2、规则:系统内的个体需要按照指定的规则运作,而不是单个个体各自为政。规则规定了系统 内个

                体分工和协作的方式。

3、能力:系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能 力。

其中按角度不同,子系统一般为更大系统的组成部分。比如QQ本身是一个大系统,包括小系统(聊天、群组等等)

模块与组件

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

软件组件(维基百科):软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组 件可以很容易被用于组装应用程序中。

模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。

从逻辑的角度来拆分系统后,得到的单元就是“模块”;

从物理的角度来拆分系统后,得到的单 元就是“组件”。

举例:论坛信息管理系统,这个系统从逻辑的角 度来拆分,可以分为“登录注册模块”“个人信息模块”“帖子模块”;从物理的角度来拆 分,可以拆分为 Nginx、Web 服务器、MySQL。

框架与架构

软件框架(维基百科):指的是为了实现某个业界标准或完成特定 基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之 基础功能的软件产品。其中3点关键内容:

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

2. 框架提供基础功能的产品:例如,Spring MVC 是 MVC 的开发框架,除了满足 MVC 的规 范,Spring 提供了很多基础功能来帮助我们实现功能,包括注解(@Controller 等)、Spring Security、Spring JPA 等很多基础功能。

软件架构(维基百科):指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构 的描述。

举例:从业务逻辑的角度分解,“论坛信息管理系统”的架构是:


从物理部署的角度分解,“论坛信息管理系统”的架构是:


从开发规范的角度分解,“论坛信息管理系统”可以采用标准的 MVC 框架来开发,因此架构又变成 了 MVC 架构:


这些“架构”,都是“论坛信息管理系统”正确的架构,只是从不同的角度来分解而已,这也是 IBM 的 RUP 将软件架构视图分为著名的“4+1 视图”的原因。

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 最近和同时聊天,同时询问我是怎么理解架构?我仔细想了想,说:“架构存在任何地方,不一定要很大的事情要架构,任何事情...
    涅槃快乐是金阅读 2,540评论 0 3
  • 分享下 阿里 P9 李运华 对于「架构」话题的思考。 你好,我是李运华。 2018 年,我发布了《从 0 开始学架...
    洁仔学编程阅读 4,353评论 0 0
  • 对于技术人员来说,“架构”是一个再常见不过的词了。我们会对新员工培训整个系统的架构,参加架构设计评审,学习业界开源...
    d_quan阅读 1,747评论 0 0
  • 根据《从零开始学架构》课程整理和摘要 0、我的理解 架构,就是框架结构,比如盖一栋房子的钢筋框架即是架构,软件架构...
    尧字节阅读 4,064评论 0 0
  • 所写博客来自网课视频、本网站或其他网站,只属于资料整理、用于个人学习,如有侵权行为可联系删除。 如何成为更好的软件...
    私人云笔记_骁勇波波阅读 4,717评论 0 1

友情链接更多精彩内容