淺談敏捷設計


在軟件開發過程中,都避免不了進行概要設計、詳細設計等過程,這和軟件測試過程中進行測試計划測試方案設計很類似。

這篇博客,就說說敏捷設計的一些內容,以及拙劣設計對軟件應用的嚴重影響。

 

我們日常接觸到的軟件項目是一個抽象的概念,它和程序包括形狀、結構以及每一個模塊、類和方法都有關。可以通過很多媒介和語言去描述它,但它最終體現為源代碼——源代碼就是設計。

應該知道的一件事是:軟件都是有生命周期的。當出現以下任何一點時,就表明軟件正在步入聲明晚期。

一、拙劣設計的表現

1、僵化性(Rigidity)

僵化性指的是難以對軟件進行改動,即使是簡單的改動。單一的改動可能會導致有依賴關系的模塊出現不可預知的變化,可以將其稱之為:業務和技術的屏障!最常見的具體表現為:需求變更!

2、脆弱性(Fragility)

脆弱性指的是進行一個改動時,程序的許多地方可能會出問題。常見的表現是出問題的地方與改動的地方並沒有概念上的關聯,修正這些問題就會引起更多的問題,這樣會導致技術負債不斷變大!

3、牢固性(Immobility)

牢固性是指設計難以重用。比如設計中包含了對其他系統有用的部分,要將其從系統中剝離出來所需要的努力和風險太大。

PS:這也是這幾年微服務和DevOps越來越流行的原因。

4、粘滯性(Viscosity)

粘滯性有2中表現形式:

①軟件的粘滯性:對軟件進行改動有很多方法,有些可以保持設計,有些會破壞設計。當可以保持系統設計的方法比生硬方法更難以使用時,就表明系統具有較高的粘滯性。

  敏捷設計的目標是:軟件設計應該可以容易的進行那些保持設計的變動。

②環境的粘滯性:開發環境的遲鈍、低效,就會產生環境的粘滯性。比如編譯花費時間長,比如代碼管理需要花費幾個小時去check in僅僅幾個文件,這樣都很難保持項目中的軟件設計。

  敏捷設計目標是:創建易於保持系統設計的軟件環境。

5、復雜性(Complexity)

復雜性則指的是設計中包含了當前沒有用的組成部分。它還有不必要的復雜性。我們在進行軟件設計時經常為了保持代碼的靈活性和擴展性,而設置本次迭代並不會用到的結構設計,這樣會使得

軟件變得復雜,並且難以理解。

6、重復性(Repetition)

濫用重復的代碼,這是軟件設計重復性表現最頻繁的方式。代碼設計應該是抽象、簡潔的。當系統中重復的代碼較多時,會使得系統難以改動,且難以閱讀,出現問題時也需要對其進行一一修正。

但每個重復體之間都有細微的差別,所以修正的方式也不同,這樣會導致大量重復的工作,降低了工作效率。應該努力做正確的、產生更多價值的事情,而不是造輪子

7、晦澀性(Opacity)

晦澀性指的是模塊難以理解。如果模塊代碼難以理解閱讀,隨着時間變化而代碼進行演化,會變得越來越難以理解。所以,編程是一門藝術,代碼應該是優雅、易讀的

 

二、為什么設計會變得拙劣?

需要知道的一點:需求是項目中最不穩定的因素。如果我們的軟件設計由於持續的、大量的需求變更而變得拙劣,那就表明我們的設計和實踐本身是具有缺陷的。

 

三、保持盡可能好的設計

敏捷開發人員應致力於保持設計盡可能的適當、干凈。不斷優化設計,不是幾周甚至幾個月才進行一次的事情,而應該貫穿與軟件的整個項目周期,經常性的去優化。

源代碼是設計最重要的指表示,所以它同樣要保持干凈。這也是一種職業素養

 

四、什么是敏捷設計

敏捷設計時一個過程,不是一個事件。它是一個持續的應用原則、模式以及實踐來改進軟件的結果和可讀性的過程。它致力於保持系統設計在任何時間都盡可能的簡單、干凈以及富有表現力!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM