版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第7章章 面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計Object-Oriented Design (OOD)軟件設(shè)計概述軟件設(shè)計概述面向?qū)ο笤O(shè)計建模面向?qū)ο笤O(shè)計建模系統(tǒng)設(shè)計系統(tǒng)設(shè)計對象設(shè)計對象設(shè)計面向?qū)ο笤O(shè)計示例面向?qū)ο笤O(shè)計示例7.1 軟件設(shè)計概述軟件設(shè)計概述 (Overview of Software Design )7.1.1 軟件設(shè)計的概念軟件設(shè)計的概念1. 模塊與構(gòu)件模塊與構(gòu)件(Module and Component)模塊模塊(Module)是一個擁有明確定義的輸入、是一個擁有明確定義的輸入、輸出和特性的程序?qū)嶓w輸出和特性的程序?qū)嶓w。它可以單獨命名且。它可以單獨命名且可通過名字來訪問。如高級語言中的
2、函數(shù)、可通過名字來訪問。如高級語言中的函數(shù)、過程、子程序、類等。過程、子程序、類等。軟件構(gòu)件軟件構(gòu)件( Software Component )是可重復(fù)是可重復(fù)使用的軟件組件使用的軟件組件。 軟件構(gòu)件可以是子系統(tǒng),也可以是模塊。軟件構(gòu)件可以是子系統(tǒng),也可以是模塊。2. 抽象與細化抽象與細化 ( Abstraction and Refinement )抽象抽象(Abstraction)是控制復(fù)雜性的基本策略是控制復(fù)雜性的基本策略之一。之一。在軟件工程中,從系統(tǒng)定義到實現(xiàn),每進展在軟件工程中,從系統(tǒng)定義到實現(xiàn),每進展一步都可以看做是對軟件解決方法的抽象化過一步都可以看做是對軟件解決方法的抽象化過程
3、的一次細化。在軟件需求分析階段,在最高程的一次細化。在軟件需求分析階段,在最高抽象級別上,用抽象級別上,用“做什么做什么”來描述問題。然后來描述問題。然后不斷具體化;從概要設(shè)計到詳細設(shè)計的過程中,不斷具體化;從概要設(shè)計到詳細設(shè)計的過程中,抽象化的層次逐次降低,當(dāng)產(chǎn)生源程序時到達抽象化的層次逐次降低,當(dāng)產(chǎn)生源程序時到達最低抽象層次。最低抽象層次。細化細化( Refinement )是與抽象相反而又是與抽象相反而又互補的一個概念。細化的實質(zhì)就是分互補的一個概念。細化的實質(zhì)就是分解,解,“自頂向下、逐步細化自頂向下、逐步細化”是結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的基本原理之一?;绦蛟O(shè)計的基本原理之一。3. 信息
4、隱藏信息隱藏 ( Information Hiding )模塊內(nèi)部的數(shù)據(jù)和過程,應(yīng)該對不需要了解模塊內(nèi)部的數(shù)據(jù)和過程,應(yīng)該對不需要了解這些數(shù)據(jù)和過程的模塊隱藏起來這些數(shù)據(jù)和過程的模塊隱藏起來。信息隱蔽是為了提高模塊的獨立性。在將來信息隱蔽是為了提高模塊的獨立性。在將來修改軟件時,偶然引入錯誤所造成的影響就可修改軟件時,偶然引入錯誤所造成的影響就可以局限在一個或幾個模塊內(nèi)部,不致于波及到以局限在一個或幾個模塊內(nèi)部,不致于波及到軟件的其它部分。軟件的其它部分。4. 軟件復(fù)用軟件復(fù)用( Software Reuse )開發(fā)人員能充分利用已有的現(xiàn)成構(gòu)件,不開發(fā)人員能充分利用已有的現(xiàn)成構(gòu)件,不必一切都從
5、頭做起。必一切都從頭做起。7.1.2 軟件設(shè)計的任務(wù)軟件設(shè)計的任務(wù) 把分析階段產(chǎn)生的分析模型轉(zhuǎn)換為用適當(dāng)手段把分析階段產(chǎn)生的分析模型轉(zhuǎn)換為用適當(dāng)手段表示的軟件設(shè)計模型。表示的軟件設(shè)計模型。 軟件設(shè)計一般都包括軟件設(shè)計一般都包括數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計和過程設(shè)計計、接口設(shè)計和過程設(shè)計等。等。 軟件設(shè)計分兩個階段完成軟件設(shè)計分兩個階段完成: (1)概要設(shè)計概要設(shè)計:進行結(jié)構(gòu)設(shè)計和接口設(shè)計進行結(jié)構(gòu)設(shè)計和接口設(shè)計,并編寫,并編寫概要設(shè)計文檔。概要設(shè)計文檔。 (2)詳細設(shè)計詳細設(shè)計:確定確定各個軟件部件的操作各個軟件部件的操作(算法算法)和和數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu),編寫詳細設(shè)計文檔
6、。,編寫詳細設(shè)計文檔。7n數(shù)據(jù)設(shè)計的主要任務(wù)是:數(shù)據(jù)設(shè)計的主要任務(wù)是: 分析階段創(chuàng)建的信息模型分析階段創(chuàng)建的信息模型實現(xiàn)軟件所需要實現(xiàn)軟件所需要的數(shù)據(jù)結(jié)構(gòu)。的數(shù)據(jù)結(jié)構(gòu)。n體系結(jié)構(gòu)設(shè)計的主要任務(wù)是:體系結(jié)構(gòu)設(shè)計的主要任務(wù)是: 定義軟件主要組成部件之間的關(guān)系。定義軟件主要組成部件之間的關(guān)系。n接口設(shè)計的主要任務(wù)是:接口設(shè)計的主要任務(wù)是: 描述軟件內(nèi)部、軟件和接口系統(tǒng)之間以及軟描述軟件內(nèi)部、軟件和接口系統(tǒng)之間以及軟件與人之間的通信方式(包括數(shù)據(jù)流和控制件與人之間的通信方式(包括數(shù)據(jù)流和控制流)。流)。n過程設(shè)計的主要任務(wù)是:過程設(shè)計的主要任務(wù)是: 將軟件體系結(jié)構(gòu)的組成部件將軟件體系結(jié)構(gòu)的組成部件對軟
7、件的過程對軟件的過程性描述。性描述。7.1.3 模塊化設(shè)計模塊化設(shè)計 ( Modular Design ) 模塊化設(shè)計是按照規(guī)定的原則把大型模塊化設(shè)計是按照規(guī)定的原則把大型軟件劃分為一個個較小的、相對獨立但軟件劃分為一個個較小的、相對獨立但又相互關(guān)聯(lián)的模塊又相互關(guān)聯(lián)的模塊。 We say that a system is modular when each activity of the system is performed by exactly one component , and when the inputs and outputs of each component are wel
8、l-defined .(我們稱一個系統(tǒng)是模塊化的,是指系(我們稱一個系統(tǒng)是模塊化的,是指系統(tǒng)中的每個活動可以被并且僅被一個模統(tǒng)中的每個活動可以被并且僅被一個模塊或構(gòu)件正確地執(zhí)行,并且已經(jīng)對構(gòu)件塊或構(gòu)件正確地執(zhí)行,并且已經(jīng)對構(gòu)件的輸入和輸出進行了良好的定義。)的輸入和輸出進行了良好的定義。)1. 分解(分解(Decomposition) 模塊化模塊化 把一個復(fù)雜的問題分解為幾個較小的問題,把一個復(fù)雜的問題分解為幾個較小的問題,能夠減少解題所需要的工作量。用數(shù)學(xué)式表示能夠減少解題所需要的工作量。用數(shù)學(xué)式表示為:為: C(P1+P2) C(P1) + C(P2) E(P1+P2) E(P1) + E
9、(P2)其中其中, C為問題的復(fù)雜度,為問題的復(fù)雜度,E為解題所需要的工為解題所需要的工作量。作量。 模塊劃分越多,雖然塊內(nèi)的工作量減少了,模塊劃分越多,雖然塊內(nèi)的工作量減少了,但模塊之間接口的工作量增加了。因此,存在但模塊之間接口的工作量增加了。因此,存在一個最小成本區(qū),把模塊數(shù)控制在這一范圍,一個最小成本區(qū),把模塊數(shù)控制在這一范圍,可以使總的工作量保持最?。ㄒ妶D可以使總的工作量保持最小(見圖4.1)。 圖圖7.1 模塊數(shù)與開發(fā)工作量的關(guān)系模塊數(shù)與開發(fā)工作量的關(guān)系n模塊獨立性模塊獨立性指每個模塊只完成系統(tǒng)要求的獨立指每個模塊只完成系統(tǒng)要求的獨立的子功能,而和系統(tǒng)中其它模塊的聯(lián)系最少且接的子功
10、能,而和系統(tǒng)中其它模塊的聯(lián)系最少且接口簡單??诤唵?。n模塊獨立性從兩個方面來度量,即模塊本身的模塊獨立性從兩個方面來度量,即模塊本身的內(nèi)聚性和模塊之間的耦合性內(nèi)聚性和模塊之間的耦合性。n內(nèi)聚性內(nèi)聚性(Cohesion): 模塊內(nèi)部各個成分之間的聯(lián)模塊內(nèi)部各個成分之間的聯(lián)系,也稱塊內(nèi)聯(lián)系系,也稱塊內(nèi)聯(lián)系。n耦合性耦合性(Coupling): 一個模塊與其他模塊之間的一個模塊與其他模塊之間的聯(lián)系聯(lián)系 , 也稱塊間聯(lián)系也稱塊間聯(lián)系。n模塊獨立性越高,則塊內(nèi)聯(lián)系越強(高內(nèi)聚),模塊獨立性越高,則塊內(nèi)聯(lián)系越強(高內(nèi)聚),塊間聯(lián)系越弱(低耦合)。塊間聯(lián)系越弱(低耦合)。 2. 模塊獨立性(模塊獨立性(Mo
11、dule Independence)(1) 內(nèi)聚性(內(nèi)聚性(Cohesion) 一個模塊內(nèi)部各成分在功能上相互關(guān)聯(lián)一個模塊內(nèi)部各成分在功能上相互關(guān)聯(lián)的強度。的強度。偶然偶然 邏輯邏輯 時間時間 過程過程 通信通信 順序順序 功能功能內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚內(nèi)聚性內(nèi)聚性模塊獨立性模塊獨立性高高高高低低低低(1)偶然內(nèi)聚偶然內(nèi)聚(Coincidental Cohesion): 塊內(nèi)各組成成分在功能上是互不相關(guān)的。塊內(nèi)各組成成分在功能上是互不相關(guān)的。 比如比如, 當(dāng)幾個模塊內(nèi)正好有一段代碼是相同時當(dāng)幾個模塊內(nèi)正好有一段代碼是相同時,將它們將它們抽取出來形成
12、單獨的模塊抽取出來形成單獨的模塊, 即為偶然內(nèi)聚模塊。這種模即為偶然內(nèi)聚模塊。這種模塊沒有獨立功能,各部分之間沒有聯(lián)系,或聯(lián)系很松散。塊沒有獨立功能,各部分之間沒有聯(lián)系,或聯(lián)系很松散。(2)邏輯內(nèi)聚邏輯內(nèi)聚(Logical Cohesion): 模塊內(nèi)由若干個邏輯功能相似的成分組成模塊內(nèi)由若干個邏輯功能相似的成分組成。 這種模塊把幾種相關(guān)的功能組合在一起,每這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。該模塊應(yīng)執(zhí)行哪一種功能。計算最高分計算最高分計算平均分計算平均分平均平均/ /最高最高調(diào)用模塊調(diào)用
13、模塊被調(diào)用被調(diào)用模塊模塊(3)時間內(nèi)聚時間內(nèi)聚( Temporal Cohesion ): 模塊內(nèi)所包含的成分,通常要求必須模塊內(nèi)所包含的成分,通常要求必須在相同的時間段內(nèi)執(zhí)行。在相同的時間段內(nèi)執(zhí)行。 例如,初始化一組變量、同時打開若例如,初始化一組變量、同時打開若干文件、同時關(guān)閉若干文件等等,都與干文件、同時關(guān)閉若干文件等等,都與特定時間有關(guān)系特定時間有關(guān)系。(4)過程內(nèi)聚過程內(nèi)聚( Procedural Cohesion )使模塊內(nèi)所包含的一組任務(wù)必須以某種使模塊內(nèi)所包含的一組任務(wù)必須以某種特定的次序執(zhí)行。特定的次序執(zhí)行。讀入讀入成績單成績單讀入并讀入并審查成績單審查成績單審查審查成績單成
14、績單統(tǒng)計統(tǒng)計成績成績打印打印成績成績統(tǒng)計并統(tǒng)計并打印成績單打印成績單(5)通信內(nèi)聚通信內(nèi)聚(Communicational Cohesion): 模塊內(nèi)部的各個成分都使用相同的輸入數(shù)模塊內(nèi)部的各個成分都使用相同的輸入數(shù)據(jù),或產(chǎn)生相同的輸出數(shù)據(jù),它們靠公用數(shù)據(jù),或產(chǎn)生相同的輸出數(shù)據(jù),它們靠公用數(shù)據(jù)聯(lián)系在一起,故稱為通信內(nèi)聚模塊據(jù)聯(lián)系在一起,故稱為通信內(nèi)聚模塊打印打印檢驗結(jié)檢驗結(jié)果果讀文件讀文件文件文件計算計算A計算計算B合并合并修改修改文件文件新文件新文件A結(jié)果結(jié)果B結(jié)果結(jié)果加工記錄加工記錄(6)順序內(nèi)聚順序內(nèi)聚(Sequential Cohesion): 模塊中個組成成分是順序執(zhí)行的,模塊中個
15、組成成分是順序執(zhí)行的,通常情況下上一個組成成分的輸出就是通常情況下上一個組成成分的輸出就是下一個組成成分的輸入。下一個組成成分的輸入。建立方程組系數(shù)矩陣建立方程組系數(shù)矩陣高斯消去法高斯消去法回代回代順序性順序性模塊模塊(7)功能內(nèi)聚功能內(nèi)聚(Functional Cohesion): 模塊內(nèi)所有組成成分結(jié)合在一起完成一個單模塊內(nèi)所有組成成分結(jié)合在一起完成一個單一的功能一的功能(模塊所有成分共同完成一個功能,模塊所有成分共同完成一個功能,缺一不可缺一不可)。例如為完成。例如為完成“對一個數(shù)開平方對一個數(shù)開平方”、“求一組數(shù)中的最大值求一組數(shù)中的最大值”、“從鍵盤上讀入從鍵盤上讀入一行數(shù)據(jù)一行數(shù)據(jù)
16、”等功能所構(gòu)成模塊均屬于功能性等功能所構(gòu)成模塊均屬于功能性模塊。模塊。這種模塊的內(nèi)聚性最強,具有與其它模塊聯(lián)這種模塊的內(nèi)聚性最強,具有與其它模塊聯(lián)系少等優(yōu)點。系少等優(yōu)點?!耙粋€模塊一個功能一個模塊一個功能”,即追求高內(nèi)聚性是,即追求高內(nèi)聚性是進行模塊化設(shè)計的基本準(zhǔn)則。進行模塊化設(shè)計的基本準(zhǔn)則。212. 耦合性耦合性 ( Coupling ) 模塊之間相對獨立(相互依賴)的程模塊之間相對獨立(相互依賴)的程度度。模塊的獨立性越高,則模塊的耦合模塊的獨立性越高,則模塊的耦合性就越低。性就越低。 模塊耦合強度所依賴的因素主要包括:模塊耦合強度所依賴的因素主要包括:一模塊對另一模塊的引用;一模塊向一模
17、塊對另一模塊的引用;一模塊向另一模塊傳遞的數(shù)據(jù)量;一模塊施加另一模塊傳遞的數(shù)據(jù)量;一模塊施加到另一模塊的控制的數(shù)量;模塊間接到另一模塊的控制的數(shù)量;模塊間接口的復(fù)雜程度??诘膹?fù)雜程度。 模塊之間的耦合性可劃分為如下七類:模塊之間的耦合性可劃分為如下七類: 非直接非直接數(shù)據(jù)數(shù)據(jù) 特征特征 控制控制 外部外部 公共公共 內(nèi)容內(nèi)容 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合耦合性耦合性模塊獨立性模塊獨立性低低高高低低高高(1)非直接耦合(非直接耦合( No-direct Coupling): 兩個模塊之間沒有直接的信息傳遞,它們兩個模塊之間沒有直接的信息傳遞,它們之間的聯(lián)系
18、完全是通過上層模塊的控制和調(diào)用之間的聯(lián)系完全是通過上層模塊的控制和調(diào)用來實現(xiàn)的。來實現(xiàn)的。 非直接耦合的模塊獨立性最強。非直接耦合的模塊獨立性最強。主模塊主模塊ABCEFGXYZ(2)數(shù)據(jù)耦合數(shù)據(jù)耦合(Data Coupling): 兩個模塊之間傳遞的是簡單變量兩個模塊之間傳遞的是簡單變量。 數(shù)據(jù)耦合相當(dāng)于數(shù)據(jù)耦合相當(dāng)于C語言中函數(shù)之間的值傳遞。語言中函數(shù)之間的值傳遞。(3)特征耦合特征耦合 (又稱標(biāo)記耦合,又稱標(biāo)記耦合,Stamp Coupling): 兩個模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)兩個模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)。 特征耦合相當(dāng)于特征耦合相當(dāng)于C語言中函數(shù)之間的地址傳遞,傳語言中函數(shù)之間的地址傳
19、遞,傳遞的是指針、數(shù)組名、記錄名等。遞的是指針、數(shù)組名、記錄名等。計算水費計算水費計算電費計算電費計算應(yīng)扣款計算應(yīng)扣款用水量用水量水費水費用電量用電量電費電費計算水費計算水費計算電費計算電費計算應(yīng)扣款計算應(yīng)扣款房租水電房租水電=房房租租+用水量用水量+用電量用電量水費水費電費電費房租水電房租水電=房房租租+用水量用水量+用電量用電量(4)控制耦合控制耦合(Control Coupling): 兩個模塊之間傳遞的兩個模塊之間傳遞的不是一般的數(shù)據(jù),而不是一般的數(shù)據(jù),而是是用作控制信號的開關(guān)值或標(biāo)志量用作控制信號的開關(guān)值或標(biāo)志量。 在控制耦合中,一個模塊通過傳送開關(guān)、標(biāo)志在控制耦合中,一個模塊通過傳
20、送開關(guān)、標(biāo)志等控制參數(shù),控制選擇另一模塊的功能。等控制參數(shù),控制選擇另一模塊的功能。A AB B:計算平均分計算平均分或最高分或最高分平均平均/ /最高最高( (控制信號控制信號) )成績成績B B計算平均分計算平均分平均平均/最高最高讀入分?jǐn)?shù)讀入分?jǐn)?shù)計算最高分計算最高分輸出結(jié)果輸出結(jié)果26 去除模塊間控制耦合的方法:去除模塊間控制耦合的方法:將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊;將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊;被調(diào)用模塊分解成若干單一功能模塊。被調(diào)用模塊分解成若干單一功能模塊。例如可將上例的控制耦合改造成如下的調(diào)例如可將上例的控制耦合改造成如下的調(diào)用形式。用形式。A AB1B1計算平均分計
21、算平均分平均成績平均成績最高成績最高成績B2B2計算最高分計算最高分(5)外部耦合外部耦合(External Coupling): 一組模塊都訪問同一個全局簡單變量。一組模塊都訪問同一個全局簡單變量。(6)公共耦合公共耦合(Common Coupling): 一組模塊都訪問同一個全局?jǐn)?shù)據(jù)結(jié)構(gòu)一組模塊都訪問同一個全局?jǐn)?shù)據(jù)結(jié)構(gòu)。 公共耦合的復(fù)雜程度隨耦合模塊個數(shù)的增加而增加。公共耦合的復(fù)雜程度隨耦合模塊個數(shù)的增加而增加。如如: int com = 0; void a( ) com = com + 2; void main( ) a( ); com = com + 5; printf( “ com
22、= %d ”, com ); com (公共數(shù)據(jù)區(qū)公共數(shù)據(jù)區(qū))amain28 公共耦合存在的問題:公共耦合存在的問題:使軟件的可理解性降低;使軟件的可理解性降低;診斷軟件錯誤困難;診斷軟件錯誤困難;軟件的可維護性差;軟件的可維護性差;軟件可靠性差軟件可靠性差( (公共數(shù)據(jù)區(qū)及全程公共數(shù)據(jù)區(qū)及全程變量無保護措施變量無保護措施) )。F請在軟件中慎用公共數(shù)據(jù)區(qū)和全請在軟件中慎用公共數(shù)據(jù)區(qū)和全程變量程變量!(7)內(nèi)容耦合內(nèi)容耦合(Content Coupling):如果一個模塊直接調(diào)用另一個模塊中的數(shù)據(jù)如果一個模塊直接調(diào)用另一個模塊中的數(shù)據(jù); 或者一或者一個模塊直接轉(zhuǎn)移到另一個模塊中去(不通過正常入
23、口轉(zhuǎn)個模塊直接轉(zhuǎn)移到另一個模塊中去(不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部)到另一模塊內(nèi)部),就稱它們之間的耦合為內(nèi)容耦合。就稱它們之間的耦合為內(nèi)容耦合。 內(nèi)容耦合往往出現(xiàn)在匯編語言程序設(shè)計中。內(nèi)容耦合往往出現(xiàn)在匯編語言程序設(shè)計中。AB直接調(diào)用另一個模塊直接調(diào)用另一個模塊中的數(shù)據(jù)中的數(shù)據(jù)entry1 entry2 模塊有多個入口模塊有多個入口30如何降低模塊間耦合度:如何降低模塊間耦合度:盡量使用數(shù)據(jù)耦合;少用控制耦合;限制公共耦盡量使用數(shù)據(jù)耦合;少用控制耦合;限制公共耦合的范圍;堅決避免使用內(nèi)容耦合。合的范圍;堅決避免使用內(nèi)容耦合。降低接口的復(fù)雜性。降低接口的復(fù)雜性。內(nèi)聚性與耦合性密切相關(guān),同其它模
24、塊具有強耦內(nèi)聚性與耦合性密切相關(guān),同其它模塊具有強耦合性的模塊意味者其具有弱內(nèi)聚性;強內(nèi)聚性模塊合性的模塊意味者其具有弱內(nèi)聚性;強內(nèi)聚性模塊意味著它與其它模塊間具有松散的耦合性。意味著它與其它模塊間具有松散的耦合性。模塊化設(shè)計的目標(biāo)是:力爭強內(nèi)聚、弱耦合。模塊化設(shè)計的目標(biāo)是:力爭強內(nèi)聚、弱耦合。耦合性、內(nèi)聚性與模塊獨立性的關(guān)系:耦合性與耦合性、內(nèi)聚性與模塊獨立性的關(guān)系:耦合性與內(nèi)聚性都是模塊獨立性的定性標(biāo)準(zhǔn),都反映了模塊內(nèi)聚性都是模塊獨立性的定性標(biāo)準(zhǔn),都反映了模塊獨立性的良好程度。但耦合性是直接的主導(dǎo)因素,獨立性的良好程度。但耦合性是直接的主導(dǎo)因素,而內(nèi)聚性則輔助耦合性共同對模塊的獨立性進行衡
25、而內(nèi)聚性則輔助耦合性共同對模塊的獨立性進行衡量。量。(思考題)(思考題)下圖是某系下圖是某系學(xué)生成績管理的一部分,學(xué)生成績管理的一部分,(a)和和(b) 是兩個不同的設(shè)計方案,你認(rèn)是兩個不同的設(shè)計方案,你認(rèn)為哪一個設(shè)計方案較好?為什么?為哪一個設(shè)計方案較好?為什么?A(取班級成績?nèi)“嗉壋煽?B(取平均成績?nèi)∑骄煽兓蜃罡叱煽兓蜃罡叱煽?C(取個人成績?nèi)€人成績)平均平均最高最高平均成績平均成績/最高成績最高成績學(xué)號學(xué)號個人成績個人成績(a) 方案方案A(取班級成績?nèi)“嗉壋煽?B1(取平均成績)取平均成績)C(取個人成績?nèi)€人成績) 最高成績最高成績學(xué)號學(xué)號(b) 方案方案B2(取最高成績?nèi)∽罡?/p>
26、成績)平均成績平均成績個人成績個人成績學(xué)號學(xué)號個人成績個人成績班級班級成績匯總成績匯總班級班級成績匯總成績匯總思考題答案思考題答案答答: (b)方案較好。理由如下:方案較好。理由如下: 1. 內(nèi)聚性:內(nèi)聚性: (a)方案中,方案中,B 模塊為邏輯內(nèi)聚模塊;模塊為邏輯內(nèi)聚模塊; (b)方案中,方案中,B1模塊和模塊和B2模塊均為功能內(nèi)聚模塊。模塊均為功能內(nèi)聚模塊。 2. 耦合性:耦合性: (a)方案中,方案中,A和和B模塊之間為控制耦合;模塊之間為控制耦合; (b)方案中,方案中,A與與B1模塊之間、模塊之間、A與與B2模塊之間均模塊之間均為數(shù)據(jù)耦合。為數(shù)據(jù)耦合。 所以,所以, (b)方案具有高
27、內(nèi)聚、低耦合的優(yōu)點。方案具有高內(nèi)聚、低耦合的優(yōu)點。補充習(xí)題:補充習(xí)題:內(nèi)聚性有哪些類型內(nèi)聚性有哪些類型(按由弱到強的順按由弱到強的順序列舉序列舉)?耦合性有哪些類型耦合性有哪些類型(按由弱到強的順按由弱到強的順序列舉序列舉)?7.2 面向?qū)ο笤O(shè)計建模(面向?qū)ο笤O(shè)計建模(OOD Modeling)與傳統(tǒng)的結(jié)構(gòu)化設(shè)計一樣,面向?qū)ο笈c傳統(tǒng)的結(jié)構(gòu)化設(shè)計一樣,面向?qū)ο笤O(shè)計的任務(wù)是將分析階段建立的分析設(shè)計的任務(wù)是將分析階段建立的分析模型轉(zhuǎn)變?yōu)檐浖O(shè)計模型。面向?qū)ο竽P娃D(zhuǎn)變?yōu)檐浖O(shè)計模型。面向?qū)ο笤O(shè)計模型由子系統(tǒng)設(shè)計層、類及對象設(shè)計模型由子系統(tǒng)設(shè)計層、類及對象設(shè)計層、消息設(shè)計層和責(zé)任設(shè)計層等設(shè)計層、消息設(shè)計
28、層和責(zé)任設(shè)計層等4個抽象層次組成。如下圖所示:個抽象層次組成。如下圖所示:7.2.1 面向?qū)ο蟮脑O(shè)計模型面向?qū)ο蟮脑O(shè)計模型責(zé)任設(shè)計責(zé)任設(shè)計屬性、操作、協(xié)作屬性、操作、協(xié)作對象對象-行為模型行為模型對象對象-關(guān)系模型關(guān)系模型類類/對象對象模型模型使用使用實例實例消息設(shè)計消息設(shè)計類及對象設(shè)計類及對象設(shè)計子系統(tǒng)設(shè)計子系統(tǒng)設(shè)計分析模型分析模型 設(shè)計模型設(shè)計模型圖圖7.12 7.12 從從OOOO分析模型轉(zhuǎn)換到分析模型轉(zhuǎn)換到OOOO設(shè)計模型設(shè)計模型系統(tǒng)設(shè)計層:描述了整個系統(tǒng)的總體結(jié)系統(tǒng)設(shè)計層:描述了整個系統(tǒng)的總體結(jié)構(gòu),給出了各個子系統(tǒng)的表示;構(gòu),給出了各個子系統(tǒng)的表示;類及對象設(shè)計層:包含類層次關(guān)系和對
29、類及對象設(shè)計層:包含類層次關(guān)系和對每個對象的設(shè)計表示;每個對象的設(shè)計表示;消息設(shè)計層:描述對象間的消息模型,消息設(shè)計層:描述對象間的消息模型,建立了系統(tǒng)的外部和內(nèi)部接口,使得每個建立了系統(tǒng)的外部和內(nèi)部接口,使得每個對象能夠和其協(xié)作者通信;對象能夠和其協(xié)作者通信;責(zé)任設(shè)計層:包含針對每個對象的所有責(zé)任設(shè)計層:包含針對每個對象的所有屬性和操作的數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計。屬性和操作的數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計。7.2.2面向?qū)ο笤O(shè)計的特點面向?qū)ο笤O(shè)計的特點在面向?qū)ο蠓治龊兔嫦驅(qū)ο蟮脑O(shè)計之間沒有明在面向?qū)ο蠓治龊兔嫦驅(qū)ο蟮脑O(shè)計之間沒有明顯的界限,它們都是不斷迭代的過程,很難精顯的界限,它們都是不斷迭代的過程,很
30、難精確區(qū)分兩個階段。但是確區(qū)分兩個階段。但是OOA是一個分類活動,是一個分類活動,即分析問題領(lǐng)域以確定可應(yīng)用的對象類以及對即分析問題領(lǐng)域以確定可應(yīng)用的對象類以及對象關(guān)系和行為;而象關(guān)系和行為;而OOD則主要考慮則主要考慮“如何實現(xiàn)如何實現(xiàn)”的問題,其注意的焦點從問題空間轉(zhuǎn)移到解空的問題,其注意的焦點從問題空間轉(zhuǎn)移到解空間。間。面向?qū)ο笤O(shè)計也是基于抽象、信息隱蔽、功能面向?qū)ο笤O(shè)計也是基于抽象、信息隱蔽、功能獨立和模塊化等重要的軟件設(shè)計概念的,但其獨立和模塊化等重要的軟件設(shè)計概念的,但其模塊化不僅僅局限于過程處理部分,而是通過模塊化不僅僅局限于過程處理部分,而是通過將數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,
31、來共同完將數(shù)據(jù)和對數(shù)據(jù)的操作封裝在一起,來共同完成信息和處理的雙重模塊化的。成信息和處理的雙重模塊化的。39從從OOA到到OOD逐漸擴充模型的過程逐漸擴充模型的過程 傳統(tǒng)的結(jié)構(gòu)化設(shè)計方法將設(shè)計分為傳統(tǒng)的結(jié)構(gòu)化設(shè)計方法將設(shè)計分為概要設(shè)計和詳細設(shè)計兩個階段。概要設(shè)計和詳細設(shè)計兩個階段。OOD方法將設(shè)計分為系統(tǒng)設(shè)計(高方法將設(shè)計分為系統(tǒng)設(shè)計(高層設(shè)計)和對象設(shè)計(低層設(shè)計)層設(shè)計)和對象設(shè)計(低層設(shè)計)兩個層次,其中系統(tǒng)設(shè)計的主要目兩個層次,其中系統(tǒng)設(shè)計的主要目標(biāo)是表示軟件體系結(jié)構(gòu),對象設(shè)計標(biāo)是表示軟件體系結(jié)構(gòu),對象設(shè)計著重于對象及其相互交互的描述。著重于對象及其相互交互的描述。7.3 系統(tǒng)設(shè)計(系
32、統(tǒng)設(shè)計(System Design)7.3.1 系統(tǒng)設(shè)計過程系統(tǒng)設(shè)計過程系統(tǒng)設(shè)計主要由以下步驟組成:系統(tǒng)設(shè)計主要由以下步驟組成: 劃分子系統(tǒng);劃分子系統(tǒng); 確定需要并發(fā)運行的子系統(tǒng)并為它們確定需要并發(fā)運行的子系統(tǒng)并為它們分配處理器;分配處理器; 描述子系統(tǒng)之間的通信;描述子系統(tǒng)之間的通信; 確定系統(tǒng)資源的管理和控制;確定系統(tǒng)資源的管理和控制; 確定人機交互構(gòu)件;確定人機交互構(gòu)件; 選擇實現(xiàn)數(shù)據(jù)管理和任務(wù)管理的基本選擇實現(xiàn)數(shù)據(jù)管理和任務(wù)管理的基本策略。策略。 在系統(tǒng)設(shè)計過程中必須定義四種重要的設(shè)計結(jié)構(gòu)在系統(tǒng)設(shè)計過程中必須定義四種重要的設(shè)計結(jié)構(gòu)(子系統(tǒng)):(子系統(tǒng)):問題域部分問題域部分直接負(fù)責(zé)實
33、現(xiàn)客戶需求的子系統(tǒng);直接負(fù)責(zé)實現(xiàn)客戶需求的子系統(tǒng);人機交互部分人機交互部分實現(xiàn)用戶界面的子系統(tǒng)(包括可實現(xiàn)用戶界面的子系統(tǒng)(包括可復(fù)用的復(fù)用的GUI子系統(tǒng));子系統(tǒng));任務(wù)管理部分任務(wù)管理部分負(fù)責(zé)控制和協(xié)調(diào)并發(fā)任務(wù)的子系負(fù)責(zé)控制和協(xié)調(diào)并發(fā)任務(wù)的子系統(tǒng),任務(wù)可能被包裝在一個子系統(tǒng)中或不同的子統(tǒng),任務(wù)可能被包裝在一個子系統(tǒng)中或不同的子系統(tǒng)間;系統(tǒng)間;數(shù)據(jù)管理部分?jǐn)?shù)據(jù)管理部分負(fù)責(zé)對象的存儲和檢索的子系統(tǒng)負(fù)責(zé)對象的存儲和檢索的子系統(tǒng)。42主題層主題層結(jié)構(gòu)層結(jié)構(gòu)層類及對象層類及對象層屬性層屬性層方法層方法層問題域問題域 部分部分( (PDC) )人機交人機交互部分互部分( (HIC) )任務(wù)管任務(wù)管理部
34、分理部分( (TMC) )數(shù)據(jù)管數(shù)據(jù)管理部分理部分( (DMC) )OOD階段建立階段建立OOA 階段模型階段模型OODOOD由四個活動組成由四個活動組成7.3.2 子系統(tǒng)設(shè)計子系統(tǒng)設(shè)計 在在OOOO系統(tǒng)設(shè)計中,通常用子系統(tǒng)來描述實現(xiàn)客戶系統(tǒng)設(shè)計中,通常用子系統(tǒng)來描述實現(xiàn)客戶需求的組件以及實現(xiàn)客戶需求所需要的支持環(huán)境需求的組件以及實現(xiàn)客戶需求所需要的支持環(huán)境;可將每個子系統(tǒng)看成一個高層次的模塊,通過;可將每個子系統(tǒng)看成一個高層次的模塊,通過模塊的外部接口與系統(tǒng)進行通信。模塊的外部接口與系統(tǒng)進行通信。 系統(tǒng)設(shè)計的第一步是從系統(tǒng)設(shè)計的第一步是從OOAOOA的各個模塊導(dǎo)出相應(yīng)的各個模塊導(dǎo)出相應(yīng)的子系
35、統(tǒng),這時應(yīng)考慮的主要問題為:的子系統(tǒng),這時應(yīng)考慮的主要問題為:各個子系統(tǒng)所負(fù)責(zé)的客戶需求;各個子系統(tǒng)所負(fù)責(zé)的客戶需求;應(yīng)將應(yīng)將OOAOOA中的對象分配哪個子系統(tǒng);中的對象分配哪個子系統(tǒng);哪些子系統(tǒng)必須并發(fā)運行,由什么系統(tǒng)構(gòu)件協(xié)調(diào)和哪些子系統(tǒng)必須并發(fā)運行,由什么系統(tǒng)構(gòu)件協(xié)調(diào)和控制這些子系統(tǒng)的并發(fā)運行;控制這些子系統(tǒng)的并發(fā)運行;全局資源如何被子系統(tǒng)管理等。全局資源如何被子系統(tǒng)管理等。1 1、劃分子系統(tǒng)、劃分子系統(tǒng)子系統(tǒng)是由分析模型中的類、關(guān)系和行為映子系統(tǒng)是由分析模型中的類、關(guān)系和行為映射而來的,但它既不是一個對象,也不是一射而來的,但它既不是一個對象,也不是一個功能,而是類、關(guān)聯(lián)、操作、事件和約
36、束個功能,而是類、關(guān)聯(lián)、操作、事件和約束的內(nèi)聚集合。設(shè)計子系統(tǒng)時除了應(yīng)遵循軟件的內(nèi)聚集合。設(shè)計子系統(tǒng)時除了應(yīng)遵循軟件設(shè)計的基本策略(如模塊化、功能獨立、信設(shè)計的基本策略(如模塊化、功能獨立、信息隱藏等)之外,還應(yīng)考慮如下原則:息隱藏等)之外,還應(yīng)考慮如下原則:q 子系統(tǒng)中的類應(yīng)擁有共同特性和目的、提子系統(tǒng)中的類應(yīng)擁有共同特性和目的、提供相似的服務(wù)類型;供相似的服務(wù)類型;q 子系統(tǒng)應(yīng)具有良好的接口;子系統(tǒng)應(yīng)具有良好的接口;q 除少數(shù)除少數(shù)“通信類通信類”外,子系統(tǒng)中的類應(yīng)只外,子系統(tǒng)中的類應(yīng)只與該子系統(tǒng)中的其它類協(xié)作;與該子系統(tǒng)中的其它類協(xié)作;q 子系統(tǒng)數(shù)目不應(yīng)太多。子系統(tǒng)數(shù)目不應(yīng)太多。例如例如
37、:顯像管生產(chǎn)監(jiān)測系統(tǒng)顯像管生產(chǎn)監(jiān)測系統(tǒng)某顯像管生產(chǎn)線監(jiān)測系統(tǒng)的光電管采集數(shù)據(jù)的某顯像管生產(chǎn)線監(jiān)測系統(tǒng)的光電管采集數(shù)據(jù)的流程如下:流程如下:當(dāng)一個顯像管在流水線上經(jīng)過光電管時,光電當(dāng)一個顯像管在流水線上經(jīng)過光電管時,光電管就根據(jù)其形狀判斷是哪種規(guī)格的顯像管,由管就根據(jù)其形狀判斷是哪種規(guī)格的顯像管,由一個一個PLCPLC計數(shù)器進行累計。累計數(shù)據(jù)每計數(shù)器進行累計。累計數(shù)據(jù)每3030秒傳送秒傳送給工控機一次,工控機每隔半小時取出一個累給工控機一次,工控機每隔半小時取出一個累計數(shù)據(jù)保存到數(shù)據(jù)庫,同時將半小時數(shù)據(jù)供大計數(shù)據(jù)保存到數(shù)據(jù)庫,同時將半小時數(shù)據(jù)供大屏幕顯示。為使管理人員隨時了解各班生產(chǎn)情屏幕顯示。
38、為使管理人員隨時了解各班生產(chǎn)情況,通過班數(shù)據(jù)處理將半小時數(shù)據(jù)匯總成一個況,通過班數(shù)據(jù)處理將半小時數(shù)據(jù)匯總成一個班的班的8 8小時數(shù)據(jù)。小時數(shù)據(jù)。 顯像管生產(chǎn)監(jiān)測系統(tǒng)的顯像管生產(chǎn)監(jiān)測系統(tǒng)的CFD圖。圖。 翻屏翻屏 人工驅(qū)動信息人工驅(qū)動信息時鐘時鐘半小時半小時 半分鐘半分鐘 某型號累加某型號累加 物品經(jīng)過物品經(jīng)過 信號信號半分鐘數(shù)據(jù)半分鐘數(shù)據(jù)光電管光電管采集采集計數(shù)計數(shù)傳送傳送工控機工控機處理處理實 時 數(shù)實 時 數(shù)據(jù)顯示據(jù)顯示班數(shù)據(jù)班數(shù)據(jù)處理處理半小時數(shù)據(jù)半小時數(shù)據(jù)班數(shù)據(jù)班數(shù)據(jù) 例如例如:顯像管生產(chǎn)監(jiān)測系統(tǒng)的子系統(tǒng)。顯像管生產(chǎn)監(jiān)測系統(tǒng)的子系統(tǒng)。用戶界面子系統(tǒng)用戶界面子系統(tǒng)數(shù)據(jù)查詢子系統(tǒng)數(shù)據(jù)查詢子
39、系統(tǒng)展示數(shù)據(jù)展示數(shù)據(jù)()數(shù)據(jù)采集子系統(tǒng)數(shù)據(jù)采集子系統(tǒng)采集數(shù)據(jù)采集數(shù)據(jù)()基礎(chǔ)數(shù)據(jù)維護子系統(tǒng)基礎(chǔ)數(shù)據(jù)維護子系統(tǒng)基礎(chǔ)資源基礎(chǔ)資源()數(shù)據(jù)生成子系統(tǒng)數(shù)據(jù)生成子系統(tǒng)時間間隔時間間隔標(biāo)識標(biāo)識()482 2、處理并發(fā)操作、處理并發(fā)操作 在在OOAOOA模型中,對象模型中,對象- -行為模型可能包含存在行為模型可能包含存在于子系統(tǒng)或?qū)ο笾g的并發(fā)事件的信息。對于子系統(tǒng)或?qū)ο笾g的并發(fā)事件的信息。對于不是同時活動的對象或子系統(tǒng),可以在同于不是同時活動的對象或子系統(tǒng),可以在同一處理器硬件上實現(xiàn),不需要并發(fā)處理;而一處理器硬件上實現(xiàn),不需要并發(fā)處理;而對于那些同步作用于事件的并發(fā)對象或子系對于那些同步作用于事件的
40、并發(fā)對象或子系統(tǒng),必須考慮同步措施。處理并發(fā)操作的方統(tǒng),必須考慮同步措施。處理并發(fā)操作的方案為:案為:將并發(fā)子系統(tǒng)分配到不同的處理器。將并發(fā)子系統(tǒng)分配到不同的處理器。將并發(fā)子系統(tǒng)分配到相同的處理器并由系將并發(fā)子系統(tǒng)分配到相同的處理器并由系統(tǒng)提供同步控制。統(tǒng)提供同步控制。49 例如例如:考察顯像管生產(chǎn)檢測系統(tǒng)中的實時數(shù)據(jù)考察顯像管生產(chǎn)檢測系統(tǒng)中的實時數(shù)據(jù)的狀態(tài)圖如下,請標(biāo)識其并發(fā)操作,并給出解的狀態(tài)圖如下,請標(biāo)識其并發(fā)操作,并給出解決方案。決方案。20秒到秒到/翻屏翻屏生成最新數(shù)據(jù)生成最新數(shù)據(jù)/翻屏翻屏 半小時到半小時到/ 工控處理工控處理半分鐘到半分鐘到/傳送傳送空閑空閑/采集采集物品經(jīng)過物品
41、經(jīng)過/計數(shù)計數(shù)采集采集PLC計數(shù)計數(shù)傳送傳送工控處理工控處理實時翻屏實時翻屏50 從上圖可發(fā)現(xiàn):從上圖可發(fā)現(xiàn): 每隔半分鐘會接到工控處理事件,觸發(fā)半分鐘數(shù)據(jù)每隔半分鐘會接到工控處理事件,觸發(fā)半分鐘數(shù)據(jù)轉(zhuǎn)換為半小時數(shù)據(jù);轉(zhuǎn)換為半小時數(shù)據(jù); 大屏幕每大屏幕每20秒實時翻屏一次,它會讀取實時數(shù)據(jù);秒實時翻屏一次,它會讀取實時數(shù)據(jù); 人工觸發(fā)的數(shù)據(jù)處理和日數(shù)據(jù)處理隨時會發(fā)生。人工觸發(fā)的數(shù)據(jù)處理和日數(shù)據(jù)處理隨時會發(fā)生。 因此對實時數(shù)據(jù)對象存在并發(fā)操作:因此對實時數(shù)據(jù)對象存在并發(fā)操作: 考慮到半分鐘數(shù)據(jù)的轉(zhuǎn)換頻繁發(fā)生,而且持續(xù)時間考慮到半分鐘數(shù)據(jù)的轉(zhuǎn)換頻繁發(fā)生,而且持續(xù)時間較長,可采用將它分配到一個獨立的
42、處理器上的方較長,可采用將它分配到一個獨立的處理器上的方案;案; 對于其它并發(fā)活動,每個表示為一個獨立的控制線對于其它并發(fā)活動,每個表示為一個獨立的控制線程,并定義為獨立的任務(wù)。程,并定義為獨立的任務(wù)。513 3、描述子系統(tǒng)間通信、描述子系統(tǒng)間通信 子系統(tǒng)間的協(xié)作可用如下的模型描述:子系統(tǒng)間的協(xié)作可用如下的模型描述:客戶端客戶端子系統(tǒng)子系統(tǒng)服務(wù)器端服務(wù)器端子系統(tǒng)子系統(tǒng)請求請求端子系統(tǒng)端子系統(tǒng)端子系統(tǒng)端子系統(tǒng)請求請求請求請求子系統(tǒng)間協(xié)作的模型子系統(tǒng)間協(xié)作的模型 確定子系統(tǒng)間交互方式的步驟如下:確定子系統(tǒng)間交互方式的步驟如下: 列出所有可能接收到的請求,按子系統(tǒng)組列出所有可能接收到的請求,按子系統(tǒng)
43、組織這些請求,并在一個或多個合約(子系織這些請求,并在一個或多個合約(子系統(tǒng)間交互的方式)中定義。統(tǒng)間交互的方式)中定義。 對每個合約,列出完成每個請求所需的操對每個合約,列出完成每個請求所需的操作(繼承的和私有的),將操作和子系統(tǒng)作(繼承的和私有的),將操作和子系統(tǒng)內(nèi)的特定類相關(guān)聯(lián)。內(nèi)的特定類相關(guān)聯(lián)。 將每個合約填入如下所示的表。將每個合約填入如下所示的表。 對復(fù)雜的交互模式,可創(chuàng)建子系統(tǒng)協(xié)作圖對復(fù)雜的交互模式,可創(chuàng)建子系統(tǒng)協(xié)作圖,如下所示。,如下所示。 合合約約 類型類型(客戶(客戶/服務(wù)器服務(wù)器或端對斷)或端對斷)協(xié)作子協(xié)作子系統(tǒng)系統(tǒng)類類操操作作消息消息格式格式數(shù)據(jù)采集數(shù)據(jù)采集子系統(tǒng)子系
44、統(tǒng)數(shù)據(jù)生成數(shù)據(jù)生成子系統(tǒng)子系統(tǒng)數(shù)據(jù)查詢數(shù)據(jù)查詢子系統(tǒng)子系統(tǒng)生 成 計生 成 計算 數(shù) 據(jù)算 數(shù) 據(jù)請求請求采 集 所采 集 所缺 數(shù) 據(jù)缺 數(shù) 據(jù)請求請求生 成 數(shù)生 成 數(shù)據(jù) 報 表據(jù) 報 表請求請求544 4、資源管理構(gòu)件、資源管理構(gòu)件 對于系統(tǒng)中的共享資源(外部實體、系對于系統(tǒng)中的共享資源(外部實體、系統(tǒng)實現(xiàn)部件),若不進行有效管理,可統(tǒng)實現(xiàn)部件),若不進行有效管理,可能會引起沖突;每個資源應(yīng)該由某能會引起沖突;每個資源應(yīng)該由某“保保護者對象護者對象”擁有,保護者對象是該資源擁有,保護者對象是該資源的門衛(wèi),控制對資源的訪問并協(xié)調(diào)對資的門衛(wèi),控制對資源的訪問并協(xié)調(diào)對資源請求的沖突。源請求的
45、沖突。555 5、人機交互設(shè)計、人機交互設(shè)計 雖然一個好的人機交互部分不可能挽救一個雖然一個好的人機交互部分不可能挽救一個功能很差的軟件功能很差的軟件, , 但性能很差的人機交互部但性能很差的人機交互部分將會使一個功能很強的產(chǎn)品變得不可接受分將會使一個功能很強的產(chǎn)品變得不可接受! ! 在需求分析階段,通過用例模型已描述了用在需求分析階段,通過用例模型已描述了用戶和系統(tǒng)的交互情況,其中確定了人機交互戶和系統(tǒng)的交互情況,其中確定了人機交互的屬性和外部服務(wù);進入設(shè)計階段應(yīng)以此為的屬性和外部服務(wù);進入設(shè)計階段應(yīng)以此為基礎(chǔ),給出有關(guān)人機交互的所有系統(tǒng)成分(基礎(chǔ),給出有關(guān)人機交互的所有系統(tǒng)成分(用戶如何操
46、作系統(tǒng)、系統(tǒng)如何響應(yīng)命令、系用戶如何操作系統(tǒng)、系統(tǒng)如何響應(yīng)命令、系統(tǒng)顯示的信息和報表格式等)。統(tǒng)顯示的信息和報表格式等)。56 要設(shè)計一個用戶滿意的人機交互界面,應(yīng):要設(shè)計一個用戶滿意的人機交互界面,應(yīng): 分類(可按技術(shù)熟練程度、工作性質(zhì)、訪問權(quán)限等分類(可按技術(shù)熟練程度、工作性質(zhì)、訪問權(quán)限等分類)分析用戶特點,設(shè)計不同界面。通常先在分分類)分析用戶特點,設(shè)計不同界面。通常先在分析用戶特點的基礎(chǔ)上,確定出初步的命令系統(tǒng)(菜析用戶特點的基礎(chǔ)上,確定出初步的命令系統(tǒng)(菜單方式或按鈕方式),然后再進行優(yōu)化(考慮命令單方式或按鈕方式),然后再進行優(yōu)化(考慮命令順序;根據(jù)外部服務(wù)之間的聚合關(guān)系組織相應(yīng)的
47、命順序;根據(jù)外部服務(wù)之間的聚合關(guān)系組織相應(yīng)的命令;充分考慮人類記憶的局限性等)。令;充分考慮人類記憶的局限性等)。 增加用戶界面專用的類與對象,這與所選用的圖形增加用戶界面專用的類與對象,這與所選用的圖形界面有關(guān)。具體的處理思想是:先利用類結(jié)構(gòu)圖描界面有關(guān)。具體的處理思想是:先利用類結(jié)構(gòu)圖描述出各窗口及其分量的關(guān)系;然后為每個窗口定義述出各窗口及其分量的關(guān)系;然后為每個窗口定義菜單條、下拉菜單、彈出式菜單、相關(guān)的操作和應(yīng)菜單條、下拉菜單、彈出式菜單、相關(guān)的操作和應(yīng)顯示的信息等內(nèi)容。顯示的信息等內(nèi)容。 利用快速原形演示,改進界面設(shè)計。利用快速原形演示,改進界面設(shè)計。576 6、任務(wù)管理設(shè)計、任務(wù)
48、管理設(shè)計 在在OODOOD中引進任務(wù)管理部分的原因是:當(dāng)中引進任務(wù)管理部分的原因是:當(dāng)系統(tǒng)中有許多并發(fā)行為時,需要按照各個行系統(tǒng)中有許多并發(fā)行為時,需要按照各個行為的協(xié)調(diào)和通信關(guān)系,劃分各種任務(wù)為的協(xié)調(diào)和通信關(guān)系,劃分各種任務(wù)( (進程進程) ),以簡化并發(fā)行為的設(shè)計和編碼。,以簡化并發(fā)行為的設(shè)計和編碼。 設(shè)計管理并發(fā)任務(wù)對象的策略是:確定任務(wù)設(shè)計管理并發(fā)任務(wù)對象的策略是:確定任務(wù)特征(從理解任務(wù)是如何被激活開始,分析特征(從理解任務(wù)是如何被激活開始,分析任務(wù)是事件驅(qū)動的,還是時鐘驅(qū)動的);定任務(wù)是事件驅(qū)動的,還是時鐘驅(qū)動的);定義一個協(xié)調(diào)者任務(wù)和與之關(guān)聯(lián)的對象;集成義一個協(xié)調(diào)者任務(wù)和與之關(guān)聯(lián)
49、的對象;集成其它任務(wù)和協(xié)調(diào)者。其它任務(wù)和協(xié)調(diào)者。 設(shè)計任務(wù)管理部分的一般步驟和過程為:設(shè)計任務(wù)管理部分的一般步驟和過程為:識別事件驅(qū)動任務(wù)(通常完成通信工作,其工作識別事件驅(qū)動任務(wù)(通常完成通信工作,其工作流程為:處于睡眠狀態(tài),等待事件;接到事件觸流程為:處于睡眠狀態(tài),等待事件;接到事件觸發(fā)的中斷被喚醒,接收數(shù)據(jù)并執(zhí)行相應(yīng)的操作;發(fā)的中斷被喚醒,接收數(shù)據(jù)并執(zhí)行相應(yīng)的操作;重新回到睡眠狀態(tài))和時鐘驅(qū)動任務(wù)(按一定時重新回到睡眠狀態(tài))和時鐘驅(qū)動任務(wù)(按一定時間周期激活的任務(wù))。間周期激活的任務(wù))。識別關(guān)鍵性任務(wù)(對整個系統(tǒng)起重要作用的任務(wù)識別關(guān)鍵性任務(wù)(對整個系統(tǒng)起重要作用的任務(wù)、要求可靠性較高)
50、、任務(wù)優(yōu)先級(以保證緊急、要求可靠性較高)、任務(wù)優(yōu)先級(以保證緊急事件能在限定的時間內(nèi)得到處理)以及任務(wù)管理事件能在限定的時間內(nèi)得到處理)以及任務(wù)管理類(專門用于管理和協(xié)調(diào)其它任務(wù)的任務(wù))。類(專門用于管理和協(xié)調(diào)其它任務(wù)的任務(wù))。定義每個任務(wù)(名稱、功能、優(yōu)先級、協(xié)同方式定義每個任務(wù)(名稱、功能、優(yōu)先級、協(xié)同方式、通信方式等)。、通信方式等)。必要時應(yīng)在必要時應(yīng)在OODOOD中擴充有關(guān)任務(wù)的類及對象,調(diào)中擴充有關(guān)任務(wù)的類及對象,調(diào)整原有的語法成分,以適應(yīng)任務(wù)定義的要求。整原有的語法成分,以適應(yīng)任務(wù)定義的要求。59 對傳感器任務(wù)可給出如下的描述:對傳感器任務(wù)可給出如下的描述: 任務(wù)名字:任務(wù)名字
51、: 傳感器讀出。傳感器讀出。 任務(wù)描述:任務(wù)描述: 該任務(wù)在需要脈沖調(diào)幅時負(fù)責(zé)讀出傳感器。該任務(wù)在需要脈沖調(diào)幅時負(fù)責(zé)讀出傳感器。 包含:包含: 傳感器,樣本。傳感器,樣本。 任務(wù)優(yōu)先級任務(wù)優(yōu)先級: :中等。中等。 協(xié)調(diào)方式:協(xié)調(diào)方式:時鐘驅(qū)動,時鐘驅(qū)動,100ms的時間間隔。的時間間隔。 通信方式:通信方式: 從輸入線(傳感器)得到值,給雷達郵箱發(fā)從輸入線(傳感器)得到值,給雷達郵箱發(fā)送值。送值。607 7、數(shù)據(jù)管理設(shè)計、數(shù)據(jù)管理設(shè)計 應(yīng)用系統(tǒng)都會涉及到對象數(shù)據(jù)的存儲和檢索應(yīng)用系統(tǒng)都會涉及到對象數(shù)據(jù)的存儲和檢索問題,這通常通過數(shù)據(jù)管理構(gòu)件來完成。數(shù)問題,這通常通過數(shù)據(jù)管理構(gòu)件來完成。數(shù)據(jù)管理構(gòu)
52、件的作用是將目標(biāo)系統(tǒng)中依賴開發(fā)據(jù)管理構(gòu)件的作用是將目標(biāo)系統(tǒng)中依賴開發(fā)平臺的數(shù)據(jù)存取部分與其它功能分離,使數(shù)平臺的數(shù)據(jù)存取部分與其它功能分離,使數(shù)據(jù)管理可通過一般的數(shù)據(jù)管理系統(tǒng)(普通文據(jù)管理可通過一般的數(shù)據(jù)管理系統(tǒng)(普通文件、關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫等)實件、關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫等)實現(xiàn)?,F(xiàn)。 數(shù)據(jù)管理構(gòu)件的設(shè)計主要包括:數(shù)據(jù)管理構(gòu)件的設(shè)計主要包括:定義數(shù)據(jù)格式定義數(shù)據(jù)格式設(shè)計相應(yīng)的操作設(shè)計相應(yīng)的操作617.3 對象設(shè)計對象設(shè)計 對象設(shè)計層次著重于對象及其相互交互的描述,在對象設(shè)計層次著重于對象及其相互交互的描述,在該層次上應(yīng)創(chuàng)建屬性數(shù)據(jù)結(jié)構(gòu)和所有操作的過程的該層次上應(yīng)創(chuàng)建屬性數(shù)據(jù)結(jié)
53、構(gòu)和所有操作的過程的詳細規(guī)約;定義所有屬性的可見性(公共的、私有詳細規(guī)約;定義所有屬性的可見性(公共的、私有的或保護的),同時要精化對象間的接口以定義完的或保護的),同時要精化對象間的接口以定義完整的消息模型的細節(jié)。整的消息模型的細節(jié)。 在對象設(shè)計過程中,要將分析模型轉(zhuǎn)換為設(shè)計模型在對象設(shè)計過程中,要將分析模型轉(zhuǎn)換為設(shè)計模型,其對應(yīng)關(guān)系如下圖所示。,其對應(yīng)關(guān)系如下圖所示。分析模型分析模型 類類 屬性屬性 方法方法 關(guān)系關(guān)系 行為行為 設(shè)計模型設(shè)計模型 對象對象 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 算法算法 消息傳遞消息傳遞 控制控制621、對象描述、對象描述 OOD階段的對象描述是以階段的對象描述是以O(shè)OA階段
54、的對象模型階段的對象模型為基礎(chǔ)的,它從對象間的接口(消息)入手,為基礎(chǔ)的,它從對象間的接口(消息)入手,從實現(xiàn)的角度詳細描述了對象的各個方面。從實現(xiàn)的角度詳細描述了對象的各個方面。 對象的設(shè)計描述包括協(xié)議描述(為對象提供了對象的設(shè)計描述包括協(xié)議描述(為對象提供了接口,是其它對象調(diào)用該對象的基礎(chǔ))和實現(xiàn)接口,是其它對象調(diào)用該對象的基礎(chǔ))和實現(xiàn)描述(提供了對象內(nèi)部的實現(xiàn)細節(jié),是實現(xiàn)對描述(提供了對象內(nèi)部的實現(xiàn)細節(jié),是實現(xiàn)對象所必須具備的)。象所必須具備的)。、協(xié)議描述(、協(xié)議描述(protocol):通過定義對象可以):通過定義對象可以接收的每個消息和當(dāng)對象接收到消息后所完成接收的每個消息和當(dāng)對象
55、接收到消息后所完成的相關(guān)操作來建立對象的接口。實際上,協(xié)議的相關(guān)操作來建立對象的接口。實際上,協(xié)議描述僅僅是一組消息和對消息的注釋。描述僅僅是一組消息和對消息的注釋。63 例如:例如:PLC計數(shù)器(計數(shù)器(PLC_counter)是顯像管)是顯像管生產(chǎn)監(jiān)測系統(tǒng)中數(shù)據(jù)采集子系統(tǒng)內(nèi)的一個對生產(chǎn)監(jiān)測系統(tǒng)中數(shù)據(jù)采集子系統(tǒng)內(nèi)的一個對象,請用協(xié)議描述說明其接口。象,請用協(xié)議描述說明其接口。 因為因為PLC計數(shù)器可能接收計數(shù)器可能接收3種消息(種消息(“清零復(fù)清零復(fù)位位”消息消息Reset、“計數(shù)加計數(shù)加1”消息消息Increment和和“傳送數(shù)值傳送數(shù)值”消息消息Sendnum),因而可給),因而可給出如
56、下的協(xié)議描述:出如下的協(xié)議描述: MESSAGE( PLC_counter ) Reset: SETS counter number; MESSAGE( PLC_counter ) Increment: CALCULATES counter number; MESSAGE( PLC_counter ) Sendnum: SENDS counter number;2、實現(xiàn)描述(、實現(xiàn)描述(protocol):):是對對象接收到某個消息后是對對象接收到某個消息后所執(zhí)行的操作的實現(xiàn)細節(jié)的描述,主要包括:類對象所執(zhí)行的操作的實現(xiàn)細節(jié)的描述,主要包括:類對象的名字的定義;私有數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)項和類型的定義
57、的名字的定義;私有數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)項和類型的定義;每個操作的過程描述或指向這樣的過程描述的指針;每個操作的過程描述或指向這樣的過程描述的指針。 例如:對于對象例如:對于對象PLC計數(shù)器(計數(shù)器(PLC_counter)可給出如)可給出如下的實現(xiàn)描述:下的實現(xiàn)描述: 對象名:對象名: PLC_counter 類名:類名: Class PLC_counter 私有數(shù)據(jù)結(jié)構(gòu):私有數(shù)據(jù)結(jié)構(gòu):ID:string; /PLC計數(shù)器編號計數(shù)器編號 Controller:*CM; /受哪個工控機控制受哪個工控機控制 PC_ID :string; /受計數(shù)的工序編號受計數(shù)的工序編號 TC_ID :string;
58、/計數(shù)的指標(biāo)計數(shù)的指標(biāo) Counter_number:integer; /計數(shù)值計數(shù)值65663、算法設(shè)計、算法設(shè)計 OOD的算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計與傳統(tǒng)軟件工程的算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計與傳統(tǒng)軟件工程的數(shù)據(jù)設(shè)計和過程設(shè)計并不完全相同,其數(shù)的數(shù)據(jù)設(shè)計和過程設(shè)計并不完全相同,其數(shù)據(jù)結(jié)構(gòu)設(shè)計和算法設(shè)計應(yīng)并行進行。據(jù)結(jié)構(gòu)設(shè)計和算法設(shè)計應(yīng)并行進行。 設(shè)計算法的常用方法是:用面向?qū)ο髠未a設(shè)計算法的常用方法是:用面向?qū)ο髠未a描述系統(tǒng)中每個操作的算法。其中傳送消息描述系統(tǒng)中每個操作的算法。其中傳送消息的語法表示為:接收者對象、方法、參數(shù);的語法表示為:接收者對象、方法、參數(shù);數(shù)據(jù)結(jié)構(gòu)的表示為:數(shù)據(jù)項:數(shù)據(jù)類型。數(shù)
59、據(jù)結(jié)構(gòu)的表示為:數(shù)據(jù)項:數(shù)據(jù)類型。 系統(tǒng)中的類可分為:系統(tǒng)中的類可分為: 以某種方式操縱數(shù)據(jù)的操作(加入、刪除、重以某種方式操縱數(shù)據(jù)的操作(加入、刪除、重格式化、選擇等);格式化、選擇等); 執(zhí)行計算的操作;執(zhí)行計算的操作; 為控制事件的出現(xiàn)而監(jiān)控對象的操作。為控制事件的出現(xiàn)而監(jiān)控對象的操作。67 創(chuàng)建了基本對象模型后,應(yīng)該對其進行創(chuàng)建了基本對象模型后,應(yīng)該對其進行優(yōu)化。優(yōu)化。OOD優(yōu)化主要從如下幾個方面進優(yōu)化主要從如下幾個方面進行:行: 復(fù)審對象復(fù)審對象-關(guān)系模型。以保證已實現(xiàn)的關(guān)系模型。以保證已實現(xiàn)的設(shè)計對資源使用高效而且容易實現(xiàn);設(shè)計對資源使用高效而且容易實現(xiàn); 優(yōu)化屬性數(shù)據(jù)結(jié)構(gòu)和對應(yīng)的
60、操作算法優(yōu)化屬性數(shù)據(jù)結(jié)構(gòu)和對應(yīng)的操作算法,以提高處理效率;,以提高處理效率; 創(chuàng)建新的屬性,以存放導(dǎo)出的信息,創(chuàng)建新的屬性,以存放導(dǎo)出的信息,應(yīng)避免重復(fù)計算。應(yīng)避免重復(fù)計算。684、領(lǐng)域?qū)ο笤O(shè)計、領(lǐng)域?qū)ο笤O(shè)計 在同一應(yīng)用領(lǐng)域的不同應(yīng)用系統(tǒng)中,通常會在同一應(yīng)用領(lǐng)域的不同應(yīng)用系統(tǒng)中,通常會存在一些共享的類存在一些共享的類/對象,它們是實現(xiàn)軟件復(fù)對象,它們是實現(xiàn)軟件復(fù)用的基礎(chǔ)。用的基礎(chǔ)。OOA階段所建立階段所建立的領(lǐng)域模型是領(lǐng)的領(lǐng)域模型是領(lǐng)域設(shè)計的前提,進入域設(shè)計的前提,進入OODOOD階段應(yīng)從實現(xiàn)的角度階段應(yīng)從實現(xiàn)的角度對其進行補充或修改,例如增添、合并或分對其進行補充或修改,例如增添、合并或分解
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度財務(wù)目標(biāo)達成計劃
- 廣告行業(yè)前臺工作總結(jié)
- IT行業(yè)安全管理工作總結(jié)
- 礦產(chǎn)資源行業(yè)會計的關(guān)鍵職責(zé)
- 醫(yī)學(xué)美容護士工作心得
- 2024年認(rèn)識小熊教案
- 2024年牧場之國教案
- 2024年計算機教室管理制度
- 分銷合同范本(2篇)
- 辦公室合同范本(2篇)
- 足球教練員素質(zhì)和角色
- 初中八年級語文課件 桃花源記【省一等獎】
- 名校長工作總結(jié)匯報
- 商務(wù)接待禮儀流程
- 護理不良事件用藥錯誤講課
- 新教材人教版高中英語選擇性必修第一冊全冊教學(xué)設(shè)計
- 2024北京大興區(qū)初三(上)期末化學(xué)試卷及答案
- 媒體與新聞法律法規(guī)法律意識與職業(yè)素養(yǎng)
- 推土機-推土機構(gòu)造與原理
- 九年級化學(xué)課程綱要
- 國家開放大學(xué)2023年7月期末統(tǒng)一試《22064管理學(xué)基礎(chǔ)》試題及答案-開放???/a>
評論
0/150
提交評論