过度设计与设计不足

Posted sxdtzhp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过度设计与设计不足相关的知识,希望对你有一定的参考价值。

    设计软件系统时,变化让我们患得患失,不知道如何把握软件系统设计的度。若拒绝对变化做出理智的预测,系统的设计会变得僵化,一理有新的变化发生,修改的成本会非常大;若过于看重变化产生的影响,渴望涵盖一切变化的可能,若预期的变化没有发生,我们之前为变化付出的成本就再也补偿不回来了,这就是所谓的“过度设计”。
      扩展式设计是为不可知的未来做投资,一旦未来的变化不符合预期,就会导致过度设计。具有实证主义态度的设计理念是面对不可预测的变化时,应首先保证方案的简单性。当变化真正发生时,可以通过诸如提炼接口的重构手法,满足解析逻辑的扩展。
      要应对需求变化,终归需要一些设计技巧。很多时候,因为设计人员的技能不足,没有明确识别出来未来确认会发生的变化,或者对需求变化发展的方向缺乏前瞻,所以导致整个设计变得过于僵化,悠 的成本太高,从而走向了过度 设计的另一个极端--“设计不足”。
      设计不足的方案只顾眼前,对于一定要发生的变化视而不见,这不仅导致方案缺乏可扩展性,甚至有可能出现技术实现方向的错误。这样的设计不是恰如其分的简单设计,而是对于糟糕质量视而不见的简陋处置,是为了应付进度蒙混过关用的临时花招,表面看来满足了进度要求,但在未来偿还欠下的债务时,需要付出几倍的成本。如果整个软件系统都由这样设计不足的方案构成,那么未来任何一次需求的变更或增加,都可能成为压垮系统的最后一根稻草。  
    我们无法预知未来,自然就无法预测试未来可能发生的变化,这就带来了软件系统的不可预测试性。软件设计者不可能对变化听之任之,却又因为它的不可预测性而无所适从。在软件系统不断演化的过程中,面对变化,我们需要尽可能地保证方案的平衡;即要避免因为设计不足使得变化对系统产生根本影响,又要防止因为满足可扩展性让方案变得格外复杂,最后背上过度设计的坏名声。故而,变化之难,难在如何在设计不足与过度设计之间取得平衡。
 

以上是关于过度设计与设计不足的主要内容,如果未能解决你的问题,请参考以下文章

过度设计与设计不足

过度设计与设计不足

过度设计与设计不足

插件式可扩展架构设计心得

编写高质量代码改善C#程序的157个建议——建议154:不要过度设计,在敏捷中体会重构的乐趣

[3Dmath]切变