人们通常直接关注软件设计的结果——设计方案,验证设计方案的功能是满足需求的、质量是符合标准的、审美上是有美感的。到了21世纪00年代后,随着软件系统规模和复杂度日益增长,软件设计方案的规模也越来越大、越来越复杂,人们想直接判定一个设计方案是否符合标准越来越难。这时候人们发现需要从注重设计结果转向重视设计过程。
如图1-31所示,软件设计是一个从需求和约束出发,进行持续决策,产生符合标准的设计方案的过程。传统上人们一直忽视了设计的决策过程,只关注软件设计结果方案的评价和改进,以至于设计方案好像是“天上掉下来的”。
图1-31 软件设计的决策过程
一旦开始关注设计的决策过程,把这个黑盒打开,就可以发现软件设计的所有合理性都隐藏在各个决策之中,判断各个设计决策的合理性不仅更容易,而且比直接判断整个设计方案的合理性正确率更高。