原文作者:李波
任何軟件領(lǐng)域的組織總在不斷地尋求提升創(chuàng)造價值后众、獲得收益的能力的途徑胀糜,以期應(yīng)對技術(shù)、社會變革加速帶來的諸多不確定性蒂誉。一般地僚纷,組織會從兩方面嘗試突破,一方面持續(xù)反思軟件工程各環(huán)節(jié)中的實踐拗盒,有時甚至需要從具體實踐和工具中跳出來怖竭,以圈外人的身份思考需要應(yīng)對的客戶或社會問題的本質(zhì);另一方面開啟想象力根據(jù)特定情景和特定目標創(chuàng)造有效的實踐與工具陡蝇。無論哪一種都需要在實踐中落地痊臭,足夠多的實踐才能保證我們更容易窺見全貌。
布道與選擇
大多數(shù)書籍都有一個有趣的現(xiàn)象登夫,即在章節(jié)起始處往往引用名人言句广匙,這樣做的目的是什么?其實作者引用名人言句是緣于一種寫到不能再寫的感覺(無法用邏輯去詮釋實踐的感覺)恼策,就如同“道可道鸦致,非常道”潮剪,更是希望傳遞給讀者必須意識到的深意:我已然領(lǐng)悟。
再比如日常夫妻間的吵嘴分唾,總能聽到“你總是xxx”或者“你從來就是xxx”抗碰。看似簡單的言語绽乔,諸如“總是”弧蝇、“從來”,卻流露出一方表達說到不能再說的含義折砸,映襯出的是一方十足的堅強(無奈)看疗。
上面兩種現(xiàn)象中,文字或語言傳遞的不光光是表面的意思睦授,而是價值觀的布道两芳,更是作者心智模式的展現(xiàn)。在軟件領(lǐng)域中去枷,最富盛名價值觀布道之一的恐怕就是“Python之禪”怖辆,它以一種彩蛋的形式向程序員/媛們描繪了Python所希望弘揚的價值主張:
軟件研發(fā)的方式、方法沉填、模型萬萬千千,無論何種都應(yīng)看作是先賢們留下的智慧佑笋,選擇和使用的權(quán)利卻留給我們翼闹,一旦我們做出了選擇就意味著我們接受了其中的布道并進行實踐,現(xiàn)在就要面臨新的問題了:怎么用或怎么用得更好蒋纬?
“瀑布”模型的例子
我們大多數(shù)人熟知的“瀑布”模型的定義通常是研發(fā)流程采取自上而下猎荠、相互銜接、固定次序蜀备,如同瀑布流水逐級下落关摇。它給人的印象在需求變化的適應(yīng)性和流程銜接的可逆性上缺乏足夠的靈活。
其實“瀑布”模型只是一個形象的比喻碾阁,而非一個科學(xué)的表述输虱。上世紀70年代,“瀑布”模型誕生在Dr.Winston W. Royce所著的“Managing The Development Of Large Software Systems”(Royce 1970)一文中脂凶。十分有趣的是論文通篇未見“瀑布”字眼宪睹,然而不知從何時起“瀑布”一詞在業(yè)界中得到了廣泛地傳播,并被不同的人不斷地解構(gòu)蚕钦,在這一過程中概念出現(xiàn)了明顯的“抽象泄漏”亭病,這種泄漏逐漸含糊了作者表達,偏離了作者的初衷嘶居。作者的本意又是什么呢罪帖?
抽象泄漏:是指任何試圖減少或隱藏復(fù)雜性的抽象,其實并不能完全屏蔽細節(jié),試圖被屏蔽的復(fù)雜細節(jié)總是可能會泄漏出來
首先整袁,來看看解讀最廣泛的模型圖(以下圖片均來自Royce所著論文)菠齿。
作者在文中指出迭代需要在上下兩個連續(xù)步驟之間進行并且又貼近現(xiàn)實地強調(diào)設(shè)計迭代永遠不會局限于在連續(xù)的兩個步驟之間進行。
作者在基本模型中加入關(guān)鍵的5條必要特性用于應(yīng)對大多數(shù)開發(fā)風(fēng)險:
1. 預(yù)先的程序設(shè)計——架構(gòu)師參與設(shè)計葬项;定義泞当、設(shè)計、劃分數(shù)據(jù)模塊民珍;寫一個概要文件襟士;
2. 足夠的文檔
3. 成本允許時,盡可能細化嚷量,驗證每一小步(DO IT TWICE)
4. 計劃陋桂、控制、監(jiān)控測試
5. 客戶參與
因此蝶溶,Royce在論文中提出的模型實際是下面這樣的嗜历,而不是我們所熟悉的“瀑布”。
思考
從上面的例子可以看到論文中的模型是如此的復(fù)雜和完整抖所,但大多數(shù)人在執(zhí)行時出現(xiàn)了退化梨州,如果再遇上不恰當(dāng)?shù)牟眉艉褪÷跃腿菀椎虢褂涂樱@就是理論和實踐的矛盾田轧。由此引申暴匠,單就每個項目而言,是否使用“瀑布”模型取決你是否能夠理解客戶的需求傻粘,以及在項目進程中是否能夠理解需求的變化每窖。“沒有調(diào)查研究就沒有發(fā)言權(quán)”弦悉,這是一個持續(xù)思考和實踐的過程窒典,兩者缺一不可。
結(jié)語
世界是無一息不變的稽莉,模型總是存在于紙面而將模型付諸實踐卻會遭遇各種各樣的問題瀑志,說不定會陷入令人頭疼的焦油坑。
“條條大路通羅馬”污秆,在軟件研發(fā)這條路上選擇何種模式其實并不是最重要后室,關(guān)鍵是傾注你所有的相信(心智模式)接受你的選擇,然后積極響應(yīng)外界變化混狠,積微成著岸霹,時刻保持成長性思維去看待和實踐我們選擇的方法、模型将饺。