




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程方法與實(shí)踐(機(jī)械工業(yè)出版社)高等院校計(jì)算機(jī)課程案例教程系列竇萬峰編著主講:李淑sz013@1.現(xiàn)代軟件工程(國家示范性軟件學(xué)院系列教材)張家浩/東南大學(xué) 機(jī)械工業(yè)出版社
2009.12.軟件工程
— 理論與實(shí)踐許家珆 曾翎 彭德中 編著 高等教育出版社2004.7機(jī)械工業(yè)出軟件工程-實(shí)踐者的研究方法(美)Roger
S.
Pressman著 鄭人杰等譯版社
2008.6Software
Engineering,
6th
EditionSommerville.I.
(影印版) 機(jī)械工業(yè)出版社
2003.4主要參考書:總
目
錄第1章 軟件工程學(xué)概述(2學(xué)時(shí))第2章 軟件過程(2學(xué)時(shí))第3章 軟件過程模型(4學(xué)時(shí))第4章 案例研究(2學(xué)時(shí))第5章 軟件需求分析過程(4學(xué)時(shí))第6章 結(jié)構(gòu)化分析建模(4學(xué)時(shí))第7章 面向?qū)ο蠓治觯?學(xué)時(shí))第8章 軟件設(shè)計(jì)(4學(xué)時(shí))第9章 結(jié)構(gòu)化設(shè)計(jì)方法(4學(xué)時(shí))總
目
錄第10章第11章第12章第13章第14章第15章第16章面向?qū)ο笤O(shè)計(jì)(4學(xué)時(shí))軟件實(shí)現(xiàn)(2學(xué)時(shí))軟件測(cè)試(4學(xué)時(shí))軟件維護(hù)(2學(xué)時(shí))軟件項(xiàng)目管理(2學(xué)時(shí))軟件項(xiàng)目估算(1學(xué)時(shí))軟件項(xiàng)目計(jì)劃與管理(1學(xué)時(shí))第8章 軟件設(shè)計(jì)軟件設(shè)計(jì)概述軟件模塊化設(shè)計(jì)軟件結(jié)構(gòu)軟件系統(tǒng)結(jié)構(gòu)模型體系結(jié)構(gòu)模式習(xí)題8.1軟件設(shè)計(jì)概述軟件設(shè)計(jì)階段的基本目標(biāo)是構(gòu)造系統(tǒng)“怎么做”的模型描述,它是整個(gè)軟件開發(fā)過程的核心問題開發(fā)工作根據(jù)設(shè)計(jì)的方案進(jìn)行,軟件的總體設(shè)計(jì)決定了系統(tǒng)的質(zhì)量“設(shè)計(jì)先于編碼”,這是軟件工程“推遲實(shí)現(xiàn)”基本原則軟件系統(tǒng)設(shè)計(jì)是把軟件需求“變換”為用于構(gòu)造軟件的藍(lán)圖“輸入”是需求分析各種模型元素“輸出”是軟件設(shè)計(jì)模型和表示軟件設(shè)計(jì)的目標(biāo)是對(duì)將要實(shí)現(xiàn)的軟件系統(tǒng)的體系結(jié)構(gòu)、系統(tǒng)的數(shù)據(jù)、系統(tǒng)模塊間的接口,以及所采用的算法給出詳盡的描述總體設(shè)計(jì)需求說明書復(fù)審軟件結(jié)構(gòu)修
改詳細(xì)設(shè)計(jì)可接受模塊描述復(fù)審修
改設(shè)計(jì)說明書軟件設(shè)計(jì)工作流程從工程管理的角度看,軟件設(shè)計(jì)分兩步完成:總體設(shè)計(jì)(概要設(shè)計(jì))和詳細(xì)設(shè)計(jì)兩個(gè)階段。首先做概要設(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ì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。通過軟件設(shè)計(jì)階段的工作將劃分出組成系統(tǒng)的物理元素:—程序—文件—數(shù)據(jù)庫—人工過程—文檔等但是每個(gè)物理元素仍然處于黑盒子級(jí),這些黑盒子里的具體內(nèi)容將在以后詳細(xì)設(shè)計(jì)??傮w設(shè)計(jì)階段的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。設(shè)計(jì)過程的一般模型需求描述體系結(jié)構(gòu)設(shè)計(jì)抽象描述數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)體系結(jié)構(gòu)軟件描述接口描述組件描述數(shù)據(jù)結(jié)構(gòu)描述算法描述算法設(shè)計(jì)設(shè)計(jì)活動(dòng)接口設(shè)計(jì)
組件設(shè)計(jì)設(shè)計(jì)產(chǎn)品軟件設(shè)計(jì)功能與性能需求編碼軟件測(cè)試程序模塊已測(cè)試軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)過程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)信息域需求開發(fā)階段信息流總體設(shè)計(jì)通常由兩個(gè)主要階段組成:(1)系統(tǒng)設(shè)計(jì)階段:確定系統(tǒng)的具體實(shí)現(xiàn)方案;
(2)結(jié)構(gòu)設(shè)計(jì)階段:確定軟件結(jié)構(gòu)。典型的總體設(shè)計(jì)過程包括下述9個(gè)步驟:1.設(shè)想供選擇的方案需求分析階段得出的數(shù)據(jù)流圖是總體設(shè)計(jì)的極好的出發(fā)點(diǎn)。一旦選出了邊界劃分(分組)最佳的方案,將能大大提高系統(tǒng)的性能/價(jià)格比。2.選取合理的方案通常至少選取低成本、中等成本和高成本的三種方案。在判斷哪些方案合理時(shí)應(yīng)該考慮在問題定義和可行性研究階段確定的工程規(guī)模和目標(biāo),有時(shí)可能還需要進(jìn)一步征求用戶的意見。對(duì)每個(gè)合理的方案分析員都應(yīng)該準(zhǔn)備下列4份資料:系統(tǒng)流程圖;組成系統(tǒng)的物理元素清單;成本/效益分析;實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。3.推薦最佳方案分析員綜合分析對(duì)比各種合理方案的利弊,推薦一個(gè)最佳的方案。用工程網(wǎng)絡(luò)技術(shù)為推薦的方案制定詳細(xì)的實(shí)現(xiàn)計(jì)劃。用戶和有關(guān)的技術(shù)專家認(rèn)真審查分析員所推薦的最佳系統(tǒng),如果該系統(tǒng)確實(shí)符合用戶的需要,并且是在現(xiàn)有條件下完全能夠?qū)崿F(xiàn)的,則應(yīng)該提請(qǐng)使用部門負(fù)責(zé)人進(jìn)一步審批。在使用部門的負(fù)責(zé)人也接受了分析員所推薦的方案之后,將進(jìn)入總體設(shè)計(jì)過程的下一個(gè)重要階段——結(jié)構(gòu)設(shè)計(jì)。功能分解為了最終實(shí)現(xiàn)目標(biāo)系統(tǒng),必須設(shè)計(jì)出組成這個(gè)系統(tǒng)的所有程序和文件(或數(shù)據(jù)庫)。對(duì)程序(特別是復(fù)雜的大型程序)的設(shè)計(jì),通常分為兩個(gè)階段完成:結(jié)構(gòu)設(shè)計(jì):確定程序由哪些模塊組成,以及這些模塊之間的關(guān)系;過程設(shè)計(jì):確定每個(gè)模塊的處理過程,這是詳細(xì)設(shè)計(jì)階段的任務(wù)。為確定軟件結(jié)構(gòu),首先需要從實(shí)現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解。分析員結(jié)合算法描述仔細(xì)分析數(shù)據(jù)流圖中的每個(gè)處理,如果一個(gè)處理的功能過分復(fù)雜,必須把它的功能適當(dāng)?shù)胤纸獬梢幌盗斜容^簡(jiǎn)單的功能。一般說來,經(jīng)過分解之后應(yīng)該使每個(gè)功能對(duì)大多數(shù)程序員而言都是明顯易懂的。功能分解導(dǎo)致數(shù)據(jù)流圖的進(jìn)一步細(xì)化,同時(shí)還應(yīng)該用IPO圖或其他適當(dāng)?shù)墓ぞ吆?jiǎn)要描述細(xì)化后每個(gè)處理的算法。5.設(shè)計(jì)軟件結(jié)構(gòu)通常程序中的一個(gè)模塊完成一個(gè)適當(dāng)?shù)淖庸δ?。軟件結(jié)構(gòu)(即由模塊組成的層次系統(tǒng))表示軟件系統(tǒng)的構(gòu)成,是軟件模塊間關(guān)系的表示,可以用層次圖或結(jié)構(gòu)圖來描繪。如果數(shù)據(jù)流圖已經(jīng)細(xì)化到適當(dāng)?shù)膶哟?,則可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu),這就是面向數(shù)據(jù)流的設(shè)計(jì)方法。ABCDEFGHJKLIM軟件結(jié)構(gòu)圖設(shè)計(jì)數(shù)據(jù)庫(確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu))對(duì)于需要使用數(shù)據(jù)庫的那些應(yīng)用系統(tǒng),軟件工程師應(yīng)該在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需求的基礎(chǔ)上,進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫。設(shè)計(jì)用戶界面作為人機(jī)接口的用戶界面起著越來越重要的作用,它直接影響到軟件的可用性及使用壽命。制定軟件設(shè)計(jì)測(cè)試計(jì)劃在軟件開發(fā)的早期階段考慮測(cè)試問題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試性。9.書寫文檔在這個(gè)階段應(yīng)該完成的文檔通常有下述幾種:系統(tǒng)說明主要內(nèi)容:系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,物理元素清單,成本/效益分析,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用IPO圖或其他工具簡(jiǎn)要描述的各個(gè)模塊的算法,模塊間的接口關(guān)系等。用戶手冊(cè):根據(jù)總體設(shè)計(jì)階段的結(jié)果,修改更正在需求分析階段產(chǎn)生的初步的用戶手冊(cè)。測(cè)試計(jì)劃:測(cè)試策略,測(cè)試方案,預(yù)期的測(cè)試結(jié)果,測(cè)試進(jìn)度計(jì)劃等。詳細(xì)的實(shí)現(xiàn)計(jì)劃。數(shù)據(jù)庫設(shè)計(jì)結(jié)果。10.審查和復(fù)審最后對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查,在技術(shù)審查通過之后再由使用部門的負(fù)責(zé)人從管理角度進(jìn)行復(fù)審。軟件設(shè)計(jì)質(zhì)量原則設(shè)計(jì)過程不應(yīng)該受“隧道視野”的限制設(shè)計(jì)對(duì)于分析模型應(yīng)該是可跟蹤的設(shè)計(jì)不應(yīng)該從頭做起設(shè)計(jì)應(yīng)該縮短軟件和現(xiàn)實(shí)問題的“智力距離”設(shè)計(jì)應(yīng)該表現(xiàn)出一致性和集成性設(shè)計(jì)應(yīng)該能夠適應(yīng)修改設(shè)計(jì)不是編碼在創(chuàng)建設(shè)計(jì)時(shí),就應(yīng)該考慮能夠評(píng)估其質(zhì)量應(yīng)該復(fù)審每一步設(shè)計(jì),以減少語義性錯(cuò)誤概要設(shè)計(jì)說明書范圍系統(tǒng)目標(biāo)主要軟件需求軟件設(shè)計(jì)約束、限制數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)對(duì)象和形成的數(shù)據(jù)結(jié)構(gòu)文件和數(shù)據(jù)庫結(jié)構(gòu)外部文件結(jié)構(gòu)①邏輯結(jié)構(gòu)②邏輯記錄描述③訪問方法全局?jǐn)?shù)據(jù)文件和數(shù)據(jù)交叉索引體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)和控制流復(fù)審得出的程序結(jié)構(gòu)接口設(shè)計(jì)人機(jī)界面規(guī)約人機(jī)界面設(shè)計(jì)規(guī)約外部接口設(shè)計(jì)外部數(shù)據(jù)接口外部系統(tǒng)或設(shè)備接口內(nèi)部接口設(shè)計(jì)規(guī)約(每個(gè)模塊)過程設(shè)計(jì)處理說明接口描述設(shè)計(jì)語言描述使用的模塊內(nèi)部設(shè)計(jì)結(jié)構(gòu)注釋/約束/限制需求交叉索引測(cè)試部分測(cè)試方針集成策略特殊考慮8 附錄(包括特殊注解)詳細(xì)設(shè)計(jì)說明書1引言2總體設(shè)計(jì)編寫目的:闡明編寫詳細(xì)設(shè)計(jì)說明書的目的,指明讀者對(duì)象。需求概述軟件結(jié)構(gòu):如給出軟件系統(tǒng)的結(jié)構(gòu)圖。1.2
項(xiàng)目背景:應(yīng)包括項(xiàng)目的來源和主管部門等。程序描述逐個(gè)模塊給出以下說明:定義:列出本文檔中所用到的專門術(shù)語的定義和縮寫詞。列出有關(guān)資料的作者、標(biāo)題、編號(hào)、發(fā)表日期、出版單位或資料來源性能輸出項(xiàng)目功能文檔所引用的資料、軟件開發(fā)的標(biāo)準(zhǔn)或規(guī)范。輸入項(xiàng)目3.2算法:模塊所選用的算法。1.4參考資料:項(xiàng)目經(jīng)核準(zhǔn)的計(jì)劃任務(wù)書、合同或上級(jí)機(jī)關(guān)的批文;3.3
程序邏輯:詳細(xì)描述模塊實(shí)現(xiàn)的算法,可采用:標(biāo)準(zhǔn)流程圖;PDL語言;N-S圖;判定表等描述算法的圖表。項(xiàng)目開發(fā)計(jì)劃;需求規(guī)格說明書;概要設(shè)計(jì)說明書;3.4接口限制條件測(cè)試計(jì)劃(初稿);存儲(chǔ)分配用戶操作手冊(cè)。3.5測(cè)試要點(diǎn):給出測(cè)試模塊的主要測(cè)試要求。8.2
軟件模塊化設(shè)計(jì)有人說,模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智力所管理,軟件應(yīng)該具備的惟一屬性。模塊是一個(gè)獨(dú)立命名的,擁有明確定義的輸入、輸出和特性的程序?qū)嶓w。把一個(gè)大型軟件系統(tǒng)的全部功能,按照一定的原則合理地劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)特定子功能,所有的這些模塊以某種結(jié)構(gòu)形式組成一個(gè)整體,這就是軟件的模塊化設(shè)計(jì)(Modular
Design)。軟件模塊化設(shè)計(jì)可以簡(jiǎn)化軟件的設(shè)計(jì)和實(shí)現(xiàn),提高軟件的可理解性和可測(cè)試性,并使軟件更容易得到維護(hù)。分解、抽象、逐步求精、信息隱蔽和模塊獨(dú)立性,是軟件模塊化設(shè)計(jì)的指導(dǎo)思想。模塊(構(gòu)件)是程序?qū)ο笥忻值募?。例如,過程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。面向?qū)ο蠓椒▽W(xué)中的對(duì)象是模塊,對(duì)象內(nèi)的方法(服務(wù))也是模塊。模塊是構(gòu)成程序的基本構(gòu)件。模塊化就是將系統(tǒng)劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測(cè)試和調(diào)試,因而也有助于提高軟件的可靠性。令:C(X)表示問題X的復(fù)雜度函數(shù),X
所需工作量E
(
X
)表示解決問題的復(fù)雜度函數(shù);若:有問題P1,P2,C(P1)>C(P2);顯然:E(P1)>E(P2)由經(jīng)驗(yàn):C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)將問題(P1+P2)劃分為兩個(gè)問題P1和P2后,其工作量和復(fù)雜度都降低。軟件總成本模塊化與軟件成本的關(guān)系成本模塊成本模塊數(shù)目接口成本}最小成本區(qū)M結(jié)論:并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量會(huì)增加。顯然,每個(gè)軟件系統(tǒng)都有一個(gè)最佳模塊數(shù)M,注意選擇分解的最佳模塊數(shù)。模塊化降低軟件復(fù)雜度的簡(jiǎn)單證明:采用模塊化原理可以使軟件結(jié)構(gòu)清晰,不僅容易設(shè)計(jì)也容易閱讀和理解。因?yàn)槌绦蝈e(cuò)誤通常局限在有關(guān)的模塊及它們之間的接口中,所以模塊化使軟件容易測(cè)試和調(diào)試,因而有助于提高軟件的可靠性。因?yàn)樽儎?dòng)往往只涉及少數(shù)幾個(gè)模塊,所以模塊化能夠提高軟件的可修改性。模塊化的主要優(yōu)點(diǎn)是:模塊化設(shè)計(jì)降低了軟件系統(tǒng)的復(fù)雜性,使得系統(tǒng)容易修改,同時(shí)使得系統(tǒng)各個(gè)部分可以并行開發(fā),從而提高了軟件的生產(chǎn)率。抽象人類在認(rèn)識(shí)復(fù)雜現(xiàn)象的過程中使用的最強(qiáng)有力的思維工具是抽象。人們?cè)趯?shí)踐中認(rèn)識(shí)到,在現(xiàn)實(shí)世界中一定事物、狀態(tài)或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來,暫時(shí)忽略它們之間的差異,這就是抽象?;蛘哒f抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。處理復(fù)雜系統(tǒng)的惟一有效的方法是用層次的方式構(gòu)造和分析它。軟件工程過程的每一步都是對(duì)軟件解法的抽象層次的一次精化:在可行性研究階段,軟件作為系統(tǒng)的一個(gè)完整部件;在需求分析期間,軟件解法是使用在問題環(huán)境內(nèi)熟悉的方式描述的;當(dāng)由總體設(shè)計(jì)向詳細(xì)設(shè)計(jì)過渡時(shí),抽象的程度也就隨之減少了;最后,當(dāng)源程序?qū)懗鰜硪院?,也就達(dá)到了抽象的最低層。軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)是指軟件的整體結(jié)構(gòu)和這種結(jié)構(gòu)為系統(tǒng)提供概念上完整性的方式。體系結(jié)構(gòu)可以是程序構(gòu)件或模塊的結(jié)構(gòu)或組織,這些構(gòu)件或模塊交互的形式以及這些構(gòu)件所用數(shù)據(jù)的結(jié)構(gòu)。體系結(jié)構(gòu)設(shè)計(jì)可以使用大量的模型來表達(dá)。信息隱藏和局部化信息隱藏原理指出:應(yīng)該這樣設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息(過程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來說,是不能訪問的。實(shí)際上,應(yīng)該隱藏的不是有關(guān)模塊的一切信息,而是模塊的實(shí)現(xiàn)細(xì)節(jié)。獨(dú)立的構(gòu)件或模塊之間的“接口”簡(jiǎn)單而清晰。所謂局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。在模塊中使用局部數(shù)據(jù)元素是局部化的一個(gè)例子。顯然,局部化有助于實(shí)現(xiàn)信息隱藏。模塊獨(dú)立模塊獨(dú)立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。希望這樣設(shè)計(jì)軟件結(jié)構(gòu),使得每個(gè)模塊完成一個(gè)相對(duì)獨(dú)立的特定子功能,并且和其他模塊之間的關(guān)系很簡(jiǎn)單。模塊的獨(dú)立性很重要,主要有兩條理由:第一,有效的模塊化的軟件比較容易開發(fā)出來。第二,獨(dú)立的模塊比較容易測(cè)試和維護(hù)。總之,模塊獨(dú)立是好設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是決定軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個(gè)定性準(zhǔn)則:耦合性:描述模塊之間聯(lián)系的緊密程度;內(nèi)聚性:描述模塊內(nèi)部聯(lián)系的緊密程度。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)該具有高內(nèi)聚性和低耦合度。模塊獨(dú)立性愈高,則塊內(nèi)聯(lián)系越強(qiáng),塊間聯(lián)系越弱。低非直接 數(shù)據(jù) 控制
特征 公共 內(nèi)容耦合 耦合 耦合
耦合 耦合 耦合高弱強(qiáng)耦合性模塊獨(dú)立性1.
耦合耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)。模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。(1)數(shù)據(jù)耦合:兩個(gè)模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)。系統(tǒng)中至少必須存在數(shù)據(jù)耦合,只有當(dāng)某些模塊的輸出數(shù)據(jù)作為另一些模塊的輸入數(shù)據(jù)時(shí),系統(tǒng)才能完成有價(jià)值的功能。(2)控制耦合:一個(gè)模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊的功能。A模塊flagBf1
f2 …
…
fn控制耦合是中等程度的耦合,它增加了系統(tǒng)的復(fù)雜程度??刂岂詈显诎涯K適當(dāng)分解之后通??梢杂脭?shù)據(jù)耦合代替它。特征耦合:被調(diào)用的模塊需要使用作為參數(shù)傳遞進(jìn)來的數(shù)據(jù)結(jié)構(gòu)中的一部分?jǐn)?shù)據(jù)元素時(shí),就出現(xiàn)了特征耦合。公共耦合:當(dāng)兩個(gè)或多個(gè)模塊通過一個(gè)公共數(shù)據(jù)環(huán)境相互作用時(shí),它們之間的耦合稱為公共環(huán)境耦合。公共環(huán)境可以是全程變量、介質(zhì)上任何文件物如果兩個(gè)模塊共享的數(shù)據(jù)很多,都通過參數(shù)傳遞時(shí)可環(huán)境耦合。全局?jǐn)?shù)據(jù)區(qū)共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、
A
存儲(chǔ)
的可能很不方便,這
B
以利用公共CDE、F
理設(shè)備等。B、C、E 為公共耦合(5)內(nèi)容耦合:是最高程度的耦合。有如下表現(xiàn):一個(gè)模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)。一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊的內(nèi)部。
c.一個(gè)模塊有多個(gè)入口。d.兩個(gè)模塊有部分代碼重迭。AB進(jìn)入另一模塊內(nèi)AB部分代碼重迭Entry1….Entry2….多重入口總之,耦合是影響軟件復(fù)雜程度的一個(gè)重要因素。應(yīng)該采取下述設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。2.
內(nèi)聚內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊
密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。簡(jiǎn)單地說,理想內(nèi)聚的模塊只做一件事情。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,中等程度的內(nèi)聚也可以采用,不要使用低內(nèi)聚。低功能內(nèi)聚順序內(nèi)聚通信內(nèi)聚過程內(nèi)聚時(shí)間內(nèi)聚邏輯內(nèi)聚偶然內(nèi)聚高強(qiáng)弱內(nèi)聚性模塊獨(dú)立性低內(nèi)聚有如下幾類:(1)偶然內(nèi)聚——一個(gè)模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的。有時(shí)在寫完一個(gè)程序之后,發(fā)現(xiàn)一組語句在兩處或多處出現(xiàn),于是把這些語句作為一個(gè)模塊以節(jié)省內(nèi)存,這樣就出現(xiàn)了偶然內(nèi)聚的模塊。(2)邏輯內(nèi)聚——一個(gè)模塊完成的任務(wù)在邏輯上屬于相同或相似的一類。段時(shí)間內(nèi)執(zhí)行。例如:初始化系統(tǒng)模塊、系統(tǒng)結(jié)束模塊障處等均是時(shí)間性聚合模塊。調(diào)用模塊(3)時(shí)間內(nèi)聚——一個(gè)模塊包含的任判務(wù)定必須在同一—個(gè)、緊急故記錄讀
寫—個(gè)理模塊記錄被調(diào)用模塊中內(nèi)聚主要有兩類:過程內(nèi)聚——一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行。通信內(nèi)聚——模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù)。高內(nèi)聚也有兩類:順序內(nèi)聚——一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行。功能內(nèi)聚——模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能。功能內(nèi)聚是最高程度的內(nèi)聚。逐步求精逐步求精是人類解決復(fù)雜問題時(shí)采用的基本方法,也是許多軟件工程技術(shù)的基礎(chǔ)??梢园阎鸩角缶x為:“為了能集中精力解決主要問題而盡量推遲對(duì)問題細(xì)節(jié)的考慮?!敝鸩角缶匀绱酥匾?,是因?yàn)槿祟惖恼J(rèn)知過程遵守Miller法則:一個(gè)人在任何時(shí)候都只能把注意力集中在(7±2)個(gè)知識(shí)塊上。Miller法則是人類智力的基本局限,我們不可能戰(zhàn)勝自己的自然本性,只能接受這個(gè)事實(shí),承認(rèn)自身的局限性,并在這個(gè)前提下盡我們的最大努力工作。逐步求精,或稱逐步細(xì)化,是一種自頂向下的設(shè)計(jì)策略。抽象與求精是一對(duì)互補(bǔ)的概念。抽象使得設(shè)計(jì)者能夠說明過程和數(shù)據(jù),同時(shí)卻忽略低層細(xì)節(jié)。事實(shí)上,可以把抽象看作是一種通過忽略多余的細(xì)節(jié)同時(shí)強(qiáng)調(diào)有關(guān)的細(xì)節(jié),而實(shí)現(xiàn)逐步求精的方法。求精則幫助設(shè)計(jì)者在設(shè)計(jì)過程中逐步揭示出低層細(xì)節(jié)。這兩個(gè)概念都有助于設(shè)計(jì)者在設(shè)計(jì)演化過程中創(chuàng)造出完整的設(shè)計(jì)模型。逐步求精和模塊化的概念,與抽象是緊密相關(guān)的。隨著軟件開發(fā)工程的進(jìn)展,在軟件結(jié)構(gòu)每一層中的模塊,表示了對(duì)軟件抽象層次的一次精化:事實(shí)上,軟件結(jié)構(gòu)頂層的模塊,控制了系統(tǒng)的主要功能并且影響全局;在軟件結(jié)構(gòu)底層的模塊,完成對(duì)數(shù)據(jù)的一個(gè)具體處理,用自頂向下由抽象到具體的方式分配控制;簡(jiǎn)化了軟件的設(shè)計(jì)和實(shí)現(xiàn),提高了軟件的可理解性和可測(cè)試性,并且使軟件更容易維護(hù)。重構(gòu)重構(gòu)是一種重新組織的技術(shù),可以簡(jiǎn)化構(gòu)件或模塊的設(shè)計(jì)或編碼而無需改變其功能或行為。重構(gòu)是一種改進(jìn)程序內(nèi)部結(jié)構(gòu)但不改變代碼或設(shè)計(jì)的外部行為?!跋仁顾D(zhuǎn)起來,再使它快起來”。8.3軟件結(jié)構(gòu)軟件結(jié)構(gòu)圖(Structure
Chart, 簡(jiǎn)稱SC)是軟件系統(tǒng)的模塊層次結(jié)構(gòu),反映了整個(gè)系統(tǒng)的功能實(shí)現(xiàn)。軟件結(jié)構(gòu)以層次表示程序的系統(tǒng)結(jié)構(gòu),即一種控制的層次體系,并不表示軟件的具體過程。軟件結(jié)構(gòu)一般用樹狀或網(wǎng)狀結(jié)構(gòu)的圖形來表示。8.3軟件結(jié)構(gòu)軟件結(jié)構(gòu)圖的主要元素有:模塊:模塊用帶有名字的方框表示,名稱應(yīng)體現(xiàn)模塊的功能??刂脐P(guān)系:控制關(guān)系用單向箭頭或直線表示模塊間的調(diào)用關(guān)系。信息傳遞:用帶注釋的短箭頭表示模塊調(diào)用過程中傳遞的信息。循環(huán)調(diào)用和選擇調(diào)用:在上部模塊底部加一個(gè)菱形符號(hào)表示選擇調(diào)用,在上部模塊的下方家一個(gè)弧形箭頭,表示循環(huán)調(diào)用。層次圖和HIPO圖層次圖用來描繪軟件的層次結(jié)構(gòu)。雖然層次圖的形式和描繪數(shù)據(jù)結(jié)構(gòu)的層次方框圖相同,但是表現(xiàn)的內(nèi)容卻完全不同。層次圖中的一個(gè)矩形框代表一個(gè)模塊,方框間的連線表示調(diào)用關(guān)系而不像層次方框圖那樣表示組成關(guān)系。描繪軟件結(jié)構(gòu)的圖形工具正文加工系統(tǒng)的層次圖描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具HIPO圖是美國IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”的英文縮寫。為了能使HIPO圖具有可追蹤性,在H圖(層次圖)里除了最頂層的方框之外,每個(gè)方框都加了編號(hào)。編號(hào)規(guī)則和數(shù)據(jù)流圖的編號(hào)規(guī)則相同。和H圖中每個(gè)方框相對(duì)應(yīng),應(yīng)該有一張IPO圖描繪這個(gè)方框代表的模塊的處理過程。HIPO圖中的每張IPO圖內(nèi)都應(yīng)該明顯地標(biāo)出它所描繪的模塊在H圖中的編號(hào),以便追蹤了解這個(gè)模塊在軟件結(jié)構(gòu)中的位置。帶編號(hào)的層次圖(H圖)描繪軟件結(jié)構(gòu)的圖形工具A--
模塊調(diào)用關(guān)系B被調(diào)用模塊SC
圖中的主要內(nèi)容1、模塊--在SC圖中用矩形框表示,并用名字來標(biāo)記它2、模塊的調(diào)用關(guān)系和接口調(diào)用模塊A(查詢學(xué)生)B(查找學(xué)生記錄)數(shù)據(jù)信號(hào)控制信號(hào)學(xué)號(hào)查找成功信號(hào)--
模塊間接口的表示描繪軟件結(jié)構(gòu)的圖形工具例:畫出打印報(bào)告的軟件結(jié)構(gòu)圖調(diào)用次序?yàn)樯蠈诱{(diào)用下層; 同層按照數(shù)據(jù)傳遞關(guān)系確定;一般從左到右執(zhí)行。執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。報(bào)告計(jì)算獲得編輯確認(rèn)數(shù)據(jù)讀入編輯打印報(bào)告頭打印報(bào)告尾打印輸入EOF輸入已編輯已編輯已編輯已確認(rèn)已確認(rèn)數(shù)據(jù)已確認(rèn)數(shù)據(jù)計(jì)算結(jié)果結(jié)果日期總結(jié)果行行行打印報(bào)告予以確認(rèn)描繪軟件結(jié)構(gòu)的圖形工具SC中還有一些附加的符號(hào),可以表示模塊的選擇調(diào)用或循環(huán)調(diào)用。判定為真時(shí)調(diào)用A,為假時(shí)調(diào)用B注意:1.層次圖和結(jié)構(gòu)圖并不嚴(yán)格表示模塊的調(diào)用次序。通常用層次圖作為描繪軟件結(jié)構(gòu)的文檔。利用IPO圖或數(shù)據(jù)字典中的信息得到模塊調(diào)用時(shí)傳遞的信息,由層次圖導(dǎo)出結(jié)構(gòu)圖的過程,作為檢查設(shè)計(jì)正確性和評(píng)價(jià)模塊獨(dú)立性的好方法。模塊M循環(huán)調(diào)用模塊A、B、C描繪軟件結(jié)構(gòu)的圖形工具軟件結(jié)構(gòu)圖的形態(tài)特征:–深度:指結(jié)構(gòu)圖控制的層次,也是模塊的層數(shù)。能粗略表示一個(gè)系統(tǒng)的大小和復(fù)雜程度,深度和程序長度之間存在著某種對(duì)應(yīng)關(guān)系。–寬度:指一層中最大的模塊個(gè)數(shù)。一般來說,結(jié)構(gòu)的寬度越大,則系統(tǒng)就越復(fù)雜。–扇出:指一個(gè)模塊直接下屬模塊的個(gè)數(shù)。扇出過大,表示模塊過分復(fù)雜,需要控制和協(xié)調(diào)的下級(jí)模塊太
多。扇出的上限一般為
5~9,平均一般為3或4。–扇入:指一個(gè)模塊直接上屬模塊的個(gè)數(shù)。扇入過大,意味著共享該模塊的上級(jí)模塊數(shù)目多,這有一定的
益處,但是決不能違背模塊的獨(dú)立性原則而片面追
求高扇入。8.3軟件結(jié)構(gòu)有關(guān)指標(biāo):⑴深度:表示軟件結(jié)構(gòu)中從頂層模塊到最底層模塊的層數(shù)。⑵寬度:表示控制的總分布。⑶扇出數(shù):指一個(gè)模塊直接控制下屬的模塊個(gè)數(shù)。⑷扇入數(shù):指一個(gè)模塊的直接上屬模塊個(gè)數(shù)。1層2層ABCD
EFGHIJKLM
N扇入為23層扇入為3寬度軟件結(jié)構(gòu)示意圖深度頂層扇出為3一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。深度、寬度、扇出和扇入都應(yīng)適當(dāng)畫結(jié)構(gòu)圖應(yīng)注意的事項(xiàng):模塊不能重名。調(diào)用關(guān)系只能從上到下。8.3軟件結(jié)構(gòu)MNOPQGHICDATJKLEFBRS模塊化設(shè)計(jì)的優(yōu)化(啟發(fā)規(guī)則)人們?cè)陂_發(fā)計(jì)算機(jī)軟件的長期實(shí)踐中積累了豐富的經(jīng)驗(yàn),總結(jié)這些經(jīng)驗(yàn)得出了一些啟發(fā)式規(guī)則。啟發(fā)式規(guī)則能幫助人們找到改進(jìn)軟件設(shè)計(jì)提高軟件質(zhì)量的途徑。1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這個(gè)
結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提高內(nèi)聚。例如,多個(gè)模塊公有的一個(gè)子功能可以獨(dú)立成一個(gè)模塊,由這些模塊調(diào)用;有時(shí)可以通過分解或合并模塊以減少控制信息的傳遞及對(duì)全程數(shù)據(jù)的引用,并且降低接口的復(fù)雜程度。XYQ’1Q’2YQ’2QXQ(b)(c)(d)Q重復(fù)部分(a)YXQ1YQ2Xx模塊規(guī)模應(yīng)該適中一般說來,分解后不應(yīng)該降低模塊獨(dú)立性。深度、寬度、扇出和扇入都應(yīng)適當(dāng)力爭(zhēng)降低模塊接口的復(fù)雜程度模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。設(shè)計(jì)單入口單出口的模塊當(dāng)從頂部進(jìn)入模塊并且從底部退出來時(shí),軟件是比較容易理解的,因此也是比較容易維護(hù)的??刂品秶?/p>
— 結(jié)構(gòu)方面的特點(diǎn),包括模塊及其所有下屬模塊。作用范圍
— 判斷所涉及到的模塊,是從功能特點(diǎn)考慮的。SD方法認(rèn)為:當(dāng)作用范圍為控制范圍的子集時(shí),才能獲得較低的塊間聯(lián)系。 如下圖中的設(shè)計(jì),判定的作用范圍恰好在判定所在模塊的下一層。TOPXTBAB1B2模塊TOP 的控制范圍是:TOP、X、T、B、A、B1、B2;模塊B 的控制范圍與作用范圍相同模塊A的控制范圍:A、B、C、D、G、E、F則F的的作用范圍:B、E、FABCDGEFBE
F6.模塊的作用域應(yīng)該在控制域之內(nèi)圖3.33控制范圍與作用范圍TOPABCDEF
(a)TOP
ABCDEF(b)TOPAB
CDEF(c)TOPABC
DEF(d)顯然,圖(a)不滿足作用范圍應(yīng)與控制范圍的原則,模塊F的作用范圍不在控制范圍之內(nèi)。圖(b)中模塊TOP和圖(c)中模塊B雖然滿足上述原則,但其作用范圍所涉及到的模塊不是直接的。圖(d)的模塊設(shè)計(jì)最合理。應(yīng)用范圍與作用范圍舉例7.模塊功能應(yīng)該可以預(yù)測(cè)模塊的功能應(yīng)該能夠預(yù)測(cè),但也要防止模塊功能過分局限。如果一個(gè)模塊可以當(dāng)做一個(gè)黑盒子,也就是說,只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可以預(yù)測(cè)的。以上列出的啟發(fā)式規(guī)則多數(shù)是經(jīng)驗(yàn)規(guī)律,對(duì)改進(jìn)
設(shè)計(jì),提高軟件質(zhì)量,往往有重要的參考價(jià)值;但是,它們既不是設(shè)計(jì)的目標(biāo)也不是設(shè)計(jì)時(shí)應(yīng)該普遍遵循的
原理。8.4軟件系統(tǒng)結(jié)構(gòu)模型軟件體系結(jié)構(gòu)是一種表達(dá),使軟件工程師能夠分析設(shè)計(jì)是否滿足需求、選擇合理的方案和降低風(fēng)險(xiǎn)。大型軟件系統(tǒng)總是被分解成一系列子系統(tǒng),由子系統(tǒng)提供一些相關(guān)的服務(wù)。軟件體系結(jié)構(gòu)設(shè)計(jì)過程就是識(shí)別出這些子系統(tǒng),并建立子系統(tǒng)控制和通信的框架,最后給出軟件體系結(jié)構(gòu)的一個(gè)描述。兩類結(jié)構(gòu)模型:系統(tǒng)構(gòu)成模型系統(tǒng)控制模型概念補(bǔ)充概念補(bǔ)充概念補(bǔ)充概念補(bǔ)充概念補(bǔ)充概念補(bǔ)充概念補(bǔ)充概念補(bǔ)充系統(tǒng)構(gòu)成模型以數(shù)據(jù)為中心的結(jié)構(gòu)模型數(shù)據(jù)流結(jié)構(gòu)模型客戶機(jī)/服務(wù)器結(jié)構(gòu)模型抽象機(jī)結(jié)構(gòu)模型1.以數(shù)據(jù)為中心的結(jié)構(gòu)模型由一組子系統(tǒng)構(gòu)成,子系統(tǒng)交換信息,協(xié)調(diào)工作有兩種基本方法:全部共享數(shù)據(jù)放在一個(gè)中央數(shù)據(jù)庫中,所有子系統(tǒng)都能從中存取數(shù)據(jù)。每個(gè)子系統(tǒng)用各自的數(shù)據(jù)庫與其他子系統(tǒng)進(jìn)行數(shù)據(jù)交互,通過消息傳遞來實(shí)現(xiàn)。共享數(shù)據(jù)模型的優(yōu)點(diǎn)是能夠高效地共享大量的數(shù)據(jù),生產(chǎn)數(shù)據(jù)的子系統(tǒng)不需要關(guān)心數(shù)據(jù)如何被其他子系統(tǒng)使用,可以集中進(jìn)行如備份、保密性、訪問控制和錯(cuò)誤恢復(fù)等活動(dòng);缺點(diǎn)是子系統(tǒng)一定要與以數(shù)據(jù)為中心的體系結(jié)構(gòu)模型一致,系統(tǒng)變更或進(jìn)化比較困難,子系統(tǒng)的需求會(huì)不同,難以集成,以及很難將數(shù)據(jù)分布到多臺(tái)機(jī)器上。2.數(shù)據(jù)流體系結(jié)構(gòu)模型當(dāng)輸入數(shù)據(jù)經(jīng)過一系列的計(jì)算和操作構(gòu)件或模塊的變換形成輸出數(shù)據(jù)時(shí),可以應(yīng)用數(shù)據(jù)流體系結(jié)構(gòu)。管道和過濾器結(jié)構(gòu)通過一組由管道連接的過濾器來變換數(shù)據(jù),并向下傳遞。管道和過濾器結(jié)構(gòu)過濾器過濾器過濾器過濾器過濾器過濾器過濾器過濾器3.客戶機(jī)/服務(wù)器結(jié)構(gòu)模型客戶機(jī)/服務(wù)器結(jié)構(gòu)模型的主要組成部分是:一組給其他子系統(tǒng)提供服務(wù)的單機(jī)服務(wù)器一組向服務(wù)器請(qǐng)求服務(wù)的客戶機(jī)一個(gè)
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國食品及飼料添加劑行業(yè)運(yùn)營狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國風(fēng)力發(fā)電機(jī)組葉片裝置市場(chǎng)發(fā)展趨勢(shì)與十三五規(guī)劃研究報(bào)告
- 2025-2030年中國防火玻璃產(chǎn)業(yè)前景展望及未來投資規(guī)劃研究報(bào)告
- 2025-2030年中國鑄造粘結(jié)材料行業(yè)競(jìng)爭(zhēng)格局及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國銅加工產(chǎn)業(yè)運(yùn)營狀況與發(fā)展?jié)摿Ψ治鰣?bào)告
- 2025-2030年中國金屬船舶市場(chǎng)前景規(guī)劃及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025-2030年中國道路護(hù)欄行業(yè)發(fā)展現(xiàn)狀及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國補(bǔ)血保健品市場(chǎng)十三五規(guī)劃與發(fā)展策略分析報(bào)告
- 2025-2030年中國脫臭餾出物的分離提取產(chǎn)物行業(yè)運(yùn)行現(xiàn)狀及前景規(guī)劃分析報(bào)告
- 2025-2030年中國納米二氧化鈦市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2024年個(gè)人信用報(bào)告(個(gè)人簡(jiǎn)版)樣本(帶水印-可編輯)
- 16J914-1 公用建筑衛(wèi)生間
- 排水溝施工合同電子版(精選5篇)
- 高警示藥物處方審核要點(diǎn)
- 2022年蘇州衛(wèi)生職業(yè)技術(shù)學(xué)院?jiǎn)握姓Z文模擬試題及答案
- 《酒店品牌建設(shè)與管理》課程教學(xué)大綱
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 大氣商務(wù)企業(yè)培訓(xùn)之團(tuán)隊(duì)合作的重要性PPT模板
- Opera、綠云、西軟、中軟酒店管理系統(tǒng)對(duì)比分析
- 楚才辦公室裝修設(shè)計(jì)方案20140315
- 人教版八年級(jí)(上冊(cè))物理習(xí)題全集(附答案)
評(píng)論
0/150
提交評(píng)論