TDD與VTDD系列(五):提升產能1/3的開發方法:VTDD(概述)

VTDD概述

     TDD(Test-Driven Development,測試驅動開發),是一種具有突出優點的軟件開發、設計和測試方法。TDD的基本思路是測試先行,通過測試來推動開發的進行。TDD的重要目的不僅在於通過測試使產出的代碼質量可控,還在於在開發過程中幫助程序員去除模棱兩可的需求。

     TDD具有明確需求、明確設計、測試即文檔、代碼質量可控、提高開發效率等優點,但也具有不可忽視的缺點:

    自動化程度低:編寫測試代碼的時間,大致相當於開發產品代碼的時間。對於大型項目的並行開發,還面臨隔離、補齊、內部輸入等問題,人工解決這些隱含問題的時間,往往不少於編寫一般測試代碼的時間。

    資源利用不充分:單元測試的輸出可以完整描述程序的行爲,這是一種寶貴資源,TDD忽略了這一點。程序行爲就是在什麼輸入下,會執行哪些代碼,會產生什麼輸出。如果程序行爲一目瞭然,測試對於開發的驅動效益將翻倍。

    干擾編程思維:靈感、創意、思路是脆弱、易失的,編程工作需要連貫的專注。TDD過程中,測試所耗費的時間往往是開發時間的一至兩倍,且與編寫產品代碼交替進行,難免影響編程思維的連貫性。干擾思維可能會造成程序員本能的抵制,使TDD難於推廣、難於長期堅持。

    VTDD(Visual TDD),即可視化的TDD,是TDD的改進和升級。VTDD繼承了TDD的優點,克服了TDD的缺點。改進可歸納爲“三化”:可視化、自動化、現實化。

     可視化:開發過程中,程序行爲可視。可視化降低編程勞動強度,並大幅提升編碼效率,中等複雜度的函數,編寫效率提高一倍以上,複雜度越高,效率提升比例越大。

    自動化:由工具自動完成隔離補齊、測試代碼生成、數據表格化、底層模擬、覆蓋統計、協助找出遺漏數據等工作。人的工作主要在於:在數據表格中列出程序功能點,這是明確需求、明確設計、促進開發的過程。測試時間成本趨向於零。

    現實化:VTDD分爲VTDD1(自然級)、VTDD2(重構級)、VTDD3(敏捷級)。自然級基於現有流程、可在項目週期的任意時段引入,且不影響進度。此後可逐步提升到重構級和敏捷級,進一步改進開發流程,“先固化,再優化”。

    您的項目是否面臨這些問題:開發費用和進度失控、可靠性差、難以維護?如果您期望改進開發過程,改變被動現狀,請不要等待,立即引入VTDD。項目越緊張,越需要儘快改進開發方法。等“有空”時再改進是不現實的。代碼質量不可控,正是開發週期不可控的主因,拖延下去,只會使問題累積。當前項目的延期,會造成下一個項目更緊張,更不會“有空”。請您想一想,去年這個時候緊不緊張?前年呢?什麼時候輕鬆過?如果不做出改變,明年這個時候,後年這個時候,一樣還會很緊張,恐怕永遠等不來“有空”。項目週期越緊張,越需要讓新產出的代碼質量可控,這樣才能換來進度可控,項目纔有可能按計劃完成。只有行動,立即行動,纔可能換來寬鬆和從容。

    但是,“先顧眼前”,也是不得已的選擇。VTDD既不影響眼前,效果也立竿見影。假如一個項目,編碼週期爲四個月,在第二個月引入VTDD1,當月進度不減,此後兩個月,進度可以加快大約15-30%,更重要的是,產出的是經過充分測試的代碼,可以避免代碼質量不可控造成的開發週期不可控,大幅縮短使產品穩定下來的時間。總的來說,引入VTDD,不但保證代碼質量,而且,項目所耗費的人月可以減少大約30-50%,縮短開發週期,在“快魚喫慢魚”的市場競爭中贏得先機。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章