软件架构师如何工作

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

架构解决的是人的问题。

作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。解决一个问题,首先需要理解这个问题的主体是谁,明白了什么是主题,那么这个问题的各种边界等信息就可以很轻易的看出来了。因此,找出问题的主体是做架构的首要问题,并且,发现问题永远都比解决问题来的更加重要。当问题的主体离架构师越远,就会让找出问题主体的过程越加困难。所以,要真正的认识问题需要明白两点:1.这是谁的问题;2.有什么问题。

所有的切分调整,都是对相关人的利益的调整。每个人都希望能够把自己的利益最大化,但是每个人的能力和时间都非常的有限,不可能什么都懂,所以自然需要舍掉一些自己不擅长的东西,用自己擅长的东西去换取别人擅长的东西。对比一个人干所有的事情,结果就是大家都能够得到更多,当然也产生了一个互相依赖的社会,互相谁都离不开谁。这就是自然而然而产生的架构切分,背后的原动力就是人们对自己利益的渴望。人们对自己利益的渴望也是推动社会物质发展的原动力。在这个模式下,比较有意思的是,每个人必须要舍掉自己的东西,才能够得到更多的东西。有些人不愿意和别人进行交换,不想去依赖于别人,这些人的生活就很明显的差很多,也辛苦很多,自然而然的就被社会淘汰了。如果需要在这个社会上立足,判断标准就变成了:如何给这个社会提供更好更有质量的服务。提供的更好更多的服务,自然就能够换取更多更好的生活必需品。实际上这就是我们做人的道理。

切分有几个原则:

  1. 必须在连续时间内发生的一个活动,不能切分。比如孕妇怀孕,必须要 10 月怀胎,不能够切成 10 个人一个月完成。
  2. 切分出来的部分的负责人,对这个部分的权利和义务必须是对等的。比方说妈妈 10 月怀胎,妈妈有权利处置小孩的出生和抚养,同样也对小孩的出生和抚养负责。为什么必须是这样呢? 因为如果权利和义务是不对等的话,会伤害每个个体的利益,分出来执行的效率会比没有分出来还要低,实际上也损害了整体的利益,这违背了提升整体利益的初衷。
  3. 切分出来的部分,不应该超出一个自然人的负载。当然对于每个人的能力不同,负载能力也不一样,需要不断的根据实际情况调整,这实际上就是运营。
  4. 切分是内部活动,内部无任怎么切,对整个系统的外部应该是透明的。如果因为切分导致整个系统解决的问题发生了变化,那么这个变化不属于架构的活动。当然很多时候当我们把问题分析的比较清楚的时候,整个系统的边界会进一步的完善,这就会形成螺旋式的进化。但这不属于架构所应该解决的问题。进化的发生,也会导致新的架构的切分

软件实际上是对现实生活的模拟,虚拟化在软件代码中,不需缩进和计算的顺序调用,包括缩进的代码目的是 catch exception 的,都不算逻辑,除此以外都是逻辑

技术总是在人类解决对业务的要求不断提高的情况下产生,目的也是为了获取更大更好的利益。所以:

  1. 技术是为了解决业务的问题而产生的,没有了业务,技术就没有了存在的前提。
  2. 有了更好的技术,效率更差的技术,就会慢慢的被淘汰,消失,一切都遵从人类的利益诉求–也就是业务。有人会问,不用钻木取火了,但是弓弦加速转动木棍还可以用啊? 没错,因为弓弦转动木棍这个技术,不是来生火的,是用来加速木棍转动的,所解决的问题不一样。但是两种不同的技术,合理结合起来,会更好更有效率的解决业务问题。所以技术与技术之间,有两种关系:
  3. 在解决同一个业务问题的前提下,更高效,更低成本的技术,会淘汰低效,高成本的技术。这是人类利益诉求所决定的。
  4. 一般刚开始解决根本问题的技术(钻木取火)的效率是比较低的,只是把不可能变成了可能(从这一点上来说,技术才是业务的 enabler)。然后就会有提高效率的需求出现,要求改进这个技术。这个技术的低效率部分就会被其他人(或者技术发明人自己)加以改进,这部分就会形成新的技术。
原文地址:https://www.cnblogs.com/vvxvv/p/14487470.html