2011年軟考系統分析師整理資料:面向對象(5)
七、面向對象的設計
面向對象設計是把分析階段得到的需求轉變成符合成本和質量要求的、抽象的系統實現方案的過程。從面向對象分析到面向對象設計,是一個逐漸擴充模型的過程。
瀑布模型把設計進一步劃分成概要設計和詳細設計兩個階段,類似地,也可以把面向對象設計再細分為系統設計和對象設計。系統設計確定實現系統的策略和目標系統的高層結構。對象設計確定解空間中的類、關聯、接口形式及實現操作的算法。
(一)面向對象設計的準則
1.模塊化
面向對象開發方法很自然地支持了把系統分解成模塊的設計原則:對象就是模塊。它是把數據結構和操作這些數據的方法緊密地結合在一起所構成的模塊。
2.抽象
面向對象方法不僅支持過程抽象,而且支持數據抽象。
3.信息隱藏
在面向對象方法中,信息隱藏通過對象的封裝性來實現。
4.低耦合
在面向對象方法中,對象是最基本的模塊,因此,耦合主要指不同對象之間相互關聯的緊密程度。低耦合是設計的一個重要標準,因為這有助于使得系統中某一部分的變化對其它部分的影響降到最低程度。
5.高內聚
(1)操作內聚。
(2)類內聚。
(3)一般——具體內聚。
(二)面向對象設計的啟發規則
1.設計結果應該清晰易懂
使設計結果清晰、易懂、易讀是提高軟件可維護性和可重用性的重要措施。顯然,人們不會重用那些他們不理解的設計。
要做到:
(1)用詞一致。
(2)使用已有的協議。
(3)減少消息模式的數量。
(4)避免模糊的定義。
2.一般——具體結構的深度應適當
3.設計簡單類
應該盡量設計小而簡單的類,這樣便以開發和管理。為了保持簡單,應注意以下幾點:
(1)避免包含過多的屬性。
(2)有明確的定義。
(3)盡量簡化對象之間的合作關系。
(4)不要提供太多的操作。
4.使用簡單的協議
一般來說,消息中參數不要超過3個。
5.使用簡單的操作
面向對象設計出來的類中的操作通常都很小,一般只有3至5行源程序語句,可以用僅含一個動詞和一個賓語的簡單句子描述它的功能
6.把設計變動減至最小
通常,設計的質量越高,設計結果保持不變的時間也越長。即使出現必須修改設計的情況,也應該使修改的范圍盡可能小。
(三)系統設計
系統設計是問題求解及建立解答的高級策略。必須制定解決問題的基本方法,系統的高層結構形式包括子系統的分解、它的固有并發性、子系統分配給硬軟件、數據存儲管理、資源協調、軟件控制實現、人機交互接口。
1.系統設計概述
設計階段先從高層入手,然后細化。系統設計要決定整個結構及風格,這種結構為后面設計階段的更詳細策略的設計提供了基礎。
(1)系統分解。
系統中主要的組成部分稱為子系統,子系統既不是一個對象也不是一個功能,而是類、關聯、操作、事件和約束的集合。
(2)確定并發性。
分析模型、現實世界及硬件中不少對象均是并發的。
(3)處理器及任務分配。
各并發子系統必須分配給單個硬件單元,要么是一個一般的處理器,要么是一個具體的功能單元。
(4)數據存儲管理。
系統中的內部數據和外部數據的存儲管理是一項重要的任務。通常各數據存儲可以將數據結構、文件、數據庫組合在一起,不同數據存儲要在費用、訪問時間、容量及可靠性之間做出折衷考慮。
(5)全局資源的處理。
必須確定全局資源,并且制定訪問全局資源的策略。
(6)選擇軟件控制機制。
分析模型中所有交互行為都表示為對象之間的事件。系統設計必須從多種方法中選擇某種方法來實現軟件的控制。
(7)人機交互接口設計。
設計中的大部分工作都與穩定的狀態行為有關,但必須考慮用戶使用系統的交互接口。
2.系統結構的一般框架
3.系統分解——建立系統的體系結構
可用的軟件庫以及程序員的編程經驗。
通過面向對象分析得到的問題域精確模型,為設計體系結構奠定了良好的基礎,建立了完整的框架。
4.選擇軟件控制機制
軟件系統中存在兩種控制流,外部控制流和內部控制流。
5.數據存儲管理
數據存儲管理是系統存儲或檢索對象的基本設施,它建立在某種數據存儲管理系統之上,并且隔離了數據存儲管理模式的影響。
6.設計人機交互接口
在面向對象分析過程中,已經對用戶界面需求作了初步分析,在面向對象設計過程中,則應該對系統的人機交互接口進行詳細設計,以確定人機交互的細節,其中包括指定窗口和報表的形式、設計命令層次等項內容。
(四)對象設計
1.對象設計概述
2.三種模型的結合
(1)獲得操作。
(2)確定操作的目標對象。
3.算法設計
4.優化設計
5.控制的實現
6.調整繼承
7.關聯的設計
【編輯推薦】