《徐昊-TDD項(xiàng)目實(shí)戰(zhàn)70講》學(xué)習(xí)筆記 -- Day 11

11|作為工程化方法的TDD:更低的成本與更高的效能

TDD 的流程

a5a74d26cf9581064420d81cff7da89c.jpg

如上圖所示,使用 TDD 的核心流程為:

  • 首先將需求分解為功能點(diǎn),也就是將需求轉(zhuǎn)化為一系列可驗(yàn)證的里程碑點(diǎn);

  • 如果已經(jīng)存在架構(gòu)或架構(gòu)愿景,則依據(jù)架構(gòu)中定義的組件與交互,將功能點(diǎn)分解為不同的功能上下文;

  • 如果尚不存在架構(gòu)愿景,則可以將功能點(diǎn)作為功能上下文;

  • 將功能點(diǎn)按照功能上下文,分解為任務(wù)項(xiàng)。也就是進(jìn)一步將可驗(yàn)證的里程碑點(diǎn),分解為功能上下文中可驗(yàn)證的任務(wù)項(xiàng);

  • 將任務(wù)項(xiàng)轉(zhuǎn)化為自動(dòng)化測(cè)試,進(jìn)入紅 / 綠 / 重構(gòu)循環(huán),驅(qū)動(dòng)功能上下文內(nèi)的功能實(shí)現(xiàn);

  • 如果重構(gòu)涉及功能上下文的重新劃分,即提取 / 合并組件,即視作對(duì)于架構(gòu)的重構(gòu)與梳理。需調(diào)整后續(xù)功能點(diǎn)中對(duì)于功能上下文以及任務(wù)項(xiàng)的劃分。

  • 如此往復(fù),直到所有功能完成。

通過上述過程的描述,可以發(fā)現(xiàn)任務(wù)列表中的任務(wù)項(xiàng)源自兩層分解:源自對(duì)于業(yè)務(wù)理解的功能點(diǎn)分解,以及源自架構(gòu)愿景的功能上下文分解。

功能點(diǎn)分解幫助我們形成可驗(yàn)證的里程碑點(diǎn)。這些里程碑點(diǎn)可看作由可工作的軟件(Working Software)構(gòu)成的進(jìn)度度量。功能上下文分解幫助我們找到正確的單元,指導(dǎo)我們保持良好的軟件架構(gòu)。

如果功能點(diǎn)分解錯(cuò)誤,那么就得不到功能正確的軟件;如果功能上下文分解錯(cuò)誤,那么就得不到架構(gòu)良好的軟件。

TDD 的工程優(yōu)勢(shì)

所以,使用 TDD 開發(fā)軟件對(duì)人的要求,與其他所有軟件工程方法對(duì)人的要求是一樣的:理解需求,明白架構(gòu)。但是 TDD 提供了這樣幾點(diǎn)在工程管理上的優(yōu)勢(shì)。

第一,理解需求等于可以針對(duì)功能點(diǎn)寫出測(cè)試。換句話說,寫不出測(cè)試就是不理解需求。不理解需求就不要開發(fā)。在不理解需求的前提下開發(fā)功能點(diǎn),只能帶來負(fù)的進(jìn)度。從工程管理角度上看,“判斷一個(gè)人是否理解了需求”的成本極高。

第二,不寫測(cè)試,除了不會(huì)寫測(cè)試之外,就是沒理解需求。沒理解需求就去寫測(cè)試,那就是瞎干,瞎干不如不干。如果整個(gè)團(tuán)隊(duì)都寫不出測(cè)試,那么說明這個(gè)需求無法通過可管控的工程化方式交付。

可管控的工程化方式交付,意味著這個(gè)需求在實(shí)現(xiàn)層面上可以被執(zhí)行,也就是高確定性的。在高確定性的環(huán)境下,要追求效率。

而無法通過可管控的工程化方式交付,意味著不確定這個(gè)需求在實(shí)現(xiàn)層面上是否可被執(zhí)行,需要進(jìn)入探索模式。在不確定的情況下,要追求低成本及時(shí)止損。

第三,所有軟件從業(yè)人士都認(rèn)為架構(gòu)是重要的,但卻很少有人理解架構(gòu)究竟是如何發(fā)揮作用的。架構(gòu)并不是停留在紙面上的框圖,而是約定了構(gòu)成軟件系統(tǒng)的組件,以及組件之間的交互方式。也就是說,架構(gòu)是組件職責(zé)劃分的依據(jù)以及組件的交互模式。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容