面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則ppt課件_第1頁
面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則ppt課件_第2頁
面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則ppt課件_第3頁
面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則ppt課件_第4頁
面向?qū)ο蟮脑O(shè)計(jì)準(zhǔn)則ppt課件_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第11章 面向?qū)ο笤O(shè)計(jì) (OOD)11.1 面向?qū)ο笤O(shè)計(jì)的準(zhǔn)那么面向?qū)ο笤O(shè)計(jì)的準(zhǔn)那么11.2 啟發(fā)規(guī)那么啟發(fā)規(guī)那么11.3 軟件重用軟件重用11.4 系統(tǒng)分解系統(tǒng)分解11.5 設(shè)計(jì)問題域子系統(tǒng)設(shè)計(jì)問題域子系統(tǒng)11.6 設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)11.7 設(shè)計(jì)義務(wù)管理子系統(tǒng)設(shè)計(jì)義務(wù)管理子系統(tǒng)11.8 設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)11.9 設(shè)計(jì)類中的效力設(shè)計(jì)類中的效力11.10 設(shè)計(jì)關(guān)聯(lián)設(shè)計(jì)關(guān)聯(lián)11.11 設(shè)計(jì)優(yōu)化設(shè)計(jì)優(yōu)化分析是提取和整理用戶需求,并建立問題域準(zhǔn)確分析是提取和整理用戶需求,并建立問題域準(zhǔn)確模型的過程。模型的過程。設(shè)計(jì)是把分析階段得到的需求轉(zhuǎn)變成符合本錢和設(shè)計(jì)是把分

2、析階段得到的需求轉(zhuǎn)變成符合本錢和質(zhì)量要求的、籠統(tǒng)的系統(tǒng)實(shí)現(xiàn)方案的過程。質(zhì)量要求的、籠統(tǒng)的系統(tǒng)實(shí)現(xiàn)方案的過程。從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(jì)從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(jì)(OOD),是一個(gè),是一個(gè)逐漸擴(kuò)展模型的過程。面向?qū)ο笤O(shè)計(jì)就是用面向逐漸擴(kuò)展模型的過程。面向?qū)ο笤O(shè)計(jì)就是用面向?qū)ο笥^念建立求解域模型的過程。對(duì)象觀念建立求解域模型的過程。分析和設(shè)計(jì)活動(dòng)是一個(gè)多次反復(fù)迭代的過程。面分析和設(shè)計(jì)活動(dòng)是一個(gè)多次反復(fù)迭代的過程。面向?qū)ο蠓椒▽W(xué)在概念和表示方法上的一致性,保向?qū)ο蠓椒▽W(xué)在概念和表示方法上的一致性,保證了在各項(xiàng)開發(fā)活動(dòng)之間的平滑證了在各項(xiàng)開發(fā)活動(dòng)之間的平滑(無縫無縫)過渡。過渡。面向?qū)ο笤O(shè)計(jì)可再細(xì)

3、分為系統(tǒng)設(shè)計(jì)和對(duì)象設(shè)計(jì)。面向?qū)ο笤O(shè)計(jì)可再細(xì)分為系統(tǒng)設(shè)計(jì)和對(duì)象設(shè)計(jì)。系統(tǒng)設(shè)計(jì)確定實(shí)現(xiàn)系統(tǒng)的戰(zhàn)略和目的系統(tǒng)的高層系統(tǒng)設(shè)計(jì)確定實(shí)現(xiàn)系統(tǒng)的戰(zhàn)略和目的系統(tǒng)的高層構(gòu)造。對(duì)象設(shè)計(jì)確定解空間中的類、關(guān)聯(lián)、接口構(gòu)造。對(duì)象設(shè)計(jì)確定解空間中的類、關(guān)聯(lián)、接口方式及實(shí)現(xiàn)效力的算法。方式及實(shí)現(xiàn)效力的算法。優(yōu)秀的設(shè)計(jì),是權(quán)衡了各種要素,從而使得系統(tǒng)在優(yōu)秀的設(shè)計(jì),是權(quán)衡了各種要素,從而使得系統(tǒng)在其整個(gè)生命周期中的總開銷最小的設(shè)計(jì)。其整個(gè)生命周期中的總開銷最小的設(shè)計(jì)。對(duì)大多數(shù)軟件系統(tǒng)而言,對(duì)大多數(shù)軟件系統(tǒng)而言,60%以上的軟件費(fèi)用都用以上的軟件費(fèi)用都用于軟件維護(hù),因此,優(yōu)秀軟件設(shè)計(jì)的一個(gè)主要特點(diǎn)于軟件維護(hù),因此,優(yōu)秀軟件設(shè)計(jì)的

4、一個(gè)主要特點(diǎn)就是容易維護(hù)。就是容易維護(hù)。11.1 面向?qū)ο笤O(shè)計(jì)的準(zhǔn)那么面向?qū)ο笤O(shè)計(jì)的準(zhǔn)那么面向?qū)ο笤O(shè)計(jì)準(zhǔn)那么面向?qū)ο笤O(shè)計(jì)準(zhǔn)那么1. 模塊化模塊化對(duì)象是把數(shù)據(jù)構(gòu)造和操作這些數(shù)據(jù)的方法嚴(yán)密地結(jié)合在一對(duì)象是把數(shù)據(jù)構(gòu)造和操作這些數(shù)據(jù)的方法嚴(yán)密地結(jié)合在一同所構(gòu)成的模塊。面向?qū)ο筌浖_發(fā)方式支持了把系統(tǒng)分同所構(gòu)成的模塊。面向?qū)ο筌浖_發(fā)方式支持了把系統(tǒng)分解成模塊的設(shè)計(jì)原理:解成模塊的設(shè)計(jì)原理:2. 籠統(tǒng)籠統(tǒng)過程籠統(tǒng)過程籠統(tǒng)數(shù)據(jù)籠統(tǒng)。類實(shí)踐上是一種籠統(tǒng)數(shù)據(jù)類型,它對(duì)外開放的數(shù)據(jù)籠統(tǒng)。類實(shí)踐上是一種籠統(tǒng)數(shù)據(jù)類型,它對(duì)外開放的公共接口構(gòu)成了類的規(guī)格闡明公共接口構(gòu)成了類的規(guī)格闡明(即協(xié)議即協(xié)議),這種接口規(guī)定了,

5、這種接口規(guī)定了外界可以運(yùn)用的合法操作符,利用這些操作符可以對(duì)類實(shí)外界可以運(yùn)用的合法操作符,利用這些操作符可以對(duì)類實(shí)例中包含的數(shù)據(jù)進(jìn)展操作。例中包含的數(shù)據(jù)進(jìn)展操作。參數(shù)化籠統(tǒng),是指當(dāng)描畫類的規(guī)格闡明時(shí)并不詳細(xì)指定所參數(shù)化籠統(tǒng),是指當(dāng)描畫類的規(guī)格闡明時(shí)并不詳細(xì)指定所要操作的數(shù)據(jù)類型,而是把數(shù)據(jù)類型作為參數(shù)。例如,要操作的數(shù)據(jù)類型,而是把數(shù)據(jù)類型作為參數(shù)。例如,C+言語提供的言語提供的“模板機(jī)制就是一種參數(shù)化籠統(tǒng)機(jī)制。模板機(jī)制就是一種參數(shù)化籠統(tǒng)機(jī)制。3. 信息隱藏信息隱藏在面向?qū)ο蠓椒ㄖ校畔㈦[藏經(jīng)過對(duì)象的封裝性實(shí)現(xiàn):類在面向?qū)ο蠓椒ㄖ校畔㈦[藏經(jīng)過對(duì)象的封裝性實(shí)現(xiàn):類構(gòu)造分別了接口與實(shí)現(xiàn),從而支持

6、了信息隱藏。構(gòu)造分別了接口與實(shí)現(xiàn),從而支持了信息隱藏。4. 弱耦合弱耦合耦合指一個(gè)軟件構(gòu)造內(nèi)不同模塊之間互連的嚴(yán)密程度。在耦合指一個(gè)軟件構(gòu)造內(nèi)不同模塊之間互連的嚴(yán)密程度。在面向?qū)ο蠓椒ㄖ校瑢?duì)象是最根本的模塊,因此,耦合主要面向?qū)ο蠓椒ㄖ?,?duì)象是最根本的模塊,因此,耦合主要指不同對(duì)象之間相互關(guān)聯(lián)的嚴(yán)密程度。指不同對(duì)象之間相互關(guān)聯(lián)的嚴(yán)密程度。弱耦合是優(yōu)秀設(shè)計(jì)的一個(gè)重要規(guī)范,由于這有助于使得系弱耦合是優(yōu)秀設(shè)計(jì)的一個(gè)重要規(guī)范,由于這有助于使得系統(tǒng)中某一部分的變化對(duì)其他部分的影響降到最低程度。在統(tǒng)中某一部分的變化對(duì)其他部分的影響降到最低程度。在理想情況下,對(duì)某一部分的了解、測(cè)試或修正,無須涉及理想情況下

7、,對(duì)某一部分的了解、測(cè)試或修正,無須涉及系統(tǒng)的其他部分。系統(tǒng)的其他部分。當(dāng)然,對(duì)象不能夠是完全孤立的,當(dāng)兩個(gè)對(duì)象必需相互聯(lián)當(dāng)然,對(duì)象不能夠是完全孤立的,當(dāng)兩個(gè)對(duì)象必需相互聯(lián)絡(luò)相互依賴時(shí),應(yīng)該經(jīng)過類的協(xié)議絡(luò)相互依賴時(shí),應(yīng)該經(jīng)過類的協(xié)議(即公共接口即公共接口)實(shí)現(xiàn)耦合,實(shí)現(xiàn)耦合,而不應(yīng)該依賴于類的詳細(xì)實(shí)現(xiàn)細(xì)節(jié)。而不應(yīng)該依賴于類的詳細(xì)實(shí)現(xiàn)細(xì)節(jié)。普通說來,對(duì)象之間的耦合可分為兩大類:普通說來,對(duì)象之間的耦合可分為兩大類:(1) 交互耦合交互耦合 盡能夠松散盡能夠松散交互耦合交互耦合 對(duì)象之間的耦合經(jīng)過音訊銜接來實(shí)現(xiàn)。對(duì)象之間的耦合經(jīng)過音訊銜接來實(shí)現(xiàn)。為使交互耦合盡能夠松散,應(yīng)該遵守下述準(zhǔn)那么:為使交互

