架构理解

1.1 何为架构

架构一词是很多程序开发心里向往的殿堂,对它充满了无限的想象,但又一直不得要领。在进入阿里之前,自己对架构的理解是很肤浅的,认为架构就是技术对比&选型,经过一年多的实践和思考,也找了一些资深技术专家聊聊,总结下自己的心得。

学习一门技术之前,要知道这个技术到底是什么、解决了什么问题、如何解决的。那什么是架构呢?不同的人会有不同的看法,其实这些都不重要,关键是自己要有自己的心得体会。我自己对架构的理解是:按照架子把它构造出来。那么是有两个问题:一是什么是架子;二是如何构造

架子是一个蓝图,一个指南。经过这几年开发的体会,技术只是日常的一小部分,还有更多的是项目管理、沟通,这些是非常重要的。架构是解决项目开发中的协同问题,它的目标是对复杂系统进行分解,让各个子系统或子任务能并行执行,要让每个人在自己的工作领域中看到整个全景图,对系统、任务的理解达到统一的认识。有经验的同学会发现,开发一个需求可能不需要太多的时间,但在沟通中会有很多的障碍,相互之间不清楚这个需求的目的或者各自有自己的理解,很多时候时间是浪费在这个地方上。

我一直喜欢用盲人摸象这个例子来说明全局观的重要性,对整体的把握,会加深对整个事物的理解,认识一个事物,一定是先宏观,再中观,最后是微观。为何面向对象能解决复杂的问题?这个命题可以好好思考下,可能你会有自己不一样的想法。举的这个例子是说明一定要看到大图,知道总的目标是什么,你所做的处于在哪个位置上。

架子就相当于一个全景图,大家都知道这个全景图是什么(统一认识,减少沟通上的障碍),全景图中的各个部分可以并行工作起来,就是协同问题。任何一个技术或者理念,是为了解决某个问题的,架构也不例外,如何应对大型复杂的项目,让开发、沟通成本降低,系统更平稳。

现在说的领域建模就是一个架子,一个团队统一一种语言交流,看到这个图就知道大概做什么的,每个子领域要完成的具体任务是什么。领域模型中有很多名词、概念,开始看的话很迷惑,仔细想想,无非就是中国的一句话"做事之前三思而后行",思的过程就是对全局的把握,知道这个具体要怎么做,做到心中有数,不至于打乱仗。

说了这么多,总结一下:

  • 架构是解决项目开发中的协同问题

1.2 支撑架构的思想

上面所说的是架构解决什么问题,那如何去落地呢,这是一个问题。面向对象的思想这么多年了,包括我自己,很长一段时间就是用面向过程来解决问题,当然并不是说面向过程不好,面向对象和面向过程不是对立的,大的方向上思考是用面向对象,具体细节实现用的是面向过程。

我们看一个事物,随着不断深入,你看到的东西是一样,会发现,其实认识事物是具有层次的。比如,看到汽车,整体上看到一个外观,知道大概长什么样,基本由什么组成,再深入看每一个组成部分,又会有它自己内部的结构。

到这里,相信大家大概能总结出下面的观点:

  • 系统是由不同的部分组成的,部分与部分之间可以相互关联作用的
  • 每个部分又是一个小的领域,完成某项具体的功能

我们在认识事物上,也是先整体后部分,知道大概功能,然后在某一个领域上工作。引出两个我们平时常说的概念:

  • 分层:对一个问题分解成不同的层次,每个层次完成对应的功能,层与层之间相关联,每个层可以并行工作
  • 抽象:抽象是去除不必要的信息,将信息内聚

面向对象的思想很有意思,它是按照人的思想去思考问题,先找出组成的对象,然后逐步细化。面向对象解决了软件开发中的两个重要问题:可复用性和可扩展性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值