軟體工程自我總結
阿新 • • 發佈:2021-10-15
軟體過程
- 軟體描述->軟體開發->軟體有效性驗證->軟體進化
- 基本要素:方法、工具、過程
正式技術評審的目標:發現軟體中的錯誤
模組型別
- 傳入:下屬模組資料傳給上級模組
- 傳出:上級模組資料傳給下屬模組
- 變換:上級模組的資料轉換形式後再傳回給上級模組
- 協調:對所有下屬模組協調和管理
注意區分上級模組和下屬模組
成熟度
CMM 5個:
- 初始:制度缺乏,無序
- 可重複:基本管理制度,可跟蹤,可重複同類項目
- 已定義:文件化、標準化、可按需改進
- 已管理:詳細度量標準,有定量的理解和控制
- 優化:持續改進
CMMI 6個:(0-5)
0.未完成:未執行
1.已執行:可標識的輸入輸出,關注於過程域的特定目標
2.已管理:過程制度化,監控,控制,評審
3.已定義:關注過程的組織和部署
4.量化:定量管理
5.優化:優化,持續得到改進
軟體過程模型
- 瀑布:
- 優點:易理解,管理成本低
- 缺點:必須需求明確,不適合大型軟體,風控弱,已延期和超出預算
- 增量:瀑布+原型,優先滿足核心需求及功能,再在基本需求上不斷優化、完善及補充,確定性比原型高
- 演化:(迭代,需求缺乏準確認知)
- 原型:(規模不大,不太複雜)
- 快速構造部分需求
- 水平:導航,主要用在介面上
- 垂直:主要用在演算法上
- 拋棄式:解決需求不確定、不完整
- 演化式:增量式,易於升級和優化,適合Web
- :(規模龐大,複雜,高風險)
- 瀑布+演化
- 制定計劃+風險分析+實施工程+客戶評估
- 強調風險分析
- 原型:(規模不大,不太複雜)
- 噴泉:
- 迭代+無間隙
- 不利於專案管理和稽核
- UP模型(統一過程)
- 用例和風險驅動,架構為中心
- 迭代+增量
- 4個階段:起始、精華、構建、移交
- 5個工作流:需求、分析、設計、實現、測試
敏捷方法
- 極限程式設計:
- 輕量、高效、低風險、柔性、可預測、科學
- 4大價值觀+5個原則+12個最佳實踐+行為
- 4大價值觀:溝通、簡單、反饋、勇氣
- 5個原則:快速反饋、簡單假設、逐步修改、提倡更改、優質工作
- 12個最佳實踐:計劃遊戲、小型釋出、隱喻、簡單設計、重構、結隊程式設計、集體程式碼所有制、持續整合、每週40小時、現場客戶、編碼標準
- 水晶法
- 並列爭球法:迭代+衝刺
- 自適應軟體開發:猜測+合作+學習
- 開放式:虛擬團隊,開發不在同一處
- FDD驅動:開發人員分類。指揮者+類程式設計師
需求分析->系統設計->系統測試->執行和維護
需求分析
- 獲取
- 分析與協商:超綱、優先順序、衝突
- 系統建模:結構化分析(SA):資料流圖(DFD)、資料字典(DD),面向物件分析(OOA)
- 規約:分析任務的最終產物
- 引言
- 資訊描述
- 功能描述
- 行為描述
- 檢驗標準
- 參考書目
- 附錄
- 驗證:
- 複查:正確性+完整性+清晰性
- 評審:目標一致、資料齊全、資料重組、主要功能在範圍內、符合約束條件、技術風險、檢驗標準
- 管理:
- 建立跟蹤:正向+逆向
- 確保使用者需求
系統設計
- 設計方法:結構化設計(SD)面向物件設計(OOD)
- 概要設計:
- 總體結構
- 資料結構與資料庫:概念->邏輯->物理
- 編寫設計文件
- 評審
- 詳細設計:
- 模組和演算法
- 模組內資料結構
- 程式碼+輸入輸出格式+介面
- 詳細設計說明書
- 評審
資料庫設計過程
- 需求分析:資料+功能+效能
- 概念結構設計:ER圖
- 邏輯結構設計:ER圖轉換成表
- 物理設計:儲存結構+存取路徑
- 實施:程式設計+測試+試執行
- 執行與維護:執行+日常維護
系統測試
原則:
- 儘早開始
- 避免開發或小組承擔(單元測試除外)
- 不能窮舉
- 重視群集
- 嚴格按計劃,避免隨意
物件:程式+文件+資料,不包括開發人員
過程:計劃->大綱->用例+說明文件->實施->報告
策略:單元測試->整合測試->確認測試->系統測試
單元測試
- 模組介面
- 區域性資料結構
- 模組內路勁
- 邊界條件
- 錯誤處理
整合測試
把所有模組組裝成一個系統測試
- 非漸增式:先單元,再完整
- 漸增式
- 自頂向下:先上層模組,再下層模組,需要樁模組,不需要驅動模組
- 自底向上:先下層模組,再上層模組,需要驅動模組,不需要樁模組
- 驅動模組:主程式,裝模組:模擬需要呼叫的模組
- 迴歸測試:重新執行已測試過的子集,只包括主要程式功能
- 冒煙測試:暴露影響構建的錯誤
確認測試
- 進一步檢查軟體功能和效能
- Alphea測試(開發者場所)和Beta測試(使用者場所)
- 退化測試是用來防止改動產生的新錯誤
系統測試
- 恢復
- 安全
- 壓力
- 效能
- 部署
白盒測試
- 語句覆蓋:每個語句至少執行1次
- 判定覆蓋:每種結果(分支)至少1次
- 條件覆蓋:每個條件至少一次(不同的條件可能出相同的分支結果)
- 判定/條件覆蓋:同時滿足判定覆蓋和條件覆蓋
- 路徑覆蓋:每條執行到的路徑至少1次
使用判定表看出條件取值的組合
除錯
- 測試之後,開發人員進行
- 方法:試探、回溯、對分查詢、歸納、演繹
執行和維護(生命週期最長)
新舊轉換
- 直接轉換
- 並行準換
- 分段轉換
- 執行新系統過程:初始->推廣->控制->整合->管理
維護
- 指標:可理解、可測試、可修改
- 文件:使用者文件、系統文件
- 型別:硬體、軟體
- 內容:
- 軟體:正確性、適應性、完善性(在使用或執行中新增的需求)、預防性
- 資料:安全性、完整性、併發性
- 程式碼
- 管理:提出修改->領導審查答覆->領導分配任務->驗收+登記
- 工具:
- 版本控制
- 文件分析
- 開發資訊庫
- 逆向工程
- 再工程
評價
- 立項:規劃階段
- 中期:實施過程中,里程碑式
- 結項:正式執行後
- 內容:
- 需求:目標
- 規格說明:所有分析和測量,表示軟體部件
- 記錄:執行計劃時詳細記載
- 報告:執行測量和分析的結果,能重複及重新評價
專案管理
範圍(4P)
- 人員:專案管理、高階管理、開發、客戶、使用者
- 產品:環境、目標、功能+效能
- 過程
- 專案
- 輸入:
- 專案章程
- 專案範圍管理計劃
- 組織過程資產
- 批准的變更申請
估算模型
COCOMO(靜態)
- 基本:靜態單變數,只有LOC(原始碼行數)
- 中級:基本+產品、硬體、人員專案等因素
- 詳細:中級+分析、設計各步驟的影響
- COCOMO II:物件點、功能點、程式碼行
Putnam(動態)
進度
- 基本原則:劃分、相互依賴、實踐分配、工作量確認、確定責任、明確輸出、里程碑
- 安排:Gantt圖、Pert圖
- Pert圖不能描述並行關係
- Gant圖不能描述依賴關係
組織
- 基本原則:儘早落實、減少交流介面、責權均衡
- 模式:專案劃分、職能劃分(專項組)、矩陣(專案+職能)
配置管理(SCM)
基線、配置項、版本控制、變更控制
配置項
- 產品組成部分的工作成果:需求文件、設計文件、原始碼、測試用例
- 專案管理和機構支撐過程產生的文件:工作計劃、專案質量報告、專案跟蹤報告
裝置清單不屬於配置項
風險管理
- 識別:效能、成本、支援、進度
- 預測:建立標準->描述後果->估算影響->標註精度
- 評估:RE=P x C,P:發生概率,C:成本
- 控制:避免、監控、RMMM計劃
軟體質量
- 內部、外部、使用
- 滿足規定或潛在使用者需求的能力
工具
特徵:
- 覆蓋整個軟體週期
- 為專案排程提供多種手段
- 估算模型進行估算
- 支援多專案和子專案管理
- 確定關鍵路徑、鬆弛時間、超前實踐、滯後時間
- 成語與任務間的通訊輔助
- 資源平衡
- 跟蹤資源使用
- 生成固定格式的報表和報告
不具備指導性作用
補充
冗餘附加技術:
- 備份程式的儲存及呼叫(不是關鍵程式)
- 糾錯檢測及恢復
- 容錯固化
環路複雜性(McCabe)
V(G)=E-N+2,E:邊數,N:節點數
開發方法
- 原型法:需求不清晰+多變
- 結構化法:規模不大+不復雜+不多變
- Jackson法:以資料結構驅動+規模小
------------------------------------------------------------------------------------------
模組劃分原則:
- 大小適中
- 扇入扇出合理
- 扇出大=複雜度高,扇入大=複用度高
- 頂層扇出大,中間刪除較少,底層扇入大
- 一般扇入扇出係數在3或4,不超過7
- 深度寬度合理
完善模組不能改進設計質量
體系結構風格
- 倉庫風格:
- 優點:多方法、可更改、可維護、可重用、支援容錯和健壯
- 缺點:測試困難、選擇太多、效率低、成本高、缺少並行支援
- 包括:資料庫系統、黑板系統、超文本系統
資料倉庫
- OLAP:針對聯機資料訪問與分析,通過多維的方式對資料進行分析、查詢和報表
UML圖
- 用例圖:描述參與者必須要完成的任務
- 類圖:類名、介面、屬性、操作、關係:依賴,泛化,關聯
- 物件圖:物件:型別
- 狀態圖:狀態詞(動名詞)+動作
- 包圖:資料夾
- 活動圖:有開始有結束
- 構件圖:介面+依賴
- 製品圖:系統的物理結構,常與部署圖一起使用
- 組合結構圖:描述類的內部結構
- 部署圖:立方體+<<artifact>>
- 互動圖:
- 序列圖:生命線+控制焦點(像川字)
- 通訊圖:路勁+順序號
- 互動概覽圖:活動圖+順序圖
- 計時圖:任務物件的生命線,強調訊息實際時間以及相對順序