設計風格
管道和過濾器:
設計人員能理解整個系統對輸入和輸出的影響,因為可以將任何兩個過濾器連線在一起。
系統的演化很簡單
允許過濾器併發執行
鼓勵使用批處理,不善於處理互動式應用。
重複其他過濾器執行的準備功能
物件導向的設計:
物件必須保持資料的完整性
資料表示必須對其他物件是隱藏的
隱含呼叫:
分層:高度利用了抽象的概念
增加或修改乙個層次相對比較容易
按照層次來組織系統並非總是這麼容易的
系統效能也會受到層次之間的額外協調的影響
例子:提供檔案安全性的系統
資訊庫:
中心資料儲存
在中心資料儲存上進行儲存、檢索和更新資訊的構件集
直譯器:
記憶體:包含待解釋的偽**
解釋引擎
解釋引擎的當前狀態
正被模擬的程式的當前狀態
客戶-伺服器:
建立設計中的問題耦合度:
構件的引用
構件間傳遞的資料量
構件控制其他構件的數量
構件之間介面的複雜程
內容耦合
公共耦合
控制耦合
標記耦合
資料耦合
自底向上分別是:
非耦合 -> 資料耦合 -> 標記耦合 -> 控制耦合 -> 公共耦合 -> 內容耦合
內容耦合:
公共耦合:
內聚度自底向上分別是:
偶然內聚性 -> 邏輯內聚性 -> 時間性內聚性 -> 程式內聚性 -> 聯絡內聚性 -> 順序內聚性 -> 功能內聚性
偶然內聚性:偶然內聚性是指模組中的機能只是剛好放在一起,模組中各機能之間唯一的關係是其位在同乙個模組中(例如:「工具」模組)。
邏輯內聚性:邏輯內聚性是只要機能只要在邏輯上分為同一類,不論各機能的本質是否有很大差異,就將這些機能放在同一模組中(例如將所有的滑鼠和鍵盤都放在輸入處理副程式中)。模組內執行幾個邏輯上相似的功能,通過引數確定該模組完成哪乙個功能。
時間性內聚性:時間性內聚性是指將相近時間點執行的程式,放在同乙個模組中(例如在捕捉到乙個異常後呼叫一函式,在函式中關閉已開啟的檔案、產生錯誤日誌、並告知使用者)。
程式內聚性:程式內聚性是指依一組會依照固定順序執行的程式放在同乙個模組中(例如乙個函式檢查檔案的許可權,之後開啟檔案)。
聯絡內聚性:聯絡內聚性是指模組中的機能因為處理相同的資料或者指各處理使用相同的輸入資料或者產生相同的輸出資料,因此放在同乙個模組中(例如乙個模組中的許多機能都訪問同乙個記錄)。
功能內聚性:功能內聚性是指模組中的各機能是因為它們都對模組中單一明確定義的任務有貢獻(例如xml字串的詞法分析)。
異常標識和處理
提供服務失敗
提供了錯誤的服務或資料
破壞了資料
重試改正報告
防錯和容錯技術
互相懷疑
n- 版本程式設計
診斷事務
《軟體工程》第十一章總結
根據軟體維護的不同原因,軟體維護可分為 改正性維護 適應性維護 完善性維護。軟體維護的特點 軟體維護受開發過程影響大 軟體維護困難多 軟體維護成本高。軟體維護工作包括建立維護組織 報告與評估維護申請 實施維護流程等步驟。遺留系統通常對組織的核心業務提供關鍵性支援,因此需要採用先進的軟體工程方法對整個...
軟體工程第十一章 物件導向設計
結構化方法能夠快速找到最簡潔 高效的邏輯模型。結構化方法對複雜問題幫助有限。物件導向分析方法提供了一種方便 可持續觀測和擴充套件系統的機制,通過資訊隱蔽和封裝等手段遮蔽了物件內部的執行細節,控制了錯誤的蔓延,對需求變化頻繁的系統,可以採用物件導向分析設計方法 物件導向的設計以物件導向分析所產生的需求...
modern c design 第十一章
本章介紹了經常遇到的雙分派的一種泛型解決方案。c 在語法上實現了單分派,即虛函式,通過動態機制選擇相應的函式。雙分派是形如fun object1 a,object2 b 根據a和b的實際型別動態自動分派乙個處理函式。最容易想到的方案,蠻幹法 寫一大堆過載函式.不過這種方法會有很強的依賴性。也提供了一...