第9章軟件詳細設計_第1頁
第9章軟件詳細設計_第2頁
第9章軟件詳細設計_第3頁
第9章軟件詳細設計_第4頁
第9章軟件詳細設計_第5頁
已閱讀5頁,還剩121頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第九章第九章 軟件詳細設計軟件詳細設計9.1 9.1 詳細設計的任務與過程模型詳細設計的任務與過程模型9.2 9.2 用例設計用例設計9.3 9.3 子系統(tǒng)設計子系統(tǒng)設計9.4 9.4 構(gòu)件設計構(gòu)件設計9.5 9.5 類設計類設計9.6 9.6 數(shù)據(jù)模型設計數(shù)據(jù)模型設計9.7 9.7 設計整合與驗證設計整合與驗證2021-12-281軟件詳細設計軟件詳細設計本章介紹本章介紹詳細設計的主要工作任務、用以指導完成詳細設計的主要工作任務、用以指導完成這些任務的詳細設計過程模型這些任務的詳細設計過程模型探討詳細設計過程中的七大主要活動探討詳細設計過程中的七大主要活動 用例設計、子系統(tǒng)設計、構(gòu)件設計、類

2、設用例設計、子系統(tǒng)設計、構(gòu)件設計、類設計、數(shù)據(jù)模型設計、設計整合及詳細設計計、數(shù)據(jù)模型設計、設計整合及詳細設計驗證驗證活動涉及的過程、技術(shù)和方法?;顒由婕暗倪^程、技術(shù)和方法。2021-12-2829.19.1詳細設計的任務與過程模型詳細設計的任務與過程模型詳細設計的詳細設計的任務任務: 對體系結(jié)構(gòu)設計和界面設計的成果進行細化和對體系結(jié)構(gòu)設計和界面設計的成果進行細化和精化,最終獲得高質(zhì)量的詳細設計模型。精化,最終獲得高質(zhì)量的詳細設計模型。詳細設計模型的質(zhì)量詳細設計模型的質(zhì)量要素要素:正確性正確性模型中若干設計元素通過模型指定模型中若干設計元素通過模型指定的協(xié)作方式能夠?qū)崿F(xiàn)所有的軟件需求;的協(xié)作方

3、式能夠?qū)崿F(xiàn)所有的軟件需求;優(yōu)化性優(yōu)化性模型以充分優(yōu)化的方式實現(xiàn)所有的模型以充分優(yōu)化的方式實現(xiàn)所有的軟件需求;軟件需求;設計充分性設計充分性模型的細化和精確程度足以作模型的細化和精確程度足以作為軟件編程人員的全部工作基礎,沒有含混、為軟件編程人員的全部工作基礎,沒有含混、籠統(tǒng)和歧義之處?;\統(tǒng)和歧義之處。2021-12-283詳細設計過程的主要活動詳細設計過程的主要活動(1 1)用例設計用例設計針對需求分析模型中的每個用例,基于體針對需求分析模型中的每個用例,基于體系結(jié)構(gòu)和用戶界面設計模型給出的設計元系結(jié)構(gòu)和用戶界面設計模型給出的設計元素,設計用例的軟件實現(xiàn)方案。素,設計用例的軟件實現(xiàn)方案。通過詳

4、細考察每個設計元素與其他設計元通過詳細考察每個設計元素與其他設計元素協(xié)同完成用例功能的過程,可以更素協(xié)同完成用例功能的過程,可以更精確精確地定義這些設計元素地定義這些設計元素。2021-12-284詳細設計過程的主要活動詳細設計過程的主要活動(2 2)子系統(tǒng)設計子系統(tǒng)設計體系結(jié)構(gòu)設計活動僅設定了子系統(tǒng)的職責體系結(jié)構(gòu)設計活動僅設定了子系統(tǒng)的職責和對外接口,并未深究子系統(tǒng)的內(nèi)部實現(xiàn)和對外接口,并未深究子系統(tǒng)的內(nèi)部實現(xiàn)方案。方案。子系統(tǒng)設計的任務子系統(tǒng)設計的任務:確定子系統(tǒng)內(nèi)部的結(jié)確定子系統(tǒng)內(nèi)部的結(jié)構(gòu),即,設置包含于其中的更小粒度的子構(gòu),即,設置包含于其中的更小粒度的子系統(tǒng)、構(gòu)件和設計類,明確它們之

5、間的協(xié)系統(tǒng)、構(gòu)件和設計類,明確它們之間的協(xié)作關(guān)系,確保它們能夠協(xié)同實現(xiàn)子系統(tǒng)接作關(guān)系,確保它們能夠協(xié)同實現(xiàn)子系統(tǒng)接口規(guī)定的所有功能和行為??谝?guī)定的所有功能和行為。2021-12-285詳細設計過程的主要活動詳細設計過程的主要活動(3 3)構(gòu)件設計構(gòu)件設計類似于子系統(tǒng)設計,構(gòu)件設計是對體系結(jié)類似于子系統(tǒng)設計,構(gòu)件設計是對體系結(jié)構(gòu)設計活動中設定的構(gòu)件的內(nèi)部實現(xiàn)方案構(gòu)設計活動中設定的構(gòu)件的內(nèi)部實現(xiàn)方案的設計,任務是定義構(gòu)件內(nèi)部的設計元素的設計,任務是定義構(gòu)件內(nèi)部的設計元素及協(xié)作方法。及協(xié)作方法。構(gòu)件的內(nèi)部元素既可以是構(gòu)件的內(nèi)部元素既可以是類類,也可以是粒,也可以是粒度更細的(子)度更細的(子)構(gòu)件構(gòu)

6、件。2021-12-286詳細設計過程的主要活動詳細設計過程的主要活動(4 4)類設計類設計軟件設計活動圍繞軟件需求的實現(xiàn)設定了軟件設計活動圍繞軟件需求的實現(xiàn)設定了許多類,包括界面類、直接出現(xiàn)于體系結(jié)許多類,包括界面類、直接出現(xiàn)于體系結(jié)構(gòu)中的關(guān)鍵設計類、實現(xiàn)用例功能或行為構(gòu)中的關(guān)鍵設計類、實現(xiàn)用例功能或行為的設計類、子系統(tǒng)或構(gòu)件中的設計類。的設計類、子系統(tǒng)或構(gòu)件中的設計類。類設計負責對這些類進行必要的設計精化,類設計負責對這些類進行必要的設計精化,使之精細到可以提交軟件實現(xiàn)的程度。使之精細到可以提交軟件實現(xiàn)的程度。具體的類設計工作包括:具體的類設計工作包括:確定類的可見范確定類的可見范圍,定義

7、類的操作和屬性,精化類之間的圍,定義類的操作和屬性,精化類之間的關(guān)系,等。關(guān)系,等。2021-12-287詳細設計過程的主要活動詳細設計過程的主要活動(5 5)數(shù)據(jù)模型數(shù)據(jù)模型設計設計數(shù)據(jù)模型數(shù)據(jù)模型指指,需要持久保存的數(shù)據(jù)條目的內(nèi)容及需要持久保存的數(shù)據(jù)條目的內(nèi)容及條目之間的邏輯聯(lián)系。條目之間的邏輯聯(lián)系。數(shù)據(jù)模型還包含持久存儲機制提供的優(yōu)化數(shù)據(jù)操數(shù)據(jù)模型還包含持久存儲機制提供的優(yōu)化數(shù)據(jù)操作性能的特殊設施作性能的特殊設施u如,關(guān)系數(shù)據(jù)庫中的存儲過程。如,關(guān)系數(shù)據(jù)庫中的存儲過程。數(shù)據(jù)模型設計活動包括:數(shù)據(jù)模型設計活動包括:u 確定設計模型中類的對象、這些對象的哪些屬性需確定設計模型中類的對象、這些