8、耦合盡能夠松散,應(yīng)該遵守下述準(zhǔn)那么:a) 盡量降低音訊銜接的復(fù)雜程度。應(yīng)該盡量減少音訊中包盡量降低音訊銜接的復(fù)雜程度。應(yīng)該盡量減少音訊中包含的參數(shù)個(gè)數(shù),降低參數(shù)的復(fù)雜程度。含的參數(shù)個(gè)數(shù),降低參數(shù)的復(fù)雜程度。b) 減少對(duì)象發(fā)送減少對(duì)象發(fā)送(或接納或接納)的音訊數(shù)。的音訊數(shù)。(2) 承繼耦合承繼耦合 盡能夠嚴(yán)密盡能夠嚴(yán)密承繼是普通化類與特殊類之間耦合的一種方式,應(yīng)該提高承繼是普通化類與特殊類之間耦合的一種方式,應(yīng)該提高承繼耦合程度。從本質(zhì)上看,經(jīng)過承繼關(guān)系結(jié)合起來的基承繼耦合程度。從本質(zhì)上看,經(jīng)過承繼關(guān)系結(jié)合起來的基類和派生類,構(gòu)成了系統(tǒng)中粒度更大的模塊。因此,它們類和派生類,構(gòu)成了系統(tǒng)中粒度更大

9、的模塊。因此,它們彼此之間應(yīng)該結(jié)合得越嚴(yán)密越好。彼此之間應(yīng)該結(jié)合得越嚴(yán)密越好。為獲得嚴(yán)密的承繼耦合,特殊類應(yīng)該確實(shí)是對(duì)它的普通化為獲得嚴(yán)密的承繼耦合,特殊類應(yīng)該確實(shí)是對(duì)它的普通化類的一種詳細(xì)化。因此,假設(shè)一個(gè)派生類摒棄了它基類的類的一種詳細(xì)化。因此,假設(shè)一個(gè)派生類摒棄了它基類的許多屬性,那么它們之間是松耦合的。在設(shè)計(jì)時(shí)應(yīng)該使特許多屬性,那么它們之間是松耦合的。在設(shè)計(jì)時(shí)應(yīng)該使特殊類盡量多承繼并運(yùn)用其普通化類的屬性和效力,從而更殊類盡量多承繼并運(yùn)用其普通化類的屬性和效力,從而更嚴(yán)密地耦合到其普通化類。嚴(yán)密地耦合到其普通化類。5. 強(qiáng)內(nèi)聚強(qiáng)內(nèi)聚內(nèi)聚衡量一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的嚴(yán)密程度。也可內(nèi)聚衡

10、量一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的嚴(yán)密程度。也可以把內(nèi)聚定義為:設(shè)計(jì)中運(yùn)用的一個(gè)構(gòu)件內(nèi)的各個(gè)元素,以把內(nèi)聚定義為:設(shè)計(jì)中運(yùn)用的一個(gè)構(gòu)件內(nèi)的各個(gè)元素,對(duì)完成一個(gè)定義明確的目的所做出的奉獻(xiàn)程度。在設(shè)計(jì)時(shí)對(duì)完成一個(gè)定義明確的目的所做出的奉獻(xiàn)程度。在設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚。在面向?qū)ο笤O(shè)計(jì)中存在下述應(yīng)該力求做到高內(nèi)聚。在面向?qū)ο笤O(shè)計(jì)中存在下述3種內(nèi)聚。種內(nèi)聚。1 效力內(nèi)聚。一個(gè)效力應(yīng)該完成一個(gè)且僅完成一個(gè)功能。效力內(nèi)聚。一個(gè)效力應(yīng)該完成一個(gè)且僅完成一個(gè)功能。2 類內(nèi)聚。設(shè)計(jì)類的原那么是,一個(gè)類應(yīng)該只需一個(gè)用類內(nèi)聚。設(shè)計(jì)類的原那么是,一個(gè)類應(yīng)該只需一個(gè)用途,它的屬性和效力應(yīng)該是高內(nèi)聚的。類的屬性和效力應(yīng)途,

11、它的屬性和效力應(yīng)該是高內(nèi)聚的。類的屬性和效力應(yīng)該全都是完成該類對(duì)象的義務(wù)所必需的,其中不包含無用該全都是完成該類對(duì)象的義務(wù)所必需的,其中不包含無用的屬性或效力。假設(shè)某個(gè)類有多個(gè)用途,通常應(yīng)該把它分的屬性或效力。假設(shè)某個(gè)類有多個(gè)用途,通常應(yīng)該把它分解成多個(gè)公用的類。解成多個(gè)公用的類。3 普通普通-特殊內(nèi)聚。設(shè)計(jì)出的普通特殊內(nèi)聚。設(shè)計(jì)出的普通-特殊構(gòu)造,應(yīng)該符合特殊構(gòu)造,應(yīng)該符合多數(shù)人的概念,更準(zhǔn)確地說,這種構(gòu)造應(yīng)該是對(duì)相應(yīng)的領(lǐng)多數(shù)人的概念,更準(zhǔn)確地說,這種構(gòu)造應(yīng)該是對(duì)相應(yīng)的領(lǐng)域知識(shí)的正確抽取。域知識(shí)的正確抽取。嚴(yán)密的承繼耦合與高度的普通嚴(yán)密的承繼耦合與高度的普通-特殊內(nèi)聚是一致的。特殊內(nèi)聚是一致

12、的。6. 可重用可重用軟件重用是提高軟件開發(fā)消費(fèi)率和目的系統(tǒng)質(zhì)量的軟件重用是提高軟件開發(fā)消費(fèi)率和目的系統(tǒng)質(zhì)量的重要途徑。重用根本上從設(shè)計(jì)階段開場(chǎng)。重要途徑。重用根本上從設(shè)計(jì)階段開場(chǎng)。重用有兩方面的含義:重用有兩方面的含義: 一是盡量運(yùn)用已有的類一是盡量運(yùn)用已有的類(包括開發(fā)環(huán)境提供的類庫,包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時(shí)創(chuàng)建的類及以往開發(fā)類似系統(tǒng)時(shí)創(chuàng)建的類);二是假設(shè)確實(shí)需求創(chuàng)建新類,那么在設(shè)計(jì)這些新類二是假設(shè)確實(shí)需求創(chuàng)建新類,那么在設(shè)計(jì)這些新類的協(xié)議時(shí),應(yīng)該思索未來的可反復(fù)運(yùn)用性。的協(xié)議時(shí),應(yīng)該思索未來的可反復(fù)運(yùn)用性。設(shè)計(jì)結(jié)果應(yīng)該明晰易懂設(shè)計(jì)結(jié)果應(yīng)該明晰易懂1 用詞一致。應(yīng)該使名

13、字與它所代表的事物一致,用詞一致。應(yīng)該使名字與它所代表的事物一致,而且應(yīng)該盡量運(yùn)用人們習(xí)慣的名字。不同類中類似效而且應(yīng)該盡量運(yùn)用人們習(xí)慣的名字。不同類中類似效力的名字應(yīng)該一樣。力的名字應(yīng)該一樣。2 運(yùn)用已有的協(xié)議。假設(shè)開發(fā)同一軟件的其他設(shè)計(jì)運(yùn)用已有的協(xié)議。假設(shè)開發(fā)同一軟件的其他設(shè)計(jì)人員曾經(jīng)建立了類的協(xié)議,或者在所運(yùn)用的類庫中已人員曾經(jīng)建立了類的協(xié)議,或者在所運(yùn)用的類庫中已有相應(yīng)的協(xié)議,那么應(yīng)該運(yùn)用這些已有的協(xié)議。有相應(yīng)的協(xié)議,那么應(yīng)該運(yùn)用這些已有的協(xié)議。3 減少音訊方式的數(shù)目。假設(shè)已有規(guī)范的音訊協(xié)議,減少音訊方式的數(shù)目。假設(shè)已有規(guī)范的音訊協(xié)議,設(shè)計(jì)人員應(yīng)該遵守這些協(xié)議。假設(shè)確需本人建立音訊設(shè)計(jì)

14、人員應(yīng)該遵守這些協(xié)議。假設(shè)確需本人建立音訊協(xié)議,那么應(yīng)該盡量減少音訊方式的數(shù)目,只需能夠,協(xié)議,那么應(yīng)該盡量減少音訊方式的數(shù)目,只需能夠,就使音訊具有一致的方式,以利于讀者了解。就使音訊具有一致的方式,以利于讀者了解。4 防止模糊的定義。一個(gè)類的用途應(yīng)該是有限的,防止模糊的定義。一個(gè)類的用途應(yīng)該是有限的,而且應(yīng)該從類名可以較容易地推想出它的用途。而且應(yīng)該從類名可以較容易地推想出它的用途。11.2 啟發(fā)規(guī)那么啟發(fā)規(guī)那么2. 普通普通-特殊構(gòu)造的深度應(yīng)適當(dāng)特殊構(gòu)造的深度應(yīng)適當(dāng)普通說來,在一個(gè)中等規(guī)模普通說來,在一個(gè)中等規(guī)模(大約包含大約包含100個(gè)類個(gè)類)的系的系統(tǒng)中,類等級(jí)層次數(shù)應(yīng)堅(jiān)持為統(tǒng)中,類

