美文网首页
001 什么是架构

001 什么是架构

作者: 猿笔记 | 来源:发表于2018-11-29 20:55 被阅读2次

系统与子系统

  • 系统:由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体
    关键内容
    • 关联
      例如:把一个发动机和一台 PC 放在一起不能称之为一个系统,把发动机、底盘、轮胎、车架组合起来才能成为一台汽车
    • 规则:规则规定了系统内个体分工和协作的方式
      例如:汽车发动机负责产生动力,然后通过变速器和传动轴,将动力输出到车轮上,从而驱动汽车前进。
    • 能力:系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能力。
      例如:汽车能够载重前进,而发动机、变速器、传动轴、车轮本身都不具备这样的能力。
  • 子系统:也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分
    差异:观察的角度不同
    例如:微信本身是一个系统,包含聊天、登录、支付、朋友圈等子系统。

模块与组件

  • 软件模块(Module):是一套一致而互相有紧密关连的软件组织,包含了程序数据结构。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。
    =》逻辑角度:目的是职责分离

  • 软件组件:定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。
    =》物理角度:目的是单元复用

无法区分的根本原因:模块和组件都是系统的组成部分,只是从不同的角度拆分系统而已。

例如:假设我们要做一个学生信息管理系统
从逻辑的角度来拆分:可以分为“登录注册模块”“个人信息模块”“个人成绩模块”
从物理的角度来拆分:可以拆分为 Nginx、Web 服务器、MySQL

框架与架构

  • 软件框架(Software framework):通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
    关键部分
    • 框架是组件规范
      例如:MVC 就是一种最常见的开发规范,类似的还有 MVP、MVVM、J2EE 等
    • 框架提供基础功能的产品
      例如:Spring MVC 是 MVC 的开发框架,除了满足 MVC 的规范,Spring 提供了很多基础功能来帮助我们实现功能,包括注解(@Controller 等)、Spring Security、Spring JPA 等很多基础功能。
  • 软件架构:指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。
    区别:框架关注的是“规范”,架构关注的是“结构”

样例:
(1)从业务逻辑的角度分解,“学生管理系统”的架构是:

(2)从物理部署的角度分解,“学生管理系统”的架构是:


(3)从开发规范的角度分解,“学生管理系统”可以采用标准的 MVC 框架来开发:


重新定义架构

软件架构:指软件系统的顶层结构
首先:架构需要明确系统包含哪些“个体”
其次:架构需要明确个体运作和协作的规则
最后:采用“顶层结构”,可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆在一起导致架构层次混乱

相关文章

  • 001 什么是架构

    系统与子系统 系统:由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体关键内容: 关...

  • 我来学习SCQA架构

    001 知识摘抄 002 SCQA架构是什么? SCQA是一个结构化表达工具 S(situation)即情境场景 ...

  • Kubernetes(1)架构及设计思想

    1. 架构 全局架构图https://static001.geekbang.org/resource/image/...

  • 什么是架构,什么是架构师?

    什么是架构,什么是架构师? ——这似乎是聊架构话题时永恒的问题。 从内心讲我真的不想回答架构具体需要做什么,架构师...

  • 什么是架构,什么是架构师?

    什么是架构,什么是架构师?这似乎是聊架构话题时永恒的问题。从内心讲我真的不想回答架构具体需要做什么,架构师应该具体...

  • 什么是架构?

    一、介绍架构 有关android架构方面的知识少之又少,而对与架构的理解有关架构的文章也都是智者见智仁者见...

  • 什么是架构

    架构是对软件的顶层设计,是对软件从静态结构,运行方式和执行效率的整体设计

  • 什么是架构

    之前说了架构的价值在于让软件更易于变化,更易于应对未来的需求。但易于变化这个属性和软件的功能代码本身是矛盾的。所以...

  • 什么是架构?

    第66篇 极客时间《从0开始学架构》课程笔记。 要理解什么是架构,需要先搞明白系统、子系统、组件、模块的定义,再区...

  • 001|什么是JavaScript ?

    什么是JavaScript?一种经典定义是:JavaScript是一种运行在浏览器中的编程语言。 在过去,这个说法...

网友评论

      本文标题:001 什么是架构

      本文链接:https://www.haomeiwen.com/subject/ltndaftx.html