8、對象的哪些屬性需要持久保存;要持久保存;u 在設計模型與持久存儲機制支持的數(shù)據(jù)組織方式在設計模型與持久存儲機制支持的數(shù)據(jù)組織方式(例如關(guān)系數(shù)據(jù)庫中的表、關(guān)鍵字、外鍵等)之間進(例如關(guān)系數(shù)據(jù)庫中的表、關(guān)鍵字、外鍵等)之間進行映射;行映射;u 為提高數(shù)據(jù)存儲、操作的性能為提高數(shù)據(jù)存儲、操作的性能,設計持久存儲機制設計持久存儲機制的優(yōu)化設施。的優(yōu)化設施。2021-12-288詳細設計過程的主要活動詳細設計過程的主要活動(6 6)設計整合與驗證。設計整合與驗證。整合前面獲得的所有設計模型,檢查并消解它整合前面獲得的所有設計模型,檢查并消解它們之間的不一致性,剔除冗余性,以用例為導們之間的不一致性,剔除

9、冗余性,以用例為導引構(gòu)建設計模型中所有元素協(xié)力完成用例目標引構(gòu)建設計模型中所有元素協(xié)力完成用例目標的完整視圖,最終形成設計規(guī)約。的完整視圖,最終形成設計規(guī)約?;谠撛O計規(guī)約,重新審視所有軟件需求項的基于該設計規(guī)約,重新審視所有軟件需求項的實現(xiàn)方案,研究如何化解迄今標識出來的所有實現(xiàn)方案,研究如何化解迄今標識出來的所有重要的全局風險,在此過程中驗證詳細設計的重要的全局風險,在此過程中驗證詳細設計的正確性、優(yōu)化性和設計充分性。正確性、優(yōu)化性和設計充分性。對中、大型軟件項目,上述詳細設計過程往往對中、大型軟件項目,上述詳細設計過程往往需要迭代多次需要迭代多次,經(jīng)過反復求精后才能獲得高質(zhì),經(jīng)過反復求精

10、后才能獲得高質(zhì)量的軟件設計模型。迭代的方式與體系結(jié)構(gòu)設量的軟件設計模型。迭代的方式與體系結(jié)構(gòu)設計過程類似,見計過程類似,見7.37.3節(jié)。節(jié)。2021-12-2899.2 9.2 用例設計用例設計用例用例設計設計:針對針對軟件需求的分析模型中的每個用例,軟件需求的分析模型中的每個用例,在前述的體系結(jié)構(gòu)設計和界面設計給出的設計元素在前述的體系結(jié)構(gòu)設計和界面設計給出的設計元素的基礎上,設計用例的詳細實現(xiàn)方案。的基礎上,設計用例的詳細實現(xiàn)方案。u用例設計活動用例設計活動要要確保界面設計模型、體系結(jié)構(gòu)模型與確保界面設計模型、體系結(jié)構(gòu)模型與軟件需求的符合性。軟件需求的符合性。用例設計的主要任務用例設計的

11、主要任務(1 1)針對每個用例,聯(lián)合采用體系結(jié)構(gòu)設計中確定針對每個用例,聯(lián)合采用體系結(jié)構(gòu)設計中確定的軟件設計元素(包括子系統(tǒng)、構(gòu)件、關(guān)鍵設計的軟件設計元素(包括子系統(tǒng)、構(gòu)件、關(guān)鍵設計類),以及用戶界面設計中確定的界面類(包括屏類),以及用戶界面設計中確定的界面類(包括屏幕類及輸入表格類),幕類及輸入表格類),完整地實現(xiàn)每個用例要求的完整地實現(xiàn)每個用例要求的業(yè)務處理功能和交互動作序列業(yè)務處理功能和交互動作序列。(2 2)通過詳細考察每個設計元素與其協(xié)作者之間的通過詳細考察每個設計元素與其協(xié)作者之間的協(xié)作關(guān)系,以求協(xié)作關(guān)系,以求更精確地定義這些設計元素更精確地定義這些設計元素,例如,例如補齊必要的

12、細節(jié),調(diào)整接口定義等。補齊必要的細節(jié),調(diào)整接口定義等。2021-12-2810用例設計用例設計用例設計的首要活動就是用例設計的首要活動就是,以體系結(jié)構(gòu)設,以體系結(jié)構(gòu)設計模型和界面設計模型中的設計元素替代計模型和界面設計模型中的設計元素替代UMLUML交互圖中的分析類,通過設計元素的職交互圖中的分析類,通過設計元素的職責及其交互協(xié)作完整地實現(xiàn)用例。此項活責及其交互協(xié)作完整地實現(xiàn)用例。此項活動稱為動稱為用例實現(xiàn)方案的(詳細)設計。用例實現(xiàn)方案的(詳細)設計。2021-12-2811用例設計用例設計用例設計的子活動歸納如下:用例設計的子活動歸納如下:(1 1)設計用例實現(xiàn)方案;設計用例實現(xiàn)方案;(2

13、 2)導出設計類圖;導出設計類圖;(3 3)整合并優(yōu)化用例實現(xiàn)方案。整合并優(yōu)化用例實現(xiàn)方案。2021-12-28129.2.1 9.2.1 設計用例實現(xiàn)方案設計用例實現(xiàn)方案a)a)按照按照用例逐個給出用例逐個給出用用UMLUML交互圖表示的軟交互圖表示的軟件實現(xiàn)方案件實現(xiàn)方案,研究分析模型中該用例的研究分析模型中該用例的UMLUML交互圖表示交互圖表示,它是生成基于設計元素,它是生成基于設計元素的用例實現(xiàn)方案的主要基礎。的用例實現(xiàn)方案的主要基礎。b)b)需要研究體系結(jié)構(gòu)模型和界面設計模型中需要研究體系結(jié)構(gòu)模型和界面設計模型中與當前待設計的與當前待設計的用例相關(guān)的設計元素用例相關(guān)的設計元素,它,

14、它們構(gòu)成用例實現(xiàn)方案的實際參與者。們構(gòu)成用例實現(xiàn)方案的實際參與者。c)c)研究研究與當前待設計的與當前待設計的用例相關(guān)的非功能性用例相關(guān)的非功能性需求項需求項,設計師在用例實現(xiàn)方案的設計過,設計師在用例實現(xiàn)方案的設計過程中必須給出其實現(xiàn)方法。程中必須給出其實現(xiàn)方法。2021-12-2813設計用例實現(xiàn)方案設計用例實現(xiàn)方案分析模型已給出基于分析類的用例實現(xiàn)方案,要明分析模型已給出基于分析類的用例實現(xiàn)方案,要明確分析類的職責與設計元素的操作之間的對應關(guān)系,確分析類的職責與設計元素的操作之間的對應關(guān)系,將需求分析階段生成的將需求分析階段生成的UMLUML交互圖轉(zhuǎn)換成設計階段交互圖轉(zhuǎn)換成設計階段需要的

