版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第四章第四章 軟件總體設(shè)計(jì)軟件總體設(shè)計(jì)2022-4-29第四章 軟件總體設(shè)計(jì)2【本章引言】p 總體設(shè)計(jì)過程通常由兩個(gè)階段組成:系統(tǒng)設(shè)計(jì)和總體設(shè)計(jì)過程通常由兩個(gè)階段組成:系統(tǒng)設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì)。其中系統(tǒng)設(shè)計(jì)的任務(wù)是確定系統(tǒng)的具結(jié)構(gòu)設(shè)計(jì)。其中系統(tǒng)設(shè)計(jì)的任務(wù)是確定系統(tǒng)的具體實(shí)現(xiàn)方案,結(jié)構(gòu)設(shè)計(jì)則是確定軟件的模塊結(jié)構(gòu)。體實(shí)現(xiàn)方案,結(jié)構(gòu)設(shè)計(jì)則是確定軟件的模塊結(jié)構(gòu)。這兩個(gè)階段是緊密聯(lián)系在一起的,它們執(zhí)行的效這兩個(gè)階段是緊密聯(lián)系在一起的,它們執(zhí)行的效果將直接影響到總體設(shè)計(jì)好壞,乃至整個(gè)軟件工果將直接影響到總體設(shè)計(jì)好壞,乃至整個(gè)軟件工程的合理與否。前一個(gè)階段是后一個(gè)階段的基礎(chǔ),程的合理與否。前一個(gè)階段是后一個(gè)階段
2、的基礎(chǔ),后一個(gè)階段是前一個(gè)階段的發(fā)展方向。因此,我后一個(gè)階段是前一個(gè)階段的發(fā)展方向。因此,我們?cè)诳傮w設(shè)計(jì)的整個(gè)過程中必須圍繞系統(tǒng)設(shè)計(jì)和們?cè)诳傮w設(shè)計(jì)的整個(gè)過程中必須圍繞系統(tǒng)設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì)這兩個(gè)階段展開每一項(xiàng)工作。結(jié)構(gòu)設(shè)計(jì)這兩個(gè)階段展開每一項(xiàng)工作。2022-4-29第四章 軟件總體設(shè)計(jì)3第四章 軟件總體設(shè)計(jì)【本章重點(diǎn)】【本章重點(diǎn)】p軟件設(shè)計(jì)的概念與原則軟件設(shè)計(jì)的概念與原則 ;p掌握總體設(shè)計(jì)的步驟和方法掌握總體設(shè)計(jì)的步驟和方法 ;【教學(xué)目標(biāo)】【教學(xué)目標(biāo)】p掌握軟件設(shè)計(jì)的概念與原則掌握軟件設(shè)計(jì)的概念與原則 ;p掌握總體設(shè)計(jì)的步驟和方法掌握總體設(shè)計(jì)的步驟和方法 ;p了解總體設(shè)計(jì)的文檔與評(píng)審。了解總體設(shè)計(jì)
3、的文檔與評(píng)審。2022-4-29第四章 軟件總體設(shè)計(jì)4第四章 軟件總體設(shè)計(jì)p 4.1 4.1 總體設(shè)計(jì)概述總體設(shè)計(jì)概述 p 4.2 4.2 總體設(shè)計(jì)的圖形描述工具總體設(shè)計(jì)的圖形描述工具 p 4.3 4.3 模塊化設(shè)計(jì)模塊化設(shè)計(jì) p 4.4 4.4 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法 p 4.5 4.5 小結(jié)小結(jié)p 4.6 4.6 習(xí)題習(xí)題 2022-4-29第四章 軟件總體設(shè)計(jì)5軟件編碼前,必須先進(jìn)行軟件設(shè)計(jì)。軟件設(shè)計(jì)軟件編碼前,必須先進(jìn)行軟件設(shè)計(jì)。軟件設(shè)計(jì)是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件的質(zhì)量。是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件的質(zhì)量。在軟件需求分析階段已經(jīng)完全弄清楚了軟件在軟件需求
4、分析階段已經(jīng)完全弄清楚了軟件的各種需求,較好地解決了所開發(fā)的軟件的各種需求,較好地解決了所開發(fā)的軟件“做什做什么么”的問題,并已在軟件需求說明書和數(shù)據(jù)要求的問題,并已在軟件需求說明書和數(shù)據(jù)要求說明書中詳盡和充分地闡明了這些需求以后,下說明書中詳盡和充分地闡明了這些需求以后,下一步就要著手實(shí)現(xiàn)軟件的需求,即軟件設(shè)計(jì)階段一步就要著手實(shí)現(xiàn)軟件的需求,即軟件設(shè)計(jì)階段要解決要解決“”的問題。的問題。 2022-4-29第四章 軟件總體設(shè)計(jì)6 軟件設(shè)計(jì)在開發(fā)階段中的重要性軟件設(shè)計(jì)在開發(fā)階段中的重要性軟件需求確定以后,進(jìn)入由軟件設(shè)計(jì)、編碼、軟件需求確定以后,進(jìn)入由軟件設(shè)計(jì)、編碼、測(cè)試三個(gè)關(guān)聯(lián)階段構(gòu)成的開發(fā)階
5、段。開發(fā)階段的測(cè)試三個(gè)關(guān)聯(lián)階段構(gòu)成的開發(fā)階段。開發(fā)階段的信息流如圖所示。在設(shè)計(jì)步驟中,根據(jù)軟件的功信息流如圖所示。在設(shè)計(jì)步驟中,根據(jù)軟件的功能和性能需求等,采用某種設(shè)計(jì)方法進(jìn)行數(shù)據(jù)設(shè)能和性能需求等,采用某種設(shè)計(jì)方法進(jìn)行數(shù)據(jù)設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。計(jì)、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。2022-4-29第四章 軟件總體設(shè)計(jì)72022-4-29第四章 軟件總體設(shè)計(jì)8p 數(shù)據(jù)設(shè)計(jì)側(cè)重于軟件數(shù)據(jù)結(jié)構(gòu)的定義數(shù)據(jù)設(shè)計(jì)側(cè)重于軟件數(shù)據(jù)結(jié)構(gòu)的定義p 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)的整體結(jié)構(gòu),是軟件開系統(tǒng)結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)的整體結(jié)構(gòu),是軟件開發(fā)的核心步驟。在設(shè)計(jì)步驟中,建立軟件主要成份發(fā)的核心步驟。在設(shè)計(jì)步驟中,建立軟件
6、主要成份之間的關(guān)系之間的關(guān)系p 過程設(shè)計(jì)過程設(shè)計(jì)在編碼步驟中,根據(jù)這種過程在編碼步驟中,根據(jù)這種過程性描述,生成源程序代碼,然后性描述,生成源程序代碼,然后通過測(cè)試,最終得到完整有效的通過測(cè)試,最終得到完整有效的軟件。軟件。2022-4-29第四章 軟件總體設(shè)計(jì)92022-4-29第四章 軟件總體設(shè)計(jì)10軟件設(shè)計(jì)階段的任務(wù)軟件設(shè)計(jì)階段的任務(wù)一、軟件設(shè)計(jì)的任務(wù)一、軟件設(shè)計(jì)的任務(wù)將分析階段獲得的需求說明轉(zhuǎn)換為計(jì)算機(jī)中將分析階段獲得的需求說明轉(zhuǎn)換為計(jì)算機(jī)中可實(shí)現(xiàn)的系統(tǒng),完成系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),包括數(shù)據(jù)可實(shí)現(xiàn)的系統(tǒng),完成系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),包括數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu),最后得到軟件設(shè)計(jì)說明書。結(jié)構(gòu)和程序結(jié)構(gòu),最后得
7、到軟件設(shè)計(jì)說明書。從工程管理的角度來看,軟件設(shè)計(jì)分兩步完成;分為從工程管理的角度來看,軟件設(shè)計(jì)分兩步完成;分為總體設(shè)計(jì)總體設(shè)計(jì)( (概要設(shè)計(jì)概要設(shè)計(jì)) )和詳細(xì)設(shè)計(jì)兩個(gè)階段。其工作流程和詳細(xì)設(shè)計(jì)兩個(gè)階段。其工作流程如圖所示。如圖所示。 首先做概要設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟首先做概要設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。然后是詳細(xì)設(shè)計(jì),即過程設(shè)計(jì)。通過對(duì)件的系統(tǒng)結(jié)構(gòu)。然后是詳細(xì)設(shè)計(jì),即過程設(shè)計(jì)。通過對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。2022-4-29第四章 軟件總體設(shè)計(jì)11把分析模型轉(zhuǎn)變成軟件把分析模型轉(zhuǎn)變成軟件
8、數(shù)據(jù)詞典 數(shù) 據(jù) 流 圖 實(shí)實(shí) 體 關(guān) 系 圖 狀態(tài)轉(zhuǎn)換圖 加 工 控 制 規(guī) 規(guī) 格 格 說 說 明 明 數(shù) 據(jù) 對(duì) 象 描 述 過程設(shè)計(jì) 接口設(shè)計(jì) 體系結(jié)構(gòu)設(shè)計(jì) 數(shù)據(jù)設(shè)計(jì) 2022-4-29第四章 軟件總體設(shè)計(jì)122022-4-29第四章 軟件總體設(shè)計(jì)132022-4-29第四章 軟件總體設(shè)計(jì)142022-4-29第四章 軟件總體設(shè)計(jì)15總體總體設(shè)計(jì)設(shè)計(jì)需求需求 說明書說明書復(fù)審復(fù)審軟件結(jié)構(gòu)軟件結(jié)構(gòu)修修 改改詳細(xì)詳細(xì)設(shè)計(jì)設(shè)計(jì)可接受可接受模塊描述模塊描述復(fù)審復(fù)審修修 改改 設(shè)計(jì)設(shè)計(jì)說明書說明書軟件設(shè)計(jì)工作流程軟件設(shè)計(jì)工作流程設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)說明書,設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)
9、說明書,根據(jù)設(shè)計(jì)方法的不同,有不同的設(shè)計(jì)文檔。每根據(jù)設(shè)計(jì)方法的不同,有不同的設(shè)計(jì)文檔。每個(gè)設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。個(gè)設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。2022-4-29第四章 軟件總體設(shè)計(jì)16 開發(fā)方法不同,確定軟件結(jié)構(gòu)的方法也不同。開發(fā)方法不同,確定軟件結(jié)構(gòu)的方法也不同。例如例如SD法,是從分層的法,是從分層的DFD圖導(dǎo)出初始的結(jié)構(gòu)圖,圖導(dǎo)出初始的結(jié)構(gòu)圖,再對(duì)初始的結(jié)構(gòu)圖進(jìn)行改進(jìn),獲得最終的結(jié)構(gòu)圖。再對(duì)初始的結(jié)構(gòu)圖進(jìn)行改進(jìn),獲得最終的結(jié)構(gòu)圖。 一般包括確定系統(tǒng)的軟件結(jié)構(gòu),分解模塊一般包括確定系統(tǒng)的軟件結(jié)構(gòu),分解模塊 ,確定系統(tǒng)的模塊層次關(guān)系。確定系統(tǒng)的模塊層次關(guān)系。 要確定數(shù)據(jù)的類型,組織
10、、存取方式,相關(guān)程度要確定數(shù)據(jù)的類型,組織、存取方式,相關(guān)程度及處理方式等。及處理方式等。 軟件設(shè)計(jì)階段的任務(wù)可分為三部分:軟件設(shè)計(jì)階段的任務(wù)可分為三部分:2022-4-29第四章 軟件總體設(shè)計(jì)17二、軟件設(shè)計(jì)的目標(biāo)二、軟件設(shè)計(jì)的目標(biāo)在設(shè)計(jì)階段應(yīng)達(dá)到的目標(biāo)是在設(shè)計(jì)階段應(yīng)達(dá)到的目標(biāo)是: :提高可靠性;提高可維護(hù)性;提高可理解性;提高可靠性;提高可維護(hù)性;提高可理解性;提高效率。提高效率。高可靠性高可靠性高可維護(hù)性高可維護(hù)性高可理解性高可理解性高效率高效率 軟件設(shè)計(jì)的目標(biāo)軟件設(shè)計(jì)的目標(biāo)2022-4-29第四章 軟件總體設(shè)計(jì)18常用的設(shè)計(jì)方法有:常用的設(shè)計(jì)方法有:SD法、法、Jackson法、法、H
11、IPO法、法、Parnas法、法、Warnier法等。法等。衡量該目標(biāo)的準(zhǔn)則衡量該目標(biāo)的準(zhǔn)則1、軟件實(shí)體有明顯的層次結(jié)構(gòu),利于軟件元素間、軟件實(shí)體有明顯的層次結(jié)構(gòu),利于軟件元素間控制控制2、軟件實(shí)體應(yīng)該是模塊化的,模塊具有獨(dú)立功能、軟件實(shí)體應(yīng)該是模塊化的,模塊具有獨(dú)立功能3、軟件實(shí)體與環(huán)境的界面清晰、軟件實(shí)體與環(huán)境的界面清晰4、設(shè)計(jì)規(guī)格說明清晰、簡(jiǎn)潔、完整和無二義性、設(shè)計(jì)規(guī)格說明清晰、簡(jiǎn)潔、完整和無二義性2022-4-29第四章 軟件總體設(shè)計(jì)194.1 總體設(shè)計(jì)概述 4.1.1 4.1.1 總體設(shè)計(jì)的任務(wù)總體設(shè)計(jì)的任務(wù)p 確定模塊結(jié)構(gòu),劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確
12、定模塊間的聯(lián)系,確定數(shù)據(jù)結(jié)構(gòu)、文件結(jié)構(gòu)、數(shù)據(jù)庫(kù)模式,確定測(cè)試方法與策略。p 編寫總體設(shè)計(jì)說明書,用戶手冊(cè),測(cè)試計(jì)劃,選用相關(guān)的軟件工具來描述軟件結(jié)構(gòu),結(jié)構(gòu)圖是經(jīng)常使用的軟件描述工具。選擇分解功能與劃分模塊的設(shè)計(jì)原則2022-4-29第四章 軟件總體設(shè)計(jì)20 4.1 總體設(shè)計(jì)概述 4.1.2 4.1.2 總體設(shè)計(jì)的步驟總體設(shè)計(jì)的步驟1設(shè)計(jì)系統(tǒng)方案2選取合理的方案 3推薦最佳方案 4功能分解5軟件結(jié)構(gòu)設(shè)計(jì)6數(shù)據(jù)庫(kù)設(shè)計(jì)、文件結(jié)構(gòu)的設(shè)計(jì)7制定測(cè)試計(jì)劃8書寫文檔9審查和復(fù)審2022-4-29第四章 軟件總體設(shè)計(jì)21 軟件結(jié)構(gòu)是軟件模塊之間關(guān)系的表示,它決定軟件結(jié)構(gòu)是軟件模塊之間關(guān)系的表示,它決定了整個(gè)系
13、統(tǒng)的結(jié)構(gòu),也確定了系統(tǒng)的質(zhì)量。模塊之了整個(gè)系統(tǒng)的結(jié)構(gòu),也確定了系統(tǒng)的質(zhì)量。模塊之間的關(guān)系可有多種,但都可以歸結(jié)為一種層次關(guān)系。間的關(guān)系可有多種,但都可以歸結(jié)為一種層次關(guān)系。 軟件結(jié)構(gòu)圖是總體設(shè)計(jì)階段的主要描述工具,軟件結(jié)構(gòu)圖是總體設(shè)計(jì)階段的主要描述工具,它描述了構(gòu)成系統(tǒng)的基本元素它描述了構(gòu)成系統(tǒng)的基本元素模塊及模塊之間模塊及模塊之間的調(diào)用關(guān)系,模塊之間的數(shù)據(jù)傳遞關(guān)系。的調(diào)用關(guān)系,模塊之間的數(shù)據(jù)傳遞關(guān)系。2022-4-29第四章 軟件總體設(shè)計(jì)222022-4-29第四章 軟件總體設(shè)計(jì)23軟件結(jié)構(gòu)的基本概念軟件結(jié)構(gòu)的基本概念A(yù)BCDEFGHIJKLMModule例如,例如,過程、函數(shù)、子程序、過程
14、、函數(shù)、子程序、宏等,是構(gòu)成軟件系宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。統(tǒng)結(jié)構(gòu)的基本元素。 軟件結(jié)構(gòu)圖軟件結(jié)構(gòu)圖2022-4-29第四章 軟件總體設(shè)計(jì)24體系結(jié)構(gòu)設(shè)計(jì)是軟件設(shè)計(jì)的第一個(gè)階段,該階段側(cè)重體系結(jié)構(gòu)設(shè)計(jì)是軟件設(shè)計(jì)的第一個(gè)階段,該階段側(cè)重于系統(tǒng)宏觀結(jié)構(gòu)的設(shè)計(jì),而不關(guān)心模塊的內(nèi)部算法。于系統(tǒng)宏觀結(jié)構(gòu)的設(shè)計(jì),而不關(guān)心模塊的內(nèi)部算法。楊叔子院子曾這樣指點(diǎn)其弟子:楊叔子院子曾這樣指點(diǎn)其弟子: 文學(xué)中有科學(xué),音樂中有數(shù)學(xué),漫畫中有現(xiàn)代數(shù)學(xué)文學(xué)中有科學(xué),音樂中有數(shù)學(xué),漫畫中有現(xiàn)代數(shù)學(xué)的拓?fù)鋵W(xué)。漫畫家可以的拓?fù)鋵W(xué)。漫畫家可以“幾筆幾筆”就把一個(gè)人畫出來,不管就把一個(gè)人畫出來,不管怎么美化或丑化,就是活
15、像。為什么?因?yàn)槟窃趺疵阑虺蠡?,就是活像。為什么?因?yàn)槟恰皫坠P幾筆”不不是別的,而是拓?fù)鋵W(xué)中的特征不變量,這是事物最本質(zhì)的是別的,而是拓?fù)鋵W(xué)中的特征不變量,這是事物最本質(zhì)的東西。東西。體系結(jié)構(gòu)是軟件系統(tǒng)中最本質(zhì)的東西:體系結(jié)構(gòu)是軟件系統(tǒng)中最本質(zhì)的東西:軟件系統(tǒng)的體系結(jié)構(gòu)分為集中式的層次結(jié)構(gòu)、客戶機(jī)軟件系統(tǒng)的體系結(jié)構(gòu)分為集中式的層次結(jié)構(gòu)、客戶機(jī)/服務(wù)器等。服務(wù)器等。 2022-4-29第四章 軟件總體設(shè)計(jì)25一、層次結(jié)構(gòu)一、層次結(jié)構(gòu)2022-4-29第四章 軟件總體設(shè)計(jì)262022-4-29第四章 軟件總體設(shè)計(jì)27二、二、 客戶服務(wù)器模型客戶服務(wù)器模型(Client/Server Archit
16、ectural Model) C/S結(jié)構(gòu)是一種分布式模型,采用發(fā)請(qǐng)求、得結(jié)果的結(jié)構(gòu)是一種分布式模型,采用發(fā)請(qǐng)求、得結(jié)果的模式:模式:客戶機(jī)客戶機(jī) 向服務(wù)器發(fā)出請(qǐng)求向服務(wù)器發(fā)出請(qǐng)求(數(shù)據(jù)請(qǐng)求、網(wǎng)頁請(qǐng)求、文件數(shù)據(jù)請(qǐng)求、網(wǎng)頁請(qǐng)求、文件傳輸請(qǐng)求等傳輸請(qǐng)求等)。服務(wù)器服務(wù)器 響應(yīng)請(qǐng)求,進(jìn)行相應(yīng)的操作,將結(jié)果回傳給客戶響應(yīng)請(qǐng)求,進(jìn)行相應(yīng)的操作,將結(jié)果回傳給客戶機(jī),客戶機(jī)再將格式化后的結(jié)果呈現(xiàn)給用戶。機(jī),客戶機(jī)再將格式化后的結(jié)果呈現(xiàn)給用戶。C/S結(jié)構(gòu)的應(yīng)用都由三個(gè)相對(duì)獨(dú)立的邏輯部分組成結(jié)構(gòu)的應(yīng)用都由三個(gè)相對(duì)獨(dú)立的邏輯部分組成。用戶界面用戶界面應(yīng)用邏輯應(yīng)用邏輯數(shù)據(jù)訪問數(shù)據(jù)訪問三種邏輯之間的關(guān)系三種邏輯之間的關(guān)
17、系2022-4-29第四章 軟件總體設(shè)計(jì)28兩層客戶服務(wù)器模型兩層客戶服務(wù)器模型 (Two Tier Client/Server Architectural Model)服務(wù)器服務(wù)器1網(wǎng)絡(luò)網(wǎng)絡(luò)服務(wù)器服務(wù)器2服務(wù)器服務(wù)器M客戶客戶1客戶客戶2客戶客戶N兩層兩層Client/Server結(jié)構(gòu)結(jié)構(gòu)請(qǐng)求請(qǐng)求結(jié)果結(jié)果請(qǐng)求請(qǐng)求C/S的工作模式是一種遠(yuǎn)程過程調(diào)用的工作模式是一種遠(yuǎn)程過程調(diào)用(RPC,Remote Procedure Call)模式,允許客戶端和服務(wù)器端有不同的軟模式,允許客戶端和服務(wù)器端有不同的軟硬平臺(tái)。硬平臺(tái)。2022-4-29第四章 軟件總體設(shè)計(jì)29client1 1client2 2c
18、lient4 4client3 3Wide-bandwidth netwokCatalogueservercataloguevideoserverFilm clipfilespictureserverdigitisedphotographshypertextserverhypertextweb例:例:電影圖片庫(kù)的系統(tǒng)的體系結(jié)構(gòu)電影圖片庫(kù)的系統(tǒng)的體系結(jié)構(gòu)s2022-4-29第四章 軟件總體設(shè)計(jì)30 完整的應(yīng)用包含三個(gè)相對(duì)獨(dú)立的邏輯部分,而兩層的完整的應(yīng)用包含三個(gè)相對(duì)獨(dú)立的邏輯部分,而兩層的C/S結(jié)構(gòu)只有兩個(gè)端應(yīng)用。應(yīng)用邏輯應(yīng)該映射到哪一端上結(jié)構(gòu)只有兩個(gè)端應(yīng)用。應(yīng)用邏輯應(yīng)該映射到哪一端上呢?呢?
19、三種情況:三種情況:網(wǎng)網(wǎng) 絡(luò)絡(luò)用戶界面用戶界面客戶端邏輯客戶端邏輯應(yīng)用應(yīng)用服務(wù)端邏輯服務(wù)端邏輯應(yīng)用應(yīng)用客戶端客戶端用戶界面用戶界面邏輯應(yīng)用邏輯應(yīng)用數(shù)據(jù)訪問數(shù)據(jù)訪問用戶界面用戶界面邏輯應(yīng)用邏輯應(yīng)用數(shù)據(jù)訪問數(shù)據(jù)訪問服務(wù)器服務(wù)器應(yīng)用邏輯層的映射情況應(yīng)用邏輯層的映射情況數(shù)據(jù)訪問數(shù)據(jù)訪問C/S應(yīng)用應(yīng)用3C/S應(yīng)用應(yīng)用1C/S應(yīng)用應(yīng)用2 兩層兩層C/S架構(gòu)將數(shù)據(jù)表示和處理邏輯分開架構(gòu)將數(shù)據(jù)表示和處理邏輯分開 ,但應(yīng)用邏,但應(yīng)用邏輯和兩端之一是緊耦合的輯和兩端之一是緊耦合的,不適宜多用戶、多數(shù)據(jù)庫(kù)、非不適宜多用戶、多數(shù)據(jù)庫(kù)、非安全的網(wǎng)絡(luò)環(huán)境。安全的網(wǎng)絡(luò)環(huán)境。 2022-4-29第四章 軟件總體設(shè)計(jì)31 2.
20、三層三層/多層應(yīng)用模型多層應(yīng)用模型(Three/Multi Tier Model) 第一級(jí)是數(shù)據(jù)庫(kù)管理結(jié)點(diǎn)第一級(jí)是數(shù)據(jù)庫(kù)管理結(jié)點(diǎn)(database management node)。第二級(jí)或中間級(jí)是第二級(jí)或中間級(jí)是“商業(yè)邏輯結(jié)點(diǎn)商業(yè)邏輯結(jié)點(diǎn)” (business logic node),是是指具體應(yīng)用中實(shí)施的指具體應(yīng)用中實(shí)施的 程序邏輯和法則。程序邏輯和法則。第三級(jí)是用戶界面級(jí),強(qiáng)調(diào)高效、方便易用的用戶界面。第三級(jí)是用戶界面級(jí),強(qiáng)調(diào)高效、方便易用的用戶界面。Database management node(數(shù)據(jù)庫(kù)管理結(jié)點(diǎn))(數(shù)據(jù)庫(kù)管理結(jié)點(diǎn))business logic node(商業(yè)邏輯結(jié)點(diǎn))
21、商業(yè)邏輯結(jié)點(diǎn))Security(安全)(安全)Event(事件)(事件)Search(搜索)(搜索)ClientAClientDClientBClientC服服務(wù)務(wù)器器客客戶戶機(jī)機(jī)第一級(jí)第一級(jí)第二級(jí)第二級(jí)第三級(jí)第三級(jí)2022-4-29第四章 軟件總體設(shè)計(jì)32客戶端客戶端用戶界面用戶界面服務(wù)器服務(wù)器數(shù)據(jù)訪問數(shù)據(jù)訪問多層應(yīng)用模型多層應(yīng)用模型網(wǎng)網(wǎng) 絡(luò)絡(luò)應(yīng)用服務(wù)器應(yīng)用服務(wù)器1應(yīng)用邏輯應(yīng)用邏輯應(yīng)用服務(wù)器應(yīng)用服務(wù)器n應(yīng)用邏輯應(yīng)用邏輯 在多層模型中,中間層會(huì)用到應(yīng)用服務(wù),包括事務(wù)在多層模型中,中間層會(huì)用到應(yīng)用服務(wù),包括事務(wù)服務(wù)、消息服務(wù)等等。常見的事務(wù)服務(wù)器有服務(wù)、消息服務(wù)等等。常見的事務(wù)服務(wù)器有Micro
22、soft Transaction Server,消息服務(wù)器有,消息服務(wù)器有Microsoft Message Queue。2022-4-29第四章 軟件總體設(shè)計(jì)33三、分布式對(duì)象結(jié)構(gòu)三、分布式對(duì)象結(jié)構(gòu)(Distributed Objects Architecture) 在在C/S模型中,客戶和服務(wù)器在服務(wù)模型中,客戶和服務(wù)器在服務(wù)/請(qǐng)求上的差別,請(qǐng)求上的差別,在一定程度上限制了系統(tǒng)的靈活性和可擴(kuò)展性。在一定程度上限制了系統(tǒng)的靈活性和可擴(kuò)展性。 采用分布式對(duì)象結(jié)構(gòu)采用分布式對(duì)象結(jié)構(gòu) : “對(duì)象對(duì)象(Object)”提供服務(wù)的系統(tǒng)組件提供服務(wù)的系統(tǒng)組件(System Component)。 每個(gè)對(duì)
23、象在邏輯上是平等的,它們可以互相為對(duì)方提每個(gè)對(duì)象在邏輯上是平等的,它們可以互相為對(duì)方提供所需的服務(wù)。供所需的服務(wù)。 提供服務(wù)的對(duì)象就是服務(wù)器,而提出服務(wù)請(qǐng)求的對(duì)象提供服務(wù)的對(duì)象就是服務(wù)器,而提出服務(wù)請(qǐng)求的對(duì)象就是客戶。就是客戶。 2022-4-29第四章 軟件總體設(shè)計(jì)34 軟件總線軟件總線(Software Bus)的中間件的中間件(Middleware) 即即對(duì)象請(qǐng)求代理對(duì)象請(qǐng)求代理(Object Request Broker,ORB) 分布式對(duì)象結(jié)構(gòu)具有很好的開放性和透明性,用分布式對(duì)象結(jié)構(gòu)具有很好的開放性和透明性,用戶可以非常方便地在總線上添加、更新或刪除組件對(duì)戶可以非常方便地在總線上添
24、加、更新或刪除組件對(duì)象。象。軟件總線軟件總線(ORB)O1S(O1)O2S(O2)OnS(On)分布式對(duì)象結(jié)構(gòu)2022-4-29第四章 軟件總體設(shè)計(jì)354.2 總體設(shè)計(jì)的圖形工具 4.2.1 4.2.1 層次圖層次圖2022-4-29第四章 軟件總體設(shè)計(jì)364.2 總體設(shè)計(jì)的圖形工具4.2.2 HIPO4.2.2 HIPO圖圖2022-4-29第四章 軟件總體設(shè)計(jì)37大學(xué)教務(wù)管理系統(tǒng)大學(xué)教務(wù)管理系統(tǒng)H圖圖 2022-4-29第四章 軟件總體設(shè)計(jì)38IPO圖的一個(gè)例子圖的一個(gè)例子2022-4-29第四章 軟件總體設(shè)計(jì)39 4.2 總體設(shè)計(jì)的圖形工具4.2.3 4.2.3 結(jié)構(gòu)圖結(jié)構(gòu)圖2022-4
25、-29第四章 軟件總體設(shè)計(jì)40軟件結(jié)構(gòu)圖(軟件結(jié)構(gòu)圖(SCSC圖)圖)結(jié)構(gòu)圖結(jié)構(gòu)圖( (Structure Chart,SC圖圖) )是精確表達(dá)軟件是精確表達(dá)軟件結(jié)構(gòu)的圖形表示方法,它以特定的符號(hào)表示模塊、模結(jié)構(gòu)的圖形表示方法,它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。塊間的調(diào)用關(guān)系和模塊間信息的傳遞。Module用矩形框表示,框中寫有模塊用矩形框表示,框中寫有模塊的名字,說明模塊的功能。模塊是程序?qū)ο笥忻值牡拿?,說明模塊的功能。模塊是程序?qū)ο笥忻值募?。例如:過程、函數(shù)、子程序、宏等。集合。例如:過程、函數(shù)、子程序、宏等。調(diào)用箭頭邊上的小箭頭表示調(diào)用時(shí)從一調(diào)用箭頭邊上
26、的小箭頭表示調(diào)用時(shí)從一個(gè)模塊傳送給另一模塊的數(shù)據(jù)。個(gè)模塊傳送給另一模塊的數(shù)據(jù)。從一個(gè)模塊指向另一個(gè)模塊的箭頭表示前從一個(gè)模塊指向另一個(gè)模塊的箭頭表示前一模塊對(duì)后一模塊的調(diào)用,一般是上層調(diào)用下層。一模塊對(duì)后一模塊的調(diào)用,一般是上層調(diào)用下層。2022-4-29第四章 軟件總體設(shè)計(jì)41模塊模塊5模塊模塊5模塊模塊4模塊模塊4模塊模塊1模塊模塊3模塊模塊2valuesvaluesdatadata模塊模塊1模塊模塊2模塊模塊3valuesdatadata 模塊調(diào)用圖模塊調(diào)用圖2022-4-29第四章 軟件總體設(shè)計(jì)42 模塊間接口的表示模塊間接口的表示A A查詢學(xué)生成績(jī)查詢學(xué)生成績(jī)B B查找學(xué)生記錄查找學(xué)
27、生記錄學(xué)學(xué)號(hào)號(hào)查找成功的信查找成功的信息息常用尾端帶有空心圓的短常用尾端帶有空心圓的短箭頭表示數(shù)據(jù)信息,用尾端帶箭頭表示數(shù)據(jù)信息,用尾端帶有實(shí)心圓的短箭頭表示控制信有實(shí)心圓的短箭頭表示控制信息。息。有的結(jié)構(gòu)圖對(duì)這兩種信息有的結(jié)構(gòu)圖對(duì)這兩種信息不加以區(qū)別,一律用注有信息不加以區(qū)別,一律用注有信息名的短箭頭來表示,如圖所示。名的短箭頭來表示,如圖所示。數(shù)據(jù)信息數(shù)據(jù)信息控制信息控制信息2022-4-29第四章 軟件總體設(shè)計(jì)432022-4-29第四章 軟件總體設(shè)計(jì)44例:畫出打印報(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)系確定;一般從左
28、到右執(zhí)行。系確定;一般從左到右執(zhí)行。 執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。 報(bào)報(bào) 告告計(jì)計(jì) 算算獲得編輯獲得編輯確認(rèn)數(shù)據(jù)確認(rèn)數(shù)據(jù)讀入讀入編輯編輯打印報(bào)告頭打印報(bào)告頭打印報(bào)告尾打印報(bào)告尾打印打印輸入輸入EOFEOF輸入輸入已編輯已編輯 已編輯已編輯已編已編輯輯已確認(rèn)已確認(rèn)已確認(rèn)已確認(rèn)數(shù)據(jù)數(shù)據(jù)已確認(rèn)已確認(rèn)數(shù)據(jù)數(shù)據(jù)計(jì)算結(jié)果計(jì)算結(jié)果結(jié)果結(jié)果日期日期總結(jié)果總結(jié)果行行行行行打印報(bào)告打印報(bào)告予以確認(rèn)予以確認(rèn)2022-4-29第四章 軟件總體設(shè)計(jì)45結(jié)構(gòu)圖的例子結(jié)構(gòu)圖的例子產(chǎn)生最佳解的一般結(jié)構(gòu)產(chǎn)生最佳解的一般結(jié)構(gòu)2022-4-29第四章 軟件總體設(shè)計(jì)46 4.3 模塊化設(shè)計(jì)4.3.1 4.
29、3.1 模塊化與局部化模塊化與局部化1 1模塊化模塊化 模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮哪K是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,模塊可以單獨(dú)被命名、而且可通過名字集合,模塊可以單獨(dú)被命名、而且可通過名字來訪問,例如,過程、函數(shù)、子程序、宏等等來訪問,例如,過程、函數(shù)、子程序、宏等等都可作為模塊。模塊化就是把程序劃分成若干都可作為模塊。模塊化就是把程序劃分成若干個(gè)模塊,每個(gè)模塊具有一個(gè)子功能,把這些模個(gè)模塊,每個(gè)模塊具有一個(gè)子功能,把這些模塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功能,進(jìn)而滿足問題的要求。能,進(jìn)而滿足問題的要求。2022-4-29第
30、四章 軟件總體設(shè)計(jì)47“模塊模塊”,又稱,又稱“構(gòu)件構(gòu)件”,一般指用一個(gè)名字可,一般指用一個(gè)名字可調(diào)用的一段程序。它一般具有如下三個(gè)基本屬性:調(diào)用的一段程序。它一般具有如下三個(gè)基本屬性:功能功能 即指該模塊實(shí)現(xiàn)什么功能,做什么事情即指該模塊實(shí)現(xiàn)什么功能,做什么事情邏輯邏輯 即描述模塊內(nèi)部怎么做。即描述模塊內(nèi)部怎么做。狀態(tài)狀態(tài) 即該模塊使用時(shí)的環(huán)境和條件。即該模塊使用時(shí)的環(huán)境和條件。所謂模塊的獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只所謂模塊的獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡(jiǎn)單的。即功能專一,模塊之間
31、無過多模塊的接口是簡(jiǎn)單的。即功能專一,模塊之間無過多的相互作用的模塊。的相互作用的模塊。這種類型的模塊可以并行開發(fā),模塊獨(dú)立性越強(qiáng),這種類型的模塊可以并行開發(fā),模塊獨(dú)立性越強(qiáng),開發(fā)越容易。獨(dú)立性強(qiáng)的模塊,還能減少錯(cuò)誤的影響,開發(fā)越容易。獨(dú)立性強(qiáng)的模塊,還能減少錯(cuò)誤的影響,使模塊容易組合、修改及測(cè)試。使模塊容易組合、修改及測(cè)試。2022-4-29第四章 軟件總體設(shè)計(jì)48 模塊化的目的是模塊化的目的是將系統(tǒng)將系統(tǒng)“分而治之分而治之”,模塊化能夠降低問題,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測(cè)試和調(diào)試,因而也有助于提高軟解,易于測(cè)試和
32、調(diào)試,因而也有助于提高軟件的可靠性。件的可靠性。2022-4-29第四章 軟件總體設(shè)計(jì)49模塊化降低軟件復(fù)雜度的模塊化降低軟件復(fù)雜度的簡(jiǎn)單證明簡(jiǎn)單證明令:令:C( (X) )表示問題表示問題 X 的復(fù)雜度函數(shù);的復(fù)雜度函數(shù); E( (X) )解決問題解決問題 X 所需工作量的復(fù)雜度函所需工作量的復(fù)雜度函數(shù);數(shù);若:有問題若:有問題 P1,P2 ;C( (P1) ) C(P2); 顯然:顯然:E( (P1) ) E( (P2) )由經(jīng)驗(yàn):由經(jīng)驗(yàn):C( (P1+P2) ) C( (P1) )+ C( (P2) )于是:于是:E( (P1+P2) ) E( (P1) )+ E( (P2) )將問題將
33、問題( (P1+P2) )劃分為兩個(gè)問題劃分為兩個(gè)問題P1和和P2后,其后,其工作量和復(fù)雜度都降低。工作量和復(fù)雜度都降低。2022-4-29第四章 軟件總體設(shè)計(jì)50 并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。顯然,每個(gè)軟件系統(tǒng)都有一個(gè)最雜度和工作量增加。顯然,每個(gè)軟件系統(tǒng)都有一個(gè)最佳模塊數(shù)佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關(guān)系。述了模塊化與軟件成本的關(guān)系。軟件總成本軟件總成本 模塊化與軟件成本的關(guān)系模塊化與軟件成本的關(guān)系成本成本模塊模塊數(shù)目數(shù)目模塊成本模塊成本接口成
34、本接口成本最小成本區(qū)最小成本區(qū)M2022-4-29第四章 軟件總體設(shè)計(jì)514.3 模塊化設(shè)計(jì)4.3.1 4.3.1 模塊化與局部化模塊化與局部化 2 2局部化局部化 局部化的概念和信息隱蔽概念密切相關(guān)。局部化的概念和信息隱蔽概念密切相關(guān)。所謂局部化是指把一些關(guān)系密切的軟件元素所謂局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。在模塊中使用局部數(shù)物理地放得彼此靠近。在模塊中使用局部數(shù)據(jù)元素是局部化的一個(gè)例子。顯然,局部化據(jù)元素是局部化的一個(gè)例子。顯然,局部化有助于實(shí)現(xiàn)信息隱蔽。有助于實(shí)現(xiàn)信息隱蔽。2022-4-29第四章 軟件總體設(shè)計(jì)52 4.3 模塊化設(shè)計(jì)4.3.2 4.3.2 模塊化獨(dú)
35、立性模塊化獨(dú)立性 模塊的獨(dú)立性可以用兩個(gè)定性的標(biāo)準(zhǔn)來度量:耦合和內(nèi)聚。耦合是模塊之間互相連接的緊密程度的度量,內(nèi)聚是一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。 2022-4-29第四章 軟件總體設(shè)計(jì)53 4.3 模塊化設(shè)計(jì)4.3.2 4.3.2 模塊化獨(dú)立性模塊化獨(dú)立性1 1耦合耦合p 非直接耦合非直接耦合 p 數(shù)據(jù)耦合數(shù)據(jù)耦合 p 標(biāo)記耦合標(biāo)記耦合 p 控制耦合控制耦合 p 公共耦合公共耦合 p 內(nèi)容耦合內(nèi)容耦合 2022-4-29第四章 軟件總體設(shè)計(jì)54耦合性是指軟件結(jié)構(gòu)中模塊相互連接的緊密耦合性是指軟件結(jié)構(gòu)中模塊相互連接的緊密程度,是模塊間相互連接性的度量。模塊分解的程度,是模塊間相
36、互連接性的度量。模塊分解的一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大小可從三個(gè)方面衡量:小可從三個(gè)方面衡量:數(shù)據(jù)數(shù)據(jù)方式方式作用作用少少多多數(shù)量數(shù)量控制控制混合混合直 接 調(diào)直 接 調(diào)用用過程過程調(diào)用調(diào)用 塊間聯(lián)系方式有塊間聯(lián)系方式有“直接引用直接引用”或或“用過程語句調(diào)用用過程語句調(diào)用” 塊間傳送的共用信息塊間傳送的共用信息( (參數(shù)參數(shù)) )類型,可為類型,可為“數(shù)據(jù)型數(shù)據(jù)型”、“控制型控制型”或或“混合型混合型”( (數(shù)據(jù)數(shù)據(jù)/ /控制型控制型) ) 塊間傳送的共用信息的數(shù)量塊間傳送的共用信息的數(shù)量2022-4-29第四章 軟件總體設(shè)計(jì)55模塊分
37、解的一個(gè)目標(biāo)是使塊間聯(lián)系模塊分解的一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,達(dá)到這個(gè)目標(biāo)可通過以下措盡可能小,達(dá)到這個(gè)目標(biāo)可通過以下措施。施。每個(gè)模塊用過程語句每個(gè)模塊用過程語句( (或函數(shù)方式等或函數(shù)方式等) )調(diào)用其他模塊。調(diào)用其他模塊。模塊間傳送的參數(shù)為數(shù)據(jù)型。模塊間傳送的參數(shù)為數(shù)據(jù)型。模塊間公用的信息模塊間公用的信息( (如參數(shù)等如參數(shù)等) )盡量盡量少。少。2022-4-29第四章 軟件總體設(shè)計(jì)56內(nèi)容耦合內(nèi)容耦合公共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合耦合數(shù)據(jù)耦合數(shù)據(jù)耦合一個(gè)模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)一個(gè)模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊的內(nèi)部一個(gè)模塊不通
38、過正常入口轉(zhuǎn)到另一模塊的內(nèi)部一個(gè)模塊有多個(gè)入口一個(gè)模塊有多個(gè)入口兩個(gè)模塊有部分代碼重迭兩個(gè)模塊有部分代碼重迭2022-4-29第四章 軟件總體設(shè)計(jì)57 若干模塊訪問一個(gè)公共的數(shù)據(jù)環(huán)境若干模塊訪問一個(gè)公共的數(shù)據(jù)環(huán)境, ,公共環(huán)境可公共環(huán)境可為全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)為全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所有公共等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所有公共耦合耦合模塊,嚴(yán)重影響模塊的可靠性和可適應(yīng)性,降低軟件模塊,嚴(yán)重影響模塊的可靠性和可適應(yīng)性,降低軟件的可讀性。的可讀性。2022-4-29第四章 軟件總體設(shè)計(jì)58 一個(gè)模塊傳遞給另一模塊
39、一個(gè)模塊傳遞給另一模塊的信息是用于控制該模塊內(nèi)的信息是用于控制該模塊內(nèi)部邏輯的控制信號(hào)。顯然,部邏輯的控制信號(hào)。顯然,對(duì)被控制模塊的任何修改,對(duì)被控制模塊的任何修改,都會(huì)影響控制模塊都會(huì)影響控制模塊。A BFlagf1f2fn.2022-4-29第四章 軟件總體設(shè)計(jì)59public int y;Public A(string x) if (x=”true”) y=1;Else y=0;Public void B ( ) if (y=1) F( ); / F( )是系統(tǒng)自定義是系統(tǒng)自定義的函數(shù)的函數(shù)ElseG( ); / G( )是系統(tǒng)自定是系統(tǒng)自定義的函數(shù)義的函數(shù)2022-4-29第四章 軟件
40、總體設(shè)計(jì)60 一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)復(fù)合的數(shù)據(jù)結(jié)構(gòu)。例如,包含幾個(gè)數(shù)一個(gè)復(fù)合的數(shù)據(jù)結(jié)構(gòu)。例如,包含幾個(gè)數(shù)據(jù)單項(xiàng)的記錄。據(jù)單項(xiàng)的記錄。 一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)單個(gè)的數(shù)據(jù)項(xiàng)單個(gè)的數(shù)據(jù)項(xiàng)2022-4-29第四章 軟件總體設(shè)計(jì)61p 總之,耦合是影響軟件復(fù)雜程度的一總之,耦合是影響軟件復(fù)雜程度的一個(gè)重要因素。應(yīng)該采取下述設(shè)計(jì)原則:個(gè)重要因素。應(yīng)該采取下述設(shè)計(jì)原則:2022-4-29第四章 軟件總體設(shè)計(jì)62 4.3 模塊化設(shè)計(jì)4.3.2 4.3.2 模塊化獨(dú)立性模塊化獨(dú)立性2 2內(nèi)聚內(nèi)聚p 偶然內(nèi)聚偶然內(nèi)聚
41、p 邏輯內(nèi)聚邏輯內(nèi)聚 p 時(shí)間內(nèi)聚時(shí)間內(nèi)聚 p 過程內(nèi)聚過程內(nèi)聚 p 通信內(nèi)聚通信內(nèi)聚 p 順序內(nèi)聚順序內(nèi)聚 p 功能內(nèi)聚功能內(nèi)聚 2022-4-29第四章 軟件總體設(shè)計(jì)63塊內(nèi)聯(lián)系的類型分為七類塊內(nèi)聯(lián)系的類型分為七類: :內(nèi)聚性表示一個(gè)內(nèi)聚性表示一個(gè)模塊內(nèi)部模塊內(nèi)部各種數(shù)據(jù)和各種各種數(shù)據(jù)和各種處理之間聯(lián)系的緊密程度,它是從功能的角處理之間聯(lián)系的緊密程度,它是從功能的角度來度量模塊間的聯(lián)系。顯然度來度量模塊間的聯(lián)系。顯然, ,塊內(nèi)聯(lián)系愈緊塊內(nèi)聯(lián)系愈緊, ,即內(nèi)聚性愈強(qiáng)即內(nèi)聚性愈強(qiáng), ,模塊獨(dú)立性愈好。模塊獨(dú)立性愈好。偶然型偶然型邏輯型邏輯型瞬時(shí)型瞬時(shí)型過程型過程型通信型通信型順序型順序型功能型
42、功能型2022-4-29第四章 軟件總體設(shè)計(jì)64模塊模塊T T中的三條語句毫無關(guān)系,中的三條語句毫無關(guān)系,A、B、C、D都不在文件都不在文件CARD FILE 中。模塊中。模塊P、Q、R分別與三條分別與三條語句有關(guān)。語句有關(guān)。PQRMOVE A TO BREAD CARD FILE MOVE C TO DT 偶然型模塊偶然型模塊又稱為巧合型,為了節(jié)約空間,將毫無關(guān)又稱為巧合型,為了節(jié)約空間,將毫無關(guān)系系( (或者聯(lián)系不多或者聯(lián)系不多) )的各成分放在一個(gè)模塊中。的各成分放在一個(gè)模塊中。這樣的模塊顯然不易理解,不易修改這樣的模塊顯然不易理解,不易修改。2022-4-29第四章 軟件總體設(shè)計(jì)65將
43、幾個(gè)邏輯上相似的功能放在一個(gè)模塊中,將幾個(gè)邏輯上相似的功能放在一個(gè)模塊中,調(diào)用時(shí)由調(diào)用模塊傳遞的參數(shù)確定執(zhí)行的功能。調(diào)用時(shí)由調(diào)用模塊傳遞的參數(shù)確定執(zhí)行的功能。由于要進(jìn)行控制參數(shù)的傳遞,必然要影響模塊由于要進(jìn)行控制參數(shù)的傳遞,必然要影響模塊的內(nèi)聚性。的內(nèi)聚性。調(diào)用模塊調(diào)用模塊判定判定讀讀一一個(gè)個(gè)記記錄錄寫寫一一個(gè)個(gè)記記錄錄 邏輯型模塊邏輯型模塊被調(diào)用模塊被調(diào)用模塊2022-4-29第四章 軟件總體設(shè)計(jì)66( (Temporal Cohesion) )將需要同時(shí)執(zhí)行的成分放在一個(gè)模塊中,將需要同時(shí)執(zhí)行的成分放在一個(gè)模塊中,因?yàn)槟K中的因?yàn)槟K中的各功能與時(shí)間有關(guān)各功能與時(shí)間有關(guān),因此又稱,因此又稱
44、為時(shí)間內(nèi)聚或經(jīng)典內(nèi)聚。例如,初始化模塊,為時(shí)間內(nèi)聚或經(jīng)典內(nèi)聚。例如,初始化模塊,中止模塊等這類模塊內(nèi)部結(jié)構(gòu)較簡(jiǎn)單,一般中止模塊等這類模塊內(nèi)部結(jié)構(gòu)較簡(jiǎn)單,一般較少判定,因此比邏輯內(nèi)聚強(qiáng),但是由于將較少判定,因此比邏輯內(nèi)聚強(qiáng),但是由于將多個(gè)功能放在一起,給修改和維護(hù)造成困難。多個(gè)功能放在一起,給修改和維護(hù)造成困難。2022-4-29第四章 軟件總體設(shè)計(jì)67( (Procedural Cohesion) )如果一個(gè)模塊內(nèi)的處理是相關(guān)的,而且如果一個(gè)模塊內(nèi)的處理是相關(guān)的,而且必須以特定次序執(zhí)行必須以特定次序執(zhí)行,則稱這個(gè)模塊,則稱這個(gè)模塊 為過程為過程內(nèi)聚模塊。通常通過程序流程圖來確定,例內(nèi)聚模塊。通
45、常通過程序流程圖來確定,例如把流程圖中的循環(huán)部分、判定部分、計(jì)算如把流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)模塊,這三個(gè)模塊都是過程內(nèi)部分分成三個(gè)模塊,這三個(gè)模塊都是過程內(nèi)聚模塊。聚模塊。2022-4-29第四章 軟件總體設(shè)計(jì)68模塊中的成分模塊中的成分引用共同的輸入數(shù)據(jù),或者引用共同的輸入數(shù)據(jù),或者產(chǎn)生相同的輸出數(shù)據(jù)產(chǎn)生相同的輸出數(shù)據(jù),則稱為是通信內(nèi)聚模塊,則稱為是通信內(nèi)聚模塊通信型模塊比瞬時(shí)型模塊的內(nèi)聚性強(qiáng),因通信型模塊比瞬時(shí)型模塊的內(nèi)聚性強(qiáng),因?yàn)槟K中包含了許多獨(dú)立的功能,但卻引用相為模塊中包含了許多獨(dú)立的功能,但卻引用相同數(shù)據(jù)同數(shù)據(jù)A打印打印報(bào)告報(bào)告1 1打印打印報(bào)告報(bào)告2 2打
46、印打印報(bào)告報(bào)告2 2B存入存入打印打印C修改修改刪除刪除打印打?。╝)(b)(c) 通信型模塊通信型模塊2022-4-29第四章 軟件總體設(shè)計(jì)692022-4-29第四章 軟件總體設(shè)計(jì)70( (Sequential Cohesion) )模塊中模塊中某個(gè)成分的輸出是另一成分的輸入某個(gè)成分的輸出是另一成分的輸入。由于。由于這類模塊無論數(shù)據(jù)還是執(zhí)行順序,模塊中的一部分依這類模塊無論數(shù)據(jù)還是執(zhí)行順序,模塊中的一部分依賴于另外一部分。賴于另外一部分。 順序型模塊,編輯功能的輸入是順序型模塊,編輯功能的輸入是讀入功能的輸出,打印功能的輸入是讀入功能的輸出,打印功能的輸入是累加功能的輸出累加功能的輸出。讀
47、入讀入編輯編輯A數(shù)據(jù)數(shù)據(jù)累加累加打印打印B結(jié)果結(jié)果 順序型模塊順序型模塊2022-4-29第四章 軟件總體設(shè)計(jì)71) )一個(gè)模塊包括而且僅包括完成一個(gè)模塊包括而且僅包括完成某一具體功能所必須的所有成分。某一具體功能所必須的所有成分。或者說,模塊的所有成分都是為完或者說,模塊的所有成分都是為完成該功能而成該功能而協(xié)同工作、緊密聯(lián)系、協(xié)同工作、緊密聯(lián)系、不可分割的不可分割的。 求解方程的功能模塊求解方程的功能模塊求求一元二次方程一元二次方程求平方根求平方根A AB B例如僅完成以下功能的模塊為功例如僅完成以下功能的模塊為功能模塊:能模塊: 求平方根求平方根 求解一元二次方程求解一元二次方程 計(jì)算利
48、息計(jì)算利息 判素?cái)?shù)判素?cái)?shù)2022-4-29第四章 軟件總體設(shè)計(jì)72p1計(jì)算雇員年齡并給出生日的模塊計(jì)算雇員年齡并給出生日的模塊p2 按給出的生日計(jì)算雇員年齡、退休時(shí)間的模塊。按給出的生日計(jì)算雇員年齡、退休時(shí)間的模塊。如果利用所計(jì)算的年齡來確定雇員將要退休的時(shí)間,如果利用所計(jì)算的年齡來確定雇員將要退休的時(shí)間,是什么內(nèi)聚;是什么內(nèi)聚;p如果分別計(jì)算年齡和退休時(shí)間,但使用相同生日數(shù)如果分別計(jì)算年齡和退休時(shí)間,但使用相同生日數(shù)據(jù),是什么內(nèi)聚據(jù),是什么內(nèi)聚p3 打印季度開支報(bào)告、月份開支報(bào)告和日開支報(bào)告。打印季度開支報(bào)告、月份開支報(bào)告和日開支報(bào)告。具體打印哪一個(gè),將由傳入的控制標(biāo)志決定。如何具體打印哪一
49、個(gè),將由傳入的控制標(biāo)志決定。如何提高內(nèi)聚性?提高內(nèi)聚性? 功能內(nèi)聚功能內(nèi)聚 順序內(nèi)聚順序內(nèi)聚 通信內(nèi)聚通信內(nèi)聚 邏輯內(nèi)聚邏輯內(nèi)聚2022-4-29第四章 軟件總體設(shè)計(jì)73 4.3 模塊化設(shè)計(jì)4.3.2 4.3.2 模塊化獨(dú)立性模塊化獨(dú)立性3 3設(shè)計(jì)準(zhǔn)則設(shè)計(jì)準(zhǔn)則p模塊規(guī)模應(yīng)該適中模塊規(guī)模應(yīng)該適中 p改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性 p深度、寬度、扇入和扇出都應(yīng)適當(dāng)深度、寬度、扇入和扇出都應(yīng)適當(dāng) p模塊的作用范圍應(yīng)該在控制范圍之內(nèi)模塊的作用范圍應(yīng)該在控制范圍之內(nèi) p降低模塊接口的復(fù)雜程度降低模塊接口的復(fù)雜程度 p設(shè)計(jì)單入口單出口的模塊,避免設(shè)計(jì)單入口單出口的模塊,避免“病態(tài)連接
50、病態(tài)連接”p模塊功能應(yīng)該可以預(yù)測(cè)模塊功能應(yīng)該可以預(yù)測(cè)2022-4-29第四章 軟件總體設(shè)計(jì)741)1)模塊的大小要適中模塊的大小要適中 模塊的大小,可以用模塊中所含模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。把模塊的語句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)大小限制在一定的范圍之內(nèi)。通常規(guī)定其語句行數(shù)在定其語句行數(shù)在5050100100左右,保持左右,保持在一頁紙之內(nèi),最多不超過在一頁紙之內(nèi),最多不超過500500行。行。2022-4-29第四章 軟件總體設(shè)計(jì)75 消除重復(fù)功能(a)(b)(c)(d)Q重復(fù)部分重復(fù)部分XQ1YQ22)2)改進(jìn)軟件結(jié)構(gòu),消除重復(fù)功能
51、改進(jìn)軟件結(jié)構(gòu),消除重復(fù)功能 若兩模塊含有重復(fù)的部分,應(yīng)設(shè)法將重復(fù)的功能消去。若兩模塊含有重復(fù)的部分,應(yīng)設(shè)法將重復(fù)的功能消去。 如下圖所示,如下圖所示,Q1和和Q2兩個(gè)模塊具有類似的功能,圖兩個(gè)模塊具有類似的功能,圖( (b) )、( (c) )、( (d) )方案就是可能的解決方案。方案就是可能的解決方案。XYQ1Q2QYQ2XQ1QXQ1YQ22022-4-29第四章 軟件總體設(shè)計(jì)76邏輯內(nèi)聚邏輯內(nèi)聚2022-4-29第四章 軟件總體設(shè)計(jì)77消除重復(fù)功能,改善軟件結(jié)構(gòu)消除重復(fù)功能,改善軟件結(jié)構(gòu) 完全相似:在結(jié)構(gòu)上完全相似,可能只完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時(shí)可以
52、采取完是在數(shù)據(jù)類型上不一致。此時(shí)可以采取完全合并的方法。全合并的方法。 局部相似:找出其相同部分,分離出去,局部相似:找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。還可重新定義成一個(gè)獨(dú)立的下一層模塊。還可以與它的上級(jí)模塊合并。以與它的上級(jí)模塊合并。2022-4-29第四章 軟件總體設(shè)計(jì)78:深度:表示軟件結(jié)構(gòu)中從頂層模塊到最底深度:表示軟件結(jié)構(gòu)中從頂層模塊到最底層模塊的層數(shù)。層模塊的層數(shù)。寬度:表示控制的總分布。寬度:表示控制的總分布。扇出數(shù):指一個(gè)模塊直接控制下屬的模塊扇出數(shù):指一個(gè)模塊直接控制下屬的模塊個(gè)數(shù)。個(gè)數(shù)。扇入數(shù):指一個(gè)模塊的直接上屬模塊個(gè)數(shù)。扇入數(shù):指一個(gè)模塊的直接上
53、屬模塊個(gè)數(shù)。3 3)深入、寬度、扇入、扇出)深入、寬度、扇入、扇出2022-4-29第四章 軟件總體設(shè)計(jì)793.2.13.2.1軟件結(jié)構(gòu)的基本概念軟件結(jié)構(gòu)的基本概念 軟件結(jié)構(gòu)示意圖軟件結(jié)構(gòu)示意圖一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。扇出數(shù),在底部有較高的扇入數(shù)。2022-4-29第四章 軟件總體設(shè)計(jì)80p深度、寬度、扇入和扇出都應(yīng)適當(dāng)深度、寬度、扇入和扇出都應(yīng)適當(dāng)2022-4-29第四章 軟件總體設(shè)計(jì)81一個(gè)模塊調(diào)用其他模塊的個(gè)數(shù),
54、稱為該模塊的扇出。一個(gè)模塊調(diào)用其他模塊的個(gè)數(shù),稱為該模塊的扇出。模塊的扇出不宜過大,一般認(rèn)為不要超出個(gè)。模塊的扇出不宜過大,一般認(rèn)為不要超出個(gè)。 一個(gè)模塊被其他模塊調(diào)用的個(gè)數(shù),稱為該模塊的扇一個(gè)模塊被其他模塊調(diào)用的個(gè)數(shù),稱為該模塊的扇入。扇入越大,除服務(wù)性模塊外,模塊的扇入扇出數(shù)不入。扇入越大,除服務(wù)性模塊外,模塊的扇入扇出數(shù)不宜太多,否則塊間聯(lián)系增加。宜太多,否則塊間聯(lián)系增加。2022-4-29第四章 軟件總體設(shè)計(jì)82控制范圍控制范圍 結(jié)構(gòu)方面的特點(diǎn),包括模塊及其結(jié)構(gòu)方面的特點(diǎn),包括模塊及其 所有下屬模塊。所有下屬模塊。作用范圍作用范圍 判斷所涉及到的模塊,是從功能判斷所涉及到的模塊,是從功
55、能 特點(diǎn)考慮的。特點(diǎn)考慮的。SDSD方法認(rèn)為:方法認(rèn)為: 如圖如圖(b)(b)中的設(shè)計(jì),中的設(shè)計(jì),判定的作用范圍恰好在判定所在模塊的下一層。判定的作用范圍恰好在判定所在模塊的下一層。4)4)模塊的作用范圍與控制范圍模塊的作用范圍與控制范圍2022-4-29第四章 軟件總體設(shè)計(jì)83TOPXTBAB1B2圖圖(b)(b)中模塊中模塊TOP 的控制范圍是:的控制范圍是:模塊模塊 TOP、X、T、B、A、B1、B2;模塊模塊B 的控制范圍與作用范圍相同,的控制范圍與作用范圍相同,均為:均為:模塊模塊B、A、B1、B2圖圖(a)(a)中模塊中模塊A A的控制范圍:的控制范圍: A、B、C、D、G、E、F
56、如果模塊如果模塊F F的判定涉及到模塊的判定涉及到模塊B、E、F則則F F的的作用范圍:的的作用范圍:B、E、FABCDGEFFBE (a) (b)2022-4-29第四章 軟件總體設(shè)計(jì)84顯然,圖顯然,圖( (a) )不滿足作用范圍應(yīng)與控制范圍不滿足作用范圍應(yīng)與控制范圍的原則,模塊的原則,模塊F F的作用范圍不在控制范圍之內(nèi)。的作用范圍不在控制范圍之內(nèi)。圖圖( (b) )中模塊中模塊TOP和圖和圖( (c) )中模塊中模塊B雖然滿足雖然滿足上述原則,但其作用范圍所涉及到的模塊不是上述原則,但其作用范圍所涉及到的模塊不是直接的。直接的。圖圖( (d) )的模塊設(shè)計(jì)最合理。的模塊設(shè)計(jì)最合理。TO
57、PABCDEF (a)TOPABCDEF(d)TOPABCDEF(b)TOPABCDEF(c)比較比較( (a) )、( (b) )、( (c) )、( (d)4)4種設(shè)計(jì)方案的優(yōu)劣種設(shè)計(jì)方案的優(yōu)劣2022-4-29第四章 軟件總體設(shè)計(jì)855 5)降低接口復(fù)雜度)降低接口復(fù)雜度例如:求一元二次方程的跟的模塊,模塊名為例如:求一元二次方程的跟的模塊,模塊名為Quad_Root,這里有這里有2種接口方式種接口方式a. Quad_Root(Tbl,X)b. Quad_Root(A,B,C,Root1,Root2)2022-4-29第四章 軟件總體設(shè)計(jì)86 一個(gè)功能可預(yù)測(cè)的模塊,不論內(nèi)部處理細(xì)節(jié)一個(gè)功
58、能可預(yù)測(cè)的模塊,不論內(nèi)部處理細(xì)節(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模塊內(nèi)部蘊(yùn)藏有一些特殊的鮮為果。但是,如果模塊內(nèi)部蘊(yùn)藏有一些特殊的鮮為人知的功能時(shí),這個(gè)模塊就可能是不可預(yù)測(cè)的。人知的功能時(shí),這個(gè)模塊就可能是不可預(yù)測(cè)的。對(duì)于這種模塊,如果調(diào)用者不小心使用,其結(jié)果對(duì)于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測(cè)。將不可預(yù)測(cè)。6) 6) 功能可預(yù)測(cè)的模塊,但避免過分受功能可預(yù)測(cè)的模塊,但避免過分受限制的模塊限制的模塊2022-4-29第四章 軟件總體設(shè)計(jì)872022-4-29第四章 軟件總體設(shè)計(jì)88 4.3 模塊化設(shè)計(jì)4.3.3
59、4.3.3 抽象與信息隱蔽抽象與信息隱蔽1 1抽象抽象 抽象是人類認(rèn)識(shí)問題和解決問題的基本工抽象是人類認(rèn)識(shí)問題和解決問題的基本工具和方法。在解決復(fù)雜的具體問題時(shí),人們具和方法。在解決復(fù)雜的具體問題時(shí),人們往往先忽略其細(xì)節(jié)和非本質(zhì)的方面,而集中往往先忽略其細(xì)節(jié)和非本質(zhì)的方面,而集中注意力去分析問題的本質(zhì)和主要方面,搞清注意力去分析問題的本質(zhì)和主要方面,搞清所要解決的問題的本質(zhì)。同時(shí)人們?cè)诳偨Y(jié)認(rèn)所要解決的問題的本質(zhì)。同時(shí)人們?cè)诳偨Y(jié)認(rèn)識(shí)和實(shí)驗(yàn)規(guī)律時(shí),也往往突出各類問題的共識(shí)和實(shí)驗(yàn)規(guī)律時(shí),也往往突出各類問題的共性,找出各種客觀事物、狀態(tài)和過程間的聯(lián)性,找出各種客觀事物、狀態(tài)和過程間的聯(lián)系和相似性,加以
60、概括和提取,即抽象。系和相似性,加以概括和提取,即抽象。 2022-4-29第四章 軟件總體設(shè)計(jì)89 4.3 模塊化設(shè)計(jì)4.3.3 4.3.3 抽象與信息隱蔽抽象與信息隱蔽2 2信息隱蔽信息隱蔽 信息隱蔽原理認(rèn)為:模塊所包含的信息(過信息隱蔽原理認(rèn)為:模塊所包含的信息(過程和數(shù)據(jù))對(duì)于其他模塊來說應(yīng)該是隱蔽的。程和數(shù)據(jù))對(duì)于其他模塊來說應(yīng)該是隱蔽的。也就是說,模塊應(yīng)當(dāng)被這樣規(guī)定和設(shè)計(jì),使也就是說,模塊應(yīng)當(dāng)被這樣規(guī)定和設(shè)計(jì),使得包含在模塊中的信息(過程和數(shù)據(jù))對(duì)于得包含在模塊中的信息(過程和數(shù)據(jù))對(duì)于其他不需要這些信息的模塊來說,是不能訪其他不需要這些信息的模塊來說,是不能訪問的,或者說是問的,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)稅績(jī)效制度
- 象山村民說事制度
- 論按日計(jì)罰制度
- 落實(shí)企業(yè)(職業(yè))年金制度
- 2026云南中國(guó)郵政儲(chǔ)蓄銀行股份有限公司普洱市分行招聘10人參考考試題庫(kù)附答案解析
- 桂林銀行考試試題及答案
- 2026廣東清遠(yuǎn)市陽山縣城市管理和綜合執(zhí)法局第一次招聘城市管理監(jiān)察協(xié)管員和政府購(gòu)買服務(wù)人員3人參考考試題庫(kù)附答案解析
- 2026上海黃浦區(qū)中意工程創(chuàng)新學(xué)院教務(wù)崗位招聘1人參考考試題庫(kù)附答案解析
- 2026四川成都城建投資管理集團(tuán)有限責(zé)任公司所屬數(shù)智集團(tuán)招聘3人備考考試試題附答案解析
- 2026上半年黑龍江省體育局事業(yè)單位招聘13人備考考試試題附答案解析
- 《中華人民共和國(guó)危險(xiǎn)化學(xué)品安全法》全套解讀
- 推拿按摩腰背部課件
- 散養(yǎng)土雞養(yǎng)雞課件
- 戰(zhàn)略屋策略體系roadmapPP T模板(101 頁)
- 2025年醫(yī)療輔助崗面試題及答案
- T-CI 1078-2025 堿性電解水復(fù)合隔膜測(cè)試方法
- 新入職小學(xué)教師如何快速成長(zhǎng)個(gè)人專業(yè)發(fā)展計(jì)劃
- 門診導(dǎo)診工作流程
- 2025云南保山電力股份有限公司招聘(100人)筆試歷年參考題庫(kù)附帶答案詳解
- 寫字樓物業(yè)安全管理實(shí)務(wù)操作手冊(cè)
- 2025年及未來5年中國(guó)飲料工業(yè)行業(yè)競(jìng)爭(zhēng)格局分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
評(píng)論
0/150
提交評(píng)論