僵化性是指難以對軟件進行改動,即便是簡單的改動。若是單一的改動會致使有依賴關係的模塊中的連鎖改動,那麼設計就是僵化的。改動時,必需要改動的模塊越多,設計就越僵化。編輯器
脆弱性是指,在進行一個改動時,可能會致使程序的許多地方出現問題。經常是,出現新問題的地方與改動的地方沒有概念上的關聯。設計
頑固性是指,設計中包含了對其餘系統有用的部分,可是要把這些部分從系統中分離出來所須要的代價很巨大的。事件
當面臨一個改動時,開發人員經常發現會有多種改動的方法。其中,一些方法會保持設計;而另外一些方法會破壞方法(也就是拼湊的方法)。當能夠保持系統設計的方法比拼湊手法更難應用時,就代表設計具備很高的粘滯性。開發
當開發環境遲鈍。低效時,就會產生環境的粘滯性。軟件
若是設計中包含了當前沒有用到的組成部分,他就包含沒必要要的複雜性。爲過多的可能性作準備,導致設計中含有絕對用不到的結構,從而變得混亂。這些準備工做也許會帶來回報,但更多的不會有什麼好的回報。同時,設計時揹負着這些用不到的部分,是軟件變得複雜,而且難以理解。
文本編輯器
剪切和粘貼也許是有用的文本編輯器操做,但倒是災難性的代碼罪魁禍首。程序
晦澀性是指模塊難以理解。代碼隨着時間而演化,每每會變得愈來愈灰色,讓開發人員愈來愈難理解模塊的工做方式。爲了使代碼的晦澀性保持最低,就須要持續地保持代碼清晰和富有表達力。方法
在非敏捷的環境中,因爲需求沒有按照初始預期的方式進行變化,從而致使設計的退化。一般,改動都很是很急迫,而且進行改動的開發人員對於原始的設計思路並不熟悉。於是,雖然是能夠對設計進行改動,可是卻在某種程度上違反了原始的設計。隨着改動的不斷進行,這些詬病將漸漸的積累起來,直到惡性腫瘤的出現。系統設計
敏捷設計是一個過程,不是一個事件。它是一個持續的應用原則、模式以及實踐來改進軟件的結構和可讀性的過程。它致力於保持系統設計在任什麼時候間都儘量的簡單、乾淨和富有表達力。開發環境