15、等級(jí)層次數(shù)應(yīng)堅(jiān)持為72。不應(yīng)該僅僅從方。不應(yīng)該僅僅從方便編碼的角度出發(fā)隨意創(chuàng)建派生類,應(yīng)該使普通便編碼的角度出發(fā)隨意創(chuàng)建派生類,應(yīng)該使普通-特特殊構(gòu)造與領(lǐng)域知識(shí)或常識(shí)堅(jiān)持一致。殊構(gòu)造與領(lǐng)域知識(shí)或常識(shí)堅(jiān)持一致。3. 設(shè)計(jì)簡單的類設(shè)計(jì)簡單的類應(yīng)該盡量設(shè)計(jì)小而簡單的類,以便于開發(fā)和管理。為應(yīng)該盡量設(shè)計(jì)小而簡單的類,以便于開發(fā)和管理。為使類堅(jiān)持簡單,應(yīng)該留意以下幾點(diǎn)。使類堅(jiān)持簡單,應(yīng)該留意以下幾點(diǎn)。(1) 防止包含過多的屬性。防止包含過多的屬性。 (2) 有明確的定義。分配給每個(gè)類的義務(wù)應(yīng)該簡單。有明確的定義。分配給每個(gè)類的義務(wù)應(yīng)該簡單。(3) 盡量簡化對(duì)象之間的協(xié)作關(guān)系。盡量簡化對(duì)象之間的協(xié)作關(guān)系。

16、 (4) 不要提供太多效力。不要提供太多效力。4. 運(yùn)用簡單的協(xié)議運(yùn)用簡單的協(xié)議閱歷闡明,經(jīng)過復(fù)雜音訊相互關(guān)聯(lián)的對(duì)象是緊耦合的,閱歷闡明,經(jīng)過復(fù)雜音訊相互關(guān)聯(lián)的對(duì)象是緊耦合的,對(duì)一個(gè)對(duì)象的修正往往導(dǎo)致其他對(duì)象的修正。對(duì)一個(gè)對(duì)象的修正往往導(dǎo)致其他對(duì)象的修正。5. 運(yùn)用簡單的效力運(yùn)用簡單的效力面向?qū)ο笤O(shè)計(jì)出來的類中的效力通常都很小,可以用面向?qū)ο笤O(shè)計(jì)出來的類中的效力通常都很小,可以用僅含一個(gè)動(dòng)詞和一個(gè)賓語的簡單句子描畫它的功能。僅含一個(gè)動(dòng)詞和一個(gè)賓語的簡單句子描畫它的功能。設(shè)法分解或簡化復(fù)雜的效力。設(shè)法分解或簡化復(fù)雜的效力。6. 把設(shè)計(jì)變動(dòng)減至最小把設(shè)計(jì)變動(dòng)減至最小通常,設(shè)計(jì)的質(zhì)量越高,設(shè)計(jì)結(jié)果堅(jiān)

17、持不變的時(shí)間也通常,設(shè)計(jì)的質(zhì)量越高,設(shè)計(jì)結(jié)果堅(jiān)持不變的時(shí)間也越長。即使出現(xiàn)必需修正設(shè)計(jì)的情況,也應(yīng)該使修正越長。即使出現(xiàn)必需修正設(shè)計(jì)的情況,也應(yīng)該使修正的范圍盡能夠小。理想的設(shè)計(jì)變動(dòng)曲線如圖的范圍盡能夠小。理想的設(shè)計(jì)變動(dòng)曲線如圖11.1所示。所示。在設(shè)計(jì)的早期階段,變動(dòng)較大,隨著時(shí)間推移,設(shè)在設(shè)計(jì)的早期階段,變動(dòng)較大,隨著時(shí)間推移,設(shè)計(jì)方案日趨成熟,改動(dòng)也越來越小了。圖計(jì)方案日趨成熟,改動(dòng)也越來越小了。圖11.1中的峰中的峰值與出現(xiàn)設(shè)計(jì)錯(cuò)誤或發(fā)生非預(yù)期變動(dòng)的情況相對(duì)應(yīng)。值與出現(xiàn)設(shè)計(jì)錯(cuò)誤或發(fā)生非預(yù)期變動(dòng)的情況相對(duì)應(yīng)。峰值越高,闡明設(shè)計(jì)質(zhì)量越差,可重用性也越差。峰值越高,闡明設(shè)計(jì)質(zhì)量越差,可重用性

18、也越差。圖圖11.1 理想的設(shè)計(jì)變動(dòng)情況理想的設(shè)計(jì)變動(dòng)情況1. 重用重用重用也叫再用或復(fù)用,是指同一事物不作修正或稍加重用也叫再用或復(fù)用,是指同一事物不作修正或稍加改動(dòng)就多次反復(fù)運(yùn)用。改動(dòng)就多次反復(fù)運(yùn)用。軟件重用可分為以下軟件重用可分為以下3個(gè)層次:個(gè)層次:(1) 知識(shí)重用知識(shí)重用(例如,軟件工程知識(shí)的重用例如,軟件工程知識(shí)的重用)。(2) 方法和規(guī)范的重用方法和規(guī)范的重用(例如,面向?qū)ο蠓椒ɑ驀抑评?,面向?qū)ο蠓椒ɑ驀抑贫ǖ能浖_發(fā)規(guī)范的重用定的軟件開發(fā)規(guī)范的重用)。(3) 軟件成分的重用。軟件成分的重用。前兩個(gè)重用層次屬于知識(shí)工程研討的范疇,本節(jié)僅討前兩個(gè)重用層次屬于知識(shí)工程研討的范疇

19、,本節(jié)僅討論軟件成分重用問題。論軟件成分重用問題。11.3 軟件重用軟件重用 11.3.1 概述概述2. 軟件成分的重用級(jí)別軟件成分的重用級(jí)別軟件成分的重用可以進(jìn)一步劃分成以下軟件成分的重用可以進(jìn)一步劃分成以下3個(gè)級(jí)別:個(gè)級(jí)別:(1) 代碼重用代碼重用 采用以下幾種方式中的任何一種:采用以下幾種方式中的任何一種: 源代碼剪貼源代碼剪貼 源代碼包含源代碼包含 承繼承繼(2) 設(shè)計(jì)結(jié)果重用設(shè)計(jì)結(jié)果重用重用某個(gè)軟件系統(tǒng)的設(shè)計(jì)模型重用某個(gè)軟件系統(tǒng)的設(shè)計(jì)模型(即求解域模型即求解域模型)。(3) 分析結(jié)果重用分析結(jié)果重用重用某個(gè)系統(tǒng)的分析模型。重用某個(gè)系統(tǒng)的分析模型。3. 典型的可重用軟件成分典型的可重用

20、軟件成分更詳細(xì)地說,能夠被重用的軟件成分主要有以下更詳細(xì)地說,能夠被重用的軟件成分主要有以下10種:種:1 工程方案。軟件工程方案的根本構(gòu)造和許多內(nèi)容工程方案。軟件工程方案的根本構(gòu)造和許多內(nèi)容例如,軟件質(zhì)量保證方案都是可以跨工程重用的。例如,軟件質(zhì)量保證方案都是可以跨工程重用的。2 本錢估計(jì)。由于在不同工程中經(jīng)常含有類似的功本錢估計(jì)。由于在不同工程中經(jīng)常含有類似的功能,所以有能夠在只做極少修正或根本不做修正的情能,所以有能夠在只做極少修正或根本不做修正的情況下,重用對(duì)該功能的本錢估計(jì)結(jié)果。況下,重用對(duì)該功能的本錢估計(jì)結(jié)果。3 體系構(gòu)造。即使在思索不同的運(yùn)用領(lǐng)域時(shí),也很體系構(gòu)造。即使在思索不同的

21、運(yùn)用領(lǐng)域時(shí),也很少有截然不同的程序和數(shù)據(jù)體系構(gòu)造。因此,有能夠少有截然不同的程序和數(shù)據(jù)體系構(gòu)造。因此,有能夠創(chuàng)建一組類屬的體系構(gòu)造模板例如,事務(wù)處置體系創(chuàng)建一組類屬的體系構(gòu)造模板例如,事務(wù)處置體系構(gòu)造,并把那些模板作為可重用的設(shè)計(jì)框架。通常構(gòu)造,并把那些模板作為可重用的設(shè)計(jì)框架。通常把類屬的體系構(gòu)造模板稱為領(lǐng)域體系構(gòu)造。把類屬的體系構(gòu)造模板稱為領(lǐng)域體系構(gòu)造。4 需求模型和規(guī)格闡明。類和對(duì)象的模型及規(guī)格闡需求模型和規(guī)格闡明。類和對(duì)象的模型及規(guī)格闡明是明顯的重用的候選者;用傳統(tǒng)軟件工程方法開發(fā)明是明顯的重用的候選者;用傳統(tǒng)軟件工程方法開發(fā)的分析模型例如,數(shù)據(jù)流圖,也是可重用的。的分析模型例如,數(shù)據(jù)

22、流圖,也是可重用的。5 設(shè)計(jì)。用傳統(tǒng)方法開發(fā)的體系構(gòu)造、數(shù)據(jù)、接口和過設(shè)計(jì)。用傳統(tǒng)方法開發(fā)的體系構(gòu)造、數(shù)據(jù)、接口和過程設(shè)計(jì)結(jié)果,是重用的候選者,更常見的是,系統(tǒng)和對(duì)象程設(shè)計(jì)結(jié)果,是重用的候選者,更常見的是,系統(tǒng)和對(duì)象設(shè)計(jì)是可重用的。設(shè)計(jì)是可重用的。6 源代碼。用兼容的程序設(shè)計(jì)言語書寫的、經(jīng)過驗(yàn)證的源代碼。用兼容的程序設(shè)計(jì)言語書寫的、經(jīng)過驗(yàn)證的程序構(gòu)件,是重用的候選者。程序構(gòu)件,是重用的候選者。7 用戶文檔和技術(shù)文檔。即使針對(duì)的運(yùn)用是不同的,也用戶文檔和技術(shù)文檔。即使針對(duì)的運(yùn)用是不同的,也經(jīng)常有能夠重用用戶文檔和技術(shù)文檔的大部分。經(jīng)常有能夠重用用戶文檔和技術(shù)文檔的大部分。8 用戶界面。這能夠是最

