软件架构初识

   通过阅读资深架构师王概凯 Kevin老师的架构漫谈,我一些概念的理解更加深入了,对架构有了初步的认识,并从中总结了自己对软件架构师如何工作的一些简单的想法,可能有点幼稚。

认识

在软件架构漫谈一中,我发现软件架构的核心在三方面:认识拆分、解决。软件架构师的工作肯定不是像程序员那样负责具体部分的代码编写,架构师应该首先是一名工程师,着力于解决工程上的实际问题,这里的工程就是软件要解决的问题,也就是用户的痛点。我们都知道,在工程上,要想解决问题,必须要充分认识问题,正如孙子兵法所说:知己知彼,百战不殆, 例如梦想改造家中,设计师通常会深入了解房子的问题,并针对问题,提出对应性的解决方案,戚继光发现倭寇的狼刀很厉害,这种刀长而且有点弯,戚继光就专门发明了新型盾牌,专门克制倭寇的狼刀。所以认识、理解问题对于软件架构师来说非常重要,如果一个工程师不知道工程上的问题在哪里,那这个工程师是失败的。

在了解、认清问题后,作为软件架构师需要抽象,抓住核心问题,提出自己的概念,也就是将这种问题用自己的概念抽象,当然到这一步,认识的过程还没有结束,找出问题的主体和边界才是认识的核心,因为架构师的要解决的问题都是人的问题,人的问题都是需要找出主体的,而软件架构师就是要将问题主体找出,如果不能找出,那么解决问题的方向就错了,找出问题的主体类似于发掘用户真正的需求,而不是用户向架构师提出的需求,也就是说用户说出来的需求不一定是用户真正的需求。软件架构师要找出这种真正的需求,就必须要明确问题的边界,明确这个问题的主体,而不是把问题和其他问题打包带出,就像挖藕一样,不能把荷叶和藕一起带出,因为我们只需要藕。软件架构师要明确这是谁的问题,有什么问题,确定了这是谁的问题,找出有什么问题就比较容易了。

 

拆分

我的理解是如何正确的拆分问题的规模,做到真正的分而治之,而不是将问题拆分的一塌糊涂,这样不但不能降低问题的规模,反而增加了问题的规模。在架构漫谈中说切分就是利益的分割,这种拆分必须是要有原则的,不然利益的分割是不公平的,比如说人类从自给自足的状态转向社会分工,每个人从事专门的工作,相互的物资交换,这时,如果布的价格过高,那么对于从事生产其他物资的人就是不公平的,那么这种社会分工迟早会退步为原先自给自足的状态,那个这样的分工就是无意义的。所以软件架构师在工作的时候要有原则的切分、拆分,要遵循某一标准或者某一原则来进行切分、拆分。拆分、切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进,架构拆分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。拆分也是因为在软件发展的过程中,个人工作不断加重,最终产生架构的拆分。

 

解决

作为一名软件架构师,必须明确自己解决问题的对象,解决别人的问题而不是解决自己的问题或者完成自己的工作,因为软件架构师只有解决了别人的问题才算真正完成了自己的工作。要想成为软件架构师,那么你必须自信,用自信去克服对时间的恐惧。软件架构师要从利益的角度分析这个问题是谁的问题,这个过程中明确受益者、权衡责任与义务是关键。作为软件架构师不能过多的思考技术上的细节,而是要专注于业务目标的实现。软件架构师必须明确技术、业务、架构三者的区别,要明确主要的业务逻辑,不要过多地考虑技术上实现的细节,技术对于软件架构师只是工具,软件架构师需要明确采用什么技术,承担起解决业务问题的责任。

 

原文地址:https://www.cnblogs.com/yang2000/p/14480854.html