




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件工程 第8章 體系結(jié)構(gòu)設(shè)計(jì) 主要內(nèi)容 v軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu) v體系結(jié)構(gòu)類型體系結(jié)構(gòu)類型 v體系結(jié)構(gòu)風(fēng)格體系結(jié)構(gòu)風(fēng)格 v體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì) v評(píng)估可選的體系結(jié)構(gòu)設(shè)計(jì)評(píng)估可選的體系結(jié)構(gòu)設(shè)計(jì) v使用數(shù)據(jù)流進(jìn)行體系結(jié)構(gòu)映射使用數(shù)據(jù)流進(jìn)行體系結(jié)構(gòu)映射 v小結(jié)小結(jié) 進(jìn)行體系結(jié)構(gòu)設(shè)計(jì) v體系結(jié)構(gòu)設(shè)計(jì)表示了建立計(jì)算機(jī)系統(tǒng)所需體系結(jié)構(gòu)設(shè)計(jì)表示了建立計(jì)算機(jī)系統(tǒng)所需 的的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)和和程序構(gòu)件程序構(gòu)件。它需要考慮系統(tǒng)。它需要考慮系統(tǒng) 采取的體系結(jié)構(gòu)風(fēng)格,系統(tǒng)組成構(gòu)件的結(jié)采取的體系結(jié)構(gòu)風(fēng)格,系統(tǒng)組成構(gòu)件的結(jié) 構(gòu)、性質(zhì),以及系統(tǒng)中所有體系結(jié)構(gòu)構(gòu)件構(gòu)、性質(zhì),以及系統(tǒng)中所有體系結(jié)構(gòu)構(gòu)件 之間的相互關(guān)系
2、。之間的相互關(guān)系。 進(jìn)行體系結(jié)構(gòu)設(shè)計(jì) v盡管軟件工程師能夠設(shè)計(jì)數(shù)據(jù)和體系結(jié)構(gòu),盡管軟件工程師能夠設(shè)計(jì)數(shù)據(jù)和體系結(jié)構(gòu), 但是在建造大型復(fù)雜系統(tǒng)的時(shí)候,這項(xiàng)工但是在建造大型復(fù)雜系統(tǒng)的時(shí)候,這項(xiàng)工 作往往由作往往由專家專家來(lái)完成。來(lái)完成。數(shù)據(jù)庫(kù)或者數(shù)據(jù)倉(cāng)數(shù)據(jù)庫(kù)或者數(shù)據(jù)倉(cāng) 庫(kù)設(shè)計(jì)者庫(kù)設(shè)計(jì)者為系統(tǒng)創(chuàng)建數(shù)據(jù)體系結(jié)構(gòu)。為系統(tǒng)創(chuàng)建數(shù)據(jù)體系結(jié)構(gòu)?!毕迪?統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)師統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)師“為系統(tǒng)工程和軟件需為系統(tǒng)工程和軟件需 求分析中導(dǎo)出的需求選擇合適的體系結(jié)構(gòu)求分析中導(dǎo)出的需求選擇合適的體系結(jié)構(gòu) 風(fēng)格。風(fēng)格。 進(jìn)行體系結(jié)構(gòu)設(shè)計(jì) v體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)始于數(shù)據(jù)設(shè)計(jì)始于數(shù)據(jù)設(shè)計(jì),然后,然后導(dǎo)出系導(dǎo)出系 統(tǒng)體系結(jié)
3、構(gòu)統(tǒng)體系結(jié)構(gòu)的一個(gè)或者多個(gè)表示。對(duì)可選的一個(gè)或者多個(gè)表示。對(duì)可選 的體系結(jié)構(gòu)風(fēng)格或模式進(jìn)行分析,以導(dǎo)出的體系結(jié)構(gòu)風(fēng)格或模式進(jìn)行分析,以導(dǎo)出 最適合于客戶需求和質(zhì)量屬性的結(jié)構(gòu)。一最適合于客戶需求和質(zhì)量屬性的結(jié)構(gòu)。一 旦選定,使用體系結(jié)構(gòu)設(shè)計(jì)方法對(duì)體系結(jié)旦選定,使用體系結(jié)構(gòu)設(shè)計(jì)方法對(duì)體系結(jié) 構(gòu)進(jìn)行精化。構(gòu)進(jìn)行精化。 v在體系結(jié)構(gòu)設(shè)計(jì)過(guò)程中,將創(chuàng)建一個(gè)包括在體系結(jié)構(gòu)設(shè)計(jì)過(guò)程中,將創(chuàng)建一個(gè)包括 數(shù)據(jù)體系結(jié)構(gòu)和程序結(jié)構(gòu)的體系結(jié)構(gòu)模型數(shù)據(jù)體系結(jié)構(gòu)和程序結(jié)構(gòu)的體系結(jié)構(gòu)模型。 此外,還需描述此外,還需描述構(gòu)件的性質(zhì)以及交互關(guān)系構(gòu)件的性質(zhì)以及交互關(guān)系。 進(jìn)行體系結(jié)構(gòu)設(shè)計(jì) v設(shè)計(jì)通常被描述為一個(gè)多步過(guò)程,其主要設(shè)
4、計(jì)通常被描述為一個(gè)多步過(guò)程,其主要 任務(wù)是從需求信息中綜合出任務(wù)是從需求信息中綜合出數(shù)據(jù)的表示、數(shù)據(jù)的表示、 程序結(jié)構(gòu)、接口特征和過(guò)程細(xì)節(jié)程序結(jié)構(gòu)、接口特征和過(guò)程細(xì)節(jié)。 v設(shè)計(jì)是由設(shè)計(jì)是由信息驅(qū)動(dòng)信息驅(qū)動(dòng)的。軟件設(shè)計(jì)方法都是的。軟件設(shè)計(jì)方法都是 通過(guò)仔細(xì)考慮分析模型的三個(gè)域而得到的。通過(guò)仔細(xì)考慮分析模型的三個(gè)域而得到的。 因此,信息、功能和行為三個(gè)域是創(chuàng)建軟因此,信息、功能和行為三個(gè)域是創(chuàng)建軟 件設(shè)計(jì)的指南。件設(shè)計(jì)的指南。 v體系結(jié)構(gòu)設(shè)計(jì)是構(gòu)建軟件的體系結(jié)構(gòu)設(shè)計(jì)是構(gòu)建軟件的初始藍(lán)圖初始藍(lán)圖。 軟件體系結(jié)構(gòu) v從第一個(gè)程序從第一個(gè)程序被劃分成模塊開(kāi)始,軟件系被劃分成模塊開(kāi)始,軟件系 統(tǒng)就有了體系
5、結(jié)構(gòu)統(tǒng)就有了體系結(jié)構(gòu)。同時(shí),程序員已經(jīng)開(kāi)。同時(shí),程序員已經(jīng)開(kāi) 始負(fù)責(zé)模塊間的交互和模塊裝配的全局屬始負(fù)責(zé)模塊間的交互和模塊裝配的全局屬 性。從歷史的觀點(diǎn)看,體系結(jié)構(gòu)隱含了很性。從歷史的觀點(diǎn)看,體系結(jié)構(gòu)隱含了很 多內(nèi)容多內(nèi)容實(shí)現(xiàn)的偶然事件或先前遺留系實(shí)現(xiàn)的偶然事件或先前遺留系 統(tǒng)。好的軟件開(kāi)發(fā)人員經(jīng)常采用一個(gè)或者統(tǒng)。好的軟件開(kāi)發(fā)人員經(jīng)常采用一個(gè)或者 多個(gè)體系結(jié)構(gòu)模式作為系統(tǒng)組織策略,但多個(gè)體系結(jié)構(gòu)模式作為系統(tǒng)組織策略,但 是他們只是非正式地使用這些模式,并且是他們只是非正式地使用這些模式,并且 在最終系統(tǒng)中沒(méi)有將這些模式清楚地體現(xiàn)在最終系統(tǒng)中沒(méi)有將這些模式清楚地體現(xiàn) 出來(lái)。出來(lái)。 什么是體系結(jié)構(gòu)
6、 v一個(gè)程序和計(jì)算系統(tǒng)軟件體系結(jié)構(gòu)是指一個(gè)程序和計(jì)算系統(tǒng)軟件體系結(jié)構(gòu)是指系系 統(tǒng)的一個(gè)或者多個(gè)結(jié)構(gòu)統(tǒng)的一個(gè)或者多個(gè)結(jié)構(gòu)。結(jié)構(gòu)中包括。結(jié)構(gòu)中包括軟件軟件 的構(gòu)件的構(gòu)件,構(gòu)件的,構(gòu)件的外部可見(jiàn)屬性外部可見(jiàn)屬性以及它們之以及它們之 間的間的相互關(guān)系相互關(guān)系。 v體系結(jié)構(gòu)并非可運(yùn)行軟件。它體系結(jié)構(gòu)并非可運(yùn)行軟件。它是一種表達(dá)是一種表達(dá), 使軟件工程師能夠:使軟件工程師能夠:(1)分析設(shè)計(jì)在滿足分析設(shè)計(jì)在滿足 規(guī)定需求方面的有效性;規(guī)定需求方面的有效性;(2)在設(shè)計(jì)變更在設(shè)計(jì)變更 相對(duì)容易的階段,考慮體系結(jié)構(gòu)可能的選相對(duì)容易的階段,考慮體系結(jié)構(gòu)可能的選 擇方案;擇方案;(3)降低與軟件構(gòu)造相關(guān)聯(lián)的風(fēng)降低
7、與軟件構(gòu)造相關(guān)聯(lián)的風(fēng) 險(xiǎn)。險(xiǎn)。 什么是體系結(jié)構(gòu) v在體系結(jié)構(gòu)設(shè)計(jì)的環(huán)境中,軟件構(gòu)件可以簡(jiǎn)在體系結(jié)構(gòu)設(shè)計(jì)的環(huán)境中,軟件構(gòu)件可以簡(jiǎn) 單到單到程序模塊或者面向?qū)ο蟮念惓绦蚰K或者面向?qū)ο蟮念?,也可以擴(kuò),也可以擴(kuò) 充到包含數(shù)據(jù)庫(kù)和能夠完成客戶與服務(wù)器網(wǎng)充到包含數(shù)據(jù)庫(kù)和能夠完成客戶與服務(wù)器網(wǎng) 絡(luò)配置的絡(luò)配置的“中間件中間件”。 v本教材中,軟件體系結(jié)構(gòu)的設(shè)計(jì)考慮了設(shè)計(jì)本教材中,軟件體系結(jié)構(gòu)的設(shè)計(jì)考慮了設(shè)計(jì) 金字塔中的兩個(gè)層次金字塔中的兩個(gè)層次數(shù)據(jù)設(shè)計(jì)和體系結(jié)數(shù)據(jù)設(shè)計(jì)和體系結(jié) 構(gòu)設(shè)計(jì)構(gòu)設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)使我們表示出傳統(tǒng)系統(tǒng)中。數(shù)據(jù)設(shè)計(jì)使我們表示出傳統(tǒng)系統(tǒng)中 體系結(jié)構(gòu)的體系結(jié)構(gòu)的數(shù)據(jù)構(gòu)件和面向?qū)ο笙到y(tǒng)中類的數(shù)據(jù)
8、構(gòu)件和面向?qū)ο笙到y(tǒng)中類的 定義定義,體系結(jié)構(gòu)設(shè)計(jì)則主要關(guān)注,體系結(jié)構(gòu)設(shè)計(jì)則主要關(guān)注軟件構(gòu)件的軟件構(gòu)件的 結(jié)構(gòu)、屬性和交互作用結(jié)構(gòu)、屬性和交互作用。 為什么體系結(jié)構(gòu)如此重要 vBAS03給出了軟件體系結(jié)構(gòu)之所以重要的給出了軟件體系結(jié)構(gòu)之所以重要的三個(gè)關(guān)鍵原三個(gè)關(guān)鍵原 因因: l軟件體系結(jié)構(gòu)的表示有助于對(duì)計(jì)算機(jī)系統(tǒng)開(kāi)發(fā)感興趣的軟件體系結(jié)構(gòu)的表示有助于對(duì)計(jì)算機(jī)系統(tǒng)開(kāi)發(fā)感興趣的 各方開(kāi)展交流各方開(kāi)展交流。 l體系結(jié)構(gòu)突出了體系結(jié)構(gòu)突出了早期設(shè)計(jì)決策早期設(shè)計(jì)決策,這些決策對(duì)隨后的所有,這些決策對(duì)隨后的所有 軟件工程工作有深遠(yuǎn)的影響,同時(shí)對(duì)系統(tǒng)作為一個(gè)可運(yùn)軟件工程工作有深遠(yuǎn)的影響,同時(shí)對(duì)系統(tǒng)作為一個(gè)可運(yùn)
9、行實(shí)體的最后成功有重要作用。行實(shí)體的最后成功有重要作用。 l體系結(jié)構(gòu)體系結(jié)構(gòu)“構(gòu)建了一個(gè)相對(duì)小的,易于理解的模型,該構(gòu)建了一個(gè)相對(duì)小的,易于理解的模型,該 模型描述了模型描述了系統(tǒng)如何構(gòu)成以及其構(gòu)件如何一起工作系統(tǒng)如何構(gòu)成以及其構(gòu)件如何一起工作”。 v體系結(jié)構(gòu)體系結(jié)構(gòu)設(shè)計(jì)模型和包含在其中的體系結(jié)構(gòu)模式都是可設(shè)計(jì)模型和包含在其中的體系結(jié)構(gòu)模式都是可 以傳遞的以傳遞的,即體系結(jié)構(gòu)的風(fēng)格和模式可以被應(yīng)用于其他,即體系結(jié)構(gòu)的風(fēng)格和模式可以被應(yīng)用于其他 系統(tǒng)的設(shè)計(jì)中,并且表示了一組使軟件工程師能以可預(yù)系統(tǒng)的設(shè)計(jì)中,并且表示了一組使軟件工程師能以可預(yù) 見(jiàn)的方式描述體系結(jié)構(gòu)的抽象。見(jiàn)的方式描述體系結(jié)構(gòu)的抽象
10、。 數(shù)據(jù)設(shè)計(jì) v數(shù)據(jù)設(shè)計(jì)是把在分析模型中定義的數(shù)據(jù)對(duì)數(shù)據(jù)設(shè)計(jì)是把在分析模型中定義的數(shù)據(jù)對(duì) 象轉(zhuǎn)化成象轉(zhuǎn)化成軟件構(gòu)件級(jí)的數(shù)據(jù)結(jié)構(gòu)軟件構(gòu)件級(jí)的數(shù)據(jù)結(jié)構(gòu),并且在,并且在 必要時(shí)轉(zhuǎn)化為必要時(shí)轉(zhuǎn)化為應(yīng)用程序級(jí)的數(shù)據(jù)庫(kù)體系結(jié)應(yīng)用程序級(jí)的數(shù)據(jù)庫(kù)體系結(jié) 構(gòu)構(gòu)。在某些情況下,必須為一個(gè)新系統(tǒng)專。在某些情況下,必須為一個(gè)新系統(tǒng)專 門設(shè)計(jì)和建立門設(shè)計(jì)和建立數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)。 體系結(jié)構(gòu)級(jí)的數(shù)據(jù)設(shè)計(jì) v當(dāng)今,大大小小的業(yè)務(wù)均充斥著數(shù)據(jù),甚至一當(dāng)今,大大小小的業(yè)務(wù)均充斥著數(shù)據(jù),甚至一 個(gè)中型規(guī)模企業(yè)擁有為多個(gè)應(yīng)用系統(tǒng)提供服務(wù)個(gè)中型規(guī)模企業(yè)擁有為多個(gè)應(yīng)用系統(tǒng)提供服務(wù) 的幾十個(gè)數(shù)據(jù)庫(kù)。問(wèn)題在于的幾十個(gè)數(shù)據(jù)庫(kù)。問(wèn)題在于如何從這樣龐
11、大的如何從這樣龐大的 數(shù)據(jù)環(huán)境中提取有用的信息數(shù)據(jù)環(huán)境中提取有用的信息,特別當(dāng)需要的信,特別當(dāng)需要的信 息是功能交叉時(shí)。息是功能交叉時(shí)。 vIT界開(kāi)發(fā)出了界開(kāi)發(fā)出了數(shù)據(jù)挖掘數(shù)據(jù)挖掘技術(shù),也稱為技術(shù),也稱為數(shù)據(jù)庫(kù)中數(shù)據(jù)庫(kù)中 的知識(shí)發(fā)現(xiàn)的知識(shí)發(fā)現(xiàn),該技術(shù)遍歷現(xiàn)有的數(shù)據(jù)庫(kù)以試圖,該技術(shù)遍歷現(xiàn)有的數(shù)據(jù)庫(kù)以試圖 抽取出合適的業(yè)務(wù)級(jí)信息。另一種可選的解決抽取出合適的業(yè)務(wù)級(jí)信息。另一種可選的解決 方案稱為方案稱為數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)倉(cāng)庫(kù),它是一個(gè)獨(dú)立的數(shù)據(jù)環(huán)境,它是一個(gè)獨(dú)立的數(shù)據(jù)環(huán)境, 但包含了某業(yè)務(wù)使用的所有數(shù)據(jù)。但包含了某業(yè)務(wù)使用的所有數(shù)據(jù)。 構(gòu)件級(jí)的數(shù)據(jù)設(shè)計(jì) v構(gòu)件級(jí)的數(shù)據(jù)設(shè)計(jì)關(guān)注于那些被一個(gè)或者多個(gè)構(gòu)件級(jí)的
12、數(shù)據(jù)設(shè)計(jì)關(guān)注于那些被一個(gè)或者多個(gè) 軟件構(gòu)件直接訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)的表示。軟件構(gòu)件直接訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)的表示。 WAS80提出了以下數(shù)據(jù)規(guī)格說(shuō)明原則:提出了以下數(shù)據(jù)規(guī)格說(shuō)明原則: 1.應(yīng)用于功能和行為的系統(tǒng)分析原則也可應(yīng)用于應(yīng)用于功能和行為的系統(tǒng)分析原則也可應(yīng)用于 數(shù)據(jù)。數(shù)據(jù)。同樣應(yīng)該開(kāi)發(fā)和評(píng)審數(shù)據(jù)流和數(shù)據(jù)內(nèi)容同樣應(yīng)該開(kāi)發(fā)和評(píng)審數(shù)據(jù)流和數(shù)據(jù)內(nèi)容 的表示,標(biāo)識(shí)數(shù)據(jù)對(duì)象,還應(yīng)該考慮其他可選的表示,標(biāo)識(shí)數(shù)據(jù)對(duì)象,還應(yīng)該考慮其他可選 的數(shù)據(jù)組織結(jié)構(gòu),評(píng)估數(shù)據(jù)模型對(duì)軟件設(shè)計(jì)的的數(shù)據(jù)組織結(jié)構(gòu),評(píng)估數(shù)據(jù)模型對(duì)軟件設(shè)計(jì)的 影響。影響。 2.標(biāo)識(shí)所有數(shù)據(jù)結(jié)構(gòu)及其完成的操作。標(biāo)識(shí)所有數(shù)據(jù)結(jié)構(gòu)及其完成的操作。設(shè)計(jì)一個(gè)設(shè)計(jì)一
13、個(gè) 高效的數(shù)據(jù)結(jié)構(gòu),必須考慮其上的操作。把屬高效的數(shù)據(jù)結(jié)構(gòu),必須考慮其上的操作。把屬 性和操作封裝在一個(gè)類中滿足這個(gè)原則。性和操作封裝在一個(gè)類中滿足這個(gè)原則。 構(gòu)件級(jí)的數(shù)據(jù)設(shè)計(jì) 3.應(yīng)該建立定義數(shù)據(jù)對(duì)象內(nèi)容的機(jī)制,并應(yīng)該建立定義數(shù)據(jù)對(duì)象內(nèi)容的機(jī)制,并 且用于定義數(shù)據(jù)及其操作。且用于定義數(shù)據(jù)及其操作。類圖定義包含類圖定義包含 在類中的數(shù)據(jù)項(xiàng)和應(yīng)用到這些數(shù)據(jù)項(xiàng)上的在類中的數(shù)據(jù)項(xiàng)和應(yīng)用到這些數(shù)據(jù)項(xiàng)上的 方法。方法。 4.低層的數(shù)據(jù)設(shè)計(jì)決策應(yīng)該延遲到設(shè)計(jì)過(guò)低層的數(shù)據(jù)設(shè)計(jì)決策應(yīng)該延遲到設(shè)計(jì)過(guò) 程的后期。程的后期。數(shù)據(jù)設(shè)計(jì)可以采用逐步求精的數(shù)據(jù)設(shè)計(jì)可以采用逐步求精的 過(guò)程,所有的數(shù)據(jù)組織可以在需求分析階過(guò)
14、程,所有的數(shù)據(jù)組織可以在需求分析階 段定義,在數(shù)據(jù)設(shè)計(jì)工作中精化,在構(gòu)件段定義,在數(shù)據(jù)設(shè)計(jì)工作中精化,在構(gòu)件 級(jí)設(shè)計(jì)階段刻畫細(xì)節(jié)。級(jí)設(shè)計(jì)階段刻畫細(xì)節(jié)。 構(gòu)件級(jí)的數(shù)據(jù)設(shè)計(jì) v5.只有那些直接使用數(shù)據(jù)結(jié)構(gòu)內(nèi)部數(shù)據(jù)的模塊只有那些直接使用數(shù)據(jù)結(jié)構(gòu)內(nèi)部數(shù)據(jù)的模塊 才能夠看到該數(shù)據(jù)結(jié)構(gòu)的表示。才能夠看到該數(shù)據(jù)結(jié)構(gòu)的表示。信息隱蔽概念信息隱蔽概念 以及相關(guān)的耦合概念為軟件設(shè)計(jì)質(zhì)量的評(píng)估提以及相關(guān)的耦合概念為軟件設(shè)計(jì)質(zhì)量的評(píng)估提 供了依據(jù)。供了依據(jù)。 v6.應(yīng)該開(kāi)發(fā)一個(gè)由有用的數(shù)據(jù)結(jié)構(gòu)及其操作組應(yīng)該開(kāi)發(fā)一個(gè)由有用的數(shù)據(jù)結(jié)構(gòu)及其操作組 成的庫(kù)。成的庫(kù)。類庫(kù)即可實(shí)現(xiàn)這個(gè)目標(biāo)。類庫(kù)即可實(shí)現(xiàn)這個(gè)目標(biāo)。 v7.軟件設(shè)計(jì)
15、和程序設(shè)計(jì)語(yǔ)言應(yīng)該支持抽象數(shù)據(jù)軟件設(shè)計(jì)和程序設(shè)計(jì)語(yǔ)言應(yīng)該支持抽象數(shù)據(jù) 類型的規(guī)格說(shuō)明和實(shí)現(xiàn)。類型的規(guī)格說(shuō)明和實(shí)現(xiàn)。如果沒(méi)有辦法對(duì)所選如果沒(méi)有辦法對(duì)所選 用于實(shí)現(xiàn)的編程語(yǔ)言中的結(jié)構(gòu)進(jìn)行直接說(shuō)明,用于實(shí)現(xiàn)的編程語(yǔ)言中的結(jié)構(gòu)進(jìn)行直接說(shuō)明, 那么復(fù)雜數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)將變得非常困難。那么復(fù)雜數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)將變得非常困難。 體系結(jié)構(gòu)風(fēng)格和模式 v建筑師使用建筑師使用體系結(jié)構(gòu)體系結(jié)構(gòu)(建筑風(fēng)格建筑風(fēng)格)作為描)作為描 述機(jī)制,將該房子和其他風(fēng)格的房子區(qū)分述機(jī)制,將該房子和其他風(fēng)格的房子區(qū)分 開(kāi)來(lái)。但更重要的是,開(kāi)來(lái)。但更重要的是,體系結(jié)構(gòu)風(fēng)格也是體系結(jié)構(gòu)風(fēng)格也是 建筑的樣板建筑的樣板。必須進(jìn)一步規(guī)定房子的細(xì)節(jié)
16、,。必須進(jìn)一步規(guī)定房子的細(xì)節(jié), 具體說(shuō)明它的最終尺寸,進(jìn)一步給出定制具體說(shuō)明它的最終尺寸,進(jìn)一步給出定制 的特征,確定建筑材料等。實(shí)際上是的特征,確定建筑材料等。實(shí)際上是建筑建筑 風(fēng)格指導(dǎo)了建筑師的工作風(fēng)格指導(dǎo)了建筑師的工作。 體系結(jié)構(gòu)風(fēng)格和模式 v為計(jì)算機(jī)系統(tǒng)建造的軟件也展示了眾多體系為計(jì)算機(jī)系統(tǒng)建造的軟件也展示了眾多體系 結(jié)構(gòu)風(fēng)格中的一種。每種風(fēng)格描述一種系統(tǒng)結(jié)構(gòu)風(fēng)格中的一種。每種風(fēng)格描述一種系統(tǒng) 類別,包括:類別,包括:(1)一組構(gòu)件一組構(gòu)件完成系統(tǒng)需要的完成系統(tǒng)需要的 某種功能;某種功能;(2)一組連接器一組連接器,它們能使構(gòu)件,它們能使構(gòu)件 間實(shí)現(xiàn)間實(shí)現(xiàn)“通信、合作和協(xié)調(diào)通信、合作和
17、協(xié)調(diào)”;(3)約束約束, 定義構(gòu)件如何集成為一個(gè)系統(tǒng);定義構(gòu)件如何集成為一個(gè)系統(tǒng);(4)語(yǔ)義模語(yǔ)義模 型型,它能使設(shè)計(jì)者通過(guò)分析系統(tǒng)的構(gòu)成成分,它能使設(shè)計(jì)者通過(guò)分析系統(tǒng)的構(gòu)成成分 的性質(zhì)來(lái)理解系統(tǒng)的整體性質(zhì)。的性質(zhì)來(lái)理解系統(tǒng)的整體性質(zhì)。 體系結(jié)構(gòu)風(fēng)格和模式 v一種體系結(jié)構(gòu)風(fēng)格就是一種在整個(gè)系統(tǒng)設(shè)一種體系結(jié)構(gòu)風(fēng)格就是一種在整個(gè)系統(tǒng)設(shè) 計(jì)上面的計(jì)上面的變換變換。它的目的就是為系統(tǒng)的。它的目的就是為系統(tǒng)的所所 有構(gòu)件建立一個(gè)結(jié)構(gòu)有構(gòu)件建立一個(gè)結(jié)構(gòu)。在對(duì)已有體系結(jié)構(gòu)。在對(duì)已有體系結(jié)構(gòu) 進(jìn)行進(jìn)行再工程再工程時(shí),強(qiáng)制采用一種體系結(jié)構(gòu)風(fēng)時(shí),強(qiáng)制采用一種體系結(jié)構(gòu)風(fēng) 格會(huì)導(dǎo)致軟件結(jié)構(gòu)的根本性改變,包括對(duì)格會(huì)導(dǎo)致
18、軟件結(jié)構(gòu)的根本性改變,包括對(duì) 構(gòu)件功能的再分配。構(gòu)件功能的再分配。 體系結(jié)構(gòu)風(fēng)格和模式 v體系結(jié)構(gòu)模式體系結(jié)構(gòu)模式也對(duì)體系結(jié)構(gòu)的設(shè)計(jì)施加一種變也對(duì)體系結(jié)構(gòu)的設(shè)計(jì)施加一種變 換。然而,體系結(jié)構(gòu)模式與體系結(jié)構(gòu)風(fēng)格在許換。然而,體系結(jié)構(gòu)模式與體系結(jié)構(gòu)風(fēng)格在許 多基本方面存在不同:多基本方面存在不同:(1)體系結(jié)構(gòu)模式涉及的體系結(jié)構(gòu)模式涉及的 范圍要小一些,它更多集中在體系結(jié)構(gòu)的范圍要小一些,它更多集中在體系結(jié)構(gòu)的某一某一 局部局部而不是體系結(jié)構(gòu)的整體;而不是體系結(jié)構(gòu)的整體;(2)模式在體系結(jié)模式在體系結(jié) 構(gòu)上施加規(guī)則,描述了軟件是如何在基礎(chǔ)設(shè)施構(gòu)上施加規(guī)則,描述了軟件是如何在基礎(chǔ)設(shè)施 層次上處理某些
19、層次上處理某些功能性方面功能性方面的問(wèn)題;的問(wèn)題;(3)體系結(jié)體系結(jié) 構(gòu)模式傾向于在系統(tǒng)結(jié)構(gòu)的環(huán)境中處理構(gòu)模式傾向于在系統(tǒng)結(jié)構(gòu)的環(huán)境中處理特定的特定的 行為問(wèn)題行為問(wèn)題。模式可以與體系結(jié)構(gòu)風(fēng)格結(jié)合起來(lái),。模式可以與體系結(jié)構(gòu)風(fēng)格結(jié)合起來(lái), 用于建立整個(gè)系統(tǒng)結(jié)構(gòu)的外形。用于建立整個(gè)系統(tǒng)結(jié)構(gòu)的外形。 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 v以數(shù)據(jù)為中心的體系結(jié)構(gòu)以數(shù)據(jù)為中心的體系結(jié)構(gòu)。數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)駐留駐留 在這種體系結(jié)構(gòu)的中心,其他構(gòu)件會(huì)經(jīng)常在這種體系結(jié)構(gòu)的中心,其他構(gòu)件會(huì)經(jīng)常 訪問(wèn)數(shù)據(jù)存儲(chǔ),并對(duì)存儲(chǔ)中的數(shù)據(jù)進(jìn)行更訪問(wèn)數(shù)據(jù)存儲(chǔ),并對(duì)存儲(chǔ)中的數(shù)據(jù)進(jìn)行更 新、增加、刪除或者修改。圖新、增加、刪除或者修改。圖8-1
20、描述了描述了 一個(gè)典型的以數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格。一個(gè)典型的以數(shù)據(jù)為中心的體系結(jié)構(gòu)風(fēng)格。 在某些情況下存儲(chǔ)庫(kù)是被動(dòng)的,即客戶軟在某些情況下存儲(chǔ)庫(kù)是被動(dòng)的,即客戶軟 件獨(dú)立于數(shù)據(jù)的任何變化或其他客戶軟件件獨(dú)立于數(shù)據(jù)的任何變化或其他客戶軟件 的動(dòng)作而訪問(wèn)數(shù)據(jù)。該方法的一個(gè)變種是的動(dòng)作而訪問(wèn)數(shù)據(jù)。該方法的一個(gè)變種是 將中心存儲(chǔ)庫(kù)變換成將中心存儲(chǔ)庫(kù)變換成“黑板黑板”,當(dāng)用戶感,當(dāng)用戶感 興趣的數(shù)據(jù)發(fā)生變化時(shí),它將通知客戶軟興趣的數(shù)據(jù)發(fā)生變化時(shí),它將通知客戶軟 件。件。 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 圖8-1以數(shù)據(jù)為中心的體系結(jié)構(gòu) 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 v以數(shù)據(jù)為中心的體系結(jié)構(gòu)提升了以數(shù)據(jù)為中心的體系結(jié)構(gòu)
21、提升了可集成性可集成性, 即現(xiàn)有的構(gòu)件可以被修改而且新的客戶構(gòu)即現(xiàn)有的構(gòu)件可以被修改而且新的客戶構(gòu) 件可以加入到系統(tǒng)結(jié)構(gòu)之中,而無(wú)需考慮件可以加入到系統(tǒng)結(jié)構(gòu)之中,而無(wú)需考慮 其他的客戶。另外,數(shù)據(jù)可以在客戶間通其他的客戶。另外,數(shù)據(jù)可以在客戶間通 過(guò)過(guò)“黑板黑板”機(jī)制傳送,客戶構(gòu)件獨(dú)立地執(zhí)機(jī)制傳送,客戶構(gòu)件獨(dú)立地執(zhí) 行過(guò)程。行過(guò)程。 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 v數(shù)據(jù)流體系結(jié)構(gòu)數(shù)據(jù)流體系結(jié)構(gòu)。當(dāng)輸入數(shù)據(jù)經(jīng)過(guò)一系列的計(jì)。當(dāng)輸入數(shù)據(jù)經(jīng)過(guò)一系列的計(jì) 算和操作構(gòu)件的變換形成輸出數(shù)據(jù)時(shí),可以應(yīng)算和操作構(gòu)件的變換形成輸出數(shù)據(jù)時(shí),可以應(yīng) 用這種體系結(jié)構(gòu)。用這種體系結(jié)構(gòu)。管道和過(guò)濾器結(jié)構(gòu)管道和過(guò)濾器結(jié)構(gòu)(如圖如圖
22、8-2) 擁有一組被稱為過(guò)濾器的構(gòu)件,這些構(gòu)件通過(guò)擁有一組被稱為過(guò)濾器的構(gòu)件,這些構(gòu)件通過(guò) 管道連接,管道將數(shù)據(jù)從一個(gè)構(gòu)件傳送到下一管道連接,管道將數(shù)據(jù)從一個(gè)構(gòu)件傳送到下一 個(gè)構(gòu)件。每個(gè)過(guò)濾器獨(dú)立于其上游和下游的構(gòu)個(gè)構(gòu)件。每個(gè)過(guò)濾器獨(dú)立于其上游和下游的構(gòu) 件而工作,過(guò)濾器的設(shè)計(jì)要針對(duì)某種形式的數(shù)件而工作,過(guò)濾器的設(shè)計(jì)要針對(duì)某種形式的數(shù) 據(jù)輸入,并且產(chǎn)生某種特定形式的數(shù)據(jù)輸出。據(jù)輸入,并且產(chǎn)生某種特定形式的數(shù)據(jù)輸出。 然而,過(guò)濾器沒(méi)有必要了解與之相鄰的過(guò)濾器然而,過(guò)濾器沒(méi)有必要了解與之相鄰的過(guò)濾器 的工作。的工作。 v如果數(shù)據(jù)流退化成單線的變換,則稱為如果數(shù)據(jù)流退化成單線的變換,則稱為批序列批序
23、列。 這種結(jié)構(gòu)接收一批數(shù)據(jù),然后應(yīng)用一系列連續(xù)這種結(jié)構(gòu)接收一批數(shù)據(jù),然后應(yīng)用一系列連續(xù) 的構(gòu)件的構(gòu)件(過(guò)濾器過(guò)濾器)變換它。變換它。 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 圖8-2 數(shù)據(jù)流體系結(jié)構(gòu) 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 v調(diào)用和返回調(diào)用和返回體系結(jié)構(gòu)體系結(jié)構(gòu)。該體系結(jié)構(gòu)風(fēng)格能夠讓。該體系結(jié)構(gòu)風(fēng)格能夠讓 軟件設(shè)計(jì)師設(shè)計(jì)出一個(gè)相對(duì)易于修改和擴(kuò)展的程軟件設(shè)計(jì)師設(shè)計(jì)出一個(gè)相對(duì)易于修改和擴(kuò)展的程 序結(jié)構(gòu)。存在兩種子風(fēng)格:序結(jié)構(gòu)。存在兩種子風(fēng)格: v主程序主程序/子程序體系結(jié)構(gòu)。子程序體系結(jié)構(gòu)。這種傳統(tǒng)的程序結(jié)構(gòu)將功能分解為這種傳統(tǒng)的程序結(jié)構(gòu)將功能分解為 一個(gè)控制層次,其中一個(gè)控制層次,其中“主主”程序調(diào)用一組程序構(gòu)
24、件,這些程序程序調(diào)用一組程序構(gòu)件,這些程序 構(gòu)件又去調(diào)用別的程序構(gòu)件。圖構(gòu)件又去調(diào)用別的程序構(gòu)件。圖8-3描述了該種系統(tǒng)結(jié)構(gòu)。描述了該種系統(tǒng)結(jié)構(gòu)。 v遠(yuǎn)程過(guò)程調(diào)用體系結(jié)構(gòu)。遠(yuǎn)程過(guò)程調(diào)用體系結(jié)構(gòu)。主程序主程序/子程序體系結(jié)構(gòu)的構(gòu)件分布子程序體系結(jié)構(gòu)的構(gòu)件分布 在網(wǎng)絡(luò)的多個(gè)計(jì)算機(jī)上。在網(wǎng)絡(luò)的多個(gè)計(jì)算機(jī)上。 v面向?qū)ο篌w系結(jié)構(gòu)。面向?qū)ο篌w系結(jié)構(gòu)。系統(tǒng)的構(gòu)件封裝了數(shù)據(jù)和系統(tǒng)的構(gòu)件封裝了數(shù)據(jù)和 必須應(yīng)用到該數(shù)據(jù)上的操作,構(gòu)件間通過(guò)信息傳必須應(yīng)用到該數(shù)據(jù)上的操作,構(gòu)件間通過(guò)信息傳 遞進(jìn)行通信與合作。遞進(jìn)行通信與合作。 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 圖8-3 主程序/子程序體系結(jié)構(gòu) 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 v層次
25、層次體系結(jié)構(gòu)體系結(jié)構(gòu)。層次體系結(jié)構(gòu)的基本結(jié)構(gòu)如圖。層次體系結(jié)構(gòu)的基本結(jié)構(gòu)如圖 8-4所示。其中定義了一系列所示。其中定義了一系列不同的層次不同的層次,每個(gè),每個(gè) 層次各自完成操作,這些操作不斷接近機(jī)器的指層次各自完成操作,這些操作不斷接近機(jī)器的指 令集。在最外層,構(gòu)件完成用戶界面的操作;在令集。在最外層,構(gòu)件完成用戶界面的操作;在 最內(nèi)層,構(gòu)件完成與操作系統(tǒng)的連接;中間層提最內(nèi)層,構(gòu)件完成與操作系統(tǒng)的連接;中間層提 供各種實(shí)用程序服務(wù)和應(yīng)用軟件功能。供各種實(shí)用程序服務(wù)和應(yīng)用軟件功能。 v這些體系結(jié)構(gòu)風(fēng)格僅僅是軟件設(shè)計(jì)師可用風(fēng)格這些體系結(jié)構(gòu)風(fēng)格僅僅是軟件設(shè)計(jì)師可用風(fēng)格 中的中的一小部分一小部分。
26、一旦需求工程提示了待構(gòu)建系統(tǒng)。一旦需求工程提示了待構(gòu)建系統(tǒng) 的特征和約束,就可以選擇的特征和約束,就可以選擇最適合最適合這些特征和約這些特征和約 束的體系結(jié)構(gòu)風(fēng)格或者風(fēng)格的組合。在很多情況束的體系結(jié)構(gòu)風(fēng)格或者風(fēng)格的組合。在很多情況 下,會(huì)有多種風(fēng)格是適合的,需要對(duì)可選的體系下,會(huì)有多種風(fēng)格是適合的,需要對(duì)可選的體系 結(jié)構(gòu)風(fēng)格進(jìn)行設(shè)計(jì)和評(píng)估。結(jié)構(gòu)風(fēng)格進(jìn)行設(shè)計(jì)和評(píng)估。 體系結(jié)構(gòu)風(fēng)格的簡(jiǎn)單分類 圖8-4 層次體系結(jié)構(gòu) 體系結(jié)構(gòu)模式 v如果建筑工人決定建構(gòu)一個(gè)如果建筑工人決定建構(gòu)一個(gè)“殖民式中廳殖民式中廳”, 那么只能應(yīng)用一種體系結(jié)構(gòu)風(fēng)格。風(fēng)格的那么只能應(yīng)用一種體系結(jié)構(gòu)風(fēng)格。風(fēng)格的細(xì)節(jié)細(xì)節(jié) 內(nèi)容是可以
27、內(nèi)容是可以酌情變動(dòng)酌情變動(dòng)的,但是一旦確定了房子的,但是一旦確定了房子 的整體體系結(jié)構(gòu),這個(gè)風(fēng)格就會(huì)影響設(shè)計(jì)。的整體體系結(jié)構(gòu),這個(gè)風(fēng)格就會(huì)影響設(shè)計(jì)。 v體系結(jié)構(gòu)的模式體系結(jié)構(gòu)的模式有所不同。例如,房子采用一有所不同。例如,房子采用一 種種Kitchen模式,這種模式,這種Kitchen模式規(guī)定了廚房模式規(guī)定了廚房 基本用具的放置、水池、櫥柜等要求,如果可基本用具的放置、水池、櫥柜等要求,如果可 能的話,也規(guī)定了房間中與完成做飯流程相關(guān)能的話,也規(guī)定了房間中與完成做飯流程相關(guān) 的這些廚具的布置規(guī)則。另外,該模式還可能的這些廚具的布置規(guī)則。另外,該模式還可能 指明柜臺(tái)面、燈、墻上的插座、中心島、地
28、板指明柜臺(tái)面、燈、墻上的插座、中心島、地板 等要求。顯然對(duì)廚房有不止一種的設(shè)計(jì),但是等要求。顯然對(duì)廚房有不止一種的設(shè)計(jì),但是 每種設(shè)計(jì)都應(yīng)該在每種設(shè)計(jì)都應(yīng)該在Kitchen模式提供的解決方案模式提供的解決方案 環(huán)境下來(lái)構(gòu)思完成。環(huán)境下來(lái)構(gòu)思完成。 體系結(jié)構(gòu)模式 v軟件的體系結(jié)構(gòu)模式定義了軟件的體系結(jié)構(gòu)模式定義了處理系統(tǒng)某些行為特征處理系統(tǒng)某些行為特征的方的方 法。法。BOS00定義了一系列的體系結(jié)構(gòu)模式域:定義了一系列的體系結(jié)構(gòu)模式域: v并發(fā)性并發(fā)性:很多應(yīng)用系統(tǒng)必須以一種模擬并行的方式來(lái)操:很多應(yīng)用系統(tǒng)必須以一種模擬并行的方式來(lái)操 作多個(gè)任務(wù)。在一個(gè)應(yīng)用系統(tǒng)中有很多不同的方法處理作多個(gè)任務(wù)
29、。在一個(gè)應(yīng)用系統(tǒng)中有很多不同的方法處理 并發(fā)性,而且每種方法都可以由不同的體系結(jié)構(gòu)模式來(lái)并發(fā)性,而且每種方法都可以由不同的體系結(jié)構(gòu)模式來(lái) 呈現(xiàn)。例如,一種方法是使用呈現(xiàn)。例如,一種方法是使用“操作系統(tǒng)進(jìn)程管理操作系統(tǒng)進(jìn)程管理”模模 式,該模式提供了一些內(nèi)置的操作系統(tǒng)特征,這些特征式,該模式提供了一些內(nèi)置的操作系統(tǒng)特征,這些特征 允許構(gòu)件并發(fā)執(zhí)行。這個(gè)模式同時(shí)還結(jié)合了操作系統(tǒng)中允許構(gòu)件并發(fā)執(zhí)行。這個(gè)模式同時(shí)還結(jié)合了操作系統(tǒng)中 那些管理進(jìn)程通信、調(diào)度的功能以及其他完成并發(fā)所需那些管理進(jìn)程通信、調(diào)度的功能以及其他完成并發(fā)所需 要的功能。還有一種方法是在應(yīng)用層上定義一個(gè)任務(wù)調(diào)要的功能。還有一種方法是在
30、應(yīng)用層上定義一個(gè)任務(wù)調(diào) 度器。度器?!叭蝿?wù)調(diào)度器任務(wù)調(diào)度器”模式包括一組含有模式包括一組含有tick()操作的操作的 活動(dòng)對(duì)象。調(diào)度器定期喚醒每個(gè)對(duì)象的活動(dòng)對(duì)象。調(diào)度器定期喚醒每個(gè)對(duì)象的tick()操作,該操作,該 操作在控制權(quán)返回調(diào)度器之前完成它負(fù)責(zé)的功能,接著操作在控制權(quán)返回調(diào)度器之前完成它負(fù)責(zé)的功能,接著 調(diào)度器喚醒下一個(gè)并發(fā)對(duì)象的調(diào)度器喚醒下一個(gè)并發(fā)對(duì)象的tick()操作。操作。 體系結(jié)構(gòu)模式 v持久性持久性:如果數(shù)據(jù)從創(chuàng)建它的進(jìn)程執(zhí)行以來(lái):如果數(shù)據(jù)從創(chuàng)建它的進(jìn)程執(zhí)行以來(lái)一一 直存在直存在,則該數(shù)據(jù)是持久性存在的數(shù)據(jù)。持久,則該數(shù)據(jù)是持久性存在的數(shù)據(jù)。持久 數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)被存儲(chǔ)在數(shù)據(jù)
31、庫(kù)數(shù)據(jù)庫(kù)中或者中或者文件文件里,并且可以里,并且可以 在稍后的時(shí)間里被其他進(jìn)程讀取和修改。在面在稍后的時(shí)間里被其他進(jìn)程讀取和修改。在面 向?qū)ο蟮沫h(huán)境中,向?qū)ο蟮沫h(huán)境中,持久對(duì)象持久對(duì)象的概念對(duì)持久性概的概念對(duì)持久性概 念做了一些擴(kuò)展,所有對(duì)象屬性的值、對(duì)象的念做了一些擴(kuò)展,所有對(duì)象屬性的值、對(duì)象的 狀態(tài)以及其他的附加信息都被存儲(chǔ)起來(lái),以備狀態(tài)以及其他的附加信息都被存儲(chǔ)起來(lái),以備 今后的存取和使用。一般說(shuō)來(lái),可以采用兩種今后的存取和使用。一般說(shuō)來(lái),可以采用兩種 體系結(jié)構(gòu)模式獲得持久性:一個(gè)是體系結(jié)構(gòu)模式獲得持久性:一個(gè)是數(shù)據(jù)庫(kù)管理數(shù)據(jù)庫(kù)管理 系統(tǒng)模式系統(tǒng)模式,該模式將,該模式將DBMS的存儲(chǔ)和存
32、取能力用的存儲(chǔ)和存取能力用 于應(yīng)用系統(tǒng)的體系結(jié)構(gòu)中;另一個(gè)是于應(yīng)用系統(tǒng)的體系結(jié)構(gòu)中;另一個(gè)是應(yīng)用級(jí)的應(yīng)用級(jí)的 持久模式持久模式,此種模式在應(yīng)用體系結(jié)構(gòu)中建立了,此種模式在應(yīng)用體系結(jié)構(gòu)中建立了 持久性特征。持久性特征。 體系結(jié)構(gòu)模式 v分布性分布性:分布性問(wèn)題強(qiáng)調(diào)系統(tǒng)或系統(tǒng)中構(gòu)件在:分布性問(wèn)題強(qiáng)調(diào)系統(tǒng)或系統(tǒng)中構(gòu)件在 一個(gè)分布的環(huán)境中相互通信的方式。分布性問(wèn)一個(gè)分布的環(huán)境中相互通信的方式。分布性問(wèn) 題有兩個(gè)元素:題有兩個(gè)元素:(1)實(shí)體間連接方式實(shí)體間連接方式;(2)實(shí)體實(shí)體 間通信的特性間通信的特性。解決分布性問(wèn)題最普遍的體系。解決分布性問(wèn)題最普遍的體系 結(jié)構(gòu)模式是結(jié)構(gòu)模式是代理模式代理模式。代
33、理在客戶端構(gòu)件和服。代理在客戶端構(gòu)件和服 務(wù)器構(gòu)件之間充當(dāng)務(wù)器構(gòu)件之間充當(dāng)“中間人中間人”。客戶端向代理。客戶端向代理 發(fā)出一條信息(包含所有使通信有效的信息),發(fā)出一條信息(包含所有使通信有效的信息), 代理完成(與服務(wù)器的)連接。代理完成(與服務(wù)器的)連接。 v在選擇一種體系結(jié)構(gòu)模式之前,必須在選擇一種體系結(jié)構(gòu)模式之前,必須評(píng)估其對(duì)評(píng)估其對(duì) 于應(yīng)用和整個(gè)體系結(jié)構(gòu)風(fēng)格的適應(yīng)性于應(yīng)用和整個(gè)體系結(jié)構(gòu)風(fēng)格的適應(yīng)性,即它的,即它的 可維護(hù)性、可靠性、安全性和性能??删S護(hù)性、可靠性、安全性和性能。 組織和求精 v設(shè)計(jì)過(guò)程經(jīng)常給軟件工程師留下一系列可設(shè)計(jì)過(guò)程經(jīng)常給軟件工程師留下一系列可 供選擇的體系結(jié)構(gòu)
34、,建立一組用于供選擇的體系結(jié)構(gòu),建立一組用于評(píng)估評(píng)估所所 導(dǎo)出的體系結(jié)構(gòu)設(shè)計(jì)的設(shè)計(jì)標(biāo)準(zhǔn)是非常重導(dǎo)出的體系結(jié)構(gòu)設(shè)計(jì)的設(shè)計(jì)標(biāo)準(zhǔn)是非常重 要的。要的。BAS98提出的下面問(wèn)題有助于對(duì)提出的下面問(wèn)題有助于對(duì) 導(dǎo)出的體系結(jié)構(gòu)風(fēng)格提供深層次的考察。導(dǎo)出的體系結(jié)構(gòu)風(fēng)格提供深層次的考察。 組織和求精 v控制控制:在體系結(jié)構(gòu)中如何管理控制?是否:在體系結(jié)構(gòu)中如何管理控制?是否 存在一個(gè)不同的控制層次?如果是,構(gòu)件存在一個(gè)不同的控制層次?如果是,構(gòu)件 在控制層次中擔(dān)當(dāng)什么角色?構(gòu)件如何在在控制層次中擔(dān)當(dāng)什么角色?構(gòu)件如何在 系統(tǒng)中傳遞控制?構(gòu)件間如何共享控制?系統(tǒng)中傳遞控制?構(gòu)件間如何共享控制? 控制拓?fù)浣Y(jié)構(gòu)(即
35、控制呈現(xiàn)的幾何形狀)控制拓?fù)浣Y(jié)構(gòu)(即控制呈現(xiàn)的幾何形狀) 是什么樣?控制是否同步或構(gòu)件是否異步是什么樣?控制是否同步或構(gòu)件是否異步 操作?操作? 組織和求精 v數(shù)據(jù)數(shù)據(jù):構(gòu)件間如何進(jìn)行數(shù)據(jù)通信?數(shù)據(jù)流:構(gòu)件間如何進(jìn)行數(shù)據(jù)通信?數(shù)據(jù)流 是否是連接的,或數(shù)據(jù)對(duì)象是否是零散地是否是連接的,或數(shù)據(jù)對(duì)象是否是零散地 傳遞給系統(tǒng)?數(shù)據(jù)傳遞的模式是什么(即,傳遞給系統(tǒng)?數(shù)據(jù)傳遞的模式是什么(即, 數(shù)據(jù)是從一個(gè)構(gòu)件傳遞到另一個(gè)構(gòu)件,還數(shù)據(jù)是從一個(gè)構(gòu)件傳遞到另一個(gè)構(gòu)件,還 是系統(tǒng)中構(gòu)件可以全局共享數(shù)據(jù))?是否是系統(tǒng)中構(gòu)件可以全局共享數(shù)據(jù))?是否 存在數(shù)據(jù)構(gòu)件(如黑板或中心存儲(chǔ)庫(kù))?存在數(shù)據(jù)構(gòu)件(如黑板或中心存儲(chǔ)
36、庫(kù))? 如果存在,它們的角色是什么?功能構(gòu)件如果存在,它們的角色是什么?功能構(gòu)件 如何和數(shù)據(jù)構(gòu)件交互?數(shù)據(jù)構(gòu)件是被動(dòng)的如何和數(shù)據(jù)構(gòu)件交互?數(shù)據(jù)構(gòu)件是被動(dòng)的 還是主動(dòng)的(即數(shù)據(jù)構(gòu)件是否主動(dòng)地和系還是主動(dòng)的(即數(shù)據(jù)構(gòu)件是否主動(dòng)地和系 統(tǒng)中其他構(gòu)件交互)?數(shù)據(jù)和控制如何在統(tǒng)中其他構(gòu)件交互)?數(shù)據(jù)和控制如何在 系統(tǒng)中交互?系統(tǒng)中交互? 體系結(jié)構(gòu)設(shè)計(jì) v在體系結(jié)構(gòu)設(shè)計(jì)開(kāi)始的時(shí)候,軟件必須放在體系結(jié)構(gòu)設(shè)計(jì)開(kāi)始的時(shí)候,軟件必須放 在在所處環(huán)境所處環(huán)境進(jìn)行開(kāi)發(fā),即,設(shè)計(jì)應(yīng)該定義進(jìn)行開(kāi)發(fā),即,設(shè)計(jì)應(yīng)該定義 與軟件交互的與軟件交互的外部實(shí)體外部實(shí)體(其他系統(tǒng)、設(shè)備、(其他系統(tǒng)、設(shè)備、 人)和人)和交互的特性交互的
37、特性。一般在。一般在分析模型分析模型階段階段 可以獲得這些信息,而所有其他的信息都可以獲得這些信息,而所有其他的信息都 是在是在需求工程需求工程階段獲得的。一旦建立了軟階段獲得的。一旦建立了軟 件的環(huán)境模型,并且描述出所有的外部軟件的環(huán)境模型,并且描述出所有的外部軟 件接口,那么設(shè)計(jì)師就可以通過(guò)件接口,那么設(shè)計(jì)師就可以通過(guò)定義和求定義和求 精實(shí)現(xiàn)體系結(jié)構(gòu)的構(gòu)件精實(shí)現(xiàn)體系結(jié)構(gòu)的構(gòu)件來(lái)描述系統(tǒng)的結(jié)構(gòu)。來(lái)描述系統(tǒng)的結(jié)構(gòu)。 這個(gè)過(guò)程不停地迭代,直到獲得一個(gè)完善這個(gè)過(guò)程不停地迭代,直到獲得一個(gè)完善 的體系結(jié)構(gòu)。的體系結(jié)構(gòu)。 系統(tǒng)的環(huán)境表示 v系統(tǒng)環(huán)境圖通過(guò)描述系統(tǒng)的系統(tǒng)環(huán)境圖通過(guò)描述系統(tǒng)的出入信息流出入
38、信息流、 用戶界面用戶界面和相關(guān)的和相關(guān)的支持處理支持處理等來(lái)實(shí)現(xiàn)對(duì)環(huán)等來(lái)實(shí)現(xiàn)對(duì)環(huán) 境的建模。在體系結(jié)構(gòu)設(shè)計(jì)層,軟件架構(gòu)境的建模。在體系結(jié)構(gòu)設(shè)計(jì)層,軟件架構(gòu) 師用師用體系結(jié)構(gòu)環(huán)境圖體系結(jié)構(gòu)環(huán)境圖對(duì)軟件與外部實(shí)體交對(duì)軟件與外部實(shí)體交 互方式進(jìn)行建模。圖互方式進(jìn)行建模。圖8-5給出了體系結(jié)構(gòu)給出了體系結(jié)構(gòu) 環(huán)境圖的通用結(jié)構(gòu)。環(huán)境圖的通用結(jié)構(gòu)。 系統(tǒng)的環(huán)境表示 圖8-5 體系結(jié)構(gòu)環(huán)境圖 系統(tǒng)的環(huán)境表示 v與目標(biāo)系統(tǒng)交互的系統(tǒng)可以表示為:與目標(biāo)系統(tǒng)交互的系統(tǒng)可以表示為: v上級(jí)系統(tǒng)上級(jí)系統(tǒng):這些系統(tǒng)把目標(biāo)系統(tǒng)作為某些高層:這些系統(tǒng)把目標(biāo)系統(tǒng)作為某些高層 處理方案的一部分。處理方案的一部分。 v下級(jí)系統(tǒng)
39、下級(jí)系統(tǒng):這些系統(tǒng)被目標(biāo)系統(tǒng)使用,并為了:這些系統(tǒng)被目標(biāo)系統(tǒng)使用,并為了 完成目標(biāo)系統(tǒng)的功能提供必要的數(shù)據(jù)和處理。完成目標(biāo)系統(tǒng)的功能提供必要的數(shù)據(jù)和處理。 v同級(jí)系統(tǒng)同級(jí)系統(tǒng):這些系統(tǒng)在對(duì)等的基礎(chǔ)上相互作用。:這些系統(tǒng)在對(duì)等的基礎(chǔ)上相互作用。 v參與者參與者:是指那些通過(guò)產(chǎn)生和消耗必不可少的:是指那些通過(guò)產(chǎn)生和消耗必不可少的 處理所需的信息,實(shí)現(xiàn)與目標(biāo)系統(tǒng)交互的實(shí)體處理所需的信息,實(shí)現(xiàn)與目標(biāo)系統(tǒng)交互的實(shí)體 (人、設(shè)備)。(人、設(shè)備)。 v每個(gè)外部實(shí)體都通過(guò)某一接口(帶陰影的小矩每個(gè)外部實(shí)體都通過(guò)某一接口(帶陰影的小矩 形)與目標(biāo)系統(tǒng)進(jìn)行通信。形)與目標(biāo)系統(tǒng)進(jìn)行通信。 SAFEHOME實(shí)例32
40、9-6 9-6 SAFEHOME實(shí)例33 圖8-6 SafeHome安全功能的體系結(jié)構(gòu)環(huán)境圖 定義原始模型 v原始模型是一個(gè)類或者一個(gè)模式,描述了原始模型是一個(gè)類或者一個(gè)模式,描述了 一個(gè)目標(biāo)系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)的核心抽象。一個(gè)目標(biāo)系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)的核心抽象。 一般來(lái)講,只需要設(shè)計(jì)相對(duì)較小的原始模一般來(lái)講,只需要設(shè)計(jì)相對(duì)較小的原始模 型集合,即使系統(tǒng)相對(duì)比較復(fù)雜。目標(biāo)系型集合,即使系統(tǒng)相對(duì)比較復(fù)雜。目標(biāo)系 統(tǒng)的體系結(jié)構(gòu)由這些原始模型組成,這些統(tǒng)的體系結(jié)構(gòu)由這些原始模型組成,這些 原始模型表示體系結(jié)構(gòu)中穩(wěn)定的元素,但原始模型表示體系結(jié)構(gòu)中穩(wěn)定的元素,但 是這些元素基于系統(tǒng)行為可用多種方式加是這些元素
41、基于系統(tǒng)行為可用多種方式加 以說(shuō)明。以說(shuō)明。 SAFEHOME實(shí)例34 SAFEHOME實(shí)例35 圖8-7 SafeHome安全功能原始模型的UML關(guān)系圖 將體系結(jié)構(gòu)精化為構(gòu)件 v當(dāng)軟件體系結(jié)構(gòu)精化為構(gòu)件時(shí),系統(tǒng)的結(jié)構(gòu)開(kāi)當(dāng)軟件體系結(jié)構(gòu)精化為構(gòu)件時(shí),系統(tǒng)的結(jié)構(gòu)開(kāi) 始顯現(xiàn)。但是,如何選擇這些構(gòu)件呢?體系結(jié)始顯現(xiàn)。但是,如何選擇這些構(gòu)件呢?體系結(jié) 構(gòu)設(shè)計(jì)師先從構(gòu)設(shè)計(jì)師先從分析模型中所描述的類分析模型中所描述的類開(kāi)始。這開(kāi)始。這 些分析類表示那些軟件體系結(jié)構(gòu)中必定涉及的些分析類表示那些軟件體系結(jié)構(gòu)中必定涉及的 應(yīng)用(業(yè)務(wù))領(lǐng)域內(nèi)的實(shí)體。因此,應(yīng)用(業(yè)務(wù))領(lǐng)域內(nèi)的實(shí)體。因此,應(yīng)用領(lǐng)域應(yīng)用領(lǐng)域 是導(dǎo)出和精
42、化構(gòu)件的一個(gè)源泉。另一源泉是是導(dǎo)出和精化構(gòu)件的一個(gè)源泉。另一源泉是基基 礎(chǔ)設(shè)施域。體系結(jié)構(gòu)礎(chǔ)設(shè)施域。體系結(jié)構(gòu)必須容納很多基礎(chǔ)設(shè)施構(gòu)必須容納很多基礎(chǔ)設(shè)施構(gòu) 件使應(yīng)用構(gòu)件能夠運(yùn)作,但是這些基礎(chǔ)設(shè)施構(gòu)件使應(yīng)用構(gòu)件能夠運(yùn)作,但是這些基礎(chǔ)設(shè)施構(gòu) 件與應(yīng)用領(lǐng)域沒(méi)有業(yè)務(wù)聯(lián)系,例如,內(nèi)存管理件與應(yīng)用領(lǐng)域沒(méi)有業(yè)務(wù)聯(lián)系,例如,內(nèi)存管理 構(gòu)件、通信構(gòu)件、數(shù)據(jù)庫(kù)構(gòu)件和任務(wù)管理構(gòu)件構(gòu)件、通信構(gòu)件、數(shù)據(jù)庫(kù)構(gòu)件和任務(wù)管理構(gòu)件 往往歸并到軟件體系結(jié)構(gòu)中。往往歸并到軟件體系結(jié)構(gòu)中。 將體系結(jié)構(gòu)精化為構(gòu)件 v體系結(jié)構(gòu)環(huán)境圖中描述的接口隱含著一個(gè)體系結(jié)構(gòu)環(huán)境圖中描述的接口隱含著一個(gè) 或者多個(gè)特定的構(gòu)件,這些構(gòu)件處理穿過(guò)或者多個(gè)特定
43、的構(gòu)件,這些構(gòu)件處理穿過(guò) 接口的數(shù)據(jù)。在某些情況下,需要設(shè)計(jì)一接口的數(shù)據(jù)。在某些情況下,需要設(shè)計(jì)一 個(gè)完整的包含眾多構(gòu)件的子系統(tǒng)體系結(jié)構(gòu)。個(gè)完整的包含眾多構(gòu)件的子系統(tǒng)體系結(jié)構(gòu)。 SAFEHOME實(shí)例36 SAFEHOME實(shí)例37 圖8-8 帶有高層構(gòu)件的SafeHome整體體系結(jié)構(gòu) 描述系統(tǒng)實(shí)例 v至此所建立起來(lái)的體系結(jié)構(gòu)設(shè)計(jì)依然處于比較至此所建立起來(lái)的體系結(jié)構(gòu)設(shè)計(jì)依然處于比較 高的層次。系統(tǒng)的環(huán)境已經(jīng)表示出來(lái)了,預(yù)示高的層次。系統(tǒng)的環(huán)境已經(jīng)表示出來(lái)了,預(yù)示 問(wèn)題域中重要抽象的原始模型也被定義出來(lái),問(wèn)題域中重要抽象的原始模型也被定義出來(lái), 系統(tǒng)的整個(gè)結(jié)構(gòu)已經(jīng)顯現(xiàn)出來(lái),并且主要的軟系統(tǒng)的整個(gè)結(jié)構(gòu)
44、已經(jīng)顯現(xiàn)出來(lái),并且主要的軟 件構(gòu)件也都定義出來(lái)了,然而,更進(jìn)一步的精件構(gòu)件也都定義出來(lái)了,然而,更進(jìn)一步的精 化仍然是必要的。化仍然是必要的。 v為了完成體系結(jié)構(gòu)設(shè)計(jì),要開(kāi)發(fā)一個(gè)體系結(jié)構(gòu)為了完成體系結(jié)構(gòu)設(shè)計(jì),要開(kāi)發(fā)一個(gè)體系結(jié)構(gòu) 的實(shí)際實(shí)例,用意是將體系結(jié)構(gòu)應(yīng)用到一個(gè)特的實(shí)際實(shí)例,用意是將體系結(jié)構(gòu)應(yīng)用到一個(gè)特 定的問(wèn)題上,目的是證明結(jié)構(gòu)和構(gòu)件都是合理定的問(wèn)題上,目的是證明結(jié)構(gòu)和構(gòu)件都是合理 的。的。 SAFEHOME實(shí)例38 評(píng)估可選的體系結(jié)構(gòu)設(shè)計(jì) v設(shè)計(jì)會(huì)導(dǎo)致多種可供選擇的候選體系結(jié)構(gòu),其設(shè)計(jì)會(huì)導(dǎo)致多種可供選擇的候選體系結(jié)構(gòu),其 中每一種候選體系結(jié)構(gòu)都需要評(píng)估,以確定哪中每一種候選體系結(jié)構(gòu)都需
45、要評(píng)估,以確定哪 種體系結(jié)構(gòu)最適合要解決的問(wèn)題。種體系結(jié)構(gòu)最適合要解決的問(wèn)題。 體系結(jié)構(gòu)權(quán)衡分析方法 vSEI開(kāi)發(fā)了一種體系結(jié)構(gòu)權(quán)衡分析方法,該方法建立了開(kāi)發(fā)了一種體系結(jié)構(gòu)權(quán)衡分析方法,該方法建立了 一個(gè)迭代的軟件體系結(jié)構(gòu)評(píng)估過(guò)程。一個(gè)迭代的軟件體系結(jié)構(gòu)評(píng)估過(guò)程。 1、收集場(chǎng)景。、收集場(chǎng)景。 2、誘導(dǎo)需求、約束和環(huán)境描述。、誘導(dǎo)需求、約束和環(huán)境描述。 3、描述那些已經(jīng)被選用于解決場(chǎng)景和需求的體系結(jié)構(gòu)風(fēng)格、描述那些已經(jīng)被選用于解決場(chǎng)景和需求的體系結(jié)構(gòu)風(fēng)格/模模 式。式。 4、通過(guò)孤立地考慮每個(gè)屬性來(lái)評(píng)估質(zhì)量屬性。、通過(guò)孤立地考慮每個(gè)屬性來(lái)評(píng)估質(zhì)量屬性。 5、針對(duì)特定的體系結(jié)構(gòu)風(fēng)格,弄清質(zhì)量屬性對(duì)
46、各種體系結(jié)構(gòu)屬、針對(duì)特定的體系結(jié)構(gòu)風(fēng)格,弄清質(zhì)量屬性對(duì)各種體系結(jié)構(gòu)屬 性的敏感性。性的敏感性。 6、使用在第、使用在第5步中進(jìn)行的敏感性分析鑒定候選體系結(jié)構(gòu)。步中進(jìn)行的敏感性分析鑒定候選體系結(jié)構(gòu)。 v這這6個(gè)步驟描述了第一次個(gè)步驟描述了第一次ATAM迭代?;诘诘?。基于第5步和第步和第6 步的結(jié)果,某些候選體系結(jié)構(gòu)可能被刪除,剩余的一個(gè)步的結(jié)果,某些候選體系結(jié)構(gòu)可能被刪除,剩余的一個(gè) 或多個(gè)體系結(jié)構(gòu)可能被修改和進(jìn)一步細(xì)化,然后,或多個(gè)體系結(jié)構(gòu)可能被修改和進(jìn)一步細(xì)化,然后, ATAM步驟被再次應(yīng)用。步驟被再次應(yīng)用。 體系結(jié)構(gòu)復(fù)雜性 v對(duì)體系結(jié)構(gòu)的整體復(fù)雜性進(jìn)行評(píng)估,一種很有對(duì)體系結(jié)構(gòu)的整體復(fù)雜
47、性進(jìn)行評(píng)估,一種很有 用的技術(shù)是考慮體系結(jié)構(gòu)中構(gòu)件間的依賴關(guān)系,用的技術(shù)是考慮體系結(jié)構(gòu)中構(gòu)件間的依賴關(guān)系, 這些依賴關(guān)系是由系統(tǒng)中的信息這些依賴關(guān)系是由系統(tǒng)中的信息/控制流驅(qū)動(dòng)的??刂屏黩?qū)動(dòng)的。 ZHA98建議了三種類型的依賴:建議了三種類型的依賴: v共享依賴表示在使用相同資源的消費(fèi)者間或?yàn)橄嗤M(fèi)者生共享依賴表示在使用相同資源的消費(fèi)者間或?yàn)橄嗤M(fèi)者生 產(chǎn)的生產(chǎn)者之間的依賴關(guān)系。產(chǎn)的生產(chǎn)者之間的依賴關(guān)系。 v流依賴表示資源的生產(chǎn)者和消費(fèi)者間的依賴關(guān)系。流依賴表示資源的生產(chǎn)者和消費(fèi)者間的依賴關(guān)系。 v約束依賴表示在一組活動(dòng)間相關(guān)控制流上的約束。約束依賴表示在一組活動(dòng)間相關(guān)控制流上的約束。 體
48、系結(jié)構(gòu)描述語(yǔ)言 v體系結(jié)構(gòu)描述語(yǔ)言體系結(jié)構(gòu)描述語(yǔ)言ADL為描述軟件體系結(jié)構(gòu)提為描述軟件體系結(jié)構(gòu)提 供一套語(yǔ)義和語(yǔ)法。供一套語(yǔ)義和語(yǔ)法。HOF01建議建議ADL應(yīng)該使應(yīng)該使 得設(shè)計(jì)者具有分解體系結(jié)構(gòu)構(gòu)件、將單獨(dú)構(gòu)件得設(shè)計(jì)者具有分解體系結(jié)構(gòu)構(gòu)件、將單獨(dú)構(gòu)件 組合成大的體系結(jié)構(gòu)塊,以及描述構(gòu)件之間的組合成大的體系結(jié)構(gòu)塊,以及描述構(gòu)件之間的 接口的能力。一旦體系結(jié)構(gòu)設(shè)計(jì)使用的描述的、接口的能力。一旦體系結(jié)構(gòu)設(shè)計(jì)使用的描述的、 基于語(yǔ)言的技術(shù)被建立起來(lái),那么很有可能隨基于語(yǔ)言的技術(shù)被建立起來(lái),那么很有可能隨 著設(shè)計(jì)的進(jìn)化而建立起體系結(jié)構(gòu)的有效評(píng)估方著設(shè)計(jì)的進(jìn)化而建立起體系結(jié)構(gòu)的有效評(píng)估方 法。法。 映射
49、數(shù)據(jù)流到軟件體系結(jié)構(gòu) v體系結(jié)構(gòu)風(fēng)格描述了本質(zhì)上不同的體系結(jié)構(gòu),體系結(jié)構(gòu)風(fēng)格描述了本質(zhì)上不同的體系結(jié)構(gòu), 因此,并不存在一種能夠?qū)崿F(xiàn)從分析模型到各因此,并不存在一種能夠?qū)崿F(xiàn)從分析模型到各 種體系風(fēng)格轉(zhuǎn)換的種體系風(fēng)格轉(zhuǎn)換的全面映射全面映射。 v為了描述體系結(jié)構(gòu)映射的方法,考慮為了描述體系結(jié)構(gòu)映射的方法,考慮“調(diào)用和調(diào)用和 返回返回”體系結(jié)構(gòu)的映射技術(shù)體系結(jié)構(gòu)的映射技術(shù)這種體系結(jié)構(gòu)是這種體系結(jié)構(gòu)是 非常常見(jiàn)的結(jié)構(gòu)。這種映射技術(shù)使得設(shè)計(jì)者能非常常見(jiàn)的結(jié)構(gòu)。這種映射技術(shù)使得設(shè)計(jì)者能 夠從分析模型的夠從分析模型的數(shù)據(jù)流圖數(shù)據(jù)流圖中導(dǎo)出相當(dāng)復(fù)雜的中導(dǎo)出相當(dāng)復(fù)雜的 “調(diào)用和返回調(diào)用和返回”體系結(jié)構(gòu),這種技術(shù)
50、也稱為體系結(jié)構(gòu),這種技術(shù)也稱為結(jié)結(jié) 構(gòu)化設(shè)計(jì)構(gòu)化設(shè)計(jì)。 v結(jié)構(gòu)化設(shè)計(jì)經(jīng)常被刻畫為結(jié)構(gòu)化設(shè)計(jì)經(jīng)常被刻畫為面向數(shù)據(jù)流面向數(shù)據(jù)流的設(shè)計(jì)方的設(shè)計(jì)方 法,它提供了方便的從法,它提供了方便的從數(shù)據(jù)流圖到軟件體系結(jié)數(shù)據(jù)流圖到軟件體系結(jié) 構(gòu)的變換構(gòu)的變換。信息流的類型信息流的類型決定了映射方法。決定了映射方法。 DFD的兩種類型 v為了實(shí)現(xiàn)從為了實(shí)現(xiàn)從DFD到到體系結(jié)構(gòu)體系結(jié)構(gòu)的映射的映射(需求模型需求模型 設(shè)計(jì)模型設(shè)計(jì)模型),需要仔細(xì)區(qū)分,需要仔細(xì)區(qū)分DFD中數(shù)據(jù)流的性質(zhì),中數(shù)據(jù)流的性質(zhì), 并分別學(xué)習(xí)相應(yīng)的映射方法。并分別學(xué)習(xí)相應(yīng)的映射方法。 變換型結(jié)構(gòu)(變換流) 變換型結(jié)構(gòu)(變換流) 事務(wù)型結(jié)構(gòu)(事務(wù)流)
51、 事務(wù)型結(jié)構(gòu)(事務(wù)流) 變換映射 v變換映射是一組設(shè)計(jì)步驟,可以將具有變變換映射是一組設(shè)計(jì)步驟,可以將具有變 換流特征的換流特征的DFD映射為某個(gè)特定的體系結(jié)映射為某個(gè)特定的體系結(jié) 構(gòu)風(fēng)格。構(gòu)風(fēng)格。 步驟1:評(píng)審基本系統(tǒng)模型 v基本系統(tǒng)模型或者環(huán)境圖把安全功能描述基本系統(tǒng)模型或者環(huán)境圖把安全功能描述 為一個(gè)單一的變換,描述了流入和流出安為一個(gè)單一的變換,描述了流入和流出安 全功能的數(shù)據(jù)的生產(chǎn)者和消費(fèi)者。圖全功能的數(shù)據(jù)的生產(chǎn)者和消費(fèi)者。圖8-11 刻畫了一個(gè)刻畫了一個(gè)0層模型,圖層模型,圖8-12描述了初步描述了初步 精化后的安全功能數(shù)據(jù)流。精化后的安全功能數(shù)據(jù)流。 SAFEHOME實(shí)例39 圖
52、8-11 SafeHome的環(huán)境級(jí)DFD SAFEHOME實(shí)例40 圖8-12 SafeHome安全功能的第一層DFD 步驟2:評(píng)審和精化軟件的數(shù)據(jù)流圖 v對(duì)從分析模型獲得的信息進(jìn)行精化,以獲對(duì)從分析模型獲得的信息進(jìn)行精化,以獲 得更多的細(xì)節(jié)。例如,檢查第得更多的細(xì)節(jié)。例如,檢查第2層監(jiān)控傳感層監(jiān)控傳感 器的器的DFD(如圖如圖8-13),并導(dǎo)出第,并導(dǎo)出第3層數(shù)據(jù)層數(shù)據(jù) 流圖流圖(如圖如圖8-14)。在第。在第3層,數(shù)據(jù)流圖中層,數(shù)據(jù)流圖中 的每個(gè)變換都展示了高內(nèi)聚性,即變換所的每個(gè)變換都展示了高內(nèi)聚性,即變換所 包含的過(guò)程完成單一的、清楚的功能,該包含的過(guò)程完成單一的、清楚的功能,該 功能
53、可被實(shí)現(xiàn)為功能可被實(shí)現(xiàn)為SafeHome軟件中的一個(gè)軟件中的一個(gè) 構(gòu)件。圖構(gòu)件。圖8-14中的中的DFD包含了設(shè)計(jì)監(jiān)控傳包含了設(shè)計(jì)監(jiān)控傳 感器子系統(tǒng)體系結(jié)構(gòu)所需的細(xì)節(jié)信息,不感器子系統(tǒng)體系結(jié)構(gòu)所需的細(xì)節(jié)信息,不 需要再進(jìn)一步精化。需要再進(jìn)一步精化。 SAFEHOME實(shí)例41 圖8-13 精化“監(jiān)控傳感器”變換的第2層DFD SAFEHOME實(shí)例42 圖8-14 具有流邊界的監(jiān)控傳感器的第3層DFD 步驟3:確定DFD是否含有變換流或事務(wù)流特征 v通過(guò)評(píng)估通過(guò)評(píng)估DFD(圖圖8-14),可以看出,數(shù)據(jù),可以看出,數(shù)據(jù) 通過(guò)一條輸入路徑進(jìn)入軟件,沿三條輸出通過(guò)一條輸入路徑進(jìn)入軟件,沿三條輸出 路徑
54、流出,沒(méi)有明顯的事務(wù)中心。信息流路徑流出,沒(méi)有明顯的事務(wù)中心。信息流 將呈現(xiàn)出一個(gè)從頭到尾的變換特征。將呈現(xiàn)出一個(gè)從頭到尾的變換特征。 步驟4:通過(guò)確定輸入和輸出流的邊界,分離出變換中心 v輸入流被描述為信息從外部形式變換為內(nèi)輸入流被描述為信息從外部形式變換為內(nèi) 部形式的路徑,而輸出流是信息從內(nèi)部形部形式的路徑,而輸出流是信息從內(nèi)部形 式變換為外部形式的路徑。不同的設(shè)計(jì)人式變換為外部形式的路徑。不同的設(shè)計(jì)人 員在選擇流邊界時(shí)可能不盡相同。事實(shí)上,員在選擇流邊界時(shí)可能不盡相同。事實(shí)上, 不同的流邊界選擇會(huì)導(dǎo)致不同的設(shè)計(jì)方案。不同的流邊界選擇會(huì)導(dǎo)致不同的設(shè)計(jì)方案。 盡管在選擇流邊界時(shí)要加以注意,但
55、沿流盡管在選擇流邊界時(shí)要加以注意,但沿流 路徑若有一個(gè)泡泡的差異對(duì)最終程序結(jié)構(gòu)路徑若有一個(gè)泡泡的差異對(duì)最終程序結(jié)構(gòu) 的影響并不會(huì)太大。的影響并不會(huì)太大。 步驟5:完成“第一級(jí)分解” v使用這個(gè)映射導(dǎo)出的程序體系結(jié)構(gòu)導(dǎo)致了自頂向使用這個(gè)映射導(dǎo)出的程序體系結(jié)構(gòu)導(dǎo)致了自頂向 下的控制分布。分解的作用是得到一個(gè)程序結(jié)構(gòu),下的控制分布。分解的作用是得到一個(gè)程序結(jié)構(gòu), 其中頂層模塊做決策;低層模塊完成大多數(shù)輸入、其中頂層模塊做決策;低層模塊完成大多數(shù)輸入、 計(jì)算和輸出工作;中層模塊既完成一部分控制,計(jì)算和輸出工作;中層模塊既完成一部分控制, 又完成適量的工作。又完成適量的工作。 v當(dāng)遇到變換流時(shí),當(dāng)遇到變
56、換流時(shí),DFD將被映射成一個(gè)能為信息將被映射成一個(gè)能為信息 的輸入、變換和輸出處理提供控制的特定結(jié)構(gòu)。的輸入、變換和輸出處理提供控制的特定結(jié)構(gòu)。 圖圖8-15給出了對(duì)給出了對(duì)監(jiān)控傳感器監(jiān)控傳感器子系統(tǒng)進(jìn)行第一級(jí)分子系統(tǒng)進(jìn)行第一級(jí)分 解的結(jié)果,解的結(jié)果,主控制器主控制器(圖中稱為監(jiān)控傳感器輸入(圖中稱為監(jiān)控傳感器輸入 控制器)位于程序結(jié)構(gòu)的頂端,負(fù)責(zé)控制器)位于程序結(jié)構(gòu)的頂端,負(fù)責(zé)協(xié)調(diào)從屬控協(xié)調(diào)從屬控 制功能制功能。 SAFEHOME實(shí)例43 圖8-15 監(jiān)控傳感器的第一級(jí)分解 步驟5:完成“第一級(jí)分解” v輸入信息處理控制器輸入信息處理控制器負(fù)責(zé)協(xié)調(diào)所有輸入數(shù)據(jù)的接負(fù)責(zé)協(xié)調(diào)所有輸入數(shù)據(jù)的接 收
57、。收。 v變換流控制器變換流控制器負(fù)責(zé)管理內(nèi)部形式的數(shù)據(jù)上的所有負(fù)責(zé)管理內(nèi)部形式的數(shù)據(jù)上的所有 操作。操作。 v輸出流信息處理控制器輸出流信息處理控制器負(fù)責(zé)管理輸出信息的產(chǎn)生。負(fù)責(zé)管理輸出信息的產(chǎn)生。 v雖然圖雖然圖8-15蘊(yùn)涵了三叉結(jié)構(gòu),但是,大型系統(tǒng)蘊(yùn)涵了三叉結(jié)構(gòu),但是,大型系統(tǒng) 的復(fù)雜數(shù)據(jù)流圖可能會(huì)要求為上述每個(gè)類屬控制的復(fù)雜數(shù)據(jù)流圖可能會(huì)要求為上述每個(gè)類屬控制 功能提供兩個(gè)或多個(gè)模塊。第一層模塊的數(shù)量應(yīng)功能提供兩個(gè)或多個(gè)模塊。第一層模塊的數(shù)量應(yīng) 限定在既能完成限定在既能完成控制功能控制功能又能維持良好的獨(dú)立特又能維持良好的獨(dú)立特 征所要求的征所要求的最少模塊數(shù)最少模塊數(shù)。 步驟6:完成
58、“第二級(jí)分解” v第二級(jí)分解是將第二級(jí)分解是將DFD中的每個(gè)變換映射到中的每個(gè)變換映射到 程序結(jié)構(gòu)中的相應(yīng)模塊。程序結(jié)構(gòu)中的相應(yīng)模塊。從變換中心的邊從變換中心的邊 界開(kāi)始,沿輸入路徑和輸出路徑向外,將界開(kāi)始,沿輸入路徑和輸出路徑向外,將 變換依次映射到軟件結(jié)構(gòu)的從屬層。變換依次映射到軟件結(jié)構(gòu)的從屬層。圖圖8- 16描述了第二級(jí)分解的一般方法。描述了第二級(jí)分解的一般方法。 SAFEHOME實(shí)例44 圖8-16 監(jiān)控傳感器的第二級(jí)分解 步驟6:完成“第二級(jí)分解” v雖然圖雖然圖8-16描述了描述了DFD變換和軟件模塊變換和軟件模塊 間的間的一對(duì)一映射一對(duì)一映射,但其他的映射方式也經(jīng),但其他的映射方
59、式也經(jīng) 常采用。常采用。兩個(gè)甚至三個(gè)變換可以合并在一兩個(gè)甚至三個(gè)變換可以合并在一 起表示為一個(gè)構(gòu)件起表示為一個(gè)構(gòu)件,或者,或者一個(gè)單獨(dú)的變換一個(gè)單獨(dú)的變換 也可以擴(kuò)展成兩個(gè)或者多個(gè)構(gòu)件也可以擴(kuò)展成兩個(gè)或者多個(gè)構(gòu)件?,F(xiàn)實(shí)考現(xiàn)實(shí)考 慮慮和和設(shè)計(jì)質(zhì)量設(shè)計(jì)質(zhì)量的權(quán)衡決定著第二級(jí)分解的的權(quán)衡決定著第二級(jí)分解的 輸出結(jié)果。輸出結(jié)果。評(píng)審和精化評(píng)審和精化可能會(huì)導(dǎo)致這個(gè)結(jié)可能會(huì)導(dǎo)致這個(gè)結(jié) 構(gòu)的改變,但這個(gè)結(jié)構(gòu)仍然應(yīng)作為構(gòu)的改變,但這個(gè)結(jié)構(gòu)仍然應(yīng)作為第一次第一次 迭代設(shè)計(jì)迭代設(shè)計(jì)。 步驟6:完成“第二級(jí)分解” v對(duì)于輸入流的第二級(jí)分解遵循同樣的方式,從輸對(duì)于輸入流的第二級(jí)分解遵循同樣的方式,從輸 入流一側(cè)的入流
60、一側(cè)的變換中心邊界開(kāi)始向外移動(dòng)變換中心邊界開(kāi)始向外移動(dòng)。變換中。變換中 心映射略有不同,心映射略有不同,DFD變換部分的變換部分的每個(gè)代表數(shù)據(jù)每個(gè)代表數(shù)據(jù) 轉(zhuǎn)換或計(jì)算的變換都被映射為變換控制器的從屬轉(zhuǎn)換或計(jì)算的變換都被映射為變換控制器的從屬 模塊模塊。圖。圖8-17給出了一個(gè)完整的第一次迭代的體給出了一個(gè)完整的第一次迭代的體 系結(jié)構(gòu)。系結(jié)構(gòu)。 v按以上方法映射出來(lái)的構(gòu)件描述了軟件體系結(jié)構(gòu)按以上方法映射出來(lái)的構(gòu)件描述了軟件體系結(jié)構(gòu) 的一個(gè)初始設(shè)計(jì)。雖然構(gòu)件的名字已經(jīng)可以體現(xiàn)的一個(gè)初始設(shè)計(jì)。雖然構(gòu)件的名字已經(jīng)可以體現(xiàn) 其功能,但我們?nèi)匀恍枰獮槊總€(gè)構(gòu)件提供簡(jiǎn)要的其功能,但我們?nèi)匀恍枰獮槊總€(gè)構(gòu)件提供簡(jiǎn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年新教材高中物理課時(shí)跟蹤訓(xùn)練十六力的合成和分解第1課時(shí)含解析新人教版必修第一冊(cè)
- 2024-2025學(xué)年高中英語(yǔ)Unit2WishyouwerehereSectionⅢTask課后限時(shí)訓(xùn)練牛津譯林版必修2
- 2024-2025學(xué)年高中生物3.1體內(nèi)受精和早期胚胎發(fā)育練習(xí)含解析新人教版選修3
- 2024-2025學(xué)年高中語(yǔ)文第11課就任北京大學(xué)校長(zhǎng)之演說(shuō)教案新人教版必修2
- 8紅樓春趣教學(xué)設(shè)計(jì)-2023-2024學(xué)年五年級(jí)下冊(cè)語(yǔ)文統(tǒng)編版
- 第6單元 習(xí)作:記一次游戲 教學(xué)設(shè)計(jì)2024-2025學(xué)年四年級(jí)語(yǔ)文上冊(cè)同步教學(xué) (廣東專版)
- Unit4 A glimpse of the future Using language 教學(xué)設(shè)計(jì)-2023-2024學(xué)年外研版高中英語(yǔ)(2019)選擇性必修第三冊(cè)
- 小學(xué)信息技術(shù)五年級(jí)下冊(cè)第5課《控制系統(tǒng)的三個(gè)環(huán)節(jié)》教學(xué)設(shè)計(jì)
- 籃球:運(yùn)球后轉(zhuǎn)身 教學(xué)設(shè)計(jì)-2023-2024學(xué)年高一上學(xué)期體育與健康人教版必修第一冊(cè)
- 全國(guó)青島版信息技術(shù)八年級(jí)上冊(cè)專題二第2課二、《登錄虛擬機(jī)器人在線仿真平臺(tái)》教學(xué)設(shè)計(jì)
- 人教版小學(xué)語(yǔ)文1-6年級(jí)背誦內(nèi)容完整版
- 2023徐金桂“徐徐道來(lái)”(行政法知識(shí)點(diǎn))版
- 《事故汽車常用零部件修復(fù)與更換判別規(guī)范》
- 2024-2030年中國(guó)酒類流通行業(yè)發(fā)展動(dòng)態(tài)及投資盈利預(yù)測(cè)研究報(bào)告
- 物業(yè)管理如何實(shí)現(xiàn)降本增效
- DL-T825-2021電能計(jì)量裝置安裝接線規(guī)則
- 信息科技重大版 七年級(jí)下冊(cè) 互聯(lián)網(wǎng)應(yīng)用與創(chuàng)新 第一單元單元教學(xué)設(shè)計(jì) 互聯(lián)網(wǎng)創(chuàng)新應(yīng)用
- 2024年興業(yè)銀行股份有限公司校園招聘考試試題及參考答案
- 2024智慧城市城市交通基礎(chǔ)設(shè)施智能監(jiān)測(cè)技術(shù)要求
- 2024年湖南環(huán)境生物職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及參考答案
- 專題06 壓強(qiáng)計(jì)算(壓強(qiáng)與浮力結(jié)合題)-上海市2024年中考復(fù)習(xí)資料匯編(培優(yōu)專用)【解析版】
評(píng)論
0/150
提交評(píng)論