软件架构师是如何工作的
软件架构师是如何工作的
看完了王概凯写的九篇架构漫谈后,对于软件架构师是如何工作的,首先我们的先知道什么是架构。架构实际上解决的是人的问题,架构的意思是根据要解决的问题,对目标系统的边界进行界定,并对目标系统按某个原则的进行切分,切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并行或者串行来完成这个整体所需要的所有活动,这就是架构。
然后就是识别问题,架构是解决人的问题的,如此识别问题就是重中之重,“发现问题永远都比解决问题更加重要”爱因斯坦的名言启示我们从多角度考虑问题发现新的问题,解决问题时发现更多的问题,包括,问题的主体和问题的边界。抓住问题的主体与问题的边界才有可能真正解决问题,才有可能解决真正的问题。作为软件工程师或者架构师,我们大部分时候是要去解决别人的问题,“别人”是谁,是值得好好思考的。在这个故事里面,男主人要解决的,实际上是这个家庭晚餐需要吃土豆的问题,目标问题的主体实际上是这个家庭的成员。客户的需求通过语言文字传递给架构师的是客户自己对需求的描述,并非问题的本质,因为问题的本质是隐藏的,如果客户知道问题的本质那么客户会自己解决自己的问题,无需工程师的参与。所以架构师要与客户深度沟通尽可能多地发现问题来接近问题地本质。架构师都要有这个自觉:发现问题永远都比解决问题来的更加重要。
识别问题后就是如何切分,也就是架构的切分的导火索是人的负载太重。架构的切分实际就是对 承担者的利益进行切分或合并,使得每个 承担者的权责是对等的,每个承担者可以为自己的利益负责。架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。
既然要效率最大化,利益也需要最大化,人们发现计算机可以解决解决很多问题,而且只需要电,,可以无休止的工作,如此人们越来越愿意把原来只有人才能做的事情,交给计算机来做,软件诞生了,慢慢软件就变成了一个独立的行业。程序从早期由一个人完成,也逐渐变成了由很多不同角色的人共同合作来完成。如此加上问题的识别,任务的切分,框架的概念也就进入了软件。
如此软件架构师的工作就很明显了,首先,他不应该只专注与解决自己工作的问题,那样他就会有对时间的恐惧和压力,这是因为我们把完成自己的工作当成了我们的最大利益。如果别人的问题没有真正的解决,必然会觉得付出的报酬不值得,另一方面也说明,我们对自己所从事的工作,还没有足够的自信,我们解决自己的问题还有困难,才会这么在意,并恐惧。如果我们把完成别人工作当成自己的最大利益,这个对时间的恐惧自然就会消失,这个时候才能在自己所服务的领域建立起自信,成为一个合格的架构师。
软件功能越来越多,开发过程越来越复杂,代码的编写也要用架构的思想对部署单元进行责任切分,切分标准就是有无业务逻辑,有业务逻辑的分为一组,无业务逻辑的分为一组,因为含有业务逻辑的部分是业务的核心,所以再对业务逻辑进行细致的划分。这样每个单元相对系统都成了独立的一部分,使业务的扩展和修改成本在可控范围内。
技术、架构以及业务之间的关系:技术在解决业务问题中产生,为了解决业务问题,人们会想出更好的技术来,目的就是获得更大的利益,业务要解决的问题越来越多越来越复杂,一种技术已经不能满足解决问题的需要了,需要把多种技术拼接在一起,多个技术共同工作来获得更大的利益。这里业务和技术的高效衔接就成为了架构师的主要问题,因为技术不会和业务有直接的关系(一种技术可以适应多种业务),架构师的作用也在这里体现,架构师有意识的组织和识别不同的技术,来实现业务的目标。