目錄
-
- 系統開發基礎
-
- 軟體開發模型
- 軟體開發方法
- 需求分析
-
- 需求的任務
- 需求的過程
- 需求的分類
- 應用的工具
- 軟體設計
-
- 軟體設計的任務與活動
- 子產品設計原則
- 應用的工具
- 軟體測試
-
- 測試
- McCabe複雜度
- 軟體維護
-
- 可維護性因素決定
- 軟體維護類型
- 文檔
-
- 1、開發文檔
- 2、産品文檔(和使用者有關)
- 3、管理文檔
- 軟體品質保證
-
- 外部和内部品質
- 軟體過程改進-CMMI軟體成熟度模型
- 項目管理
-
- Gant圖(進度管理)
- Pert圖
系統開發基礎
軟體開發模型
- 瀑布模型
線性開發:軟體計劃→需求分析→軟體設計→程式程式設計→軟體測試→運作維護
适用于解決需求比較明确的項目;優點是容易了解、管理成本低;缺點是對項目風險的控制能力較弱
- V模型
強調了軟體開發過程中若幹個測試級别

- 噴泉模型
面向對象的開發模型;以使用者需求為動力,以對象為驅動的模型,使開發具有疊代性和無間隙性
- 原型化模型
适用于需求不明确的項目;項目開發初期,構造一個軟體原型,通過調整原型使其滿足客戶要求,一旦确定真正需求,原型将被丢棄
- 演化模型
适用于對需求缺乏準确認識的項目;從初始的原型逐漸演化成最終産品
- 螺旋模型
适用于大型複雜項目;結合了瀑布模型和演化模型的優點,加入了風險分析,成本會提高
- 統一過程(RUP)
适用于大型項目;以用例為驅動,以架構為中心,進行疊代和增量
初始→細化→建構→傳遞
- 靈活方法
- 極限程式設計(XP)
- 4大價值觀:溝通、簡單、回報、勇氣
- 5個原則:快速回報、簡單性假設、逐漸修改、提倡更改、優質工作
- 12個最佳實作:
- 計劃遊戲
- 小型釋出
- 隐喻
- 簡單設計
- 測試先行
- 重構
- 結隊程式設計
- 集體代碼所有制
- 持續內建
- 每周工作40小時
- 現場客戶
- 編碼标準
- 水晶法
- 并列争求法
- 自适應軟體開發
- 極限程式設計(XP)
軟體開發方法
- 結構化方法
- 面向資料流的開發方法
- 使用者至上
- 嚴格區分工作階段,每階段有任務和結果
- 強調系統開發過程的整體性和全局性
- 系統開發過程工程化,文檔資料标準化
- 自頂向下,逐漸分解(求精)
- 不适用于大型項目
- 原型方法
- 适用于需求不明确的開發
- 包括抛棄式原型和演化原型
- 當系統規模不是很大也不是很複雜時,采用比較合适
- 面向對象方法
- 更好的複用性
- 關鍵在于建立一個全面、合理、統一的模型
- 分析、設計、實作三個階段,界限不明确
- 面向服務的方法
- Jackson
- 面向資料結構的開發方法
需求分析
需求的任務
需求的過程
- 問題識别
- 分析與綜合
- 編制需求分析文檔
- 需求分析與評審
需求的分類
- 功能需求
- 非功能需求(性能……)
- 設計限制(比如限定開發語言)
應用的工具
- 資料流圖(DFD)
- 資料字典
- 判定樹
- 判定表
軟體設計
軟體設計的任務與活動
子產品設計原則
高内聚低耦合
内聚類型(由高到底)
- 功能内聚:完成一個單一功能,各個部分協同工作,缺一不可
- 順序内聚:處理元素相關,而且必須順序執行
- 通信内聚:所有處理元素集中在一個資料結構的區域上
- 過程内聚:與處理元素相關,而且必須按特定的次序執行
- 瞬時内聚(時間内聚):所包含的任務必須在同一時間間隔内執行(如初始化子產品)
- 邏輯内聚:完成邏輯上相關的一組任務
- 偶然内聚(巧合内聚):完成一組沒有關系或松散關系的任務
耦合類型(由高到底)
- 内容耦合:當一個子產品直接修改或操作另一個子產品的資料或者直接轉入另一個子產品
- 公共耦合:兩個或多個子產品,通過引用一個公共區的資料(資料結構和變量)而發生作用
- 控制耦合:通過傳送開關、标志、名字等控制資訊,明顯地控制選擇另一子產品的功能
- 标記耦合:兩個子產品都隻和一個資料結構有關,通過參數表傳遞記錄資訊
- 資料耦合:通過參數傳遞簡單資料
- 外部耦合:通過全局變量,不是通過參數表
- 非直接耦合:子產品之間沒有直接關系,完全是通過主子產品的控制和調用來實作的,獨立性最強,耦合度最低
應用的工具
- IPO圖 —— 輸入處理輸出
- PDL —— 程式描述語言
- PAD —— 問題分析圖
- 程式流程圖
- N/S盒圖
軟體測試
- 動态測試
- 黑盒測試法
- 等價類劃分:确定無效與有效等價類;設計用例盡可能多的覆寫有效類;設計用例值覆寫一個無效類
- 邊界值分析:處理邊界情況時最容易出錯;選取的測試資料應該恰好等于、稍小于或者稍大于邊界值
- 錯誤猜測
- 因果法
- 白盒測試法
- 基本路徑測試
- 循環覆寫測試
- 邏輯覆寫測試
- 語句覆寫
- 判定覆寫
- 條件覆寫
- 條件組合覆寫
- 路徑覆寫
- 灰盒測試法
- 黑盒測試法
- 靜态測試
- 桌前檢查(形成小組)
- 代碼審查(形成小組)
- 代碼走查
測試
- 單元測試
- 子產品接口
- 局部資料結構
- 邊界條件
- 獨立的路徑
- 錯誤處理
- 內建測試
- 子產品間的接口和通信
- 系統測試
- 模拟真實硬體環境、裝置
- 性能測試
- 恢複測試
- ……
- 驗收測試(如β測試)
- 以使用者為主導的測試
- 回歸測試
- 修改代碼後,重新測試,确認修改沒有引入其他錯誤或導緻原有代碼錯誤
McCabe複雜度
計算有向圖G的環路複雜度公式為:V(G) = m - n + 2
說明:V(G)是有向圖G中的環路個數,m是G中有向弧數,n是G中節點數
軟體維護
可維護性因素決定
- 可了解性
- 可測試性
- 可修改性
軟體維護類型
- 改正性維護:釋出時就有錯,修複錯誤
- 适應性維護:因為外部環境發生改變,适應新環境
- 預防性維護:為以後新增功能做準備
- 完善性維護(50%):增加功能,提高性能
文檔
1、開發文檔
- 可行性研究和項目任務書
- 需求規格說明
- 功能規格說明
- 設計規格說明(包括成熟和資料規格說明)
- 開發計劃
- 軟體內建和測試計劃
- 品質保證計劃、标準、進度
- 安全和測試資訊
2、産品文檔(和使用者有關)
- 教育訓練手冊
- 參考手冊和使用者指南
- 軟體支援手冊
- 産品手冊和資訊廣告
3、管理文檔
- 開發過程的每個階段的進度
- 軟體變更情況的記錄
- 相對于開發的判定記錄
- 職責定義
軟體品質保證
外部和内部品質
- 功能性
- 适合性
- 準确性
- 互操作性
- 安全保密性
- 功能性的依從性
- 可靠性
- 成熟性
- 容錯性
- 易恢複性
- 可靠性的依從性
- 易用性
- 易了解性
- 易學性
- 易操作性
- 吸引性
- 易用性的依從性
- 效率
- 時間特性
- 資源利用性
- 效率依從性
- 維護性
- 易分析性
- 易改變性
- 穩定性
- 易測試性
- 維護性的依從性
- 可移植性
- 适應性
- 易安裝性
- 共存性
- 易替換性
- 可移植性的依從性
軟體過程改進-CMMI軟體成熟度模型
- 初始級 : 混亂的
- 可管理級 : 可管控
- 已定義級 : 标本化、文檔化
- 定量管理 : 對軟體過程和品質都能進行度量
- 優化管理 : 不斷優化、持續優化改進
項目管理
- 範圍管理
- 時間管理
- 成本管理
- 品質管理
- 人力資源管理
- 溝通管理
- 風險管理
- 采購管理
- 整體管理
- 項目內建管理
Gant圖(進度管理)
- 不能清晰地反映出各任務之間的依賴關系,難以确定整個項目的關鍵所在,也不能反映計劃中有潛力的部分
- 能清晰地描述每個任務從何時開始,到何時結束,任務的進展情況以及任務之間的并行關系
Pert圖
- 不能清楚描述各任務之間的并行情況
- 能清晰的描述每個任務從何時開始,到何時結束,以及各任務之間的依賴關系
- 關鍵路徑=圖中最長的路徑
- 松弛時間=最遲開始時間-最早開始時間
- A-B-C-D-E:CD松弛時間=最遲時間(AE(max)-ED-DC)-最早時間(AB+BC)