概念解释:android
系统编程
维基百科定义的“系统”。服务器
系统泛指由一群有关联的个体组成,根据某种规则运做,能完成个别元件不能单独完成的工做的群体。它的意思是“整体”“总体”或“联盟”。微信
我来提炼一下里面的关键内容:架构
关联:系统是由一群有关联的个体组成的,没有关联的个体堆在一块儿不能成为一个系统。例如,把一个发动机和一台 PC 放在一块儿不能称之为一个系统,把发动机、底盘、轮胎、车架组合起来才能成为一台汽车。app
规则:系统内的个体须要按照指定的规则运做,而不是单个个体各自为政。规则规定了系统内个体分工和协做的方式。例如,汽车发动机负责产生动力,而后经过变速器和传动轴,将动力输出到车轮上,从而驱动汽车前进。框架
能力:系统能力与个体能力有本质的差异,系统能力不是个体能力之和,而是产生了新的能力。例如,汽车可以载重前进,而发动机、变速器、传动轴、车轮自己都不具有这样的能力。spa
子系统.net
子系统也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。翻译
其实子系统的定义和系统定义是同样的,只是观察的角度有差别,一个系统多是另一个更大系统的子系统。
按照这个定义,系统和子系统比较容易理解。咱们以微信为例来作一个分析。
微信自己是一个系统,包含聊天、登陆、支付、朋友圈等子系统。
朋友圈这个系统又包括动态、评论、点赞等子系统。
评论这个系统可能又包括防刷子系统、审核子系统、发布子系统、存储子系统。
评论审核子系统再也不包含业务意义上的子系统,而是包括各个模块或者组件,这些模块或者组件自己也是另一个维度上的系统。例如,MySQL、Redis 等是存储系统,但不是业务子系统。
模块
从逻辑的角度来拆分系统后,获得的单元就是“模块”;划分模块的主要目的是职责分离;
组件
从物理的角度来拆分系统后,获得的单元就是“组件”划分组件的主要目的是单元复用。
“组件”的英文 component 也可翻译成中文的“零件”一词,“零件”更容易理解一些,“零件”是一个物理的概念,而且具有“独立且可替换”的特色。
假设咱们要作一个学生信息管理系统,这个系统从逻辑的角度来拆分,能够分为“登陆注册模块”“我的信息模块”“我的成绩模块”;从物理的角度来拆分,能够拆分为 Nginx、Web 服务器、MySQL 等组件。
框架
软件框架(Software framework)一般指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
框架是组件规范:例如,MVC 就是一种最多见的开发规范,相似的还有 MVP、MVVM、J2EE 等框架。
框架提供基础功能的产品:例如,Spring MVC 是 MVC 的开发框架,除了知足 MVC 的规范,Spring 提供了不少基础功能来帮助咱们实现功能,包括注解(@Controller 等)、Spring Security、Spring JPA 等不少基础功能。
架构
架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从业务维度上职责的划分;系统是相互协同可运行的实体。
软件架构指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。
单纯从定义的角度来看,框架和架构的区别仍是比较明显的,框架关注的是“规范”,架构关注的是“结构”。框架的英文是 Framework,架构的英文是 Architecture。Spring MVC 的英文文档标题就是“Web MVC framework”。
虽然如此,在实际工做中咱们却常常碰到一些似是而非的说法。例如,“咱们的系统是 MVC 架构”“咱们须要将 android app 重构为 MVP 架构”“咱们的系统基于 SSH 框架开发”“咱们是 SSH 的架构”“XX 系统是基于 Spring MVC 框架开发,标准的 MVC 架构”……
好比一个学生管理系统
能够从多个方面分析他的架构是什么
1.业务逻辑角度 “学生管理系统”的架构是:
2.从物理部署的角度分解 “学生管理系统”的架构是:
3.从开发规范的角度分解 “学生管理系统”能够采用标准的 MVC 框架来开发,所以架构又变成了 MVC 架构:
在此感谢李运华老师的精彩讲解
你们能够试听课程