软件架构师是如何工作的
此篇博客参考 架构漫谈--王概凯文章
本文将从:架构的目标,识别问题,架构切分,软件与架构,架构师,架构的角度写好代码,技术、业务、架构的关系七个方面回答软件架构师如何工作的问题
1.架构是为了解决人的问题而产生的,如果用不同的语言不同的方式描述一件事物会得到不同的结果,这样的结果虽在表面不同却在描述同一个问题,如项目的中文定义:项目是指一系列独特的、复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间、预算、资源限定内,依据规范完成 项目英文定义:Contemporary business and science treat as a project (or program) any undertaking, carried out individually or collaboratively and possibly involving research or design, that is carefully planned (usually by a project team[citation needed]) to achieve a particular aim......再如时间,距离是人设定的时空的量度,如果提出这些概念的人换做别人可能就会是另外的word,所以认识到事物的“真相”即本质是架构师解决问题的前提,以及,解决新的问题时用之前的架构经验为当前架构方案理清思路,因为你已经看到了“真相”。
2.“发现问题永远都比解决问题更加重要”爱因斯坦的名言启示我们从多角度考虑问题发现新的问题,解决问题时发现更多的问题,包括,问题的主体和问题的边界。抓住问题的主体与问题的边界才有可能真正解决问题,才有可能解决真正的问题。客户的需求通过语言文字传递给架构师的是客户自己对需求的描述,并非问题的本质,因为问题的本质是隐藏的,如果客户知道问题的本质那么客户会自己解决自己的问题,无需工程师的参与。所以架构师要与客户深度沟通尽可能多地发现问题来接近问题地本质。
3.软件开发过程涉众众多也叫利益相关者,整个开发过程每个人的权利地位所付出的努力是不对等的,所以需要把架构切分,要尽量使被切分出的部分不超过承担者的所能承受的范围,维护自身的利益是每个人的基本要求,在不破坏系统结构的同时将架构切分能够提高整体效率,另外架构切分的结果要趋于一个平衡树,才能使整个系统的效率最大化。
4.在硬件上编写的程序就是软件,用来控制硬件的行为,而控制硬件使以最初的二进制编码实现的,成本非常高,随着半导体的诞生,编程语言的出现,软件编写成本越来越低,人们开始意识到软件可以节省大量的劳动力,提高成倍的效率,软件也越来越复杂,开发难度越来越高。让复杂的软件开发过程有层次有分工,让软件模拟人的大脑去工作提高效率成了软件架构师的基本工作,有分工就有渐渐地有了分工的标准,然后演变成了架构。
5.软件架构师是个什么样的人?软件架构师最终目标是解决别人的问题,只专注与解决自己工作的问题没办法称为软件架构师,为别人的利益服务是架构师的义务。义务与权力是相辅相成的,有为别人利益着想的架构师也必须有领导权力的架构师,架构师作为组织领导,组织内部每个人的权力与义务会得到均等的划分,每个人都会得到发展。
6.前面提到软件功能越来越多,开发过程越来越复杂,代码的编写也要用架构的思想对部署单元进行责任切分,切分标准就是有无业务逻辑,有业务逻辑的分为一组,无业务逻辑的分为一组,因为含有业务逻辑的部分是业务的核心,所以再对业务逻辑进行细致的划分。这样每个单元相对系统都成了独立的一部分,使业务的扩展和修改成本在可控范围内。
7.技术、架构以及业务之间的关系:技术在解决业务问题中产生,为了解决业务问题,人们会想出更好的技术来,目的就是获得更大的利益,业务要解决的问题越来越多越来越复杂,一种技术已经不能满足解决问题的需要了,需要把多种技术拼接在一起,多个技术共同工作来获得更大的利益。这里业务和技术的高效衔接就成为了架构师的主要问题,因为技术不会和业务有直接的关系(一种技术可以适应多种业务),架构师的作用也在这里体现,架构师有意识的组织和识别不同的技术,来实现业务的目标。
总结:关于架构师如何工作的问题,主要是从以上的七个方面说起的,概括来说,软件架构师是一个“问题解决者”,他应该善于发现问题,分析问题,解决问题。