23、廣泛被重用的軟件成分,用戶界面。這能夠是最廣泛被重用的軟件成分,GUI圖形用戶界面軟件經(jīng)常被重用。由于它可占到一個(gè)運(yùn)圖形用戶界面軟件經(jīng)常被重用。由于它可占到一個(gè)運(yùn)用程序的用程序的60%代碼量,因此,重用的效果非常顯著。代碼量,因此,重用的效果非常顯著。9 數(shù)據(jù)。在大多數(shù)經(jīng)常被重用的軟件成分中,被重用的數(shù)據(jù)。在大多數(shù)經(jīng)常被重用的軟件成分中,被重用的數(shù)據(jù)包括:數(shù)據(jù)包括: 內(nèi)部表、列表和記錄構(gòu)造,以及文件和完好的內(nèi)部表、列表和記錄構(gòu)造,以及文件和完好的數(shù)據(jù)庫。數(shù)據(jù)庫。10 測(cè)試用例。一旦設(shè)計(jì)或代碼構(gòu)件將被重用,相關(guān)的測(cè)試用例。一旦設(shè)計(jì)或代碼構(gòu)件將被重用,相關(guān)的測(cè)試用例應(yīng)該測(cè)試用例應(yīng)該“附屬于它們也被

24、重用。附屬于它們也被重用。面向?qū)ο蠹夹g(shù)中的面向?qū)ο蠹夹g(shù)中的“類,是比較理想的可重用軟構(gòu)類,是比較理想的可重用軟構(gòu)件,無妨稱之為類構(gòu)件。類構(gòu)件有件,無妨稱之為類構(gòu)件。類構(gòu)件有3種重用方式,種重用方式,分別是實(shí)例重用、承繼重用和多態(tài)重用。下面進(jìn)分別是實(shí)例重用、承繼重用和多態(tài)重用。下面進(jìn)一步講述與類構(gòu)件有關(guān)的內(nèi)容。一步講述與類構(gòu)件有關(guān)的內(nèi)容。11.3.2 類構(gòu)件類構(gòu)件1. 可重用軟構(gòu)件應(yīng)具備的特點(diǎn)可重用軟構(gòu)件應(yīng)具備的特點(diǎn)模塊獨(dú)立性強(qiáng)。具有單一、完好的功能,且經(jīng)過反模塊獨(dú)立性強(qiáng)。具有單一、完好的功能,且經(jīng)過反復(fù)測(cè)試被確認(rèn)是正確的。它應(yīng)該是一個(gè)不受或復(fù)測(cè)試被確認(rèn)是正確的。它應(yīng)該是一個(gè)不受或很少受外界干擾

25、的封裝體,其內(nèi)部實(shí)如今外面很少受外界干擾的封裝體,其內(nèi)部實(shí)如今外面是不可見的。是不可見的。(2) 具有高度可塑性??芍赜玫能洏?gòu)件必需具有高度具有高度可塑性??芍赜玫能洏?gòu)件必需具有高度可裁剪性,也就是說,必需提供為順應(yīng)特定需可裁剪性,也就是說,必需提供為順應(yīng)特定需求而擴(kuò)展或修正已有構(gòu)件的機(jī)制,而且運(yùn)用非求而擴(kuò)展或修正已有構(gòu)件的機(jī)制,而且運(yùn)用非常簡一方便。常簡一方便。(3) 接口明晰、簡明、可靠。軟構(gòu)件應(yīng)該提供明晰、接口明晰、簡明、可靠。軟構(gòu)件應(yīng)該提供明晰、簡明、可靠的對(duì)外接口,而且還應(yīng)該有詳盡的簡明、可靠的對(duì)外接口,而且還應(yīng)該有詳盡的文檔闡明,以方便用戶運(yùn)用。文檔闡明,以方便用戶運(yùn)用。精心設(shè)計(jì)的

26、精心設(shè)計(jì)的“類根本上能滿足上述要求,可以以為類根本上能滿足上述要求,可以以為它是可重用軟構(gòu)件的雛形。它是可重用軟構(gòu)件的雛形。2. 類構(gòu)件的重用方式類構(gòu)件的重用方式(1) 實(shí)例重用實(shí)例重用由于類的封裝性,運(yùn)用者無須了解實(shí)現(xiàn)細(xì)節(jié)就可以由于類的封裝性,運(yùn)用者無須了解實(shí)現(xiàn)細(xì)節(jié)就可以運(yùn)用適當(dāng)?shù)臉?gòu)造函數(shù),按照需求創(chuàng)建類的實(shí)例。然運(yùn)用適當(dāng)?shù)臉?gòu)造函數(shù),按照需求創(chuàng)建類的實(shí)例。然后向所創(chuàng)建的實(shí)例發(fā)送適當(dāng)?shù)囊粲崳瑔?dòng)相應(yīng)的效后向所創(chuàng)建的實(shí)例發(fā)送適當(dāng)?shù)囊粲?,啟?dòng)相應(yīng)的效力,完成需求完成的任務(wù)。這是最根本的重用方式。力,完成需求完成的任務(wù)。這是最根本的重用方式。此外,還可以用幾個(gè)簡單的對(duì)象作為類的成員創(chuàng)建此外,還可以用

27、幾個(gè)簡單的對(duì)象作為類的成員創(chuàng)建出一個(gè)更復(fù)雜的類,這是實(shí)例重用的另一種方式。出一個(gè)更復(fù)雜的類,這是實(shí)例重用的另一種方式。(2) 承繼重用承繼重用面向?qū)ο蠓椒ㄌ赜械某欣^性提供了一種對(duì)已有的類構(gòu)面向?qū)ο蠓椒ㄌ赜械某欣^性提供了一種對(duì)已有的類構(gòu)件進(jìn)展裁剪的機(jī)制。當(dāng)已有的類構(gòu)件不能經(jīng)過實(shí)例重件進(jìn)展裁剪的機(jī)制。當(dāng)已有的類構(gòu)件不能經(jīng)過實(shí)例重用完全滿足當(dāng)前系統(tǒng)需求時(shí),承繼重用提供了一種平用完全滿足當(dāng)前系統(tǒng)需求時(shí),承繼重用提供了一種平安地修正已有類構(gòu)件,以便在當(dāng)前系統(tǒng)中重用的手段。安地修正已有類構(gòu)件,以便在當(dāng)前系統(tǒng)中重用的手段。為提高承繼重用的效果,關(guān)鍵是設(shè)計(jì)一個(gè)合理的、具為提高承繼重用的效果,關(guān)鍵是設(shè)計(jì)一個(gè)合理

28、的、具有一定深度的類構(gòu)件承繼層次構(gòu)造。有一定深度的類構(gòu)件承繼層次構(gòu)造。. 每個(gè)子類在承繼父類的屬性和效力的根底上,只參每個(gè)子類在承繼父類的屬性和效力的根底上,只參與少量新屬性和新效力,這就不僅降低了每個(gè)類構(gòu)件與少量新屬性和新效力,這就不僅降低了每個(gè)類構(gòu)件的接口復(fù)雜度,表現(xiàn)出一個(gè)明晰的進(jìn)化過程,提高了的接口復(fù)雜度,表現(xiàn)出一個(gè)明晰的進(jìn)化過程,提高了每個(gè)子類的可了解性,而且為軟件開發(fā)人員提供了更每個(gè)子類的可了解性,而且為軟件開發(fā)人員提供了更多可重用的類構(gòu)件。必要時(shí)應(yīng)在領(lǐng)域?qū)<覅f(xié)助下,建多可重用的類構(gòu)件。必要時(shí)應(yīng)在領(lǐng)域?qū)<覅f(xié)助下,建立符合領(lǐng)域知識(shí)的承繼層次。立符合領(lǐng)域知識(shí)的承繼層次。. 為多態(tài)重用奠定

29、了良好根底。為多態(tài)重用奠定了良好根底。(3) 多態(tài)重用多態(tài)重用利用多態(tài)性不僅可以使對(duì)象的對(duì)外接口更加普通化利用多態(tài)性不僅可以使對(duì)象的對(duì)外接口更加普通化(基基類與派生類的許多對(duì)外接口是一樣的類與派生類的許多對(duì)外接口是一樣的),從而降低了音,從而降低了音訊銜接的復(fù)雜程度,而且還提供了一種簡便可靠的軟訊銜接的復(fù)雜程度,而且還提供了一種簡便可靠的軟構(gòu)件組合機(jī)制。系統(tǒng)運(yùn)轉(zhuǎn)時(shí),根據(jù)接納音訊的對(duì)象類構(gòu)件組合機(jī)制。系統(tǒng)運(yùn)轉(zhuǎn)時(shí),根據(jù)接納音訊的對(duì)象類型,由多態(tài)性機(jī)制啟動(dòng)正確的方法,去呼應(yīng)一個(gè)普通型,由多態(tài)性機(jī)制啟動(dòng)正確的方法,去呼應(yīng)一個(gè)普通化的音訊,從而簡化了音訊界面和軟構(gòu)件銜接過程。化的音訊,從而簡化了音訊界面

30、和軟構(gòu)件銜接過程。為充分實(shí)現(xiàn)多態(tài)重用,在設(shè)計(jì)類構(gòu)件時(shí),應(yīng)該把留意為充分實(shí)現(xiàn)多態(tài)重用,在設(shè)計(jì)類構(gòu)件時(shí),應(yīng)該把留意力集中在以下一些能夠影響重用性的操作上:力集中在以下一些能夠影響重用性的操作上: 與表示方法有關(guān)的操作。與表示方法有關(guān)的操作。 與數(shù)據(jù)構(gòu)造、數(shù)據(jù)大小等有關(guān)的操作。與數(shù)據(jù)構(gòu)造、數(shù)據(jù)大小等有關(guān)的操作。 與外部設(shè)備有關(guān)的操作。例如,設(shè)備控制。與外部設(shè)備有關(guān)的操作。例如,設(shè)備控制。 實(shí)現(xiàn)算法在未來能夠會(huì)改良實(shí)現(xiàn)算法在未來能夠會(huì)改良(或改動(dòng)或改動(dòng))的中心操作。的中心操作。1. 質(zhì)量質(zhì)量隨著每一次構(gòu)件的重用,都會(huì)有一些錯(cuò)誤被發(fā)現(xiàn)隨著每一次構(gòu)件的重用,都會(huì)有一些錯(cuò)誤被發(fā)現(xiàn)并被去除,構(gòu)件的質(zhì)量也會(huì)隨之

