




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、現(xiàn)代軟件工程第8章 設(shè)計(jì)工程主要內(nèi)容v軟件工程中的設(shè)計(jì)軟件工程中的設(shè)計(jì)v設(shè)計(jì)過(guò)程和設(shè)計(jì)質(zhì)量設(shè)計(jì)過(guò)程和設(shè)計(jì)質(zhì)量v設(shè)計(jì)概念設(shè)計(jì)概念v設(shè)計(jì)模型設(shè)計(jì)模型v基于模式的軟件設(shè)計(jì)基于模式的軟件設(shè)計(jì)v小結(jié)小結(jié)設(shè)計(jì)工程v設(shè)計(jì)創(chuàng)建了軟件的表達(dá)或模型,但與分析模型設(shè)計(jì)創(chuàng)建了軟件的表達(dá)或模型,但與分析模型(關(guān)注于說(shuō)明必需的數(shù)據(jù)、功能和行為)不同,(關(guān)注于說(shuō)明必需的數(shù)據(jù)、功能和行為)不同,設(shè)計(jì)模型提供了設(shè)計(jì)模型提供了軟件數(shù)據(jù)結(jié)構(gòu)軟件數(shù)據(jù)結(jié)構(gòu)、體系結(jié)構(gòu)體系結(jié)構(gòu)、接接口口和和構(gòu)件構(gòu)件的細(xì)節(jié),而這些都是實(shí)現(xiàn)系統(tǒng)必需的。的細(xì)節(jié),而這些都是實(shí)現(xiàn)系統(tǒng)必需的。v設(shè)計(jì)要讓軟件工程師為將要構(gòu)建的系統(tǒng)或產(chǎn)品設(shè)計(jì)要讓軟件工程師為將要構(gòu)建的系
2、統(tǒng)或產(chǎn)品建立模型。在生成代碼、進(jìn)行測(cè)試以及在涉及建立模型。在生成代碼、進(jìn)行測(cè)試以及在涉及大量最終用戶使用之前,可能要評(píng)估該模型的大量最終用戶使用之前,可能要評(píng)估該模型的質(zhì)量并進(jìn)行改進(jìn)。設(shè)計(jì)是確立質(zhì)量并進(jìn)行改進(jìn)。設(shè)計(jì)是確立軟件質(zhì)量軟件質(zhì)量的關(guān)鍵的關(guān)鍵步驟。步驟。設(shè)計(jì)工程v設(shè)計(jì)可以采用很多不同的方法描繪軟件。設(shè)計(jì)可以采用很多不同的方法描繪軟件。首先,設(shè)計(jì)必須體現(xiàn)系統(tǒng)或產(chǎn)品的首先,設(shè)計(jì)必須體現(xiàn)系統(tǒng)或產(chǎn)品的體系結(jié)體系結(jié)構(gòu)構(gòu);其次,為各類;其次,為各類接口建模接口建模,這些接口在,這些接口在軟件和最終用戶、軟件和其他系統(tǒng)及設(shè)備軟件和最終用戶、軟件和其他系統(tǒng)及設(shè)備以及軟件和自身組成的構(gòu)件之間起到聯(lián)系以及軟
3、件和自身組成的構(gòu)件之間起到聯(lián)系作用;最后,設(shè)計(jì)用于構(gòu)建系統(tǒng)的作用;最后,設(shè)計(jì)用于構(gòu)建系統(tǒng)的軟件構(gòu)軟件構(gòu)件件。每個(gè)視圖表現(xiàn)了不同的設(shè)計(jì)活動(dòng),但。每個(gè)視圖表現(xiàn)了不同的設(shè)計(jì)活動(dòng),但是都要遵循一組是都要遵循一組基本的設(shè)計(jì)概念基本的設(shè)計(jì)概念,這些設(shè),這些設(shè)計(jì)概念指導(dǎo)著所有的軟件設(shè)計(jì)工作。計(jì)概念指導(dǎo)著所有的軟件設(shè)計(jì)工作。設(shè)計(jì)工程v 在軟件設(shè)計(jì)過(guò)程中,包含在軟件設(shè)計(jì)過(guò)程中,包含體系結(jié)構(gòu)體系結(jié)構(gòu)、接接口口、構(gòu)件構(gòu)件和和部署部署表示的設(shè)計(jì)模型是主要的表示的設(shè)計(jì)模型是主要的工作產(chǎn)品。工作產(chǎn)品。v可以從以下諸方面來(lái)評(píng)估設(shè)計(jì)模型:確定可以從以下諸方面來(lái)評(píng)估設(shè)計(jì)模型:確定設(shè)計(jì)模型是否設(shè)計(jì)模型是否存在錯(cuò)誤存在錯(cuò)誤、不一致
4、或遺漏不一致或遺漏,是否是否存在更好的方案存在更好的方案可供選擇,設(shè)計(jì)模型可供選擇,設(shè)計(jì)模型是否可以在是否可以在已經(jīng)設(shè)定的限制已經(jīng)設(shè)定的限制、時(shí)間進(jìn)度時(shí)間進(jìn)度和和花費(fèi)花費(fèi)下實(shí)現(xiàn)。下實(shí)現(xiàn)。設(shè)計(jì)工程v設(shè)計(jì)工程包括一套設(shè)計(jì)工程包括一套原理原理、概念概念和和實(shí)踐實(shí)踐,可,可以指導(dǎo)高質(zhì)量的系統(tǒng)或產(chǎn)品開發(fā)。設(shè)計(jì)原以指導(dǎo)高質(zhì)量的系統(tǒng)或產(chǎn)品開發(fā)。設(shè)計(jì)原理建立了最重要的原則,用以指導(dǎo)設(shè)計(jì)師理建立了最重要的原則,用以指導(dǎo)設(shè)計(jì)師工作。在運(yùn)用設(shè)計(jì)實(shí)踐的技術(shù)和方法之前,工作。在運(yùn)用設(shè)計(jì)實(shí)踐的技術(shù)和方法之前,必須先理解設(shè)計(jì)概念,而且設(shè)計(jì)實(shí)踐本身必須先理解設(shè)計(jì)概念,而且設(shè)計(jì)實(shí)踐本身會(huì)導(dǎo)致產(chǎn)生各種軟件設(shè)計(jì)表示,這些表示會(huì)導(dǎo)致
5、產(chǎn)生各種軟件設(shè)計(jì)表示,這些表示將指導(dǎo)隨后的將指導(dǎo)隨后的構(gòu)建活動(dòng)構(gòu)建活動(dòng)。設(shè)計(jì)工程v設(shè)計(jì)是一項(xiàng)核心的工程活動(dòng)。設(shè)計(jì)是一項(xiàng)核心的工程活動(dòng)。Lotus 1-2-3的的發(fā)明人在發(fā)明人在Dr.Dobbs雜志雜志上發(fā)表了上發(fā)表了“軟件設(shè)軟件設(shè)計(jì)宣言計(jì)宣言”:設(shè)計(jì)是你身處兩個(gè)世界:設(shè)計(jì)是你身處兩個(gè)世界技術(shù)世技術(shù)世界和人類的目標(biāo)世界界和人類的目標(biāo)世界而你嘗試將這兩個(gè)世而你嘗試將這兩個(gè)世界結(jié)合在一起界結(jié)合在一起設(shè)計(jì)良好的建筑應(yīng)該展示出設(shè)計(jì)良好的建筑應(yīng)該展示出堅(jiān)固、適用和令人賞心悅目的特點(diǎn)。對(duì)好的軟堅(jiān)固、適用和令人賞心悅目的特點(diǎn)。對(duì)好的軟件來(lái)說(shuō)也是如此。所謂堅(jiān)固,是指程序應(yīng)該不件來(lái)說(shuō)也是如此。所謂堅(jiān)固,是指程序應(yīng)
6、該不含任何妨礙其功能的缺陷。適用是要程序符合含任何妨礙其功能的缺陷。適用是要程序符合開發(fā)的目標(biāo)。賞心悅目則是要求使用程序的體開發(fā)的目標(biāo)。賞心悅目則是要求使用程序的體驗(yàn)應(yīng)是愉快的。驗(yàn)應(yīng)是愉快的。設(shè)計(jì)工程v設(shè)計(jì)工程的目標(biāo)是創(chuàng)作出堅(jiān)固、適用和賞心悅設(shè)計(jì)工程的目標(biāo)是創(chuàng)作出堅(jiān)固、適用和賞心悅目的模型或設(shè)計(jì)表示。目的模型或設(shè)計(jì)表示。 為此,設(shè)計(jì)師的做法必為此,設(shè)計(jì)師的做法必須先實(shí)現(xiàn)多樣化再行聚合。多樣化是指要獲取多須先實(shí)現(xiàn)多樣化再行聚合。多樣化是指要獲取多種方案和設(shè)計(jì)的原始資料,包括目錄、教科書和種方案和設(shè)計(jì)的原始資料,包括目錄、教科書和頭腦中的構(gòu)件、構(gòu)件方案和知識(shí)。在各種信息匯頭腦中的構(gòu)件、構(gòu)件方案和知
7、識(shí)。在各種信息匯聚在一起之后,設(shè)計(jì)師應(yīng)從其中挑選能夠滿足需聚在一起之后,設(shè)計(jì)師應(yīng)從其中挑選能夠滿足需求工程和分析模型所定義的需求的元素。此時(shí),求工程和分析模型所定義的需求的元素。此時(shí),設(shè)計(jì)工程師在經(jīng)取舍后,進(jìn)行聚合,使之成為構(gòu)設(shè)計(jì)工程師在經(jīng)取舍后,進(jìn)行聚合,使之成為構(gòu)件的某種特定件的某種特定的配置,于是便得到最終的產(chǎn)品。的配置,于是便得到最終的產(chǎn)品。v多樣化和聚合需要直覺和判斷力,其質(zhì)量取決多樣化和聚合需要直覺和判斷力,其質(zhì)量取決于構(gòu)造類似實(shí)體的經(jīng)驗(yàn)、一系列指導(dǎo)模型演化方于構(gòu)造類似實(shí)體的經(jīng)驗(yàn)、一系列指導(dǎo)模型演化方式的原則和式的原則和(或或)啟發(fā)、一系列質(zhì)量評(píng)價(jià)的標(biāo)準(zhǔn)以啟發(fā)、一系列質(zhì)量評(píng)價(jià)的標(biāo)準(zhǔn)
8、以及導(dǎo)出最終設(shè)計(jì)表示的迭代過(guò)程。及導(dǎo)出最終設(shè)計(jì)表示的迭代過(guò)程。設(shè)計(jì)工程v在本章將探討可以應(yīng)用于所有軟件設(shè)計(jì)的在本章將探討可以應(yīng)用于所有軟件設(shè)計(jì)的基本概念和原則、設(shè)計(jì)模型的元素以及?;靖拍詈驮瓌t、設(shè)計(jì)模型的元素以及模式對(duì)設(shè)計(jì)過(guò)程的影響。在隨后的章節(jié)中,式對(duì)設(shè)計(jì)過(guò)程的影響。在隨后的章節(jié)中,將考察應(yīng)用于體系結(jié)構(gòu)、接口和構(gòu)件級(jí)設(shè)將考察應(yīng)用于體系結(jié)構(gòu)、接口和構(gòu)件級(jí)設(shè)計(jì)的各種各樣的設(shè)計(jì)方法。計(jì)的各種各樣的設(shè)計(jì)方法。軟件工程中的設(shè)計(jì)v軟件設(shè)計(jì)在軟件工程過(guò)程中處于技術(shù)核心,并軟件設(shè)計(jì)在軟件工程過(guò)程中處于技術(shù)核心,并且它的應(yīng)用與所使用的軟件過(guò)程模型無(wú)關(guān)。對(duì)且它的應(yīng)用與所使用的軟件過(guò)程模型無(wú)關(guān)。對(duì)軟件需求進(jìn)行分
9、析和建模開始之后,軟件設(shè)計(jì)軟件需求進(jìn)行分析和建模開始之后,軟件設(shè)計(jì)是建?;顒?dòng)的最后一個(gè)軟件工程動(dòng)作,接著便是建?;顒?dòng)的最后一個(gè)軟件工程動(dòng)作,接著便要進(jìn)入構(gòu)造階段。要進(jìn)入構(gòu)造階段。v分析模型的每個(gè)元素都提供了創(chuàng)建四種設(shè)計(jì)模分析模型的每個(gè)元素都提供了創(chuàng)建四種設(shè)計(jì)模型所必需的信息,這四種設(shè)計(jì)模型是完成完整型所必需的信息,這四種設(shè)計(jì)模型是完成完整的設(shè)計(jì)規(guī)格說(shuō)明所必需的。軟件設(shè)計(jì)過(guò)程中的的設(shè)計(jì)規(guī)格說(shuō)明所必需的。軟件設(shè)計(jì)過(guò)程中的信息流如圖信息流如圖8-1所示。由基于場(chǎng)景的元素、基于所示。由基于場(chǎng)景的元素、基于類的元素和行為元素所表明的分析模型是設(shè)計(jì)類的元素和行為元素所表明的分析模型是設(shè)計(jì)任務(wù)的輸入。任務(wù)的
10、輸入。軟件工程中的設(shè)計(jì)圖8-1從分析模型到設(shè)計(jì)模型的轉(zhuǎn)化軟件工程中的設(shè)計(jì)v數(shù)據(jù)數(shù)據(jù)/類設(shè)計(jì)將分析類模型轉(zhuǎn)化為設(shè)計(jì)類的實(shí)現(xiàn)類設(shè)計(jì)將分析類模型轉(zhuǎn)化為設(shè)計(jì)類的實(shí)現(xiàn)以及軟件實(shí)現(xiàn)所要求的數(shù)據(jù)結(jié)構(gòu)。以及軟件實(shí)現(xiàn)所要求的數(shù)據(jù)結(jié)構(gòu)。CRC索引卡索引卡定義的類和關(guān)系、類屬性和其他表示法刻畫的定義的類和關(guān)系、類屬性和其他表示法刻畫的詳細(xì)數(shù)據(jù)內(nèi)容為數(shù)據(jù)設(shè)計(jì)活動(dòng)提供了基礎(chǔ)。在詳細(xì)數(shù)據(jù)內(nèi)容為數(shù)據(jù)設(shè)計(jì)活動(dòng)提供了基礎(chǔ)。在和軟件體系結(jié)構(gòu)設(shè)計(jì)連接中可能會(huì)有部分的類和軟件體系結(jié)構(gòu)設(shè)計(jì)連接中可能會(huì)有部分的類設(shè)計(jì),更詳細(xì)的類設(shè)計(jì)在設(shè)計(jì)每個(gè)軟件構(gòu)件時(shí)設(shè)計(jì),更詳細(xì)的類設(shè)計(jì)在設(shè)計(jì)每個(gè)軟件構(gòu)件時(shí)進(jìn)行。進(jìn)行。v體系結(jié)構(gòu)設(shè)計(jì)定義了軟件的主要結(jié)構(gòu)
11、元素之間體系結(jié)構(gòu)設(shè)計(jì)定義了軟件的主要結(jié)構(gòu)元素之間的聯(lián)系、可用于達(dá)到系統(tǒng)所定義需求的體系結(jié)的聯(lián)系、可用于達(dá)到系統(tǒng)所定義需求的體系結(jié)構(gòu)風(fēng)格和設(shè)計(jì)模式以及影響體系結(jié)構(gòu)實(shí)現(xiàn)方式構(gòu)風(fēng)格和設(shè)計(jì)模式以及影響體系結(jié)構(gòu)實(shí)現(xiàn)方式的約束。體系結(jié)構(gòu)設(shè)計(jì)表示的約束。體系結(jié)構(gòu)設(shè)計(jì)表示基于計(jì)算機(jī)系統(tǒng)基于計(jì)算機(jī)系統(tǒng)的框架的框架可以從系統(tǒng)規(guī)格說(shuō)明、分析模型和分可以從系統(tǒng)規(guī)格說(shuō)明、分析模型和分析模型中定義的子系統(tǒng)的交互導(dǎo)出。析模型中定義的子系統(tǒng)的交互導(dǎo)出。軟件工程中的設(shè)計(jì)v接口設(shè)計(jì)描述了軟件和協(xié)作系統(tǒng)之間、軟接口設(shè)計(jì)描述了軟件和協(xié)作系統(tǒng)之間、軟件和使用人員之間是如何通信的。接口就件和使用人員之間是如何通信的。接口就意味著信息流和
12、特定的行為類型。因此,意味著信息流和特定的行為類型。因此,使用場(chǎng)景和行為模型為接口設(shè)計(jì)提供了所使用場(chǎng)景和行為模型為接口設(shè)計(jì)提供了所需的大量信息。需的大量信息。v構(gòu)件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)元素變構(gòu)件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)元素變換為對(duì)軟件構(gòu)件的過(guò)程性描述。從基于類換為對(duì)軟件構(gòu)件的過(guò)程性描述。從基于類的模型、流模型和行為模型獲得的信息將的模型、流模型和行為模型獲得的信息將作為構(gòu)件設(shè)計(jì)的基礎(chǔ)。作為構(gòu)件設(shè)計(jì)的基礎(chǔ)。軟件工程中的設(shè)計(jì)v軟件設(shè)計(jì)的重要性可以用一個(gè)詞來(lái)表達(dá)軟件設(shè)計(jì)的重要性可以用一個(gè)詞來(lái)表達(dá)質(zhì)量。設(shè)計(jì)是軟件工程中形成質(zhì)量的地質(zhì)量。設(shè)計(jì)是軟件工程中形成質(zhì)量的地方,設(shè)計(jì)為我們提供了可以用于質(zhì)
13、量評(píng)估方,設(shè)計(jì)為我們提供了可以用于質(zhì)量評(píng)估的軟件表示,設(shè)計(jì)是我們能夠?qū)⒂脩粜枨蟮能浖硎?,設(shè)計(jì)是我們能夠?qū)⒂脩粜枨鬁?zhǔn)確地轉(zhuǎn)化為軟件產(chǎn)品或系統(tǒng)的唯一方法。準(zhǔn)確地轉(zhuǎn)化為軟件產(chǎn)品或系統(tǒng)的唯一方法。軟件設(shè)計(jì)是所有軟件工程活動(dòng)和隨后的軟軟件設(shè)計(jì)是所有軟件工程活動(dòng)和隨后的軟件支持活動(dòng)的基礎(chǔ)。沒(méi)有設(shè)計(jì),我們冒構(gòu)件支持活動(dòng)的基礎(chǔ)。沒(méi)有設(shè)計(jì),我們冒構(gòu)造不穩(wěn)定系統(tǒng)的風(fēng)險(xiǎn),這樣的系統(tǒng)稍做改造不穩(wěn)定系統(tǒng)的風(fēng)險(xiǎn),這樣的系統(tǒng)稍做改動(dòng)就無(wú)法運(yùn)行,而且難以測(cè)試,直到軟件動(dòng)就無(wú)法運(yùn)行,而且難以測(cè)試,直到軟件工程過(guò)程的后期才能評(píng)估其質(zhì)量。工程過(guò)程的后期才能評(píng)估其質(zhì)量。設(shè)計(jì)過(guò)程和設(shè)計(jì)質(zhì)量v軟件設(shè)計(jì)是一個(gè)迭代的過(guò)程,通過(guò)設(shè)計(jì)過(guò)軟件設(shè)
14、計(jì)是一個(gè)迭代的過(guò)程,通過(guò)設(shè)計(jì)過(guò)程,需求被變換為用于構(gòu)建軟件的程,需求被變換為用于構(gòu)建軟件的“藍(lán)藍(lán)圖圖”。初始時(shí),藍(lán)圖描述了軟件的整體視。初始時(shí),藍(lán)圖描述了軟件的整體視圖,也就是說(shuō),設(shè)計(jì)是在高抽象層次上的圖,也就是說(shuō),設(shè)計(jì)是在高抽象層次上的表達(dá)表達(dá)在該層次上可以直接跟蹤到特定在該層次上可以直接跟蹤到特定的系統(tǒng)目標(biāo)和更詳細(xì)的數(shù)據(jù)、功能和行為的系統(tǒng)目標(biāo)和更詳細(xì)的數(shù)據(jù)、功能和行為需求。隨著設(shè)計(jì)迭代的開始,后續(xù)的精化需求。隨著設(shè)計(jì)迭代的開始,后續(xù)的精化導(dǎo)致更低抽象層次的設(shè)計(jì)表示。這些表示導(dǎo)致更低抽象層次的設(shè)計(jì)表示。這些表示仍然能夠跟蹤到需求,但是連接更加錯(cuò)綜仍然能夠跟蹤到需求,但是連接更加錯(cuò)綜復(fù)雜了。復(fù)
15、雜了。設(shè)計(jì)過(guò)程和設(shè)計(jì)質(zhì)量vMCG91提出了可以指導(dǎo)評(píng)價(jià)良好設(shè)計(jì)提出了可以指導(dǎo)評(píng)價(jià)良好設(shè)計(jì)演化的三個(gè)特征:演化的三個(gè)特征:v設(shè)計(jì)必須實(shí)現(xiàn)所有包含在分析模型中的明設(shè)計(jì)必須實(shí)現(xiàn)所有包含在分析模型中的明確需求,而且必須滿足客戶期望的所有隱確需求,而且必須滿足客戶期望的所有隱含需求。含需求。v對(duì)于那些生成代碼的人和那些進(jìn)行測(cè)試以對(duì)于那些生成代碼的人和那些進(jìn)行測(cè)試以及隨后維護(hù)軟件的人而言,設(shè)計(jì)必須是可及隨后維護(hù)軟件的人而言,設(shè)計(jì)必須是可讀的、可理解的指南。讀的、可理解的指南。v設(shè)計(jì)必須提供軟件的全貌,從實(shí)現(xiàn)的角度設(shè)計(jì)必須提供軟件的全貌,從實(shí)現(xiàn)的角度說(shuō)明數(shù)據(jù)域、功能域和行為域。說(shuō)明數(shù)據(jù)域、功能域和行為域。質(zhì)
16、量指導(dǎo)原則v設(shè)計(jì)應(yīng)展示出這樣一種結(jié)構(gòu):設(shè)計(jì)應(yīng)展示出這樣一種結(jié)構(gòu):(a)已經(jīng)使已經(jīng)使用可識(shí)別的體系結(jié)構(gòu)風(fēng)格或模式創(chuàng)建;用可識(shí)別的體系結(jié)構(gòu)風(fēng)格或模式創(chuàng)建;(b)由展示出良好設(shè)計(jì)特征的構(gòu)件構(gòu)成;由展示出良好設(shè)計(jì)特征的構(gòu)件構(gòu)成;(c)能夠以演化的方式實(shí)現(xiàn),從而便于實(shí)現(xiàn)和能夠以演化的方式實(shí)現(xiàn),從而便于實(shí)現(xiàn)和測(cè)試。測(cè)試。v設(shè)計(jì)應(yīng)該模塊化;即軟件應(yīng)按照邏輯劃分設(shè)計(jì)應(yīng)該模塊化;即軟件應(yīng)按照邏輯劃分為元素或子系統(tǒng)。為元素或子系統(tǒng)。v設(shè)計(jì)應(yīng)該包含數(shù)據(jù)、體系結(jié)構(gòu)、接口和構(gòu)設(shè)計(jì)應(yīng)該包含數(shù)據(jù)、體系結(jié)構(gòu)、接口和構(gòu)件的清楚表示。件的清楚表示。 質(zhì)量指導(dǎo)原則v設(shè)計(jì)應(yīng)導(dǎo)出數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)適于設(shè)計(jì)應(yīng)導(dǎo)出數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)
17、構(gòu)適于要實(shí)現(xiàn)的類,并由可識(shí)別的數(shù)據(jù)模式提取。要實(shí)現(xiàn)的類,并由可識(shí)別的數(shù)據(jù)模式提取。v設(shè)計(jì)應(yīng)導(dǎo)出顯示獨(dú)立功能特征的構(gòu)件。設(shè)計(jì)應(yīng)導(dǎo)出顯示獨(dú)立功能特征的構(gòu)件。v設(shè)計(jì)應(yīng)導(dǎo)出接口,這些接口降低了構(gòu)件之設(shè)計(jì)應(yīng)導(dǎo)出接口,這些接口降低了構(gòu)件之間以及與外部環(huán)境連接的復(fù)雜性。間以及與外部環(huán)境連接的復(fù)雜性。v設(shè)計(jì)的導(dǎo)出應(yīng)根據(jù)軟件需求分析過(guò)程中獲設(shè)計(jì)的導(dǎo)出應(yīng)根據(jù)軟件需求分析過(guò)程中獲取的信息采用可重復(fù)使用的方法進(jìn)行。取的信息采用可重復(fù)使用的方法進(jìn)行。v應(yīng)使用能夠有效傳達(dá)其意義的表示法來(lái)表應(yīng)使用能夠有效傳達(dá)其意義的表示法來(lái)表達(dá)設(shè)計(jì)。達(dá)設(shè)計(jì)。質(zhì)量屬性vHP開發(fā)了一系列軟件質(zhì)量屬性,稱為開發(fā)了一系列軟件質(zhì)量屬性,稱為FURP
18、S,分別代表功,分別代表功能性、易用性、可靠性、性能、可支持性。能性、易用性、可靠性、性能、可支持性。FURPS質(zhì)量屬性質(zhì)量屬性體現(xiàn)了所有軟件設(shè)計(jì)的目標(biāo)。體現(xiàn)了所有軟件設(shè)計(jì)的目標(biāo)。v功能性:評(píng)估程序的特征集和能力、所提交功能的普遍性以功能性:評(píng)估程序的特征集和能力、所提交功能的普遍性以及整個(gè)系統(tǒng)的安全性。及整個(gè)系統(tǒng)的安全性。v易用性:通過(guò)考慮人為因素、整體美感、一致性和文檔來(lái)評(píng)易用性:通過(guò)考慮人為因素、整體美感、一致性和文檔來(lái)評(píng)估。估。v可靠性:通過(guò)測(cè)量故障的頻率和嚴(yán)重性、輸出結(jié)果的精確性、可靠性:通過(guò)測(cè)量故障的頻率和嚴(yán)重性、輸出結(jié)果的精確性、故障平均時(shí)間故障平均時(shí)間MTTF、故障恢復(fù)能力和程
19、序的可預(yù)見性來(lái)評(píng)估。、故障恢復(fù)能力和程序的可預(yù)見性來(lái)評(píng)估。v性能:度量處理速度、響應(yīng)時(shí)間、資源消耗、吞吐量和效率。性能:度量處理速度、響應(yīng)時(shí)間、資源消耗、吞吐量和效率。v可支持性:綜合了擴(kuò)展程序、適應(yīng)性和耐用性三方面的能力,可支持性:綜合了擴(kuò)展程序、適應(yīng)性和耐用性三方面的能力,此外還包括可測(cè)試性、兼容性、可配置性、系統(tǒng)安裝的簡(jiǎn)易此外還包括可測(cè)試性、兼容性、可配置性、系統(tǒng)安裝的簡(jiǎn)易性和問(wèn)題定位的簡(jiǎn)易性。性和問(wèn)題定位的簡(jiǎn)易性。設(shè)計(jì)任務(wù)集v檢查信息域模型,并為數(shù)據(jù)對(duì)象及其屬性設(shè)計(jì)恰當(dāng)?shù)臄?shù)檢查信息域模型,并為數(shù)據(jù)對(duì)象及其屬性設(shè)計(jì)恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)。據(jù)結(jié)構(gòu)。v使用分析模型,選擇一個(gè)適于軟件的體系結(jié)構(gòu)類型。使
20、用分析模型,選擇一個(gè)適于軟件的體系結(jié)構(gòu)類型。v將分析模型分割為若干個(gè)設(shè)計(jì)子系統(tǒng),并在體系結(jié)構(gòu)內(nèi)將分析模型分割為若干個(gè)設(shè)計(jì)子系統(tǒng),并在體系結(jié)構(gòu)內(nèi)分配這些子系統(tǒng)。要確定每個(gè)子系統(tǒng)是功能內(nèi)聚的。設(shè)分配這些子系統(tǒng)。要確定每個(gè)子系統(tǒng)是功能內(nèi)聚的。設(shè)計(jì)子系統(tǒng)接口。為每個(gè)子系統(tǒng)分配分析類或功能。計(jì)子系統(tǒng)接口。為每個(gè)子系統(tǒng)分配分析類或功能。v創(chuàng)建一系列的設(shè)計(jì)類或構(gòu)件。將每個(gè)分析類說(shuō)明轉(zhuǎn)化為創(chuàng)建一系列的設(shè)計(jì)類或構(gòu)件。將每個(gè)分析類說(shuō)明轉(zhuǎn)化為設(shè)計(jì)類。據(jù)設(shè)計(jì)標(biāo)準(zhǔn)檢查每個(gè)設(shè)計(jì)類,考慮繼承問(wèn)題。設(shè)計(jì)類。據(jù)設(shè)計(jì)標(biāo)準(zhǔn)檢查每個(gè)設(shè)計(jì)類,考慮繼承問(wèn)題。定義與每個(gè)設(shè)計(jì)類相關(guān)的方法和消息。評(píng)估設(shè)計(jì)類或子定義與每個(gè)設(shè)計(jì)類相關(guān)的方法和消息
21、。評(píng)估設(shè)計(jì)類或子系統(tǒng)并為這些類或子系統(tǒng)選擇設(shè)計(jì)模式。評(píng)審設(shè)計(jì)類,系統(tǒng)并為這些類或子系統(tǒng)選擇設(shè)計(jì)模式。評(píng)審設(shè)計(jì)類,并在需要時(shí)修改。并在需要時(shí)修改。v設(shè)計(jì)外部系統(tǒng)或設(shè)備所需要的所有接口。設(shè)計(jì)外部系統(tǒng)或設(shè)備所需要的所有接口。設(shè)計(jì)任務(wù)集v設(shè)計(jì)用戶接口。評(píng)審任務(wù)分析的結(jié)果?;谟迷O(shè)計(jì)用戶接口。評(píng)審任務(wù)分析的結(jié)果?;谟脩魣?chǎng)景詳細(xì)說(shuō)明活動(dòng)序列。創(chuàng)建接口的行為模戶場(chǎng)景詳細(xì)說(shuō)明活動(dòng)序列。創(chuàng)建接口的行為模型。定義接口對(duì)象、控制機(jī)制。評(píng)審接口設(shè)計(jì),型。定義接口對(duì)象、控制機(jī)制。評(píng)審接口設(shè)計(jì),并在需要時(shí)修改。并在需要時(shí)修改。v進(jìn)行構(gòu)件級(jí)設(shè)計(jì)。在相對(duì)較低的抽象層次上詳進(jìn)行構(gòu)件級(jí)設(shè)計(jì)。在相對(duì)較低的抽象層次上詳細(xì)說(shuō)明所有算
22、法。精化每個(gè)構(gòu)件的接口。定義細(xì)說(shuō)明所有算法。精化每個(gè)構(gòu)件的接口。定義構(gòu)件級(jí)的數(shù)據(jù)結(jié)構(gòu)。評(píng)審每個(gè)構(gòu)件并修正所有構(gòu)件級(jí)的數(shù)據(jù)結(jié)構(gòu)。評(píng)審每個(gè)構(gòu)件并修正所有已發(fā)現(xiàn)的錯(cuò)誤。已發(fā)現(xiàn)的錯(cuò)誤。v開發(fā)部署模型。開發(fā)部署模型。設(shè)計(jì)概念v在軟件工程的歷史進(jìn)程中發(fā)展了一系列基在軟件工程的歷史進(jìn)程中發(fā)展了一系列基本的軟件設(shè)計(jì)概念。盡管多年來(lái)對(duì)于每一本的軟件設(shè)計(jì)概念。盡管多年來(lái)對(duì)于每一種概念的關(guān)注程度不斷變化,但它們都經(jīng)種概念的關(guān)注程度不斷變化,但它們都經(jīng)歷了時(shí)間的考驗(yàn)。每一種概念都為軟件設(shè)歷了時(shí)間的考驗(yàn)。每一種概念都為軟件設(shè)計(jì)者提供了應(yīng)用更加復(fù)雜設(shè)計(jì)方法的基礎(chǔ)。計(jì)者提供了應(yīng)用更加復(fù)雜設(shè)計(jì)方法的基礎(chǔ)。v基礎(chǔ)的軟件設(shè)計(jì)概念
23、為基礎(chǔ)的軟件設(shè)計(jì)概念為“使程序正確使程序正確”提提供了必要的框架。供了必要的框架。抽象v當(dāng)考慮某一問(wèn)題的模塊化解決方案時(shí),可當(dāng)考慮某一問(wèn)題的模塊化解決方案時(shí),可以給出許多抽象級(jí)。在最高的抽象級(jí)上,以給出許多抽象級(jí)。在最高的抽象級(jí)上,使用問(wèn)題所處環(huán)境的語(yǔ)言以概括性的術(shù)語(yǔ)使用問(wèn)題所處環(huán)境的語(yǔ)言以概括性的術(shù)語(yǔ)描述解決方案。在較低的抽象級(jí)上,將提描述解決方案。在較低的抽象級(jí)上,將提供更詳細(xì)的解決方案說(shuō)明。供更詳細(xì)的解決方案說(shuō)明。抽象v在不同的抽象級(jí)間移動(dòng)時(shí),我們力圖創(chuàng)建在不同的抽象級(jí)間移動(dòng)時(shí),我們力圖創(chuàng)建過(guò)程抽象和數(shù)據(jù)抽象。過(guò)程抽象是指具有過(guò)程抽象和數(shù)據(jù)抽象。過(guò)程抽象是指具有明確和有限功能的指令序列。
24、過(guò)程抽象的明確和有限功能的指令序列。過(guò)程抽象的命名暗示了這些功能,但是隱藏了具體的命名暗示了這些功能,但是隱藏了具體的細(xì)節(jié)。細(xì)節(jié)。v數(shù)據(jù)抽象是描述數(shù)據(jù)對(duì)象的冠名數(shù)據(jù)集合。數(shù)據(jù)抽象是描述數(shù)據(jù)對(duì)象的冠名數(shù)據(jù)集合。體系結(jié)構(gòu)v軟件體系結(jié)構(gòu)意指軟件體系結(jié)構(gòu)意指“軟件的整體結(jié)構(gòu)和這軟件的整體結(jié)構(gòu)和這種結(jié)構(gòu)為系統(tǒng)提供概念上完整性的方式種結(jié)構(gòu)為系統(tǒng)提供概念上完整性的方式”。從最簡(jiǎn)單的形式看,體系結(jié)構(gòu)是程序構(gòu)件從最簡(jiǎn)單的形式看,體系結(jié)構(gòu)是程序構(gòu)件(模塊模塊)的結(jié)構(gòu)或組織、這些構(gòu)件交互的形的結(jié)構(gòu)或組織、這些構(gòu)件交互的形式以及這些構(gòu)件所用數(shù)據(jù)的結(jié)構(gòu)。式以及這些構(gòu)件所用數(shù)據(jù)的結(jié)構(gòu)。v軟件設(shè)計(jì)的目標(biāo)之一是導(dǎo)出系統(tǒng)的體系
25、結(jié)軟件設(shè)計(jì)的目標(biāo)之一是導(dǎo)出系統(tǒng)的體系結(jié)構(gòu)透視圖,該透視圖作為一個(gè)框架,將指構(gòu)透視圖,該透視圖作為一個(gè)框架,將指導(dǎo)更詳細(xì)的設(shè)計(jì)活動(dòng)。一系列的體系結(jié)構(gòu)導(dǎo)更詳細(xì)的設(shè)計(jì)活動(dòng)。一系列的體系結(jié)構(gòu)模式使得軟件工程師能夠復(fù)用設(shè)計(jì)級(jí)的概模式使得軟件工程師能夠復(fù)用設(shè)計(jì)級(jí)的概念。念。體系結(jié)構(gòu)v體系結(jié)構(gòu)設(shè)計(jì)可以使用大量的一種或多種體系結(jié)構(gòu)設(shè)計(jì)可以使用大量的一種或多種模型來(lái)表達(dá)。結(jié)構(gòu)模型將體系結(jié)構(gòu)表示為模型來(lái)表達(dá)。結(jié)構(gòu)模型將體系結(jié)構(gòu)表示為程序構(gòu)件的一個(gè)有組織的集合。通過(guò)確定程序構(gòu)件的一個(gè)有組織的集合。通過(guò)確定類似應(yīng)用中遇到的可復(fù)用的體系結(jié)構(gòu)來(lái)設(shè)類似應(yīng)用中遇到的可復(fù)用的體系結(jié)構(gòu)來(lái)設(shè)計(jì)框架,框架模型可以提高設(shè)計(jì)抽象級(jí)別。計(jì)
26、框架,框架模型可以提高設(shè)計(jì)抽象級(jí)別。動(dòng)態(tài)模型強(qiáng)調(diào)程序體系結(jié)構(gòu)的行為方面,動(dòng)態(tài)模型強(qiáng)調(diào)程序體系結(jié)構(gòu)的行為方面,指明結(jié)構(gòu)或系統(tǒng)配置作為外部事件的函數(shù)指明結(jié)構(gòu)或系統(tǒng)配置作為外部事件的函數(shù)將如何變化。過(guò)程模型注重系統(tǒng)必須提供將如何變化。過(guò)程模型注重系統(tǒng)必須提供的業(yè)務(wù)設(shè)計(jì)或技術(shù)流程設(shè)計(jì)。最后,功能的業(yè)務(wù)設(shè)計(jì)或技術(shù)流程設(shè)計(jì)。最后,功能模型可以用來(lái)表示系統(tǒng)的功能層次結(jié)構(gòu)。模型可以用來(lái)表示系統(tǒng)的功能層次結(jié)構(gòu)。模式v設(shè)計(jì)模式描述了在某個(gè)特定場(chǎng)景與可能影設(shè)計(jì)模式描述了在某個(gè)特定場(chǎng)景與可能影響模式應(yīng)用和使用方式的響模式應(yīng)用和使用方式的“影響力影響力”中解中解決某個(gè)特定的設(shè)計(jì)問(wèn)題的設(shè)計(jì)結(jié)構(gòu)。決某個(gè)特定的設(shè)計(jì)問(wèn)題的設(shè)計(jì)
27、結(jié)構(gòu)。v每個(gè)設(shè)計(jì)模式的目的都是提供一個(gè)描述,每個(gè)設(shè)計(jì)模式的目的都是提供一個(gè)描述,以使得設(shè)計(jì)人員能夠確定:以使得設(shè)計(jì)人員能夠確定:(1)模式是否模式是否適合當(dāng)前的工作;適合當(dāng)前的工作;(2)模式是否能夠復(fù)用;模式是否能夠復(fù)用;(3)模式是否能夠用于指導(dǎo)開發(fā)一個(gè)類似模式是否能夠用于指導(dǎo)開發(fā)一個(gè)類似但是功能或結(jié)構(gòu)不同的模式。但是功能或結(jié)構(gòu)不同的模式。模塊化v軟件體系結(jié)構(gòu)和設(shè)計(jì)模式表現(xiàn)為模塊化;軟件體系結(jié)構(gòu)和設(shè)計(jì)模式表現(xiàn)為模塊化;即軟件被劃分為獨(dú)立命名的、可尋址的構(gòu)即軟件被劃分為獨(dú)立命名的、可尋址的構(gòu)件,有時(shí)被稱為模塊,把這些構(gòu)件集成到件,有時(shí)被稱為模塊,把這些構(gòu)件集成到一起可以滿足問(wèn)題的需求。一起可
28、以滿足問(wèn)題的需求。v模塊化是軟件的單個(gè)屬性,它使程序能被模塊化是軟件的單個(gè)屬性,它使程序能被理性地管理。軟件工程師難以掌握單塊軟理性地管理。軟件工程師難以掌握單塊軟件。對(duì)于大型程序,其控制路徑的數(shù)量、件。對(duì)于大型程序,其控制路徑的數(shù)量、引用的跨度、變量的數(shù)量和整體的復(fù)雜度引用的跨度、變量的數(shù)量和整體的復(fù)雜度使得理解這樣的軟件幾乎是不可能的。使得理解這樣的軟件幾乎是不可能的。模塊化v考慮兩個(gè)問(wèn)題考慮兩個(gè)問(wèn)題p1和和p2,如果,如果p1的理解復(fù)的理解復(fù)雜度大于雜度大于p2的理解復(fù)雜度,那么解決的理解復(fù)雜度,那么解決p1所需的工作量大于解決所需的工作量大于解決p2所需的工作量。所需的工作量。v另一個(gè)
29、結(jié)果是兩個(gè)問(wèn)題結(jié)合時(shí)的理解復(fù)雜另一個(gè)結(jié)果是兩個(gè)問(wèn)題結(jié)合時(shí)的理解復(fù)雜度通常要大于每個(gè)問(wèn)題各自的理解復(fù)雜度度通常要大于每個(gè)問(wèn)題各自的理解復(fù)雜度之和。這引出了之和。這引出了“分而治之分而治之”的策略:將的策略:將一個(gè)復(fù)雜問(wèn)題分解成可以管理的若干塊,一個(gè)復(fù)雜問(wèn)題分解成可以管理的若干塊,這樣能夠更容易解決問(wèn)題。這樣能夠更容易解決問(wèn)題。模塊化v似乎可以得出結(jié)論:如果我們無(wú)限制地劃似乎可以得出結(jié)論:如果我們無(wú)限制地劃分軟件,那么開發(fā)它所需的工作量會(huì)變得分軟件,那么開發(fā)它所需的工作量會(huì)變得小到可以忽略小到可以忽略!然而,其他因素開始起作用,然而,其他因素開始起作用,導(dǎo)致這個(gè)結(jié)論不成立。如圖導(dǎo)致這個(gè)結(jié)論不成立。
30、如圖8-2所示,開所示,開發(fā)某個(gè)獨(dú)立軟件模塊的工作量的確隨著模發(fā)某個(gè)獨(dú)立軟件模塊的工作量的確隨著模塊數(shù)增加而下降,給定同樣的需求,更多塊數(shù)增加而下降,給定同樣的需求,更多的模塊意味著每個(gè)模塊的規(guī)模更小。然而,的模塊意味著每個(gè)模塊的規(guī)模更小。然而,隨著模塊數(shù)量增加,集成模塊的工作量也隨著模塊數(shù)量增加,集成模塊的工作量也在增加。事實(shí)上,的確存在一個(gè)模塊數(shù)量在增加。事實(shí)上,的確存在一個(gè)模塊數(shù)量M可以帶來(lái)最小的開發(fā)成本。但是,我們可以帶來(lái)最小的開發(fā)成本。但是,我們?nèi)狈Ρ匾募夹g(shù)來(lái)精確地預(yù)測(cè)缺乏必要的技術(shù)來(lái)精確地預(yù)測(cè)M。模塊化圖8-2 模塊化和軟件成本模塊化v做模塊化設(shè)計(jì)做模塊化設(shè)計(jì)(以及由其產(chǎn)生的程序
31、以及由其產(chǎn)生的程序)可以可以更容易地計(jì)劃開發(fā);可以定義和交付軟件更容易地計(jì)劃開發(fā);可以定義和交付軟件增量;更容易實(shí)施變更;能夠更有效地開增量;更容易實(shí)施變更;能夠更有效地開展測(cè)試和調(diào)試;可以開展長(zhǎng)期維護(hù)而沒(méi)有展測(cè)試和調(diào)試;可以開展長(zhǎng)期維護(hù)而沒(méi)有嚴(yán)重的副作用。嚴(yán)重的副作用。信息隱蔽v模塊化概念讓每個(gè)軟件設(shè)計(jì)師面對(duì)一個(gè)基模塊化概念讓每個(gè)軟件設(shè)計(jì)師面對(duì)一個(gè)基本問(wèn)題:我們將如何分解一個(gè)軟件解決方本問(wèn)題:我們將如何分解一個(gè)軟件解決方案以求獲得最好的模塊集合?信息隱蔽原案以求獲得最好的模塊集合?信息隱蔽原則建議模塊應(yīng)該具有的特征是:每個(gè)模塊則建議模塊應(yīng)該具有的特征是:每個(gè)模塊對(duì)其他所有模塊都隱蔽自己的設(shè)計(jì)
32、決策。對(duì)其他所有模塊都隱蔽自己的設(shè)計(jì)決策。即模塊應(yīng)該詳細(xì)說(shuō)明且精心設(shè)計(jì)以求在某即模塊應(yīng)該詳細(xì)說(shuō)明且精心設(shè)計(jì)以求在某個(gè)模塊中包含的信息不被不需要這些信息個(gè)模塊中包含的信息不被不需要這些信息的其他模塊訪問(wèn)。的其他模塊訪問(wèn)。信息隱蔽v隱蔽意味著通過(guò)定義一系列獨(dú)立的模塊可以得隱蔽意味著通過(guò)定義一系列獨(dú)立的模塊可以得到有效的模塊化,獨(dú)立模塊相互之間只交流實(shí)到有效的模塊化,獨(dú)立模塊相互之間只交流實(shí)現(xiàn)軟件功能所必需的那些信息。抽象有助于定現(xiàn)軟件功能所必需的那些信息。抽象有助于定義構(gòu)成軟件的過(guò)程實(shí)體。隱蔽定義并加強(qiáng)了模義構(gòu)成軟件的過(guò)程實(shí)體。隱蔽定義并加強(qiáng)了模塊內(nèi)的過(guò)程細(xì)節(jié)和模塊所使用的任何局部數(shù)據(jù)塊內(nèi)的過(guò)程細(xì)
33、節(jié)和模塊所使用的任何局部數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)約束。結(jié)構(gòu)的訪問(wèn)約束。v把信息隱蔽用做模塊化系統(tǒng)的一個(gè)設(shè)計(jì)標(biāo)準(zhǔn),把信息隱蔽用做模塊化系統(tǒng)的一個(gè)設(shè)計(jì)標(biāo)準(zhǔn),在測(cè)試和隨后的軟件維護(hù)過(guò)程中,在需要修改在測(cè)試和隨后的軟件維護(hù)過(guò)程中,在需要修改時(shí)將提供最大的益處。因?yàn)榇蠖鄶?shù)數(shù)據(jù)和程序時(shí)將提供最大的益處。因?yàn)榇蠖鄶?shù)數(shù)據(jù)和程序?qū)浖钠渌糠质请[蔽的,因此在修改過(guò)程對(duì)軟件的其他部分是隱蔽的,因此在修改過(guò)程中,無(wú)意地引入錯(cuò)誤并傳播到軟件其他地方的中,無(wú)意地引入錯(cuò)誤并傳播到軟件其他地方的可能性會(huì)很小。可能性會(huì)很小。功能獨(dú)立v功能獨(dú)立的概念是模塊化、抽象概念和信功能獨(dú)立的概念是模塊化、抽象概念和信息隱蔽的直接結(jié)果。通過(guò)開發(fā)具
34、有專一功息隱蔽的直接結(jié)果。通過(guò)開發(fā)具有專一功能和避免與其他模塊過(guò)多交互的模塊,可能和避免與其他模塊過(guò)多交互的模塊,可以實(shí)現(xiàn)功能獨(dú)立。即,我們希望軟件設(shè)計(jì)以實(shí)現(xiàn)功能獨(dú)立。即,我們希望軟件設(shè)計(jì)時(shí)要使每個(gè)模塊僅涉及需求的某個(gè)特定子時(shí)要使每個(gè)模塊僅涉及需求的某個(gè)特定子功能,并且當(dāng)從程序結(jié)構(gòu)的其他部分觀察功能,并且當(dāng)從程序結(jié)構(gòu)的其他部分觀察時(shí),每個(gè)模塊只有一個(gè)簡(jiǎn)單的接口。時(shí),每個(gè)模塊只有一個(gè)簡(jiǎn)單的接口。功能獨(dú)立v具有有效模塊化的軟件更容易開發(fā),這是因?yàn)榫哂杏行K化的軟件更容易開發(fā),這是因?yàn)楣δ鼙环指舳医涌诒缓?jiǎn)化。獨(dú)立模塊更容易功能被分隔而且接口被簡(jiǎn)化。獨(dú)立模塊更容易維護(hù)和測(cè)試,因?yàn)樾薷脑O(shè)計(jì)或修改代碼
35、所引起維護(hù)和測(cè)試,因?yàn)樾薷脑O(shè)計(jì)或修改代碼所引起的副作用被限制,減少了錯(cuò)誤擴(kuò)散,而且模塊的副作用被限制,減少了錯(cuò)誤擴(kuò)散,而且模塊復(fù)用也成為可能。功能獨(dú)立是優(yōu)秀設(shè)計(jì)的關(guān)鍵,復(fù)用也成為可能。功能獨(dú)立是優(yōu)秀設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是軟件質(zhì)量的關(guān)鍵。而設(shè)計(jì)又是軟件質(zhì)量的關(guān)鍵。v獨(dú)立性可以使用兩條定性的標(biāo)準(zhǔn)評(píng)估:內(nèi)聚性獨(dú)立性可以使用兩條定性的標(biāo)準(zhǔn)評(píng)估:內(nèi)聚性和耦合性。和耦合性。 內(nèi)聚性顯示了某個(gè)模塊相關(guān)功能的內(nèi)聚性顯示了某個(gè)模塊相關(guān)功能的強(qiáng)度;耦合性顯示了模塊間的相互依賴性。強(qiáng)度;耦合性顯示了模塊間的相互依賴性。功能獨(dú)立v具有有效模塊化的軟件更容易開發(fā),這是因?yàn)榫哂杏行K化的軟件更容易開發(fā),這是因?yàn)楣δ鼙环?/p>
36、隔而且接口被簡(jiǎn)化。獨(dú)立模塊更容易功能被分隔而且接口被簡(jiǎn)化。獨(dú)立模塊更容易維護(hù)和測(cè)試,因?yàn)樾薷脑O(shè)計(jì)或修改代碼所引起維護(hù)和測(cè)試,因?yàn)樾薷脑O(shè)計(jì)或修改代碼所引起的副作用被限制,減少了錯(cuò)誤擴(kuò)散,而且模塊的副作用被限制,減少了錯(cuò)誤擴(kuò)散,而且模塊復(fù)用也成為可能。功能獨(dú)立是優(yōu)秀設(shè)計(jì)的關(guān)鍵,復(fù)用也成為可能。功能獨(dú)立是優(yōu)秀設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是軟件質(zhì)量的關(guān)鍵。而設(shè)計(jì)又是軟件質(zhì)量的關(guān)鍵。v獨(dú)立性可以使用兩條定性的標(biāo)準(zhǔn)評(píng)估:內(nèi)聚性獨(dú)立性可以使用兩條定性的標(biāo)準(zhǔn)評(píng)估:內(nèi)聚性和耦合性。和耦合性。 內(nèi)聚性顯示了某個(gè)模塊相關(guān)功能的內(nèi)聚性顯示了某個(gè)模塊相關(guān)功能的強(qiáng)度;耦合性顯示了模塊間的相互依賴性。強(qiáng)度;耦合性顯示了模塊間的相互
37、依賴性。功能獨(dú)立v內(nèi)聚性是信息隱蔽概念的自然擴(kuò)展。一個(gè)內(nèi)聚內(nèi)聚性是信息隱蔽概念的自然擴(kuò)展。一個(gè)內(nèi)聚的模塊執(zhí)行一個(gè)獨(dú)立的任務(wù),與程序的其他部的模塊執(zhí)行一個(gè)獨(dú)立的任務(wù),與程序的其他部分構(gòu)件只需要很少的交互。簡(jiǎn)單地說(shuō),一個(gè)內(nèi)分構(gòu)件只需要很少的交互。簡(jiǎn)單地說(shuō),一個(gè)內(nèi)聚的模塊應(yīng)該只完成一件事情。聚的模塊應(yīng)該只完成一件事情。v耦合性表明軟件結(jié)構(gòu)中多個(gè)模塊之間的相互連耦合性表明軟件結(jié)構(gòu)中多個(gè)模塊之間的相互連接。耦合性依賴于模塊之間的接口復(fù)雜性、引接。耦合性依賴于模塊之間的接口復(fù)雜性、引用或進(jìn)入模塊所在的點(diǎn)以及什么數(shù)據(jù)通過(guò)接口用或進(jìn)入模塊所在的點(diǎn)以及什么數(shù)據(jù)通過(guò)接口傳遞。在軟件設(shè)計(jì)中,我們將盡力得到盡可能傳遞
38、。在軟件設(shè)計(jì)中,我們將盡力得到盡可能低的耦合。模塊間簡(jiǎn)單的連接性使得軟件易于低的耦合。模塊間簡(jiǎn)單的連接性使得軟件易于理解并減少理解并減少“漣漪效果漣漪效果”的傾向,的傾向,“漣漪效果漣漪效果”是指在某個(gè)地方發(fā)生錯(cuò)誤時(shí)導(dǎo)致擴(kuò)散到整個(gè)系是指在某個(gè)地方發(fā)生錯(cuò)誤時(shí)導(dǎo)致擴(kuò)散到整個(gè)系統(tǒng)。統(tǒng)。求精v逐步求精是由逐步求精是由Niklaus Wirth最初提出的一種最初提出的一種自頂向下的設(shè)計(jì)策略。通過(guò)連續(xù)精化層次結(jié)構(gòu)自頂向下的設(shè)計(jì)策略。通過(guò)連續(xù)精化層次結(jié)構(gòu)的程序細(xì)節(jié)來(lái)實(shí)現(xiàn)程序的開發(fā),層次結(jié)構(gòu)的開的程序細(xì)節(jié)來(lái)實(shí)現(xiàn)程序的開發(fā),層次結(jié)構(gòu)的開發(fā)將通過(guò)逐步分解功能的宏觀陳述直至形成程發(fā)將通過(guò)逐步分解功能的宏觀陳述直至形
39、成程序設(shè)計(jì)語(yǔ)言的語(yǔ)句。序設(shè)計(jì)語(yǔ)言的語(yǔ)句。v求精實(shí)際上是一個(gè)細(xì)化的過(guò)程。從在高抽象級(jí)求精實(shí)際上是一個(gè)細(xì)化的過(guò)程。從在高抽象級(jí)上定義的功能陳述開始,該陳述概念性地描述上定義的功能陳述開始,該陳述概念性地描述了功能或信息,但是沒(méi)有提供有關(guān)功能內(nèi)部工了功能或信息,但是沒(méi)有提供有關(guān)功能內(nèi)部工作的信息或數(shù)據(jù)內(nèi)部結(jié)構(gòu)的信息。精化促使設(shè)作的信息或數(shù)據(jù)內(nèi)部結(jié)構(gòu)的信息。精化促使設(shè)計(jì)者在原始陳述上細(xì)化,并隨著每個(gè)精化的持計(jì)者在原始陳述上細(xì)化,并隨著每個(gè)精化的持續(xù)進(jìn)行將提供越來(lái)越多的細(xì)節(jié)。續(xù)進(jìn)行將提供越來(lái)越多的細(xì)節(jié)。求精v抽象和精化是互補(bǔ)的概念。抽象使得設(shè)計(jì)人員抽象和精化是互補(bǔ)的概念。抽象使得設(shè)計(jì)人員能夠明確說(shuō)明過(guò)程
40、和數(shù)據(jù)而同時(shí)忽略低層細(xì)節(jié);能夠明確說(shuō)明過(guò)程和數(shù)據(jù)而同時(shí)忽略低層細(xì)節(jié);精化有助于設(shè)計(jì)人員在設(shè)計(jì)過(guò)程中揭示低層的精化有助于設(shè)計(jì)人員在設(shè)計(jì)過(guò)程中揭示低層的細(xì)節(jié)。這兩個(gè)概念均有助于設(shè)計(jì)人員在設(shè)計(jì)演細(xì)節(jié)。這兩個(gè)概念均有助于設(shè)計(jì)人員在設(shè)計(jì)演化中構(gòu)造出完整的設(shè)計(jì)模型?;袠?gòu)造出完整的設(shè)計(jì)模型。重構(gòu)v重構(gòu)是一種重新組織的技術(shù),可以簡(jiǎn)化構(gòu)件的重構(gòu)是一種重新組織的技術(shù),可以簡(jiǎn)化構(gòu)件的設(shè)計(jì)而無(wú)需改變其功能或行為。設(shè)計(jì)而無(wú)需改變其功能或行為。FOW99這樣這樣定義重構(gòu):定義重構(gòu):“重構(gòu)是使用這樣一種方式改變軟重構(gòu)是使用這樣一種方式改變軟件系統(tǒng)的過(guò)程:不改變代碼的外部行為而是改件系統(tǒng)的過(guò)程:不改變代碼的外部行為而是改進(jìn)
41、其內(nèi)部結(jié)構(gòu)。進(jìn)其內(nèi)部結(jié)構(gòu)。”v當(dāng)重構(gòu)軟件時(shí),檢查現(xiàn)有設(shè)計(jì)的冗余性、沒(méi)有當(dāng)重構(gòu)軟件時(shí),檢查現(xiàn)有設(shè)計(jì)的冗余性、沒(méi)有使用的設(shè)計(jì)元素、低效的或不必要的算法、拙使用的設(shè)計(jì)元素、低效的或不必要的算法、拙劣的或不恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)以及其他設(shè)計(jì)不足,劣的或不恰當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)以及其他設(shè)計(jì)不足,修改這些不足從而獲得更好的設(shè)計(jì)。修改這些不足從而獲得更好的設(shè)計(jì)。設(shè)計(jì)類v在設(shè)計(jì)模式演化時(shí),軟件團(tuán)隊(duì)必須定義一組設(shè)在設(shè)計(jì)模式演化時(shí),軟件團(tuán)隊(duì)必須定義一組設(shè)計(jì)類:計(jì)類:(1)通過(guò)提供設(shè)計(jì)細(xì)節(jié)精化分析類,這些通過(guò)提供設(shè)計(jì)細(xì)節(jié)精化分析類,這些設(shè)計(jì)細(xì)節(jié)將促成類的實(shí)現(xiàn);設(shè)計(jì)細(xì)節(jié)將促成類的實(shí)現(xiàn);(2)創(chuàng)建一組新的設(shè)創(chuàng)建一組新的設(shè)計(jì)類,該設(shè)計(jì)類
42、實(shí)現(xiàn)了軟件的基礎(chǔ)設(shè)施以支持計(jì)類,該設(shè)計(jì)類實(shí)現(xiàn)了軟件的基礎(chǔ)設(shè)施以支持業(yè)務(wù)解決方案。業(yè)務(wù)解決方案。AMB01建議了五種不同類型建議了五種不同類型的設(shè)計(jì)類,每一種都表現(xiàn)了設(shè)計(jì)體系結(jié)構(gòu)的一的設(shè)計(jì)類,每一種都表現(xiàn)了設(shè)計(jì)體系結(jié)構(gòu)的一個(gè)層次。個(gè)層次。設(shè)計(jì)類v用戶接口類:定義人機(jī)交互用戶接口類:定義人機(jī)交互(HCI)所必需的所有抽象。所必需的所有抽象。在很多情況下,在很多情況下,HCI出現(xiàn)在隱喻的環(huán)境,而接口的設(shè)計(jì)出現(xiàn)在隱喻的環(huán)境,而接口的設(shè)計(jì)類可能是這種隱喻元素的形象表示。類可能是這種隱喻元素的形象表示。v業(yè)務(wù)域類:通常是早期定義的分析類的精化。這些類識(shí)業(yè)務(wù)域類:通常是早期定義的分析類的精化。這些類識(shí)別實(shí)現(xiàn)
43、某些業(yè)務(wù)域所必需的屬性和服務(wù)。別實(shí)現(xiàn)某些業(yè)務(wù)域所必需的屬性和服務(wù)。v過(guò)程類:實(shí)現(xiàn)完整管理業(yè)務(wù)域類所必需的低層業(yè)務(wù)抽象。過(guò)程類:實(shí)現(xiàn)完整管理業(yè)務(wù)域類所必需的低層業(yè)務(wù)抽象。v持久類:代表將在軟件執(zhí)行之外持續(xù)存在的數(shù)據(jù)存儲(chǔ)。持久類:代表將在軟件執(zhí)行之外持續(xù)存在的數(shù)據(jù)存儲(chǔ)。v系統(tǒng)類:實(shí)現(xiàn)軟件管理和控制功能,使得系統(tǒng)能夠運(yùn)行系統(tǒng)類:實(shí)現(xiàn)軟件管理和控制功能,使得系統(tǒng)能夠運(yùn)行并在其計(jì)算環(huán)境內(nèi)與外界通信。并在其計(jì)算環(huán)境內(nèi)與外界通信。設(shè)計(jì)類v在設(shè)計(jì)模型演化時(shí),軟件團(tuán)隊(duì)必須為每個(gè)在設(shè)計(jì)模型演化時(shí),軟件團(tuán)隊(duì)必須為每個(gè)設(shè)計(jì)類開發(fā)一組完整的屬性和操作。隨著設(shè)計(jì)類開發(fā)一組完整的屬性和操作。隨著每個(gè)分析類轉(zhuǎn)化為設(shè)計(jì)表示,抽
44、象級(jí)就降每個(gè)分析類轉(zhuǎn)化為設(shè)計(jì)表示,抽象級(jí)就降低。即分析類使用業(yè)務(wù)域的專門用語(yǔ)描述低。即分析類使用業(yè)務(wù)域的專門用語(yǔ)描述對(duì)象;設(shè)計(jì)類更多地表現(xiàn)技術(shù)細(xì)節(jié),將作對(duì)象;設(shè)計(jì)類更多地表現(xiàn)技術(shù)細(xì)節(jié),將作為實(shí)現(xiàn)的指導(dǎo)。為實(shí)現(xiàn)的指導(dǎo)。vARL02為組織良好的設(shè)計(jì)類定義了四為組織良好的設(shè)計(jì)類定義了四個(gè)特征。個(gè)特征。設(shè)計(jì)類v完整性與充分性:設(shè)計(jì)類應(yīng)該完整地封裝完整性與充分性:設(shè)計(jì)類應(yīng)該完整地封裝所有的,可以合理預(yù)見會(huì)存在于類中的屬所有的,可以合理預(yù)見會(huì)存在于類中的屬性和方法。充分性確保設(shè)計(jì)類只包含那些性和方法。充分性確保設(shè)計(jì)類只包含那些“對(duì)實(shí)現(xiàn)這個(gè)類的目的足夠?qū)?shí)現(xiàn)這個(gè)類的目的足夠”的方法,不的方法,不多也不少。多
45、也不少。v原始性:和某個(gè)設(shè)計(jì)類相關(guān)的方法應(yīng)該關(guān)原始性:和某個(gè)設(shè)計(jì)類相關(guān)的方法應(yīng)該關(guān)注于實(shí)現(xiàn)類的某個(gè)服務(wù)。一旦服務(wù)已經(jīng)被注于實(shí)現(xiàn)類的某個(gè)服務(wù)。一旦服務(wù)已經(jīng)被某個(gè)方法實(shí)現(xiàn),類就不應(yīng)該再提供另外一某個(gè)方法實(shí)現(xiàn),類就不應(yīng)該再提供另外一種完成同一事情的方法。種完成同一事情的方法。設(shè)計(jì)類v高內(nèi)聚性:一個(gè)內(nèi)聚的設(shè)計(jì)類具有小的、集中高內(nèi)聚性:一個(gè)內(nèi)聚的設(shè)計(jì)類具有小的、集中的職責(zé)集合,并且專注于使用屬性和方法來(lái)實(shí)的職責(zé)集合,并且專注于使用屬性和方法來(lái)實(shí)現(xiàn)那些職責(zé)?,F(xiàn)那些職責(zé)。v低耦合性:在設(shè)計(jì)模型內(nèi),設(shè)計(jì)類之間相互協(xié)低耦合性:在設(shè)計(jì)模型內(nèi),設(shè)計(jì)類之間相互協(xié)作是必然的。但是,協(xié)作應(yīng)該保持在一個(gè)可以作是必然的。但是
46、,協(xié)作應(yīng)該保持在一個(gè)可以接受的最小范圍內(nèi)。如果設(shè)計(jì)模型高度耦合,接受的最小范圍內(nèi)。如果設(shè)計(jì)模型高度耦合,那么系統(tǒng)就難以實(shí)現(xiàn)、測(cè)試,并且維護(hù)也很費(fèi)那么系統(tǒng)就難以實(shí)現(xiàn)、測(cè)試,并且維護(hù)也很費(fèi)力。通常,一個(gè)子系統(tǒng)內(nèi)的設(shè)計(jì)類對(duì)其他子系力。通常,一個(gè)子系統(tǒng)內(nèi)的設(shè)計(jì)類對(duì)其他子系統(tǒng)中的類應(yīng)僅有有限的了解。該限制被稱作統(tǒng)中的類應(yīng)僅有有限的了解。該限制被稱作Demeter定律,該定律建議一個(gè)方法應(yīng)該只向定律,該定律建議一個(gè)方法應(yīng)該只向周圍類中的方法發(fā)送消息。周圍類中的方法發(fā)送消息。SAFEHOME實(shí)例26圖8-3 FloorPlan的設(shè)計(jì)類和類的復(fù)合聚集設(shè)計(jì)模型v設(shè)計(jì)模型可以從兩不同的維度觀察,如圖設(shè)計(jì)模型可以從
47、兩不同的維度觀察,如圖8-4所示。過(guò)程維度表示設(shè)計(jì)模型的演化,所示。過(guò)程維度表示設(shè)計(jì)模型的演化,設(shè)計(jì)工作作為軟件過(guò)程的一部分被執(zhí)行;設(shè)計(jì)工作作為軟件過(guò)程的一部分被執(zhí)行;抽象維度表示過(guò)程的詳細(xì)級(jí)別,分析模型抽象維度表示過(guò)程的詳細(xì)級(jí)別,分析模型的每個(gè)元素轉(zhuǎn)化為一個(gè)等價(jià)的設(shè)計(jì),然后的每個(gè)元素轉(zhuǎn)化為一個(gè)等價(jià)的設(shè)計(jì),然后迭代精化。圖中虛線表示分析模型和設(shè)計(jì)迭代精化。圖中虛線表示分析模型和設(shè)計(jì)模型之間的邊界。在某些情況下,分析模模型之間的邊界。在某些情況下,分析模型和設(shè)計(jì)模型之間可能存在清晰的差別;型和設(shè)計(jì)模型之間可能存在清晰的差別;而在有些情況下,分析模型慢慢地融入設(shè)而在有些情況下,分析模型慢慢地融入設(shè)
48、計(jì)模型而沒(méi)有明顯的差別。計(jì)模型而沒(méi)有明顯的差別。設(shè)計(jì)模型的維度圖8-4 設(shè)計(jì)模型的維度設(shè)計(jì)模型v設(shè)計(jì)模型的元素很多都是在分析模型中使用的設(shè)計(jì)模型的元素很多都是在分析模型中使用的UML圖。差別在于這些圖被精化和細(xì)化為設(shè)計(jì)圖。差別在于這些圖被精化和細(xì)化為設(shè)計(jì)的一部分,并且提供了更多的與實(shí)現(xiàn)相關(guān)的特的一部分,并且提供了更多的與實(shí)現(xiàn)相關(guān)的特殊細(xì)節(jié),突出了體系結(jié)構(gòu)的結(jié)構(gòu)和風(fēng)格、體系殊細(xì)節(jié),突出了體系結(jié)構(gòu)的結(jié)構(gòu)和風(fēng)格、體系結(jié)構(gòu)內(nèi)存在的構(gòu)件以及構(gòu)件和外界之間的接口。結(jié)構(gòu)內(nèi)存在的構(gòu)件以及構(gòu)件和外界之間的接口。v沿橫坐標(biāo)表示的模型元素通常并不總是順序開沿橫坐標(biāo)表示的模型元素通常并不總是順序開發(fā)的。大多數(shù)情況下,
49、初步的體系結(jié)構(gòu)設(shè)計(jì)是發(fā)的。大多數(shù)情況下,初步的體系結(jié)構(gòu)設(shè)計(jì)是基礎(chǔ),隨后是接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)(通常是基礎(chǔ),隨后是接口設(shè)計(jì)和構(gòu)件級(jí)設(shè)計(jì)(通常是并行進(jìn)行)。通常直到設(shè)計(jì)全部完成后才開始并行進(jìn)行)。通常直到設(shè)計(jì)全部完成后才開始部署模型的工作。部署模型的工作。數(shù)據(jù)設(shè)計(jì)元素v數(shù)據(jù)設(shè)計(jì)(有時(shí)也稱為數(shù)據(jù)體系結(jié)構(gòu)設(shè)計(jì))數(shù)據(jù)設(shè)計(jì)(有時(shí)也稱為數(shù)據(jù)體系結(jié)構(gòu)設(shè)計(jì))創(chuàng)建在高抽象級(jí)上(以客戶創(chuàng)建在高抽象級(jí)上(以客戶/用戶的數(shù)據(jù)用戶的數(shù)據(jù)觀點(diǎn))表示的數(shù)據(jù)模型和觀點(diǎn))表示的數(shù)據(jù)模型和/或信息模型?;蛐畔⒛P?。然后,數(shù)據(jù)模型被精化為越來(lái)越和實(shí)現(xiàn)相然后,數(shù)據(jù)模型被精化為越來(lái)越和實(shí)現(xiàn)相關(guān)的特定表示,即基于計(jì)算機(jī)的系統(tǒng)能夠關(guān)的特定表
50、示,即基于計(jì)算機(jī)的系統(tǒng)能夠處理的表示。在很多軟件應(yīng)用中,數(shù)據(jù)體處理的表示。在很多軟件應(yīng)用中,數(shù)據(jù)體系結(jié)構(gòu)對(duì)必須處理該數(shù)據(jù)的軟件體系結(jié)構(gòu)系結(jié)構(gòu)對(duì)必須處理該數(shù)據(jù)的軟件體系結(jié)構(gòu)有深遠(yuǎn)的影響。有深遠(yuǎn)的影響。數(shù)據(jù)設(shè)計(jì)元素v數(shù)據(jù)結(jié)構(gòu)通常是軟件設(shè)計(jì)的重要部分。在數(shù)據(jù)結(jié)構(gòu)通常是軟件設(shè)計(jì)的重要部分。在程序構(gòu)件級(jí),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)以及相關(guān)的處程序構(gòu)件級(jí),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)以及相關(guān)的處理這些數(shù)據(jù)的算法對(duì)于創(chuàng)建高質(zhì)量的應(yīng)用理這些數(shù)據(jù)的算法對(duì)于創(chuàng)建高質(zhì)量的應(yīng)用程序是至關(guān)重要的。在應(yīng)用程序級(jí),數(shù)據(jù)程序是至關(guān)重要的。在應(yīng)用程序級(jí),數(shù)據(jù)模型到數(shù)據(jù)庫(kù)的轉(zhuǎn)變是實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)目標(biāo)模型到數(shù)據(jù)庫(kù)的轉(zhuǎn)變是實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)目標(biāo)的關(guān)鍵。在業(yè)務(wù)級(jí),收集存儲(chǔ)在
51、不同的數(shù)的關(guān)鍵。在業(yè)務(wù)級(jí),收集存儲(chǔ)在不同的數(shù)據(jù)庫(kù)中的信息并重新組織為據(jù)庫(kù)中的信息并重新組織為”數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)倉(cāng)庫(kù)“,要使用數(shù)據(jù)挖掘或知識(shí)發(fā)現(xiàn)技術(shù),這些技要使用數(shù)據(jù)挖掘或知識(shí)發(fā)現(xiàn)技術(shù),這些技術(shù)影響業(yè)務(wù)本身的成功。在各種情況下,術(shù)影響業(yè)務(wù)本身的成功。在各種情況下,數(shù)據(jù)設(shè)計(jì)都發(fā)揮了重要作用。數(shù)據(jù)設(shè)計(jì)都發(fā)揮了重要作用。體系結(jié)構(gòu)設(shè)計(jì)元素v軟件的體系結(jié)構(gòu)等效于房屋的平面圖。平面圖描軟件的體系結(jié)構(gòu)等效于房屋的平面圖。平面圖描繪了房間的整體布局,包括各房間的尺寸、形狀、繪了房間的整體布局,包括各房間的尺寸、形狀、相互之間的聯(lián)系,能夠進(jìn)出房間的門窗。平面圖相互之間的聯(lián)系,能夠進(jìn)出房間的門窗。平面圖為我們提供了房屋
52、的整體視圖;而體系結(jié)構(gòu)設(shè)計(jì)為我們提供了房屋的整體視圖;而體系結(jié)構(gòu)設(shè)計(jì)元素為我們提供了軟件的整體視圖。元素為我們提供了軟件的整體視圖。v體系結(jié)構(gòu)模型從以下三個(gè)來(lái)源獲得:體系結(jié)構(gòu)模型從以下三個(gè)來(lái)源獲得:(1)關(guān)于將關(guān)于將要構(gòu)建的軟件的應(yīng)用域信息;要構(gòu)建的軟件的應(yīng)用域信息;(2)特定的分析模特定的分析模型元素,如數(shù)據(jù)流圖或分析類、現(xiàn)有問(wèn)題中它們型元素,如數(shù)據(jù)流圖或分析類、現(xiàn)有問(wèn)題中它們的關(guān)系和協(xié)作;的關(guān)系和協(xié)作;(3)體系結(jié)構(gòu)模式和風(fēng)格的可獲體系結(jié)構(gòu)模式和風(fēng)格的可獲得性。得性。接口設(shè)計(jì)元素v軟件的接口設(shè)計(jì)相當(dāng)于一組房屋的門、窗和外部軟件的接口設(shè)計(jì)相當(dāng)于一組房屋的門、窗和外部設(shè)施的詳細(xì)繪圖。這些繪圖描
53、繪了門窗的尺寸和設(shè)施的詳細(xì)繪圖。這些繪圖描繪了門窗的尺寸和形狀、門窗的工作方式、設(shè)施連接入室的方式和形狀、門窗的工作方式、設(shè)施連接入室的方式和在平面圖上的室內(nèi)布置。圖紙可以告訴我們門鈴在平面圖上的室內(nèi)布置。圖紙可以告訴我們門鈴在哪、是否使用內(nèi)部通信以通知有客來(lái)訪以及如在哪、是否使用內(nèi)部通信以通知有客來(lái)訪以及如何安裝保安系統(tǒng)。門、窗、外部設(shè)施的詳細(xì)圖紙何安裝保安系統(tǒng)。門、窗、外部設(shè)施的詳細(xì)圖紙(以及規(guī)格說(shuō)明)大體上告訴我們事件和信息如(以及規(guī)格說(shuō)明)大體上告訴我們事件和信息如何流入和流出住宅以及如何在平面圖的房間內(nèi)流何流入和流出住宅以及如何在平面圖的房間內(nèi)流動(dòng)。類似地,軟件接口設(shè)計(jì)元素告訴我們信
54、息如動(dòng)。類似地,軟件接口設(shè)計(jì)元素告訴我們信息如何流入和流出系統(tǒng)以及被定義為體系結(jié)構(gòu)一部分何流入和流出系統(tǒng)以及被定義為體系結(jié)構(gòu)一部分的構(gòu)件之間是如何通信的。的構(gòu)件之間是如何通信的。接口設(shè)計(jì)元素v接口設(shè)計(jì)有三個(gè)重要的元素:接口設(shè)計(jì)有三個(gè)重要的元素:(1)用戶界用戶界面面(UI);(2)和其他系統(tǒng)、設(shè)備、網(wǎng)絡(luò)或其和其他系統(tǒng)、設(shè)備、網(wǎng)絡(luò)或其他的信息生產(chǎn)者或使用者的外部接口;他的信息生產(chǎn)者或使用者的外部接口;(3)各種設(shè)計(jì)構(gòu)件之間的內(nèi)部接口。這些接口各種設(shè)計(jì)構(gòu)件之間的內(nèi)部接口。這些接口設(shè)計(jì)元素允許軟件和外部通信,并使得在設(shè)計(jì)元素允許軟件和外部通信,并使得在軟件體系結(jié)構(gòu)內(nèi)存在的構(gòu)件之間能夠內(nèi)部軟件體系結(jié)構(gòu)
55、內(nèi)存在的構(gòu)件之間能夠內(nèi)部通信和協(xié)作。通信和協(xié)作。接口設(shè)計(jì)元素vUI設(shè)計(jì)是軟件工程的主要活動(dòng)。設(shè)計(jì)是軟件工程的主要活動(dòng)。UI活動(dòng)活動(dòng)包含美學(xué)元素(例如布局、顏色、圖形、包含美學(xué)元素(例如布局、顏色、圖形、交互機(jī)制)、人機(jī)工程元素(例如信息布交互機(jī)制)、人機(jī)工程元素(例如信息布局、隱喻、局、隱喻、UI導(dǎo)航)和技術(shù)元素(例如導(dǎo)航)和技術(shù)元素(例如UI模式、可復(fù)用構(gòu)件)。通常,模式、可復(fù)用構(gòu)件)。通常,UI是整個(gè)應(yīng)是整個(gè)應(yīng)用體系結(jié)構(gòu)內(nèi)獨(dú)一無(wú)二的系統(tǒng)。用體系結(jié)構(gòu)內(nèi)獨(dú)一無(wú)二的系統(tǒng)。接口設(shè)計(jì)元素v外部接口的設(shè)計(jì)需要關(guān)于發(fā)送和接收信息的實(shí)體外部接口的設(shè)計(jì)需要關(guān)于發(fā)送和接收信息的實(shí)體的確定信息。在各種情況下,這
56、些信息應(yīng)在需求的確定信息。在各種情況下,這些信息應(yīng)在需求工程中收集,并且一旦開始進(jìn)行接口設(shè)計(jì),還要工程中收集,并且一旦開始進(jìn)行接口設(shè)計(jì),還要檢驗(yàn)這些信息。外部接口設(shè)計(jì)應(yīng)包括錯(cuò)誤檢查和檢驗(yàn)這些信息。外部接口設(shè)計(jì)應(yīng)包括錯(cuò)誤檢查和適當(dāng)?shù)陌踩卣鳌_m當(dāng)?shù)陌踩卣鳌內(nèi)部接口的設(shè)計(jì)和構(gòu)件級(jí)的設(shè)計(jì)緊密相關(guān)。分析內(nèi)部接口的設(shè)計(jì)和構(gòu)件級(jí)的設(shè)計(jì)緊密相關(guān)。分析類的設(shè)計(jì)實(shí)現(xiàn)了包含如下內(nèi)容的方案:在各種類類的設(shè)計(jì)實(shí)現(xiàn)了包含如下內(nèi)容的方案:在各種類的運(yùn)作之間實(shí)現(xiàn)通信和協(xié)作所必需的所有操作和的運(yùn)作之間實(shí)現(xiàn)通信和協(xié)作所必需的所有操作和消息發(fā)送模式。每個(gè)消息的設(shè)計(jì)必須提供必不可消息發(fā)送模式。每個(gè)消息的設(shè)計(jì)必須提供必不可少的信
57、息傳遞和已被請(qǐng)求的操作的特定功能需求。少的信息傳遞和已被請(qǐng)求的操作的特定功能需求。接口設(shè)計(jì)元素v在有些情況下,接口建模的方式和類所用在有些情況下,接口建模的方式和類所用的方式幾乎一樣。的方式幾乎一樣。UML定義接口如下:定義接口如下:“接口是類、構(gòu)件或其他分類(包括子系接口是類、構(gòu)件或其他分類(包括子系統(tǒng))的外部可見的操作說(shuō)明,而沒(méi)有內(nèi)部統(tǒng))的外部可見的操作說(shuō)明,而沒(méi)有內(nèi)部結(jié)構(gòu)的規(guī)格說(shuō)明。結(jié)構(gòu)的規(guī)格說(shuō)明?!备?jiǎn)單地說(shuō),接口是更簡(jiǎn)單地說(shuō),接口是一組描述類的部分行為的操作,并提供了一組描述類的部分行為的操作,并提供了那些操作的訪問(wèn)方法。那些操作的訪問(wèn)方法。SAFEHOME實(shí)例27SAFEHOME實(shí)
58、例28圖8-5 ControlPanel的UML接口設(shè)計(jì)表示SAFEHOME實(shí)例29構(gòu)件級(jí)設(shè)計(jì)元素v軟件的構(gòu)件級(jí)設(shè)計(jì)完全類似于某個(gè)房屋中的一組軟件的構(gòu)件級(jí)設(shè)計(jì)完全類似于某個(gè)房屋中的一組詳細(xì)繪圖(以及規(guī)格說(shuō)明)。這些繪圖描繪了每詳細(xì)繪圖(以及規(guī)格說(shuō)明)。這些繪圖描繪了每個(gè)房間內(nèi)的布線和管道、電器插座和開關(guān)、水龍個(gè)房間內(nèi)的布線和管道、電器插座和開關(guān)、水龍頭、水池、浴室、浴盆、下水道、壁櫥和儲(chǔ)藏室頭、水池、浴室、浴盆、下水道、壁櫥和儲(chǔ)藏室的位置,還說(shuō)明了所使用的地板、裝飾以及和房的位置,還說(shuō)明了所使用的地板、裝飾以及和房間相關(guān)的任何細(xì)節(jié)。軟件的構(gòu)件級(jí)設(shè)計(jì)完整地描間相關(guān)的任何細(xì)節(jié)。軟件的構(gòu)件級(jí)設(shè)計(jì)完整
59、地描述了每個(gè)軟件構(gòu)件的內(nèi)部細(xì)節(jié)。為此,構(gòu)件級(jí)設(shè)述了每個(gè)軟件構(gòu)件的內(nèi)部細(xì)節(jié)。為此,構(gòu)件級(jí)設(shè)計(jì)為所有本地?cái)?shù)據(jù)對(duì)象定義數(shù)據(jù)結(jié)構(gòu),為所有在計(jì)為所有本地?cái)?shù)據(jù)對(duì)象定義數(shù)據(jù)結(jié)構(gòu),為所有在構(gòu)件內(nèi)發(fā)生的處理定義算法細(xì)節(jié),并定義允許訪構(gòu)件內(nèi)發(fā)生的處理定義算法細(xì)節(jié),并定義允許訪問(wèn)構(gòu)件操作(行為)的接口。問(wèn)構(gòu)件操作(行為)的接口。構(gòu)件級(jí)設(shè)計(jì)元素v在面向?qū)ο蟮能浖こ讨?,使用在面向?qū)ο蟮能浖こ讨?,使用UML圖表現(xiàn)的圖表現(xiàn)的構(gòu)件如圖構(gòu)件如圖8-6所示。圖中表示的構(gòu)件名為所示。圖中表示的構(gòu)件名為SensorManagement(SafeHome安全功能的安全功能的一部分一部分)。虛線箭頭連接了構(gòu)件和名為。虛線箭頭連接了構(gòu)
60、件和名為Sensor的的類。類。SensorManagement構(gòu)件完成所有和構(gòu)件完成所有和SafeHome傳感器相關(guān)的功能,包括監(jiān)測(cè)和配置傳感器相關(guān)的功能,包括監(jiān)測(cè)和配置傳感器。傳感器。v構(gòu)件的細(xì)節(jié)設(shè)計(jì)可以在很多不同的抽象級(jí)下建模。構(gòu)件的細(xì)節(jié)設(shè)計(jì)可以在很多不同的抽象級(jí)下建模?;顒?dòng)圖可以用于表示處理邏輯,構(gòu)件詳細(xì)的處理活動(dòng)圖可以用于表示處理邏輯,構(gòu)件詳細(xì)的處理流可以使用偽代碼表示,也可以使用一些圖形來(lái)流可以使用偽代碼表示,也可以使用一些圖形來(lái)表示。表示。SAFEHOME實(shí)例30圖8-6 SensorManagement的UML構(gòu)件圖部署級(jí)設(shè)計(jì)元素v部署級(jí)設(shè)計(jì)元素指明軟件功能和子系統(tǒng)將如何在支持
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電化學(xué)的基本原理與應(yīng)用試題及答案
- 小學(xué)教師專業(yè)成長(zhǎng)與教育教學(xué)反思試題及答案
- 最小的面試題及答案
- 貴州公務(wù)員考試行測(cè)真題
- 肺隔離癥相關(guān)試題及答案
- 家具行業(yè)的智造與品質(zhì)提升策略試題及答案
- 如何借助政策促進(jìn)個(gè)人創(chuàng)業(yè)發(fā)展試題及答案
- 有機(jī)化學(xué)反應(yīng)條件與環(huán)境關(guān)系試題及答案
- 打造高效課堂的小學(xué)教師反思試題及答案
- 教師反思與教育公平的實(shí)現(xiàn)路徑試題及答案
- 經(jīng)導(dǎo)管主動(dòng)脈瓣置換術(shù)(TAVR)患者的麻醉管理
- 2024-2030年中國(guó)預(yù)付卡和禮品卡行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 國(guó)能遼寧北票 200MW 風(fēng)力發(fā)電項(xiàng)目地質(zhì)災(zāi)害危險(xiǎn)性評(píng)估報(bào)告
- 《中電聯(lián)團(tuán)體標(biāo)準(zhǔn)-220kV變電站并聯(lián)直流電源系統(tǒng)技術(shù)規(guī)范》
- 橋梁博士畢業(yè)設(shè)計(jì)電子版
- MOOC 犯罪心理學(xué)-西南政法大學(xué) 中國(guó)大學(xué)慕課答案
- 家族信托與家族財(cái)富傳承
- 杭港地鐵施工培訓(xùn)課件
- 電能質(zhì)量技術(shù)監(jiān)督培訓(xùn)課件
- 豐富多彩的課間活動(dòng)課件
- 藍(lán)色卡通風(fēng)太陽(yáng)系八大行星知識(shí)天文知識(shí)科普宣傳
評(píng)論
0/150
提交評(píng)論