浙大林銳博士的《軟體工程思想》一書中的全部8個篇章。這是林銳在自己經營公司不夠成功後的深刻總結。《軟體工程思想》講述“軟體開發”和“做程式設計師”的道理,視野獨特,構思新穎,內容風趣,不落窠臼,令人耳目一新。堪稱難得,以至回味無窮。
基本介紹
- 書名:軟體工程思想
- 作者:林銳
- 頁數:8個篇章
- 內容:瀑布模型(waterfall model)
前 言,目錄,軟體開發設計思想,
前 言
在60年代計算機發展初期,程式設計是少數聰明人幹的事。他們的智力與技能超群,編寫的程式既能控制弱智的計算機,又能讓別人看不懂、不會用。那個時期編程就跟捏泥巴一樣隨心所欲,於是他們很過分地把程式的集合稱為軟體,以便自己開心或傷心時再把程式捏個面目全非。人們就在這種美滋滋的感覺下熱情地編程,結果產生了一堆問題:程式質量低下,錯誤頻出,進度延誤,費用劇增……。這些問題導致了“軟體危機”。
在1968年,一群程式設計師、計算機科學家與工業界人士聚集一起共商對策。通過借鑑傳統工業的成功做法,他們主張通過工程化的方法開發軟體來解決軟體危機,並冠以“軟體工程”這一術語。三十年餘年來,儘管軟體的一些毛病如人類的感冒一樣無法根治,但軟體的發展速度超過了任何傳統工業,期間並未出現真正的軟體危機。這的確是前人的先見之明。如今軟體工程成了一門學科。
軟體工程主要講述軟體開發的道理,基本上是軟體實踐者的成功經驗和失敗教訓的總結。軟體工程的觀念、方法、策略和規範都是樸實無華的,平凡之人皆可領會,關鍵在於運用。我們不可以把軟體工程方法看成是諸葛亮的錦囊妙計─—在出了問題後才打開看看,而應該事先掌握,預料將要出現的問題,控制每個實踐環節,並防患於未然。研究軟體工程永遠做不到理論家那么瀟灑:定理證明了,就完事。
我在讀大學的十年里有八年從事軟體開發,儘管編寫了幾十萬行C++/C程式,也經歷了若干次小不點兒大的成功和失敗,可老感覺只學了些皮毛,心裡慌兮兮的。在博士研究生畢業前的半年裡,我告戒自己不應該再稀里糊塗地在程式堆里滾爬下去了,於是就面壁反省,做了一陣子木訥的和尚。在“打坐”時,每有心得體會便記錄下來,不知不覺湊成了八章經,我就給此經書起名為《軟體工程思想》。
經典的軟體工程書籍厚得象磚頭,或讓人望而卻步,或讓人看了心事重重。請寬恕我的幼稚,我試圖用三個問題:是什麼、為什麼、怎么辦,來解釋軟體工程的道理。所以本書薄得象餃子皮─—用來包“思想”這種有味道的“餡”。本書的八章經分別為:
第一章“軟體工程基本觀念”;
第二章“程式設計師與程式經理”;
第三章“項目計畫與質量管理”;
第四章“可行性分析與需求分析”;
第五章“系統設計”;
第六章“C++ 面向對象程式設計”;
第七章“測試與改錯”;
第八章“維護與再生工程”。
附錄“大學十年”可以充當飯後的水果。
我偶爾也擔心此書寫得太膚淺,內容少得可憐。就象一隻雞在水裡撲騰了幾下,並不能產生美味的雞湯。但是如果您花了幾分鐘時間翻閱本書的任意章節,您馬上就願意再化幾個小時一口氣讀完全書,並且樂得直拍桌子:“好!很好!非常好!”
您可以把這本科技書當小說看,但在看書時請不要吃東西,免得噴了別人或者嗆著自己。
如果您買了本書後覺得不值得,我一定賠償您的損失。
目錄
軟體工程思想
目錄
1序言、前言4
1.1序4
1.2前 言4
1.3致 謝5
2軟體工程基本觀念7
2.1軟體工程的目標與常用模型7
2.2軟體開發的基本策略9
2.2.1復用9
2.2.2分而治之10
2.2.3最佳化——折衷11
2.3一些不正確的觀念12
2.4一些有爭議的觀念13
2.5小 結14
3程式設計師與程式經理15
3.1了解程式設計師15
3.2了解程式經理17
3.3程式設計師升為經理後是否還要編程18
3.4經理與技術隊伍的建設18
3.5向錯誤與失敗學習20
3.6提高綜合素責21
3.7小結22
4項目計畫與質量管理22
4.1項目計畫23
4.1.1知己知彼23
4.1.2進度安排24
4.2零缺陷質量管理的觀念25
4.2.1高目標25
4.2.2可執行的規範26
4.3軟體的質量因素26
4.3.1正確性與精確性27
4.3.2性能與效率28
4.3.3易用性28
4.3.4可理解性與簡潔性28
4.3.5可復用性與可擴充性29
4.4質量檢查29
4.5小結31
5可行性分析與需求分析31
5.1可行性分析的要素32
5.1.1經濟32
5.1.2技術33
5.1.3社會環境34
5.1.4人35
5.2可行性分析案例35
5.2.1可行性分析案例之一36
5.2.2可行性分析案例之二38
5.2.3可行性分析案例之三42
5.3需求分析為什麼困難44
5.3.1客戶說不清楚需求44
5.3.2需求自身經常變動44
5.3.3分析人員或客戶理解有誤45
5.4如何進行需求分析46
5.4.1應該了解什麼46
5.4.2通過什麼方式去了解47
5.5小結47
6系統設計48
6.1體系結構設計49
6.1.1層次結構49
6.1.2客戶機/伺服器結構51
6.2模組設計53
6.2.1信息隱藏53
6.2.2內聚與耦合54
6.2.3封閉、開放性55
6.3數據結構與算法設計56
6.4用戶界面設計57
6.4.1界面設計中美的需求與導向作用57
6.4.2界面美的內涵58
6.5系統設計示例60
6.5.1設計背景60
6.5.2Intra3D 2.061
6.5.3支持協同工作的網路通訊開發系統 CNC 1.064
6.5.4套用示例69
6.6小 結69
7C++面向對象程式設計70
7.1C++面向對象程式設計的重要概念71
7.1.1類與對象72
7.1.2繼承與組合73
7.1.3虛函式與多態77
7.2良好的編程風格81
7.2.1命名約定81
7.2.2使用斷言82
7.2.3new、delete與指針83
7.2.4使用const85
7.2.5其它建議87
7.3小結88
8測試與改錯89
8.1對測試的理解89
8.1.1測試的目的90
8.1.2測試的心理要求90
8.1.3測試的真理90
8.1.4測試與質量的關係91
8.2測試人員的選擇91
8.2.1Microsoft公司的經驗教訓91
8.2.2測試人員的分工92
8.3測試的主要內容與常用方法93
8.3.1正確性測試93
8.3.2容錯性測試94
8.3.3性能與效率測試94
8.3.4易用性測試95
8.3.5文檔測試95
8.4改錯95
8.5小結96
9維護與再生工程97
9.1軟體維護的常識97
9.2維護的代價及其主要因素98
9.3再生工程99
9.3.1重構100
9.3.2逆向工程100
9.3.3前向工程100
9.4小 結100
第一章 軟體工程基本觀念
本章講述軟體工程的基本觀念,是關於軟體工程巨觀上的探討。如果你是軟體公司的老
板,用不著在第一線工作,那么看這一章就夠了。但你一定要讓員工們相信不停地工作是人
生最大的快樂,並且讓他們把本書看完。
1.1 節講述軟體工程的目標和常用的軟體工程模型。1.2 節講述軟體開發的基本策略:
“復用” 、 “分而治之” 、 “最佳化——折衷” ,有助於指導實踐者選擇方法和產生新方法。1.3
節例舉一些不正確的觀念,取材於早期軟體人員比較幼稚的想法,初學者可以引以為戒。1.4
節探討一些有爭議的觀念。
看完本章, 要樹立這樣的信念: 軟體開發過程中的坎坎坷坷, 仿佛只是人臉的凹凸不平,
用熱水毛巾一把就可抹平。讓我們高舉程式主義、軟體工程思想的偉大旗幟,緊密團結在以
Microsoft 為核心的軟體公司周圍,沿著比爾·蓋茨的生財之道,不分白天黑夜地編程,把
建設有中國特色的軟體產業的偉大事業全面推向 21 世紀。
軟體開發設計思想
(1) 瀑布模型(waterfall model)
瀑布模型核心思想是按工序將問題化簡,將功能的實現與設計分開,便於分工協作,即採用結構化的分析與設計方法將邏輯實現與物理實現分開。將軟體生命周期劃分為制定計畫、需求分析、軟體設計、程式編寫、軟體測試和運行維護等六個基本活動,並且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。從本質來講,它是一個軟體開發架構,開發過程是通過一系列階段順序展開的,從系統需求分析開始直到產品發布和維護,每個階段都會產生循環反饋,因此,如果有信息未被覆蓋或者發現了問題,那么最好 “返回”上一個階段並進行適當的修改,開發進程從一個階段“流動”到下一個階段,這也是瀑布開發名稱的由來。
瀑布模型是最早出現的軟體開發模型,在軟體工程中占有重要的地位,它提供了軟體開發的基本框架。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應完成的內容給出該項活動的工作成果,並作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續下一項活動;否則返回前面,甚至更前面的活動。對於經常變化的項目而言,瀑布模型毫無價值。
(2) 快速原型模型(原型模式)prototype model
原型是指模擬某種產品的原始模型,在其他產業中經常使用。軟體開發中的原型是軟體的一個早期可運行的版本,它反映了最終系統的重要特性。
快速原型模型又稱原型模型,它是增量模型的另一種形式;它是在開發真實系統之前,構造一個原型,在該原型的基礎上,逐漸完成整個系統的開發工作。快速原型模型的第一步是建造一個快速原型,實現客戶或未來的用戶與系統的互動,用戶或客戶對原型進行評價,進一步細化待開發軟體的需求。通過逐步調整原型使其滿足客戶的要求,開發人員可以確定客戶的真正需求是什麼;第二步則在第一步的基礎上開發客戶滿意的軟體產品。