31、改善。隨著時(shí)間并被去除,構(gòu)件的質(zhì)量也會(huì)隨之改善。隨著時(shí)間的推移,構(gòu)件將變本錢質(zhì)上無錯(cuò)誤的。的推移,構(gòu)件將變本錢質(zhì)上無錯(cuò)誤的。2. 消費(fèi)率消費(fèi)率當(dāng)把可重用的軟件成分運(yùn)用于軟件開發(fā)的全過程當(dāng)把可重用的軟件成分運(yùn)用于軟件開發(fā)的全過程時(shí),創(chuàng)建方案、模型、文檔、代碼和數(shù)據(jù)所需破時(shí),創(chuàng)建方案、模型、文檔、代碼和數(shù)據(jù)所需破費(fèi)的時(shí)間將減少,從而將用較少的投入給客戶提費(fèi)的時(shí)間將減少,從而將用較少的投入給客戶提供一樣級(jí)別的產(chǎn)品,因此,消費(fèi)率得到了提高。供一樣級(jí)別的產(chǎn)品,因此,消費(fèi)率得到了提高。11.3.3 軟件重用的效益軟件重用的效益3. 本錢本錢軟件重用能節(jié)省的凈本錢軟件重用能節(jié)省的凈本錢C為:為: C=Cs-

32、Cr-CdCs是工程從頭開發(fā)沒有重用時(shí)所需求的本錢;是工程從頭開發(fā)沒有重用時(shí)所需求的本錢; Cd是交付給客戶的軟件的實(shí)踐本錢;是交付給客戶的軟件的實(shí)踐本錢;Cr是與重用相關(guān)聯(lián)的本錢,主要包括下述本錢:是與重用相關(guān)聯(lián)的本錢,主要包括下述本錢: 領(lǐng)域分析與建模的本錢;領(lǐng)域分析與建模的本錢; 設(shè)計(jì)領(lǐng)域體系構(gòu)造的本錢;設(shè)計(jì)領(lǐng)域體系構(gòu)造的本錢; 為便于重用而添加的文檔的本錢;為便于重用而添加的文檔的本錢; 維護(hù)和完善可重用的軟件成分的本錢;維護(hù)和完善可重用的軟件成分的本錢; 為從外部獲取構(gòu)件所付出的版稅和答應(yīng)證為從外部獲取構(gòu)件所付出的版稅和答應(yīng)證費(fèi);費(fèi); 創(chuàng)建或購買及運(yùn)轉(zhuǎn)重用庫的費(fèi)用;創(chuàng)建或購買及運(yùn)轉(zhuǎn)重

33、用庫的費(fèi)用; 對(duì)設(shè)計(jì)和實(shí)現(xiàn)可重用構(gòu)件的人員的培訓(xùn)費(fèi)對(duì)設(shè)計(jì)和實(shí)現(xiàn)可重用構(gòu)件的人員的培訓(xùn)費(fèi)用。用。在設(shè)計(jì)比較復(fù)雜的運(yùn)用系統(tǒng)時(shí)普遍采用的戰(zhàn)略,是在設(shè)計(jì)比較復(fù)雜的運(yùn)用系統(tǒng)時(shí)普遍采用的戰(zhàn)略,是首先把系統(tǒng)分解成假設(shè)干個(gè)比較小的部分,然后再首先把系統(tǒng)分解成假設(shè)干個(gè)比較小的部分,然后再分別設(shè)計(jì)每個(gè)部分。分別設(shè)計(jì)每個(gè)部分。系統(tǒng)的主要組成部分稱為子系統(tǒng)。通常根據(jù)所提供系統(tǒng)的主要組成部分稱為子系統(tǒng)。通常根據(jù)所提供的功能來劃分子系統(tǒng)。普通說來,子系統(tǒng)的數(shù)目應(yīng)的功能來劃分子系統(tǒng)。普通說來,子系統(tǒng)的數(shù)目應(yīng)該與系統(tǒng)規(guī)模根本匹配。該與系統(tǒng)規(guī)模根本匹配。各個(gè)子系統(tǒng)之間應(yīng)該具有盡能夠簡單、明確的接口。各個(gè)子系統(tǒng)之間應(yīng)該具有盡能夠

34、簡單、明確的接口。接口確定了交互方式和經(jīng)過子系統(tǒng)邊境的信息流,接口確定了交互方式和經(jīng)過子系統(tǒng)邊境的信息流,但是無須規(guī)定子系統(tǒng)內(nèi)部的實(shí)現(xiàn)算法。因此,可以但是無須規(guī)定子系統(tǒng)內(nèi)部的實(shí)現(xiàn)算法。因此,可以相對(duì)獨(dú)立地設(shè)計(jì)各個(gè)子系統(tǒng)。相對(duì)獨(dú)立地設(shè)計(jì)各個(gè)子系統(tǒng)。在劃分和設(shè)計(jì)子系統(tǒng)時(shí),應(yīng)該盡量減少子系統(tǒng)彼此在劃分和設(shè)計(jì)子系統(tǒng)時(shí),應(yīng)該盡量減少子系統(tǒng)彼此間的依賴性。間的依賴性。11.4 系統(tǒng)分解系統(tǒng)分解 面向?qū)ο笤O(shè)計(jì)模型面向?qū)ο笤O(shè)計(jì)模型(即求解域的對(duì)象模型即求解域的對(duì)象模型),由下面,由下面5個(gè)層次組成:個(gè)層次組成: 主題主題 類與對(duì)象類與對(duì)象 構(gòu)造構(gòu)造 屬性屬性 效力效力這這5個(gè)層次一層比一層表示的細(xì)節(jié)更多,可以

35、把這個(gè)層次一層比一層表示的細(xì)節(jié)更多,可以把這5個(gè)層次想象為整個(gè)模型的程度切片。個(gè)層次想象為整個(gè)模型的程度切片。面向?qū)ο笤O(shè)計(jì)模型面向?qū)ο笤O(shè)計(jì)模型面向?qū)ο蠓治瞿P兔嫦驅(qū)ο蠓治瞿P?即問題域的對(duì)象模型即問題域的對(duì)象模型)面向?qū)ο笤O(shè)計(jì)模型面向?qū)ο笤O(shè)計(jì)模型面向?qū)ο笤O(shè)計(jì)模型,在邏輯上都由面向?qū)ο笤O(shè)計(jì)模型,在邏輯上都由4大部分組成:大部分組成:人機(jī)交互部分人機(jī)交互部分問題域部分問題域部分義務(wù)管理部分義務(wù)管理部分?jǐn)?shù)據(jù)管理部分?jǐn)?shù)據(jù)管理部分這這4大部分對(duì)應(yīng)于組成目的系統(tǒng)的大部分對(duì)應(yīng)于組成目的系統(tǒng)的4個(gè)子系統(tǒng):個(gè)子系統(tǒng):問題域子系統(tǒng)問題域子系統(tǒng)人機(jī)交互子系統(tǒng)人機(jī)交互子系統(tǒng)義務(wù)管理子系統(tǒng)義務(wù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)數(shù)

36、據(jù)管理子系統(tǒng)可以把面向?qū)ο笤O(shè)計(jì)模型的可以把面向?qū)ο笤O(shè)計(jì)模型的4大組成部分想象大組成部分想象成整個(gè)模型的成整個(gè)模型的4個(gè)垂直切片。個(gè)垂直切片。典型的面向?qū)ο笤O(shè)計(jì)模型可以用圖典型的面向?qū)ο笤O(shè)計(jì)模型可以用圖11.2表示。表示。圖圖11.2 典型的面向?qū)ο笤O(shè)計(jì)模型典型的面向?qū)ο笤O(shè)計(jì)模型1. 子系統(tǒng)之間的兩種交互方式子系統(tǒng)之間的兩種交互方式(1) 客戶客戶-供應(yīng)商供應(yīng)商(Client-supplier)關(guān)系關(guān)系在這種關(guān)系中,作為在這種關(guān)系中,作為“客戶的子系統(tǒng)調(diào)用作為客戶的子系統(tǒng)調(diào)用作為“供應(yīng)商的子系統(tǒng),后者完成某些效力任務(wù)并供應(yīng)商的子系統(tǒng),后者完成某些效力任務(wù)并前往結(jié)果。前往結(jié)果。 (2) 平等同伴平

37、等同伴(peer-to-peer)關(guān)系關(guān)系在這種關(guān)系中,每個(gè)子系統(tǒng)都能夠調(diào)用其他子系在這種關(guān)系中,每個(gè)子系統(tǒng)都能夠調(diào)用其他子系統(tǒng),因此,每個(gè)子系統(tǒng)都必需了解其他子系統(tǒng)的統(tǒng),因此,每個(gè)子系統(tǒng)都必需了解其他子系統(tǒng)的接口。接口??偟恼f來,單向交互比雙向交互更容易了解,也總的說來,單向交互比雙向交互更容易了解,也更容易設(shè)計(jì)和修正,因此應(yīng)該盡量運(yùn)用客戶更容易設(shè)計(jì)和修正,因此應(yīng)該盡量運(yùn)用客戶-供應(yīng)供應(yīng)商關(guān)系。商關(guān)系。2. 組織系統(tǒng)的兩種方案組織系統(tǒng)的兩種方案(1)程度層次組織程度層次組織 把軟件系統(tǒng)組織成一個(gè)層次系統(tǒng),每層是一個(gè)子系把軟件系統(tǒng)組織成一個(gè)層次系統(tǒng),每層是一個(gè)子系統(tǒng)。上層在下層的根底上建立,下

38、層為實(shí)現(xiàn)上層功能而統(tǒng)。上層在下層的根底上建立,下層為實(shí)現(xiàn)上層功能而提供必要的效力。每一層內(nèi)所包含的對(duì)象,彼此間相互提供必要的效力。每一層內(nèi)所包含的對(duì)象,彼此間相互獨(dú)立,而處于不同層次上的對(duì)象,彼此間往往有關(guān)聯(lián)。獨(dú)立,而處于不同層次上的對(duì)象,彼此間往往有關(guān)聯(lián)。實(shí)踐上,在上、下層之間存在客戶實(shí)踐上,在上、下層之間存在客戶-供應(yīng)商關(guān)系。供應(yīng)商關(guān)系。 層次構(gòu)造又可進(jìn)一步劃分成兩種方式:封鎖式和開層次構(gòu)造又可進(jìn)一步劃分成兩種方式:封鎖式和開放式。所謂封鎖式,就是每層子系統(tǒng)僅僅運(yùn)用其直接下放式。所謂封鎖式,就是每層子系統(tǒng)僅僅運(yùn)用其直接下層提供的效力。在開放方式中,某層子系統(tǒng)可以運(yùn)用途層提供的效力。在開放方

