从零开始学架构-day02

2021-12-07 17:34:07 浏览数 (1)

回顾

在上一节篇中主要是学习了架构和框架的的区别,包含系统和子系统的概念,以及在不同的维度去区分一个系统的架构是个什么样子。 今天我们开看一下架构这个概念是为什么出现,为什么我们每开发一个系统都要进行架构设计。

1. 架构的发展历史

一切事物都有自己产生的原因,那么架构的出现是为什么呢?

  1. 也许你有听说过因为一行代码导致了火箭发布失败,也许你也听说第一次软件危机和第二次软件和面向对象的开发和面向对象语言的产生。包含《人月神话》这本书出现。
  2. 还有就是我们的语言从 机器语言-> 汇编语言-> 高级语言的发展,这是为什么呢? 因为人类在进步,为了高效的生产。
  3. 我们来看看大佬是怎么讲的: 软件架构的出现有其历史必然性。20 世纪 60 年代第一次软件危机引出了“结构化编程”,创造了“模块”概念;20 世纪 80 年代第二次软件危机引出了“面向对象编程”,创造了“对象”概念;到了 20 世纪 90 年代“软件架构”开始流行,创造了“组件”概念。我们可以看到,“模块”“对象”“组件”本质上都是对达到一定规模的软件进行拆分,差别只是在于随着软件的复杂度不断增加,拆分的粒度越来越粗,拆分的层次越来越高。
  4. 社会在进步,软件在进步,我们还有什么理由不学习?从我接触到编程就已经听很多人说,干这种活,你得天天学习,你不学习就会被淘汰了。

2. 架构设计的目的

  1. 我们来一句话概括:架构设计的主要目的是为了解决软件系统复杂度带来的问题。
  2. 其实我们也可以从上文的历史发展来看,为什么呢?降低后期的维护成本,甚至可以这么说,为了防止以后代码不可以维护。也许你在工作中已经见到过这样的项目,甚至你我维护的项目就是这个样子的。其实说到这里不得不把重构拉出来扯一扯了。算了回到主题

2.1 架构设计的误区

  1. 为了达到某一个指标而放弃根本目标,降低复杂度(架构设计的主要目的是为了解决软件系统复杂度带来的问题。 )。
  2. 为了追求高性能,高逼格,或者学习别人的架构方式和思想等,导致系统复杂度还不如不设计直接MVC 使用面向对象语言进行面向过程编程。这就本末倒置了。但是很多时候等等外界因素我们苦逼的开发人员不得不去做一些自己不想做的事情。但是现在在开发中最常见的状态是“倒排期”,这真的是,哎!!!用代码整洁之道中BOB大叔说说这真的不是一个专业人员应该做的事情。

2.2 案例分析

  1. 设计学生管理系统,学生管理系统的模块,登陆,成绩管理,录入等
  2. 从逻辑进行架构设计:
  1. 从物理属性进行架构设计:

4.从MVC-规范的Spring MVC框架设计角度来看或者DDD的领域驱动设计规范的Axon来看的架构设计等,mvc的话就很简单,分层controller层 service 层,respositry层或者DAO层。而DDD就相对于能复杂一点,也就是Domian(领域层) ,aplication(组装domain层各个组件及基础设施层的公共组件,完成具体的业务服务) ,interface (对外接口层), instraucture(基础设施层)。

总结

  1. 架构的由来,以及一些小故事,架构设计的主要目的就是化繁为简。
  2. 案列:学生系统在三个层面的设计:逻辑层,物理层,框架层面。

0 人点赞