當今的軟件過程領域可以說是熱鬧非凡,SW-CMM在咨詢公司的大力鼓吹和政府的扶持下在大江南北遍地開花,讓那些夠格和不夠格的咨詢公司們忙了個不亦樂乎,即使SEI推出了最新的CMMI,由于其一脈相承的血統,絲毫沒有減弱業界對其的熱情。雖然其在國內的實施效果已經越來越多的受到各方的質疑,但作為一種重量級的過程模型依然在業界保持著絕對的權威地位。
2001年的春天,一群軟件擁有相同理念的過程專家們齊聚一堂成立了所謂的敏捷聯盟(Agile Alliance),這些人中為首的便是Kent Beck,其在5年前(1996年)就提出了一種輕量級的軟件過程——極限編程(XP)。無論是作為一種理念的敏捷編程,還是作為一種可操作的軟件過程的極限編程,自從其被引入中國那一刻起,就以其自由的風格和飽滿的熱情深深的打動不少軟件從業人員,尤其是基層的程序員和中小項目的管理者。
Rational 統一過程(簡稱RUP)作為一種用例驅動、以構架為中心、迭代和增量的開發過程,隨著UML的推廣和普及也漸漸成為一種主流的開發過程,前段時間其開山鼻祖之一的Ivar Jackbson高舉著Smart的大旗來到中國傳播其“主動軟件”的理念,又令業界一時間陷入了 關于“隱性知識”和“顯性知識”的熱烈討論中。
從業界的大師們到咨詢公司的咨詢師們再到這些理論的忠實擁護者們,幾乎每個人都萬分誠懇的對你循循善誘的擺出一大堆充分或不怎么充分的理由,往往同時還都能列出一個能夠有力證明某個模型優越無比的對比列表。所有人的目的只有一個:那就是告訴你唯有他所推薦的模型才是最適合你的。于是乎我們陷入了深深地困惑:到底什么樣的過程才是最適合我們的呢?而且,在大多數情況下,當我們滿懷崇敬的遵循大師們為我們指引的過程小心翼翼的前行,卻發現其終點卻遠非其描繪的那么的美妙。于是乎,這種困惑變成了一種痛苦。
當然,大師們總是高高在上且充滿智慧的,但當他們給我們指引的道路變成一種痛苦的時候,我們就有理由來反思一下我們走上這條道路的理由是不是那么的充分和必要。
把書翻過來——看看文字背后的內容
當年魯迅先生從滿紙的道德文章后面看到了“吃人”二字,從此讓我們學會了原來念書是可以這樣念的,今天我們不妨用魯迅先生傳授我們的方法看看這些深奧的過程背后到底是些什么....
首先,有一點是顯而易見的,那就是軟件開發的管理對任何人來說都是一個絕對的挑戰。在這個領域里面,人似乎都是無比的弱智,雖說是條條大路通羅馬,但我們似乎永遠不能一開始就找到通往羅馬最快捷的道路,一沒人指點,我們就要在南北極無謂的打N個來回,所以我們必須學習前人們通過無數失敗總結出來的成果。雖然前輩大師們給我們指點的通向羅馬的道路也分為各門各派...
然后我們沮喪的看到一個事實:人是不可靠的,正因為人是不可靠的,我們需要用各種各樣的方式來驗證我們的工作成果,以盡可能的發現缺陷,并及時的修復,其實大師們說的都是一件事情——驗證。雖然承認自己的無能是令人沮喪的,有一定是肯定的,那就是:我們需要有效的驗證自己的工作——無論是行為還是結果,至于形式是次要的。
再看下去,我們會發現軟件開發在絕大多數情況下應該是個群體行為。所以我們需要溝通和傳承,無論是CMM過程中龐雜的文檔還是XP中頗為極端的“結對編程”其出發點都是為了溝通和傳承,雖然無論是無休無止的編寫文檔還是兩個人坐在同一臺電腦前的吵吵鬧鬧聽起來似乎都不能令人心情愉快,但不管怎樣,有一定是肯定的,那就是:我們需要有效的溝通和傳承,至于形式是次要的。
接著往下看,我們會發現,人是健忘且判斷能力低下的,所以我們要量化的記錄我們的所作所為,這不但可以有效的展現我們的工作業績,更是讓我們避免多次掉入同一個坑里。 但不管怎樣,有一定是肯定的,那就是:我們需要有效的用量化的數據來度量我們的工作,至于形式是次要的。
繼續往下看,我們會感覺些許的不安,那就是我們會發現這個世界的萬事萬物是不斷變化的,而且其變化的迅捷常常讓我們疲于奔命且暈頭轉向。關于這一點,大師們給我們指點的無非是我們老祖宗——大禹及其前任們治水的那兩招:“堵”和“通”,這里的“堵”并不是指完全的拒絕變化——這是不可能的,而是指將所有的變化處于完全受控的狀態,CMM應該是這種方式的代表,其通過建立一套復雜而龐大的控制機制使所有的變更都處于受控狀態,然而這個美好的愿望卻時常因為其笨重的身形和高昂的成本令人不堪重負而無法有效的執行。相對而言XP提出的“擁抱變化”采取的是“通”的策略,這聽起來頗為令人興奮,至少和繁雜的過程以及成堆的文檔告別是一件讓人心情愉快的事情,但實際操作起來往往并不那么容易,除非你是“大禹”那樣的絕頂高手,否則弄不好就會潰堤決口、水漫金山。雖然上述兩條路聽起來都不怎么美妙,但非常遺憾我們目前還沒有第三種選擇,個人認為最有效的方式也許應該是首先看清楚是一條什么樣的河流,然后再判斷哪種方式更為合適,而在某些情況下,將“堵”和“通”結合使用會有意想不到的結果。但不管是采用什么方法,有一點是肯定的,那就是:我們必須找到有效的方法來應對變化,至于形式是次要的。
所謂“仁者見仁,智者見智”,我相信不同的人遵循著這個方法可以看到更多的東西,但有一個結論是肯定的,那就是我們行為的最終目的是要達成我們的目標,至于確定采取何種行為的標準應該是該行為針對某個特定目標的有效性,而不是它的形式,更不是因為它曾經出自于某個大師。
小結
時下有一個非常時髦的名詞——“驅動”,諸如目標驅動、用例驅動、過程驅動、方面驅動、測試驅動、業務驅動......一時間好像所有人都被這個或者那個驅動得團團轉。其實我們在滿懷崇敬的拜讀大師們的理論和方法的時候,不妨深究一下“驅動”這些理論和方法的東西是什么。任何理論的產生都有其特定的背景和環境,正如“南橘與北枳”的故事一樣,一味的照搬別人的東西往往并不是通往理想彼岸的最佳途徑,所以我們不光要知其然,而且還要知其所以然,只有這樣才能有效的找到真正適合自己的有效的方法。
也許我們都曾經或多或少的受縛于某位大家的理論或某個權威的模型,但這并不妨礙我們用自己的智慧來探詢真正有效的解決方案,相反,沒有曾經的作繭之縛,也就沒有破繭之后蝴蝶的美麗和燦爛......
文章來源于領測軟件測試網 http://www.kjueaiud.com/