架构设计:重视不确定性

“重视不确定性”

不确定性可以促使你推迟决定,收集更多的信息,促使你用分隔和抽象的方法来降低设计决策的重要性。

即分隔系统后,单一系统出现问题后的影响面减少。成本降低。代价的减少让我们容易做出决定。

架构代表了那些形成系统的重要设计决策。其重要性由变更决策的代价来衡量。

优良的架构能够从整体上降低设计决策的重要性,糟糕架构则会突出重要性。

如果出现两个合理的选择,架构师应该停下来,设法找出介于两者之间的、具有更低重要性的决策,而不是简单地在两者中作出选择。了解两者之外还存在其他选择(这个选择并非显而易见),比决策结果本身更有价值。

推迟决定(defer commitment)是精益软件开发的原则之一。推迟决定不是故意拖延,而是强调作出的决定应该基于足够的事实,不能仅凭假定和猜测。

重要性(significance),指设计决策对系统的影响程度。重要性用变更设计决策须要付出的代价来衡量,如果变更某个决策须要付出的代价高,那么其重要性就高,反之则低。

架构师往往要冥想苦思反复尝试,才能清楚地将问题一分为二。

当你积极地与同事在白板前争论不同的可能性时,当你对着代码反复琢磨而无法决定采用哪种实现方式时,当新的需求或对需求的新解释质疑现有实现方式时,说明你碰到不容易确定的情况了。这时要设法利用分离(separation)或封装将决策和最终依赖于决策的代码隔离开。

猜你喜欢

转载自blog.csdn.net/wide288/article/details/87742267