62

软件架构能力的提升(9.25)

 5 years ago
source link: http://blog.sina.com.cn/s/blog_493a84550102xvej.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

对于软件架构,架构思维,在我前面的博客文章里面已经多次谈到,实际上对于一个开发人员来讲,如果要真正成长为一个名出色的架构师是相当困难的。一个优秀的架构师可以说是同时具备了业务加技术,宏观加微观,抽象加实现多方面能力的整合。

架构师是否需要经过长期的编码锻炼?这个答案是肯定的,而是做好是不同框架模型,不同业务领域的编码锻炼,同时在进行开发和编码过程中还要时刻有复用,抽象等设计思想。架构师有一个重要能力就是抽象能力,如果你没有经过大量的实践积累,你是很难真正培养出抽象和建模能力的。量的积累最终都是为了质的飞跃,而对于知识经验,要想达到一定的深度,就必须积累足够的广度。

一个架构师必须同时具备业务和技术两个方面的能力,或者说具备对业务需求和业务场景的理解力,如果对业务都不理解,你如何保证你最终的设计能够满足需求,保证你的模型是匹配业务,同时模型有能够具备足够的扩展性响应业务的变化。对业务理解后,是用当前最合适的技术来解决需求和业务问题,而不是用最新,最难的技术。而对于架构,往往经常犯错的地方就是沉迷到技术里面,而不管技术和业务的匹配性。

架构师要做的工作就是抽象和建模,首先是对现实业务能够抽象,先抽象为业务模型,这往往是我们常说的系统分析员要做的事情,而这个事情现在真正能做的人却是越来越少。有了业务模型后接着就是考虑如何形成技术架构模型,这个模型本身也包括了业务+技术两个方面的内容,比如我们说的核心用例,逻辑模型等。最终建完的模型需要有效的衔接业务和技术实现两个方面。

架构师建立完成的模型有两个层面的验证,一个是存理论验证,一个是等到后续开发实现完成后进行验证。好的架构师往往就是理论验证通过的模型,就一定能确保最终实现后也能够验证通过。为什么能够保证这点?其核心原因就是你当前采用的理论不是简单的都来源于书本,而是通过你自己大量的实践积累出来的知识经验,也就是我常说的你用的理论是经过你自己实证的,而不是简单的书本照抄过来的。

即一个好的架构师不是简单的能够将业务进行分解,更加重要的是确保分解完成的东西能够集成回去。

分解是最基础的,架构的重点就是要对复杂问题进行分而治之,同时保证分解后的各个部分还能够高内聚,松耦合,最终又集成为一个完整的整体。分解核心是定义问题,因此架构首先仍然需要理解清楚需求。

再回来看看架构能力如何锻炼和提升?

要提升架构能力,基础还是要提高设计能力,而设计能力的提升完全可以从编码能力开始,同时在编码过程中多去考虑编码本身的健壮性,安全,可复用性,性能等非功能性需求。在这个阶段就可以逐步锻炼抽象复用,算法结构等基础核心能力。设计能力提升一个重要表现就是你没有进行编码,但是整个业务功能如何实现你自己已经想清楚了如何做?应该拆分为哪些类,抽象哪些公共函数,选择什么样的算法等。

架构能力提升的第二点就是业务能力提升,需要具备对业务需求和业务流程的分析能力,通过对业务的分析能够抽象关键的业务模型和业务用例,业务建模完成后你才可能进行系统建模。如果是做企业信息化领域,对于供应链,生产,财务,工程项目等核心的业务线条都是可以去自己学习和了解的内容。

架构能力提升第三点仍然是思维能力的提升,对于架构思维本身仍然是类似系统思维,结构化思维,编程思维等诸多思维模式的一个合集。这里面包括了抽象,复用,分层,分解和集成,归纳和演绎,模式匹配,迭代,扩展,模拟等多种思维能力的锻炼。只有这些思维能力提升了,你的架构能力才可能更上一个层次。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK