《从0开始学架构》——什么是架构设计

本系列是极客时间《从0开始学架构》的读书笔记。

一、什么是架构

对应《01|架构到底是指什么?》

作者首先梳理了系统和子系统、模块和组件、架构和框架这些概念的区别和联系。评论区有位说得很明白:

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

按照我的理解,架构的维度是最大的,一般我们会讲业务架构和技术架构两类。而框架重在提供一种约束,是半成品,实际的开发人员在框架内的约束下编写业务代码,而框架通过控制反转(IoC)运行程序。组件和模块并没有什么区别。

二、历史背景

对应《02|架构设计的历史背景》

在本篇中,作者简单介绍了下软件工程的发展历程。从机器语言,到汇编语言,到高级语言。从第一次软件危机背景下出现的结构化程序设计,到第二次软件危机背景下出现的面向对象设计。

其实如果读的多的话,会发现在计算机的很多领域都会或多或少复述一遍上面的历史进程。比如说各类编程范式,命令式、过程式、面向对象、函数式、逻辑式、并行式……比如说数据与计算量,从大型机到云计算,从单一到分布式……

我们会发现,解决的问题越来越多,越来越大,但是相随的是,出现的问题也越来越多,越来越复杂了。软件工程是为了解决问题而不断创新的,现在人们发现软件架构的优劣也是一个重要的影响因素。

但是呢,架构设计同之前出现过的结构化设计和面向对象设计一样,并不是一劳永逸的。软件工程领域没有“银弹”。

面对出现的未知问题,不断创新,将问题拆分,将复杂度降低,这才是软件工程领域永远不变的主题。

三、目的

对应《03 | 架构设计的目的》

从上篇可知,架构设计同之前出现过的其他设计理念相同,都是为了解决新出现的问题而提出的。那为什么会新出现问题?在于复杂度。所以,架构设计是解决由于复杂度带来的问题的方法之一。

基于复杂度来思考也是架构设计领域的指导思想。比如说哪个部分需要设计架构?架构设计主要偏向于哪方面,是高可用,高性能,还是可扩展?需不需要引入某技术?

作者在之前也提到过,同编写程序不同,架构设计更趋向于“取舍”,那如何去取舍的重要依据也是“复杂度”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值