15、交互圖需要的交互圖。分析類與設計元素的對應關(guān)系多種多樣,可能的情分析類與設計元素的對應關(guān)系多種多樣,可能的情形包括:形包括:(1 1)一個分析類的一項職責由一個設計元素的單項一個分析類的一項職責由一個設計元素的單項操作完整地實現(xiàn)。操作完整地實現(xiàn)。 這種情形最簡單,從分析模型中的交互圖到設計模這種情形最簡單,從分析模型中的交互圖到設計模型中的交互圖的變換方法見型中的交互圖的變換方法見圖圖9.1(a)9.1(a)。(2 2)一個分析類的一項職責由一個設計元素的多項一個分析類的一項職責由一個設計元素的多項操作來實現(xiàn)。操作來實現(xiàn)。 這種情形下交互圖的變換方法見圖這種情形下交互圖的變換方法見圖9.1(b

16、)9.1(b)。2021-12-2814設計用例實現(xiàn)方案設計用例實現(xiàn)方案(3 3)一個分析類的一項職責由多個設計元素協(xié)同完一個分析類的一項職責由多個設計元素協(xié)同完成。成。 此時用例設計師應考慮如何將分析類的職責分配給此時用例設計師應考慮如何將分析類的職責分配給這些設計元素,以及這些設計元素如何通過必要的這些設計元素,以及這些設計元素如何通過必要的消息傳遞來進行協(xié)作。見圖消息傳遞來進行協(xié)作。見圖9.1(c)9.1(c)。(4 4)對于在分析模型的交互圖中出現(xiàn)的執(zhí)行者,如對于在分析模型的交互圖中出現(xiàn)的執(zhí)行者,如果該執(zhí)行者由軟件系統(tǒng)的用戶扮演,那么在設計模果該執(zhí)行者由軟件系統(tǒng)的用戶扮演,那么在設計模

17、型中其對應的設計元素應該為界面設計模型的界面型中其對應的設計元素應該為界面設計模型的界面類,其發(fā)送消息、響應消息的職責應該由界面類的類,其發(fā)送消息、響應消息的職責應該由界面類的操作來實現(xiàn),因為用戶是通過界面與軟件系統(tǒng)交互操作來實現(xiàn),因為用戶是通過界面與軟件系統(tǒng)交互的;的; 如果該執(zhí)行者是外部設備或外部軟件系統(tǒng),那么應如果該執(zhí)行者是外部設備或外部軟件系統(tǒng),那么應該將其替換為該將其替換為7.6.17.6.1節(jié)中設置對應于該執(zhí)行者的子節(jié)中設置對應于該執(zhí)行者的子系統(tǒng)。系統(tǒng)。 2021-12-2815圖圖9.1 9.1 從分析模型中用例的順序圖表示到設計模型從分析模型中用例的順序圖表示到設計模型中用例實

18、現(xiàn)方案的變換方法中用例實現(xiàn)方案的變換方法(a) (a) 說明:說明:AA、BB分別是對應于分析類分別是對應于分析類A A、B B的設的設計元素,計元素,msgmsg是分析模型中是分析模型中msgmsg在設計模型中的對在設計模型中的對應消息應消息2021-12-2816圖圖9.1 9.1 從分析模型中用例的順序圖表示到設計模型中從分析模型中用例的順序圖表示到設計模型中用例實現(xiàn)方案的變換方法用例實現(xiàn)方案的變換方法(b) (b) 說明:分析類說明:分析類B B處理處理msgmsg的職責被分解為設計元素的職責被分解為設計元素BB中處理中處理msgmsg1 1,msgmsgn n的操作的操作2021-1

19、2-2817圖圖9.1 9.1 從分析模型中用例的順序圖表示到設計模型從分析模型中用例的順序圖表示到設計模型中用例實現(xiàn)方案的變換方法中用例實現(xiàn)方案的變換方法(c)(c)說明:在設計模型中,消息說明:在設計模型中,消息msgmsg觸發(fā)分析類觸發(fā)分析類B B中處理中處理msgmsg的職責的執(zhí)行的職責的執(zhí)行2021-12-2818設計用例實現(xiàn)方案設計用例實現(xiàn)方案從分析模型中的交互圖生成設計模型中的從分析模型中的交互圖生成設計模型中的交互圖并非簡單的語法替換交互圖并非簡單的語法替換,軟件設計師,軟件設計師必須確保后者能夠準確、完整地實現(xiàn)前者必須確保后者能夠準確、完整地實現(xiàn)前者規(guī)定的業(yè)務邏輯處理功能及行

20、為。規(guī)定的業(yè)務邏輯處理功能及行為。設計師應當選用盡可能簡單、高效的實現(xiàn)設計師應當選用盡可能簡單、高效的實現(xiàn)方法,并思考實現(xiàn)方法如何滿足相關(guān)的非方法,并思考實現(xiàn)方法如何滿足相關(guān)的非功能性需求。功能性需求。設計模式可以發(fā)揮很好的作用設計模式可以發(fā)揮很好的作用,軟件設計軟件設計師必須熟練掌握有關(guān)的設計模式知識,并師必須熟練掌握有關(guān)的設計模式知識,并在此步驟中靈活運用。在此步驟中靈活運用。2021-12-2819例例9.1 9.1 用例實現(xiàn)方案的詳細設計用例實現(xiàn)方案的詳細設計針對家庭保安系統(tǒng)中的針對家庭保安系統(tǒng)中的“傳感器監(jiān)測傳感器監(jiān)測”用用例,在圖例,在圖5-16p1435-16p143所示的基于分

21、析類的用所示的基于分析類的用例實現(xiàn)方案的基礎上,結(jié)合第七章得到的例實現(xiàn)方案的基礎上,結(jié)合第七章得到的邏輯體系結(jié)構(gòu)(見圖邏輯體系結(jié)構(gòu)(見圖7-18p2097-18p209),得到仍),得到仍以以UMLUML順序圖表示的用例實現(xiàn)如圖順序圖表示的用例實現(xiàn)如圖9.2(a)9.2(a)和和(b)(b)。為圖形簡潔,本例分別針對門窗和煙霧傳為圖形簡潔,本例分別針對門窗和煙霧傳感器監(jiān)測兩種情況展開詳細設計。感器監(jiān)測兩種情況展開詳細設計。2021-12-2820圖圖9.2 9.2 家庭保安系統(tǒng)中家庭保安系統(tǒng)中“傳感器監(jiān)測傳感器監(jiān)測”用例的設計用例的設計(a) (a) 門窗傳感器監(jiān)測門窗傳感器監(jiān)測2021-12

