文檔的力量

文檔的力量

做軟件開發要寫文檔,文檔主要起的是一種說明性文字的作用,爲了讓用戶很方便地使用你的軟件,最起碼要寫一個用戶手冊,當然,有些軟件不用寫用戶手冊用戶也會用,比如Windows自帶的計算器,往往這類軟件在用戶點擊幫助菜單後,彈出一個版權信息,這也算是一種文檔吧。大多數軟件都要比計算器之類的程序要複雜得多,所以用戶手冊一般是免不了要寫的。

針對用戶,要寫幫助文檔,針對軟件開發過程,則要寫開發文檔,以往開發文檔包含軟件需求分析、概要設計、詳細設計以及測試計劃和測試報告等一大堆文檔,所有這些文檔作用都是要給開發人員提供信息來源和編碼支持。隨着軟件開發規模越來越大,構建一個軟件成本幾乎和建造一棟樓的成本相當,在如此規模的軟件開發過程中,正規而精確的文檔的作用是非常關鍵的。

有很多程序員認識不到文檔的重要性,特別是我們國內的程序員,我也是其中一員,我們通常認爲編碼是第一位的,結果是最重要的,要交給最終用戶能夠使用的東西纔是王道。糾其原因,我想是和國內的軟件開發環境有關,國內軟件售價,往往價格偏低,因爲價格低,所以管理人員就會壓低成本,一部分是人員成本,一部分是時間成本。一方面人員不整,所以沒有相關的文檔編寫人員,或者需要編寫文檔的主要設計人員忙於編碼而忽視了文檔,況且,一般編碼人員,不管其水平多高,對於編寫文檔之類的活都是避而遠之的。另一方面項目時間的緊迫性也使得開發人員縮短編寫文檔的時間,使得做出來的文檔流於形式或者流於表面,根本起不到對開發工作的指導作用。更有一部分原因,由於形式主義、官僚主義盛行,文檔成爲那些政府機關項目用於向領導彙報的工具,造成的結果就是外行指揮內行,這些文檔成爲了膚皮潦草的報告。

我們沒有力量改變這種情況,淨化國內的開發環境需要時間,我們能做的就是認識到文檔的重要性。舉個例子,印度軟件出口量全球第一,靠的是什麼,國內有接觸過印度軟件源碼的同行告訴我們,說印度的軟件結構差,不好維護,效率低,代碼寫得亂七八糟,根本讀不通順。但有一樣不得不讓人敬佩的是,人家的文檔寫得非常全,寫得非常棒!這就是文檔對於一個糟糕項目的維護能力。還有一個例子就是微軟,微軟做開發的東西在早些時候完全搞不過其它一些公司的產品,像什麼MFCVB等,都搞不過Borland公司的同類產品,但是你看現在怎麼樣,Borland公司只能靠給微軟維護Delphi度日。扯得有點遠,造成這種情況的原因是微軟的開放文檔策略,微軟提供多達幾個G的開發文檔供開發人員參考,同時還提供源碼級的開發組件給合作伙伴,共同爲用戶開發產品。比如,微軟提供VBA-SDK開發包以供軟件開發商將自己的產品嵌入二次開發的能力,僅這一項就拉攏了像AutoDesk這一級別的戰略合作伙伴,拉了一大幫公司。其它公司靠什麼來競爭?

文檔如此重要,正確地規劃文檔所要編寫的內容就成了很重要的事。文檔不僅要體現整個軟件的結構,還要體現它的任何一部分細節的構建思路,要做到這一點,以往的做法就是做兩個文檔,一個是概要設計,一個是詳細設計。同時,爲了保證軟件的質量,還需要寫測試文檔等。這種做法目前在大型項目上還是比較流行。

目前國際上流行一種新的軟件開發流程,稱爲敏捷軟件開發。該軟件開發流程以全新的開發宗旨與理念給開發人員以耳目一新的感覺,敏捷開發的主要倡導者之一,具體名字忘了是誰了,提出了一個觀點,一份過於詳細的設計文檔是腐朽無用的,真正有價值的文檔是整潔流暢具備很高可讀性的源代碼。該大師指出了我們一些常見困惑的來源,即我們爲什麼不愛寫設計文檔,是因爲我們寫出來的文檔價值不像最初所設想的那樣,這些文檔要麼流於形式,要麼與最終構建的軟件大相徑庭,我們有時不得不花費大量的時間來修改設計文檔,使得文檔與已經構建完成的軟件相對應。大師說,編寫完成的設計文檔無法與變化無常的需求想適應,因此是腐朽的,唯一能快速響應變化的文檔就是源代碼,一份結構清晰,意義明確,帶有適當註釋的源代碼就是一份很好的設計文檔,這份文檔必然要與變化的需求相適應的。這位前前輩也是倡導代碼整潔(差不多就是代碼口語化)的大師之一,從英語條度來看,他給出的規範的源代碼讀起來是非常通順的,就像讀一篇英語文檔一樣。目前中國人看的話,還是比較費勁,不如一份中文設計文檔讀起流暢。

除了設計文檔外,軟件開發過程中爲了保證軟件質量還需要做測試文檔。在傳統的軟件開發流程中,在做完詳細設計之後,就需要着手製訂測試計劃,最後測試完成之後,還要編寫測試報告,這一塊更容易變成表面工作,成爲程序開發人員的負擔,雖然測試文檔同樣非常重要。在當面對本身就具備腐臭氣味的詳細設計文檔(大師語)時,根據它來制訂的測試計劃就更不能說得上是新鮮了。因此衆多敏捷開發流程中出現了一種叫做測試驅動的開發流程,即在正式開發軟件之前先要開發測試程序,在該測試程序的支持或者叫做監控下再來開發正式的軟件。這無疑是一種比較極端的控制軟件質量的方式,何時可以使用以及如何使用需要項目管理人員仔細斟酌。

總而言之,文檔對於軟件開發來說其重要性是不言而喻的,如何界定文檔內容,如何規範文檔內容,如何恰到好處地編寫文檔,更有力地爲軟件開發服務,就成了項目管理工作中最重要的一環,值得大家仔細地思量。

發佈了56 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章