




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 軟件設(shè)計工程概述軟件設(shè)計工程概述 軟件設(shè)計原則軟件設(shè)計原則 軟件體系結(jié)構(gòu)設(shè)計軟件體系結(jié)構(gòu)設(shè)計 部件級設(shè)計技術(shù)部件級設(shè)計技術(shù) 設(shè)計規(guī)約與設(shè)計評審設(shè)計規(guī)約與設(shè)計評審2 軟件設(shè)計原則軟件設(shè)計原則 軟件體系結(jié)構(gòu)設(shè)計軟件體系結(jié)構(gòu)設(shè)計 部件級設(shè)計技術(shù)部件級設(shè)計技術(shù) 設(shè)計規(guī)約與設(shè)計評審設(shè)計規(guī)約與設(shè)計評審3 軟件需求分析解決軟件需求分析解決“做什么做什么”的問題,軟的問題,軟件設(shè)計過程則解決件設(shè)計過程則解決“怎么做怎么做”的問題的問題 ,是是需求分析轉(zhuǎn)化為實際的軟件系統(tǒng)最重要的需求分析轉(zhuǎn)化為實際的軟件系統(tǒng)最重要的環(huán)節(jié)環(huán)節(jié) 軟件設(shè)計是把軟件需求變換成軟件表示的軟件設(shè)計是把軟件需求變換成軟件表示的過程,它主要包
2、含兩個階段:過程,它主要包含兩個階段:軟件體系結(jié)軟件體系結(jié)構(gòu)設(shè)計階段構(gòu)設(shè)計階段和和部件級設(shè)計部件級設(shè)計 4 進行數(shù)據(jù)進行數(shù)據(jù)/類設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計、類設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計、部件級設(shè)計部件級設(shè)計 5 數(shù)據(jù)數(shù)據(jù)/類設(shè)計類設(shè)計:將需求變換成軟件實現(xiàn)所:將需求變換成軟件實現(xiàn)所需要的數(shù)據(jù)結(jié)構(gòu)需要的數(shù)據(jù)結(jié)構(gòu) 體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)設(shè)計:體系結(jié)構(gòu)設(shè)計定義了軟:體系結(jié)構(gòu)設(shè)計定義了軟件的整體結(jié)構(gòu)件的整體結(jié)構(gòu) 接口設(shè)計接口設(shè)計:接口設(shè)計描述了軟件內(nèi)部、:接口設(shè)計描述了軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件同人之間軟件和協(xié)作系統(tǒng)之間以及軟件同人之間如何通信如何通信 部件級設(shè)計部件級設(shè)計:部件級設(shè)計將軟
3、件體系結(jié):部件級設(shè)計將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性元素變換為對軟件部件的過構(gòu)的結(jié)構(gòu)性元素變換為對軟件部件的過程性描述程性描述6 數(shù)據(jù)數(shù)據(jù)/類設(shè)計轉(zhuǎn)換為相應(yīng)的類或者數(shù)據(jù)結(jié)構(gòu)的計類設(shè)計轉(zhuǎn)換為相應(yīng)的類或者數(shù)據(jù)結(jié)構(gòu)的計算機表示算機表示 體系結(jié)構(gòu)設(shè)計定義了軟件的整體結(jié)構(gòu)體系結(jié)構(gòu)設(shè)計定義了軟件的整體結(jié)構(gòu)7 接口設(shè)計主要包括三個方面:接口設(shè)計主要包括三個方面:設(shè)計軟件模塊間的接口設(shè)計軟件模塊間的接口設(shè)計模塊和其他非人的信息生產(chǎn)者設(shè)計模塊和其他非人的信息生產(chǎn)者和消費者和消費者(比如外部實體比如外部實體)之間的接之間的接口口設(shè)計人設(shè)計人(用戶用戶)和計算機間的接口和計算機間的接口 8 部件級設(shè)計將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性部
4、件級設(shè)計將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性元素變換為對軟件部件的過程性描述。元素變換為對軟件部件的過程性描述。9 在進行軟件設(shè)計的過程中,我們要密切關(guān)在進行軟件設(shè)計的過程中,我們要密切關(guān)注軟件的質(zhì)量因素。注軟件的質(zhì)量因素。 軟件設(shè)計過程的目標:軟件設(shè)計過程的目標: 1)設(shè)計必須實現(xiàn)分析模型中描述的所有顯式需設(shè)計必須實現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。求,必須滿足用戶希望的所有隱式需求。2)設(shè)計必須是可讀、可理解的,使得將來易于設(shè)計必須是可讀、可理解的,使得將來易于編程、易于測試、易于維護。編程、易于測試、易于維護。3)設(shè)計應(yīng)從實現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、設(shè)計應(yīng)從實現(xiàn)角度出
5、發(fā),給出與數(shù)據(jù)、功能、行為相關(guān)的軟件全貌。行為相關(guān)的軟件全貌。101)制定規(guī)范制定規(guī)范2)體系結(jié)構(gòu)和接口設(shè)計體系結(jié)構(gòu)和接口設(shè)計3)數(shù)據(jù)數(shù)據(jù)/類設(shè)計類設(shè)計4)部件級(過程)設(shè)計部件級(過程)設(shè)計5)編寫設(shè)計文檔編寫設(shè)計文檔6)設(shè)計評審設(shè)計評審11 軟件設(shè)計工程概述軟件設(shè)計工程概述 軟件體系結(jié)構(gòu)設(shè)計軟件體系結(jié)構(gòu)設(shè)計 部件級設(shè)計技術(shù)部件級設(shè)計技術(shù) 設(shè)計規(guī)約與設(shè)計評審設(shè)計規(guī)約與設(shè)計評審12 抽象抽象,是在軟件設(shè)計的規(guī)模逐漸增,是在軟件設(shè)計的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策大的情況下,控制復(fù)雜性的基本策略。略。 抽象的過程是從特殊到一般的過程,抽象的過程是從特殊到一般的過程,上層概念是下層概念的
6、抽象,下層上層概念是下層概念的抽象,下層概念是上層概念的精化和細化。概念是上層概念的精化和細化。 軟件工程過程的每一步都是對較高軟件工程過程的每一步都是對較高一級抽象的解作一次具體化的描述一級抽象的解作一次具體化的描述 13 逐步求精逐步求精,把問題的求解過程分解成若干,把問題的求解過程分解成若干步驟或階段,每步都比上步更精化,更接步驟或階段,每步都比上步更精化,更接近問題的解法近問題的解法 抽象抽象使得設(shè)計者能夠描述過程和數(shù)據(jù)而忽使得設(shè)計者能夠描述過程和數(shù)據(jù)而忽略低層的細節(jié),而求精有助于設(shè)計者在設(shè)略低層的細節(jié),而求精有助于設(shè)計者在設(shè)計過程中揭示低層的細節(jié)計過程中揭示低層的細節(jié) 14 模塊化模
7、塊化,即把軟件按照規(guī)定原則,劃分為,即把軟件按照規(guī)定原則,劃分為一個個較小的,相互獨立的但又相互關(guān)聯(lián)一個個較小的,相互獨立的但又相互關(guān)聯(lián)的部件,實際上是系統(tǒng)分解和抽象的過程。的部件,實際上是系統(tǒng)分解和抽象的過程。 模塊模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο笫菙?shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募希菃为毭?,并且可以通過的集合,它是單獨命名的,并且可以通過名字來訪問名字來訪問 例如,過程、函數(shù)、子程序等例如,過程、函數(shù)、子程序等 15 設(shè)設(shè)C(x)是描述問題是描述問題x 復(fù)雜性的函數(shù),復(fù)雜性的函數(shù),E(x)是解決問題是解決問題x 所需工作量所需工作量(按時間計算按時間計算)的的函數(shù)。對于兩個問
8、題函數(shù)。對于兩個問題p1 和和p2,如果,如果 C(p1)C(p2)(4.1a) 那么那么 E(p1)E(p2) (4.1b) 即問題越復(fù)雜,解決問題所需要的花費即問題越復(fù)雜,解決問題所需要的花費更多。更多。 16 通過對人解決問題的實驗,又存在另一個有趣通過對人解決問題的實驗,又存在另一個有趣的規(guī)律:的規(guī)律: C(p1p2)C(p1)C(p2) (4.2) 方程式方程式(4.2)意味著意味著p1 和和p2 組合后的復(fù)雜性組合后的復(fù)雜性比單獨考慮每個問題時的復(fù)雜性要大??紤]方比單獨考慮每個問題時的復(fù)雜性要大??紤]方程式程式(4.2)和方程式和方程式(4.1)隱含的條件,我們可隱含的條件,我們可
9、以得出以得出 E(p1p2) E(p1)E(p2) (4.3) 不等式不等式(4.3)表達出了一個對于模塊化和軟件表達出了一個對于模塊化和軟件具有十分重要意義的結(jié)論(即,模塊化的論具有十分重要意義的結(jié)論(即,模塊化的論據(jù)):將復(fù)雜問題分解成可以管理的片斷會更據(jù)):將復(fù)雜問題分解成可以管理的片斷會更使解決問題更加容易。使解決問題更加容易。 17 如果我們無限制地劃分軟件,開發(fā)它所需如果我們無限制地劃分軟件,開發(fā)它所需的工作量會變得小到可以忽略?!的工作量會變得小到可以忽略?! 事實上,影響軟件開發(fā)的工作量的因素還事實上,影響軟件開發(fā)的工作量的因素還有很多,例如模塊接口費用等等有很多,例如模塊接口
10、費用等等 上述不等式只能說明,當(dāng)模塊的總數(shù)增加上述不等式只能說明,當(dāng)模塊的總數(shù)增加時,單獨開發(fā)各個子模塊的工作量之和會時,單獨開發(fā)各個子模塊的工作量之和會有所減少有所減少 18復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院 軟件工程(第二版)軟件工程(第二版) 如果模塊是相互獨立的,當(dāng)模塊變得越如果模塊是相互獨立的,當(dāng)模塊變得越小,每個模塊花費的工作量越低;小,每個模塊花費的工作量越低; 但當(dāng)模塊數(shù)增加時,模塊間的聯(lián)系也隨但當(dāng)模塊數(shù)增加時,模塊間的聯(lián)系也隨之增加,把這些模塊聯(lián)接起來的工作量之增加,把這些模塊聯(lián)接起來的工作量也隨之增加。也隨之增加。 19 每個模塊的實現(xiàn)細節(jié)對于其它模塊來說
11、應(yīng)每個模塊的實現(xiàn)細節(jié)對于其它模塊來說應(yīng)該是隱蔽的該是隱蔽的 塊中所包含的信息(包括數(shù)據(jù)和過程)不塊中所包含的信息(包括數(shù)據(jù)和過程)不允許其它不需要這些信息的模塊使用允許其它不需要這些信息的模塊使用 通過通過信息隱蔽信息隱蔽,則可定義和實施對模塊的,則可定義和實施對模塊的過程細節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制過程細節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制 20 功能獨立功能獨立:功能獨立是模塊化、抽象、:功能獨立是模塊化、抽象、信息隱藏和局部化等概念的直接結(jié)果。信息隱藏和局部化等概念的直接結(jié)果。開發(fā)功能專一的且避免與其他模塊過多開發(fā)功能專一的且避免與其他模塊過多交互的的模塊可以實現(xiàn)功能獨立。交互的的模塊可以實現(xiàn)功能
12、獨立。 功能獨立的重要性功能獨立的重要性 功能被分隔且接口被簡化使得軟件更容易開功能被分隔且接口被簡化使得軟件更容易開發(fā)發(fā) 由于因修改設(shè)計或修改編碼引起的副作用被由于因修改設(shè)計或修改編碼引起的副作用被限制,減少了錯誤擴散,且模塊復(fù)用成為可限制,減少了錯誤擴散,且模塊復(fù)用成為可能,因而使得軟件更易于維護和測試。能,因而使得軟件更易于維護和測試。21 功能獨立性可以由兩項指標來衡量:功能獨立性可以由兩項指標來衡量:內(nèi)聚內(nèi)聚度度與與耦合度耦合度 內(nèi)聚(內(nèi)聚(cohesion)是一個模塊內(nèi)部各個元是一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量素彼此結(jié)合的緊密程度的度量 耦合耦合(coupling)是模
13、塊之間的相對獨立性是模塊之間的相對獨立性(互相連接的緊密程度)的度量(互相連接的緊密程度)的度量 22 一般模塊的內(nèi)聚性分為七種類型一般模塊的內(nèi)聚性分為七種類型 231) 巧合內(nèi)聚(偶然內(nèi)聚)巧合內(nèi)聚(偶然內(nèi)聚):將幾個模塊中沒有明:將幾個模塊中沒有明確表現(xiàn)出獨立功能的相同程序代碼段獨立出來確表現(xiàn)出獨立功能的相同程序代碼段獨立出來建立的模塊稱為巧合內(nèi)聚模塊。建立的模塊稱為巧合內(nèi)聚模塊。2) 邏輯內(nèi)聚邏輯內(nèi)聚 :指完成一組邏輯相關(guān)任務(wù)的模塊,:指完成一組邏輯相關(guān)任務(wù)的模塊,調(diào)用該模塊時,由傳送給模塊的控制型參數(shù)來調(diào)用該模塊時,由傳送給模塊的控制型參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。確定該模塊應(yīng)執(zhí)行
14、哪一種功能。3) 時間內(nèi)聚時間內(nèi)聚:指一個模塊中的所有任務(wù)必須在同:指一個模塊中的所有任務(wù)必須在同一時間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。一時間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。244) 過程內(nèi)聚過程內(nèi)聚 :指一個模塊完成多個任務(wù),這些:指一個模塊完成多個任務(wù),這些任務(wù)必須按指定的過程執(zhí)行。任務(wù)必須按指定的過程執(zhí)行。5) 通信內(nèi)聚通信內(nèi)聚 :指一個模塊內(nèi)所有處理元素都集:指一個模塊內(nèi)所有處理元素都集中在某個數(shù)據(jù)結(jié)構(gòu)的一塊區(qū)域中。中在某個數(shù)據(jù)結(jié)構(gòu)的一塊區(qū)域中。6) 順序內(nèi)聚順序內(nèi)聚:指一個模塊完成多個功能,這些功:指一個模塊完成多個功能,這些功能又必須順序執(zhí)行。能又必須順序執(zhí)行。7) 功能內(nèi)
15、聚功能內(nèi)聚 :指一個模塊中各個部分都是為完:指一個模塊中各個部分都是為完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。分割的。25 一般模塊之間可能的耦合方式有七種類型一般模塊之間可能的耦合方式有七種類型 261)內(nèi)容耦合內(nèi)容耦合 :如果一個模塊直接訪問另一個模塊的內(nèi)部:如果一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù);或者一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;數(shù)據(jù);或者一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;或者兩個模塊有一部分程序代碼重迭;或者一個模塊有或者兩個模塊有一部分程序代碼重迭;或者一個模塊有多個入口,則兩個模塊之間就發(fā)生了內(nèi)容耦合。多個入口,則
16、兩個模塊之間就發(fā)生了內(nèi)容耦合。2)公共耦合公共耦合 :若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,:若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)以是全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。等。3)外部耦合外部耦合 :指模塊間通過軟件之外的環(huán)境聯(lián)結(jié)(如:指模塊間通過軟件之外的環(huán)境聯(lián)結(jié)(如I/O將模塊耦合到特定的設(shè)備、格式、通信協(xié)議上)時,將模塊耦合到特定的設(shè)備、格式、通信協(xié)議上)時,稱為外部耦合。稱為外部耦合。274) 控制耦合控制耦合:如果一個模塊傳送給另一個
17、模塊的:如果一個模塊傳送給另一個模塊的參數(shù)中包含了控制信息,該控制信息用于控制參數(shù)中包含了控制信息,該控制信息用于控制接收模塊中的執(zhí)行邏輯,則稱為控制耦合。接收模塊中的執(zhí)行邏輯,則稱為控制耦合。5) 標記耦合標記耦合:兩個模塊之間通過參數(shù)表傳遞一個:兩個模塊之間通過參數(shù)表傳遞一個數(shù)據(jù)結(jié)構(gòu)的一部分(如某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)數(shù)據(jù)結(jié)構(gòu)的一部分(如某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)),就是標記耦合。構(gòu)),就是標記耦合。6) 數(shù)據(jù)耦合數(shù)據(jù)耦合:兩個模塊之間僅通過參數(shù)表傳遞簡:兩個模塊之間僅通過參數(shù)表傳遞簡單數(shù)據(jù),則稱為數(shù)據(jù)耦合。單數(shù)據(jù),則稱為數(shù)據(jù)耦合。7) 非直接耦合非直接耦合 :如果兩個模塊之間沒有直接關(guān):如果兩個模塊
18、之間沒有直接關(guān)系,即它們中的任何一個都不依賴于另一個而系,即它們中的任何一個都不依賴于另一個而能獨立工作,這種耦合稱為非直接耦合。能獨立工作,這種耦合稱為非直接耦合。28 模塊之間的連接越緊密,聯(lián)系越多,耦模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其功能獨立性就越弱合性就越高,而其功能獨立性就越弱 一個模塊內(nèi)部各個元素之間的聯(lián)系越緊一個模塊內(nèi)部各個元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高密,則它的內(nèi)聚性就越高 功能獨立性比較強的模塊應(yīng)是功能獨立性比較強的模塊應(yīng)是高高內(nèi)聚低耦合內(nèi)聚低耦合的模塊的模塊 29 軟件設(shè)計工程概述軟件設(shè)計工程概述 軟件設(shè)計原則軟件設(shè)計原則 部件級設(shè)計技術(shù)部件級設(shè)計
19、技術(shù) 設(shè)計規(guī)約與設(shè)計評審設(shè)計規(guī)約與設(shè)計評審30 軟件體系結(jié)構(gòu)關(guān)注系統(tǒng)的一個或多個結(jié)構(gòu),軟件體系結(jié)構(gòu)關(guān)注系統(tǒng)的一個或多個結(jié)構(gòu),包含軟件構(gòu)件、這些構(gòu)件的對外可見的性包含軟件構(gòu)件、這些構(gòu)件的對外可見的性質(zhì)以及它們之間的關(guān)系質(zhì)以及它們之間的關(guān)系 31 常見的軟件體系結(jié)構(gòu)常見的軟件體系結(jié)構(gòu)單主機結(jié)構(gòu)單主機結(jié)構(gòu)C/S(Client/Server)結(jié)構(gòu))結(jié)構(gòu)B/S(Browser/Server)結(jié)構(gòu))結(jié)構(gòu) 32 一些數(shù)據(jù)(比如一個文件或者數(shù)據(jù)庫)保一些數(shù)據(jù)(比如一個文件或者數(shù)據(jù)庫)保存在整個結(jié)構(gòu)的中心,并且被其他部件頻存在整個結(jié)構(gòu)的中心,并且被其他部件頻繁地使用、添加、刪除、或者修改繁地使用、添加、刪除、或
20、者修改 33 (1)需求分析:分析用戶的需求,包括)需求分析:分析用戶的需求,包括數(shù)據(jù)、功能和性能需求;數(shù)據(jù)、功能和性能需求;(2)概念結(jié)構(gòu)設(shè)計:轉(zhuǎn)換成)概念結(jié)構(gòu)設(shè)計:轉(zhuǎn)換成E-R圖;圖;(3)邏輯結(jié)構(gòu)設(shè)計:通過將)邏輯結(jié)構(gòu)設(shè)計:通過將E-R圖轉(zhuǎn)換圖轉(zhuǎn)換成表,實現(xiàn)從成表,實現(xiàn)從E-R模型到關(guān)系模型的轉(zhuǎn)換;模型到關(guān)系模型的轉(zhuǎn)換;(4)數(shù)據(jù)庫物理設(shè)計:主要是為所設(shè)計)數(shù)據(jù)庫物理設(shè)計:主要是為所設(shè)計的數(shù)據(jù)庫選擇合適的存儲結(jié)構(gòu)和存取路徑;的數(shù)據(jù)庫選擇合適的存儲結(jié)構(gòu)和存取路徑;34 這種結(jié)構(gòu)適用于輸入數(shù)據(jù)被一系列的計算這種結(jié)構(gòu)適用于輸入數(shù)據(jù)被一系列的計算或者處理部件變換成輸出數(shù)據(jù)?;蛘咛幚聿考儞Q成輸出
21、數(shù)據(jù)。35 這種風(fēng)格使一個軟件設(shè)計者設(shè)計出非常容這種風(fēng)格使一個軟件設(shè)計者設(shè)計出非常容易修改和擴充的體系結(jié)構(gòu)。易修改和擴充的體系結(jié)構(gòu)。 包含:主程序包含:主程序/子程序風(fēng)格體系結(jié)構(gòu)和遠子程序風(fēng)格體系結(jié)構(gòu)和遠程過程調(diào)用風(fēng)格的體系結(jié)構(gòu)程過程調(diào)用風(fēng)格的體系結(jié)構(gòu) 36 在這里要了解幾個概念:在這里要了解幾個概念: 程序結(jié)構(gòu)的深度程序結(jié)構(gòu)的深度:程序結(jié)構(gòu)的層次數(shù)稱為結(jié):程序結(jié)構(gòu)的層次數(shù)稱為結(jié)構(gòu)的深度。結(jié)構(gòu)的深度在一定意義上反映了構(gòu)的深度。結(jié)構(gòu)的深度在一定意義上反映了程序結(jié)構(gòu)的規(guī)模和復(fù)雜程度。程序結(jié)構(gòu)的規(guī)模和復(fù)雜程度。 程序結(jié)構(gòu)的寬度程序結(jié)構(gòu)的寬度:層次結(jié)構(gòu)中同一層模塊的:層次結(jié)構(gòu)中同一層模塊的最大模塊個數(shù)
22、稱為結(jié)構(gòu)的寬度。最大模塊個數(shù)稱為結(jié)構(gòu)的寬度。 模塊的扇入和扇出模塊的扇入和扇出:扇出表示一個模塊直接:扇出表示一個模塊直接調(diào)用(或控制)的其它模塊數(shù)目。扇入則定調(diào)用(或控制)的其它模塊數(shù)目。扇入則定義為調(diào)用(或控制)一個給定模塊的模塊個義為調(diào)用(或控制)一個給定模塊的模塊個數(shù)。多扇出意味著需要控制和協(xié)調(diào)許多下屬數(shù)。多扇出意味著需要控制和協(xié)調(diào)許多下屬模塊。而多扇入的模塊通常是公用模塊。模塊。而多扇入的模塊通常是公用模塊。37 系統(tǒng)部件封裝數(shù)據(jù)和操作數(shù)據(jù)的系統(tǒng)部件封裝數(shù)據(jù)和操作數(shù)據(jù)的方法。方法。 部件之間的交互和協(xié)調(diào)通過消息部件之間的交互和協(xié)調(diào)通過消息來傳遞。來傳遞。 38 在這種結(jié)構(gòu)中,定義不同
23、的層次,每層都在這種結(jié)構(gòu)中,定義不同的層次,每層都完成了相對外層更靠近機器指令的操作完成了相對外層更靠近機器指令的操作39 對于同一個軟件需求,由于各種設(shè)計方法對于同一個軟件需求,由于各種設(shè)計方法的原理不同,會導(dǎo)出不同的軟件結(jié)構(gòu)。的原理不同,會導(dǎo)出不同的軟件結(jié)構(gòu)。 同一問題的不同軟件結(jié)構(gòu):同一問題的不同軟件結(jié)構(gòu):40 在進行軟件體系結(jié)構(gòu)設(shè)計時,可以參考如下規(guī)在進行軟件體系結(jié)構(gòu)設(shè)計時,可以參考如下規(guī)則:則: (1) 改進軟件結(jié)構(gòu)提高模塊獨立性改進軟件結(jié)構(gòu)提高模塊獨立性(2) 模塊適當(dāng)?shù)纳疃?、寬度、扇出和扇入模塊適當(dāng)?shù)纳疃?、寬度、扇出和扇?3) 模塊判斷作用范圍應(yīng)在其控制作用范圍內(nèi)模塊判斷作用范
24、圍應(yīng)在其控制作用范圍內(nèi)(4) 力爭降低模塊接口的復(fù)雜度力爭降低模塊接口的復(fù)雜度(5) 設(shè)計單入口單出口的模塊設(shè)計單入口單出口的模塊(6) 模塊功能應(yīng)該是可以預(yù)測的模塊大小適中模塊功能應(yīng)該是可以預(yù)測的模塊大小適中(7) 一般一個模塊包含的語句在一般一個模塊包含的語句在3050條左右較好。條左右較好。(8) 一個設(shè)計好的軟件結(jié)構(gòu),通常頂層扇出比較高,一個設(shè)計好的軟件結(jié)構(gòu),通常頂層扇出比較高,中層扇出比較少,底層有高扇入。中層扇出比較少,底層有高扇入。41 軟件設(shè)計工程概述軟件設(shè)計工程概述 軟件設(shè)計原則軟件設(shè)計原則 軟件體系結(jié)構(gòu)設(shè)計軟件體系結(jié)構(gòu)設(shè)計 設(shè)計規(guī)約與設(shè)計評審設(shè)計規(guī)約與設(shè)計評審42 在結(jié)構(gòu)化
25、分析和設(shè)計方法時部件往往被稱在結(jié)構(gòu)化分析和設(shè)計方法時部件往往被稱為為模塊模塊 在面向?qū)ο蠓治龊驮O(shè)計時部件被稱為類,在面向?qū)ο蠓治龊驮O(shè)計時部件被稱為類,在基于構(gòu)件的開發(fā)方法中,部件被稱為在基于構(gòu)件的開發(fā)方法中,部件被稱為構(gòu)構(gòu)件件。 43在部件級設(shè)計階段,主要完成如下工作:在部件級設(shè)計階段,主要完成如下工作:為每個部件確定采用的算法,選擇某種適為每個部件確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_算法的過程,編寫部件的詳當(dāng)?shù)墓ぞ弑磉_算法的過程,編寫部件的詳細過程性描述;細過程性描述; 確定每一部件內(nèi)部使用的數(shù)據(jù)結(jié)構(gòu);確定每一部件內(nèi)部使用的數(shù)據(jù)結(jié)構(gòu); (1) 在部件級設(shè)計結(jié)束時,應(yīng)該把上述結(jié)果寫在部件級設(shè)
26、計結(jié)束時,應(yīng)該把上述結(jié)果寫入部件級設(shè)計說明書,并且通過復(fù)審形成入部件級設(shè)計說明書,并且通過復(fù)審形成正式文檔,作為下一階段(編碼階段)的正式文檔,作為下一階段(編碼階段)的工作依據(jù)。工作依據(jù)。 44 一種較為流行的定義是:一種較為流行的定義是:“如果一個程序如果一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu)進行連結(jié),并且每個代碼種基本控制結(jié)構(gòu)進行連結(jié),并且每個代碼塊只有一個入口和一個出口,則稱這個程塊只有一個入口和一個出口,則稱這個程序是結(jié)構(gòu)化的序是結(jié)構(gòu)化的”。 隨著面向?qū)ο蠛蛙浖?fù)用等新的軟件開發(fā)隨著面向?qū)ο蠛蛙浖?fù)用等新的軟件開發(fā)方法和技術(shù)的發(fā)
27、展,更現(xiàn)實、更有效的開方法和技術(shù)的發(fā)展,更現(xiàn)實、更有效的開發(fā)途徑可能是自頂向下和自底向上兩種方發(fā)途徑可能是自頂向下和自底向上兩種方法有機的結(jié)合。法有機的結(jié)合。 45 程序流程圖程序流程圖 N-S圖圖 PAD 46復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院 軟件工程(第二版)軟件工程(第二版) 程序流程圖獨立于任何一種程序設(shè)計語言,程序流程圖獨立于任何一種程序設(shè)計語言,比較直觀、清晰、易于學(xué)習(xí)掌握比較直觀、清晰、易于學(xué)習(xí)掌握 為使用流程圖描述結(jié)構(gòu)化程序,必須限制為使用流程圖描述結(jié)構(gòu)化程序,必須限制流程圖只能使用五種基本控制結(jié)構(gòu)流程圖只能使用五種基本控制結(jié)構(gòu) 4748 Nassi和和Sh
28、neiderman 提出了一種符合提出了一種符合結(jié)構(gòu)化程序設(shè)計原則的圖形描述工具,叫結(jié)構(gòu)化程序設(shè)計原則的圖形描述工具,叫做盒圖,也叫做做盒圖,也叫做N-S圖圖 五種基本控制結(jié)構(gòu)五種基本控制結(jié)構(gòu) 4950 PAD是是Problem Analysis Diagram的縮的縮寫寫 ,由程序流程圖演化而來,由程序流程圖演化而來 五種基本控制結(jié)構(gòu)五種基本控制結(jié)構(gòu) 5152 當(dāng)算法中包含多重嵌套的條件選擇時,用當(dāng)算法中包含多重嵌套的條件選擇時,用程序流程圖、程序流程圖、N-S圖或圖或PAD都不易清楚地都不易清楚地描述。描述。 然而,然而,判定表判定表卻能清晰地表達復(fù)雜的條件卻能清晰地表達復(fù)雜的條件組合與應(yīng)
29、做動作之間的對應(yīng)關(guān)系。組合與應(yīng)做動作之間的對應(yīng)關(guān)系。 圖圖4-11的例子的例子 ,把多分支判斷改為兩分,把多分支判斷改為兩分支判斷支判斷 535455 判定表的優(yōu)點是能夠簡潔,無二義性地判定表的優(yōu)點是能夠簡潔,無二義性地描述所有的處理規(guī)則。描述所有的處理規(guī)則。 但判定表表示的是靜態(tài)邏輯,是在某種但判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結(jié)果,它不條件取值組合情況下可能的結(jié)果,它不能表達加工的順序,也不能表達循環(huán)結(jié)能表達加工的順序,也不能表達循環(huán)結(jié)構(gòu)構(gòu) 56 PDL(Program Design Language)是是一種用于描述功能部件的算法設(shè)計和處一種用于描述功能部件的算法設(shè)
30、計和處理細節(jié)的語言,稱為理細節(jié)的語言,稱為設(shè)計性語言設(shè)計性語言。 它是一種偽碼。一般地,偽碼的語法規(guī)它是一種偽碼。一般地,偽碼的語法規(guī)則分為則分為“外語法外語法”和和“內(nèi)語法內(nèi)語法” 外語法應(yīng)當(dāng)符合一般程序設(shè)計語言常用語句外語法應(yīng)當(dāng)符合一般程序設(shè)計語言常用語句的語法規(guī)則;的語法規(guī)則; 內(nèi)語法可以用英語中一些簡單的句子、短語內(nèi)語法可以用英語中一些簡單的句子、短語和通用的數(shù)學(xué)符號,來描述程序應(yīng)執(zhí)行的功和通用的數(shù)學(xué)符號,來描述程序應(yīng)執(zhí)行的功能能 57 PROCEDURE spellcheck IS 查找錯拼的單詞查找錯拼的單詞 BEGIN split document into single wor
31、ds 把整個文檔分離成單詞把整個文檔分離成單詞 lood up words in dictionary 在字典中查這些單詞在字典中查這些單詞 display words which are not in dictionary 顯示字典中查不到的單詞顯示字典中查不到的單詞 create a new dictionary 造一新字典造一新字典END spellcheck581.有固定的關(guān)鍵字外語法,提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)有固定的關(guān)鍵字外語法,提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和部件特征。屬于外語法的關(guān)鍵字是有限的詞匯據(jù)說明和部件特征。屬于外語法的關(guān)鍵字是有限的詞匯集,它們能對集,它們能對PDL正
32、文進行結(jié)構(gòu)分割,使之變得易于理正文進行結(jié)構(gòu)分割,使之變得易于理解。為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞解。為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫。一律小寫。2.內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。主要精力放在描述算法的邏輯上。3.有數(shù)據(jù)說明機制,包括簡單的(如標量和數(shù)組)與復(fù)雜有數(shù)據(jù)說明機制,包括簡單的(如標量和數(shù)組)與復(fù)雜的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)
33、結(jié)構(gòu)。4.有子程序定義與調(diào)用機制,用以表達各種方式的接口說有子程序定義與調(diào)用機制,用以表達各種方式的接口說明。明。59 軟件設(shè)計工程概述軟件設(shè)計工程概述 軟件設(shè)計原則軟件設(shè)計原則 軟件體系結(jié)構(gòu)設(shè)計軟件體系結(jié)構(gòu)設(shè)計 部件級設(shè)計技術(shù)部件級設(shè)計技術(shù) 60. 工作范圍工作范圍A. 系統(tǒng)目標系統(tǒng)目標 B. 運行環(huán)境運行環(huán)境C. 主要軟件需求主要軟件需求D. 設(shè)計約束設(shè)計約束限制限制. 體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)設(shè)計A. 數(shù)據(jù)流與控制流復(fù)審數(shù)據(jù)流與控制流復(fù)審 B. 導(dǎo)出的程序結(jié)構(gòu)導(dǎo)出的程序結(jié)構(gòu)C. 功能與程序交叉索引功能與程序交叉索引 . 數(shù)據(jù)設(shè)計數(shù)據(jù)設(shè)計A. 數(shù)據(jù)對象與形成的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)對象與形成的數(shù)據(jù)結(jié)構(gòu)
34、B. 文件和數(shù)據(jù)庫結(jié)構(gòu)文件和數(shù)據(jù)庫結(jié)構(gòu) 文件的邏輯結(jié)構(gòu)文件的邏輯結(jié)構(gòu) 文件邏輯記錄描述文件邏輯記錄描述 訪問方式訪問方式 C. 全局數(shù)據(jù)全局數(shù)據(jù)D. 文件文件數(shù)據(jù)與程序交叉索引數(shù)據(jù)與程序交叉索引 . 接口設(shè)計接口設(shè)計A. 人機界面規(guī)格說明人機界面規(guī)格說明 B. 人機界面設(shè)計規(guī)則人機界面設(shè)計規(guī)則 C. 外部接口設(shè)計外部接口設(shè)計 外部數(shù)據(jù)接口外部數(shù)據(jù)接口 外部系統(tǒng)或設(shè)備接口外部系統(tǒng)或設(shè)備接口 D. 內(nèi)部接口設(shè)計規(guī)則內(nèi)部接口設(shè)計規(guī)則61.各部件的過程設(shè)計各部件的過程設(shè)計A. 處理與算法描述處理與算法描述 B. 接口描述接口描述C. 設(shè)計語言設(shè)計語言(或其它或其它)描述描述D. 使用的部件使用的部件E. 內(nèi)部程序邏輯描述內(nèi)部程序邏輯描述F. 注釋注釋約束約束限制限制 . 運行設(shè)計運行設(shè)計A. 運行部件組合運行部件組合 B. 運行控制規(guī)則運行控制規(guī)則C. 運行時間安排運行時間安排. 出錯處理設(shè)計出錯處理設(shè)計A. 出錯處理信息出錯處理信息 B. 出錯處理對策出錯處理對策 設(shè)置后備設(shè)置后備 性能降級性能降級 恢復(fù)和再啟動恢復(fù)和再啟動. 安全保密設(shè)計安全保密設(shè)計. 需求需求設(shè)計交叉索引設(shè)計交叉索引. 測試部分測試部分A.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 不動產(chǎn)房產(chǎn)自愿贈與合同
- 黃金外匯投資操盤合作合同范本
- 二零二五年度解除食品加工解除供貨合同協(xié)議
- 二零二五年度交通信息屏安裝與數(shù)據(jù)服務(wù)合同
- 2025年度車輛抵押權(quán)糾紛仲裁合同
- 二零二五年度租賃房屋租賃押金退還合同
- 二零二五年度退房合同續(xù)租意向協(xié)議
- 2025年中空纖維分離膜項目經(jīng)濟效益評估報告
- 2025年企業(yè)管理服務(wù)項目經(jīng)濟效益評估報告
- 【建設(shè)工程施工合同】建筑裝飾工程施工合同6篇
- 貴州省2025年初中學(xué)業(yè)水平考試英語模擬練習(xí)卷(含答案含聽力二維碼無音頻及原文)
- 2025年溫州市圖盛供電服務(wù)有限公司招聘筆試參考題庫含答案解析
- 尼康D3200中文說明書(完整版)
- 文明施工、環(huán)境保護管理體系與措施
- 應(yīng)急物資倉儲管理與調(diào)度
- 梁寧產(chǎn)品經(jīng)理思維30講知識講稿
- 2024年新疆生產(chǎn)建設(shè)兵團興新職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 西學(xué)中培訓(xùn)基地結(jié)業(yè)考試試題
- 2024年醫(yī)師定考題庫匯編
- 2024 大模型典型示范應(yīng)用案例集-2
- 中央空調(diào)改造項目施工方案
評論
0/150
提交評論