跳到主要内容

概述

设计架构的目标

软件架构的终极目标是,用最小的人力成本来满足构建和维护系统的需求


如果一个软件在其生命周期内,构建,维护和升级的成本都很低的话,这个软件的架构就是优良的。

乱麻系统的特点
  • 从开发者的角度看:大部分时间都花在对现有系统的修补上,而不是真正完成实际的新功能
  • 从管理者的角度看:每添加一个新功能的成本越来越高

造成这种现象的原因往往是,持续低估那些好的、良好设计的、整洁的代码的重要性,认为未来可以重构代码,产品上线重要,也对自己的效率过于自信,认为自己可以一直保持高效。

但事实上,市场的压力从来不会消退,工程师们往往一直忙于新功能的开发,不会再有机会重构了。如此往复,工程师将无法再保持最初的高效,会陷入到乱成一团的系统中。实践表明,胡乱编写代码的工作速度其实比循规蹈矩更慢。

怎么做?

想要跑得快,先要跑得稳。

而为了采用好的架构设计,就要先了解系统的架构的各种属性与成本、生产力之间的关系

两个价值维度


软件系统可以通过行为和架构两个维度来衡量其价值。

  • 行为价值:软件实现功能,满足需求的价值
  • 架构价值:软件适配新需求(行为价值)的能力的价值,就像把很多现有的拼图拼成不同的形状

我们有两种难题:紧急的和重要的,而紧急的难题永远不是重要的,重要的难题永远不是紧急的

在开发中,往往会特别重视紧急的问题,而他们又往往都是为了实现行为价值。注重行为而忽视架构会导致代码注重于实现某一个特定的需求,让代码有了具体的形状。当新需求到来时,工程师就要用现有的不同形状的拼图,组成一个新的形状。如此往复,整个拼图的过程会越来越难。

提示

好的架构设计应尽可能做到与形状(具体的需求)无关

在业务部门与研发人员的交流中,业务部门肯定是更注重行为价值的,而他们对软件的架构价值也没有发言权。保障软件的架构价值是研发人员的责任,需要研发人员来捍卫,为了长久的利益,必须与公司的其他部门抗争。