軟件設計師11--軟件工程基礎

軟件工程基礎

1. 概述

1.1 軟件的生存週期

  1. 可行性分析和項目開發計劃
  2. 需求分析
  3. 概要設計
  4. 詳細設計
  5. 編碼
  6. 測試
  7. 維護

2. 軟件過程模型

  1. 瀑布模型。將軟件生存週期的各個部分順序連接劃分爲若干個階段。
    在這裏插入圖片描述
    在這裏插入圖片描述

  2. 增量模型
    對瀑布模型的基本成分進行分版本迭代。每一個需求分段爲一個增量產品,每個增量產品可以分別開發。
    在這裏插入圖片描述

  3. 演化模型
    快速開發一個簡單的產品,通過市場的驗證和用戶的反饋,優化產品的需求和開發方向。演化模型可分爲原型模型和螺旋模型等。

    • 原型模型
      在這裏插入圖片描述
    • 螺旋模型
      在這裏插入圖片描述
  4. 噴泉模型
    在這裏插入圖片描述

3. 軟件開發方法

  1. 結構化方法
  2. Jackson方法
  3. 原型方法
  4. 面向對象方法
  5. 敏捷方法
    敏捷方法的總體目標是“儘可能早地、持續地對有價值的產品的交付”使客戶滿意。

3.1 敏捷方法

  1. 極限編程(XP)
    極限編程由四部分組成,彼此相互依賴、關聯,並通過行爲貫穿整個軟件生存週期。
    (一)四大價值觀:溝通、簡單性、反饋和勇氣
    (二)五個原則:快速反饋、簡單性假設、逐步修改、提倡更改和優質工作。
    (三)12個最佳實踐:計劃遊戲(快速制定計劃、隨着細節的不斷變化而完善)、小型發佈、隱喻、簡單設計、測試先行、重構、結對編程、集體代碼所有制、繼續集成、每週工作40小時、現場客戶和編碼標準。
  2. 水晶法(Crystal)
    每一個不同的項目都需要一套不同的策略、約定和方法論。
  3. 並列爭球法(Scrum)
    把每30天的一次迭代稱爲一個“衝刺”,並按需求的優先級來實現產品。多個自組織和自治的小組並行的遞增實現產品。協調通過簡短的日常會議來進行,就像橄欖球中的“並列爭球”。
  4. 自適應軟件開發(ASD)
    ASD有6個基本原則:有一個使命作爲指導;特徵被視爲客戶價值的關鍵點;過程中的等待很重要,重做和做同樣關鍵;變化不是改正而是對軟件開發實際情況的調整;確定的交付時間迫使開發者認證考慮每個版本的關鍵需求;風險控制。

4. 成本估算方法

估算軟件開發所需成本、時間和工作量。常用估算方法有三種:

  1. 基於已經完成的類似項目進行估算。
  2. 基於分解技術進行估算。包括問題分解和過程分解。問題分解是把問題分解爲多個小問題來估算。過程分解是把軟件開發過程(分析、設計、編碼、測試)進行分解估算。
  3. 基於經驗估算模型的估算。典型的經驗估算模型有IBM估算模型、COCOMO估算模型、Putnam估算模型。

多個估算模型可以組合使用,提高估算精度。

  1. 自頂向下估算方法
  2. 自底向上估算方法
  3. 差別估算方法
  4. 其他估算方法

5. 進度管理

5.1 進度管理的基本原則

  1. 劃分
  2. 相互依賴性
  3. 時間分配
  4. 工作量確認
  5. 確定責任
  6. 明確輸出結果
  7. 確定里程碑

5.2 進度安排

採用圖示的方法展示項目的進展情況。圖中需包含:
(1)各個任務計劃的開始時間和完成時間
(2)各個任務的完成標誌
(3)各個任務與參與的工作人數,各個任務與工作量之間的銜接情況
(4)完成各個任務所需的物理資源和數據資源
進度安排的常用圖形有甘特圖(Gantt)和項目計劃評審技術圖(PERT)。

  1. Gantt圖。
    在這裏插入圖片描述
  2. PERT圖
    鬆弛時間爲0的事件流是完成項目的關鍵路徑。如下圖的關鍵事件流是1-2-3-4-6-8-10-11。
    在這裏插入圖片描述

6. 軟件項目的組織

軟件項目組織有三條原則

  1. 儘早落實責任
  2. 減少交流接口
  3. 責任均衡

組織結構的模式

  1. 按項目劃分模式
  2. 按職能劃分模式
  3. 矩陣模式

程序設計小組的組織方式

  1. 主程序員制小組。一名主程序員負責小組技術活動,分配任務,協調技術問題,必要時完成程序的關鍵部分。
  2. 民主制小組。小組各成員地位平等,有組長,但是工作目標和決策都是由全體成員集體決定,相互合作。
  3. 層次式小組。組長領導若干高級程序員,每個高級程序員領導若干程序員。

7. 軟件質量管理

7.1 ISO/IEC 9126軟件質量模型

在這裏插入圖片描述

7.2 Mc Call軟件質量模型

在這裏插入圖片描述

8. 軟件配置管理

8.1 基線

基線是軟件生存週期中各個階段的的一個特定點。用來工作劃分,用作檢查點用來檢查各階段的完成情況。

8.2 軟件配置項

  1. 系統規格說明書
  2. 軟件項目實施計劃
  3. 軟件需求規格說明書
  4. 軟件設計規格說明書(數據設計,體系結構設計、模塊設計、接口設計、對象描述)
  5. 源代碼清單
  6. 測試計劃和過程、測試用例和測試結果記錄
  7. 操作和安裝手冊
  8. 可執行程序
  9. 數據庫描述
  10. 用戶手冊
  11. 維護文檔(如軟件問題報告、維護請求、工程編程次序)
  12. 軟件工程標準
  13. 項目開發小結

8.3 版本控制

軟件的版本升級,使用文檔記錄各個版本的時間、更新內容,功能特點等。

8.4 變更控制

軟件工程過程中某一階段的變更加以控制和管理,保持修改信息,把信息傳遞到下一階段。

9. 風險管理

10. 軟件複雜性度量

10.1 McCabe度量法

在這裏插入圖片描述
在這裏插入圖片描述

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