第四章體系結(jié)構(gòu)的設(shè)計(jì)原理_第1頁
第四章體系結(jié)構(gòu)的設(shè)計(jì)原理_第2頁
第四章體系結(jié)構(gòu)的設(shè)計(jì)原理_第3頁
第四章體系結(jié)構(gòu)的設(shè)計(jì)原理_第4頁
第四章體系結(jié)構(gòu)的設(shè)計(jì)原理_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第4 4章章 體系結(jié)構(gòu)的設(shè)計(jì)原理體系結(jié)構(gòu)的設(shè)計(jì)原理4.1 4.1 體系結(jié)構(gòu)的設(shè)計(jì)原體系結(jié)構(gòu)的設(shè)計(jì)原理理 軟件體系的結(jié)構(gòu)是建立在幾條基本原理之上的。它們是:抽象、封裝、數(shù)據(jù)隱藏、模塊化、注意點(diǎn)分離、耦合和內(nèi)聚、充分性、完備性和原始性、策略和實(shí)現(xiàn)的分離、接口與實(shí)現(xiàn)的分離、引用的單一性、分而治之、層次化。1. 1. 抽象抽象 抽象是人們用來處理復(fù)雜性問題的基本原理之一。抽象有幾種形式,如數(shù)據(jù)抽象、對象抽象、實(shí)體抽象、行為抽象、過程抽象、虛擬機(jī)抽象等。數(shù)據(jù)、實(shí)體的抽象使得軟件操作的對象和參數(shù)是針對邏輯結(jié)構(gòu),而非存儲結(jié)構(gòu)的。行為、過程的抽象使得操作的指派是依據(jù)標(biāo)識而非地址,由此產(chǎn)生了操作的接口和動態(tài)約

2、束描述。 抽象的一個重要特性就是可替換性可替換性。 2.2.封裝封裝 封裝是將構(gòu)成抽象的屬性和行結(jié)合在一起,并區(qū)分不同抽象的方法。封裝為不同抽象之間提供了明確的界限。封裝有利于非功能特性實(shí)現(xiàn),例如可變性和可重用性。 封裝包括內(nèi)部構(gòu)成和操作服務(wù)兩個方面。3.3.信息隱藏信息隱藏 信息隱藏是軟件工程的最基本和最重要的原理之一。 信息隱藏對用戶隱藏了部件的實(shí)現(xiàn)細(xì)節(jié),用來更好地處理系統(tǒng)的復(fù)雜性和減少各部件之間的耦合。封裝原理經(jīng)常被用來作為實(shí)現(xiàn)信息隱藏的方法。信息隱藏也可以通過接口與實(shí)現(xiàn)分離的原理來實(shí)現(xiàn)。4.4.模塊化模塊化 模塊化主要關(guān)心的是如何將一個軟件系統(tǒng)分解成子系統(tǒng)和部件,其主要任務(wù)就是決定怎樣

3、將構(gòu)成應(yīng)用的邏輯結(jié)構(gòu)物理地分割成代碼實(shí)體。5.5.注意點(diǎn)分離注意點(diǎn)分離(Separation of Concerns)(Separation of Concerns) 不同和無關(guān)聯(lián)的責(zé)任應(yīng)該在軟件系統(tǒng)中分離開來,讓它們出現(xiàn)在不同的部件中。相互協(xié)作完成某一任務(wù)的部件應(yīng)該和在其他任務(wù)中執(zhí)行計(jì)算的部件分離開來。如果一個部件在不同的環(huán)境下扮演著不同的角色,在部件中這些角色應(yīng)該獨(dú)立且相互分離。6.6.耦合和內(nèi)聚耦合和內(nèi)聚 耦合強(qiáng)調(diào)模塊之間的特征,而內(nèi)聚強(qiáng)調(diào)模塊內(nèi)部的特性。耦合是用來衡量一個模塊同另一個模塊的聯(lián)系的緊密程度的。內(nèi)聚用來衡量單一模塊內(nèi)功能和元素間聯(lián)系性的程度。 內(nèi)聚有幾種形式,.最期望獲得的

4、是功能內(nèi)聚。其他形式的內(nèi)聚還有:邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和不規(guī)則內(nèi)聚。7.7.充分性、完備性和原始性充分性、完備性和原始性 BOOC94指出軟件系統(tǒng)的每個部件都應(yīng)該是充分的、完備的和簡單的。 充分性指的是部件應(yīng)該把握住與其進(jìn)行有意義和高效交互抽象的所有特性。 完備性是指一個部件應(yīng)該把握住所有與其抽象相關(guān)的特性。 原始性指的是部件所應(yīng)該完成的操作都可以容易地得到實(shí)現(xiàn)。8.8.策略和實(shí)現(xiàn)的分離策略和實(shí)現(xiàn)的分離 軟件系統(tǒng)的部件應(yīng)該實(shí)現(xiàn)策略或處理問題,但不能同時處理兩者。 策略部件負(fù)責(zé)處理上下文相關(guān)的決策、信息的語義和解釋的知識、把不相交計(jì)算組合形成結(jié)果、對參數(shù)值進(jìn)行選擇等問題

