“架构漫谈”读后感想

  今天读了王建民老师推荐的一些资料《架构漫谈》(王概凯)收益很大。王概凯先生一共写了九篇文章,从第一篇到第九篇循序渐进,思路清晰,就算是我这样的初学者也可以读得懂。

  这九篇文章的题目分别是这样的:“什么是架构”、“认识概念是理解架构的基础”、“如何做好架构之识别问题”、“如何做好架构之架构拆分”、“什么是软件”、“软件架构到底解决什么问题”、“不要空设架构师这个职位,给他实权”、“从架构的角度看如何写好代码”、“理清技术、业务和架构之间的关系”;

  从初学者的角度我个人写一下自己从这就篇文章中分别吸收到了那一些知识。“什么是架构”这篇文章在第篇就解答了我作为一名懵懂学生的疑惑:我们跟者老师学习架构,到底架构是个什么东西呢,它能给整个项目带来什么好处或者起着什么作用呢?王概凯先生在他的第一篇文章中(按照个人的理解)是这样说的:在了解什么是架构之前我们先要了解为什么会产生架构;那就是当一群人或者一个项目组同时工作的时候,由于每个人的能力是有限的,而且每个人的专长是有所不同的,所以为了达到资源利用最大化,我们需要对现有的资源进行重新的分配,然后获得任务的个体与其他的个体进行有效的沟通,共同完成一个目标。王概凯先生这样总结架构产生的原因   

    1. 必须由人执行的工作(不需要人介入,就意味着不需要改造,也就不需要架构了) 

    2. 每个人的能力有限(每个人都有自己的强项,个人的产出受限于最短板,并且由于人的结构限制,同时只能专注于做好一件事情,比如虽然有两只眼睛,但是只能同时专注于一件事物,有两只手,无法同时做不同的事情。ps. 虽然有少部分人可以左手画圆右手画框,但是不是普遍现象) 

    3. 每个人的时间有限(为了减少时间的投入,必然会导致把工作分解出去,给擅长于这些工作的角色来完成,见 2,从而缩短时间) 

    4. 人对目标系统有更高的要求(如果满足于现状,也就不需要进行架构了) 

    5. 目标系统的复杂性使得单个人完成这个系统,满足条件 2,3(如果个人就可以完成系统的提高,也不需要别的人参与,也就不需要架构的涉及,只是工匠,并且一般这个工作对时间的要求也不迫切。当足够熟练之后,也会有一定的架构思考,但考虑更多的是如何提高质量,提高个人的时间效率)。

  至于第一节的目标什么是架构,总结来说就是:给系统制定边界(需要需求分析),然后将目标系统按照模块进行拆分,最后将拆分好的内容分配到个人手中,做好每个人在工作中的协调交流工作。

  关于第二篇文章“认识概念是理解架构的基础”我觉得和第三篇“如何做好架构之识别问题”结合起来理解更加容易一些,说了那么多个人就收获了一个关键点:在分析问题或者在做架构之前一定要抓住问题的根本原因(有意向的读者可以读原文中“切土豆”的那个例子非常直白明了),当我们去解决一个问题的时候,一定要先把问题搞清楚,找出问题的主体,发现项目中存在的隐藏问题这才是一个合格的架构师应该具备的素养。

  读到第四篇文章“如何做好架构之架构切分”的时候感觉这个题目有些怪异--架构不就是一个整体的东西吗,这还能切分?然后我看到了作者这样的回答:虽然在识别出问题的根本所在之后会解决很多的问题,但是总是有问你还是解决不了得,那就需要做调整,那么就必须要有所动作,做相应的调整。这个调整就是架构的切分。原来是这样,那架构切分既然是为了解决问题,南无架构切分到底是为了解决什么问题还有架构应该怎样切分才算是合理呢?作者又有了这样的回答:切分是为了达到调整利益的目的,调整整个项目的运作之中产生的时间和空间上利益冲突的问题以此达到利益的最大化。作者在本章的组后部分作出了总结:

  架构的切分的导火索是人的负载太重。 架构的切分实际就是对 stakeholder 的利益进行切分或合并,使得每个stakeholder 的权责是对等的,每个 stakeholder 可以为自己的利益负责。  架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。  架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。这样看来矛盾基本上是可以通过架构切分来解决的啦。

  至于第五篇文章“什么是软件”,作者就软件的开发历史展开来谈,比较详细的介绍了软件的发展动力以及软件发展带来的效益和这对软件工程师造成了什么样的影响从而导致软件架构这一概念的兴起到发展;后面的章节也是十分的精彩,不过我在这里就不做详细的解说了,就略微提一下自己受到的小小的启发,有兴趣的朋友可以点击我第一段的链接详读品味;

  第六篇文章讲述了软件架构师要解决什么样的问题,该如何做才算是一名合格的架构师,至于这部分内容我的前一篇文章中已经写过了。读完以后个人感觉软件架构师这个职业是非常的神圣的,在整个团队开发中起到了非常之大的作用,因为他会帮助整个开发团队将潜在的损失减少到最小还会将整个团队的 资源充分的调度起来,减少各种矛盾冲突的加深,将团队的利益带领到最大化。

  后面两篇文章都是在细说软件在实施架构的时候该注意到的问题,一些规范的操作和规定会对提升全项目组的工作效率带来很大的提升;所以个人感觉学一些大家都推崇的框架比如说S2SH也是对架构的掌握起到促进的作用的吧。

  

  

  

 

 

原文地址:https://www.cnblogs.com/aishangtaxuefeihong/p/6495013.html