

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1,第8章面向對象設計,8.1 面向對象設計的概念8.2 問題域部分的設計 8.3 人-機交互子系統(tǒng)的設計 8.4 任務管理子系統(tǒng)設計 8.5 數(shù)據(jù)管理子系統(tǒng)設計,2,8.1 面向對象設計的概念,8.1.1面向對象設計的準則 8.1.2面向對象設計應遵循的原則 8.1.3面向對象設計的內容,,3,8.1.1 面向對象設計的準則,模塊化 抽象化 信息隱藏和封裝 對象的高內聚和弱耦合 可擴充性可重用性,,4,模塊化,
2、模塊是軟件工程中一個基本的概念,它是軟件系統(tǒng)的基石。在結構設計方法中,模塊是按系統(tǒng)功能的劃分而組織的執(zhí)行實體 .而在面向對象方法中,對象就是模塊,它是把數(shù)據(jù)和處理數(shù)據(jù)的方法(服務)結合在一起而構成的概念實體。,,5,抽象化,包括過程抽象、數(shù)據(jù)抽象、規(guī)格說明抽象及參數(shù)化抽象等。面向對象方法既支持過程抽象,又支持數(shù)據(jù)抽象。使用者無需知道操作符的實現(xiàn)算法和類中數(shù)據(jù)元素的具體表示方法,就可以通過操作符使用類中的數(shù)據(jù),6,信息隱藏和封裝,封裝是一
3、種數(shù)據(jù)的構造方式,它從手段上保證了對象的數(shù)據(jù)結構和服務實現(xiàn)的隱蔽。在面向對象方法中,信息隱蔽是通過對對象的封裝來實現(xiàn)的。類和對象在構造中將接口與實現(xiàn)過程分離,從而支持了實現(xiàn)過程信息的隱蔽。,7,對象的高內聚和弱耦合,內聚與耦合是軟件設計中評價模塊獨立性(也就是,模塊劃分的質量)的指標。在面向對象方法中,對象和類成為基本模塊,因此,模塊內聚就是指一個對象或類中其內部屬性和服務相互聯(lián)系的緊密程度。在對象或類中存在三種不同類型的內聚:? 服
4、務內聚:對象中提供的服務在功能上、邏輯上的聯(lián)系密切程度。? 類內聚:類的構造原則是,一個類應該只有一個用途,它的屬性和服務應該是高內聚的。類的屬性和服務應該是完成該類承擔的任務所必需的,其中不應有與任務無關的屬性或服務。如果某個類有多個用途,通常應該把它分解成多個專用的類。,8,? “一般-特殊”內聚;構造一個類的“一般-特殊”結構,應該符合問題域中的知識或者一般常識,更準確地說,類的這種結構應該是相應領域知識的正確表達。 耦
5、合是指一個軟件結構內不同模塊之間相互聯(lián)系的緊密程度。在面向對象方法中是最基本的模塊,因此,耦合主要指不同對象之間相互關聯(lián)的緊密程度。弱耦合是優(yōu)秀設計的一個重要標準。因為這有助于使得系統(tǒng)中某一部分的變化對其他部分的影響降到最低程度。在理想情況下,對某一部分的理解、測試或修改,無須涉及系統(tǒng)的其他部分。 如果一類對象過多地依賴其他類對象來完成自己的工作,則不僅給理解、測試或修改這個類帶來很大困難.而且還將大大降低該類的可重用性和可移植
6、性。,9,顯然,類之間的這種相互依賴關系是緊耦合的。 當然,對象不可能是完全孤立的,當兩個對象必須相互聯(lián)系相互依賴時,應該通過類的協(xié)議(即公共接口)實現(xiàn)耦合,而不應該依賴于類的具體實現(xiàn)細節(jié)。一般說來,對象之間的耦合可分為兩大類:? 交互耦合。如果對象之間是通過消息來實現(xiàn)它們之間的聯(lián)系,這種聯(lián)系就是交互耦合。? 繼承耦合。繼承是一般類與特殊類之間耦合的一種形式,從本質上看,通過繼承關系結合起來的基類和派生類,構成了系統(tǒng)中粒度更大的模
7、塊。因此,它們彼此之間應該結合得越緊密越好。,10,可擴充性,面向對象易擴充設計,繼承機制以兩種方式支持擴充設計。第一,繼承關系有助于復用已有定義,使開發(fā)新定義更加容易。隨著繼承結構逐漸變深,新類定義繼承的規(guī)格說明和實現(xiàn)的量也就逐漸增大。這通常意味著,當繼承結構增長時,開發(fā)一個新類的工作量反而逐漸減小。第二,在面向對象的語言中,類型系統(tǒng)的多態(tài)性也支持可擴充的設計。,11,可重用性,軟件可重用是提高軟件開發(fā)生產率和目標系統(tǒng)質量的重要途徑。
8、重用基本上從設計階段開始。重用有兩方面的含義:一是盡量使用已有的類(包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類);二是在設計新類的協(xié)議時,應該考慮將來的可重復使用。,,12,8. 1.2 面向對象設計應遵循的原則,人們使用面向對象方法開發(fā)軟件有一定的歷史,積累了一些經(jīng)驗。這些經(jīng)驗往往能幫助軟件開發(fā)人員提高面向對象設計的質量。面向對象設計過程中應當遵循以下符合軟件工程目標的設計原則: 設計的結果應以清晰易懂為首要原則類的結
9、構應盡量簡明,層次深度應適當盡量使用簡單的協(xié)議盡量簡單的服務,,13,設計的結果應以清晰易懂為首要原則,工程的首要原則就是清晰易懂,這主要體現(xiàn)在: ? 擁有含義明確的標識符號。 ? 盡量采用已有的協(xié)議:如果開發(fā)同—軟件的其他設計人員已經(jīng)建立了類的協(xié)議,在所使用的類庫中已有相應的協(xié)議,則應該使用這些已有的協(xié)議。 ? 減少消息模式的數(shù)目:如果已有標準的消息協(xié)議,設計人員應該遵守這些協(xié)議。如果確需自己建立消息協(xié)議,則應該盡量減少消息
10、模式的數(shù)目。,14,類的結構應盡量簡明,層次深度應適當,定義類的結構,不要太過復雜。一是結構層次的分解應當有度;二是類的屬性不要太多。屬性過多通常表明這個類過于復雜,它所承擔的系統(tǒng)責任可能更多,應當分解它;三是分配給每個類完成的任務也應該簡單,并盡量簡化對象之間的合作關系,如果完成一項任務需要太多的對象協(xié)同配合,可能會破壞類的簡明性和清晰性;四是類中提供的服務應當少而精。 在大型軟件系統(tǒng)開發(fā)中,類的大小和數(shù)量二者會呈現(xiàn)翹翹板現(xiàn)象,這
11、同樣會帶來一定的復雜性。解決這個問題的辦法,是把系統(tǒng)中的類按邏輯分組,也就是劃分“主題”。,15,盡量使用簡單的協(xié)議,一般說來,消息中的參數(shù)不要過多。經(jīng)驗表明,通過復雜消息相互關聯(lián)的對象是高藕合的,一個對象的修改往往會導致其他對象的修改,產生修改副作用。,16,盡量簡單的服務,如果一個服務的實現(xiàn)算法過于復雜,應該設法分解或簡化它,一般說來,類和對象中應該盡量避免使用復雜的服務。,17,8.1.3 面向對象設計的內容,面向對象的設計從內
12、容上包含系統(tǒng)設計和對象設計兩項。系統(tǒng)設計 對象/類的設計,,18,系統(tǒng)設計,系統(tǒng)設計的任務是,按照需求的目標,對軟件系統(tǒng)進行總體結構設計,系統(tǒng)結構是軟件的高層結構形式,它主要由與實現(xiàn)有關的幾個子系統(tǒng)組成。如圖8.1給出了面向對象的軟件系統(tǒng)的結構模型。,,19,系統(tǒng)設計過程中,應當在時間與空間、硬件與軟件、簡單化和一般化、效率和可維護性之間做出有利于設計的權衡,其策略取決于具體問題的應用目標。系統(tǒng)設計的內容主要有:? 系統(tǒng)層次結構
13、設計。結構設計主要完成系統(tǒng)的總體結構在水平方向上的層次劃分和垂直方向上的條塊劃分。從水平方向看,系統(tǒng)的層次反映了系統(tǒng)不同的抽象級別,而從垂直方向看,系統(tǒng)的條塊代表了系統(tǒng)提供的各項服務的功能。,20,? 系統(tǒng)數(shù)據(jù)存儲設計。主要確定系統(tǒng)中各個數(shù)據(jù)對象的存儲和訪問方式,包括數(shù)據(jù)結構、文件、數(shù)據(jù)庫等。這項設計依賴于所采用的數(shù)據(jù)支持系統(tǒng),如:文件系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)等。? 系統(tǒng)資源訪問設計。主要確定系統(tǒng)中需要使用的各種類型的資源以及實現(xiàn)這些資源
14、的訪問和控制機制、安全性機制的設計。? 網(wǎng)絡與分布設計。在網(wǎng)絡環(huán)境下運行一個面向對象系統(tǒng),還應考慮網(wǎng)絡流量、分布式計算單元的計算能力和系統(tǒng)的總體效率的綜合平衡設計。這對于系統(tǒng)總體效能的發(fā)揮有重要作用。,21,? 并發(fā)性設計。主要確定系統(tǒng)中并發(fā)執(zhí)行的對象,并設計這些對象的并發(fā)執(zhí)行方式及控制策略的實現(xiàn)方案。? 對象交互行為方式設計。在面向對象系統(tǒng)中,對象之間的交互行為有過程驅動、事件驅動、并發(fā)驅動等幾種方式。這些方式中需要以消息的形式相
15、互傳遞動態(tài)信息以協(xié)調對象之間的行為。交互行為方式設計就是為對象的動態(tài)交互設計一個技術實現(xiàn)的方案。,22,對象/類的設計,對象/類的設計是按照技術實現(xiàn)的策略,將分析階段的對象模型進行擴充、修改進化并轉換為技術可實現(xiàn)實體的過程。對象設計主要分為:? 對象靜態(tài)結構的設計。對象靜態(tài)結構設計的任務是按照內容擴展、類結構重構、提高靜態(tài)結構重用性的原則,將對象分析模型進行調整、進化、轉換為技術上可實現(xiàn)的對象靜態(tài)結構的設計模型。? 對象動態(tài)行為模型
16、的設計。根據(jù)對象靜態(tài)結構設計的結果,進一步分析對象的動態(tài)行為模式,將分析階段的動態(tài)模型按照設計策略轉換為對象設計模型中的服務引用序列。同時還要設計服務的實現(xiàn)算法及必需的內部操作。算法設計中要綜合考慮復雜性、簡單性、性能優(yōu)化等因素。,23,通過以上兩個步驟的設計可獲得系統(tǒng)的設計模型(在分析模型的基礎上逐步修改、調整、變換得到)。設計模型是面向對象實現(xiàn)的基礎。,24,8.2 問題域部分的設計,通過面向對象分析所得出的問題域精確模型。為設計
17、問題域子系統(tǒng)奠定了良好的基礎,建立了完整的框架。通常,面向對象設計僅需從實現(xiàn)角度對問題域模型作一些補充或修改,主要是增添、合并或分解類與對象、屬性及服務,調整繼承關系等等。當問題域子系統(tǒng)過分復雜龐大時,應該把它進一步分解成若干個小的子系統(tǒng)。 使用面向對象方法學開發(fā)軟件,能夠保持問題域組織框架的穩(wěn)定性,從而便于追蹤分析、設計和編程的結果。在設計與實現(xiàn)過程中所做的細節(jié)修改(例如,增加具體類,增加屬性或服務),并不影響開發(fā)結果的穩(wěn)定性
18、,因為系統(tǒng)的總體框架是基于問題域的。,,,對于需求可能隨時間變化的系統(tǒng)來說,穩(wěn)定性是至關重要的。穩(wěn)定性也是能夠在類似系統(tǒng)中重用分析、設計和編程結果的關鍵因素。為更好地支持系統(tǒng)在其生命期中的擴充,也同樣需要穩(wěn)定性。 面向對象方法的核心是,促使人們按照問題本身去組織系統(tǒng)的概念框架。無論分析、設計、實現(xiàn),每一個階段都是按照問題域本身的樣子去構造、組織的。因此,問題域子系統(tǒng)是軟件系統(tǒng)中定義問題、表達類和對象靜態(tài)結構和動態(tài)交互關系的求解模
19、型,它是軟件系統(tǒng)的核心;問題域子系統(tǒng)是以分析階段的對象模型和動態(tài)模型為基礎。從技術實現(xiàn)的角度對模型進行必要的補充或修改。問題域子系統(tǒng)設計的主要內容有:(1)按照需求信息的最新變動調整并修改模型系統(tǒng)需求的變化只需要先修改面向對象分析模型,然后再把這些修改反映到問題域子系統(tǒng)中。,,(2)調整和組合問題域中的類 良好的類定義是面向對象設計工作的關鍵。在研究分析模型時、必須對類的定義和內容做認真仔細的分析。首先應盡量使用(復用)已
20、定義好的類(許多面向對象的開發(fā)工具都提供了定義良好的基類),或從復用類中添加“一般-特殊”關系派生出與問題域相關的類,這樣就可以利用繼承關系,復用繼承來的屬性和服務功能。 若確實沒有可供復用的類而必須創(chuàng)建新類時。也應當充分考慮新類的協(xié)議內容、以利于今后的復用。 另外,若在設計過程中發(fā)現(xiàn),一些具體類需要定義一個公共協(xié)議,也就是說,這些類都需要定義一組類似的服務(很可能還需要相應的屬性)。在這種情況下可以引入一個父類(或者叫
21、根類),以便建立這個協(xié)議(即命名公共服務集合)。,,(3)調整對象模型中繼承的支持級別 如果對象模型中包含了多重繼承關系,然而所使用的程序設計語言都并不提供多重繼承機制,則在問題域子系統(tǒng)的設計中,應該把對象模型中的多重繼承結構轉換成單繼承結構。 支持繼承機制的語言能直接描述問題域中固有的語義,并能表示公共的屬性和服務,為重用奠定了較好的基礎。因此,只要可能,就應該使用具有繼承機制的語言開發(fā)軟件系統(tǒng)。 (4)改進系統(tǒng)性
22、能 性能是評價一個系統(tǒng)運行效率的重要指標,性能的改進主要從系統(tǒng)的運行速度、空間消耗、成本的節(jié)省、用戶滿意度等方面進行,如在類及對象中擴充一些保存臨時結果的屬性、以節(jié)省計算時間;盡量合并那些運行時需要頻繁交換信息的對象類。,,( 5)增加低層細節(jié) 從技術實現(xiàn)的角度,將問題域中—些低層的細節(jié)信息(主要是與硬件、設備或物理聯(lián)結相關的信息)分離成獨立的細節(jié)類,以隔離高層的邏輯實現(xiàn)。 當問題域子系統(tǒng)規(guī)模較大時,可將其分解為若干
23、個更小的部分。 圖8.2給出了ATM系統(tǒng)的問題域子系統(tǒng)的結構。在面向對象設計過程中,把ATM系統(tǒng)的問題域子系統(tǒng),進一步劃分成了3個更小的子系統(tǒng),它們分別是:ATM站子系統(tǒng)、中央計算機子系統(tǒng)和分行計算機子系統(tǒng)。它們的拓撲結構為星形,以中央計算機為中心向外輻射,同所有ATM站及分行計算機通信。物理聯(lián)結用專用電話線實現(xiàn)。根據(jù)ATM站號和分行代碼,區(qū)分由每個ATM站和每臺分行計算機聯(lián)向中央計算機的電話線。 由于在面向對象分析過程中已經(jīng)
24、對ATM系統(tǒng)作了相當仔細的分析,而且假設所使用的實現(xiàn)環(huán)境能完全支持面向對象分析模型的實現(xiàn),因此,在面向對象設計階段無須對已有的問題域模型作實質性的修改或擴充。,,,30,8.3人-機交互子系統(tǒng)的設計,人-機交互部分突出人如何命令系統(tǒng)以及系統(tǒng)如何向用戶提交信息。人-機交互部分的友好性直接關系到一個軟件系統(tǒng)的成敗,設計結果對用戶情緒和工作效率產生重要影響。交互界面設計的好,則會使系統(tǒng)對用戶產生吸引力,能夠激發(fā)用戶的創(chuàng)造力,提高工作效率。相反
25、,設計的不好則會使用戶感到不適應,不方便,甚至厭煩情緒。 面向對象分析過程中,對用戶界面已作了初步的分析。在面向對象的設計階段,則對系統(tǒng)的人-機交互子系統(tǒng)進行詳細設計,以確定人-機交互的細節(jié),其中包括指定窗口和報表的形式、設計命令層次等項內容。 8.3.1 界面系統(tǒng)的設計原則 8.3.2 分類用戶和描述用戶 8.3.3 界面元素及命令層次的設計,,31,8.3.1 界面系統(tǒng)的設計原則,軟件工程中關于用戶
26、界面的設計主要遵循以下原則:(1)界面形式應力求簡單、友好。(2)界面系統(tǒng)應提供一定的容錯或糾錯機制。人在與系統(tǒng)交互的過程中難免會犯錯誤,因此,應該提供“撤消(undo)”命令時撤消錯誤動作,消除錯誤動作造成的后果。(3)符合用戶的實際需求和使用習慣。 設計一個軟件系統(tǒng)的界面時,應分析不同類別用戶的實際需求,以及充分考慮用戶的知識、技能水平,確定用戶滿意的、并樂于接受的界面形式和結構。,,32,8.3.2 分類用戶和描述用
27、戶,人機交互界面是給用戶使用的,為設計好人機交互部分,設計者必須認真研究使用它的用戶。把自己置身于用戶的地位,身臨其境地觀察人們如何地做他們的工作,這對設計人機交互界面是非常必要的。考慮人們想達到什么目的、完成什么任務、你能提供什么具體工具來支持那些任務的完成?工具如何做的最協(xié)調、使用方便?通常從一下幾個方面考慮: ( 1) 按技能層次分類 初學者、初級、中級、高級。,,,(2)按職務分類 總經(jīng)理、經(jīng)
28、理、管理人員、辦事員。 (3)按不同組的成員分類 職員、顧客。 應該仔細了解將來使用系統(tǒng)的每類用戶的情況,把獲得的下列各項信息記錄下來:? 用戶類型? 使用系統(tǒng)要達到的目的? 特征(年齡、性別、受教育程度、限制因素等)? 成功的關鍵因素(需求、愛好、習慣等)? 技能水平? 完成本職工作的腳本。,34,8.3.3 界面元素及命令層次的設計,以Windows為代表的圖形界面形式已成為微機平臺上軟件應用系統(tǒng)事實上的界面
29、標準。設計系統(tǒng)圖形用戶界面時,采用的界面元素應與Windows應用程序界面相一致,并遵守廣大用戶的習慣約定,這樣才會被用戶接受和喜愛。 命令層次就是采用過程抽象機制,將系統(tǒng)提供的功能以命令的形式組織起來,并按照界面的設計原,用友好的、標準的界面元素表達的一種層次結構。 設計命令層次時,通常先對系統(tǒng)提供的服務功能進行過程抽象,然后再按下列因素綜合設計:,,,(1)次序:仔細選擇每個服務的名字,并在命令層
30、的每一部分內把服務排好次序, 排序時或者把最常用的服務放在最前面,或者按照用戶習慣的工作步驟排序。(2)整體-部分關系:尋找在這些服務中存在的整體—部分模式,這樣做有助于在命令層中將服務分組。(3)寬度和深度:由于人的短期記憶能力有限,命令層次的寬度和深度都不應該過大。(4)操作步驟:應該用盡量少的單擊、拖動和擊鍵組合來表達命令,而且應該為高級用戶提供簡捷的操作方法。界面系統(tǒng)的設計可利用面向對象開發(fā)工具提供的人-界面類實現(xiàn)。例
31、如,在Windows環(huán)境下遠行的Visual C++語言提供了MFC類庫,設計人—機界面類時,往往僅需從MFC類庫中選出一些適用的類,然后從這些類派生出符合自己需要的類就可以了。,36,8.4 任務管理子系統(tǒng)設計,軟件系統(tǒng)是完成系統(tǒng)任務的一個邏輯實體。在軟件系統(tǒng)所完成的任務中,有些任務是順序完成的,而有些任務必須以并發(fā)交替的方式完成。 用傳統(tǒng)方法設計的軟件系統(tǒng),其任務的執(zhí)行方式多是順序的。因此其任務管理的功能可以很簡單
32、。而在面向對象的軟件系統(tǒng)中,一個任務的完成可能需要多個對象以并發(fā)交互的方式協(xié)同配合。這個并發(fā)任務的執(zhí)行過程可以通過分析階段的動態(tài)模型來識別和確認。,,,如果兩個對象之間不存在信息交互,則這兩個對象在本質上是可以并發(fā)活動的, 通過檢查各個對象的狀態(tài)圖及它們之間交換的事件,能夠把若干個非并發(fā)的對象歸并到一條控制線中。所謂控制線,是一條遍及狀態(tài)圖集合的路徑,在這條路徑上每次只有—個對象是活動的。在計算機系統(tǒng)中用任務(task)來實現(xiàn)這一條控
33、制線,也可以將任務視為—連串活動(其含義由服務代碼定義)構成的一個進程(process)。若干個任務的并發(fā)執(zhí)行稱為多任務。 對于某些應用系統(tǒng)來說,通過劃分任務,可以簡化系統(tǒng)結構的設計及部分編碼工作,不同的任務標識了必須同時發(fā)生的不同行為,任務的并發(fā)行為可以在多處理器硬件上實現(xiàn),但為此要增加進程之間的通信任務。也可以在單處理器的計算機上,借助多任務操作系統(tǒng)的支持,以時間片輪轉的分時共享方式執(zhí)行。 常見的任務有事件驅動型任
34、務、時鐘驅動型任務、優(yōu)先任務、關鍵任務和協(xié)調任務等。設計任務管理子系統(tǒng),包括確定各類任務并把任務分配給適當?shù)挠布蜍浖?zhí)行。,,1.確定事件驅動型任務2.確定時鐘驅動型任務3.確定優(yōu)先任務和關鍵任務4.確定協(xié)調任務 5. 確定資源需求,39,1.確定事件驅動型任務,一些負責與硬件設備通信的任務是由事件驅動的,也就是說,這種任務可由事件來激發(fā),通常,事件是表明某些數(shù)據(jù)到達的信號。 在系統(tǒng)運行時,這類任務的工作過
35、程如下,任務處于睡眠狀態(tài)(不消耗處理器時間),等待來自數(shù)據(jù)線或其他數(shù)據(jù)源的中斷;一旦接收到中斷,就喚醒了該任務,接收數(shù)據(jù)并把數(shù)據(jù)放入內存緩沖區(qū)或其他目的地,通知需要知道這件事的對象,然后該任務又回到睡眠狀態(tài)。,,40,2.確定時鐘驅動型任務,以固定的時間間隔激發(fā)某事件,以執(zhí)行一些處理.例如,某些設備需要周期性地獲得數(shù)據(jù);某些人-機接口、子系統(tǒng)、任務、處理器或其他系統(tǒng)也可能需要周期性地通信。因此時鐘驅動型任務應運而生。
36、 時鐘驅動型任務的工作過程如下:任務設置了喚醒時間后進入睡眠狀態(tài);任務睡眠(不消耗處理器時間),等待來自系統(tǒng)的中斷;一旦接收到這種中斷,任務就被喚醒,執(zhí)行它的工作,再通知所有有關的對象,然后該任務又回到睡眠狀態(tài)。,,41,3.確定優(yōu)先任務和關鍵任務,任務優(yōu)先級能根據(jù)需要調節(jié)實時處理的優(yōu)先級次序。保證緊急事件能在限定的時間內得到處理。優(yōu)先級分為:? 高優(yōu)先級:某些服務完成一些有特權的操作,如資源調度、實時處理等。而被賦予了很高的優(yōu)
37、先級。為了在嚴格限定的時間內完成這種服務,就需要把這類服務分離成獨立的、高優(yōu)先級的任務。? 低優(yōu)先級:與高優(yōu)先級相反,有些服務的工作不是特別重要,系統(tǒng)在允許的情況下才會去執(zhí)行它們;這類任務屬于低優(yōu)先級處理(通常指那些背景處理)。設計時應該將這類服務分離出來。,,,關鍵任務是有關系統(tǒng)成功或失敗的關鍵處理,這類處理通常都有嚴格的可靠性要求。在設計過程中可能用額外的任務把這樣的關鍵處理分離出來,以滿足高可靠性處理的要求。對高可靠性處理應該精
38、心設計和編碼,并且應該嚴格測試。,43,4.確定協(xié)調任務,當系統(tǒng)中存在三個以上任務時,就應該增加一個任務,用它作為協(xié)調任務。引入?yún)f(xié)調任務有助于把不同任務之間的協(xié)調控制封裝起來。該任務可以使用狀態(tài)轉換矩陣來描述。這類任務應該僅做協(xié)調工作,不要把本屬于被協(xié)調任務的類和對象的操作分配給他們。,,44,5. 確定資源需求,使用多處理器或固件,主要是為了滿足高性能的需求。設計者必須通過計算系統(tǒng)載荷(即每秒處理的業(yè)務數(shù)及處理一個業(yè)務所花費的時間),
39、來估算所需要的CPU(或其他固件)的處理能力。 設計者應該綜合考慮各種因素,以決定哪些子系統(tǒng)用硬件實現(xiàn),哪些子系統(tǒng)用軟件實現(xiàn)。設計者必須綜合權衡一致性、成本和性能等多種因素,還要考慮未來的可擴充性和可修改性。,,45,8.5 數(shù)據(jù)管理子系統(tǒng)設計,數(shù)據(jù)管理子系統(tǒng)的作用是:在某種數(shù)據(jù)庫管理系統(tǒng)的支持下提供數(shù)據(jù)存儲和訪問的協(xié)調、控制功能。 8.5.1數(shù)據(jù)存儲管理的三種模式 8.5.2 數(shù)據(jù)管理子系統(tǒng)的設計內容
40、8.5.3 類中提供的服務的設計,,46,(1)數(shù)據(jù)存放格式的設計,數(shù)據(jù)存放格式的設計與系統(tǒng)基于的數(shù)據(jù)庫管理模式密切相關。 對于基于文件系統(tǒng)的面向對象的軟件來說,數(shù)據(jù)存放格式的設計方法是:將每個類的屬性集合規(guī)范成第—范式(1BNF)的關系表,然后為每個第一范式表定義一個文件。 對于基于關系數(shù)據(jù)庫管理系統(tǒng)的面向對象軟件來說,數(shù)據(jù)存放格式的設計方法是:將每個類的屬性集規(guī)范成第三范式(3BNF)的關系表,然后為每個第一范式表定義一個
41、數(shù)據(jù)庫。,,,對于基于面向對象數(shù)據(jù)庫管理系統(tǒng)的面向對象軟件來說,如果開發(fā)工具是擴展的關系數(shù)據(jù)庫系統(tǒng),那么數(shù)據(jù)存放格式的設計方法與關系數(shù)據(jù)庫管理系統(tǒng)相同,如果開發(fā)工具是擴展的面向對象程序設計語言的話,數(shù)據(jù)存放格式的設計就不需要對屬性進行規(guī)范,因為數(shù)據(jù)庫管理系統(tǒng)本身具有把對象值映射成存儲值的功能。,48,(2)數(shù)據(jù)存放服務的設計,某個類的對象需要存儲在內存文件中,就需要在這個類中增加一個屬性和服務。專門用于實現(xiàn)對象自身的存儲工作。因對象存儲
42、而增加的屬性和服務應該“隱含”于面向對象設計模型中的屬性層和服務層,只需在相應的類與對象的規(guī)格說明中描述。 一個對象中,專門用于“存儲自己”的屬性和服務,能在系統(tǒng)的問題子系統(tǒng)和數(shù)據(jù)管理子系統(tǒng)之間建立起必要的連接。設計時可以在某個適當?shù)幕愔卸x這樣的屬性和服務。然后利用多重繼承機制,由某個需要存儲其對象的類來繼承。 對于基于文件系統(tǒng)的面向對象軟件來說,對象需要知道打開哪個文件,如何尋找記錄位置,如
43、何檢索、更新文件中的記錄。,,,,對于基于關系數(shù)據(jù)庫管理系統(tǒng)的面向對象的軟件來說,對象需要知道打開哪些數(shù)據(jù)庫。如何存取所需字段,如何檢索、更新數(shù)據(jù)庫中的對象記錄。 對于基于面向對象數(shù)據(jù)庫管理系統(tǒng)的面向對象軟件來說,如果系統(tǒng)是擴展的關系數(shù)據(jù)庫的話,對象存儲服務的方法與基于關系數(shù)據(jù)庫管理系統(tǒng)的方法相同。如果系統(tǒng)是擴展的面向對象語言的話,對象存儲服務的方法由該系統(tǒng)本身提供。只要標識出每個需要保存的對象即可,至于如何保存和恢復,則由面向對象
44、的數(shù)據(jù)庫管理系統(tǒng)負責。,50,8.5.3 類中提供的服務的設計,在分析階段得到的對象模型中,一般并不詳細定義類中提供的服務。而在面向對象的設計中,定義一個類提供的服務則是它的一項重要任務。 (1)確定每一個類中應有的服務 (2)服務算法的設計,,51,(1)確定每一個類中應有的服務,綜合研究分析對象模型、動態(tài)模型和功能模型中反映的信息,是確定類中應有服務的關鍵。對象模型表達了類和對象的靜態(tài)結構及對象之間的關聯(lián)關系,由此可以確定每個類
45、中最核心的幾項服務。 動態(tài)模型和功能模型中分別定義了對象的動態(tài)行為模式和數(shù)據(jù)的處理流程,設計者應設法將這些信息轉換成適當?shù)念愃峁┑姆铡?例如,一張狀態(tài)圖描述了一個對象的生命周期,圖中的狀態(tài)轉換是執(zhí)行對象服務的結果。對象的許多服務都與對象接收到的事件密切相關,事實上,事件就表現(xiàn)為消息,接收消息的對象必然有由消息選擇符指定的服務,該服務改變對象狀態(tài)(修改相應的屬性值),并完成對象應做的動作,對象的動作
46、既與事件有關,也與對象的狀態(tài)有關,因此,完成服務的算法自然也與對象的狀態(tài)有關。,,,功能模型指明了系統(tǒng)必須提供的服務。狀態(tài)圖中狀態(tài)轉換所觸發(fā)的動作,在功能模型中有時可能擴展成一張數(shù)據(jù)流圖。數(shù)據(jù)流圖中的某些處理可能與對象提供的服務相對應。,53,習題,,,,,面向對象設計應該遵循哪些準則?簡述每條準則的內容,并說明遵循這條準則的必要性。簡述軟件工程中界面系統(tǒng)的設計原則。數(shù)據(jù)存儲管理有哪三種模式?為了設計人機交互子系統(tǒng),為什么需要分類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論