版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第11章 面向?qū)ο笤O(shè)計 (OOD)11.1 面向?qū)ο笤O(shè)計的準(zhǔn)那么面向?qū)ο笤O(shè)計的準(zhǔn)那么11.2 啟發(fā)規(guī)那么啟發(fā)規(guī)那么11.3 軟件重用軟件重用11.4 系統(tǒng)分解系統(tǒng)分解11.5 設(shè)計問題域子系統(tǒng)設(shè)計問題域子系統(tǒng)11.6 設(shè)計人機交互子系統(tǒng)設(shè)計人機交互子系統(tǒng)11.7 設(shè)計義務(wù)管理子系統(tǒng)設(shè)計義務(wù)管理子系統(tǒng)11.8 設(shè)計數(shù)據(jù)管理子系統(tǒng)設(shè)計數(shù)據(jù)管理子系統(tǒng)11.9 設(shè)計類中的效力設(shè)計類中的效力11.10 設(shè)計關(guān)聯(lián)設(shè)計關(guān)聯(lián)11.11 設(shè)計優(yōu)化設(shè)計優(yōu)化分析是提取和整理用戶需求,并建立問題域準(zhǔn)確分析是提取和整理用戶需求,并建立問題域準(zhǔn)確模型的過程。模型的過程。設(shè)計是把分析階段得到的需求轉(zhuǎn)變成符合本錢和設(shè)計是把分
2、析階段得到的需求轉(zhuǎn)變成符合本錢和質(zhì)量要求的、籠統(tǒng)的系統(tǒng)實現(xiàn)方案的過程。質(zhì)量要求的、籠統(tǒng)的系統(tǒng)實現(xiàn)方案的過程。從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(OOD),是一個,是一個逐漸擴展模型的過程。面向?qū)ο笤O(shè)計就是用面向逐漸擴展模型的過程。面向?qū)ο笤O(shè)計就是用面向?qū)ο笥^念建立求解域模型的過程。對象觀念建立求解域模型的過程。分析和設(shè)計活動是一個多次反復(fù)迭代的過程。面分析和設(shè)計活動是一個多次反復(fù)迭代的過程。面向?qū)ο蠓椒▽W(xué)在概念和表示方法上的一致性,保向?qū)ο蠓椒▽W(xué)在概念和表示方法上的一致性,保證了在各項開發(fā)活動之間的平滑證了在各項開發(fā)活動之間的平滑(無縫無縫)過渡。過渡。面向?qū)ο笤O(shè)計可再細(xì)
3、分為系統(tǒng)設(shè)計和對象設(shè)計。面向?qū)ο笤O(shè)計可再細(xì)分為系統(tǒng)設(shè)計和對象設(shè)計。系統(tǒng)設(shè)計確定實現(xiàn)系統(tǒng)的戰(zhàn)略和目的系統(tǒng)的高層系統(tǒng)設(shè)計確定實現(xiàn)系統(tǒng)的戰(zhàn)略和目的系統(tǒng)的高層構(gòu)造。對象設(shè)計確定解空間中的類、關(guān)聯(lián)、接口構(gòu)造。對象設(shè)計確定解空間中的類、關(guān)聯(lián)、接口方式及實現(xiàn)效力的算法。方式及實現(xiàn)效力的算法。優(yōu)秀的設(shè)計,是權(quán)衡了各種要素,從而使得系統(tǒng)在優(yōu)秀的設(shè)計,是權(quán)衡了各種要素,從而使得系統(tǒng)在其整個生命周期中的總開銷最小的設(shè)計。其整個生命周期中的總開銷最小的設(shè)計。對大多數(shù)軟件系統(tǒng)而言,對大多數(shù)軟件系統(tǒng)而言,60%以上的軟件費用都用以上的軟件費用都用于軟件維護,因此,優(yōu)秀軟件設(shè)計的一個主要特點于軟件維護,因此,優(yōu)秀軟件設(shè)計的
4、一個主要特點就是容易維護。就是容易維護。11.1 面向?qū)ο笤O(shè)計的準(zhǔn)那么面向?qū)ο笤O(shè)計的準(zhǔn)那么面向?qū)ο笤O(shè)計準(zhǔn)那么面向?qū)ο笤O(shè)計準(zhǔn)那么1. 模塊化模塊化對象是把數(shù)據(jù)構(gòu)造和操作這些數(shù)據(jù)的方法嚴(yán)密地結(jié)合在一對象是把數(shù)據(jù)構(gòu)造和操作這些數(shù)據(jù)的方法嚴(yán)密地結(jié)合在一同所構(gòu)成的模塊。面向?qū)ο筌浖_發(fā)方式支持了把系統(tǒng)分同所構(gòu)成的模塊。面向?qū)ο筌浖_發(fā)方式支持了把系統(tǒng)分解成模塊的設(shè)計原理:解成模塊的設(shè)計原理:2. 籠統(tǒng)籠統(tǒng)過程籠統(tǒng)過程籠統(tǒng)數(shù)據(jù)籠統(tǒng)。類實踐上是一種籠統(tǒng)數(shù)據(jù)類型,它對外開放的數(shù)據(jù)籠統(tǒng)。類實踐上是一種籠統(tǒng)數(shù)據(jù)類型,它對外開放的公共接口構(gòu)成了類的規(guī)格闡明公共接口構(gòu)成了類的規(guī)格闡明(即協(xié)議即協(xié)議),這種接口規(guī)定了,
5、這種接口規(guī)定了外界可以運用的合法操作符,利用這些操作符可以對類實外界可以運用的合法操作符,利用這些操作符可以對類實例中包含的數(shù)據(jù)進展操作。例中包含的數(shù)據(jù)進展操作。參數(shù)化籠統(tǒng),是指當(dāng)描畫類的規(guī)格闡明時并不詳細(xì)指定所參數(shù)化籠統(tǒng),是指當(dāng)描畫類的規(guī)格闡明時并不詳細(xì)指定所要操作的數(shù)據(jù)類型,而是把數(shù)據(jù)類型作為參數(shù)。例如,要操作的數(shù)據(jù)類型,而是把數(shù)據(jù)類型作為參數(shù)。例如,C+言語提供的言語提供的“模板機制就是一種參數(shù)化籠統(tǒng)機制。模板機制就是一種參數(shù)化籠統(tǒng)機制。3. 信息隱藏信息隱藏在面向?qū)ο蠓椒ㄖ校畔㈦[藏經(jīng)過對象的封裝性實現(xiàn):類在面向?qū)ο蠓椒ㄖ?,信息隱藏經(jīng)過對象的封裝性實現(xiàn):類構(gòu)造分別了接口與實現(xiàn),從而支持
6、了信息隱藏。構(gòu)造分別了接口與實現(xiàn),從而支持了信息隱藏。4. 弱耦合弱耦合耦合指一個軟件構(gòu)造內(nèi)不同模塊之間互連的嚴(yán)密程度。在耦合指一個軟件構(gòu)造內(nèi)不同模塊之間互連的嚴(yán)密程度。在面向?qū)ο蠓椒ㄖ?,對象是最根本的模塊,因此,耦合主要面向?qū)ο蠓椒ㄖ?,對象是最根本的模塊,因此,耦合主要指不同對象之間相互關(guān)聯(lián)的嚴(yán)密程度。指不同對象之間相互關(guān)聯(lián)的嚴(yán)密程度。弱耦合是優(yōu)秀設(shè)計的一個重要規(guī)范,由于這有助于使得系弱耦合是優(yōu)秀設(shè)計的一個重要規(guī)范,由于這有助于使得系統(tǒng)中某一部分的變化對其他部分的影響降到最低程度。在統(tǒng)中某一部分的變化對其他部分的影響降到最低程度。在理想情況下,對某一部分的了解、測試或修正,無須涉及理想情況下
7、,對某一部分的了解、測試或修正,無須涉及系統(tǒng)的其他部分。系統(tǒng)的其他部分。當(dāng)然,對象不能夠是完全孤立的,當(dāng)兩個對象必需相互聯(lián)當(dāng)然,對象不能夠是完全孤立的,當(dāng)兩個對象必需相互聯(lián)絡(luò)相互依賴時,應(yīng)該經(jīng)過類的協(xié)議絡(luò)相互依賴時,應(yīng)該經(jīng)過類的協(xié)議(即公共接口即公共接口)實現(xiàn)耦合,實現(xiàn)耦合,而不應(yīng)該依賴于類的詳細(xì)實現(xiàn)細(xì)節(jié)。而不應(yīng)該依賴于類的詳細(xì)實現(xiàn)細(xì)節(jié)。普通說來,對象之間的耦合可分為兩大類:普通說來,對象之間的耦合可分為兩大類:(1) 交互耦合交互耦合 盡能夠松散盡能夠松散交互耦合交互耦合 對象之間的耦合經(jīng)過音訊銜接來實現(xiàn)。對象之間的耦合經(jīng)過音訊銜接來實現(xiàn)。為使交互耦合盡能夠松散,應(yīng)該遵守下述準(zhǔn)那么:為使交互
8、耦合盡能夠松散,應(yīng)該遵守下述準(zhǔn)那么:a) 盡量降低音訊銜接的復(fù)雜程度。應(yīng)該盡量減少音訊中包盡量降低音訊銜接的復(fù)雜程度。應(yīng)該盡量減少音訊中包含的參數(shù)個數(shù),降低參數(shù)的復(fù)雜程度。含的參數(shù)個數(shù),降低參數(shù)的復(fù)雜程度。b) 減少對象發(fā)送減少對象發(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)該確實是對它的普通化為獲得嚴(yán)密的承繼耦合,特殊類應(yīng)該確實是對它的普通化類的一種詳細(xì)化。因此,假設(shè)一個派生類摒棄了它基類的類的一種詳細(xì)化。因此,假設(shè)一個派生類摒棄了它基類的許多屬性,那么它們之間是松耦合的。在設(shè)計時應(yīng)該使特許多屬性,那么它們之間是松耦合的。在設(shè)計時應(yīng)該使特殊類盡量多承繼并運用其普通化類的屬性和效力,從而更殊類盡量多承繼并運用其普通化類的屬性和效力,從而更嚴(yán)密地耦合到其普通化類。嚴(yán)密地耦合到其普通化類。5. 強內(nèi)聚強內(nèi)聚內(nèi)聚衡量一個模塊內(nèi)各個元素彼此結(jié)合的嚴(yán)密程度。也可內(nèi)聚衡
10、量一個模塊內(nèi)各個元素彼此結(jié)合的嚴(yán)密程度。也可以把內(nèi)聚定義為:設(shè)計中運用的一個構(gòu)件內(nèi)的各個元素,以把內(nèi)聚定義為:設(shè)計中運用的一個構(gòu)件內(nèi)的各個元素,對完成一個定義明確的目的所做出的奉獻程度。在設(shè)計時對完成一個定義明確的目的所做出的奉獻程度。在設(shè)計時應(yīng)該力求做到高內(nèi)聚。在面向?qū)ο笤O(shè)計中存在下述應(yīng)該力求做到高內(nèi)聚。在面向?qū)ο笤O(shè)計中存在下述3種內(nèi)聚。種內(nèi)聚。1 效力內(nèi)聚。一個效力應(yīng)該完成一個且僅完成一個功能。效力內(nèi)聚。一個效力應(yīng)該完成一個且僅完成一個功能。2 類內(nèi)聚。設(shè)計類的原那么是,一個類應(yīng)該只需一個用類內(nèi)聚。設(shè)計類的原那么是,一個類應(yīng)該只需一個用途,它的屬性和效力應(yīng)該是高內(nèi)聚的。類的屬性和效力應(yīng)途,
11、它的屬性和效力應(yīng)該是高內(nèi)聚的。類的屬性和效力應(yīng)該全都是完成該類對象的義務(wù)所必需的,其中不包含無用該全都是完成該類對象的義務(wù)所必需的,其中不包含無用的屬性或效力。假設(shè)某個類有多個用途,通常應(yīng)該把它分的屬性或效力。假設(shè)某個類有多個用途,通常應(yīng)該把它分解成多個公用的類。解成多個公用的類。3 普通普通-特殊內(nèi)聚。設(shè)計出的普通特殊內(nèi)聚。設(shè)計出的普通-特殊構(gòu)造,應(yīng)該符合特殊構(gòu)造,應(yīng)該符合多數(shù)人的概念,更準(zhǔn)確地說,這種構(gòu)造應(yīng)該是對相應(yīng)的領(lǐng)多數(shù)人的概念,更準(zhǔn)確地說,這種構(gòu)造應(yīng)該是對相應(yīng)的領(lǐng)域知識的正確抽取。域知識的正確抽取。嚴(yán)密的承繼耦合與高度的普通嚴(yán)密的承繼耦合與高度的普通-特殊內(nèi)聚是一致的。特殊內(nèi)聚是一致
12、的。6. 可重用可重用軟件重用是提高軟件開發(fā)消費率和目的系統(tǒng)質(zhì)量的軟件重用是提高軟件開發(fā)消費率和目的系統(tǒng)質(zhì)量的重要途徑。重用根本上從設(shè)計階段開場。重要途徑。重用根本上從設(shè)計階段開場。重用有兩方面的含義:重用有兩方面的含義: 一是盡量運用已有的類一是盡量運用已有的類(包括開發(fā)環(huán)境提供的類庫,包括開發(fā)環(huán)境提供的類庫,及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類及以往開發(fā)類似系統(tǒng)時創(chuàng)建的類);二是假設(shè)確實需求創(chuàng)建新類,那么在設(shè)計這些新類二是假設(shè)確實需求創(chuàng)建新類,那么在設(shè)計這些新類的協(xié)議時,應(yīng)該思索未來的可反復(fù)運用性。的協(xié)議時,應(yīng)該思索未來的可反復(fù)運用性。設(shè)計結(jié)果應(yīng)該明晰易懂設(shè)計結(jié)果應(yīng)該明晰易懂1 用詞一致。應(yīng)該使名
13、字與它所代表的事物一致,用詞一致。應(yīng)該使名字與它所代表的事物一致,而且應(yīng)該盡量運用人們習(xí)慣的名字。不同類中類似效而且應(yīng)該盡量運用人們習(xí)慣的名字。不同類中類似效力的名字應(yīng)該一樣。力的名字應(yīng)該一樣。2 運用已有的協(xié)議。假設(shè)開發(fā)同一軟件的其他設(shè)計運用已有的協(xié)議。假設(shè)開發(fā)同一軟件的其他設(shè)計人員曾經(jīng)建立了類的協(xié)議,或者在所運用的類庫中已人員曾經(jīng)建立了類的協(xié)議,或者在所運用的類庫中已有相應(yīng)的協(xié)議,那么應(yīng)該運用這些已有的協(xié)議。有相應(yīng)的協(xié)議,那么應(yīng)該運用這些已有的協(xié)議。3 減少音訊方式的數(shù)目。假設(shè)已有規(guī)范的音訊協(xié)議,減少音訊方式的數(shù)目。假設(shè)已有規(guī)范的音訊協(xié)議,設(shè)計人員應(yīng)該遵守這些協(xié)議。假設(shè)確需本人建立音訊設(shè)計
14、人員應(yīng)該遵守這些協(xié)議。假設(shè)確需本人建立音訊協(xié)議,那么應(yīng)該盡量減少音訊方式的數(shù)目,只需能夠,協(xié)議,那么應(yīng)該盡量減少音訊方式的數(shù)目,只需能夠,就使音訊具有一致的方式,以利于讀者了解。就使音訊具有一致的方式,以利于讀者了解。4 防止模糊的定義。一個類的用途應(yīng)該是有限的,防止模糊的定義。一個類的用途應(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)普通說來,在一個中等規(guī)模普通說來,在一個中等規(guī)模(大約包含大約包含100個類個類)的系的系統(tǒng)中,類等級層次數(shù)應(yīng)堅持為統(tǒng)中,類
15、等級層次數(shù)應(yīng)堅持為72。不應(yīng)該僅僅從方。不應(yīng)該僅僅從方便編碼的角度出發(fā)隨意創(chuàng)建派生類,應(yīng)該使普通便編碼的角度出發(fā)隨意創(chuàng)建派生類,應(yīng)該使普通-特特殊構(gòu)造與領(lǐng)域知識或常識堅持一致。殊構(gòu)造與領(lǐng)域知識或常識堅持一致。3. 設(shè)計簡單的類設(shè)計簡單的類應(yīng)該盡量設(shè)計小而簡單的類,以便于開發(fā)和管理。為應(yīng)該盡量設(shè)計小而簡單的類,以便于開發(fā)和管理。為使類堅持簡單,應(yīng)該留意以下幾點。使類堅持簡單,應(yīng)該留意以下幾點。(1) 防止包含過多的屬性。防止包含過多的屬性。 (2) 有明確的定義。分配給每個類的義務(wù)應(yīng)該簡單。有明確的定義。分配給每個類的義務(wù)應(yīng)該簡單。(3) 盡量簡化對象之間的協(xié)作關(guān)系。盡量簡化對象之間的協(xié)作關(guān)系。
16、 (4) 不要提供太多效力。不要提供太多效力。4. 運用簡單的協(xié)議運用簡單的協(xié)議閱歷闡明,經(jīng)過復(fù)雜音訊相互關(guān)聯(lián)的對象是緊耦合的,閱歷闡明,經(jīng)過復(fù)雜音訊相互關(guān)聯(lián)的對象是緊耦合的,對一個對象的修正往往導(dǎo)致其他對象的修正。對一個對象的修正往往導(dǎo)致其他對象的修正。5. 運用簡單的效力運用簡單的效力面向?qū)ο笤O(shè)計出來的類中的效力通常都很小,可以用面向?qū)ο笤O(shè)計出來的類中的效力通常都很小,可以用僅含一個動詞和一個賓語的簡單句子描畫它的功能。僅含一個動詞和一個賓語的簡單句子描畫它的功能。設(shè)法分解或簡化復(fù)雜的效力。設(shè)法分解或簡化復(fù)雜的效力。6. 把設(shè)計變動減至最小把設(shè)計變動減至最小通常,設(shè)計的質(zhì)量越高,設(shè)計結(jié)果堅
17、持不變的時間也通常,設(shè)計的質(zhì)量越高,設(shè)計結(jié)果堅持不變的時間也越長。即使出現(xiàn)必需修正設(shè)計的情況,也應(yīng)該使修正越長。即使出現(xiàn)必需修正設(shè)計的情況,也應(yīng)該使修正的范圍盡能夠小。理想的設(shè)計變動曲線如圖的范圍盡能夠小。理想的設(shè)計變動曲線如圖11.1所示。所示。在設(shè)計的早期階段,變動較大,隨著時間推移,設(shè)在設(shè)計的早期階段,變動較大,隨著時間推移,設(shè)計方案日趨成熟,改動也越來越小了。圖計方案日趨成熟,改動也越來越小了。圖11.1中的峰中的峰值與出現(xiàn)設(shè)計錯誤或發(fā)生非預(yù)期變動的情況相對應(yīng)。值與出現(xiàn)設(shè)計錯誤或發(fā)生非預(yù)期變動的情況相對應(yīng)。峰值越高,闡明設(shè)計質(zhì)量越差,可重用性也越差。峰值越高,闡明設(shè)計質(zhì)量越差,可重用性
18、也越差。圖圖11.1 理想的設(shè)計變動情況理想的設(shè)計變動情況1. 重用重用重用也叫再用或復(fù)用,是指同一事物不作修正或稍加重用也叫再用或復(fù)用,是指同一事物不作修正或稍加改動就多次反復(fù)運用。改動就多次反復(fù)運用。軟件重用可分為以下軟件重用可分為以下3個層次:個層次:(1) 知識重用知識重用(例如,軟件工程知識的重用例如,軟件工程知識的重用)。(2) 方法和規(guī)范的重用方法和規(guī)范的重用(例如,面向?qū)ο蠓椒ɑ驀抑评纾嫦驅(qū)ο蠓椒ɑ驀抑贫ǖ能浖_發(fā)規(guī)范的重用定的軟件開發(fā)規(guī)范的重用)。(3) 軟件成分的重用。軟件成分的重用。前兩個重用層次屬于知識工程研討的范疇,本節(jié)僅討前兩個重用層次屬于知識工程研討的范疇
19、,本節(jié)僅討論軟件成分重用問題。論軟件成分重用問題。11.3 軟件重用軟件重用 11.3.1 概述概述2. 軟件成分的重用級別軟件成分的重用級別軟件成分的重用可以進一步劃分成以下軟件成分的重用可以進一步劃分成以下3個級別:個級別:(1) 代碼重用代碼重用 采用以下幾種方式中的任何一種:采用以下幾種方式中的任何一種: 源代碼剪貼源代碼剪貼 源代碼包含源代碼包含 承繼承繼(2) 設(shè)計結(jié)果重用設(shè)計結(jié)果重用重用某個軟件系統(tǒng)的設(shè)計模型重用某個軟件系統(tǒng)的設(shè)計模型(即求解域模型即求解域模型)。(3) 分析結(jié)果重用分析結(jié)果重用重用某個系統(tǒng)的分析模型。重用某個系統(tǒng)的分析模型。3. 典型的可重用軟件成分典型的可重用
20、軟件成分更詳細(xì)地說,能夠被重用的軟件成分主要有以下更詳細(xì)地說,能夠被重用的軟件成分主要有以下10種:種:1 工程方案。軟件工程方案的根本構(gòu)造和許多內(nèi)容工程方案。軟件工程方案的根本構(gòu)造和許多內(nèi)容例如,軟件質(zhì)量保證方案都是可以跨工程重用的。例如,軟件質(zhì)量保證方案都是可以跨工程重用的。2 本錢估計。由于在不同工程中經(jīng)常含有類似的功本錢估計。由于在不同工程中經(jīng)常含有類似的功能,所以有能夠在只做極少修正或根本不做修正的情能,所以有能夠在只做極少修正或根本不做修正的情況下,重用對該功能的本錢估計結(jié)果。況下,重用對該功能的本錢估計結(jié)果。3 體系構(gòu)造。即使在思索不同的運用領(lǐng)域時,也很體系構(gòu)造。即使在思索不同的
21、運用領(lǐng)域時,也很少有截然不同的程序和數(shù)據(jù)體系構(gòu)造。因此,有能夠少有截然不同的程序和數(shù)據(jù)體系構(gòu)造。因此,有能夠創(chuàng)建一組類屬的體系構(gòu)造模板例如,事務(wù)處置體系創(chuàng)建一組類屬的體系構(gòu)造模板例如,事務(wù)處置體系構(gòu)造,并把那些模板作為可重用的設(shè)計框架。通常構(gòu)造,并把那些模板作為可重用的設(shè)計框架。通常把類屬的體系構(gòu)造模板稱為領(lǐng)域體系構(gòu)造。把類屬的體系構(gòu)造模板稱為領(lǐng)域體系構(gòu)造。4 需求模型和規(guī)格闡明。類和對象的模型及規(guī)格闡需求模型和規(guī)格闡明。類和對象的模型及規(guī)格闡明是明顯的重用的候選者;用傳統(tǒng)軟件工程方法開發(fā)明是明顯的重用的候選者;用傳統(tǒng)軟件工程方法開發(fā)的分析模型例如,數(shù)據(jù)流圖,也是可重用的。的分析模型例如,數(shù)據(jù)
22、流圖,也是可重用的。5 設(shè)計。用傳統(tǒng)方法開發(fā)的體系構(gòu)造、數(shù)據(jù)、接口和過設(shè)計。用傳統(tǒng)方法開發(fā)的體系構(gòu)造、數(shù)據(jù)、接口和過程設(shè)計結(jié)果,是重用的候選者,更常見的是,系統(tǒng)和對象程設(shè)計結(jié)果,是重用的候選者,更常見的是,系統(tǒng)和對象設(shè)計是可重用的。設(shè)計是可重用的。6 源代碼。用兼容的程序設(shè)計言語書寫的、經(jīng)過驗證的源代碼。用兼容的程序設(shè)計言語書寫的、經(jīng)過驗證的程序構(gòu)件,是重用的候選者。程序構(gòu)件,是重用的候選者。7 用戶文檔和技術(shù)文檔。即使針對的運用是不同的,也用戶文檔和技術(shù)文檔。即使針對的運用是不同的,也經(jīng)常有能夠重用用戶文檔和技術(shù)文檔的大部分。經(jīng)常有能夠重用用戶文檔和技術(shù)文檔的大部分。8 用戶界面。這能夠是最
23、廣泛被重用的軟件成分,用戶界面。這能夠是最廣泛被重用的軟件成分,GUI圖形用戶界面軟件經(jīng)常被重用。由于它可占到一個運圖形用戶界面軟件經(jīng)常被重用。由于它可占到一個運用程序的用程序的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 測試用例。一旦設(shè)計或代碼構(gòu)件將被重用,相關(guān)的測試用例。一旦設(shè)計或代碼構(gòu)件將被重用,相關(guān)的測試用例應(yīng)該測試用例應(yīng)該“附屬于它們也被
24、重用。附屬于它們也被重用。面向?qū)ο蠹夹g(shù)中的面向?qū)ο蠹夹g(shù)中的“類,是比較理想的可重用軟構(gòu)類,是比較理想的可重用軟構(gòu)件,無妨稱之為類構(gòu)件。類構(gòu)件有件,無妨稱之為類構(gòu)件。類構(gòu)件有3種重用方式,種重用方式,分別是實例重用、承繼重用和多態(tài)重用。下面進分別是實例重用、承繼重用和多態(tài)重用。下面進一步講述與類構(gòu)件有關(guān)的內(nèi)容。一步講述與類構(gòu)件有關(guān)的內(nèi)容。11.3.2 類構(gòu)件類構(gòu)件1. 可重用軟構(gòu)件應(yīng)具備的特點可重用軟構(gòu)件應(yīng)具備的特點模塊獨立性強。具有單一、完好的功能,且經(jīng)過反模塊獨立性強。具有單一、完好的功能,且經(jīng)過反復(fù)測試被確認(rèn)是正確的。它應(yīng)該是一個不受或復(fù)測試被確認(rèn)是正確的。它應(yīng)該是一個不受或很少受外界干擾
25、的封裝體,其內(nèi)部實如今外面很少受外界干擾的封裝體,其內(nèi)部實如今外面是不可見的。是不可見的。(2) 具有高度可塑性。可重用的軟構(gòu)件必需具有高度具有高度可塑性。可重用的軟構(gòu)件必需具有高度可裁剪性,也就是說,必需提供為順應(yīng)特定需可裁剪性,也就是說,必需提供為順應(yīng)特定需求而擴展或修正已有構(gòu)件的機制,而且運用非求而擴展或修正已有構(gòu)件的機制,而且運用非常簡一方便。常簡一方便。(3) 接口明晰、簡明、可靠。軟構(gòu)件應(yīng)該提供明晰、接口明晰、簡明、可靠。軟構(gòu)件應(yīng)該提供明晰、簡明、可靠的對外接口,而且還應(yīng)該有詳盡的簡明、可靠的對外接口,而且還應(yīng)該有詳盡的文檔闡明,以方便用戶運用。文檔闡明,以方便用戶運用。精心設(shè)計的
26、精心設(shè)計的“類根本上能滿足上述要求,可以以為類根本上能滿足上述要求,可以以為它是可重用軟構(gòu)件的雛形。它是可重用軟構(gòu)件的雛形。2. 類構(gòu)件的重用方式類構(gòu)件的重用方式(1) 實例重用實例重用由于類的封裝性,運用者無須了解實現(xiàn)細(xì)節(jié)就可以由于類的封裝性,運用者無須了解實現(xiàn)細(xì)節(jié)就可以運用適當(dāng)?shù)臉?gòu)造函數(shù),按照需求創(chuàng)建類的實例。然運用適當(dāng)?shù)臉?gòu)造函數(shù),按照需求創(chuàng)建類的實例。然后向所創(chuàng)建的實例發(fā)送適當(dāng)?shù)囊粲?,啟動相?yīng)的效后向所創(chuàng)建的實例發(fā)送適當(dāng)?shù)囊粲崳瑔酉鄳?yīng)的效力,完成需求完成的任務(wù)。這是最根本的重用方式。力,完成需求完成的任務(wù)。這是最根本的重用方式。此外,還可以用幾個簡單的對象作為類的成員創(chuàng)建此外,還可以用
27、幾個簡單的對象作為類的成員創(chuàng)建出一個更復(fù)雜的類,這是實例重用的另一種方式。出一個更復(fù)雜的類,這是實例重用的另一種方式。(2) 承繼重用承繼重用面向?qū)ο蠓椒ㄌ赜械某欣^性提供了一種對已有的類構(gòu)面向?qū)ο蠓椒ㄌ赜械某欣^性提供了一種對已有的類構(gòu)件進展裁剪的機制。當(dāng)已有的類構(gòu)件不能經(jīng)過實例重件進展裁剪的機制。當(dāng)已有的類構(gòu)件不能經(jīng)過實例重用完全滿足當(dāng)前系統(tǒng)需求時,承繼重用提供了一種平用完全滿足當(dāng)前系統(tǒng)需求時,承繼重用提供了一種平安地修正已有類構(gòu)件,以便在當(dāng)前系統(tǒng)中重用的手段。安地修正已有類構(gòu)件,以便在當(dāng)前系統(tǒng)中重用的手段。為提高承繼重用的效果,關(guān)鍵是設(shè)計一個合理的、具為提高承繼重用的效果,關(guān)鍵是設(shè)計一個合理
28、的、具有一定深度的類構(gòu)件承繼層次構(gòu)造。有一定深度的類構(gòu)件承繼層次構(gòu)造。. 每個子類在承繼父類的屬性和效力的根底上,只參每個子類在承繼父類的屬性和效力的根底上,只參與少量新屬性和新效力,這就不僅降低了每個類構(gòu)件與少量新屬性和新效力,這就不僅降低了每個類構(gòu)件的接口復(fù)雜度,表現(xiàn)出一個明晰的進化過程,提高了的接口復(fù)雜度,表現(xiàn)出一個明晰的進化過程,提高了每個子類的可了解性,而且為軟件開發(fā)人員提供了更每個子類的可了解性,而且為軟件開發(fā)人員提供了更多可重用的類構(gòu)件。必要時應(yīng)在領(lǐng)域?qū)<覅f(xié)助下,建多可重用的類構(gòu)件。必要時應(yīng)在領(lǐng)域?qū)<覅f(xié)助下,建立符合領(lǐng)域知識的承繼層次。立符合領(lǐng)域知識的承繼層次。. 為多態(tài)重用奠定
29、了良好根底。為多態(tài)重用奠定了良好根底。(3) 多態(tài)重用多態(tài)重用利用多態(tài)性不僅可以使對象的對外接口更加普通化利用多態(tài)性不僅可以使對象的對外接口更加普通化(基基類與派生類的許多對外接口是一樣的類與派生類的許多對外接口是一樣的),從而降低了音,從而降低了音訊銜接的復(fù)雜程度,而且還提供了一種簡便可靠的軟訊銜接的復(fù)雜程度,而且還提供了一種簡便可靠的軟構(gòu)件組合機制。系統(tǒng)運轉(zhuǎn)時,根據(jù)接納音訊的對象類構(gòu)件組合機制。系統(tǒng)運轉(zhuǎn)時,根據(jù)接納音訊的對象類型,由多態(tài)性機制啟動正確的方法,去呼應(yīng)一個普通型,由多態(tài)性機制啟動正確的方法,去呼應(yīng)一個普通化的音訊,從而簡化了音訊界面和軟構(gòu)件銜接過程?;囊粲崳瑥亩喕艘粲嵔缑?/p>
30、和軟構(gòu)件銜接過程。為充分實現(xiàn)多態(tài)重用,在設(shè)計類構(gòu)件時,應(yīng)該把留意為充分實現(xiàn)多態(tài)重用,在設(shè)計類構(gòu)件時,應(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è)備控制。 實現(xiàn)算法在未來能夠會改良實現(xiàn)算法在未來能夠會改良(或改動或改動)的中心操作。的中心操作。1. 質(zhì)量質(zhì)量隨著每一次構(gòu)件的重用,都會有一些錯誤被發(fā)現(xiàn)隨著每一次構(gòu)件的重用,都會有一些錯誤被發(fā)現(xiàn)并被去除,構(gòu)件的質(zhì)量也會隨之
31、改善。隨著時間并被去除,構(gòu)件的質(zhì)量也會隨之改善。隨著時間的推移,構(gòu)件將變本錢質(zhì)上無錯誤的。的推移,構(gòu)件將變本錢質(zhì)上無錯誤的。2. 消費率消費率當(dāng)把可重用的軟件成分運用于軟件開發(fā)的全過程當(dāng)把可重用的軟件成分運用于軟件開發(fā)的全過程時,創(chuàng)建方案、模型、文檔、代碼和數(shù)據(jù)所需破時,創(chuàng)建方案、模型、文檔、代碼和數(shù)據(jù)所需破費的時間將減少,從而將用較少的投入給客戶提費的時間將減少,從而將用較少的投入給客戶提供一樣級別的產(chǎn)品,因此,消費率得到了提高。供一樣級別的產(chǎn)品,因此,消費率得到了提高。11.3.3 軟件重用的效益軟件重用的效益3. 本錢本錢軟件重用能節(jié)省的凈本錢軟件重用能節(jié)省的凈本錢C為:為: C=Cs-
32、Cr-CdCs是工程從頭開發(fā)沒有重用時所需求的本錢;是工程從頭開發(fā)沒有重用時所需求的本錢; Cd是交付給客戶的軟件的實踐本錢;是交付給客戶的軟件的實踐本錢;Cr是與重用相關(guān)聯(lián)的本錢,主要包括下述本錢:是與重用相關(guān)聯(lián)的本錢,主要包括下述本錢: 領(lǐng)域分析與建模的本錢;領(lǐng)域分析與建模的本錢; 設(shè)計領(lǐng)域體系構(gòu)造的本錢;設(shè)計領(lǐng)域體系構(gòu)造的本錢; 為便于重用而添加的文檔的本錢;為便于重用而添加的文檔的本錢; 維護和完善可重用的軟件成分的本錢;維護和完善可重用的軟件成分的本錢; 為從外部獲取構(gòu)件所付出的版稅和答應(yīng)證為從外部獲取構(gòu)件所付出的版稅和答應(yīng)證費;費; 創(chuàng)建或購買及運轉(zhuǎn)重用庫的費用;創(chuàng)建或購買及運轉(zhuǎn)重
33、用庫的費用; 對設(shè)計和實現(xiàn)可重用構(gòu)件的人員的培訓(xùn)費對設(shè)計和實現(xiàn)可重用構(gòu)件的人員的培訓(xùn)費用。用。在設(shè)計比較復(fù)雜的運用系統(tǒng)時普遍采用的戰(zhàn)略,是在設(shè)計比較復(fù)雜的運用系統(tǒng)時普遍采用的戰(zhàn)略,是首先把系統(tǒng)分解成假設(shè)干個比較小的部分,然后再首先把系統(tǒng)分解成假設(shè)干個比較小的部分,然后再分別設(shè)計每個部分。分別設(shè)計每個部分。系統(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ī)模根本匹配。各個子系統(tǒng)之間應(yīng)該具有盡能夠簡單、明確的接口。各個子系統(tǒng)之間應(yīng)該具有盡能夠
34、簡單、明確的接口。接口確定了交互方式和經(jīng)過子系統(tǒng)邊境的信息流,接口確定了交互方式和經(jīng)過子系統(tǒng)邊境的信息流,但是無須規(guī)定子系統(tǒng)內(nèi)部的實現(xiàn)算法。因此,可以但是無須規(guī)定子系統(tǒng)內(nèi)部的實現(xiàn)算法。因此,可以相對獨立地設(shè)計各個子系統(tǒng)。相對獨立地設(shè)計各個子系統(tǒng)。在劃分和設(shè)計子系統(tǒng)時,應(yīng)該盡量減少子系統(tǒng)彼此在劃分和設(shè)計子系統(tǒng)時,應(yīng)該盡量減少子系統(tǒng)彼此間的依賴性。間的依賴性。11.4 系統(tǒng)分解系統(tǒng)分解 面向?qū)ο笤O(shè)計模型面向?qū)ο笤O(shè)計模型(即求解域的對象模型即求解域的對象模型),由下面,由下面5個層次組成:個層次組成: 主題主題 類與對象類與對象 構(gòu)造構(gòu)造 屬性屬性 效力效力這這5個層次一層比一層表示的細(xì)節(jié)更多,可以
35、把這個層次一層比一層表示的細(xì)節(jié)更多,可以把這5個層次想象為整個模型的程度切片。個層次想象為整個模型的程度切片。面向?qū)ο笤O(shè)計模型面向?qū)ο笤O(shè)計模型面向?qū)ο蠓治瞿P兔嫦驅(qū)ο蠓治瞿P?即問題域的對象模型即問題域的對象模型)面向?qū)ο笤O(shè)計模型面向?qū)ο笤O(shè)計模型面向?qū)ο笤O(shè)計模型,在邏輯上都由面向?qū)ο笤O(shè)計模型,在邏輯上都由4大部分組成:大部分組成:人機交互部分人機交互部分問題域部分問題域部分義務(wù)管理部分義務(wù)管理部分?jǐn)?shù)據(jù)管理部分?jǐn)?shù)據(jù)管理部分這這4大部分對應(yīng)于組成目的系統(tǒng)的大部分對應(yīng)于組成目的系統(tǒng)的4個子系統(tǒng):個子系統(tǒng):問題域子系統(tǒng)問題域子系統(tǒng)人機交互子系統(tǒng)人機交互子系統(tǒng)義務(wù)管理子系統(tǒng)義務(wù)管理子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)數(shù)
36、據(jù)管理子系統(tǒng)可以把面向?qū)ο笤O(shè)計模型的可以把面向?qū)ο笤O(shè)計模型的4大組成部分想象大組成部分想象成整個模型的成整個模型的4個垂直切片。個垂直切片。典型的面向?qū)ο笤O(shè)計模型可以用圖典型的面向?qū)ο笤O(shè)計模型可以用圖11.2表示。表示。圖圖11.2 典型的面向?qū)ο笤O(shè)計模型典型的面向?qū)ο笤O(shè)計模型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)系中,每個子系統(tǒng)都能夠調(diào)用其他子系在這種關(guān)系中,每個子系統(tǒng)都能夠調(diào)用其他子系統(tǒng),因此,每個子系統(tǒng)都必需了解其他子系統(tǒng)的統(tǒng),因此,每個子系統(tǒng)都必需了解其他子系統(tǒng)的接口。接口??偟恼f來,單向交互比雙向交互更容易了解,也總的說來,單向交互比雙向交互更容易了解,也更容易設(shè)計和修正,因此應(yīng)該盡量運用客戶更容易設(shè)計和修正,因此應(yīng)該盡量運用客戶-供應(yīng)供應(yīng)商關(guān)系。商關(guān)系。2. 組織系統(tǒng)的兩種方案組織系統(tǒng)的兩種方案(1)程度層次組織程度層次組織 把軟件系統(tǒng)組織成一個層次系統(tǒng),每層是一個子系把軟件系統(tǒng)組織成一個層次系統(tǒng),每層是一個子系統(tǒng)。上層在下層的根底上建立,下
38、層為實現(xiàn)上層功能而統(tǒng)。上層在下層的根底上建立,下層為實現(xiàn)上層功能而提供必要的效力。每一層內(nèi)所包含的對象,彼此間相互提供必要的效力。每一層內(nèi)所包含的對象,彼此間相互獨立,而處于不同層次上的對象,彼此間往往有關(guān)聯(lián)。獨立,而處于不同層次上的對象,彼此間往往有關(guān)聯(lián)。實踐上,在上、下層之間存在客戶實踐上,在上、下層之間存在客戶-供應(yīng)商關(guān)系。供應(yīng)商關(guān)系。 層次構(gòu)造又可進一步劃分成兩種方式:封鎖式和開層次構(gòu)造又可進一步劃分成兩種方式:封鎖式和開放式。所謂封鎖式,就是每層子系統(tǒng)僅僅運用其直接下放式。所謂封鎖式,就是每層子系統(tǒng)僅僅運用其直接下層提供的效力。在開放方式中,某層子系統(tǒng)可以運用途層提供的效力。在開放方
39、式中,某層子系統(tǒng)可以運用途于其下面的任何一層子系統(tǒng)所提供的效力。于其下面的任何一層子系統(tǒng)所提供的效力。(2)垂直塊狀組織垂直塊狀組織這種組織方案把軟件系統(tǒng)垂直地分解成假設(shè)干個相對獨這種組織方案把軟件系統(tǒng)垂直地分解成假設(shè)干個相對獨立的、弱耦合的子系統(tǒng),一個子系統(tǒng)相當(dāng)于一塊,每塊立的、弱耦合的子系統(tǒng),一個子系統(tǒng)相當(dāng)于一塊,每塊提供一種類型的效力。提供一種類型的效力。利用層次和塊的各種能夠的組合,可以勝利地由多利用層次和塊的各種能夠的組合,可以勝利地由多個子系統(tǒng)組成一個完好的軟件系統(tǒng)。當(dāng)混合運用層個子系統(tǒng)組成一個完好的軟件系統(tǒng)。當(dāng)混合運用層次構(gòu)造和塊狀構(gòu)造時,同一層次可以由假設(shè)干塊組次構(gòu)造和塊狀構(gòu)造
40、時,同一層次可以由假設(shè)干塊組成,而同一塊也可以分為假設(shè)干層。成,而同一塊也可以分為假設(shè)干層。例如,圖例如,圖11.3表示一個運用系統(tǒng)的組織構(gòu)造,這個表示一個運用系統(tǒng)的組織構(gòu)造,這個運用系統(tǒng)采用了層次與塊狀的混合構(gòu)造。運用系統(tǒng)采用了層次與塊狀的混合構(gòu)造。圖圖11.3 典型運用系統(tǒng)的組織構(gòu)造典型運用系統(tǒng)的組織構(gòu)造3. 設(shè)計系統(tǒng)的拓?fù)錁?gòu)造設(shè)計系統(tǒng)的拓?fù)錁?gòu)造由子系統(tǒng)組成完好的系統(tǒng)時,典型的拓?fù)錁?gòu)造有:由子系統(tǒng)組成完好的系統(tǒng)時,典型的拓?fù)錁?gòu)造有: 管道形管道形 樹形樹形 星形星形設(shè)計者應(yīng)該采用與問題構(gòu)造相順應(yīng)的、盡能夠簡單設(shè)計者應(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īng)過面向?qū)ο蠓治鏊贸龅膯栴}域準(zhǔn)確模型,為設(shè)計問題域子系統(tǒng)奠定了良好的根底,建立了完好的框架。只需能域子系統(tǒng)奠定了良好的根底,建立了完好的框架。只需能夠,就應(yīng)該堅持面向?qū)ο蠓治鏊⒌膯栴}域構(gòu)造。通常,夠,就應(yīng)該堅持面向?qū)ο蠓治鏊⒌膯栴}域構(gòu)造。通常,面向?qū)ο笤O(shè)計僅需從實現(xiàn)角度對問題域模型做一些補充或面向?qū)ο笤O(shè)計僅需從實現(xiàn)角度對問題域模型做一些補充或修正,主要是增添、合并或分解類與對象、屬性及效力,修正,主要是增添、合并或分解類與對象、屬性及效力,調(diào)整承繼關(guān)系等等。當(dāng)問題域子系統(tǒng)過分復(fù)雜龐大時,應(yīng)調(diào)整
42、承繼關(guān)系等等。當(dāng)問題域子系統(tǒng)過分復(fù)雜龐大時,應(yīng)該把它進一步分解成假設(shè)干個更小的子系統(tǒng)。該把它進一步分解成假設(shè)干個更小的子系統(tǒng)。運用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件,可以堅持問題域組織框架運用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件,可以堅持問題域組織框架的穩(wěn)定性,從而便于追蹤分析、設(shè)計和編程的結(jié)果。在設(shè)的穩(wěn)定性,從而便于追蹤分析、設(shè)計和編程的結(jié)果。在設(shè)計與實現(xiàn)過程中所做的細(xì)節(jié)修正計與實現(xiàn)過程中所做的細(xì)節(jié)修正(例如,添加詳細(xì)類,添加例如,添加詳細(xì)類,添加屬性或效力屬性或效力),并不影響開發(fā)結(jié)果的穩(wěn)定性,由于系統(tǒng)的總,并不影響開發(fā)結(jié)果的穩(wěn)定性,由于系統(tǒng)的總體框架是基于問題域的。體框架是基于問題域的。11.5 設(shè)計問題域子系統(tǒng)
43、設(shè)計問題域子系統(tǒng)1. 調(diào)整需求調(diào)整需求有兩種情況:有兩種情況: 用戶需求或外部環(huán)境發(fā)生了變化;用戶需求或外部環(huán)境發(fā)生了變化; 面向?qū)ο蠓治瞿P筒荒芡旰谩?zhǔn)確地反映用戶的真面向?qū)ο蠓治瞿P筒荒芡旰?、?zhǔn)確地反映用戶的真實需求。實需求。方法是:簡單地修正面向?qū)ο蠓治鼋Y(jié)果,然后再把這方法是:簡單地修正面向?qū)ο蠓治鼋Y(jié)果,然后再把這些修正反映到問題域子系統(tǒng)中。些修正反映到問題域子系統(tǒng)中。2. 重用已有的類重用已有的類3. 把問題域類組合在一同把問題域類組合在一同在面向?qū)ο笤O(shè)計過程中,設(shè)計者往往經(jīng)過引入一個根在面向?qū)ο笤O(shè)計過程中,設(shè)計者往往經(jīng)過引入一個根類而把問題域類組合在一同。類而把問題域類組合在一同。在
44、面向?qū)ο笤O(shè)計過程中,能夠?qū)γ嫦驅(qū)ο蠓治鏊迷诿嫦驅(qū)ο笤O(shè)計過程中,能夠?qū)γ嫦驅(qū)ο蠓治鏊贸龅膯栴}域模型做的補充或修正如下:出的問題域模型做的補充或修正如下:4. 增添普通化類以建立協(xié)議增添普通化類以建立協(xié)議在設(shè)計過程中,常有一些詳細(xì)類需求一個公共的協(xié)議,在設(shè)計過程中,常有一些詳細(xì)類需求一個公共的協(xié)議,即需求定義一組類似的效力。在這種情況下可以引入即需求定義一組類似的效力。在這種情況下可以引入一個附加類一個附加類(例如,根類例如,根類),以便建立這個協(xié)議,以便建立這個協(xié)議(即命名即命名公共效力集合,這些效力在詳細(xì)類中仔細(xì)定義公共效力集合,這些效力在詳細(xì)類中仔細(xì)定義)。5. 調(diào)整承繼層次調(diào)整承繼層次
45、(1) 運用多重承繼機制運用多重承繼機制運用多重承繼機制時,應(yīng)該防止出現(xiàn)屬性及效力的命運用多重承繼機制時,應(yīng)該防止出現(xiàn)屬性及效力的命名沖突。下面經(jīng)過例子闡明防止命名沖突的方法。名沖突。下面經(jīng)過例子闡明防止命名沖突的方法。圖圖11.4 窄菱形方式窄菱形方式圖圖11.4是一種多重承繼方是一種多重承繼方式的例子,這種方式可以式的例子,這種方式可以稱為窄菱形方式。運用這稱為窄菱形方式。運用這種方式時出現(xiàn)屬性及效力種方式時出現(xiàn)屬性及效力命名沖突的能夠性比較大。命名沖突的能夠性比較大。圖圖11.5見書見書262頁是另頁是另一種多重承繼方式,稱為一種多重承繼方式,稱為闊菱形方式。運用這種方闊菱形方式。運用這
46、種方式時,屬性及效力的名字式時,屬性及效力的名字發(fā)生沖突的能夠性比較小,發(fā)生沖突的能夠性比較小,但是,它需求用更多的類但是,它需求用更多的類才干表示同一個設(shè)計。才干表示同一個設(shè)計。圖圖11.6 把多重承繼簡化為單一層次的單承繼把多重承繼簡化為單一層次的單承繼常見的做法是,把多常見的做法是,把多重承繼構(gòu)造簡化成單重承繼構(gòu)造簡化成單一的單承繼層次構(gòu)造,一的單承繼層次構(gòu)造,如圖如圖11.6所示。顯然,所示。顯然,在多重承繼構(gòu)造中的在多重承繼構(gòu)造中的某些承繼關(guān)系,經(jīng)簡某些承繼關(guān)系,經(jīng)簡化后將不再存在,這化后將不再存在,這闡明需求在各個詳細(xì)闡明需求在各個詳細(xì)類中反復(fù)定義某些屬類中反復(fù)定義某些屬性和效力。
47、性和效力。(2) 運用單承繼機制運用單承繼機制假設(shè)計劃運用僅提供單承繼機制的言語實現(xiàn)系統(tǒng),假設(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)實例系統(tǒng)實例圖圖11.7描畫了上章給出的描畫了上章給出的ATM系統(tǒng)的問題域子系統(tǒng)的構(gòu)造。系統(tǒng)的問題域子系統(tǒng)的構(gòu)造。在面向?qū)ο笤O(shè)計階段無須對已有的問題域模型作本質(zhì)性的在面向?qū)ο笤O(shè)計階段無須對已有的問題域模型作本質(zhì)性的修正或擴展。修正或擴展。圖圖11.7 ATM系統(tǒng)問題域子系統(tǒng)的構(gòu)造系統(tǒng)問題域子系統(tǒng)的構(gòu)造設(shè)計人機交互子系統(tǒng)的戰(zhàn)略:設(shè)
48、計人機交互子系統(tǒng)的戰(zhàn)略:1. 分類用戶分類用戶通常從以下幾個不同角度進展分類:通常從以下幾個不同角度進展分類:按技藝程度分類按技藝程度分類(新手、初級、中級、高級新手、初級、中級、高級)。按職務(wù)分類按職務(wù)分類(總經(jīng)理、經(jīng)理、職員總經(jīng)理、經(jīng)理、職員)。按所屬集團分類按所屬集團分類(職員、顧客職員、顧客)。11.6 設(shè)計人機交互子系統(tǒng)設(shè)計人機交互子系統(tǒng)2. 描畫用戶描畫用戶描畫用戶信息有:描畫用戶信息有:用戶類型。用戶類型。運用系統(tǒng)欲到達(dá)的目的。運用系統(tǒng)欲到達(dá)的目的。特征特征(年齡、性別、受教育程度、限制要素等年齡、性別、受教育程度、限制要素等)。關(guān)鍵的勝利要素關(guān)鍵的勝利要素(需求、喜好、習(xí)慣等需
49、求、喜好、習(xí)慣等)。技藝程度。技藝程度。完本錢職任務(wù)的腳本。完本錢職任務(wù)的腳本。3. 設(shè)計命令層次設(shè)計命令層次(1) 研討現(xiàn)有的人機交互含義和準(zhǔn)那么研討現(xiàn)有的人機交互含義和準(zhǔn)那么(2) 確定初始的命令層次確定初始的命令層次所謂命令層次,本質(zhì)上是用過程籠統(tǒng)機制組織起來的、所謂命令層次,本質(zhì)上是用過程籠統(tǒng)機制組織起來的、可供選用的效力的表示方式。可供選用的效力的表示方式。設(shè)計命令層次時,通常先從對效力的過程籠統(tǒng)著手,設(shè)計命令層次時,通常先從對效力的過程籠統(tǒng)著手,然后再進一步修正它們,以適宜詳細(xì)運用環(huán)境的需求。然后再進一步修正它們,以適宜詳細(xì)運用環(huán)境的需求。(3) 精化命令層次精化命令層次應(yīng)該思索以
50、下一些要素:應(yīng)該思索以下一些要素:次序:仔細(xì)選擇每個效力的名字,并在命令層的每一次序:仔細(xì)選擇每個效力的名字,并在命令層的每一部分內(nèi)把效力排好次序。部分內(nèi)把效力排好次序。整體整體-部分關(guān)系:尋覓在這些效力中存在的整體部分關(guān)系:尋覓在這些效力中存在的整體-部分方部分方式,這樣做有助于在命令層中分組組織效力。式,這樣做有助于在命令層中分組組織效力。寬度和深度:命令層次的寬度和深度都不應(yīng)該過大。寬度和深度:命令層次的寬度和深度都不應(yīng)該過大。操作步驟:應(yīng)該用盡量少的單擊、拖動和擊鍵組合來操作步驟:應(yīng)該用盡量少的單擊、拖動和擊鍵組合來表達(dá)命令,而且應(yīng)該為高級用戶提供簡捷的操作方法。表達(dá)命令,而且應(yīng)該為高
51、級用戶提供簡捷的操作方法。4. 設(shè)計人機交互類設(shè)計人機交互類人機交互類與所運用的操作系統(tǒng)及編程言語親密相關(guān)。人機交互類與所運用的操作系統(tǒng)及編程言語親密相關(guān)。例如,在例如,在Windows環(huán)境下運轉(zhuǎn)的環(huán)境下運轉(zhuǎn)的Visual C+言語提供言語提供了了MFC類庫,設(shè)計人機交互類時,往往僅需從類庫,設(shè)計人機交互類時,往往僅需從MFC類庫中選出一些適用的類,然后從這些類派生出符合類庫中選出一些適用的類,然后從這些類派生出符合本人需求的類就可以了。本人需求的類就可以了。設(shè)計任務(wù)的一項重要內(nèi)容就是,確定哪些是必需同時動作設(shè)計任務(wù)的一項重要內(nèi)容就是,確定哪些是必需同時動作的對象,哪些是相互排斥的對象。然后進
52、一步設(shè)計義務(wù)管的對象,哪些是相互排斥的對象。然后進一步設(shè)計義務(wù)管理子系統(tǒng)。理子系統(tǒng)。11.7 設(shè)計義務(wù)管理子系統(tǒng)設(shè)計義務(wù)管理子系統(tǒng)1. 分析并發(fā)性分析并發(fā)性經(jīng)過面向?qū)ο蠓治鼋⑵饋淼膭討B(tài)模型,是分析并發(fā)性的經(jīng)過面向?qū)ο蠓治鼋⑵饋淼膭討B(tài)模型,是分析并發(fā)性的主要根據(jù)。假設(shè)兩個對象彼此間不存在交互,或者它們同主要根據(jù)。假設(shè)兩個對象彼此間不存在交互,或者它們同時接受事件,那么這兩個對象在本質(zhì)上是并發(fā)的。時接受事件,那么這兩個對象在本質(zhì)上是并發(fā)的。經(jīng)過檢查各個對象的形狀圖及它們之間交換的事件,可以經(jīng)過檢查各個對象的形狀圖及它們之間交換的事件,可以把假設(shè)干個非并發(fā)的對象歸并到一條控制線中。所謂控制把假設(shè)
53、干個非并發(fā)的對象歸并到一條控制線中。所謂控制線,是一條普及形狀圖集合的途徑,在這條途徑上每次只線,是一條普及形狀圖集合的途徑,在這條途徑上每次只需一個對象是活動的。在計算機系統(tǒng)中用義務(wù)需一個對象是活動的。在計算機系統(tǒng)中用義務(wù)(task)實現(xiàn)控實現(xiàn)控制線,普通以為義務(wù)是進程制線,普通以為義務(wù)是進程(process)的別名。通常把多個義的別名。通常把多個義務(wù)的并發(fā)執(zhí)行稱為多義務(wù)。務(wù)的并發(fā)執(zhí)行稱為多義務(wù)。對于某些運用系統(tǒng)來說,經(jīng)過劃分義務(wù),可以簡化系統(tǒng)的對于某些運用系統(tǒng)來說,經(jīng)過劃分義務(wù),可以簡化系統(tǒng)的設(shè)計及編碼任務(wù)。不同的義務(wù)標(biāo)識了必需同時發(fā)生的不同設(shè)計及編碼任務(wù)。不同的義務(wù)標(biāo)識了必需同時發(fā)生的不
54、同行為。這種并發(fā)行為既可以在不同的處置器上實現(xiàn),也可行為。這種并發(fā)行為既可以在不同的處置器上實現(xiàn),也可以在單個處置器上利用多義務(wù)操作系統(tǒng)仿真實現(xiàn)以在單個處置器上利用多義務(wù)操作系統(tǒng)仿真實現(xiàn)(通常采用通常采用時間分片戰(zhàn)略仿真多處置器環(huán)境時間分片戰(zhàn)略仿真多處置器環(huán)境)。2. 設(shè)計義務(wù)管理子系統(tǒng)設(shè)計義務(wù)管理子系統(tǒng)常見的義務(wù)有事件驅(qū)動型義務(wù)、時鐘驅(qū)動型義務(wù)、優(yōu)先義常見的義務(wù)有事件驅(qū)動型義務(wù)、時鐘驅(qū)動型義務(wù)、優(yōu)先義務(wù)、關(guān)鍵義務(wù)和協(xié)調(diào)義務(wù)等。設(shè)計義務(wù)管理子系統(tǒng),包括務(wù)、關(guān)鍵義務(wù)和協(xié)調(diào)義務(wù)等。設(shè)計義務(wù)管理子系統(tǒng),包括確定各類義務(wù)并把義務(wù)分配給適當(dāng)?shù)挠布蜍浖?zhí)行。確定各類義務(wù)并把義務(wù)分配給適當(dāng)?shù)挠布蜍浖?/p>
55、執(zhí)行。1 確定事件驅(qū)動型義務(wù)確定事件驅(qū)動型義務(wù)某些義務(wù)是由事件驅(qū)動的,這類義務(wù)能夠主要完成通訊任某些義務(wù)是由事件驅(qū)動的,這類義務(wù)能夠主要完成通訊任務(wù)。例如,與設(shè)備、屏幕窗口、其他義務(wù)、子系統(tǒng)、另一務(wù)。例如,與設(shè)備、屏幕窗口、其他義務(wù)、子系統(tǒng)、另一個處置器或其他系統(tǒng)通訊。事件通常是闡明某些數(shù)據(jù)到達(dá)個處置器或其他系統(tǒng)通訊。事件通常是闡明某些數(shù)據(jù)到達(dá)的信號。的信號。在系統(tǒng)運轉(zhuǎn)時,這類義務(wù)的任務(wù)過程如下:義務(wù)處于睡眠在系統(tǒng)運轉(zhuǎn)時,這類義務(wù)的任務(wù)過程如下:義務(wù)處于睡眠形狀形狀(不耗費處置器時間不耗費處置器時間),等待來自數(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ū)或其他目的地,通知需求知道這件事的對象,然后該義務(wù)又回到睡眠形狀。對象,然后該義務(wù)又回到睡眠形狀。2 確定時鐘驅(qū)動型義務(wù)確定時鐘驅(qū)動型義務(wù)某些義務(wù)每隔一定時間間隔就被觸發(fā)以執(zhí)行某些處置。在某些義務(wù)每隔一定時間間隔就被觸發(fā)以執(zhí)行某些處置。在這些場所往往需求運用時鐘驅(qū)動型義務(wù)。這些場所往往需求運用時鐘驅(qū)動型義務(wù)。時鐘驅(qū)動型義務(wù)的任務(wù)過程如下:義務(wù)設(shè)置了喚醒時間后時鐘驅(qū)動型義務(wù)的任務(wù)過程如下:義務(wù)設(shè)置了喚醒時間后進入睡眠形狀;義務(wù)睡眠進入睡眠形狀;義務(wù)睡眠(不耗費處置器
57、時間不耗費處置器時間),等待來自,等待來自系統(tǒng)的中斷;一旦接納到這種中斷,義務(wù)就被喚醒并做它系統(tǒng)的中斷;一旦接納到這種中斷,義務(wù)就被喚醒并做它的任務(wù),通知有關(guān)的對象,然后該義務(wù)又回到睡眠形狀。的任務(wù),通知有關(guān)的對象,然后該義務(wù)又回到睡眠形狀。3 確定優(yōu)先義務(wù)確定優(yōu)先義務(wù)優(yōu)先義務(wù)可以滿足高優(yōu)先級或低優(yōu)先級的處置需求:優(yōu)先義務(wù)可以滿足高優(yōu)先級或低優(yōu)先級的處置需求:高優(yōu)先級:某些效力具有很高的優(yōu)先級,為了在嚴(yán)厲限定高優(yōu)先級:某些效力具有很高的優(yōu)先級,為了在嚴(yán)厲限定的時間內(nèi)完成這種效力,能夠需求把這類效力分別成獨立的時間內(nèi)完成這種效力,能夠需求把這類效力分別成獨立的義務(wù)。的義務(wù)。低優(yōu)先級:與高優(yōu)先級相
58、反,有些效力是低優(yōu)先級的,屬低優(yōu)先級:與高優(yōu)先級相反,有些效力是低優(yōu)先級的,屬于低優(yōu)先級處置于低優(yōu)先級處置(通常指那些背景處置通常指那些背景處置)。設(shè)計時能夠用額。設(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è)計過程中能夠用額外的義務(wù)把這樣的關(guān)鍵處置分在設(shè)計過程中能夠用額外的義務(wù)把這樣的關(guān)鍵處置分別出來,以滿足高可靠性處置的要求。對高可靠性處別出來,以滿足高可靠性處置的要求。對高可靠性處置
59、應(yīng)該精心設(shè)計和編碼,并且應(yīng)該嚴(yán)厲測試。置應(yīng)該精心設(shè)計和編碼,并且應(yīng)該嚴(yán)厲測試。5 確定協(xié)調(diào)義務(wù)確定協(xié)調(diào)義務(wù)當(dāng)系統(tǒng)中存在當(dāng)系統(tǒng)中存在3個以上義務(wù)時,就應(yīng)該添加一個義務(wù),個以上義務(wù)時,就應(yīng)該添加一個義務(wù),用它作為協(xié)調(diào)義務(wù)。用它作為協(xié)調(diào)義務(wù)。引入?yún)f(xié)調(diào)義務(wù)會添加系統(tǒng)的總開銷引入?yún)f(xié)調(diào)義務(wù)會添加系統(tǒng)的總開銷(添加從一個義務(wù)到添加從一個義務(wù)到另一個義務(wù)的轉(zhuǎn)換時間另一個義務(wù)的轉(zhuǎn)換時間),但是引入?yún)f(xié)調(diào)義務(wù)有助于把,但是引入?yún)f(xié)調(diào)義務(wù)有助于把不同義務(wù)之間的協(xié)調(diào)控制封裝起來。運用形狀轉(zhuǎn)換矩不同義務(wù)之間的協(xié)調(diào)控制封裝起來。運用形狀轉(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ì)分析和選擇每個確實需求的義務(wù)。應(yīng)該使系必需仔細(xì)分析和選擇每個確實需求的義務(wù)。應(yīng)該使系統(tǒng)中包含的義務(wù)數(shù)盡量少。統(tǒng)中包含的義務(wù)數(shù)盡量少。7 確定資源需求確定資源需求設(shè)計者在決議究竟采用軟件還是硬件的時候,必需綜設(shè)計者在決議究竟采用軟件還是硬件的時候,必需綜合權(quán)衡一致性、本錢、性能等多種要素,還要思索未合權(quá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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 破局之作新車發(fā)布
- 農(nóng)業(yè)智變探秘
- 農(nóng)學(xué)專業(yè)技能解析
- 2024年版:勞動合同解除協(xié)議書
- 揭秘社科統(tǒng)計
- 多方合作項目協(xié)議書
- 2024年版建筑項目中介服務(wù)協(xié)議范本版B版
- 貨架銷售合同
- 干掛石材合同書
- 個人養(yǎng)豬場所有權(quán)變更合同版B版
- 《小學(xué)教育中家校合作存在的問題及完善對策研究》7200字(論文)
- 2025年國務(wù)院發(fā)展研究中心信息中心招聘2人高頻重點提升(共500題)附帶答案詳解
- 人工智能算法模型定制開發(fā)合同
- 申請行政復(fù)議的申請書范文模板
- 【MOOC期末】《形勢與政策》(北京科技大學(xué))期末慕課答案
- 2024年醫(yī)療健康知識科普視頻制作合同3篇
- 2024年古董古玩買賣協(xié)議6篇
- QC/T 1209-2024汽車噪聲與振動(NVH)術(shù)語和定義
- 安全風(fēng)險隱患舉報獎勵制度
- 江蘇省蘇州市2023-2024學(xué)年高三上學(xué)期期末考試 數(shù)學(xué) 含答案
- 教學(xué)成果獎培育工作方案
評論
0/150
提交評論