是什么让架构师们精通自己的技艺?熟练的架构师是如何进行设计的?一次次,有人问起我这些问题,而我也不止一遍的问我自己。很明显,这并不只是软件工程过程、设计方法、技术或是编程的专业程度所决定的。很多架构师具备令人钦佩且完备的技术知识,这确实是使设计成功的必要条件。但是,还是有很多的软件项目失败了,或是在项目的架构中遭受到了严峻的挑战。掌握此道的关键在于架构师是以什么方式实现设计,他们重视什么,他们关注哪些方面以及在这些方面努力着。
(缺失的)线条能告诉我们什么
图1展示了摘自以前项目的一张高层次图表,那个项目的架构师创建了该图以阐述系统的基本设计。
该图大致描述了系统的关键组件、各组件的职责以及它们核心的模块化原理。架构师使用这些概要图来交流设计,以管理开发的过程,并以此讨论它们在业务方面产生的影响,例如:成本、时间和精力等。然而,一段时间后,管理层会想要知道项目为什么会有重大延期以及预算为什么会超支,他们无法从架构师的报告中获得任何提示或指标。
问题来自于该图上的点状黑线以及那些“尚未显示的线条”。这些点状黑线表示了该项目开发的一个专有的消息中间件。在图上无法找到所罗列的这些组件之间的通信关系,特别要强调的是,这些关系是通过这个中间件运作的。该项目的架构师并不认为值得对这些方面值建模或报告,因为从他们的视角来看,它们代表的是基本技术的基础设施,并不会有助于系统的领域和业务用例。然而,中间件的开发消耗了大量预算,因为这个过程中涉及到很多健壮性和性能的问题,我们不得不从系统的其他部分中抽调最好的开发人员来解决这些缺陷。另外,支撑这些中间件问题也需要在领域组件中付出相当多的努力。

图1.一幅用于和业务利益相关者交流关键设计的高层次架构概要图
(缺失的)线条能告诉我们什么
图1展示了摘自以前项目的一张高层次图表,那个项目的架构师创建了该图以阐述系统的基本设计。
该图大致描述了系统的关键组件、各组件的职责以及它们核心的模块化原理。架构师使用这些概要图来交流设计,以管理开发的过程,并以此讨论它们在业务方面产生的影响,例如:成本、时间和精力等。然而,一段时间后,管理层会想要知道项目为什么会有重大延期以及预算为什么会超支,他们无法从架构师的报告中获得任何提示或指标。
问题来自于该图上的点状黑线以及那些“尚未显示的线条”。这些点状黑线表示了该项目开发的一个专有的消息中间件。在图上无法找到所罗列的这些组件之间的通信关系,特别要强调的是,这些关系是通过这个中间件运作的。该项目的架构师并不认为值得对这些方面值建模或报告,因为从他们的视角来看,它们代表的是基本技术的基础设施,并不会有助于系统的领域和业务用例。然而,中间件的开发消耗了大量预算,因为这个过程中涉及到很多健壮性和性能的问题,我们不得不从系统的其他部分中抽调最好的开发人员来解决这些缺陷。另外,支撑这些中间件问题也需要在领域组件中付出相当多的努力。

图1.一幅用于和业务利益相关者交流关键设计的高层次架构概要图