课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
软件架构师是程序员在学习java编程开发技术之后的职业提升发展方向之一,而今天我们就通过案例分析来了解一下,软件架构师到底架构了什么。
1、架构到底是啥
架构就像是那啥,每个人都在谈论它,但从没没人真正的见过它。
我曾经被这个问题困扰了很长很长时间。甚至为了回答这个问题,我加入了现在所在的公司。在经过系统化的学习以及很多架构师交流之后。我意识到,架构它不是一个东西,它甚至可以和coding没关系。架构是一种层次化思考的方法论。它将业务目标和具体的实施方法连接起来,通过多个层次描述出来,让不同层次的人都可以理解这个共同的目标,并找到自己合适的位置。
这就是架构的复杂之处。每一个架构师,每一个项目,似乎产出的东西都不大一样。甚至本身就有好多好多种架构师:系统架构师、软件架构师、业务架构师、企业架构师...即使是技术方面的架构师也有很多种:大数据架构师、应用架构师、前端架构师...很难说一些技术化的组件图就是架构,也很难说一行code都没有的组织结构图不是架构。架构是这些东西的一个超集。具体的技术,具体的业务流程,都只是架构的一个面。架构就是由这些面组合起来的一个整体。我的理解,架构就是从具体术到了道的升华。架构师是道,是体系的蓝图和指导,它落地成了具体的技术和对应的组织形式、流程。但是架构是有共性的,即使是不同的架构师,互相交流起来其实也没多少障碍。大家基本可以迅速的明白对方的点,迅速的达成一致。因为大家在方法论层面是一致的。
2、层次化
没有一种文档能描述清楚一个架构设计。要想描述清楚一个架构设计,我们需要一大堆文档,还需要从不同的高度来逐层阐述。
架构设计的输出,一定是一个多种层次的输出。正如一个企业的组织形式。一定是从高到低存在不同的层次。可能大家已经想到了,高的架构设计其实是人的架构的设计、组织结构的设计。系统是组织结构的映射。所以大型企业特别关注与高层设计。一开始的出发点就错了,那是没办法挽救的。架构设计也是一样的。高的层次就是业务目标的层次。然后围绕这个业务目标,需要那么人和系统对接,需要实现什么样的价值。内部需要有哪些模块等,层层推进。在这个过程中,要和各种各样的人和需求打交道。将不同的需求整合在一起,形成一个业务和性能都能接受的设计,让大家认知都保持一致。
分层设计还有一个好处,就是可以将问题的复杂度限制到一个可以理解的范围内。这也和人类思考的本质相一致,分层抽象化。实际上没有任何一种文档或者设计图,能画下上千个组件。即使有,这种文档也是不可读的。所以有的解决方案,洋洋洒洒几百页PPT也很正常。为了能将每一页的信息量限制在一个可理解的范围内,必须进行抽象和分层。
自证的、可落地的
3、空中楼阁不是架构,严谨的自证才是
OK,到现在咱们有层次化的一些文档或者设计了。但是这不是重点。重点是这些层次化的文档是需要连接起来的,是自证的。在逻辑上是严丝合缝的。也就是说,下一次层是上一层的延展,下一层是上一层的证明。其实我们在做架构工作的时候,也会经常的往前审视,经常发现上一层次的设计中存在各种问题,或者有遗漏。这个时候一般都会打回重写。直到所有的冲突和遗漏都被处理掉了。所有的文档和设计层层递进,却又互相映证。直到后一层应该是一个可发布的、可执行的、可落地的。否则,始终是空中楼阁,那不是架构。当然,后还应该用需求来验证架构设计是否和之前的出发点一致。不能实现业务目标的系统,不管处理能力有多大,都是失败的。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。