《軟件工程思想》講述“軟件開發”和“做程序員”的觀點,視野獨特,構思新穎,內容風趣,不落窠臼,令人耳目一新,堪稱難得。
作者從事了八年的軟件開發工作,在他的博士畢業之際寫下了這本“心之所感”。雖然它探討的是軟件工程最常見的內容,但他將親身所歷的感悟寫成活潑生動的文字,將軟件工程的很多原則和方法融于笑談之中,讓人看得輕松,時有共鳴。盡管很薄,然其內涵不遜于有些教科書。
回浙大我們常相聚,談學術、論社會,每每至凌晨。林銳意氣風發,生機勃勃,積極思考并勇于實踐。他即將步入大型企業(上海貝爾有限公司)從事大型軟件研發工作。相信今后的經歷會使他的“軟件工程思想”更為深厚而富有指導意義。
我不慚淺陋,接受他的要求,榮幸地成為本書的第一位讀者,并在本來應是名人大家留文的地方談林說森。
是為序。
前 言
在60年代計算機發展初期,程序設計是少數聰明人干的事。他們的智力與技能超群,編寫的程序既能控制弱智的計算機,又能讓別人看不懂、不會用。那個時期編程就跟捏泥巴一樣隨心所欲,于是他們很過分地把程序的集合稱為軟件,以便自己開心或傷心時再把程序捏個面目全非。人們就在這種美滋滋的感覺下熱情地編程,結果產生了一堆問題:程序質量低下,錯誤頻出,進度延誤,費用劇增……。這些問題導致了“軟件危機”。
在1968年,一群程序員、計算機科學家與工業界人士聚集一起共商對策。通過借鑒傳統工業的成功做法,他們主張通過工程化的方法開發軟件來解決軟件危機,并冠以“軟件工程”這一術語。三十年余年來,盡管軟件的一些毛病如人類的感冒一樣無法根治,但軟件的發展速度超過了任何傳統工業,期間并未出現真真的軟件危機。這的確是前人的先見之明。如今軟件工程成了一門學科。
軟件工程主要講述軟件開發的道理,基本上是軟件實踐者的成功經驗和失敗教訓的總結。軟件工程的觀念、方法、策略和規范都是樸實無華的,平凡之人皆可領會,關鍵在于運用。我們不可以把軟件工程方法看成是諸葛亮的錦囊妙計─—在出了問題后才打開看看,而應該事先掌握,預料將要出現的問題,控制每個實踐環節,并防患于未然。研究軟件工程永遠做不到理論家那么瀟灑:定理證明了,就完事。
我在讀大學的十年里有八年從事軟件開發,盡管編寫了幾十萬行C++/C程序,也經歷了若干次小不點兒大的成功和失敗,可老感覺只學了些皮毛,心里慌兮兮的。在博士畢業前的半年里,我告戒自己不應該再稀里糊涂地在程序堆里滾爬下去了,于是就面壁反省,做了一陣子木訥的和尚。在“打坐”時,每有心得體會便記錄下來,不知不覺湊成了八章經,我就給此經書起名為《軟件工程思想》。
經典的軟件工程書籍厚得象磚頭,或讓人望而卻步,或讓人看了心事重重。請寬恕我的幼稚,我試圖用三個問題:是什么、為什么、怎么辦,來解釋軟件工程的道理。所以本書薄得象餃子皮─—用來包“思想”這種有味道的“餡”。本書的八章經分別為:
第一章“軟件工程基本觀念”;
第二章“程序員與程序經理”;
第三章“項目計劃與質量管理”;
第四章“可行性分析與需求分析”;
第五章“系統設計”;
第六章“C++ 面向對象程序設計”;
第七章“測試與改錯”;
第八章“維護與再生工程”。
附錄“大學十年”可以充當飯后的水果。
我偶爾也擔心此書寫得太膚淺,內容少得可憐。就象一只雞在水里撲騰了幾下,并不能產生美味的雞湯。但是如果您化了幾分鐘時間翻閱本書的任意章節,您馬上就愿意再化幾個小時一口氣讀完全書,并且樂得直拍桌子:“好!很好!非常好!”
您可以把這本科技書當小說看,但在看書時請不要吃東西,免得噴了別人或者嗆著自己。
如果您買了本書后覺得不值得,我一定賠償您的損失。
非常歡迎讀者對本書提出批評和建議,請用 intra3d@hotmail.com 與我聯系。
致 謝
本書并不屬于我博士學位論文的研究范疇,但卻是我讀博期間寫的最有意思的作品。
首先要感謝我的導師,浙江大學計算機輔助設計與圖形學(CAD&CG)國家重點實驗室的石教英教授。在其他師兄弟正兒八經地“攻讀”博士學位時,我“不務正業”地開了一家軟件公司。當我摔了一個大跟頭灰溜溜地回到陌生的實驗室時,石老師仍然熱情地幫助我“修成正果”。我很希望大學里多一些象石老師那樣開明而大度的導師。
北京因特國風網絡軟件公司(3721.com)的周鴻一是個真正的軟件高手。他在我開發軟件產品失敗時給予了最多的幫助,并指正我在軟件設計中存在的根深蒂固的方法錯誤,使我能盡早地逐步改正。我平時能說會道,但在他面前我啞口無言只有聽的份,因為他的才華已全方位地超過了我。我真希望多結識象他這樣的朋友。
高振華老先生是個糊涂而可愛的民營企業家,我們是忘年交。我把他干的糊涂事(投資軟件公司)寫進書里,作為可行性分析的案例。高先生給予我經濟上的幫助,使我能夠在舒適的環境中開展最后一年博士學位論文工作。盡管我讀書的工資每月只有300元,但日子過得象神仙一樣舒服。
浙江大學計算機系的楊孟洲、周昆、曾震宇、楊建、白云、金鋒等同學和我合作開發軟件,給了我很多技術上的幫助。我對他們深表感謝。
特別感謝父母給我起了很好聽的名字。讀了十年大學,現在我差不多名副其實了。
文章來源于領測軟件測試網 http://www.kjueaiud.com/