关于软件架构师如何工作

  阅读王概凯的架构漫谈后的一些想法。https://infoq.cn/profile/1279517/publish。想要知道架构师如何工作,就需要理解什么是架构以及什么是架构师。在这之前,我时不时的会听见关于架构的一些东西,好像架构或架构师是离自己很远的一个东西,想要理解架构就要从接近它的地方开始,作者在文中提到了维基百科的定义:架构是规划、设计和建造建筑物和其他物理结构的过程和产品。读完文章后,我觉得架构的出现就是为了解决某个问题,架构就是解决问题的一种方法。架构的出现将大问题化解成了一些小问题,并使得这些小问题都有对应的解决方法,这些解决方法相互关联,最终解决大的问题。

  架构师应该就是设计架构的人,或者说是为某个特定的大问题或一些有相似性的问题设计解决方案的人。软件架构师应该就是为软件的开发设计架构的人。

  软件架构师首先要识别问题,找出其中的难点,对症下药,如果要解决的问题都是错误的,那么这个架构的设计就没有了任何意义。作者在文中用提到了一个笑话:女主人公:老公,把袋子里的土豆切一半下锅。结果老公是把袋子里的每个土豆都削了一半,然后下锅。女主人公的老公就没有理解女主人公的意思。其次要清楚解决问题后的受益人或人群是谁,这样才能对利益进行调整也就是架构切分,文中提到了切分原则:必须在连续时间内发生的一个活动,不能切分。比如孕妇怀孕,必须要 10 月怀胎,不能够切成 10 个人一个月完成。切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。比方说妈妈 10 月怀胎,妈妈有权利处置小孩的出生和抚养,同样也对小孩的出生和抚养负责。为什么必须是这样呢? 因为如果权利和义务是不对等的话,会伤害每个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了整体的利益,这违背了提升整体利益的初衷。切分出来的部分,不应该超出一个自然人的负载。当然对于每个人的能力不同,负载能力也不一样,需要不断的根据实际情况调整,这实际上就是运营。切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。如果因为切分导致整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。当然很多时候当我们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会形成螺旋式的进化。但这不属于架构所应该解决的问题。进化的发生,也会导致新的架构的切分。第三要弄清楚什么是软件,作为软件架构师不知道什么是软件就说不过去了,文中说:在硬件上编写出的程序,就是软件,是用来控制硬件的行为的。随着软件的规模的变大,做好一个软件也变得越来越难了。程序从早期由一个人完成,也逐渐变成了由很多不同角色的人共同合作来完成。一个人的能力有限,众人拾柴火焰高,所以就出现了一系列开发软件的角色,系统的设计交给架构师,设计的实现交给架构师。

猜你喜欢

转载自www.cnblogs.com/leity/p/12332666.html