前言:
感謝大佬們的不求回報的分享,
感謝好人們的百忙之中的幫助。
愛的傳遞,希望能幫到更多的人。
軟件工程學概述:
- 爲了更有效地開發和維護軟件,軟件工程者在20世紀60年代後期開始認真研究消除軟件危機的途徑,從而逐漸形成一門新興的工程學科——計算機軟件工程學(通常簡稱爲“軟件工程學”)。
1.1 軟件危機…………P1
- 軟件危機是指計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。
- 軟件危機的典型表現:
- 對軟件開發成本和進度的估計常常很不準確。
- 用戶對“已完成的”軟件系統不滿意的現象經常發生。
- 軟件質量往往靠不住。
- 軟件常常是不可維護的。
- 軟件通常沒有適當的文檔資料。
- 軟件成本在計算機系統總成本中所佔的比例逐年上升。
- 軟件開發生產率提高的速度,遠遠比不上計算機應用速度普及及深入的趨勢。
- 產生軟件危機的原因:
- 一方面與軟件本身的特點有關。
- 另一方面和軟件開發與維護的方式不正確有關。
- 對問題和目標的正確認識是解決任何問題的前提和出發點。急於求成,倉促上陣,對用戶要求沒有正確的認識就匆忙着手編寫程序,這就如同不打好地基就蓋高樓一樣,最終必然垮臺。
- 編寫程序所需的工作量只佔軟件開發全部工作量的10%~20%。
- 一個軟件產品必須由一個完整的配置組成,主要包括:程序、文檔、數據等成風。
- 軟件工程學的一個重要目標就是提高軟件的可維護性,減少軟件維護的代價。
- 軟件是程序、數據、相關文檔的完整集合。
- 程序是能夠完成預定功能和性能的可執行的指令序列;
- 數據是使程序能夠適當地處理信息的數據結構;
- 文檔是開發、使用和維護程序所需要的圖文資料。
- 1983 年IEEE爲軟件下的定義是:計算機程序、方法、規則、相關的文檔資料以及在計算機上運行程序時所必需的數據。雖然表面上看來在這個定義中列出了軟件的5個配置成分,但是,方法和規則通常是在文檔中說明並在程序中實現的。
- 更重要的是,必須充分認識到軟件開發不是某種個體勞動的神祕技巧,而應該是一種組織良好、管理嚴密、各類人員協同配合、共同完成的工程項目。 必須充分吸取和借鑑人類長期以來從事各種工程項目所積累的行之有效的原理、概念、技術和方法,特別要吸取幾十年來人類從事計算機硬件研究和開發的經驗教訓。
1.2 軟件工程…………P5
- 軟件工程具有的本質特性:
- 軟件工程關注於大型程序的構造。
- 軟件工程的中心課題是控制複雜性。
- 軟件經常變化。
- 開發軟件的效率非常重要。
- 和諧合作是開發軟件的關鍵。(紀律是成功完成的一個關鍵)
- 軟件必須有效的支持它的用戶。
- 基本原理:(7條,缺一不可的最小集合)
- 用分階段的生命週期計劃嚴格管理。
- 堅持進行階段評審。
- 實行嚴格的產品控制。(主要實行基準配置管理)
- 採用現代程序設計技術。
- 結果應能清楚審查。
- 開發小組的人員應該少而精。
- 承認不斷改進軟件工程實踐的必要性。
- 通常把在軟件生命週期全過程中使用的一整套技術方法的集合稱爲:方法學(也稱範型)
- 軟件工程方法學包含3個要素:方法、工具和過程。
- 方法:是完成軟件開發的各項任務的技術方法,回答“怎樣做”的問題;
- 工具:是爲運用方法而提供的自動的或半自動的軟件工程支撐環境;
- 過程:是爲了獲得高質量的軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。
1.3 軟件生命週期……P11
- 軟件生命週期由 :軟件定義、軟件開發和運行維護(也稱爲軟件維護)3個時期組成,每個時期又進一步劃分成若干個階段。
- 軟件定義時期的任務是:確定軟件開發工程必須完成的總目標;確定工程的可行性;導出實現工程目標應該採用的策略及系統必須完成的功能;估計完成該項工程需要的資源和成本,並且制定工程進度表。這個時期的工作通常又稱爲系統分析,由系統分析員負責完成。軟件定義時期通常進一步劃分成3個階段,即問題定義、可行性研究和需求分析 。
- 開發時期具體設計和實現在前一個時期定義的軟件,它通常由下述4個階段組成:總體設計、詳細設計、編碼和單元測試、綜合測試。其中前兩個階段又稱爲系統設計,後兩個階段又稱爲系統實現。
- 維護時期的主要任務是:使軟件持久地滿足用戶的需要。具體地說,當軟件在使用過程中發現錯誤時應該加以改正;當環境改變時應該修改軟件以適應新的環境;當用戶有新要求時應該及時改進軟件以滿足用戶的新需要。通常對維護時期不再進一步劃分階段,但是每一次維護活動本質上都是一次壓縮和簡化了的定義和開發過程。
注:
- 軟件設計的一條基本原理就是:程序應該模塊化。
1.4 軟件過程…………P14
- 瀑布模型
特點:
- 階段間具有順序性和依賴性。
- 推遲實現的觀點。
- 質量保證的觀點。(軟件工程的基本目標是優質、高產)
- 快速原型模型
- 增量模型
- 螺旋模型
- 噴泉模型(是典型的面向對象的軟件過程模型之一)
- Rational 統一模型
RUP總結了多年商業化驗證的6條最有效的軟件開發經驗,這些經驗被稱爲“最佳實踐”。
》
- 迭代式開發。
- 管理需求。
- 使用基於構件的體系結構。
- 可視化建模。
- 驗證軟件質量。
- 控制軟件變更。
- RUP軟件開發生命週期。
注: RUP軟件開發生命週期是一個二維的生命週期模型,如圖1.10所示。圖中縱軸代表核心工作流,橫軸代表時間。
(1)核心工作流
- RUP中有9個核心工作流,其中前6個爲核心過程工作流程,後3個爲核心支持工作流程。下面簡要地敘述各個工作流程的基本任務。
- 業務建模:深人瞭解使用目標系統的機構及其商業運作,評估目標系統對使用它的機構的影響。
- 需求:捕獲客戶的需求,並且使開發人員和用戶達成對需求描述的共識。
- 分析與設計:把需求分析的結果轉化成分析模型與設計模型。
- 實現: 把設計模型轉換成實現結果(形式化地定義代碼結構;用構件實現類和對象;對開發出的構件進行單元測試;把不同實現人員開發出的模塊集成爲可執行的系統)。
- 測試: 檢查各個子系統的交互與集成,驗證所有需求是否都被正確地實現了,識別、確認缺陷並確保在軟件部署之前消除缺陷。
- 部署:成功地生成目標系統的可運行的版本,並把軟件移交給最終用戶。
- 配置與變更管理:跟蹤並維護在軟件開發過程中產生的所有制品的完整性和一致性。
- 項目管理:提供項目管理框架,爲軟件開發項目制定計劃、人員配備、執行和監控等方面的實用準則,併爲風險管理提供框架。
- 環境:向軟件開發機構提供軟件開發環境,包括過程管理和工具支持。
工作階段
- RUP把軟件生命週期劃分成4個連續的階段。每個階段都有明確的目標,並且定義了用來評估是否達到這些目標的里程碑。每個階段的目標通過一次或多次迭代來完成。
- 初始階段:建立業務模型,定義最終產品視圖,並且確定項目的範圍。
- 精化階段:設計並確定系統的體系結構,制定項目計劃,確定資源需求。
- 構建階段:開發出所有構件和應用程序,把它們集成爲客戶需要的產品,並且詳盡的測試所有功能。
- 移交階段:把開發出來的產品提交給用戶使用。
- 敏捷軟件開發宣言
- 個體和交互勝過過程和工具。
- 可以工作的軟件勝過面面俱到的文檔。
- 客戶合作勝過合同談判。
- 響應變化勝過遵循計劃。
- 極限編程(XP)
客戶作爲開發團隊的成員。
使用用戶素材。
短交付週期。
驗收測試。
結對編程。
測試驅動開發。
集體所有。
持續集成。
可持續的開發速度。
開放的工作空間。
及時調整計劃。
簡單的設計。
重構。
使用隱喻。
1.5 小結………………P31
- 面向對象方法 = 對象 + 類 + 繼承 + 用消息通信
End :
如果覺得有收穫,就請我喝杯咖啡吧!