在软件开发领域,架构一直是一个核心却又充满争议的话题。王概凯的《架构漫谈》系列文章,如同一把钥匙,为我们打开了深入理解架构的大门,让我在阅读过程中不断收获启发,对架构的本质、重要性以及实践方法有了更为清晰和全面的认识。
文章一开始,王概凯就直指架构概念的模糊性。在软件行业中,架构师们常常谈论应用架构、硬件架构、数据架构等,但对于架构的准确定义却莫衷一是。王概凯引用了关于 big data 的流行笑话来形容架构的定义困境, “Architecture is like teenage sex,everybody talks about it,nobody really knows what is it”,这一幽默的比喻生动地揭示了架构概念的复杂性和神秘性,也引发了我对架构本质的深入思考。
为了探寻架构的根源,王概凯从建筑行业的架构概念入手。他指出架构一词最早源于建筑,其英文 Architecture 的定义包含了规划、设计和建造建筑物及其他物理结构的过程。这一定义虽然看似简单,但却为我们理解软件架构提供了一个重要的视角。软件架构如同建筑架构一样,是对一个复杂系统进行整体规划和设计的过程,它决定了系统的结构和各个组成部分之间的关系。正如建筑需要考虑空间划分、结构稳定性、材料选择等因素一样,软件架构也需要考虑模块划分、数据流向、接口设计等要素。通过这种类比,我深刻认识到架构在软件开发中的基础性作用,它是构建高质量软件系统的基石。
在探讨架构产生的原因时,王概凯通过生动的社会发展例子进行了阐述。从人类早期的独立生活到后来的分工合作,架构的产生是为了解决人类生存和发展中的复杂问题。当人们开始分工协作时,为了使各个分工能够有机地结合在一起,完成共同的目标,就需要一种机制来协调和整合各个部分的工作,这就是架构的雏形。这一观点让我明白了架构的本质是对复杂系统的分解和整合,它通过将系统划分为不同的部分,并建立这些部分之间的沟通和协作机制,从而提高系统的效率和可维护性。在软件开发中,架构的产生也是出于同样的目的。随着软件系统的规模和复杂度不断增加,单个开发者已经难以独立完成整个系统的开发工作,因此需要通过架构来将系统分解为多个模块或组件,由不同的团队或开发者负责开发,最后通过架构的整合机制将各个部分组合成一个完整的系统。
对于架构的定义,王概凯给出了自己的见解。架构是根据要解决的问题,对目标系统的边界进行界定,并对目标系统按某个原则进行切分,设立沟通机制,使这些部分能够有机地联系并组装成为一个整体,完成目标系统的所有工作。这一定义涵盖了架构的核心要素,包括问题导向、系统切分、沟通机制和整体整合。它让我认识到架构不仅仅是对系统的技术设计,更是对系统问题的深入理解和解决方案的全面规划。架构师在进行架构设计时,需要从全局的角度出发,考虑系统的业务需求、技术约束、性能要求等多方面因素,通过合理的架构设计来解决系统面临的问题,提高系统的质量和效率。
在第二篇文章中,王概凯强调了对概念的正确认识在架构中的重要性。他指出,很多人对日常概念的理解只是停留在表面,缺乏深入的认识,这会导致在架构过程中出现沟通障碍和理解偏差。例如,对于 “桌子” 这个概念,不同的人可能会有不同的回答,但真正理解桌子概念的关键在于明白它所解决的问题,即为人坐在椅子上提供一个支撑平面,方便开展活动。这一观点让我意识到,在架构设计中,对概念的准确把握是至关重要的。架构师需要深入理解业务领域的概念和术语,明确这些概念所代表的问题和需求,才能更好地进行架构设计和沟通协作。同时,这也提醒我在学习新技术或新领域时,要注重理解其背后的概念和原理,而不仅仅是掌握表面的操作方法,这样才能更有效地应用这些知识来解决实际问题。
王概凯还对抽象这一概念进行了澄清。他认为抽象并不是定义事物的本质,而是一个分类的过程,是将不同概念的相似部分合并在一起形成一个新的概念。这一观点纠正了我之前对抽象的误解,让我明白在架构设计中,不能简单地依赖抽象来定义事物,而应该关注概念背后所代表的具体问题和需求。只有这样,才能确保架构设计的准确性和有效性。
他同时聚焦于如何识别问题。王概凯通过一个切土豆的笑话生动地展示了在处理问题时常见的错误。在这个例子中,女主人公提出的问题实际上是解决方案,而不是真正的问题本身,而男主人公则直接按照这个解决方案去执行,结果导致双方都不满意。这一例子让我深刻认识到,在架构过程中,正确识别问题是非常关键的。很多时候,我们往往急于寻找解决方案,而忽略了对问题本身的深入分析,这会导致解决方案与实际问题不符,无法真正解决问题。王概凯强调,要识别问题,首先要搞清楚 “这是谁的问题” 和 “有什么问题”。只有明确了问题的主体和问题的具体内容,才能有针对性地寻找解决方案。这一观点让我在今后的工作中更加注重对问题的分析和理解,避免盲目地追求解决方案而忽略了问题的本质。
王概凯也探讨了架构的切分原则。他指出,架构的切分是对相关人利益的调整,所有的切分决策都不能违背人性,必须确保切分出来的部分的负责人权利和义务对等。这一观点让我认识到架构切分不仅仅是技术上的划分,更是涉及到人的利益和组织结构的调整。在进行架构切分时,需要充分考虑各个利益相关方的需求和利益,通过合理的切分来提高系统的效率和可维护性,同时也要避免因切分不合理而导致新的问题产生。王概凯还提出了切分的几个原则,如不能切分必须在连续时间内发生的活动,切分出来的部分不应超出一个自然人的负载等,这些原则为架构切分提供了重要的指导。
王概凯从软件的本质出发,探讨了软件架构的产生和发展。他指出,软件的历史就是用机器模拟人的历史,软件的主要目的是把人类的生活模拟化,提供更低成本、高效率的新生活。随着软件规模的增大和复杂度的提高,软件开发开始出现分工,形成了不同的角色和架构体系。这一观点让我明白了软件架构的出现是为了解决软件开发中的复杂性和协作问题,通过将软件系统分解为不同的模块和组件,由不同的角色负责开发和维护,从而提高软件开发的效率和质量。同时,这也让我认识到软件架构的发展是一个不断演进的过程,随着技术的发展和业务需求的变化,软件架构也在不断地进行调整和优化。软件架构包括部署架构和代码架构,涉及到软件本身的业务体系和所虚拟的业务体系。这一定义让我对软件架构有了更全面的认识,软件架构不仅仅是代码的组织结构,还包括软件在硬件上的部署和运行方式。同时,他也强调了软件架构的落地需要软件的组织架构和流程来保障,离开了这个,软件架构就无法真正发挥作用。这一观点让我意识到软件架构的设计和实施是一个系统工程,需要综合考虑技术、组织、流程等多方面因素,才能确保软件架构的成功落地。
总的来说,王概凯的《架构漫谈》系列文章深入浅出地阐述了架构的本质、重要性以及实践方法,为我提供了许多宝贵的启示。通过对架构概念的深入剖析、问题识别的详细讲解以及切分原则和软件架构的全面阐述,让我对架构有了更深刻的理解和认识。在今后的工作中,我将更加注重架构设计的重要性,加强对概念的理解和问题的识别能力,遵循架构切分原则,努力提升自己的架构水平,为构建高质量的软件系统贡献自己的力量。同时,我也深刻认识到架构是一个不断发展和演进的领域,需要我们不断地学习和探索,才能跟上时代的发展步伐,应对日益复杂的软件开发挑战。
浙公网安备 33010602011771号