读<架构漫谈>系列有感

  读了这一系列博文,我对架构也有了大致的了解。在简单的阅读之后,我解决了几个问题。 

  第一个问题,什么是架构?

  要学习架构,首先要知道架构。那么,什么是架构呢?引用《架构漫谈()》里的话就是把一个整体切割成不同的部分,由不同的角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。架构的定义及步骤如下:

  1.根据要解决的问题,对目标系统的边界进行界定。

  2.并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。

  3.并对这些切分出来的部分,设立沟通机制。

  4.根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。

  架构的学问就在于如何界定系统边界,以及如何建立建立机制,并且建立怎样的机制等这些细节之中。

  第二个问题,做好架构的第一步是什么?

  做好架构首先需要做的就是识别出需要解决的问题。作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题。找出问题的主体是做架构的首要问题,我们要解决的问题,一定都是人的问题。更进一步,架构师要解决的,基本都是别人的问题,不是自己的问题。再进一步,我们一定要明白,任何找上架构师的问 题,绝对都不是真正的问题。为什么呢? 因为如果是真正的问题的话,提问题过来的人肯定都能够自己解决了,不需要找架构师。架构师都要有这个自觉:发现问题永远都比解决问题来的更加重要。

  当问题的主体离架构师越远,就会让找出问题主体的过程越加困难。当明白了问题的主体,我们才可能真正的认识问题是什么。因为问题的主体是问题的隐含边界,边界不确定下来,问题就是不确定的。一旦确定了主体,剩下的就是 去搞明白主体有哪些问题。这个就比较直接了,常用的方式就是直接面对主体进行访谈,深入到主体的工作生活当中,体验并感受这些问题,甚至通过数据的反馈来定位问题。

  第三个问题,如何切分架构?

  首先,肯定会有人问,为什么要切分架构?当我们识别了问题的主体,就确定了系统的利益相关人。当某个或者某些利益相关人的权利和义务不对等,我们就需要切分架构。那么,如何切分呢?因为每个人的时间都有限,我们的目的就是在最短的时间内完成最多的事情。

  从某种意义上讲,谈架构就是谈分层。实际上分层的过程就是建模的过程,每次对大问题的切分都会生成很多小问题,每个小问题就形成了不同的概念。这些不同的概念大部分时候人们自发的已经建好了,架构师更多的是要去理解这些概念,识别概念背后所代表的的人的利益。

  架构切分的输出实际上就是一个系统的模型,对于一个整体问题,有多少的相关方,每个相关方需要承担哪些权利和义务,不同的相关方是如何结合起来完成系统的 整体任务的。有的时候是从上往下切(企业),有的时候是从下往上合并,有的时候两者皆有之(人类社会的发展)。而切分的结果最终都会体现在组织架构上,因 为我们切分的实际上就是人的利益。

  第四个问题,软件架构要解决什么问题?

  话题终于讨论到了计算机的问题。博文中提到,软件实际上是对现实生活的模拟,虚拟化。有了软件之后,实际上,我们是把我们日常生活中所做的事情,包括我们自己本人都一起虚拟化到了计算机中。而人则演化成了,通过计算机的输入输出设备,控制 计算机中的自己,来完成日常的工作,以及与其他人的沟通。也就是说,软件一直以来的动力,始终都是来模拟人和这个社会的。比如模拟大气运动(天气预报), 模拟人类社会(互联网社交),模拟交易,包括现在正在流行的VR,人工智能等等。模拟的对象越来越高级,难度越来越大。

  如同前面描述的架构的定义,软件架构的出现也是同样的。一开始是懵懵懂懂的去写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也 是一样的,就是提升参与的人的利益,降低成本。导火索也是软件工程师的任务太重,我们需要把很多工作拆分出来。拆分的原则也是一样的,如何让权责一致。同 样,这个拆分也是需要组织架构的调整,来保证架构的落地。

posted @ 2016-04-28 19:25  软工_何艳江  阅读(158)  评论(1编辑  收藏  举报