39、式中,某層子系統(tǒng)可以運(yùn)用途于其下面的任何一層子系統(tǒng)所提供的效力。于其下面的任何一層子系統(tǒng)所提供的效力。(2)垂直塊狀組織垂直塊狀組織這種組織方案把軟件系統(tǒng)垂直地分解成假設(shè)干個(gè)相對(duì)獨(dú)這種組織方案把軟件系統(tǒng)垂直地分解成假設(shè)干個(gè)相對(duì)獨(dú)立的、弱耦合的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊立的、弱耦合的子系統(tǒng),一個(gè)子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的效力。提供一種類型的效力。利用層次和塊的各種能夠的組合,可以勝利地由多利用層次和塊的各種能夠的組合,可以勝利地由多個(gè)子系統(tǒng)組成一個(gè)完好的軟件系統(tǒng)。當(dāng)混合運(yùn)用層個(gè)子系統(tǒng)組成一個(gè)完好的軟件系統(tǒng)。當(dāng)混合運(yùn)用層次構(gòu)造和塊狀構(gòu)造時(shí),同一層次可以由假設(shè)干塊組次構(gòu)造和塊狀構(gòu)造

40、時(shí),同一層次可以由假設(shè)干塊組成,而同一塊也可以分為假設(shè)干層。成,而同一塊也可以分為假設(shè)干層。例如,圖例如,圖11.3表示一個(gè)運(yùn)用系統(tǒng)的組織構(gòu)造,這個(gè)表示一個(gè)運(yùn)用系統(tǒng)的組織構(gòu)造,這個(gè)運(yùn)用系統(tǒng)采用了層次與塊狀的混合構(gòu)造。運(yùn)用系統(tǒng)采用了層次與塊狀的混合構(gòu)造。圖圖11.3 典型運(yùn)用系統(tǒng)的組織構(gòu)造典型運(yùn)用系統(tǒng)的組織構(gòu)造3. 設(shè)計(jì)系統(tǒng)的拓?fù)錁?gòu)造設(shè)計(jì)系統(tǒng)的拓?fù)錁?gòu)造由子系統(tǒng)組成完好的系統(tǒng)時(shí),典型的拓?fù)錁?gòu)造有:由子系統(tǒng)組成完好的系統(tǒng)時(shí),典型的拓?fù)錁?gòu)造有: 管道形管道形 樹形樹形 星形星形設(shè)計(jì)者應(yīng)該采用與問題構(gòu)造相順應(yīng)的、盡能夠簡單設(shè)計(jì)者應(yīng)該采用與問題構(gòu)造相順應(yīng)的、盡能夠簡單的拓?fù)錁?gòu)造,以減少子系統(tǒng)之間的交互數(shù)量

41、。的拓?fù)錁?gòu)造,以減少子系統(tǒng)之間的交互數(shù)量。經(jīng)過面向?qū)ο蠓治鏊贸龅膯栴}域準(zhǔn)確模型,為設(shè)計(jì)問題經(jīng)過面向?qū)ο蠓治鏊贸龅膯栴}域準(zhǔn)確模型,為設(shè)計(jì)問題域子系統(tǒng)奠定了良好的根底,建立了完好的框架。只需能域子系統(tǒng)奠定了良好的根底,建立了完好的框架。只需能夠,就應(yīng)該堅(jiān)持面向?qū)ο蠓治鏊⒌膯栴}域構(gòu)造。通常,夠,就應(yīng)該堅(jiān)持面向?qū)ο蠓治鏊⒌膯栴}域構(gòu)造。通常,面向?qū)ο笤O(shè)計(jì)僅需從實(shí)現(xiàn)角度對(duì)問題域模型做一些補(bǔ)充或面向?qū)ο笤O(shè)計(jì)僅需從實(shí)現(xiàn)角度對(duì)問題域模型做一些補(bǔ)充或修正,主要是增添、合并或分解類與對(duì)象、屬性及效力,修正,主要是增添、合并或分解類與對(duì)象、屬性及效力,調(diào)整承繼關(guān)系等等。當(dāng)問題域子系統(tǒng)過分復(fù)雜龐大時(shí),應(yīng)調(diào)整

42、承繼關(guān)系等等。當(dāng)問題域子系統(tǒng)過分復(fù)雜龐大時(shí),應(yīng)該把它進(jìn)一步分解成假設(shè)干個(gè)更小的子系統(tǒng)。該把它進(jìn)一步分解成假設(shè)干個(gè)更小的子系統(tǒng)。運(yùn)用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件,可以堅(jiān)持問題域組織框架運(yùn)用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件,可以堅(jiān)持問題域組織框架的穩(wěn)定性,從而便于追蹤分析、設(shè)計(jì)和編程的結(jié)果。在設(shè)的穩(wěn)定性,從而便于追蹤分析、設(shè)計(jì)和編程的結(jié)果。在設(shè)計(jì)與實(shí)現(xiàn)過程中所做的細(xì)節(jié)修正計(jì)與實(shí)現(xiàn)過程中所做的細(xì)節(jié)修正(例如,添加詳細(xì)類,添加例如,添加詳細(xì)類,添加屬性或效力屬性或效力),并不影響開發(fā)結(jié)果的穩(wěn)定性,由于系統(tǒng)的總,并不影響開發(fā)結(jié)果的穩(wěn)定性,由于系統(tǒng)的總體框架是基于問題域的。體框架是基于問題域的。11.5 設(shè)計(jì)問題域子系統(tǒng)

43、設(shè)計(jì)問題域子系統(tǒng)1. 調(diào)整需求調(diào)整需求有兩種情況:有兩種情況: 用戶需求或外部環(huán)境發(fā)生了變化;用戶需求或外部環(huán)境發(fā)生了變化; 面向?qū)ο蠓治瞿P筒荒芡旰?、?zhǔn)確地反映用戶的真面向?qū)ο蠓治瞿P筒荒芡旰?、?zhǔn)確地反映用戶的真實(shí)需求。實(shí)需求。方法是:簡單地修正面向?qū)ο蠓治鼋Y(jié)果,然后再把這方法是:簡單地修正面向?qū)ο蠓治鼋Y(jié)果,然后再把這些修正反映到問題域子系統(tǒng)中。些修正反映到問題域子系統(tǒng)中。2. 重用已有的類重用已有的類3. 把問題域類組合在一同把問題域類組合在一同在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)者往往經(jīng)過引入一個(gè)根在面向?qū)ο笤O(shè)計(jì)過程中,設(shè)計(jì)者往往經(jīng)過引入一個(gè)根類而把問題域類組合在一同。類而把問題域類組合在一同。在

44、面向?qū)ο笤O(shè)計(jì)過程中,能夠?qū)γ嫦驅(qū)ο蠓治鏊迷诿嫦驅(qū)ο笤O(shè)計(jì)過程中,能夠?qū)γ嫦驅(qū)ο蠓治鏊贸龅膯栴}域模型做的補(bǔ)充或修正如下:出的問題域模型做的補(bǔ)充或修正如下:4. 增添普通化類以建立協(xié)議增添普通化類以建立協(xié)議在設(shè)計(jì)過程中,常有一些詳細(xì)類需求一個(gè)公共的協(xié)議,在設(shè)計(jì)過程中,常有一些詳細(xì)類需求一個(gè)公共的協(xié)議,即需求定義一組類似的效力。在這種情況下可以引入即需求定義一組類似的效力。在這種情況下可以引入一個(gè)附加類一個(gè)附加類(例如,根類例如,根類),以便建立這個(gè)協(xié)議,以便建立這個(gè)協(xié)議(即命名即命名公共效力集合,這些效力在詳細(xì)類中仔細(xì)定義公共效力集合,這些效力在詳細(xì)類中仔細(xì)定義)。5. 調(diào)整承繼層次調(diào)整承繼層次

45、(1) 運(yùn)用多重承繼機(jī)制運(yùn)用多重承繼機(jī)制運(yùn)用多重承繼機(jī)制時(shí),應(yīng)該防止出現(xiàn)屬性及效力的命運(yùn)用多重承繼機(jī)制時(shí),應(yīng)該防止出現(xiàn)屬性及效力的命名沖突。下面經(jīng)過例子闡明防止命名沖突的方法。名沖突。下面經(jīng)過例子闡明防止命名沖突的方法。圖圖11.4 窄菱形方式窄菱形方式圖圖11.4是一種多重承繼方是一種多重承繼方式的例子,這種方式可以式的例子,這種方式可以稱為窄菱形方式。運(yùn)用這稱為窄菱形方式。運(yùn)用這種方式時(shí)出現(xiàn)屬性及效力種方式時(shí)出現(xiàn)屬性及效力命名沖突的能夠性比較大。命名沖突的能夠性比較大。圖圖11.5見書見書262頁是另頁是另一種多重承繼方式,稱為一種多重承繼方式,稱為闊菱形方式。運(yùn)用這種方闊菱形方式。運(yùn)用這

46、種方式時(shí),屬性及效力的名字式時(shí),屬性及效力的名字發(fā)生沖突的能夠性比較小,發(fā)生沖突的能夠性比較小,但是,它需求用更多的類但是,它需求用更多的類才干表示同一個(gè)設(shè)計(jì)。才干表示同一個(gè)設(shè)計(jì)。圖圖11.6 把多重承繼簡化為單一層次的單承繼把多重承繼簡化為單一層次的單承繼常見的做法是,把多常見的做法是,把多重承繼構(gòu)造簡化成單重承繼構(gòu)造簡化成單一的單承繼層次構(gòu)造,一的單承繼層次構(gòu)造,如圖如圖11.6所示。顯然,所示。顯然,在多重承繼構(gòu)造中的在多重承繼構(gòu)造中的某些承繼關(guān)系,經(jīng)簡某些承繼關(guān)系,經(jīng)簡化后將不再存在,這化后將不再存在,這闡明需求在各個(gè)詳細(xì)闡明需求在各個(gè)詳細(xì)類中反復(fù)定義某些屬類中反復(fù)定義某些屬性和效力。