22、-2821圖圖9.2 9.2 家庭保安系統(tǒng)中家庭保安系統(tǒng)中“傳感器監(jiān)測傳感器監(jiān)測”用例的設計用例的設計(b) (b) 煙霧傳感器監(jiān)測煙霧傳感器監(jiān)測2021-12-2822主要的詳細設計點主要的詳細設計點MonitorMonitor類的對象(簡稱類的對象(簡稱MonitorMonitor對象,下對象,下同)從系統(tǒng)配置子系統(tǒng)中獲取傳感器配置同)從系統(tǒng)配置子系統(tǒng)中獲取傳感器配置數(shù)據(jù)的動作被移入到數(shù)據(jù)的動作被移入到MonitorMonitor類的構(gòu)造函數(shù)類的構(gòu)造函數(shù)之中,所以將其從用例實現(xiàn)方案中刪除。之中,所以將其從用例實現(xiàn)方案中刪除。2021-12-2823主要的詳細設計點主要的詳細設計點將體系結(jié)構(gòu)

23、中設置的子系統(tǒng)和構(gòu)件納入用例實現(xiàn)方將體系結(jié)構(gòu)中設置的子系統(tǒng)和構(gòu)件納入用例實現(xiàn)方案,必要時調(diào)整消息的名稱、參數(shù)及期望的消息處案,必要時調(diào)整消息的名稱、參數(shù)及期望的消息處理功能,使之與子系統(tǒng)和構(gòu)件的對外接口保持一致。理功能,使之與子系統(tǒng)和構(gòu)件的對外接口保持一致。在家庭保安系統(tǒng)的邏輯體系結(jié)構(gòu)的基礎上,在家庭保安系統(tǒng)的邏輯體系結(jié)構(gòu)的基礎上,“傳感傳感器監(jiān)測器監(jiān)測”用例的實現(xiàn)必須借助四個構(gòu)件用例的實現(xiàn)必須借助四個構(gòu)件:MovingObjectMonitorMovingObjectMonitor TelephoneDialerTelephoneDialer TextToSpeechTextToSpeech

