软件架构师如何工作——架构漫谈读后感

写在前面

本文是在看了王概凯的架构漫谈后的读后感,架构漫谈是由资深架构师王概凯 Kevin 执笔的系列专栏,详细讨论了架构师的相关内容。

第一步:认清基本概念

对于一个软件架构师来说,最基本的当然是理解清楚一些最基本的概念了。

什么是架构?

这是架构漫谈系列的第一篇文章的标题。事实上,很多人包括我自己在听到架构师这个职业的时候都会有一个疑惑:“先不提架构师,什么是架构呢?”。在阅读了这篇文章后,我来谈谈我的理解。一直以来,架构没有着明确的定义,很多官方的定义都十分模棱两可。而作者从架构产生的动力入手,详细阐述了架构产生的原因,从而推导出了是架构的必要条件:

  1. 根据要解决的问题,对目标系统的边界进行界定。
  2. 并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
  3. 并对这些切分出来的部分,设立沟通机制。
  4. 根据 3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。

从这里我们可以清晰的看到,要分析什么是架构,还是得从架构的产生开始谈起。

什么是软件?

作者在架构漫谈的第五篇中讨论了这个问题。如果要我来回答这个问题,我也是说不清的。

在文章中,作者运用了与分析架构的概念时类似的方法,用软件产生的原因来分析软件的概念。先说结论:软件其实就是通过把人类的日常生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。通俗的说,软件实际上是现实中业务模型的体现。软件本质上还是在模拟现实生活中的东西,例如VR,人工智能等也是这样的东西。

什么是架构师?

在了解了以上两个基本概念后,就回到了最初的概念问题了。什么是架构师呢?按照上面的分析方法,我们来思考架构师产生的前提条件。

随着时代的发展和软件的逐渐复杂,一个软件已经无法由简单的一个人来开发了。一个软件需要很多人来完成,如开发人员负责编码,架构师负责整体的架构,测试人员负责进行测试等等。这些功能的细化促使了很多职业的产生。

说到底,架构师的存在其实是来解决问题的。架构师实际上就是为了平衡别人的利益,甚至调整别人的利益的存在。架构师就是负责协调整个组织的各个部分,使得各个部分有机的结合起来。

如果真的要给架构师下一个定义,那便是从事着如上描述事情的人吧。

第二步:理解清楚要解决什么问题

在我们理解了最基本的概念之后,在解决具体的问题前,要先明确:我们到底是要解决谁的什么问题呢?这部分在架构漫谈的第六篇中讨论了相关内容。

首先,是谁的问题?一般来说是两个问题,一是业务问题,在没有软件的情况下,一个业务是怎么流转的呢?二是计算机问题,模拟出来的软件需要什么样的硬件支持才可以获得比较好的效果呢?软件如何保证可用性等等?那么这分别是谁的问题呢?业务问题自然是业务的owner的问题,而计算机问题就是软件工程师的问题了。

那么,是什么问题呢?

拿第一点来说,业务的本质实际上是业务所服务对象的利益问题。对于他们的问题,就是要明确到底是不是真的需要一个软件。如果只是跟风,效率其实并没有得到任何的提高。

第二点呢,软件工程师必须要熟悉业务,熟悉他们的利益所在。我们不能按照自己的理解去瞎做,这样只会造成没有任何意义的结果。

第三步:如何做好架构

公司角度

对于公司来说,要信任一个架构师。如果一个架构师要发挥他的才能,那么必然要给架构师实际的权能。没有权能的架构师是没有任何意义的,只是空设的。架构师必须有权利调用这个组织的架构,才能更好的发挥他自己的作用。如果限制其权利,反而会更容易滋生内部的矛盾。

架构师角度

对于架构师来说,首先要精确的识别问题。看起来这似乎并不是什么问题,但事实上很多问题都是因为没有正确的识别问题所导致的。作为一个软件架构师,更多的时候是去解决“别人”的问题,而这个别人是谁,他又有着什么样的问题呢。我们拿到一个事情的时候,一定要真正的理解需求背后的真正的需求人。比如用户说:我要一把锤子。这只是一个结果,一定要追问用户,为什么需要一把锤子,这把锤子被用来干什么,从而更好的识别和理解问题。

之后,要做好架构的切分。所谓架构切分,其实就是利益的调整。所有的切分调整都是对相关人利益的调整。在切分的时候,有这么几个原则:

  • 必须在连续时间内发生的一个活动,不能去切分
  • 切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。如果不这样做,会伤害每个个体的利益,分出来的效率变低,还不如不分。违背了初衷。
  • 切分出来的部分,不能超过一个一个自然人的负担。
  • 切分是内部活动,对于外部来说应该都是透明的

总的来说,架构的切分要十分小心。

最后,要理清技术、业务和架构的关系,并且要意识到代码的重要性。作为一个架构师,大部分是否都是在扮演上帝的角色。这就导致很多时候架构师总是把自己看的太高了,这是很危险的。任何时候都不能脱离实际。

那么,技术是什么呢?技术是为了解决业务的问题而存在的。没有了业务,技术便没有任何意义。一般来说肯定是先有技术再有架构。随着技术的发展架构就会出现。

总结

总的来说,今天阅读了九篇架构漫谈,谈了谈自己对于架构师如何工作的理解。

原文地址:https://www.cnblogs.com/wushenjiang/p/14485077.html