47、性和效力。(2) 運(yùn)用單承繼機(jī)制運(yùn)用單承繼機(jī)制假設(shè)計(jì)劃運(yùn)用僅提供單承繼機(jī)制的言語實(shí)現(xiàn)系統(tǒng),假設(shè)計(jì)劃運(yùn)用僅提供單承繼機(jī)制的言語實(shí)現(xiàn)系統(tǒng),那么必需把面向?qū)ο蠓治瞿P椭械亩嘀爻欣^構(gòu)造轉(zhuǎn)那么必需把面向?qū)ο蠓治瞿P椭械亩嘀爻欣^構(gòu)造轉(zhuǎn)換成單承繼構(gòu)造。換成單承繼構(gòu)造。6. ATM系統(tǒng)實(shí)例系統(tǒng)實(shí)例圖圖11.7描畫了上章給出的描畫了上章給出的ATM系統(tǒng)的問題域子系統(tǒng)的構(gòu)造。系統(tǒng)的問題域子系統(tǒng)的構(gòu)造。在面向?qū)ο笤O(shè)計(jì)階段無須對(duì)已有的問題域模型作本質(zhì)性的在面向?qū)ο笤O(shè)計(jì)階段無須對(duì)已有的問題域模型作本質(zhì)性的修正或擴(kuò)展。修正或擴(kuò)展。圖圖11.7 ATM系統(tǒng)問題域子系統(tǒng)的構(gòu)造系統(tǒng)問題域子系統(tǒng)的構(gòu)造設(shè)計(jì)人機(jī)交互子系統(tǒng)的戰(zhàn)略:設(shè)

48、計(jì)人機(jī)交互子系統(tǒng)的戰(zhàn)略:1. 分類用戶分類用戶通常從以下幾個(gè)不同角度進(jìn)展分類:通常從以下幾個(gè)不同角度進(jìn)展分類:按技藝程度分類按技藝程度分類(新手、初級(jí)、中級(jí)、高級(jí)新手、初級(jí)、中級(jí)、高級(jí))。按職務(wù)分類按職務(wù)分類(總經(jīng)理、經(jīng)理、職員總經(jīng)理、經(jīng)理、職員)。按所屬集團(tuán)分類按所屬集團(tuán)分類(職員、顧客職員、顧客)。11.6 設(shè)計(jì)人機(jī)交互子系統(tǒng)設(shè)計(jì)人機(jī)交互子系統(tǒng)2. 描畫用戶描畫用戶描畫用戶信息有:描畫用戶信息有:用戶類型。用戶類型。運(yùn)用系統(tǒng)欲到達(dá)的目的。運(yùn)用系統(tǒng)欲到達(dá)的目的。特征特征(年齡、性別、受教育程度、限制要素等年齡、性別、受教育程度、限制要素等)。關(guān)鍵的勝利要素關(guān)鍵的勝利要素(需求、喜好、習(xí)慣等需

49、求、喜好、習(xí)慣等)。技藝程度。技藝程度。完本錢職任務(wù)的腳本。完本錢職任務(wù)的腳本。3. 設(shè)計(jì)命令層次設(shè)計(jì)命令層次(1) 研討現(xiàn)有的人機(jī)交互含義和準(zhǔn)那么研討現(xiàn)有的人機(jī)交互含義和準(zhǔn)那么(2) 確定初始的命令層次確定初始的命令層次所謂命令層次,本質(zhì)上是用過程籠統(tǒng)機(jī)制組織起來的、所謂命令層次,本質(zhì)上是用過程籠統(tǒng)機(jī)制組織起來的、可供選用的效力的表示方式。可供選用的效力的表示方式。設(shè)計(jì)命令層次時(shí),通常先從對(duì)效力的過程籠統(tǒng)著手,設(shè)計(jì)命令層次時(shí),通常先從對(duì)效力的過程籠統(tǒng)著手,然后再進(jìn)一步修正它們,以適宜詳細(xì)運(yùn)用環(huán)境的需求。然后再進(jìn)一步修正它們,以適宜詳細(xì)運(yùn)用環(huán)境的需求。(3) 精化命令層次精化命令層次應(yīng)該思索以

50、下一些要素:應(yīng)該思索以下一些要素:次序:仔細(xì)選擇每個(gè)效力的名字,并在命令層的每一次序:仔細(xì)選擇每個(gè)效力的名字,并在命令層的每一部分內(nèi)把效力排好次序。部分內(nèi)把效力排好次序。整體整體-部分關(guān)系:尋覓在這些效力中存在的整體部分關(guān)系:尋覓在這些效力中存在的整體-部分方部分方式,這樣做有助于在命令層中分組組織效力。式,這樣做有助于在命令層中分組組織效力。寬度和深度:命令層次的寬度和深度都不應(yīng)該過大。寬度和深度:命令層次的寬度和深度都不應(yīng)該過大。操作步驟:應(yīng)該用盡量少的單擊、拖動(dòng)和擊鍵組合來操作步驟:應(yīng)該用盡量少的單擊、拖動(dòng)和擊鍵組合來表達(dá)命令,而且應(yīng)該為高級(jí)用戶提供簡捷的操作方法。表達(dá)命令,而且應(yīng)該為高

51、級(jí)用戶提供簡捷的操作方法。4. 設(shè)計(jì)人機(jī)交互類設(shè)計(jì)人機(jī)交互類人機(jī)交互類與所運(yùn)用的操作系統(tǒng)及編程言語親密相關(guān)。人機(jī)交互類與所運(yùn)用的操作系統(tǒng)及編程言語親密相關(guān)。例如,在例如,在Windows環(huán)境下運(yùn)轉(zhuǎn)的環(huán)境下運(yùn)轉(zhuǎn)的Visual C+言語提供言語提供了了MFC類庫,設(shè)計(jì)人機(jī)交互類時(shí),往往僅需從類庫,設(shè)計(jì)人機(jī)交互類時(shí),往往僅需從MFC類庫中選出一些適用的類,然后從這些類派生出符合類庫中選出一些適用的類,然后從這些類派生出符合本人需求的類就可以了。本人需求的類就可以了。設(shè)計(jì)任務(wù)的一項(xiàng)重要內(nèi)容就是,確定哪些是必需同時(shí)動(dòng)作設(shè)計(jì)任務(wù)的一項(xiàng)重要內(nèi)容就是,確定哪些是必需同時(shí)動(dòng)作的對(duì)象,哪些是相互排斥的對(duì)象。然后進(jìn)

52、一步設(shè)計(jì)義務(wù)管的對(duì)象,哪些是相互排斥的對(duì)象。然后進(jìn)一步設(shè)計(jì)義務(wù)管理子系統(tǒng)。理子系統(tǒng)。11.7 設(shè)計(jì)義務(wù)管理子系統(tǒng)設(shè)計(jì)義務(wù)管理子系統(tǒng)1. 分析并發(fā)性分析并發(fā)性經(jīng)過面向?qū)ο蠓治鼋⑵饋淼膭?dòng)態(tài)模型,是分析并發(fā)性的經(jīng)過面向?qū)ο蠓治鼋⑵饋淼膭?dòng)態(tài)模型,是分析并發(fā)性的主要根據(jù)。假設(shè)兩個(gè)對(duì)象彼此間不存在交互,或者它們同主要根據(jù)。假設(shè)兩個(gè)對(duì)象彼此間不存在交互,或者它們同時(shí)接受事件,那么這兩個(gè)對(duì)象在本質(zhì)上是并發(fā)的。時(shí)接受事件,那么這兩個(gè)對(duì)象在本質(zhì)上是并發(fā)的。經(jīng)過檢查各個(gè)對(duì)象的形狀圖及它們之間交換的事件,可以經(jīng)過檢查各個(gè)對(duì)象的形狀圖及它們之間交換的事件,可以把假設(shè)干個(gè)非并發(fā)的對(duì)象歸并到一條控制線中。所謂控制把假設(shè)

53、干個(gè)非并發(fā)的對(duì)象歸并到一條控制線中。所謂控制線,是一條普及形狀圖集合的途徑,在這條途徑上每次只線,是一條普及形狀圖集合的途徑,在這條途徑上每次只需一個(gè)對(duì)象是活動(dòng)的。在計(jì)算機(jī)系統(tǒng)中用義務(wù)需一個(gè)對(duì)象是活動(dòng)的。在計(jì)算機(jī)系統(tǒng)中用義務(wù)(task)實(shí)現(xiàn)控實(shí)現(xiàn)控制線,普通以為義務(wù)是進(jìn)程制線,普通以為義務(wù)是進(jìn)程(process)的別名。通常把多個(gè)義的別名。通常把多個(gè)義務(wù)的并發(fā)執(zhí)行稱為多義務(wù)。務(wù)的并發(fā)執(zhí)行稱為多義務(wù)。對(duì)于某些運(yùn)用系統(tǒng)來說,經(jīng)過劃分義務(wù),可以簡化系統(tǒng)的對(duì)于某些運(yùn)用系統(tǒng)來說,經(jīng)過劃分義務(wù),可以簡化系統(tǒng)的設(shè)計(jì)及編碼任務(wù)。不同的義務(wù)標(biāo)識(shí)了必需同時(shí)發(fā)生的不同設(shè)計(jì)及編碼任務(wù)。不同的義務(wù)標(biāo)識(shí)了必需同時(shí)發(fā)生的不