24、(例(例7-37-3) LogManagerLogManager(例(例7-137-13)TelephoneDialerTelephoneDialer構(gòu)件的構(gòu)件的dialdial函數(shù)具有重復撥號的函數(shù)具有重復撥號的功能,所以功能,所以VideoMonitorVideoMonitor和和SmogMonitorSmogMonitor對象勿需對象勿需考慮失敗重撥問題。考慮失敗重撥問題。2021-12-28249.2.2 9.2.2 構(gòu)造設計類圖構(gòu)造設計類圖任務:任務:基于第七章給出的邏輯體系結(jié)構(gòu)和前面給基于第七章給出的邏輯體系結(jié)構(gòu)和前面給出的用例實現(xiàn)方案的出的用例實現(xiàn)方案的UMLUML交互圖表示,將

25、分析模型交互圖表示,將分析模型中的分析類圖(見中的分析類圖(見5.4.45.4.4節(jié))變換為詳細設計模型節(jié))變換為詳細設計模型中的設計類圖。中的設計類圖。設計類圖中的結(jié)點設計類圖中的結(jié)點為各種設計元素,包括子系統(tǒng)、為各種設計元素,包括子系統(tǒng)、構(gòu)件和通常的構(gòu)件和通常的UMLUML類。類。對對UMLUML類圖稍作擴充以表示詳細設計類圖:類圖稍作擴充以表示詳細設計類圖:允許在允許在類圖中出現(xiàn)子系統(tǒng)和構(gòu)件,它們的類別可以采用類圖中出現(xiàn)子系統(tǒng)和構(gòu)件,它們的類別可以采用不同的不同的UMLUML構(gòu)造型或者不同的圖元符號來表示,見構(gòu)造型或者不同的圖元符號來表示,見圖圖9.39.3。2021-12-2825構(gòu)造

26、設計類圖構(gòu)造設計類圖依據(jù)用例實現(xiàn)方案的交互圖推導出設計類依據(jù)用例實現(xiàn)方案的交互圖推導出設計類圖的過程和方法類似于從分析模型之交互圖的過程和方法類似于從分析模型之交互圖推導出分析類圖的過程圖推導出分析類圖的過程(參見參見5.4.45.4.4節(jié)節(jié)) )。不同的是,這里的推導過程同時也是從分不同的是,這里的推導過程同時也是從分析類圖到設計類圖的精化過程,應該沿用析類圖到設計類圖的精化過程,應該沿用分析類圖中可以續(xù)用的機制,并且確保設分析類圖中可以續(xù)用的機制,并且確保設計類圖相對于分析類圖的邏輯符合性。計類圖相對于分析類圖的邏輯符合性。2021-12-2826例例9.2 9.2 設計類圖的構(gòu)造設計類圖

27、的構(gòu)造針對家庭保安系統(tǒng),基于分析類圖(見圖針對家庭保安系統(tǒng),基于分析類圖(見圖5-21p1515-21p151)邏邏輯體系結(jié)構(gòu)(見圖輯體系結(jié)構(gòu)(見圖7-18p2097-18p209)和和“傳感器監(jiān)測傳感器監(jiān)測”用例的用例的實現(xiàn)方案(見圖實現(xiàn)方案(見圖9.29.2),導出圖),導出圖9.39.3所示的設計類圖。所示的設計類圖。圖圖5-215-21中除中除 輸入鍵盤接口(輸入鍵盤接口(KeyboardInteractionKeyboardInteraction) 顯示面板接口(顯示面板接口(DisplayPanelInteractionDisplayPanelInteraction)外的其他)外的

28、其他分析類的職責均已在邏輯體系結(jié)構(gòu)的設計過程中置入分析類的職責均已在邏輯體系結(jié)構(gòu)的設計過程中置入 傳感器監(jiān)測子系統(tǒng)(傳感器監(jiān)測子系統(tǒng)(safeHomeMonitorsafeHomeMonitor) 系統(tǒng)配置子系統(tǒng)(系統(tǒng)配置子系統(tǒng)(safeHomeConfigManagersafeHomeConfigManager) 日志管理構(gòu)件(日志管理構(gòu)件(logManagerlogManager) 所以圖所以圖9.39.3與圖與圖5-215-21的差別較大,而與圖的差別較大,而與圖7-187-18的差別較的差別較小。小。2021-12-2827主要的詳細設計點主要的詳細設計點(1 1)根據(jù)圖根據(jù)圖9.29

29、.2可以推知,可以推知,safeHomeMonitorsafeHomeMonitor的對的對外接口中必須包含外接口中必須包含analyseVideoSensorDataanalyseVideoSensorData和和analyseSmogSensorDataanalyseSmogSensorData兩個函數(shù);兩個函數(shù);DisplayPanelInteractionDisplayPanelInteraction類中必須包含類中必須包含showCurStatusshowCurStatus函數(shù)。函數(shù)。(2 2)根據(jù)圖根據(jù)圖9.29.2,設置兩個新的設備接口類:,設置兩個新的設備接口類:VideoSe

30、nsorInteractionVideoSensorInteraction和和SmogSensorInteractionSmogSensorInteraction,并將它們作為原,并將它們作為原SensorInteractionSensorInteraction的子類。的子類。(3 3)添加必要的關(guān)聯(lián)和依賴關(guān)系。添加必要的關(guān)聯(lián)和依賴關(guān)系。2021-12-2828圖圖9.3 9.3 家庭保安系統(tǒng)的設計類圖家庭保安系統(tǒng)的設計類圖(初步)(初步)2021-12-28299.2.3 9.2.3 整合并優(yōu)化用例實現(xiàn)方案整合并優(yōu)化用例實現(xiàn)方案在針對每個用例完成在針對每個用例完成9.2.19.2.1和和9.

31、2.29.2.2所述的工作后,所述的工作后,軟件設計師必須從全局和整體的軟件設計師必須從全局和整體的高度高度整合并優(yōu)化整合并優(yōu)化所所有的用例實現(xiàn)方案。具體工作包括:有的用例實現(xiàn)方案。具體工作包括:(1 1)將具有相同或相似職責的多個設計元素整合為將具有相同或相似職責的多個設計元素整合為一個。一個。(2 2)將具有相同或相似功能的多個操作整合為一個。將具有相同或相似功能的多個操作整合為一個。(3 3)采用繼承或代理機制(見采用繼承或代理機制(見5.4.45.4.4節(jié))對設計元素節(jié))對設計元素中的公共操作進行抽象。中的公共操作進行抽象。(4 4)確保所有用例實現(xiàn)方案在同一軟件系統(tǒng)中和諧確保所有用例

32、實現(xiàn)方案在同一軟件系統(tǒng)中和諧共存,無邏輯沖突。共存,無邏輯沖突。(5 5)根據(jù)上述調(diào)整相應地修改前述的交互圖和設計根據(jù)上述調(diào)整相應地修改前述的交互圖和設計類圖。類圖。2021-12-2830整合并優(yōu)化用例實現(xiàn)方案整合并優(yōu)化用例實現(xiàn)方案最后,還需要基于用例設計的成果最后,還需要基于用例設計的成果復核非復核非功能性軟件需求的實現(xiàn)程度功能性軟件需求的實現(xiàn)程度??赡軙r,將??赡軙r,將有關(guān)的非功能需求分解至設計元素或其操有關(guān)的非功能需求分解至設計元素或其操作,使之成為設計元素的實現(xiàn)約束。必要作,使之成為設計元素的實現(xiàn)約束。必要時,以非功能需求和相關(guān)的功能需求的優(yōu)時,以非功能需求和相關(guān)的功能需求的優(yōu)化實現(xiàn)

33、為目標,重新調(diào)整用例實現(xiàn)方案和化實現(xiàn)為目標,重新調(diào)整用例實現(xiàn)方案和設計類圖。設計類圖。2021-12-28319.3 9.3 子系統(tǒng)設計子系統(tǒng)設計子系統(tǒng)設計的任務是子系統(tǒng)設計的任務是,確定子系統(tǒng)內(nèi)部的結(jié)構(gòu)確定子系統(tǒng)內(nèi)部的結(jié)構(gòu),即,即,設置包含于其中的、粒度更小的子系統(tǒng)、構(gòu)件和設計設置包含于其中的、粒度更小的子系統(tǒng)、構(gòu)件和設計類,明確它們之間的協(xié)作關(guān)系,確保它們能夠協(xié)同實類,明確它們之間的協(xié)作關(guān)系,確保它們能夠協(xié)同實現(xiàn)體系結(jié)構(gòu)模型中該子系統(tǒng)的服務提供接口所規(guī)定的現(xiàn)體系結(jié)構(gòu)模型中該子系統(tǒng)的服務提供接口所規(guī)定的全部功能和行為。全部功能和行為。u軟件設計師首先必須確立子系統(tǒng)內(nèi)部的設計元素,根據(jù)軟件設計

34、師首先必須確立子系統(tǒng)內(nèi)部的設計元素,根據(jù)體系結(jié)構(gòu)模型中確定的子系統(tǒng)的職責及其對外接口針對體系結(jié)構(gòu)模型中確定的子系統(tǒng)的職責及其對外接口針對這些設計元素逐個分派職責,并研究它們?nèi)绾螀f(xié)同以完這些設計元素逐個分派職責,并研究它們?nèi)绾螀f(xié)同以完成子系統(tǒng)的每項職責。成子系統(tǒng)的每項職責。u設計師必須根據(jù)子系統(tǒng)內(nèi)部設計元素的職責及其協(xié)作關(guān)設計師必須根據(jù)子系統(tǒng)內(nèi)部設計元素的職責及其協(xié)作關(guān)系推導出子系統(tǒng)的詳細設計類圖,因為類圖是軟件實現(xiàn)系推導出子系統(tǒng)的詳細設計類圖,因為類圖是軟件實現(xiàn)工程師的主要編程基礎和依據(jù)。工程師的主要編程基礎和依據(jù)。u如果狀態(tài)圖或活動圖有助于軟件實現(xiàn)工程師對于當前子如果狀態(tài)圖或活動圖有助于軟件

35、實現(xiàn)工程師對于當前子系統(tǒng)的理解和實現(xiàn),設計師不妨構(gòu)造之,以便為子系統(tǒng)系統(tǒng)的理解和實現(xiàn),設計師不妨構(gòu)造之,以便為子系統(tǒng)的編程實現(xiàn)奠定更好的基礎。的編程實現(xiàn)奠定更好的基礎。2021-12-28329.3.1 9.3.1 確立內(nèi)部設計元素確立內(nèi)部設計元素在體系結(jié)構(gòu)設計模型中,已經(jīng)定義了其中每個子在體系結(jié)構(gòu)設計模型中,已經(jīng)定義了其中每個子系統(tǒng)的接口。這些系統(tǒng)的接口。這些接口中的服務提供接口實際上接口中的服務提供接口實際上規(guī)定了子系統(tǒng)必須承擔的職責規(guī)定了子系統(tǒng)必須承擔的職責。這些職責必須由子系統(tǒng)內(nèi)部的設計元素來完成。這些職責必須由子系統(tǒng)內(nèi)部的設計元素來完成。換言之,為了完成子系統(tǒng)的服務提供接口中規(guī)定換言

36、之,為了完成子系統(tǒng)的服務提供接口中規(guī)定的職責,需要在子系統(tǒng)中設置構(gòu)件、設計類,有的職責,需要在子系統(tǒng)中設置構(gòu)件、設計類,有時甚至需要設置當前子系統(tǒng)的子系統(tǒng),并確定它時甚至需要設置當前子系統(tǒng)的子系統(tǒng),并確定它們的職責和協(xié)作關(guān)系,通過它們的分工和合作來們的職責和協(xié)作關(guān)系,通過它們的分工和合作來完成當前子系統(tǒng)的接口中規(guī)定的所有功能和行為。完成當前子系統(tǒng)的接口中規(guī)定的所有功能和行為。2021-12-2833確立內(nèi)部設計元素確立內(nèi)部設計元素在分派子系統(tǒng)內(nèi)部的設計元素的職責時,必須在分派子系統(tǒng)內(nèi)部的設計元素的職責時,必須注意利用體系結(jié)構(gòu)模型中定義的其他設計元素注意利用體系結(jié)構(gòu)模型中定義的其他設計元素(包括

37、技術(shù)支撐設施和可復用的設計資產(chǎn))已(包括技術(shù)支撐設施和可復用的設計資產(chǎn))已經(jīng)提供的功能,不能在目標軟件系統(tǒng)的不同模經(jīng)提供的功能,不能在目標軟件系統(tǒng)的不同模塊重復實現(xiàn)相同或相似的功能。塊重復實現(xiàn)相同或相似的功能。u利用的方式有兩種:利用的方式有兩種:通過本子系統(tǒng)的服務請求接通過本子系統(tǒng)的服務請求接口(如果存在的話)口(如果存在的話);直接直接調(diào)用構(gòu)件的服務提供調(diào)用構(gòu)件的服務提供接口或設計類的公開函數(shù)接口或設計類的公開函數(shù)。上述工作的成果可以表現(xiàn)為一系列的上述工作的成果可以表現(xiàn)為一系列的UMLUML交互交互圖,其中每張交互圖說明子系統(tǒng)內(nèi)的軟件元素圖,其中每張交互圖說明子系統(tǒng)內(nèi)的軟件元素為完成子系統(tǒng)

38、接口中規(guī)定的某項特定職責而展為完成子系統(tǒng)接口中規(guī)定的某項特定職責而展開的協(xié)作行動,見開的協(xié)作行動,見圖圖9.49.4。2021-12-2834例例9.39.3子系統(tǒng)設計子系統(tǒng)設計 確立內(nèi)部設計元素并明確協(xié)作關(guān)系確立內(nèi)部設計元素并明確協(xié)作關(guān)系“傳感器監(jiān)測傳感器監(jiān)測”(safeHomeMonitorsafeHomeMonitor)是家庭保安)是家庭保安系統(tǒng)中最關(guān)鍵的子系統(tǒng),在第七章所述的邏輯體系統(tǒng)中最關(guān)鍵的子系統(tǒng),在第七章所述的邏輯體系結(jié)構(gòu)設計的過程中,已經(jīng)將系結(jié)構(gòu)設計的過程中,已經(jīng)將“命令處理器命令處理器”(CommandHandlerCommandHandler)、)、“監(jiān)測器監(jiān)測器”(Mon

39、itorMonitor)、)、異常事件(異常事件(ExEventExEvent)、)、傳感器接口(傳感器接口(SensorInteractionSensorInteraction)、)、警報器接口(警報器接口(AlarmInteractionAlarmInteraction)報警電話接口(報警電話接口(AlarmTelephoneInteractionAlarmTelephoneInteraction) 納入該子系統(tǒng),納入該子系統(tǒng),2021-12-2835例例9.39.3子系統(tǒng)設計子系統(tǒng)設計 確立內(nèi)部設計元素并明確協(xié)作關(guān)系確立內(nèi)部設計元素并明確協(xié)作關(guān)系詳細設計繼續(xù)沿用這些設計元素,并將例詳細設

40、計繼續(xù)沿用這些設計元素,并將例9.29.2中引中引入的兩個新的設備接口類入的兩個新的設備接口類VideoSensorInteractionVideoSensorInteraction和和SmogSensorInteractionSmogSensorInteraction,它們是它們是SensorInteractionSensorInteraction的子類。的子類。圖圖9.29.2已經(jīng)描述了該子系統(tǒng)在響應接口函數(shù)已經(jīng)描述了該子系統(tǒng)在響應接口函數(shù)analyseVideoSensorDataanalyseVideoSensorData和和analyseSmogSensorDataanalyseSm

41、ogSensorData的調(diào)用時內(nèi)部設計元素的調(diào)用時內(nèi)部設計元素之間(以及它們與外部構(gòu)件之間)的協(xié)作關(guān)系。之間(以及它們與外部構(gòu)件之間)的協(xié)作關(guān)系。本例通過本例通過safeHomeMonitorsafeHomeMonitor響應接口函數(shù)響應接口函數(shù)resetreset的的調(diào)用時動作過程來進一步精化其設計,見圖調(diào)用時動作過程來進一步精化其設計,見圖9.49.4。2021-12-2836圖圖9.4 9.4 傳感器監(jiān)測子系統(tǒng)的詳細設計的交互傳感器監(jiān)測子系統(tǒng)的詳細設計的交互圖表示(局部)圖表示(局部)2021-12-28379.3.2 9.3.2 導出設計類圖導出設計類圖從子系統(tǒng)詳細設計的從子系統(tǒng)詳細

42、設計的UMLUML交互圖表示出發(fā)推導出子交互圖表示出發(fā)推導出子系統(tǒng)的詳細設計類圖。系統(tǒng)的詳細設計類圖。具體的推導方法類似于從分析模型之交互圖推導具體的推導方法類似于從分析模型之交互圖推導分析類圖的方法,請見分析類圖的方法,請見5.4.45.4.4節(jié)。在子系統(tǒng)的詳細節(jié)。在子系統(tǒng)的詳細設計類圖中,設計類圖中,建議采用某種方式顯式區(qū)分子系統(tǒng)建議采用某種方式顯式區(qū)分子系統(tǒng)內(nèi)部的設計元素與位于子系統(tǒng)之外、為子系統(tǒng)提內(nèi)部的設計元素與位于子系統(tǒng)之外、為子系統(tǒng)提供服務的其他設計元素供服務的其他設計元素。如,如,圖圖9.59.5即采用垂直虛線分割子系統(tǒng)內(nèi)、外的設即采用垂直虛線分割子系統(tǒng)內(nèi)、外的設計元素。計元素。

43、2021-12-2838例例9.4 9.4 子系統(tǒng)設計導出設計類圖子系統(tǒng)設計導出設計類圖仍以仍以“傳感器監(jiān)測傳感器監(jiān)測”(safeHomeMonitorsafeHomeMonitor)子系統(tǒng))子系統(tǒng)為例說明如何生成子系統(tǒng)的詳細設計類圖。為例說明如何生成子系統(tǒng)的詳細設計類圖??晒├玫墓ぷ骰A包括:邏輯體系結(jié)構(gòu)(見圖可供利用的工作基礎包括:邏輯體系結(jié)構(gòu)(見圖7-7-1717);分析類圖(見圖);分析類圖(見圖5-215-21);詳細設計階段得到);詳細設計階段得到的表示子系統(tǒng)對外接口實現(xiàn)的順序圖表示(見圖的表示子系統(tǒng)對外接口實現(xiàn)的順序圖表示(見圖9.29.2和圖和圖9.49.4)。)。如例如例9

44、.39.3所述,所述,safeHomeMonitorsafeHomeMonitor包含包含CommandHandlerCommandHandler、MonitorMonitor(及其子類(及其子類VideoMonitorVideoMonitor 和和 SmogMonitorSmogMonitor)、)、ExEventExEvent、SensorInteractionSensorInteraction(及其子類(及其子類VideoSensorInteractionVideoSensorInteraction 和和SmogSensorInteractionSmogSensorInteraction

45、)、)、AlarmInteractionAlarmInteraction和和AlarmTelephoneInteractionAlarmTelephoneInteraction,它們構(gòu)成,它們構(gòu)成safeHomeMonitorsafeHomeMonitor的詳細設計類圖的主要結(jié)點。的詳細設計類圖的主要結(jié)點。2021-12-2839子系統(tǒng)設計導出設計類圖子系統(tǒng)設計導出設計類圖以這些類為基礎,綜合圖以這些類為基礎,綜合圖5-215-21圖圖9.29.2和圖和圖9.49.4,推導,推導它們的主要操作:它們的主要操作:(1 1)switchOnswitchOn、switchOffswitchOff和和

46、resetreset(據(jù)圖(據(jù)圖9.49.4)操作)操作顯然應置入顯然應置入CommandHandlerCommandHandler類。類。(2 2)analyseVideoSensorDataanalyseVideoSensorData、onMovingObjectDetectedonMovingObjectDetected和和describeEventdescribeEvent(據(jù)圖(據(jù)圖9.2(a)9.2(a))操作應置入)操作應置入VideoMonitorVideoMonitor類,其中后者應類,其中后者應該是該是privateprivate操作。同理,操作。同理,analyseSmo

47、gSensorDataanalyseSmogSensorData、isNormalisNormal和和describeEventdescribeEvent(據(jù)圖(據(jù)圖9.2(b)9.2(b))操作應)操作應置入置入SmogMonitorSmogMonitor類。類。describeEventdescribeEvent重復出現(xiàn)是因重復出現(xiàn)是因為它在為它在MonitorMonitor的兩個子類中的實現(xiàn)方法完全不同,的兩個子類中的實現(xiàn)方法完全不同,當然,其標記(當然,其標記(signaturesignature)可以提升至)可以提升至MonitorMonitor類。類。2021-12-2840子系統(tǒng)

48、設計導出設計類圖子系統(tǒng)設計導出設計類圖(3 3)據(jù)圖據(jù)圖9.2(a)9.2(a)和和(b)(b),onTelephoneConnectedonTelephoneConnected和和onDialFailedonDialFailed兩個操作對兩個操作對MonitorMonitor的兩個子類而的兩個子類而言是公共的,所以將其置入言是公共的,所以將其置入MonitorMonitor類。類。接下來,考慮接下來,考慮safeHomeMonitorsafeHomeMonitor子系統(tǒng)在運作過程子系統(tǒng)在運作過程中需要的外部子系統(tǒng)、構(gòu)件及設計類。中需要的外部子系統(tǒng)、構(gòu)件及設計類。據(jù)圖據(jù)圖9.29.2和圖和圖9

49、.49.4,它需要外部構(gòu)件,它需要外部構(gòu)件MovingObjectMonitorMovingObjectMonitor、TelephoneDialerTelephoneDialer和和TextToSpeechTextToSpeech,需要構(gòu)件,需要構(gòu)件logManagerlogManager和和securityServicesecurityService,還需要設計類,還需要設計類DisplayPanelInteractionDisplayPanelInteraction。圖圖9.59.5將它們布局于垂直分割線的右方,以示其位將它們布局于垂直分割線的右方,以示其位于于safeHomeMonit

50、orsafeHomeMonitor子系統(tǒng)的邊界以外。子系統(tǒng)的邊界以外。2021-12-2841子系統(tǒng)設計導出設計類圖子系統(tǒng)設計導出設計類圖采用采用5.4.45.4.4節(jié)所述的節(jié)所述的“根據(jù)消息傳遞確定類之根據(jù)消息傳遞確定類之間的連接間的連接”的方法初步確定以上所有類之間的的方法初步確定以上所有類之間的關(guān)聯(lián)關(guān)系。關(guān)聯(lián)關(guān)系。對于對于子系統(tǒng)和構(gòu)件,外部的設計元素對其功能子系統(tǒng)和構(gòu)件,外部的設計元素對其功能的調(diào)用一般均通過接口,從該元素到接口之間的調(diào)用一般均通過接口,從該元素到接口之間不可能存在單向關(guān)聯(lián),因為關(guān)聯(lián)關(guān)系含數(shù)量對不可能存在單向關(guān)聯(lián),因為關(guān)聯(lián)關(guān)系含數(shù)量對應關(guān)系,而接口沒有數(shù)量的意義應關(guān)系,而

51、接口沒有數(shù)量的意義應通過從外部設計元素到接口之間的單向依賴應通過從外部設計元素到接口之間的單向依賴關(guān)系表示這種調(diào)用。關(guān)系表示這種調(diào)用。得到的得到的safeHomeMonitorsafeHomeMonitor子系統(tǒng)的詳細設計類子系統(tǒng)的詳細設計類圖如圖圖如圖9.59.5。2021-12-2842圖圖9.5 9.5 傳感器監(jiān)測子系統(tǒng)的階段性傳感器監(jiān)測子系統(tǒng)的階段性詳細設計類圖詳細設計類圖2021-12-28439.3.3 9.3.3 設計狀態(tài)圖與活動圖設計狀態(tài)圖與活動圖如果子系統(tǒng)具有明顯的狀態(tài)特征,通過如果子系統(tǒng)具有明顯的狀態(tài)特征,通過UMLUML狀態(tài)圖可以更清晰地描述子系統(tǒng)的行為特狀態(tài)圖可以更清晰

52、地描述子系統(tǒng)的行為特征,并且狀態(tài)圖有助于軟件實現(xiàn)工程師理征,并且狀態(tài)圖有助于軟件實現(xiàn)工程師理解子系統(tǒng)、實現(xiàn)子系統(tǒng),那么可以為子系解子系統(tǒng)、實現(xiàn)子系統(tǒng),那么可以為子系統(tǒng)構(gòu)造狀態(tài)圖。統(tǒng)構(gòu)造狀態(tài)圖。否則,一般沒有必要繪制子系統(tǒng)的狀態(tài)圖。否則,一般沒有必要繪制子系統(tǒng)的狀態(tài)圖。如果當前子系統(tǒng)的狀態(tài)圖在分析模型中已如果當前子系統(tǒng)的狀態(tài)圖在分析模型中已經(jīng)存在,那么需要對此狀態(tài)圖進行必要的經(jīng)存在,那么需要對此狀態(tài)圖進行必要的精化,確保它與子系統(tǒng)的詳細設計模型精化,確保它與子系統(tǒng)的詳細設計模型(包括前述的(包括前述的UMLUML交互圖和詳細設計類圖)交互圖和詳細設計類圖)協(xié)調(diào)一致。協(xié)調(diào)一致。2021-12-28

53、44設計狀態(tài)圖與活動圖設計狀態(tài)圖與活動圖在有必要的情況下軟件設計師可以通過構(gòu)在有必要的情況下軟件設計師可以通過構(gòu)造子系統(tǒng)的活動圖來幫助軟件實現(xiàn)工程師造子系統(tǒng)的活動圖來幫助軟件實現(xiàn)工程師理解子系統(tǒng)、實現(xiàn)子系統(tǒng)。理解子系統(tǒng)、實現(xiàn)子系統(tǒng)?;顒訄D有兩種:活動圖有兩種: 表示子系統(tǒng)內(nèi)部的設計元素協(xié)同完成子系表示子系統(tǒng)內(nèi)部的設計元素協(xié)同完成子系統(tǒng)的某些功能;統(tǒng)的某些功能; 表示作為一個黑箱的子系統(tǒng)與外部設計元表示作為一個黑箱的子系統(tǒng)與外部設計元素協(xié)同完成更大范圍內(nèi)的某些功能。素協(xié)同完成更大范圍內(nèi)的某些功能。如果在分析模型中與當前子系統(tǒng)相關(guān)的活如果在分析模型中與當前子系統(tǒng)相關(guān)的活動圖已經(jīng)存在,需要對活動圖進

54、行精化。動圖已經(jīng)存在,需要對活動圖進行精化。2021-12-28459.4 9.4 構(gòu)件設計構(gòu)件設計構(gòu)件設計的任務是構(gòu)件設計的任務是,為實現(xiàn)構(gòu)件的服務提,為實現(xiàn)構(gòu)件的服務提供接口中規(guī)定的職責而在其內(nèi)部設置子構(gòu)供接口中規(guī)定的職責而在其內(nèi)部設置子構(gòu)件和類,明確它們的職責,定義其對外接件和類,明確它們的職責,定義其對外接口,確定它們之間的協(xié)作關(guān)系。口,確定它們之間的協(xié)作關(guān)系。構(gòu)件設計與子系統(tǒng)設計非常類似。構(gòu)件設計與子系統(tǒng)設計非常類似。2021-12-28469.4.1 9.4.1 為復用設計構(gòu)件為復用設計構(gòu)件注意:注意:構(gòu)件構(gòu)件的詳細設計必須確保接口與實現(xiàn)相分離。的詳細設計必須確保接口與實現(xiàn)相分離。

55、實現(xiàn)了同一接口的兩個構(gòu)件可以等價替換,無論它們實現(xiàn)了同一接口的兩個構(gòu)件可以等價替換,無論它們的內(nèi)部實現(xiàn)方法如何不同。的內(nèi)部實現(xiàn)方法如何不同。構(gòu)件使用方的任何變化都不應導致構(gòu)件的修改,除非構(gòu)件使用方的任何變化都不應導致構(gòu)件的修改,除非構(gòu)件自身提供的服務需要調(diào)整。構(gòu)件自身提供的服務需要調(diào)整。構(gòu)件應具有上下文無關(guān)性,可以在不同的上下文環(huán)境構(gòu)件應具有上下文無關(guān)性,可以在不同的上下文環(huán)境中不加修改地被復用。中不加修改地被復用。構(gòu)件可以與外界相互協(xié)作,但它們不能相互干擾,例構(gòu)件可以與外界相互協(xié)作,但它們不能相互干擾,例如,構(gòu)件不能與外界共享公共的數(shù)據(jù)結(jié)構(gòu)。如,構(gòu)件不能與外界共享公共的數(shù)據(jù)結(jié)構(gòu)。在可預期的應

56、用場景下,相同或相似的服務可以由同在可預期的應用場景下,相同或相似的服務可以由同一構(gòu)件來提供。一構(gòu)件來提供。軟件設計師必須分析當前及將來可能的多種應用場景中軟件設計師必須分析當前及將來可能的多種應用場景中對構(gòu)件的功能需求的相同點和不同點,采取以下辦法來對構(gòu)件的功能需求的相同點和不同點,采取以下辦法來提高構(gòu)件的可復用性。提高構(gòu)件的可復用性。2021-12-2847提高構(gòu)件的可復用性提高構(gòu)件的可復用性的方法的方法(1 1)分離相同點和不同點,將相同點實現(xiàn)為構(gòu)分離相同點和不同點,將相同點實現(xiàn)為構(gòu)件。件。(2 2)以參數(shù)化手段從不同點中抽象出公共部分,以參數(shù)化手段從不同點中抽象出公共部分,通過構(gòu)件的不

57、同配置覆蓋不同點。參數(shù)化可以通過構(gòu)件的不同配置覆蓋不同點。參數(shù)化可以直接針對構(gòu)件的服務功能來進行,也可以利用直接針對構(gòu)件的服務功能來進行,也可以利用構(gòu)件的定制機制(見構(gòu)件的定制機制(見9.4.29.4.2)。)。(3 3)將相同點抽象為框架(將相同點抽象為框架(frameworkframework8484),),其中的不同點被定義為框架中的抽象服務。構(gòu)其中的不同點被定義為框架中的抽象服務。構(gòu)件設計者只需設定抽象服務的標記件設計者只需設定抽象服務的標記(signaturesignature),并在構(gòu)件實現(xiàn)時直接使用它),并在構(gòu)件實現(xiàn)時直接使用它們。這些抽象服務的實現(xiàn)體將延遲至構(gòu)件使用們。這些抽象

58、服務的實現(xiàn)體將延遲至構(gòu)件使用方在復用構(gòu)件時再根據(jù)實際需求來提供,見方在復用構(gòu)件時再根據(jù)實際需求來提供,見9.4.29.4.2節(jié)有關(guān)構(gòu)件繼承和委托機制的論述。節(jié)有關(guān)構(gòu)件繼承和委托機制的論述。2021-12-28489.4.2 9.4.2 設計構(gòu)件的定制機制設計構(gòu)件的定制機制構(gòu)件的定制機制是提高構(gòu)件的靈活性和可復用構(gòu)件的定制機制是提高構(gòu)件的靈活性和可復用性的主要手段之一性的主要手段之一。它。它與構(gòu)件的接口設計和內(nèi)與構(gòu)件的接口設計和內(nèi)部實現(xiàn)機制的設計息息相關(guān)。部實現(xiàn)機制的設計息息相關(guān)。構(gòu)件定制機制的種類:構(gòu)件定制機制的種類:u最最簡單的定制機制就是將構(gòu)件接口中定義的對外簡單的定制機制就是將構(gòu)件接口中

59、定義的對外服務參數(shù)化,構(gòu)件使用者通過使用不同的實參值服務參數(shù)化,構(gòu)件使用者通過使用不同的實參值來定制自己需要的構(gòu)件服務。來定制自己需要的構(gòu)件服務。u另一種構(gòu)件定制方法是,以構(gòu)件為單元定義配置另一種構(gòu)件定制方法是,以構(gòu)件為單元定義配置信息,通過配置項的具體取值的不同來實現(xiàn)構(gòu)件信息,通過配置項的具體取值的不同來實現(xiàn)構(gòu)件功能的定制功能的定制。當當構(gòu)件設計者希望通過一組參數(shù)來構(gòu)件設計者希望通過一組參數(shù)來影響構(gòu)件接口定義中的多個對外服務時,此種定影響構(gòu)件接口定義中的多個對外服務時,此種定制機制優(yōu)于前述的針對逐個服務的參數(shù)化機制制機制優(yōu)于前述的針對逐個服務的參數(shù)化機制。u基于繼承和基于委托的定制機制?;?/p>

60、繼承和基于委托的定制機制。2021-12-2849基于繼承和基于委托的定制機制基于繼承和基于委托的定制機制它們它們必須必須與基于與基于框架的抽象方法配套使用??蚣艿某橄蠓椒ㄅ涮资褂?。采用采用繼承機制繼承機制時時,構(gòu)件的使用者利用面向?qū)ο?,?gòu)件的使用者利用面向?qū)ο蟮睦^承機制為框架中的抽象服務提供適合于特的繼承機制為框架中的抽象服務提供適合于特定應用場景的實現(xiàn)體。定應用場景的實現(xiàn)體。采用采用委托機制委托機制時時,構(gòu)件在運行過程中將允許使,構(gòu)件在運行過程中將允許使用方定制的部分功能委托給使用方提供的抽象用方定制的部分功能委托給使用方提供的抽象服務的實現(xiàn)體,或者說,框架型構(gòu)件采用回調(diào)服務的實現(xiàn)體,或者

溫馨提示

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

評論

0/150

提交評論