MDA-專家的恐懼

 

人民郵電出版社最近出版了一本書,叫做《應用MDA》。據我所知,它是國內第一本介紹MDA概念的圖書。目前,MDA還處在油漆未乾的狀態,對於我來說,亟需通過閱讀一些資料對此項技術建立初步印象。因此,我閱讀這本書時,目的是十分明確的。我想知道,如果MDA是一個答案,那麼問題是什麼?我本以爲這個問題應當是很簡單的,略讀過這本書之後,我感到,事情其實並不簡單。
  原著作者David Frankel先生是OMGMDA運動的活躍分子,對於這位先生,我並不瞭解,書中也沒有進一步的詳細介紹。從這本書整體佈局看來,作者在大局把握上似乎經驗不足。當然任何一個理智健全的人也不會指望通過一本328頁的小書真正掌握MDA的應用技術,此書不過應證了這一點而已。不過Frankel先生在敘述中夾雜了很多背景資料和個人議論,這恰恰是我喜歡捕捉的東西。個人作品較之冰冷而懦弱的官方技術文檔,最大的優點便在於文字背後的感情,這種感情不僅能夠讓讀者更順利地接受書中所描述的技術,而且時不時泄漏出一些小祕密甚至是大祕密。對於我來說,這些祕密或許是真正有價值的、值得討論的東西。Frankel先生看起來是個比較謹慎的人,儘管如此,他還是給了我很有意思的暗示。不妨看看這段:
  我們不得不得出這樣的結論:我們對於平臺的未來所能做出的唯一預測是,我們無法預測到的事情將會發生。哪怕IT經理人對於平臺下了正確的賭注,平臺也不太可能保持原樣,而是會隨着時間的流逝而演變成幾乎完全不同的新平臺。即使經理的猜測是正確的,依賴於該平臺的代碼也可能會很快過時,快得令人心碎。
  真有意思,不是嗎?Frankel先生不夠坦白,因爲他在這裏用“IT經理人當幌子,可是誰都看得出來,其實他在說“IT技術專家。儘管如此,拋開這點小小的不坦白,Frankel先生在這裏說出了當今軟件技術領域的一個大祕密,那就是,整個軟件開發領域中的專家階層已經在心理上陷入深深的恐懼中。

  作者既然沒有明說,那麼這個結論當然只能是我的印象。而印象之所以爲印象,就在於解釋起來並不容易。首先的一個難題就是要論證在軟件開發領域存在一個所謂的專家階層階層這個名詞實在不好聽,我甚至很難解釋它與更難聽的階級之間的區別何在,因此也不想陷入這個問題的爭論之中。但是軟件開發領域中確實存在一批所謂的專家,那些通過文章和書籍以及演講表達他們自認爲高人一籌的技術思想的人,那些因爲之前的成功而擁有表面自信的人,那些敢於文人相輕而且的確有一點點相輕資本的人,如果你承認這些人與剛剛入行的戰戰兢兢的coder確實有所不同,那麼就請暫且接受我的這一前提。
  在軟件開發這個圈子裏,專家們是讓人仰視的。然而這些讓人仰視的專家,今天其實正陷入一種深深的集體焦躁和恐懼之中。是的!這些衣食無憂、態度傲慢、言之皇皇、著作等身的專家們,他們正在恐懼!
  上世紀90年代以來,軟件產業的一個基本現象,就是基礎平臺和工具技術的更迭和變革愈演愈烈,超出任何人的預期和意願,也完全超出個人所能夠應付的範圍。在短短十多年間,基礎技術經歷了從面向過程到基於對象,從基於對象到面向對象,從面向對象到面向組件三次大的變遷,其間還夾雜有GUI革命,32位革命,關係型數據庫革命,Web革命,向C++和Java的大遷移,Design Patterns運動,開放源代碼運動,面向對象方法學之戰,分佈式中間件之戰,J2EE之戰,COM+和Windows DNA的曇花一現,VB開發者面臨的.NET之亂等等無以計數的事件。軟件工業的發展進步,基本上處於被平臺技術的快速變革所驅動的境地。這種快速的變革,使得今天專家階層,往往會被明天遺棄。一些人今天還在爲上一次選擇的成功而沾沾自喜,明天就將面臨被拋棄的命運。軟件平臺技術的每一次變革,每一場工具大戰,背後都有着千萬悲情故事。多少人從榮譽的峯頂跌落?有多少人要吞下苦澀的心情,拋卻數年的心血,一切推翻重來?又有多少人故作輕鬆地說着必須努力跟上時代的廢話,鼓起越來越貧弱的勇氣再戰江湖?平臺技術的迅速變化,超過所有人預料,而其革命性和顛覆性,使得在這個行業中知識和經驗的老化速度之快,技術積累之艱難,達到了讓業內人士感到羞辱的地步。整個產業的從業者就好像站在格陵蘭島夏季的浮冰上,對於腳下肆虐斷裂的冰層充滿着恐懼,他們四處尋找看上去更堅實的浮冰,喫力地跳躍挪移。然而,如果說連MFCVB6CORBA這樣的巨型浮冰,現在都面臨解體崩塌的危險,那麼你還能信任什麼呢?
  在書中,Frankel說:
  荷馬在他的史詩中描述了西西弗斯的故事,他必須將一塊巨石推上海蒂斯的一座小山,但每當接近山頂時,巨石又會滾下來,因此西西弗斯的苦役永無止境。而當今的IT經理人正是現代版的西西弗斯。
  對,這就是事實!

  你以爲軟件開發領域內的那些高手專家們,對於大公司一波又一波的新平臺革命真的熱烈歡迎嗎?你以爲那些關於提高開發效率讓你的工作更輕鬆之類的宣傳口號真的讓專家們山呼萬歲嗎?他們只不過是強顏歡笑!其內心的焦躁和恐懼,纔是基本的真相。不錯,確實有一小部分涉世未深的新銳們津津樂道,激情澎湃,但這只不過是下一個悲劇故事的開始而已。任何一個專業領域,只有保持變與不變的對立統一,有所積累,有所揚棄,才能夠穩步前進。而軟件技術領域,已經習慣於在平臺技術這樣的基礎層面上快速震盪,而且到目前爲止,都沒有任何有效的方法隔離這種震盪,從而使這種震盪嚴重波及整個產業和專家階層。
  這種情況不是一開始就有的,Frankel在書中第一章回顧了70年代COBOL語言在商用主機系統上的統治地位,以及長達十幾年的DOS時代,這都是軟件發展歷史上的黃金期。然而最近幾年來,平臺技術的震盪過於頻繁和劇烈,技術人員疲於奔命,拼上全部精力來掌握平臺技術特性,完全成爲文檔的奴隸,根本沒有餘力來考慮真正重要的技術問題。這是多麼嚴重的局面!
  在軟件開發專家作爲一個羣體,數量還比較少的時代,這個問題即使嚴重,對於他們來說也只能採取人爲刀俎,我爲魚肉的被動態度。大多數人採用兩種辦法,一是深深地鑽入某一個細分領域,甚至乾脆改行,以其他行業(而非軟件技術)的穩定性來保護自己。另一種方法則是勇者之選,就是不斷跟風趕潮,爭當所有時代的弄潮兒,或者換一個角度說,甘願被各個時代反覆蹂躪。
  然而隨着專家羣體數量之多,足以形成一個階層的時候,逃避和被動的姿態就顯得過於懦弱。至少在軟件開發過程和方法這個領域,既得利益的專家們開始嘗試主動的出擊。與其屈從於技術浪潮,被玩弄於股掌之中,不如主動制定遊戲規則,建立防波堤,穩定軟件技術行業的專業階層。
  這就是MDA的關鍵目的之一。看上去很不錯,可是怎麼做呢?
  基本思路很簡單,Andrew Koenig曾經引述一個英文作家的話:增加一個間接層,這是解決任何問題的辦法,並指出這句原來或許是諷刺不斷自我膨脹的官僚體制的言論,放在軟件領域倒的確是箴言。遵循這個箴言,專家們準備打造一個間接層,把浮冰隔離在該層之下,從而可以腳踏實地,高枕無憂。
  “MDA就是把建模語言當成編程語言來用,而不只是當作設計語言來用。
  當然!如果建模語言可以當成編程語言來用,主要通過編程語言來體現的基礎平臺的變化將很大程度上被隔離在建模語言之下。

  “MDA無意獨領風騷而令其他方法黯然失色,相反,它同其他方法相輔相成。
  當然!MDA要讓其他方法成爲它下面的浮冰,你們儘管去崩塌斷裂,彼此搏殺吧,我自巋然不動。

  用建模語言編程可以提高生產率,改善質量,並使軟件產品生存期更長。

  當然!只有提供更高的生產力,才能夠獲得更強大的整個業界的名正言順的支持。只有在這種支持的庇護之下,專家階層的利益才能得到維繫。

  可以說,MDA的目標已經十分明確——通過建立新的理念、技術和工具,將軟件設計這件事情變成一門與編寫代碼相分離、真正獨立的專業,通過專業化,防止下層平臺技術不斷震盪波及甚至顛覆專家階層在技術上的積累。因此,這是一場專家們用專業化手段實現專業分工,以維繫專家利益,對抗專業恐懼心態的運動。
  當然這個定義不是嚴格的、正式的。在面對聽衆的時候,我們需要一個更加冠冕堂皇的理由,比如推進軟件工程進步,提高效率、改善質量之類。但是我認爲對抗恐懼這個心理層面的因素也沒有什麼不好意思表達的,至少在我看來,這算是光明正大的理由,無須掩蓋。而且,從Frank e l先生這樣的著作來看,也掩飾不了。
  MDA並不是憑空捏造的,它是傳統軟件工程的必然發展。傳統軟件工程(對應於目前流行的敏捷方法)在本質上一直模仿土木建築工程。土木建築工程,與很多人設想的相反,一直不斷湧現着大量的創新技術,然而,對於這個領域內的專家階層——建築師和結構工程師——來說,新技術的出現幾乎總是一種好事,他們從來不需要擔心新技術的出現會顛覆自己的專業地位。這一點令軟件工程領域的專家們羨慕不已。他們付出了很多努力,試圖通過對開發過程的研究解決這樣的問題,然而對於跟技術結合更加緊密的軟件設計者來說,軟件過程無異於隔靴搔癢,解決不了問題。
  MDA要把屬於軟件設計本質的東西用專有工具表達成爲專有的成果,就好像建築師只需畫出建築圖紙,結構師只需畫出結構圖紙,在軟件工程中,工程師憑藉MDA,只需要構造出模型。有了模型,軟件設計者們夢寐以求的依賴倒置出現了:不再是軟件的架構和設計依賴於下層平臺,而是下層平臺被迫不斷完善以滿足表達模型的需求。在這種情形下,軟件專家們將能夠逐漸擺脫平臺廠商歇斯底里的鬥爭帶來的劇烈震盪,集中精力研究軟件結構問題和設計問題,甚至可能開發出量化的工具來衡量軟件結構的優劣,預測軟件的可用性,建立真正的工程科學。唯有如此,軟件構造這件事情才能夠成爲一件專業,專家們纔能有時間架構起高高的壁壘,防止那些憑藉《21天學會XXX》闖進軟件開發領域的毛頭小子利用一些新技術細節羞辱他們,讓這個專業進入分工清晰、階層分明的成熟階段。
  在MDA層面的專家看來,如今爆發在J2EE.NET陣營之間的論戰實在可憐。今天那些意氣風發的論戰者,那些把寶押在某一個千秋萬代、唯我不敗的平臺上的幼稚的人,遲早會發現,要麼是腳下的浮冰崩潰,要麼是各個平臺趨同,毫無區別可言。已經重複了無數次的悲劇,還將重演,只不過瑟瑟發抖的主體有所不同而已。
  MDA將是打破這一悲劇性宿命的一次嘗試,它能成功嗎?現在下結論還爲時過早。
  反恐尚未成功,專家仍在努力。

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