系统与子系统
-
系统:由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体
关键内容:
-
关联
例如:把一个发动机和一台 PC 放在一起不能称之为一个系统,把发动机、底盘、轮胎、车架组合起来才能成为一台汽车
-
关联
-
规则:规则规定了系统内个体分工和协作的方式
例如:汽车发动机负责产生动力,然后通过变速器和传动轴,将动力输出到车轮上,从而驱动汽车前进。
-
规则:规则规定了系统内个体分工和协作的方式
-
能力:系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能力。
例如:汽车能够载重前进,而发动机、变速器、传动轴、车轮本身都不具备这样的能力。
-
能力:系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能力。
-
子系统:也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。
差异:观察的角度不同
例如:微信本身是一个系统,包含聊天、登录、支付、朋友圈等子系统。
模块与组件
-
软件模块(Module):是一套一致而互相有紧密关连的软件组织,包含了程序和数据结构。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。
=》逻辑角度:目的是职责分离 -
软件组件:定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。
=》物理角度:目的是单元复用
无法区分的根本原因:模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。
例如:假设我们要做一个学生信息管理系统
从逻辑的角度来拆分:可以分为“登录注册模块”“个人信息模块”“个人成绩模块”
从物理的角度来拆分:可以拆分为 Nginx、Web 服务器、MySQL
框架与架构
-
软件框架(Software framework):通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
关键部分:
- 框架是组件规范
例如:MVC 就是一种最常见的开发规范,类似的还有 MVP、MVVM、J2EE 等
- 框架是组件规范
- 框架提供基础功能的产品
例如:Spring MVC 是 MVC 的开发框架,除了满足 MVC 的规范,Spring 提供了很多基础功能来帮助我们实现功能,包括注解(@Controller 等)、Spring Security、Spring JPA 等很多基础功能。
- 框架提供基础功能的产品
-
软件架构:指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。
区别:框架关注的是“规范”,架构关注的是“结构”
样例:
(1)从业务逻辑的角度分解,“学生管理系统”的架构是:
![](https://img.haomeiwen.com/i2359939/22c8ab37a24ba38c.png)
(2)从物理部署的角度分解,“学生管理系统”的架构是:
![](https://img.haomeiwen.com/i2359939/7a800dcb605cb5ef.png)
(3)从开发规范的角度分解,“学生管理系统”可以采用标准的 MVC 框架来开发:
![](https://img.haomeiwen.com/i2359939/c55482bc235e49bf.png)
重新定义架构
软件架构:指软件系统的顶层结构
首先:架构需要明确系统包含哪些“个体”
其次:架构需要明确个体运作和协作的规则
最后:采用“顶层结构”,可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆在一起导致架构层次混乱
网友评论