版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、125.15.1 設(shè)計(jì)過程設(shè)計(jì)過程5.2 5.2 設(shè)計(jì)原理設(shè)計(jì)原理5.3 5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則5.4 5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具5.5 5.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法5.6 5.6 小結(jié)小結(jié)3總體設(shè)計(jì)總體設(shè)計(jì)又稱為概要設(shè)計(jì)、初步設(shè)計(jì)又稱為概要設(shè)計(jì)、初步設(shè)計(jì)基本目的:基本目的:系統(tǒng)應(yīng)該如何實(shí)現(xiàn)系統(tǒng)應(yīng)該如何實(shí)現(xiàn)劃分出組成系統(tǒng)的物理元素劃分出組成系統(tǒng)的物理元素程序、文件、數(shù)程序、文件、數(shù)據(jù)庫、人工過程和文檔等,每個(gè)物理元素仍然處于據(jù)庫、人工過程和文檔等,每個(gè)物理元素仍然處于黑盒子級黑盒子級設(shè)計(jì)軟件的結(jié)構(gòu),確定系統(tǒng)中每個(gè)程序是由哪些設(shè)計(jì)軟件的結(jié)構(gòu),確定系
2、統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。模塊組成的,以及這些模塊相互間的關(guān)系。4站在全局高度上,花較少成本,從較抽象的層次上站在全局高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從分析對比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。尋找實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案尋找實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案從若干個(gè)合理的方案中選取最佳方案從若干個(gè)合理的方案中選取最佳方案設(shè)計(jì)軟件結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu)進(jìn)行必要的數(shù)據(jù)庫設(shè)計(jì)進(jìn)行必
3、要的數(shù)據(jù)庫設(shè)計(jì)確定測試要求并且制定測試計(jì)劃確定測試要求并且制定測試計(jì)劃51.設(shè)想供選擇的方案設(shè)想供選擇的方案 在數(shù)據(jù)流圖的基礎(chǔ)上,考慮各種可能的實(shí)在數(shù)據(jù)流圖的基礎(chǔ)上,考慮各種可能的實(shí)現(xiàn)方案?,F(xiàn)方案。 一種常用的方法是,設(shè)想把數(shù)據(jù)流圖中的一種常用的方法是,設(shè)想把數(shù)據(jù)流圖中的處理分組的各種可能的方法,拋棄在技術(shù)處理分組的各種可能的方法,拋棄在技術(shù)上行不通的分組方法,余下的分組方法代上行不通的分組方法,余下的分組方法代表可能的實(shí)現(xiàn)策略。表可能的實(shí)現(xiàn)策略。5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程62、選取合理的方案、選取合理的方案從上一步得到的一系列供選擇的方案中選取若干個(gè)合從上一步得到的一系列供選擇的方案中
4、選取若干個(gè)合理的方案,通常,考慮的這些方案中至少應(yīng)包括低成本、理的方案,通常,考慮的這些方案中至少應(yīng)包括低成本、中成本和高成本的三種方案類型。中成本和高成本的三種方案類型。對每個(gè)合理方案要提供以下幾方面資料:對每個(gè)合理方案要提供以下幾方面資料: (1)系統(tǒng)流程圖;)系統(tǒng)流程圖; (2)數(shù)據(jù)字典;)數(shù)據(jù)字典; (3)成本效益分析;)成本效益分析; (4)實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。)實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程7 根據(jù)系統(tǒng)分析確定的目標(biāo),來判斷哪些方根據(jù)系統(tǒng)分析確定的目標(biāo),來判斷哪些方案是合理的。案是合理的。 在判斷哪些方案合理時(shí)應(yīng)該考慮在問題定在判斷哪些方案合理時(shí)應(yīng)該考
5、慮在問題定義和可行性研究階段確定的工程規(guī)模和目義和可行性研究階段確定的工程規(guī)模和目標(biāo),有時(shí)可能還需要進(jìn)一步征求用戶的意標(biāo),有時(shí)可能還需要進(jìn)一步征求用戶的意見。見。5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程83.推薦最佳方案推薦最佳方案 綜合分析對比各種合理方案的利弊,推薦綜合分析對比各種合理方案的利弊,推薦一個(gè)最佳的方案,并為最佳方案制定詳細(xì)一個(gè)最佳的方案,并為最佳方案制定詳細(xì)的實(shí)現(xiàn)計(jì)劃。的實(shí)現(xiàn)計(jì)劃。5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程9 4.功能分解功能分解 為了最終實(shí)現(xiàn)目標(biāo)系統(tǒng),必須設(shè)計(jì)出組成這個(gè)系統(tǒng)的所為了最終實(shí)現(xiàn)目標(biāo)系統(tǒng),必須設(shè)計(jì)出組成這個(gè)系統(tǒng)的所有程序和文件(或數(shù)據(jù)庫)。有程序和文件(或數(shù)據(jù)庫)。
6、 對于大型程序的設(shè)計(jì),通常分為兩個(gè)階段:結(jié)構(gòu)設(shè)計(jì)和對于大型程序的設(shè)計(jì),通常分為兩個(gè)階段:結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。過程設(shè)計(jì)。 結(jié)構(gòu)設(shè)計(jì):結(jié)構(gòu)設(shè)計(jì):確定程序由哪些模塊組成,以及這些模塊之確定程序由哪些模塊組成,以及這些模塊之間的相互關(guān)系。間的相互關(guān)系。 過程設(shè)計(jì):過程設(shè)計(jì):確定每個(gè)模塊的處理過程。確定每個(gè)模塊的處理過程。 其中,結(jié)構(gòu)設(shè)計(jì)是其中,結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)總體設(shè)計(jì)階段的任務(wù),而過程設(shè)計(jì)則階段的任務(wù),而過程設(shè)計(jì)則是詳細(xì)設(shè)計(jì)階段的任務(wù)。是詳細(xì)設(shè)計(jì)階段的任務(wù)。5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程10 對數(shù)據(jù)流圖進(jìn)一步細(xì)化,進(jìn)行功能分解對數(shù)據(jù)流圖進(jìn)一步細(xì)化,進(jìn)行功能分解5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程115
7、.設(shè)計(jì)軟件結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu) 軟件結(jié)構(gòu)反映系統(tǒng)中模塊的相互調(diào)用關(guān)系:頂軟件結(jié)構(gòu)反映系統(tǒng)中模塊的相互調(diào)用關(guān)系:頂層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功能,每個(gè)下層模塊再調(diào)用更下層的模塊,最下能,每個(gè)下層模塊再調(diào)用更下層的模塊,最下層的模塊完成最具體的功能。層的模塊完成最具體的功能。 軟件結(jié)構(gòu)通過層次圖或結(jié)構(gòu)圖來描繪,可以直軟件結(jié)構(gòu)通過層次圖或結(jié)構(gòu)圖來描繪,可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程126.數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì) 數(shù)據(jù)庫的應(yīng)用越來越廣泛,目前大多數(shù)的數(shù)據(jù)庫的應(yīng)用越來越廣泛,目前大多數(shù)的系統(tǒng)都要
8、用到數(shù)據(jù)庫技術(shù)。系統(tǒng)都要用到數(shù)據(jù)庫技術(shù)。 數(shù)據(jù)庫設(shè)計(jì)是一項(xiàng)專門的技術(shù),包括數(shù)據(jù)庫設(shè)計(jì)是一項(xiàng)專門的技術(shù),包括模式模式設(shè)計(jì)、子模式設(shè)計(jì)、完整性和安全性設(shè)計(jì)和優(yōu)設(shè)計(jì)、子模式設(shè)計(jì)、完整性和安全性設(shè)計(jì)和優(yōu)化處理化處理等。等。 5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程137.制定測試計(jì)劃制定測試計(jì)劃 在軟件開發(fā)的早期階段提前考慮軟件的測在軟件開發(fā)的早期階段提前考慮軟件的測試計(jì)劃是很有必要的。這樣能促使軟件設(shè)計(jì)人試計(jì)劃是很有必要的。這樣能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意到軟件的測試問題,從而有利員在設(shè)計(jì)時(shí)注意到軟件的測試問題,從而有利于提高軟件的可測試性。于提高軟件的可測試性。 5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程148.
9、書寫文檔書寫文檔文檔包括:文檔包括: 系統(tǒng)說明系統(tǒng)說明 用戶手冊用戶手冊 測試計(jì)劃測試計(jì)劃 詳細(xì)的實(shí)現(xiàn)計(jì)劃詳細(xì)的實(shí)現(xiàn)計(jì)劃 數(shù)據(jù)庫設(shè)計(jì)結(jié)果數(shù)據(jù)庫設(shè)計(jì)結(jié)果5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程159.審查和復(fù)審審查和復(fù)審 先技術(shù)審查先技術(shù)審查 后管理審查后管理審查5.1 5.1 設(shè)計(jì)過程設(shè)計(jì)過程16軟件設(shè)計(jì)準(zhǔn)則軟件設(shè)計(jì)準(zhǔn)則5.2 5.2 軟件設(shè)計(jì)準(zhǔn)則軟件設(shè)計(jì)準(zhǔn)則171. 1. 模塊化模塊化 模塊模塊是由邊界元素限定的相鄰的程序元素(是由邊界元素限定的相鄰的程序元素(例如,數(shù)據(jù)說明,可執(zhí)行的語句)的序列,而且例如,數(shù)據(jù)說明,可執(zhí)行的語句)的序列,而且有一個(gè)總體標(biāo)識符來代表它。有一個(gè)總體標(biāo)識符來代表它。 模
10、塊化模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)子功能,把這些訪問的模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功模塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求。能滿足用戶的需求。模塊化與模塊獨(dú)立模塊化與模塊獨(dú)立18 當(dāng)模塊數(shù)目增加時(shí)每當(dāng)模塊數(shù)目增加時(shí)每個(gè)模塊的規(guī)模將減小,開個(gè)模塊的規(guī)模將減小,開發(fā)單個(gè)模塊需要的成本發(fā)單個(gè)模塊需要的成本(工作量)確實(shí)減少了;(工作量)確實(shí)減少了;但是,隨著模塊數(shù)目增加,但是,隨著模塊數(shù)目增加,設(shè)計(jì)模塊間接口所需要的設(shè)計(jì)模塊間接口所需要的工作量也將增加。每個(gè)程工作量
11、也將增加。每個(gè)程序都相應(yīng)地有一個(gè)最序都相應(yīng)地有一個(gè)最適當(dāng)適當(dāng)?shù)哪K數(shù)目的模塊數(shù)目M M,使得系統(tǒng),使得系統(tǒng)的開發(fā)成本最小。的開發(fā)成本最小。圖5.1 模塊化和軟件成本的關(guān)系模塊化與模塊獨(dú)立模塊化與模塊獨(dú)立19采用模塊化原理的優(yōu)點(diǎn)采用模塊化原理的優(yōu)點(diǎn)n使軟件結(jié)構(gòu)清晰,容易設(shè)計(jì)、容易閱讀和理解。使軟件結(jié)構(gòu)清晰,容易設(shè)計(jì)、容易閱讀和理解。n使軟件容易測試和調(diào)試,從而提高軟件的可靠性。使軟件容易測試和調(diào)試,從而提高軟件的可靠性。n能夠提高軟件的可修改性。能夠提高軟件的可修改性。n有助于軟件開發(fā)工程的組織管理。有助于軟件開發(fā)工程的組織管理。20 人們在實(shí)踐中認(rèn)識到,在現(xiàn)實(shí)世界中一人們在實(shí)踐中認(rèn)識到,在現(xiàn)實(shí)
12、世界中一定事物、狀態(tài)或過程之間總存在著某些相似定事物、狀態(tài)或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和的方面(共性)。把這些相似的方面集中和概括起來,暫時(shí)忽略它們之間的差異,這就概括起來,暫時(shí)忽略它們之間的差異,這就是是抽象抽象。或者說抽象就是抽出事物的本質(zhì)特?;蛘哒f抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。性而暫時(shí)不考慮它們的細(xì)節(jié)。抽象抽象21處理復(fù)雜系統(tǒng):處理復(fù)雜系統(tǒng):用層次的方式構(gòu)造和分析。用層次的方式構(gòu)造和分析。一個(gè)復(fù)雜的動態(tài)系統(tǒng)首先可以用一些高級的一個(gè)復(fù)雜的動態(tài)系統(tǒng)首先可以用一些高級的抽象概念構(gòu)造和理解,這些高級概念又可以抽象概念構(gòu)造和理解,這些高級概念又
13、可以用一些較低級的概念構(gòu)造和理解,如此進(jìn)行用一些較低級的概念構(gòu)造和理解,如此進(jìn)行下去,直至最低層次的具體元素。下去,直至最低層次的具體元素。22考慮對任何問題的模塊化解法時(shí),可以提出考慮對任何問題的模塊化解法時(shí),可以提出許多抽象的層次。在抽象的許多抽象的層次。在抽象的最高層次最高層次使用問使用問題環(huán)境的語言,以題環(huán)境的語言,以概括概括的方式敘述問題的解的方式敘述問題的解法;在法;在較低較低抽象層次抽象層次采用更過程化采用更過程化的方法,的方法,把面向問題的術(shù)語和面向?qū)崿F(xiàn)的術(shù)語結(jié)合起把面向問題的術(shù)語和面向?qū)崿F(xiàn)的術(shù)語結(jié)合起來敘述問題的解法;最后在最低的抽象層次來敘述問題的解法;最后在最低的抽象層次
14、用可直接實(shí)現(xiàn)的方式敘述問題的解法。用可直接實(shí)現(xiàn)的方式敘述問題的解法。23逐步求精逐步求精定義定義:“為了能集中精力解決主要問題而為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的考慮。盡量推遲對問題細(xì)節(jié)的考慮?!盡iller法則:一個(gè)人在任何時(shí)候都只能法則:一個(gè)人在任何時(shí)候都只能把注意力集中在把注意力集中在72個(gè)知識塊上個(gè)知識塊上 求精要求設(shè)計(jì)者細(xì)化原始陳述,隨著每個(gè)求精要求設(shè)計(jì)者細(xì)化原始陳述,隨著每個(gè)后續(xù)求精(細(xì)化)步驟的完成而提供越來越多后續(xù)求精(細(xì)化)步驟的完成而提供越來越多的細(xì)節(jié)。的細(xì)節(jié)。24 逐步求精是一項(xiàng)把一個(gè)時(shí)期內(nèi)必須解決逐步求精是一項(xiàng)把一個(gè)時(shí)期內(nèi)必須解決的種種問題按優(yōu)先級排序的技
15、術(shù)。它確的種種問題按優(yōu)先級排序的技術(shù)。它確保每個(gè)問題都將被解決,而且每個(gè)問題保每個(gè)問題都將被解決,而且每個(gè)問題都將在適當(dāng)?shù)臅r(shí)候被解決,但是,在任都將在適當(dāng)?shù)臅r(shí)候被解決,但是,在任何時(shí)候一個(gè)人都不需要同時(shí)處理何時(shí)候一個(gè)人都不需要同時(shí)處理7 7個(gè)以上個(gè)以上知識塊。知識塊。25抽象與求精是一對互補(bǔ)的概念。抽象與求精是一對互補(bǔ)的概念。n抽象使得設(shè)計(jì)者能夠說明過程和數(shù)據(jù),同抽象使得設(shè)計(jì)者能夠說明過程和數(shù)據(jù),同時(shí)卻忽略低層細(xì)節(jié)。時(shí)卻忽略低層細(xì)節(jié)。n求精則幫助設(shè)計(jì)者在設(shè)計(jì)過程中逐步揭示求精則幫助設(shè)計(jì)者在設(shè)計(jì)過程中逐步揭示出低層細(xì)節(jié)。出低層細(xì)節(jié)。26 信息隱藏原理信息隱藏原理指出:應(yīng)該這樣設(shè)計(jì)和確指出:應(yīng)該這
16、樣設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息(過程定模塊,使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。是不能訪問的。 實(shí)際上,應(yīng)該隱藏的不是有關(guān)模塊的一實(shí)際上,應(yīng)該隱藏的不是有關(guān)模塊的一切信息,而是切信息,而是模塊的實(shí)現(xiàn)細(xì)節(jié)模塊的實(shí)現(xiàn)細(xì)節(jié)。 信息隱藏信息隱藏問題:問題:“為了得到最好的一組模塊,應(yīng)為了得到最好的一組模塊,應(yīng)該怎樣分解軟件該怎樣分解軟件”。27 開發(fā)具有獨(dú)立功能而且和其他模塊之開發(fā)具有獨(dú)立功能而且和其他模塊之間沒有過多的相互作用的模塊,就可以做間沒有過多的相互作用的模塊,就可以做到模塊獨(dú)立。到模塊獨(dú)立。模塊
17、獨(dú)立模塊獨(dú)立有效的模塊化(即具有獨(dú)立性的模塊)的軟有效的模塊化(即具有獨(dú)立性的模塊)的軟件比較容易開發(fā)出來;件比較容易開發(fā)出來;獨(dú)立的模塊比較容易測試和維護(hù)。獨(dú)立的模塊比較容易測試和維護(hù)。28 模塊的獨(dú)立程度由兩個(gè)定性標(biāo)準(zhǔn)度量,模塊的獨(dú)立程度由兩個(gè)定性標(biāo)準(zhǔn)度量,分別是耦合和內(nèi)聚。分別是耦合和內(nèi)聚。耦合耦合:衡量不同:衡量不同模塊彼此間模塊彼此間互相依賴互相依賴( (連接連接) )的緊密程度;的緊密程度;內(nèi)聚:內(nèi)聚:衡量一個(gè)衡量一個(gè)模塊內(nèi)部各個(gè)元素模塊內(nèi)部各個(gè)元素彼此結(jié)合彼此結(jié)合的緊密程度。的緊密程度。29偶然型偶然型邏輯型邏輯型時(shí)間型時(shí)間型通信型通信型順序型順序型功能型功能型內(nèi)容耦合內(nèi)容耦合公
18、共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合耦合數(shù)據(jù)耦合數(shù)據(jù)耦合30 耦合耦合(Coupling)Great deal of dependenceIndependent Highly coupled Loosely coupledUncoupledGoal: as loose as possible = as independent as possible耦合表示一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間的互連程度,應(yīng)耦合表示一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間的互連程度,應(yīng)盡量選用松散耦合的系統(tǒng)盡量選用松散耦合的系統(tǒng)31例例1:A訪問訪問C的內(nèi)部的內(nèi)部數(shù)據(jù)或不通過正數(shù)據(jù)或不通過正常入口而轉(zhuǎn)入常入口而轉(zhuǎn)入C的內(nèi)部。的內(nèi)部
19、。ABCDA:goto C1C:C1: 獨(dú)立性由弱到強(qiáng)(耦合程度由強(qiáng)到弱)排列為:獨(dú)立性由弱到強(qiáng)(耦合程度由強(qiáng)到弱)排列為: 內(nèi)容耦合內(nèi)容耦合(Content Coupling): 一個(gè)模塊直接影響另一個(gè)一個(gè)模塊直接影響另一個(gè)32例例2:部分代碼重疊:部分代碼重疊(常出現(xiàn)在匯編程(常出現(xiàn)在匯編程序中)序中)B A例例3:一個(gè)模塊有:一個(gè)模塊有多個(gè)入口(功能)多個(gè)入口(功能)A:entry 1:entry 2: The least desirable33 公共耦合公共耦合 (Common coupling):幾個(gè)模塊共享一個(gè)數(shù)據(jù)區(qū)域:幾個(gè)模塊共享一個(gè)數(shù)據(jù)區(qū)域Global : V1 V2A:A1=
20、V1+V2B:V1=B1Global : V1 V2A:V1+B:V2=B1+V1問題:問題: 公共部分的改動將影響所有調(diào)用它的模塊;公共部分的改動將影響所有調(diào)用它的模塊; 公共部分的數(shù)據(jù)存取無法控制;公共部分的數(shù)據(jù)存取無法控制; 復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而增加。公共區(qū)可以是:全程數(shù)據(jù)區(qū)、共享通信區(qū)、內(nèi)存公共覆蓋公共區(qū)可以是:全程數(shù)據(jù)區(qū)、共享通信區(qū)、內(nèi)存公共覆蓋區(qū)、任何介質(zhì)上的文件、物理設(shè)備等。區(qū)、任何介質(zhì)上的文件、物理設(shè)備等。34 圖中存在公共耦合,假設(shè)模塊圖中存在公共耦合,假設(shè)模塊A、C、E都存取全程數(shù)據(jù)都存取全程數(shù)據(jù)區(qū)(如公用一個(gè)磁盤文件)中的一個(gè)
21、數(shù)據(jù)項(xiàng)。區(qū)(如公用一個(gè)磁盤文件)中的一個(gè)數(shù)據(jù)項(xiàng)。 如果如果A模塊讀取該項(xiàng)數(shù)據(jù),然后調(diào)用模塊讀取該項(xiàng)數(shù)據(jù),然后調(diào)用C模塊對該項(xiàng)重新模塊對該項(xiàng)重新計(jì)算,并進(jìn)行數(shù)據(jù)更新。計(jì)算,并進(jìn)行數(shù)據(jù)更新。ABCDE全程數(shù)全程數(shù)據(jù)區(qū)據(jù)區(qū)(3)公共耦合)公共耦合35 如果此時(shí)如果此時(shí)C模塊錯(cuò)誤地更新了該項(xiàng)數(shù)據(jù),在往下的處模塊錯(cuò)誤地更新了該項(xiàng)數(shù)據(jù),在往下的處理中模塊理中模塊E讀該數(shù)據(jù)項(xiàng)時(shí)出現(xiàn)錯(cuò)誤。讀該數(shù)據(jù)項(xiàng)時(shí)出現(xiàn)錯(cuò)誤。 表面上看,問題由模塊表面上看,問題由模塊E產(chǎn)生,實(shí)際上由模塊產(chǎn)生,實(shí)際上由模塊C引起。引起。ABCDE全程數(shù)全程數(shù)據(jù)區(qū)據(jù)區(qū)(3)公共耦合)公共耦合36 控制耦合控制耦合(Control couplin
22、g):一個(gè)模塊通過傳遞控制:一個(gè)模塊通過傳遞控制信息來控制另一個(gè)模塊信息來控制另一個(gè)模塊ABFlagF2F1FnFlag接口單一,接口單一,但仍然影響但仍然影響被控模塊的被控模塊的內(nèi)部邏輯。內(nèi)部邏輯。 數(shù)據(jù)耦合數(shù)據(jù)耦合(Data coupling): 只有數(shù)據(jù)在模塊之間進(jìn)行只有數(shù)據(jù)在模塊之間進(jìn)行交換交換 The most desirable.37耦合是影響軟件復(fù)雜程度的一個(gè)重要因耦合是影響軟件復(fù)雜程度的一個(gè)重要因素素, ,應(yīng)采取下述設(shè)計(jì)原則應(yīng)采取下述設(shè)計(jì)原則: :應(yīng)該應(yīng)該盡量使用盡量使用數(shù)據(jù)耦合數(shù)據(jù)耦合少用少用控制耦合控制耦合限制限制公共耦合的范圍公共耦合的范圍完全不用完全不用內(nèi)容耦合。內(nèi)容耦
23、合。38 低內(nèi)聚:低內(nèi)聚: 偶然內(nèi)聚偶然內(nèi)聚(Coincidental cohesion)A:Read inputsfrom diskfrom tapefrom 邏輯內(nèi)聚邏輯內(nèi)聚(Logical cohesion)例如:例如: 內(nèi)聚內(nèi)聚 (Cohesion): 一個(gè)模塊內(nèi)各元素結(jié)合的緊密程度一個(gè)模塊內(nèi)各元素結(jié)合的緊密程度.Goal: as cohesive as possible.39 時(shí)間內(nèi)聚時(shí)間內(nèi)聚(Temporal cohesion):模塊內(nèi)的功能在):模塊內(nèi)的功能在同一時(shí)間段內(nèi)完成同一時(shí)間段內(nèi)完成例如:系統(tǒng)的初始化例如:系統(tǒng)的初始化問題:不同功能混在一個(gè)模塊中,有時(shí)共用部分問題:不同功
24、能混在一個(gè)模塊中,有時(shí)共用部分編碼,使局部功能的修改牽動全局。編碼,使局部功能的修改牽動全局。 中內(nèi)聚:中內(nèi)聚: 過程內(nèi)聚過程內(nèi)聚(Procedural cohesion):模塊內(nèi)的處理是相):模塊內(nèi)的處理是相關(guān)的,而且必須以特定順序執(zhí)行關(guān)的,而且必須以特定順序執(zhí)行例如:例如:enter datacheck datamanipulate data40 通信內(nèi)聚通信內(nèi)聚(Communicational cohesion):模塊中所有元素):模塊中所有元素都用同一個(gè)輸入數(shù)據(jù)或產(chǎn)生同一個(gè)輸出數(shù)據(jù)都用同一個(gè)輸入數(shù)據(jù)或產(chǎn)生同一個(gè)輸出數(shù)據(jù)例如:從同一磁帶上讀取不相干的數(shù)據(jù)例如:從同一磁帶上讀取不相干的數(shù)據(jù)
25、 可能破可能破壞獨(dú)立性。壞獨(dú)立性。 高內(nèi)聚:高內(nèi)聚: 順序內(nèi)聚順序內(nèi)聚(Sequential cohesion):模塊內(nèi)的處理元素和):模塊內(nèi)的處理元素和統(tǒng)一的功能密切相關(guān),而且這些處理必須順序執(zhí)行。統(tǒng)一的功能密切相關(guān),而且這些處理必須順序執(zhí)行。 功能內(nèi)聚功能內(nèi)聚(Functional cohesion):所有元素合力完成一):所有元素合力完成一個(gè)單一功能,缺一不可個(gè)單一功能,缺一不可41模塊獨(dú)立模塊獨(dú)立內(nèi)聚度量一個(gè)模塊內(nèi)的各個(gè)元素彼此結(jié)合的緊密程度。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚。內(nèi)聚內(nèi)聚耦合是對一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合的范圍,完全
26、不用內(nèi)容耦合。耦合耦合425.3 5.3 啟啟 發(fā)發(fā) 規(guī)規(guī) 則則改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性 設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這個(gè)結(jié)構(gòu),通過模塊分解或合并,查分析這個(gè)結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提高內(nèi)聚。力求降低耦合提高內(nèi)聚。模塊規(guī)模應(yīng)該適中模塊規(guī)模應(yīng)該適中 經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過大,經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過大,最好能寫在一頁紙內(nèi)(通常不超過最好能寫在一頁紙內(nèi)(通常不超過6060行語行語句)。句)。 過小的模塊開銷大于有效操作,而過小的模塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜。且模塊數(shù)目過多將使
27、系統(tǒng)接口復(fù)雜。因此過小的模塊有時(shí)不值得單獨(dú)存因此過小的模塊有時(shí)不值得單獨(dú)存在,特別是只有一個(gè)模塊調(diào)用它時(shí),在,特別是只有一個(gè)模塊調(diào)用它時(shí),通常可以把它合并到上級模塊中去通??梢园阉喜⒌缴霞壞K中去而不必單獨(dú)存在。而不必單獨(dú)存在。435.3 5.3 啟啟 發(fā)發(fā) 規(guī)規(guī) 則則深度、寬度、扇出和扇入都應(yīng)適當(dāng)深度、寬度、扇出和扇入都應(yīng)適當(dāng) 觀察大量軟件系統(tǒng)后發(fā)現(xiàn),設(shè)計(jì)得很好觀察大量軟件系統(tǒng)后發(fā)現(xiàn),設(shè)計(jì)得很好的軟件結(jié)構(gòu)通常頂層扇出比較高,中層扇出的軟件結(jié)構(gòu)通常頂層扇出比較高,中層扇出較少,底層扇入到公共的實(shí)用模塊中去(底較少,底層扇入到公共的實(shí)用模塊中去(底層模塊有高扇入)。層模塊有高扇入)。是一個(gè)模塊
28、直接控制(調(diào)用)的模塊數(shù)目是能夠直接調(diào)用此模塊的上級的模塊數(shù)目軟件結(jié)構(gòu)中控制的層數(shù)同一層次上的模塊總數(shù)的最大值44 深度深度 = 分層的層數(shù)。過大表示分工過細(xì)。分層的層數(shù)。過大表示分工過細(xì)。 寬度寬度 = 同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復(fù)雜同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復(fù)雜度大。度大。45 扇出扇出 = 一個(gè)模塊直接調(diào)一個(gè)模塊直接調(diào)用用控制的模塊數(shù)??刂频哪K數(shù)。 3 fan-out 9AA的扇出的扇出AA的扇入的扇入 扇入扇入 = 直接調(diào)用該模直接調(diào)用該模塊的模塊數(shù)塊的模塊數(shù)在不破壞獨(dú)立性的前提在不破壞獨(dú)立性的前提下,下,fan-in 大的比較好。大的比較好。46 對扇出、扇入過
29、大的改進(jìn):對扇出、扇入過大的改進(jìn): (a)對扇入過大的改進(jìn))對扇入過大的改進(jìn)(b)對扇出過大的改進(jìn))對扇出過大的改進(jìn)47模塊的作用域應(yīng)該在控制域之內(nèi)模塊的作用域應(yīng)該在控制域之內(nèi) 模塊的作用域定義為受該模塊內(nèi)一個(gè)模塊的作用域定義為受該模塊內(nèi)一個(gè)判定影響的判定影響的所有模塊的集合所有模塊的集合。模塊的控制。模塊的控制域是這個(gè)模塊本身以及所有域是這個(gè)模塊本身以及所有直接或間接直接或間接從從屬于它的模塊的集合。屬于它的模塊的集合。 在一個(gè)設(shè)計(jì)得很好的系統(tǒng)中,所有受在一個(gè)設(shè)計(jì)得很好的系統(tǒng)中,所有受判定影響的模塊應(yīng)該都從屬于做出判定的判定影響的模塊應(yīng)該都從屬于做出判定的那個(gè)模塊,最好局限于做出判定的那個(gè)模
30、那個(gè)模塊,最好局限于做出判定的那個(gè)模塊本身及它的直屬下級模塊。塊本身及它的直屬下級模塊。5.3 5.3 啟啟 發(fā)發(fā) 規(guī)規(guī) 則則48 控制域控制域MACBM的控制域?yàn)榈目刂朴驗(yàn)?M,A,B,C 作用域:作用域:M中的一個(gè)判定所影響的模塊。中的一個(gè)判定所影響的模塊。例如:例如:A: if then goto B1 B: B1: 作用域在控制域內(nèi)作用域在控制域內(nèi)A: if then goto M1 M: M1: goto C1 作用域超出了控制域作用域超出了控制域上例中上例中A的作用超出了控制域。改進(jìn)方法之一,可以的作用超出了控制域。改進(jìn)方法之一,可以把把A中的中的 if 移到移到M中;方法之二,可
31、以把中;方法之二,可以把C移到移到A下面。下面。2. 軟件設(shè)計(jì)原則軟件設(shè)計(jì)原則49力爭降低模塊接口的復(fù)雜程度力爭降低模塊接口的復(fù)雜程度 模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息要原因。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡單并且和模塊的功能一致。傳遞簡單并且和模塊的功能一致。5.3 5.3 啟啟 發(fā)發(fā) 規(guī)規(guī) 則則 如:如:QUAD-ROOT(TBL,X) 求一元二次方程的根的模塊,其中求一元二次方程的根的模塊,其中TBL,X都為數(shù)組,分別代表方程都為數(shù)組,分別代表方程的系數(shù)和方程的根。的系數(shù)和方程的根。 應(yīng)該使接口更簡單,如:應(yīng)該
32、使接口更簡單,如: QUAD-ROOT(A,B,C,ROOT1,ROOT2) A、B、C是方程的系數(shù),是方程的系數(shù),ROOT1,ROOT2是方程的根。是方程的根。 50設(shè)計(jì)單入口單出口的模塊設(shè)計(jì)單入口單出口的模塊 不要使模塊間出現(xiàn)內(nèi)容耦合,設(shè)計(jì)出不要使模塊間出現(xiàn)內(nèi)容耦合,設(shè)計(jì)出的每一個(gè)模塊都應(yīng)該只有一個(gè)入口一個(gè)出的每一個(gè)模塊都應(yīng)該只有一個(gè)入口一個(gè)出口。口。5.3 5.3 啟啟 發(fā)發(fā) 規(guī)規(guī) 則則515.3 5.3 啟啟 發(fā)發(fā) 規(guī)規(guī) 則則模塊功能應(yīng)該可以預(yù)測模塊功能應(yīng)該可以預(yù)測 模塊的功能應(yīng)該能夠預(yù)測,但也要模塊的功能應(yīng)該能夠預(yù)測,但也要防止模塊功能過分局限。防止模塊功能過分局限。525.4 5.
33、4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具1 1 層次圖和層次圖和HIPOHIPO圖圖 通常使用層次圖描繪軟件的層次結(jié)構(gòu)。通常使用層次圖描繪軟件的層次結(jié)構(gòu)。在圖在圖3.23.2中已經(jīng)非正式地使用了層次圖。中已經(jīng)非正式地使用了層次圖。模塊的作用域和控制域535.4 5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具正文加工正文加工系統(tǒng)系統(tǒng)輸入輸入輸出輸出編輯編輯加標(biāo)題加標(biāo)題存儲存儲檢索檢索編目錄編目錄格式化格式化添加添加刪除刪除插入插入修改修改合并合并列表列表圖圖5.3 正文加工系統(tǒng)的層次圖正文加工系統(tǒng)的層次圖54 HIPO HIPO圖是美國圖是美國IBMIBM公司公司發(fā)明的發(fā)明的“層次
34、圖層次圖加輸入處理輸出圖加輸入處理輸出圖”的英文縮寫。為了的英文縮寫。為了使使HIPOHIPO圖具有可追蹤性,在圖(即層次圖圖具有可追蹤性,在圖(即層次圖)里除了頂層的方框之外,每個(gè)方框都加了)里除了頂層的方框之外,每個(gè)方框都加了編號。編號方法與本書第編號。編號方法與本書第3 3章章3.5.23.5.2節(jié)中介紹節(jié)中介紹的數(shù)據(jù)流圖的編號方法相同。的數(shù)據(jù)流圖的編號方法相同。 和和H H圖中的每個(gè)方框相對應(yīng),應(yīng)該有一張圖中的每個(gè)方框相對應(yīng),應(yīng)該有一張IPOIPO圖(或表)描繪這個(gè)方框代表的模塊的圖(或表)描繪這個(gè)方框代表的模塊的處理過程。處理過程。5.4 5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的
35、圖形工具555.4 5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具正文加工正文加工系統(tǒng)系統(tǒng)輸入輸入1.0輸出輸出2.0編輯編輯3.0加標(biāo)題加標(biāo)題4.0存儲存儲5.0檢索檢索6.0編目錄編目錄7.0格式化格式化8.0添加添加3.1刪除刪除3.2插入插入3.3修改修改3.4合并合并3.5列表列表3.6圖圖5.4 帶編號的層次圖(帶編號的層次圖(H圖)圖)56 結(jié)構(gòu)圖中一個(gè)結(jié)構(gòu)圖中一個(gè)方框代表一個(gè)模塊方框代表一個(gè)模塊,框內(nèi),框內(nèi)注明模塊的名字或主要功能;方框之間的注明模塊的名字或主要功能;方框之間的箭頭箭頭(或直線)表示模塊的調(diào)用關(guān)系(或直線)表示模塊的調(diào)用關(guān)系。因?yàn)榘凑諔T。因?yàn)榘凑諔T例總是圖
36、中位于上方的方框代表的模塊調(diào)用下例總是圖中位于上方的方框代表的模塊調(diào)用下方的模塊,即使不用箭頭也不會產(chǎn)生二義性,方的模塊,即使不用箭頭也不會產(chǎn)生二義性,為了簡單起見,可以只用直線而不用箭頭表示為了簡單起見,可以只用直線而不用箭頭表示模塊間的調(diào)用關(guān)系。模塊間的調(diào)用關(guān)系。5.4 5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖結(jié)構(gòu)圖-Yourdon-Yourdon提出的提出的57 如果希望進(jìn)一步標(biāo)明傳遞的信息是如果希望進(jìn)一步標(biāo)明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來區(qū)分:尾部是空心圓表頭尾部的形狀來區(qū)分:尾部是空心圓表示傳遞的是數(shù)據(jù)
37、,實(shí)心圓表示傳遞的是示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息。控制信息。圖3.5 結(jié)構(gòu)圖的一個(gè)例子585.4 5.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具M(jìn)AB圖圖5.6 判定為真時(shí)調(diào)用判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用,為假時(shí)調(diào)用BMABC圖圖5.7 模塊模塊M循環(huán)調(diào)循環(huán)調(diào)用模塊用模塊A、B、C59例例: :畫出打印報(bào)告的軟件結(jié)構(gòu)圖畫出打印報(bào)告的軟件結(jié)構(gòu)圖 調(diào)用次序?yàn)樯蠈诱{(diào)用下層;調(diào)用次序?yàn)樯蠈诱{(diào)用下層; 同層按照數(shù)據(jù)傳遞關(guān)系確同層按照數(shù)據(jù)傳遞關(guān)系確定;一般從左到右執(zhí)行。定;一般從左到右執(zhí)行。 執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。 報(bào)報(bào) 告告計(jì)計(jì) 算算獲得編輯獲得編輯
38、確認(rèn)數(shù)據(jù)確認(rèn)數(shù)據(jù)讀入讀入編輯編輯打印報(bào)告頭打印報(bào)告頭打印報(bào)告尾打印報(bào)告尾打印打印輸入EOF輸入已編輯 已編輯已編輯已確認(rèn)已確認(rèn)數(shù)據(jù)已確認(rèn)數(shù)據(jù)計(jì)算結(jié)果結(jié)果日期總結(jié)果行行行打印報(bào)告打印報(bào)告予以確認(rèn)予以確認(rèn)605.5 5.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法目標(biāo):給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化目標(biāo):給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑。的途徑。 面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不面向數(shù)據(jù)流的設(shè)計(jì)方法定義了一些不同的同的“映射映射”,利用這些映射可以把數(shù)據(jù),利用這些映射可以把數(shù)據(jù)流圖變換成軟件結(jié)構(gòu)。通常所說的結(jié)構(gòu)化流圖變換成軟件結(jié)構(gòu)。通常所說的結(jié)構(gòu)化設(shè)計(jì)方法(簡稱設(shè)計(jì)方法(簡稱SDSD方法),也就是
39、基于數(shù)方法),也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。據(jù)流的設(shè)計(jì)方法。61基本思想基本思想: : DFD DFD System Hierarchy System Hierarchy621.1.變換流變換流概念概念圖5.8 變換流63 信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流圖具有這些特征時(shí),這種信息流就叫作變圖具有這些特征時(shí),這種信息流就叫作變換流。換流。642
40、. 2. 事務(wù)流事務(wù)流 數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T T,這個(gè)處理根,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動作序列中選出一個(gè)來據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動作序列中選出一個(gè)來執(zhí)行。這類數(shù)據(jù)流稱為事務(wù)流。執(zhí)行。這類數(shù)據(jù)流稱為事務(wù)流。圖5.9 事務(wù)流圖圖5.95.9中的處理中的處理T T稱為事務(wù)中心,稱為事務(wù)中心,它完成下述任務(wù):它完成下述任務(wù): (1 1)接收輸入數(shù)據(jù)(輸入數(shù))接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù));據(jù)又稱為事務(wù)); (2 2)分析每個(gè)事務(wù)以確定它)分析每個(gè)事務(wù)以確定它的類型;的類型; (3 3)根據(jù)事務(wù)類型選取一條)根據(jù)事務(wù)類型選取一條活動通路?;顒油?。概念概
41、念65要求類要求類別處理別處理分房處理分房處理調(diào)房處理調(diào)房處理退房處理退房處理住房要求住房要求事務(wù)中心事務(wù)中心活動路徑活動路徑66 通常,一個(gè)實(shí)際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務(wù)型通常,一個(gè)實(shí)際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務(wù)型兩種類型的混合體。兩種類型的混合體。 如圖所示,中間的子塊屬事務(wù)型數(shù)據(jù)流,如果把中如圖所示,中間的子塊屬事務(wù)型數(shù)據(jù)流,如果把中間子塊視為一個(gè)處理整體的話,整個(gè)程序?qū)僮儞Q型程序。間子塊視為一個(gè)處理整體的話,整個(gè)程序?qū)僮儞Q型程序。 A(事務(wù)型,(事務(wù)型,A為事務(wù)中心)為事務(wù)中心)變換中心變換中心輸入輸入輸出輸出混合型數(shù)據(jù)流圖混合型數(shù)據(jù)流圖673 3 變換型系統(tǒng)結(jié)構(gòu)圖變換型系統(tǒng)結(jié)構(gòu)圖
42、68694 4 事務(wù)型系統(tǒng)結(jié)構(gòu)圖事務(wù)型系統(tǒng)結(jié)構(gòu)圖70715.5.2 5.5.2 變換分析技術(shù)變換分析技術(shù) 變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過這些步驟把具有變換流特點(diǎn)的數(shù)據(jù)流過這些步驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。72 主加工主加工 描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:輸入描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:輸入/ /輸出數(shù)輸出數(shù)據(jù)流較多,往往主加工不止一個(gè)。據(jù)流較多,往往主加工不止一個(gè)。 邏輯輸入邏輯輸入/ /輸出輸出 是指輸入是指輸入/ /輸出主加工的數(shù)據(jù)流。輸出主加工的數(shù)據(jù)流。 輸入流輸入
43、流 是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。 輸出流輸出流 是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。 輸輸 入入流流轉(zhuǎn)換流轉(zhuǎn)換流輸輸 出出 流流 輸輸 入入流流轉(zhuǎn)換流轉(zhuǎn)換流 進(jìn)行一級分解進(jìn)行一級分解, ,設(shè)計(jì)上層模塊設(shè)計(jì)上層模塊 為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。MCICTCOCCDDCICTCO變換分析技術(shù)步驟FDC中心中心加工加工2號號加工加工3號號加工加工1號號加工加工4號號加工加
44、工ABE輸輸 出出 流流 變換分析技術(shù)73DDCC 這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)下層模塊的順序一般從設(shè)輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)下層模塊的順序一般從設(shè)計(jì)輸入模塊的下層開始。計(jì)輸入模塊的下層開始。MCICTCO處理C取B轉(zhuǎn)換B轉(zhuǎn)換D送ECCDDDCCDBBEEDC中心中心加工加工2號號加工加工3號號加工加工1號號加工加工4號號加工加工AB E 輸輸 入入流流轉(zhuǎn)換流轉(zhuǎn)換流輸輸 出出 流流轉(zhuǎn)換流轉(zhuǎn)換流取A轉(zhuǎn)換A轉(zhuǎn)換E送FAABFFE 變換分析技術(shù)F74
45、0楊輝三角形系數(shù)求解輸入階數(shù)輸入階數(shù)系數(shù)表系數(shù)表不合理階數(shù)不合理階數(shù)DFD01檢驗(yàn)階數(shù)2計(jì)算系數(shù)3打印系數(shù)系數(shù)表系數(shù)表系數(shù)系數(shù)不合理階數(shù)不合理階數(shù)合理合理階數(shù)階數(shù)輸入階輸入階數(shù)數(shù)DFD11.1輸入階數(shù)1.2檢驗(yàn)階數(shù)合理合理階數(shù)階數(shù)不合不合理階理階數(shù)數(shù)階數(shù)階數(shù)2.1計(jì)算1DFD2合合理理階階數(shù)數(shù)系數(shù)系數(shù)3.1打印1階數(shù)階數(shù)系數(shù)表系數(shù)表13.2打印2階數(shù)階數(shù)系數(shù)系數(shù)表表22.2計(jì)算2合理合理階數(shù)階數(shù)系數(shù)系數(shù)求解楊輝三角形系數(shù)75求解楊輝三角形系數(shù)取合理階數(shù)打印系數(shù)計(jì)算系數(shù)方法選用輸入階數(shù)檢驗(yàn)階數(shù)計(jì)算1計(jì)算2打印1打印2合理階數(shù)合理階數(shù)合理階數(shù)合理階數(shù)合理階數(shù)合理階數(shù)合理階合理階數(shù)數(shù)合理階數(shù)合理階數(shù)
46、合理階數(shù)合理階數(shù)合理階數(shù)合理階數(shù)合理階合理階數(shù)數(shù)不合理階數(shù)不合理階數(shù)階階數(shù)數(shù)階階數(shù)數(shù)系系數(shù)數(shù)系系數(shù)數(shù)系系數(shù)數(shù)系系數(shù)數(shù)系數(shù)表系數(shù)表1系數(shù)表系數(shù)表2表示選用表示選用76變換分析變換分析1. 1. 例子例子假設(shè)的儀表板將完成下述功能:假設(shè)的儀表板將完成下述功能: 通過模通過模- -數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理機(jī)接口;數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理機(jī)接口; 在發(fā)光二極管面板上顯示數(shù)據(jù);在發(fā)光二極管面板上顯示數(shù)據(jù); 指示每小時(shí)英里數(shù)(指示每小時(shí)英里數(shù)(milemileh h),行駛的里程,每加侖),行駛的里程,每加侖油行駛的英里數(shù)(油行駛的英里數(shù)(milemileGalGal)等等;)等等; 指示加速或減速;指示
47、加速或減速; 超速警告:如果車速超過超速警告:如果車速超過55mile55mileh h,則發(fā)出超速警告,則發(fā)出超速警告鈴聲。鈴聲。772. 2. 設(shè)計(jì)步驟設(shè)計(jì)步驟第第1 1步步 復(fù)查基本系統(tǒng)模型復(fù)查基本系統(tǒng)模型。 復(fù)查的目的是確保系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)復(fù)查的目的是確保系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)符合實(shí)際。符合實(shí)際。第第2 2步步 復(fù)查并精化數(shù)據(jù)流圖復(fù)查并精化數(shù)據(jù)流圖。 應(yīng)該對需求分析階段得出的數(shù)據(jù)流圖認(rèn)真復(fù)查,應(yīng)該對需求分析階段得出的數(shù)據(jù)流圖認(rèn)真復(fù)查,并且在必要時(shí)進(jìn)行精化。不僅要確保數(shù)據(jù)流圖給出并且在必要時(shí)進(jìn)行精化。不僅要確保數(shù)據(jù)流圖給出了目標(biāo)系統(tǒng)的正確的邏輯模型,而且應(yīng)該使數(shù)據(jù)流了目標(biāo)系統(tǒng)的
48、正確的邏輯模型,而且應(yīng)該使數(shù)據(jù)流圖中每個(gè)處理都代表一個(gè)規(guī)模適中相對獨(dú)立的子功圖中每個(gè)處理都代表一個(gè)規(guī)模適中相對獨(dú)立的子功能。能。 假設(shè)在需求分析階段產(chǎn)生的數(shù)字儀表板系統(tǒng)的假設(shè)在需求分析階段產(chǎn)生的數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖如圖數(shù)據(jù)流圖如圖5.115.11(見書(見書9797頁)所示。頁)所示。78 這個(gè)數(shù)據(jù)流圖對于軟件結(jié)構(gòu)設(shè)計(jì)的這個(gè)數(shù)據(jù)流圖對于軟件結(jié)構(gòu)設(shè)計(jì)的“第一次分第一次分割割”而言已經(jīng)足夠詳細(xì)了,因此不需要精化就可以而言已經(jīng)足夠詳細(xì)了,因此不需要精化就可以進(jìn)行下一個(gè)設(shè)計(jì)步驟。進(jìn)行下一個(gè)設(shè)計(jì)步驟。第第3 3步步 確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。 一般地說
49、,一個(gè)系統(tǒng)中的所有信息流都可以認(rèn)一般地說,一個(gè)系統(tǒng)中的所有信息流都可以認(rèn)為是變換流,但是,當(dāng)遇到有明顯事務(wù)特性的信息為是變換流,但是,當(dāng)遇到有明顯事務(wù)特性的信息流時(shí),建議采用事務(wù)分析方法進(jìn)行設(shè)計(jì)。在這一步,流時(shí),建議采用事務(wù)分析方法進(jìn)行設(shè)計(jì)。在這一步,設(shè)計(jì)人員應(yīng)該根據(jù)數(shù)據(jù)流圖中占優(yōu)勢的屬性,確定設(shè)計(jì)人員應(yīng)該根據(jù)數(shù)據(jù)流圖中占優(yōu)勢的屬性,確定數(shù)據(jù)流的全局特性。此外還應(yīng)該把具有和全局特性數(shù)據(jù)流的全局特性。此外還應(yīng)該把具有和全局特性不同的特點(diǎn)的局部區(qū)域孤立出來,以后可以按照這不同的特點(diǎn)的局部區(qū)域孤立出來,以后可以按照這些子數(shù)據(jù)流的特點(diǎn)精化根據(jù)全局特性得出的軟件結(jié)些子數(shù)據(jù)流的特點(diǎn)精化根據(jù)全局特性得出的軟
50、件結(jié)構(gòu)。構(gòu)。79 從圖從圖5.115.11看出,數(shù)據(jù)沿著兩條輸入通路進(jìn)入系看出,數(shù)據(jù)沿著兩條輸入通路進(jìn)入系統(tǒng),然后沿著統(tǒng),然后沿著5 5條通路離開,沒有明顯的事務(wù)中心。條通路離開,沒有明顯的事務(wù)中心。因此可以認(rèn)為這個(gè)信息流具有變換流的總特征。因此可以認(rèn)為這個(gè)信息流具有變換流的總特征。第第4 4步步 確定輸入流和輸出流的邊界,從而孤立出變確定輸入流和輸出流的邊界,從而孤立出變換中心換中心。 輸入流和輸出流的邊界和對它們的解釋有關(guān),輸入流和輸出流的邊界和對它們的解釋有關(guān),也就是說,不同設(shè)計(jì)人員可能會在流內(nèi)選取稍微不也就是說,不同設(shè)計(jì)人員可能會在流內(nèi)選取稍微不同的點(diǎn)作為邊界的位置。當(dāng)然在確定邊界時(shí)應(yīng)
51、該仔同的點(diǎn)作為邊界的位置。當(dāng)然在確定邊界時(shí)應(yīng)該仔細(xì)認(rèn)真,但是把邊界沿著數(shù)據(jù)流通路移動一個(gè)處理細(xì)認(rèn)真,但是把邊界沿著數(shù)據(jù)流通路移動一個(gè)處理框的距離,通常對最后的軟件結(jié)構(gòu)只有很小的影響??虻木嚯x,通常對最后的軟件結(jié)構(gòu)只有很小的影響。對于汽車數(shù)字儀表板的例子,設(shè)計(jì)人員確定的流的對于汽車數(shù)字儀表板的例子,設(shè)計(jì)人員確定的流的邊界如圖邊界如圖5.125.12(見書(見書9898頁)所示。頁)所示。80DFD的分界,先分出的分界,先分出I、P、O三塊三塊燃料流燃料流 傳感器信號傳感器信號SPS旋轉(zhuǎn)信號旋轉(zhuǎn)信號讀讀旋轉(zhuǎn)旋轉(zhuǎn)信號信號收集收集和求和求平均平均確定確定加加/ /減減速速轉(zhuǎn)換轉(zhuǎn)換成成轉(zhuǎn)轉(zhuǎn)/ /分分計(jì)算
52、計(jì)算里程里程計(jì)算計(jì)算mph,超超速值速值產(chǎn)生產(chǎn)生加加/ /減減速顯示速顯示計(jì)算計(jì)算燃料燃料消耗消耗計(jì)算計(jì)算gph讀和讀和校核校核產(chǎn)生產(chǎn)生mpg顯示顯示產(chǎn)生產(chǎn)生mph顯示顯示發(fā)出發(fā)出鈴聲鈴聲產(chǎn)生產(chǎn)生里程里程顯示顯示SPS SPS箭頭指示箭頭指示燃燒流燃燒流上箭頭上箭頭水平線水平線下箭頭下箭頭rpmrpmgphmphmpgmph超速值超速值英里英里顯示顯示鈴聲鈴聲mph顯示顯示mpg顯示顯示81第第5 5步步 完成完成“第一級分解第一級分解”。 軟件結(jié)構(gòu)代表對控制的自頂向下的分配,所謂軟件結(jié)構(gòu)代表對控制的自頂向下的分配,所謂分解就是分配控制的過程。分解就是分配控制的過程。 對于變換流的情況,數(shù)據(jù)流
53、圖被映射成一個(gè)特對于變換流的情況,數(shù)據(jù)流圖被映射成一個(gè)特殊的軟件結(jié)構(gòu),這個(gè)結(jié)構(gòu)控制輸入、變換和輸出等殊的軟件結(jié)構(gòu),這個(gè)結(jié)構(gòu)控制輸入、變換和輸出等信息處理過程。圖信息處理過程。圖5.135.13說明了第一級分解的方法。說明了第一級分解的方法。位于軟件結(jié)構(gòu)最頂層的控制模塊位于軟件結(jié)構(gòu)最頂層的控制模塊CmCm協(xié)調(diào)下述從屬的協(xié)調(diào)下述從屬的控制功能:控制功能: 輸入信息處理控制模塊輸入信息處理控制模塊Ca,Ca,協(xié)調(diào)對所有輸入數(shù)協(xié)調(diào)對所有輸入數(shù)據(jù)的接收;據(jù)的接收; 變換中心控制模塊變換中心控制模塊Ct,Ct,管理對內(nèi)部形式的數(shù)據(jù)管理對內(nèi)部形式的數(shù)據(jù)的所有操作;的所有操作;82 輸出信息處理控制模塊輸出信
54、息處理控制模塊CeCe,協(xié)調(diào)輸出信息的產(chǎn),協(xié)調(diào)輸出信息的產(chǎn)生過程。生過程。 雖然圖雖然圖5.135.13意味著一個(gè)三叉的控制結(jié)構(gòu),但是,意味著一個(gè)三叉的控制結(jié)構(gòu),但是,對一個(gè)大型系統(tǒng)中的復(fù)雜數(shù)據(jù)流可以用兩個(gè)或多個(gè)對一個(gè)大型系統(tǒng)中的復(fù)雜數(shù)據(jù)流可以用兩個(gè)或多個(gè)模塊完成上述一個(gè)模塊的控制功能。應(yīng)該在能夠完模塊完成上述一個(gè)模塊的控制功能。應(yīng)該在能夠完成控制功能并且保持好的耦合和內(nèi)聚特性的前提下,成控制功能并且保持好的耦合和內(nèi)聚特性的前提下,盡量使第一級控制中的模塊數(shù)目取最小值。盡量使第一級控制中的模塊數(shù)目取最小值。對于數(shù)字儀表板的例子,第一級分解得出的結(jié)構(gòu)如對于數(shù)字儀表板的例子,第一級分解得出的結(jié)構(gòu)如
55、圖圖5.145.14所示。每個(gè)控制模塊的名字表明了為它所控所示。每個(gè)控制模塊的名字表明了為它所控制的那些模塊的功能。制的那些模塊的功能。83圖5.13 第一級分解的方法84圖5.14 數(shù)字儀表板系統(tǒng)的第一級分解85第第6 6步步 完成完成“第二級分解第二級分解”。 所謂第二級分解就是把數(shù)據(jù)流圖中的所謂第二級分解就是把數(shù)據(jù)流圖中的每個(gè)處理每個(gè)處理映射成軟件結(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K映射成軟件結(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K。完成第二級分。完成第二級分解的方法是,從變換中心的邊界開始沿著輸入通路解的方法是,從變換中心的邊界開始沿著輸入通路向外移動,把輸入通路中每個(gè)處理映射成軟件結(jié)構(gòu)向外移動,把輸入通路中每個(gè)處理映射
56、成軟件結(jié)構(gòu)中中CaCa控制下的一個(gè)低層模塊;然后沿輸出通路向外控制下的一個(gè)低層模塊;然后沿輸出通路向外移動,把輸出通路中每個(gè)處理映射成直接或間接受移動,把輸出通路中每個(gè)處理映射成直接或間接受模塊模塊CeCe控制的一個(gè)低層模塊;最后把變換中心內(nèi)的控制的一個(gè)低層模塊;最后把變換中心內(nèi)的每個(gè)處理映射成受每個(gè)處理映射成受CtCt控制的一個(gè)模塊。圖控制的一個(gè)模塊。圖5.155.15表示表示進(jìn)行第二級分解的普遍途徑。進(jìn)行第二級分解的普遍途徑。86圖5.15 第二級分解的方法87 雖然圖雖然圖5.155.15描繪了在數(shù)據(jù)流圖中的處理和軟件描繪了在數(shù)據(jù)流圖中的處理和軟件結(jié)構(gòu)中的模塊之間的一對一的映射關(guān)系,但是
57、,不結(jié)構(gòu)中的模塊之間的一對一的映射關(guān)系,但是,不同的映射經(jīng)常出現(xiàn)。應(yīng)該根據(jù)實(shí)際情況以及同的映射經(jīng)常出現(xiàn)。應(yīng)該根據(jù)實(shí)際情況以及“好好”設(shè)計(jì)的標(biāo)準(zhǔn),進(jìn)行實(shí)際的第二級分解。設(shè)計(jì)的標(biāo)準(zhǔn),進(jìn)行實(shí)際的第二級分解。 對于數(shù)字儀表板系統(tǒng)的例子,第二級分解的結(jié)對于數(shù)字儀表板系統(tǒng)的例子,第二級分解的結(jié)果分別用圖果分別用圖5.165.16,5.175.17和和5.185.18描繪。這描繪。這3 3張圖表示張圖表示對軟件結(jié)構(gòu)的初步設(shè)計(jì)結(jié)果。雖然圖中每個(gè)模塊的對軟件結(jié)構(gòu)的初步設(shè)計(jì)結(jié)果。雖然圖中每個(gè)模塊的名字表明了它的基本功能,但是仍然應(yīng)該為每個(gè)模名字表明了它的基本功能,但是仍然應(yīng)該為每個(gè)模塊寫一個(gè)簡要說明,描述:塊寫一
58、個(gè)簡要說明,描述:88進(jìn)出該模塊的信息進(jìn)出該模塊的信息( (接口描述接口描述) );模塊內(nèi)部的信息;模塊內(nèi)部的信息;過程陳述,包括主要判定點(diǎn)及任務(wù)等;過程陳述,包括主要判定點(diǎn)及任務(wù)等;對約束和特殊特點(diǎn)的簡短討論。對約束和特殊特點(diǎn)的簡短討論。這些描述是第一代的設(shè)計(jì)規(guī)格說明,在這個(gè)設(shè)計(jì)時(shí)這些描述是第一代的設(shè)計(jì)規(guī)格說明,在這個(gè)設(shè)計(jì)時(shí)期進(jìn)一步的精化和補(bǔ)充是經(jīng)常發(fā)生的。期進(jìn)一步的精化和補(bǔ)充是經(jīng)常發(fā)生的。第第7 7步步 使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對第一次分割得使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化。到的軟件結(jié)構(gòu)進(jìn)一步精化。89圖5.16 未經(jīng)精化的輸入結(jié)構(gòu)90圖5.17 未經(jīng)精化的變換
59、結(jié)構(gòu)91圖5.18 未經(jīng)精化的輸出結(jié)構(gòu)92 對第一次分割得到的軟件結(jié)構(gòu),總可以根據(jù)模對第一次分割得到的軟件結(jié)構(gòu),總可以根據(jù)模塊獨(dú)立原理進(jìn)行精化。為了產(chǎn)生合理的分解,得到塊獨(dú)立原理進(jìn)行精化。為了產(chǎn)生合理的分解,得到盡可能高的內(nèi)聚、盡可能松散的耦合,最重要的是,盡可能高的內(nèi)聚、盡可能松散的耦合,最重要的是,為了得到一個(gè)易于實(shí)現(xiàn)、易于測試和易于維護(hù)的軟為了得到一個(gè)易于實(shí)現(xiàn)、易于測試和易于維護(hù)的軟件結(jié)構(gòu),應(yīng)該對初步分割得到的模塊進(jìn)行再分解或件結(jié)構(gòu),應(yīng)該對初步分割得到的模塊進(jìn)行再分解或合并。合并。 具體到數(shù)字儀表板的例子,對于從前面的設(shè)計(jì)具體到數(shù)字儀表板的例子,對于從前面的設(shè)計(jì)步驟得到的軟件結(jié)構(gòu),還可以
60、做許多修改。下面是步驟得到的軟件結(jié)構(gòu),還可以做許多修改。下面是某些可能的修改:某些可能的修改: 輸入結(jié)構(gòu)中的模塊輸入結(jié)構(gòu)中的模塊“轉(zhuǎn)換成轉(zhuǎn)換成rpm”rpm”和和“收集收集spssps”可以合并;可以合并; 模塊模塊“確定加速確定加速/ /減速減速”可以放在模塊可以放在模塊“計(jì)算計(jì)算mph”mph”下面,以減少耦合;下面,以減少耦合;93 模塊模塊“加速加速/ /減速顯示減速顯示”可以相應(yīng)地放在模塊可以相應(yīng)地放在模塊“顯示顯示mph”mph”的下面。的下面。 經(jīng)過上述修改后的軟件結(jié)構(gòu)畫在圖經(jīng)過上述修改后的軟件結(jié)構(gòu)畫在圖5.195.19中。中。 上述上述7 7個(gè)設(shè)計(jì)步驟的目的是,開發(fā)出軟件的整個(gè)
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人股權(quán)轉(zhuǎn)讓協(xié)議書范本4篇
- 2025年度綠色環(huán)保店鋪?zhàn)赓U及設(shè)施共建合同
- 2025版時(shí)尚服飾銷售合同模板(含季節(jié)性折扣)
- 2025年度個(gè)人別墅租賃合同模板2篇
- 2025年度環(huán)保工程監(jiān)理服務(wù)合同范本
- 2025年度商鋪買賣合同(含商業(yè)配套移交協(xié)議)4篇
- 2025-2030全球魚雷泵行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國賽車運(yùn)動駕駛模擬器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2024年臨床醫(yī)師定期考核試題中醫(yī)知識題庫及答案(共330題) (二)
- 2024年七年級語文下冊期末專項(xiàng)復(fù)習(xí):記敘文閱讀
- 2024年高純氮化鋁粉體項(xiàng)目可行性分析報(bào)告
- 安檢人員培訓(xùn)
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語試題
- 危險(xiǎn)性較大分部分項(xiàng)工程及施工現(xiàn)場易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識》備考題庫(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 直流電機(jī)電樞繞組簡介
- GB/T 19889.5-2006聲學(xué)建筑和建筑構(gòu)件隔聲測量第5部分:外墻構(gòu)件和外墻空氣聲隔聲的現(xiàn)場測量
- 《土地寶懺》2019版定稿
評論
0/150
提交評論