架构漫谈读书笔记
什么是架构?架构就是把一个整体切分成不同的部分,有不同的角色来完成这些分工,并通过建立不同的部分相互沟通的机制,使这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动。首先我们需要识别出需要解决的问题,文中以切土豆为例。通过这个例子,我知道了当用户向你提出一个需求的时候。我们不能只停留在这个问题的表面。我们需要从全局的角度看待这个问题。他要的仅仅是他说的吗?他提出这需求的根本目的是什么?他实际上是要解决什么问题。软件实际上就是我们将一些我们日常生活中所作的事情,包括我们本人都一起虚拟化到了计算机中。通过计算机的输入输出设备,控制计算机中的自己,来完成日常工作的一种应用。也就是说人是软件发展的动力。随着时代的发展,一个人已经很难独立的完成一款软件。架构师只能够通过建立某些流程来行使架构师的权利,比如强制架构review,反过来造成内部很多不必要的冲突,最终都会导致这些流程流于形式,得不偿失。相信很多人已经历过这些,但似乎很少有人回去探讨这是为什么。技术是为了解决业务问题而产生的。有了更好的技术,更差的技术就会慢慢被淘汰。一般先有技术,才会有架构。为了可以更好的作出架构,我们要对整个项目需求进行切分,还要把控对于利益的调整。一旦确认问题的主体,我们接下来会发现如下问题,某个或者某些利益相关人负载太重,或者时间上空间上负载太重,或者某个,某些利益相关人的权利和义务不对等。所以我们需要在一定原则上进行切分,第一是自然就无法切分的部分,第二是不违反人性。随后就是一系列建模和组织架构了。作为架构师,首先需要找到利益相关者,从而确定问题是谁的,这个是非常重要的,之后才能确定是什么问题。确定问题之后,就可以将大问题切分成一个一个小问题。但是并不是所有问题都可以切分的。当然能随着问题的切分,与其相关的利益也随着切分了。有付出是有回报的,利益与付出需要对等,否则员工就会消极怠工了。而软件工程师的工作就是实现这个模拟过程的关键人物。但是这个过程需要学习大量的各行各业的专业知识,所以需要很多角色。就开始了角色的切分,也就演变成了不同的软件架构来提升参与的人的利益,降低成本。软件需要解决的问题呢,有两点,一是业务问题,搞明白要解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的;二是计算机问题,如何将现实生活用软件来模拟。