54、同行為。這種并發(fā)行為既可以在不同的處置器上實(shí)現(xiàn),也可行為。這種并發(fā)行為既可以在不同的處置器上實(shí)現(xiàn),也可以在單個(gè)處置器上利用多義務(wù)操作系統(tǒng)仿真實(shí)現(xiàn)以在單個(gè)處置器上利用多義務(wù)操作系統(tǒng)仿真實(shí)現(xiàn)(通常采用通常采用時(shí)間分片戰(zhàn)略仿真多處置器環(huán)境時(shí)間分片戰(zhàn)略仿真多處置器環(huán)境)。2. 設(shè)計(jì)義務(wù)管理子系統(tǒng)設(shè)計(jì)義務(wù)管理子系統(tǒng)常見的義務(wù)有事件驅(qū)動(dòng)型義務(wù)、時(shí)鐘驅(qū)動(dòng)型義務(wù)、優(yōu)先義常見的義務(wù)有事件驅(qū)動(dòng)型義務(wù)、時(shí)鐘驅(qū)動(dòng)型義務(wù)、優(yōu)先義務(wù)、關(guān)鍵義務(wù)和協(xié)調(diào)義務(wù)等。設(shè)計(jì)義務(wù)管理子系統(tǒng),包括務(wù)、關(guān)鍵義務(wù)和協(xié)調(diào)義務(wù)等。設(shè)計(jì)義務(wù)管理子系統(tǒng),包括確定各類義務(wù)并把義務(wù)分配給適當(dāng)?shù)挠布蜍浖?zhí)行。確定各類義務(wù)并把義務(wù)分配給適當(dāng)?shù)挠布蜍浖?/p>

55、執(zhí)行。1 確定事件驅(qū)動(dòng)型義務(wù)確定事件驅(qū)動(dòng)型義務(wù)某些義務(wù)是由事件驅(qū)動(dòng)的,這類義務(wù)能夠主要完成通訊任某些義務(wù)是由事件驅(qū)動(dòng)的,這類義務(wù)能夠主要完成通訊任務(wù)。例如,與設(shè)備、屏幕窗口、其他義務(wù)、子系統(tǒng)、另一務(wù)。例如,與設(shè)備、屏幕窗口、其他義務(wù)、子系統(tǒng)、另一個(gè)處置器或其他系統(tǒng)通訊。事件通常是闡明某些數(shù)據(jù)到達(dá)個(gè)處置器或其他系統(tǒng)通訊。事件通常是闡明某些數(shù)據(jù)到達(dá)的信號(hào)。的信號(hào)。在系統(tǒng)運(yùn)轉(zhuǎn)時(shí),這類義務(wù)的任務(wù)過程如下:義務(wù)處于睡眠在系統(tǒng)運(yùn)轉(zhuǎn)時(shí),這類義務(wù)的任務(wù)過程如下:義務(wù)處于睡眠形狀形狀(不耗費(fèi)處置器時(shí)間不耗費(fèi)處置器時(shí)間),等待來自數(shù)據(jù)線或其他數(shù)據(jù)源的,等待來自數(shù)據(jù)線或其他數(shù)據(jù)源的中斷;一旦接納到中斷就喚醒了該義務(wù)

56、,接納數(shù)據(jù)并把數(shù)中斷;一旦接納到中斷就喚醒了該義務(wù),接納數(shù)據(jù)并把數(shù)據(jù)放入內(nèi)存緩沖區(qū)或其他目的地,通知需求知道這件事的據(jù)放入內(nèi)存緩沖區(qū)或其他目的地,通知需求知道這件事的對(duì)象,然后該義務(wù)又回到睡眠形狀。對(duì)象,然后該義務(wù)又回到睡眠形狀。2 確定時(shí)鐘驅(qū)動(dòng)型義務(wù)確定時(shí)鐘驅(qū)動(dòng)型義務(wù)某些義務(wù)每隔一定時(shí)間間隔就被觸發(fā)以執(zhí)行某些處置。在某些義務(wù)每隔一定時(shí)間間隔就被觸發(fā)以執(zhí)行某些處置。在這些場(chǎng)所往往需求運(yùn)用時(shí)鐘驅(qū)動(dòng)型義務(wù)。這些場(chǎng)所往往需求運(yùn)用時(shí)鐘驅(qū)動(dòng)型義務(wù)。時(shí)鐘驅(qū)動(dòng)型義務(wù)的任務(wù)過程如下:義務(wù)設(shè)置了喚醒時(shí)間后時(shí)鐘驅(qū)動(dòng)型義務(wù)的任務(wù)過程如下:義務(wù)設(shè)置了喚醒時(shí)間后進(jìn)入睡眠形狀;義務(wù)睡眠進(jìn)入睡眠形狀;義務(wù)睡眠(不耗費(fèi)處置器

57、時(shí)間不耗費(fèi)處置器時(shí)間),等待來自,等待來自系統(tǒng)的中斷;一旦接納到這種中斷,義務(wù)就被喚醒并做它系統(tǒng)的中斷;一旦接納到這種中斷,義務(wù)就被喚醒并做它的任務(wù),通知有關(guān)的對(duì)象,然后該義務(wù)又回到睡眠形狀。的任務(wù),通知有關(guān)的對(duì)象,然后該義務(wù)又回到睡眠形狀。3 確定優(yōu)先義務(wù)確定優(yōu)先義務(wù)優(yōu)先義務(wù)可以滿足高優(yōu)先級(jí)或低優(yōu)先級(jí)的處置需求:優(yōu)先義務(wù)可以滿足高優(yōu)先級(jí)或低優(yōu)先級(jí)的處置需求:高優(yōu)先級(jí):某些效力具有很高的優(yōu)先級(jí),為了在嚴(yán)厲限定高優(yōu)先級(jí):某些效力具有很高的優(yōu)先級(jí),為了在嚴(yán)厲限定的時(shí)間內(nèi)完成這種效力,能夠需求把這類效力分別成獨(dú)立的時(shí)間內(nèi)完成這種效力,能夠需求把這類效力分別成獨(dú)立的義務(wù)。的義務(wù)。低優(yōu)先級(jí):與高優(yōu)先級(jí)相

58、反,有些效力是低優(yōu)先級(jí)的,屬低優(yōu)先級(jí):與高優(yōu)先級(jí)相反,有些效力是低優(yōu)先級(jí)的,屬于低優(yōu)先級(jí)處置于低優(yōu)先級(jí)處置(通常指那些背景處置通常指那些背景處置)。設(shè)計(jì)時(shí)能夠用額。設(shè)計(jì)時(shí)能夠用額外的義務(wù)把這樣的處置分別出來。外的義務(wù)把這樣的處置分別出來。4 確定關(guān)鍵義務(wù)確定關(guān)鍵義務(wù)關(guān)鍵義務(wù)是有關(guān)系統(tǒng)勝利或失敗的關(guān)鍵處置,這類處關(guān)鍵義務(wù)是有關(guān)系統(tǒng)勝利或失敗的關(guān)鍵處置,這類處置通常都有嚴(yán)厲的可靠性要求。置通常都有嚴(yán)厲的可靠性要求。在設(shè)計(jì)過程中能夠用額外的義務(wù)把這樣的關(guān)鍵處置分在設(shè)計(jì)過程中能夠用額外的義務(wù)把這樣的關(guān)鍵處置分別出來,以滿足高可靠性處置的要求。對(duì)高可靠性處別出來,以滿足高可靠性處置的要求。對(duì)高可靠性處置

59、應(yīng)該精心設(shè)計(jì)和編碼,并且應(yīng)該嚴(yán)厲測(cè)試。置應(yīng)該精心設(shè)計(jì)和編碼,并且應(yīng)該嚴(yán)厲測(cè)試。5 確定協(xié)調(diào)義務(wù)確定協(xié)調(diào)義務(wù)當(dāng)系統(tǒng)中存在當(dāng)系統(tǒng)中存在3個(gè)以上義務(wù)時(shí),就應(yīng)該添加一個(gè)義務(wù),個(gè)以上義務(wù)時(shí),就應(yīng)該添加一個(gè)義務(wù),用它作為協(xié)調(diào)義務(wù)。用它作為協(xié)調(diào)義務(wù)。引入?yún)f(xié)調(diào)義務(wù)會(huì)添加系統(tǒng)的總開銷引入?yún)f(xié)調(diào)義務(wù)會(huì)添加系統(tǒng)的總開銷(添加從一個(gè)義務(wù)到添加從一個(gè)義務(wù)到另一個(gè)義務(wù)的轉(zhuǎn)換時(shí)間另一個(gè)義務(wù)的轉(zhuǎn)換時(shí)間),但是引入?yún)f(xié)調(diào)義務(wù)有助于把,但是引入?yún)f(xié)調(diào)義務(wù)有助于把不同義務(wù)之間的協(xié)調(diào)控制封裝起來。運(yùn)用形狀轉(zhuǎn)換矩不同義務(wù)之間的協(xié)調(diào)控制封裝起來。運(yùn)用形狀轉(zhuǎn)換矩陣可以比較方便地描畫該義務(wù)的行為。這類義務(wù)應(yīng)該陣可以比較方便地描畫該義務(wù)的行為。這類

60、義務(wù)應(yīng)該僅做協(xié)調(diào)任務(wù),不要讓它再承當(dāng)其他效力任務(wù)。僅做協(xié)調(diào)任務(wù),不要讓它再承當(dāng)其他效力任務(wù)。6 盡量減少義務(wù)數(shù)盡量減少義務(wù)數(shù)必需仔細(xì)分析和選擇每個(gè)確實(shí)需求的義務(wù)。應(yīng)該使系必需仔細(xì)分析和選擇每個(gè)確實(shí)需求的義務(wù)。應(yīng)該使系統(tǒng)中包含的義務(wù)數(shù)盡量少。統(tǒng)中包含的義務(wù)數(shù)盡量少。7 確定資源需求確定資源需求設(shè)計(jì)者在決議究竟采用軟件還是硬件的時(shí)候,必需綜設(shè)計(jì)者在決議究竟采用軟件還是硬件的時(shí)候,必需綜合權(quán)衡一致性、本錢、性能等多種要素,還要思索未合權(quán)衡一致性、本錢、性能等多種要素,還要思索未來的可擴(kuò)展性和可修正性。來的可擴(kuò)展性和可修正性。運(yùn)用多處置器或固件,主要是為了滿足高性能的需求。運(yùn)用多處置器或固件,主要是為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論