僵化性是指难以对软件进行改动,即使是简单的改动。如果单一的改动会导致有依赖关系的模块中的连锁改动,那么设计就是僵化的。改动时,必须要改动的模块越多,设计就越僵化。
脆弱性是指,在进行一个改动时,可能会导致程序的许多地方出现问题。常常是,出现新问题的地方与改动的地方没有概念上的关联。
顽固性是指,设计中包含了对其他系统有用的部分,但是要把这些部分从系统中分离出来所需要的代价很巨大的。
当面临一个改动时,开发人员常常发现会有多种改动的方法。其中,一些方法会保持设计;而另一些方法会破坏方法(也就是拼凑的方法)。当可以保持系统设计的方法比拼凑手法更难应用时,就表明设计具有很高的粘滞性。
当开发环境迟钝。低效时,就会产生环境的粘滞性。
如果设计中包含了当前没有用到的组成部分,他就包含不必要的复杂性。为过多的可能性做准备,致使设计中含有绝对用不到的结构,从而变得混乱。这些准备工作也许会带来回报,但更多的不会有什么好的回报。同时,设计时背负着这些用不到的部分,是软件变得复杂,并且难以理解。
剪切和粘贴也许是有用的文本编辑器操作,但却是灾难性的代码罪魁祸首。
晦涩性是指模块难以理解。代码随着时间而演化,往往会变得越来越灰色,让开发人员越来越难理解模块的工作方式。为了使代码的晦涩性保持最低,就需要持续地保持代码清晰和富有表达力。
在非敏捷的环境中,由于需求没有按照初始预期的方式进行变化,从而导致设计的退化。通常,改动都非常很急迫,并且进行改动的开发人员对于原始的设计思路并不熟悉。因而,虽然是可以对设计进行改动,但是却在某种程度上违反了原始的设计。随着改动的不断进行,这些诟病将渐渐的积累起来,直到恶性肿瘤的出现。
敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能的简单、干净和富有表达力。
原文地址:http://www.cnblogs.com/zxj159/p/4058673.html