《架构整洁之道》之什么是软件架构

软件系统的架构质量是由它的构建者所决定的,软件架构这项工作的实质就是规划如何将系统切分成组件,并安排好组件之间的排列关系,以及组件之间互相通信的方式。

而设计软件架构的目的,就是为了在工作中更好地对这些组件进行研发、部署、运行以及维护。

如果想设计一个便于推进各项工作的系统,其策略就是要在设计中尽可能长时间地保留尽可能多的可选项。

软件架构设计的主要目标是支撑软件系统的全生命周期,设计良好的架构可以让系统便于理解、易于修改、方便维护,并且能轻视部署。软件架构的终极目标就是最大化程序员的生产力,同时最小化系统的总运营成本。

一、开发

一个开发起来很困难的软件系统一般不太可能会由一个长久、健康的生命周期,所以系统架构的作用就是要方便其开发团队对它的开发。

二、部署

为了让开发成为有效的工作,软件系统就必须是可部署的。在通常情况下,一个系统的部署成本越高,可用性就越低。因此,实现一键式的轻视部署应该是我们设计软件架构的一个目标。

三、运行

软件架构对系统运行的影响远不及它对开发、部署和维护的影响。几乎任何运行问题都可以通过增加硬件的方式来解决,这避免了软件架构的重新设计。

四、维护

在软件系统的所有方面中,维护所需的成本是最高的。满足永不停歇的新功能需求,以及修改层出不穷的系统缺陷这些工作将会占去绝大部分的人力资源。

系统维护的主要成本集中在”探秘”和”风险”这两件事上。其中”探秘”的成本主要来自我们对于现有软件系统的挖掘,目的是确定新增功能或修复问题的最佳位置和最佳方式。而”风险”,则是指当我们进行上述修改时,总是有可能衍生出新的问题,这种可能性就是风险成本。

五、保持可选项

基本上,所有的软件系统都可以降解为策略与细节这两种主要元素。策略体现的是软件中所有的业务规则与操作过程,因此它是系统真正的价值所在。

而细节则是指那些让操作该系统的人、其他系统以及程序员们与策略进行交互,但是又不会影响到策略本身的行为。它们包括I/O设备、数据库、Web系统、服务器、框架、交互协议等。

软件架构师的目标是创建一种系统形态,该形态会以策略为最基本的元素,并让细节与策略脱离关系,以允许在具体决策过程中推迟或延迟与细节相关的内容。

如果在开发高层策略时有意地让自己摆脱具体细节的纠缠,我们就可以将与具体实现相关的细节决策推迟或延后,因为越到项目的后期,我们就会拥有越多的信息来做出合理的决策。

一个优秀的软件架构师应该致力于最大化可选项数量。

文章目录
  1. 一、开发
  2. 二、部署
  3. 三、运行
  4. 四、维护
  5. 五、保持可选项