对于架构和软件的理解,很多人都有些偏差,通过看博主的这几篇文章,我对与软件架构的概念也有了新的认识。
首先,博主没有一上来就说,软件架构怎么怎么样,它是一个什么东西,是什么概念,而是先解释了架构是什么,进而在来谈软件的概念,最后再把两者结合,用了很多形象的例子帮助我们理解,来解释了什么是软件架构,这对于初学者来说,无疑让我们对于软件架构有了更深刻的理解和认识,而不是一个单薄简单的书面概念而已。
想要理解软件架构是什么,先要弄清什么是架构,架构是如何出现的,以及我们为什么要用这个东西。生活中到处都充满了使用架构的例子。比如博主提到的,建筑,建筑其实就是一个架构,封闭的建筑把建筑里面的事物与外面的事物分隔开,但又用了门或窗子来让二者以某种形式联系起来,乃至建筑里面的房间布局,每个房间的功能各不相同,这也是一种架构。架构简单来说,就是把一个整体分隔开,分成不同的部分,并且每个部分之间都有着某种联系,使这些部分能够有机的结合成一个整体,并且完成这个整体需要去完成的活动。
那么为什么会出现架构呢?最根本的原因就是我们的能力时间有限,但是我们希望在这些有限的能力和时间条件下,去享受更好的东西。每个人都有所长,如果每个人都去做自己擅长的事情,那么就可以在有限的时间内,创造出最大的价值。那么使用架构的原因,也就明了了,都是为了在有限的资源里,做出最有价值的东西。我认为架构其实也是一种实现途径,为了我们能够更好更快的解决问题的途径。做好架构,最重要的就是识别出需要解决的问题。找到了真正的问题所在,对症下药,是一个高水平架构师要做到的。
既然要划分任务,那么最重要的就是所谓的“公平”,也就是利益相关人的权力和义务要对等,每个利益相关人的负载都要合适。这个其实也好理解,就像拿工资干活一样,拿一样的工资,干的活却比别人多,这就是负载太重。
我们再来说软件,软件为什么会产生呢?说的直白一点,就是人们太懒了,太精了,因为懒,所以想要让电脑代替我们去完成一些事情;因为精,所以明白软件的成本可比雇人的成本低,所以想让电脑来代替员工,减少开销。总而言之就是,成本最大。
在软件这方面,越是庞大的系统工程,涉及到的人就越多,这里的人不仅包括敲代码的程序猿,也包括一些业务人员。程序猿和业务人员的区别,其实就类似于一种架构,因为人的精力是有限的,没有办法做到一边翘着代码一边和客户说,好的我知道你想要的是什么。这个应该算是人力分工架构那一波里的吧。
软件架构,就是软件里的各种切分了。在不同的机器上部署所形成的架构,以及我们比较偏向,比较重视的代码架构,这都算是软件架构。一个好的架构师,首先要处理好除了软件架构之外的其他架构的关系,比如要先协调好业务人员和编码人员之间的关系。处理好了外部架构之后,再来处理软件架构。
软件架构所做的一切都是以用有限的资源创造出最好的东西为基本准则。比如编码人员的代码分工,比如选用什么技术来解决问题,这都是架构师需要去考虑的。