架构思维重要的四个方面:
(1)需要明白架构和设计之间的区别
(2)需要同时具备技术的广度与深度
(3)需要理解分析和协调各种解决方案和技术之间的权衡
(4)需要了解业务驱动的重要性以及如何转化为架构的问题
什么是架构思维?
它是指用架构的眼光或视角来看待事物。
软件架构
软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口(计算机科学)来实现。 软件体系结构是构建计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。
架构与设计
软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难。特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征。
图1 传统的架构和设计职责
架构师负责分析业务需求以提取和定义架构特征,选择合适的该问题域的架构模式和风格,以及创建组件(即系统的组成成分)。然后,架构师将上述交给开发团队。
传统的架构存在沟通上的问题,为了打破这种阻碍。如图2
该模型不仅促进了架构师与开发人员之间频繁的双向沟通,而且还促使架构师为团队中的开发人员提供培训和指导。
技术广度
对于软件架构师来说必须具有非常广的技术广度才能像架构师般思考,并以架构的角度看待事物。
因为架构师的职责就是根据功能作书与技术限制相匹配的决策,所以广泛了解各种解决方案是非常有价值的。
对于架构师而言,明智的做法是做到“博而不专”
分析权衡
像架构师一样思考,就是要在每种解决方案中进行取舍,无论是技术解决方案还是其它解决方案,然后分析这些取舍的利弊,最后确定最佳的解决方案。
理解业务驱动因素
像架构师一样思考还需要理解系统成功所需的业务驱动因素,并将这些需求转换为架构特征(例如可伸缩性、性能和可用性)。这是一项艰巨的任务,需要架构师具有一定程度的业务领域知识,并需要与关键业务的利益相关者建立健康、协作的关系。
平衡架构和动手编码
架构师面临的困难任务之一就是如何平衡动手编码与设计软件架构。每个架构师都应该动手编写代码,并保持一定水平的技术深度