5、。 實(shí)現(xiàn)部件負(fù)責(zé)全面規(guī)范算法的執(zhí)行,執(zhí)行中不需要對上下文相關(guān)信息進(jìn)行決策.如果不能將一個軟件體系結(jié)構(gòu)分解成策略和實(shí)現(xiàn)的不同部件,至少應(yīng)該在一個部件內(nèi)將策略和實(shí)現(xiàn)的功能加以分離。9.9.接口和實(shí)現(xiàn)的分離接口和實(shí)現(xiàn)的分離 任何一個部件都應(yīng)該包含兩個部分,接口和實(shí)現(xiàn). 接口部分定義了部件所提供的功能,并規(guī)范了功能的使用方法.該接口對部件的客戶是可訪問的。實(shí)現(xiàn)部分包括了實(shí)現(xiàn)部件所提供功能的實(shí)際代碼。實(shí)現(xiàn)部分還可以包括只服務(wù)于部件內(nèi)部操作的另外的函數(shù)和數(shù)據(jù)結(jié)構(gòu)。實(shí)現(xiàn)部分對部件客戶來說是不可用的。10.10.分而制之分而制之(divide-and-conquer)(divide-and-conquer)

6、11.11.層次化層次化 處理復(fù)雜性問題有兩種方法,即:分而制之的橫向分割和分層次處理的縱向分割。后者是一種把問題分解成建立在基礎(chǔ)概念和思想上多層次的、從底向上逐步抽象的分析和表達(dá)的結(jié)構(gòu),每一層處理該層次的問題、服務(wù)于該層次的要求。層次化在軟件構(gòu)造中是一種基本的思想。類和對象是層次化的,操作系統(tǒng)構(gòu)造、編譯器構(gòu)造、應(yīng)用系統(tǒng)構(gòu)造,無一不是層次化的。同樣,軟件體系結(jié)構(gòu)也是層次化的。4.2 4.2 軟件的非功能特性軟件的非功能特性 功能特性主要是直接針對客戶的功能需求。非功能特性對軟件的開發(fā)和維護(hù),可操作性以及對計(jì)算機(jī)資源的使用都有著很大的影響。非功能特性主要包括系統(tǒng)的可變性、可操作性、效率、 可靠性

7、、 可測試性、 可重用性。正交性正交性:設(shè)法使兩個不同的操作交叉重復(fù)部分達(dá)到最小。1.1.可變性可變性/ /可維護(hù)性可維護(hù)性 軟件老化的原因: (1)缺少變化 如果不迅速更新和升級,軟件就會老化; (2)盲目和無知的修改; (3)軟件建立初期就設(shè)計(jì)的不靈活,無法或難以維護(hù)和升級; (4)文檔不充分。 可以通過下列途徑來防止老化,它們是:建立準(zhǔn)確的文檔 、當(dāng)引入改變時保持原始的結(jié)構(gòu)、 深入的系統(tǒng)審查、 在設(shè)計(jì)之初就考慮到變化的影響??勺冃杂兴膫€方面BUSC96: (1) 可維護(hù)性。它主要處理已有問題的解決,當(dāng)發(fā)現(xiàn)錯誤后對軟件進(jìn)行修復(fù)。 (2)可擴(kuò)充性。它注重于用新特性對軟件系統(tǒng)進(jìn)行擴(kuò)充,還包括用

8、升級的版本代替原有的部件、除去不必要的特性和部件??蓴U(kuò)充性的目標(biāo)是可以自由地更換部件而不會影響客戶的使用,支持把新部件加到已存在系統(tǒng)中。 (3)可重構(gòu)性。它處理軟件系統(tǒng)部件的重構(gòu)和部件之間的關(guān)系可變性問題。要支持軟件的可重構(gòu)性,需要對部件之間的聯(lián)系進(jìn)行詳細(xì)的設(shè)計(jì)。有兩種可重構(gòu)性,一種是系統(tǒng)設(shè)計(jì)人員的,一種是用戶可操作的。 (4)可移植性。這可以使一個軟件系統(tǒng)能夠適應(yīng)多種硬件平臺、用戶接口、操作系統(tǒng)、 編程語言和編譯器。2.2.互操作性互操作性 組成系統(tǒng)的各個部件不是獨(dú)立存在的,他們需要頻繁地與系統(tǒng)中其他部件、系統(tǒng)外的其它系統(tǒng)、運(yùn)行環(huán)境相互作用。為了支持互操作性,軟件體系結(jié)構(gòu)必須設(shè)計(jì)成對外能夠提

9、供良好外部可見、可訪問的功能和數(shù)據(jù)結(jié)構(gòu)的描述。3.3.效率效率4.4.可靠性可靠性 可靠性是軟件系統(tǒng)在各種情況下維持其功能的能力??煽啃钥梢詤^(qū)分為兩個方面: (1)錯容性。其任務(wù)是當(dāng)錯誤事件發(fā)生時確保正確的系統(tǒng)響應(yīng),必要時采取內(nèi)部補(bǔ)救措施,以避免產(chǎn)生用戶不希望的或?yàn)?zāi)難性的后果。 (2)健壯性。它被用來保護(hù)系統(tǒng),使其即使在錯誤操作和不正確輸入等未預(yù)期錯誤的情況下,也能保持在已定義和明確的狀態(tài)下。與錯容性相反,健壯性不要求軟件在發(fā)生錯誤之后還能繼續(xù)執(zhí)行,它只需要保證軟件能以明確和可接受的方式終止。5.5.可測試性可測試性6.6.可重用性可重用性 重用是“通過已經(jīng)存在的來獲得想要的”的軟件和實(shí)現(xiàn)設(shè)計(jì)方法。 可重

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論