第四課軟件設(shè)計方法_第1頁
第四課軟件設(shè)計方法_第2頁
第四課軟件設(shè)計方法_第3頁
第四課軟件設(shè)計方法_第4頁
第四課軟件設(shè)計方法_第5頁
已閱讀5頁,還剩172頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第四章 軟件設(shè)計方法(fngf)共一百七十七頁軟件設(shè)計的目標(biāo)和任務(wù)軟件設(shè)計基礎(chǔ)模塊獨立性結(jié)構(gòu)化設(shè)計(shj)方法(SD)數(shù)據(jù)設(shè)計和文件設(shè)計詳細(xì)(過程)設(shè)計共一百七十七頁軟件設(shè)計的目標(biāo)(mbio)和任務(wù)根據(jù)用信息域表示的軟件需求,以及功能和性能需求,進(jìn)行 數(shù)據(jù)設(shè)計 系統(tǒng)結(jié)構(gòu)設(shè)計 模塊(m kui)(過程)設(shè)計。共一百七十七頁數(shù)據(jù)設(shè)計側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義。系統(tǒng)結(jié)構(gòu)設(shè)計定義軟件系統(tǒng)各主要成份之間的關(guān)系。模塊(過程)設(shè)計則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成源程序代碼,然后通過(tnggu)測試最終得到完整有效的軟件。共一百七十七頁開發(fā)階段的信息流程序模塊測試(cs

2、h)編碼(bin m)設(shè)計信息域需求功能與性能需求數(shù)據(jù)設(shè)計過程設(shè)計系統(tǒng)結(jié)構(gòu)設(shè)計組裝好的有效的軟件共一百七十七頁軟件設(shè)計是后續(xù)開發(fā)步驟(bzhu)及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)共一百七十七頁軟件設(shè)計任務(wù)(rn wu)從工程管理的角度來看,軟件設(shè)計分兩步完成。概要設(shè)計(preliminary design) ,或總體設(shè)計,結(jié)構(gòu)設(shè)計(Architectural design)將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。 詳細(xì)設(shè)計,即模塊設(shè)計,或過程設(shè)計。通過對結(jié)構(gòu)(jigu)表示進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)(jigu)和算法。共一百七十七頁共一百七十七頁軟件設(shè)計

3、過程(guchng)1. 制定規(guī)范在進(jìn)入軟件開發(fā)階段之初,首先應(yīng)為軟件開發(fā)組制定在設(shè)計(shj)時應(yīng)該共同遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的工作。包括:共一百七十七頁 閱讀和理解軟件需求說明書,確認(rèn)用戶要求能否實現(xiàn),明確實現(xiàn)的條件,從而確定設(shè)計的目標(biāo),以及它們的優(yōu)先順序 根據(jù)目標(biāo)確定最合適的設(shè)計方法 規(guī)定設(shè)計文檔的編制標(biāo)準(zhǔn) 規(guī)定編碼的信息(xnx)形式,與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則共一百七十七頁2. 軟件系統(tǒng)結(jié)構(gòu)(jigu)的總體設(shè)計基于(jy)功能層次結(jié)構(gòu)建立系統(tǒng)。 采用某種設(shè)計方法,將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu) 確定每個模塊的功能 建立與已確定的軟件需求的對應(yīng)關(guān)系 確定模塊間的調(diào)

4、用關(guān)系 確定模塊間的接口 評估模塊劃分的質(zhì)量注:模塊(modula):具有獨立功能、命名的一段程序語句(過程、函數(shù)、子程序、(Ada)程序包、宏、面向?qū)ο笾械念惖龋?共一百七十七頁3. 處理方式(fngsh)設(shè)計確定為實現(xiàn)系統(tǒng)的功能需求所必需的算法,評估算法的性能(xngnng)確定為滿足系統(tǒng)的性能需求所必需的算法和模塊間的控制方式 周轉(zhuǎn)時間 響應(yīng)時間 吞吐量 精度確定外部信號的接收發(fā)送形式共一百七十七頁4. 數(shù)據(jù)結(jié)構(gòu)(sh j ji u)設(shè)計確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫的模式、子模式,進(jìn)行(jnxng)數(shù)據(jù)完整性和安全性的設(shè)計確定輸入,輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)結(jié)合算法設(shè)計,確定算法

5、所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包)共一百七十七頁限制和確定各個數(shù)據(jù)設(shè)計決策的影響(yngxing)范圍若需要與操作系統(tǒng)或調(diào)度程序接口所必須的控制表等數(shù)據(jù)時,確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則數(shù)據(jù)的保護(hù)性設(shè)計 防衛(wèi)性設(shè)計:在軟件設(shè)計中就插入自動檢錯,報錯和糾錯的功能共一百七十七頁一致性設(shè)計: 保證軟件運行過程中所使用的數(shù)據(jù)的類型和取值范圍不變 在并發(fā)處理過程中使用封鎖和解除封鎖機制保持?jǐn)?shù)據(jù)不被破壞冗余性設(shè)計:針對同一問題,由兩個(lin )開發(fā)者采用不同的程序設(shè)計風(fēng)格不同的算法設(shè)計軟件,當(dāng)兩者運行結(jié)果之差不在允許范圍內(nèi)時,利用檢錯系統(tǒng)予以糾正,或使用表

6、決技術(shù)決定一個正確結(jié)果。共一百七十七頁5.可靠性設(shè)計(shj)可靠性設(shè)計也叫做質(zhì)量設(shè)計在運行過程中,為了適應(yīng)環(huán)境的變化和用戶新的要求,需經(jīng)常對軟件進(jìn)行改造和修正。在軟件開發(fā)的一開始就要確定軟件可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)措施,以使得軟件易于(yy)修改和易于(yy)維護(hù)。共一百七十七頁6.編寫(binxi)概要設(shè)計階段的文檔概要設(shè)計階段完成時應(yīng)編寫(binxi)以下文檔: 概要設(shè)計說明書 數(shù)據(jù)庫設(shè)計說明書 用戶手冊 制定初步的測試計劃共一百七十七頁7.概要(giyo)設(shè)計評審可追溯性:確認(rèn)該設(shè)計(shj)是否復(fù)蓋了所有已確定的軟件需求,軟件每一成份是否可追溯到某一項需求接口:確認(rèn)該軟件的內(nèi)部

7、接口與外部接口是否已經(jīng)明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi)風(fēng)險:確認(rèn)該設(shè)計在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否能按時實現(xiàn)共一百七十七頁實用性:確認(rèn)該設(shè)計對于需求的解決方案是否實用技術(shù)清晰度:確認(rèn)該設(shè)計是否以一種易于翻譯成代碼的形式表達(dá)可維護(hù)性:確認(rèn)該設(shè)計是否考慮了方便(fngbin)未來的維護(hù)質(zhì)量:確認(rèn)該設(shè)計是否表現(xiàn)出良好的質(zhì)量特征共一百七十七頁各種選擇方案:看是否考慮過其它方案,比較各種選擇方案的標(biāo)準(zhǔn)是什么限制:評估(pn )對該軟件的限制是否現(xiàn)實,是否與需求一致其它具體問題:對于文檔、可測試性、設(shè)計過程.等進(jìn)行評估共一百七十七頁在詳細(xì)設(shè)計過程中,需要完成

8、的工作是: 確定軟件各個(gg)組成部分內(nèi)的算法以及各部分的內(nèi)部數(shù)據(jù)組織 選定某種過程的表達(dá)形式來描述各種算法。 進(jìn)行詳細(xì)設(shè)計的評審詳細(xì)(xingx)設(shè)計共一百七十七頁軟件設(shè)計基礎(chǔ)(jch) 自頂向下,逐步細(xì)化 軟件結(jié)構(gòu) 程序結(jié)構(gòu) 結(jié)構(gòu)圖軟件設(shè)計的七條基本(jbn)原則共一百七十七頁自頂向下,逐步(zhb)細(xì)化將軟件的體系結(jié)構(gòu)按自頂向下方式,對各個層次的過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到(zhdo)用程序設(shè)計語言的語句能夠?qū)崿F(xiàn)為止,從而最后確立整個的體系結(jié)構(gòu)。共一百七十七頁軟件結(jié)構(gòu)軟件結(jié)構(gòu)包括兩部分。程序的模塊結(jié)構(gòu)和數(shù)據(jù)(shj)的結(jié)構(gòu)軟件的體系結(jié)構(gòu)通過一個劃分過程來完成。該劃分過程從需求分析確

9、立的目標(biāo)系統(tǒng)的模型出發(fā),對整個問題進(jìn)行分割,使其每個部分用一個或幾個軟件成份加以解決,整個問題就解決了共一百七十七頁共一百七十七頁程序結(jié)構(gòu)程序結(jié)構(gòu)表明了程序各個(gg)部件(模塊)的組織情況,是軟件的過程表示。 共一百七十七頁結(jié)構(gòu)圖(Structured Chart,簡稱(jinchng)SC圖) 結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系:它以特定的符號表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息(xnx)的傳遞共一百七十七頁 模塊:模塊用矩形框表示(biosh),并用模塊的名字標(biāo)記它。共一百七十七頁 模塊的調(diào)用關(guān)系和接口:模塊之間用單向箭頭聯(lián)結(jié)(linji),箭頭從調(diào)用模塊指向被調(diào)用模塊。共一

10、百七十七頁 模塊間的信息傳遞:當(dāng)一個模塊調(diào)用另一個模塊時,調(diào)用模塊把數(shù)據(jù)或控制(kngzh)信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運行。而被調(diào)用模塊在執(zhí)行過程中又把它產(chǎn)生的數(shù)據(jù)或控制(kngzh)信息回送給調(diào)用模塊共一百七十七頁 在模塊A的箭頭尾部標(biāo)以一個菱形符號,表示模塊A有條件地調(diào)用(dioyng)另一個模塊B。當(dāng)一個在調(diào)用箭頭尾部標(biāo)以一個弧形符號,表示模塊A反復(fù)調(diào)用模塊C和模塊D。共一百七十七頁程序(chngx)的系統(tǒng)結(jié)構(gòu)圖共一百七十七頁軟件設(shè)計的七條基本(jbn)原則1)模塊化(modularity)2) 抽象(Abstract)3) 信息隱蔽(Hiding)4) 信息(xnx)局部

11、化(localization)5) 一致性(Uniformity)6)完整性(Completeness)7) 確定性(Confirmability)共一百七十七頁(1)模塊化(Module)軟件系統(tǒng)的模塊化是指整個(zhngg)軟件被劃分成若干單獨命名和可編址的部分,稱之為模塊。這些模塊可以被組裝起來以滿足整個(zhngg)問題的需求。把問題子問題的分解與軟件開發(fā)中的系統(tǒng)子系統(tǒng)或系統(tǒng)模塊對應(yīng)起來,就能夠把一個大而復(fù)雜的軟件系統(tǒng)劃分成易于理解的比較單純的模塊結(jié)構(gòu)。共一百七十七頁共一百七十七頁共一百七十七頁(2)抽象化(Abstract)軟件系統(tǒng)進(jìn)行(jnxng)模塊設(shè)計時,可有不同的抽象層次。在

12、最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解法。在較低的抽象層次上,則采用過程化的方法。共一百七十七頁抽象是對事物共同的本質(zhì)的特征進(jìn)行抽取和概括,忽略其次要因素。例1:1993 Window NT, 一體化“輸入/輸出系統(tǒng)(xtng)的設(shè)計”傳統(tǒng)的設(shè)備管理是當(dāng)時操作系統(tǒng)中最不成功的領(lǐng)域文件管理網(wǎng)絡(luò)管理 “對虛擬文件的字節(jié)流”控制設(shè)備管理高速緩沖存儲器(統(tǒng)一外貌,統(tǒng)一處理和規(guī)范的)共一百七十七頁過程的抽象在軟件工程中,從系統(tǒng)定義到實現(xiàn),每進(jìn)展一步都可以看做是對軟件解決方法的抽象化過程的一次細(xì)化。 在軟件需求分析階段,用“問題所處環(huán)境的為大家所熟悉的術(shù)語”來描述軟件的解決方法。

13、在從概要設(shè)計到詳細(xì)設(shè)計的過程中,抽象化的層次逐次(zh c)降低。當(dāng)產(chǎn)生源程序時到達(dá)最低抽象層次。共一百七十七頁例: 開發(fā)一個(y )CAD軟件的三層抽象抽象層次. 用問題所處環(huán)境的術(shù)語來描述這個軟件:該軟件包括一個計算機繪圖界面,向繪圖員顯示圖形,以及一個數(shù)字化儀界面,用以代替繪圖板和丁字尺。所有直線(zhxin)、折線、矩形、圓及曲線的描畫、所有的幾何計算、所有的剖面圖和輔助視圖都可以用這個CAD軟件實現(xiàn)。共一百七十七頁抽象層次. 任務(wù)需求的描述(mio sh)。CAD SOFTWARE TASKS user interaction task; 2-D drawing creation t

14、ask; graphics display task; drawing file management task; end. 在這個抽象層次上,未給出“怎樣做”的信息,不能直接實現(xiàn)。共一百七十七頁抽象層次. 程序(chngx)過程表示。以2-D (二維)繪圖生成任務(wù)為例: PROCEDURE:2-D drawing creation REPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer interaction occurs) digitizer interface task; DETERMINE drawing

15、request CASE; line: line drawing task; rectangle:rectangle drawing task; circle: circle drawing task; 共一百七十七頁(2) 數(shù)據(jù)抽象在不同層次上描述數(shù)據(jù)對象的細(xì)節(jié),定義與該數(shù)據(jù)對象相關(guān)的操作。例如,在CAD軟件中,定義一個叫做drawing的數(shù)據(jù)對象??蓪rawing規(guī)定(gudng)為一個抽象數(shù)據(jù)類型,定義它的內(nèi)部細(xì)節(jié)為:共一百七十七頁 TYPE drawing IS STRUCTURE DEFIND number IS STRING LENGTH(12); geometry DEFIND

16、 notes IS STRING LENGTH(256); BOM DEFIND END drawing TYPE;共一百七十七頁數(shù)據(jù)抽象drawing本身由另外一些數(shù)據(jù)抽象,如geometry、BOM (bill of materials) 構(gòu)成定義drawing的抽象數(shù)據(jù)(shj)類型之后,可引用它來定義其它數(shù)據(jù)(shj)對象,而不必涉及drawing的內(nèi)部細(xì)節(jié)例如,定義:blue-print IS INSTANCE OF drawing;或 schematic IS INSTANCE OF drawing;共一百七十七頁(3)信息隱蔽(Hiding)由 parnas 方法提倡的信息隱蔽是

17、指,每個模塊的實現(xiàn)細(xì)節(jié)對于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(xnx)(包括數(shù)據(jù)和過程)不允許其它不需要這些信息(xnx)的模塊使用。共一百七十七頁例:操作系統(tǒng)中,有n個進(jìn)程都要使用緩沖區(qū)隊列中的緩沖區(qū),實現(xiàn)為進(jìn)程分配緩沖區(qū)的功能:傳統(tǒng)方法(fngf):Process: Begin P(lock) (/lock上鎖),對緩沖區(qū)隊列上鎖 分配緩沖區(qū);(調(diào)用分配緩沖區(qū)模塊) 移動指針; V(lock); /開鎖; End;現(xiàn)在方法:緩沖區(qū)管理(面向?qū)ο笾械木彌_區(qū)對象類):專管緩沖區(qū)的分配和釋放。共一百七十七頁(4) 信息局部化(localization):把關(guān)系密切的軟件元素,放在

18、一個模塊(類或包)內(nèi)(5) 一致性(Uniformity):軟件各成分(文檔和程序)使用一致的符號,操作有一致的控制結(jié)構(gòu)和調(diào)用(dioyng)序列。(6)完整性(Completeness):軟件各成分的功能應(yīng)完整,獨立。(7) 確定性/可驗證性(Confirmability):所有軟件成分可測試,定義確定,無二義性。共一百七十七頁模塊(m kui)的獨立性模塊(Module)“模塊”,又稱“組件”。它一般具有如下三個基本屬性:功能:描述該模塊實現(xiàn)什么功能邏輯:描述模塊內(nèi)部怎么做狀態(tài):該模塊使用(shyng)時的環(huán)境和條件共一百七十七頁在描述一個模塊時,還必須按模塊的外部特性(txng)與內(nèi)部特

19、性分別描述模塊的外部特性 模塊的模塊名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程序以至整個系統(tǒng)造成的影響模塊的內(nèi)部特性 完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù)共一百七十七頁模塊獨立性 模塊獨立性, 是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能, 而和軟件系統(tǒng)中其它的模塊的接口是簡單的 例如, 若一個模塊只具有單一的功能且與其它模塊沒有(mi yu)太多的聯(lián)系, 則稱此模塊具有模塊獨立性 一般采用兩個準(zhǔn)則度量模塊獨立性。即模塊間耦合和模塊內(nèi)聚共一百七十七頁 耦合是模塊(m kui)之間的互相連接的緊密程度的度量。 內(nèi)聚是模塊功能強度(一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度)的度量

20、。 模塊獨立性比較強的模塊應(yīng)是高內(nèi)聚低耦合的模塊。共一百七十七頁模塊(m kui)獨立性的定性度量之一:耦合性(Coupling) 共一百七十七頁非直接耦合(Nondirect Coupling) 兩個模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制(kngzh)和調(diào)用來實現(xiàn)的。非直接耦合的模塊獨立性最強。共一百七十七頁數(shù)據(jù)耦合 (Data Coupling)一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù) (不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部(wib)變量) 來交換輸入、輸出信息的。大小進(jìn)程(A)分配主存地址注:進(jìn)程A調(diào)用“分配主存”模塊(m kui),A傳遞一個數(shù)據(jù)項參數(shù)給分配

21、主存,要求主存的大小,返回A的參數(shù)是分給的主存起始地址。共一百七十七頁標(biāo)記耦合 (Stamp Coupling)一組模塊通過參數(shù)表傳遞記錄信息,就是(jish)標(biāo)記耦合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。學(xué)生成績表進(jìn)程(A)求平均平均成績表共一百七十七頁控制耦合 (Control Coupling) 如果一個模塊通過傳送開關(guān)、標(biāo)志、名字等控制信息,明顯地控制選擇另一模塊(m kui)的功能,就是控制耦合。共一百七十七頁模塊A將一個控制信號“平均/最高”傳遞給模塊B,模塊B根據(jù)這個參數(shù)的值是“平均”還是“最高”,來進(jìn)行“計算平均成績”或“計算最高成績”回送給模塊A。這里,參數(shù)“平均

22、/最高”是一個開關(guān)量,而不是一個數(shù)據(jù)。在這種情況下,模塊A通過該開關(guān)量控制模塊B的內(nèi)部邏輯,如果A將開關(guān)量設(shè)置(shzh)錯,模塊B就會以另一種方式工作。除此之外,控制耦合還存在著以下的問題: (1)首先必須了解開關(guān)量的作用。 (2)其次必須了解模塊B的內(nèi)部邏輯關(guān)系。因此,對于模塊A來說,模塊B就不是一個黑盒,這就增加了模塊間的相互依賴程度。 控制耦合是中等強度的耦合。平均/最高模塊(A)A計算平均或最高成績(B)成績共一百七十七頁外部耦合(External Coupling)一組模塊都訪問同一全局簡單變量而不是(b shi)同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是(b shi)通過參數(shù)表傳遞該全局變量的信

23、息,則稱之為外部耦合。公共耦合(Common Coupling)若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。共一百七十七頁公共耦合的復(fù)雜程度隨耦合模塊的個數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況(qngkung)。松散公共耦合和緊密公共耦合。共一百七十七頁內(nèi)容(nirng)耦合 (Content Coupling)如果發(fā)生下列情形,兩個模塊之間就發(fā)生了內(nèi)容耦合 (1) 一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù); (2) 一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部; (3) 兩個模塊有

24、一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中); (4) 一個模塊有多個入口。共一百七十七頁 c 內(nèi)容耦合是最強的耦合,應(yīng)該在系統(tǒng)設(shè)計中堅決避免。事實上,許多(xdu)高級程序設(shè)計語言已經(jīng)被設(shè)計為不允許出現(xiàn)任何形式的內(nèi)容耦合的結(jié)構(gòu)。 共一百七十七頁軟件設(shè)計中的耦合原則(yunz):盡量使用數(shù)據(jù)耦合,少用控制耦合,限用公共耦合的范圍,禁止使用內(nèi)容耦合。注:兩個模塊間若存在多種耦合方式,它們的耦合類型以耦合最緊的類別確定。 耦合類型耦合程度可維護(hù)性可理解性可重用性非直接耦合弱好好好數(shù)據(jù)耦合弱好好好標(biāo)記耦合較弱中等中等中等控制耦合中等差差差外部耦合較強差差差公共耦合強中等壞壞內(nèi)容耦合最強壞壞壞共一百七

25、十七頁 c 模塊(m kui)獨立性的定性度量之二:內(nèi)聚(Cohesion)共一百七十七頁功能內(nèi)聚 (Functional Cohesion)一個模塊中各個部分都是完成某一具體功能必不可少的組成部分(z chn b fn),或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。共一百七十七頁共一百七十七頁共一百七十七頁信息(xnx)內(nèi)聚 (Informational Cohesion) 這種模塊完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是

26、基于同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的模塊。共一百七十七頁共一百七十七頁信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且(bngqi)達(dá)到信息的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個模塊內(nèi),不為別的模塊所知曉。共一百七十七頁通信內(nèi)聚 (Communication Cohesion)如果一個(y )模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。共一百七十七頁共一百七十七頁共一百七十七頁計算平均成績計算最高成績(a)成績文件修改刪除(b)共一百七十七頁過程(guchng)內(nèi)聚 (Procedu

27、ral Cohesion) 使用流程圖做為工具設(shè)計程序時,把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。共一百七十七頁時間(經(jīng)典)內(nèi)聚 (Time/Classical Cohesion)時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊(m kui)大多為多功能模塊(m kui),但模塊(m kui)的各個功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如初始化模塊(m kui)和終止模塊(m kui)。共一百七十七頁邏輯內(nèi)聚(Logical Cohesion)一個模塊執(zhí)行若干個邏輯上相互關(guān)聯(lián)或相似任

28、務(wù)。如將各種類型的輸出放到一個輸出模塊中。 這種模塊把幾種 相關(guān)(xinggun)的功能組合 在一起,每次被 調(diào)用時,由傳送 給模塊的判定參 數(shù)來確定該模塊 應(yīng)執(zhí)行哪一種功 能。共一百七十七頁共一百七十七頁巧合內(nèi)聚(Coincidental Cohesion) 巧合內(nèi)聚 (偶然內(nèi)聚)。當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使(jsh)有聯(lián)系,這種聯(lián) 系也很松散, 則稱這種模 塊為巧合內(nèi) 聚模塊,它 是內(nèi)聚程度 最低的模塊。共一百七十七頁軟件設(shè)計時的內(nèi)聚選擇原則:軟件設(shè)計時應(yīng)力求做到高內(nèi)聚,可以采用中等程度的內(nèi)聚,盡量不要使用(shyng)低內(nèi)聚。7種不同內(nèi)聚類型的比較見下表表 7種內(nèi)聚的比較內(nèi)聚類

29、型耦合度執(zhí)行情況可維護(hù)性可理解性可重用性功能弱好好好好信息弱好好好中等通信中等好中等中等差過程可接受中等可接受可接受差時間較強中等中等中等壞邏輯強壞壞差壞偶然強差壞壞壞共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁4)降低模塊接口的復(fù)雜程度:接口傳遞信息簡單下面是兩個不同方式的求一元二次方程根的模塊接口。方案1 FF(AA,BB),其中AA為數(shù)組,用于傳送方程的三個系數(shù):BB也為數(shù)組,用于回送求得的二個根。這種傳遞信息的方式,接口AA,BB意義不明確,模塊名FF也不利于模塊的理解。因此,不僅在維護(hù)期間容易引起混淆,

30、在開發(fā)期間也可能由于系數(shù)傳遞錯位而發(fā)生錯誤。如果(rgu)將該模塊的接口改為下面這種方式就不容易出錯了。方案2 QUAD-ROOT (A,B,C,ROOT1,ROOT2),其中A、B、C分別是一元二次方程的二次方系數(shù)、一次方系數(shù)、常數(shù)項,ROOT1、ROOT2分別是求得的兩個根,而模塊名QUAD-ROOT則很明顯地表達(dá)了該模塊的功能。共一百七十七頁5)單入/單出口的模塊:避免內(nèi)容耦合,且模塊易理解及維護(hù)。6)模塊功能可以預(yù)測當(dāng)輸入的數(shù)據(jù)相同時產(chǎn)生的輸出也相同,那么,這個模塊的功能是可以頂測的??梢灶A(yù)測的模塊才能夠進(jìn)行測試。7)模塊作用域(范圍(fnwi))包含在模塊控制域(范圍(fnwi))內(nèi)

31、(作用域控制域)1定義控制域是指該模塊所有直接或間接的下屬模塊及該模塊本身的集合。下圖中模塊B的控制域是B、E、F、U、V、X、Y、Z。作用域:是受該模塊判定影響的所有模塊的集合。共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁結(jié)構(gòu)化設(shè)計方法(fngf)_面向數(shù)據(jù)流的結(jié)構(gòu)化設(shè)計方法 IBM公司Yourdon/Constantine, 1979首先研究、分析和審查數(shù)據(jù)流圖。 從軟件的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對于發(fā)現(xiàn)的問題及時解決。然后根據(jù)數(shù)據(jù)流圖決定問題的類型。數(shù)據(jù)處理問題典型的類型有兩種:變換型和事務(wù)型。針對(zhndu)兩種不同的類型分別進(jìn)行分

32、析處理。共一百七十七頁由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。利用一些啟發(fā)式原則來改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到(d do)符合要求的結(jié)構(gòu)圖為止。修改和補充數(shù)據(jù)詞典。制定測試計劃。共一百七十七頁在系統(tǒng)(xtng)結(jié)構(gòu)圖中的模塊傳入模塊 從下屬模塊取得數(shù)據(jù),經(jīng)過某些(mu xi)處理,再將其傳送給上級模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模塊 從上級模塊獲得數(shù)據(jù),進(jìn)行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。共一百七十七頁變換模塊 它從上級模塊取得數(shù)據(jù),進(jìn)行特定(tdng)的處理,轉(zhuǎn)換成其它形式,再傳送回上級模塊。它加工的數(shù)據(jù)流叫做變換數(shù)據(jù)流。協(xié)調(diào)模塊 對所有下屬模塊進(jìn)行

33、協(xié)調(diào)和管理的模塊。共一百七十七頁變換(binhun)型系統(tǒng)結(jié)構(gòu)圖變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)(xtng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。共一百七十七頁共一百七十七頁事務(wù)(shw)型系統(tǒng)結(jié)構(gòu)圖它接受一項事務(wù),根據(jù)事務(wù)處理的特點和性質(zhì),選擇分派一個適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。在事務(wù)型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)的類型,選擇某一事務(wù)處理模塊執(zhí)行(zhxng)。各事務(wù)處理模塊并列。每個事務(wù)處理模塊可能要調(diào)用若干個操作模塊,而操作模塊又可能調(diào)用若干個細(xì)節(jié)模塊。共一百七十七頁共一百七十七頁變

34、換分析(Transform Analysis) 變換分析方法由以下四步組成: 重畫數(shù)據(jù)流圖; 區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分; 進(jìn)行一級分解(fnji),設(shè)計上層模塊; 進(jìn)行二級分解,設(shè)計輸入、輸出和中心變換部分的中、下層模塊。共一百七十七頁共一百七十七頁共一百七十七頁共一百七十七頁 在選擇模塊設(shè)計的次序時,必須對一個模塊的全部直接下屬模塊都設(shè)計完成 之后(zhhu),才 能轉(zhuǎn)向另 一個模塊 的下層模 塊的設(shè)計。共一百七十七頁 在設(shè)計下層模塊時,應(yīng)考慮模塊的耦合和內(nèi)聚問題,以提高(t go)初始結(jié)構(gòu)圖的質(zhì)量。 使用“黑箱”技術(shù): 在設(shè)計當(dāng)前模塊時,先把這個模塊的所有下層模

35、塊定義成“黑箱”,在設(shè)計中利用它們時,暫時不考慮其內(nèi)部結(jié)構(gòu)和實現(xiàn)。在這一步定義好的“黑箱”,在下一步就可以對它們進(jìn)行設(shè)計和加工。這樣,又會導(dǎo)致更多的“黑箱”。最后,全部“黑箱”的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。共一百七十七頁 在模塊劃分時,一個模塊的直接下屬模塊一般在5個左右。如果直接下屬模塊超過10個,可設(shè)立中間層次。 如果出現(xiàn)了以下情況,就停止模塊的功能分解:當(dāng)模塊不能再細(xì)分為明顯的子任務(wù)時;當(dāng)分解成用戶(yngh)提供的模塊或程序庫的子程序時;當(dāng)模塊的界面是輸入輸出設(shè)備傳送的信息時;當(dāng)模塊不宜再分解得過小時。共一百七十七頁共一百七十七頁共一百七十七頁事務(wù)(shw)分析(Transaction A

36、nalysis) 在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務(wù)(shw)。與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)到結(jié)構(gòu)圖。共一百七十七頁共一百七十七頁事務(wù)(shw)分析過程 識別事務(wù)源利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題定義和需求(xqi)分析的結(jié)果中,找出各種需要處理的事務(wù)。通常,事務(wù)來自物理輸入裝置。有時,設(shè)計人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產(chǎn)生的事務(wù)。共一百七十七頁 規(guī)定適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)在確定了該數(shù)據(jù)流圖具有事務(wù)型特征之后,根據(jù)模塊劃分理論,建立適當(dāng)?shù)氖聞?wù)型結(jié)構(gòu)。 識別各種

37、事務(wù)和它們定義的操作。從問題定義和需求分析中找出的事務(wù)及其操作所必需的全部(qunb)信息,對于系統(tǒng)內(nèi)部產(chǎn)生的事務(wù),必須仔細(xì)地定義它們的操作。共一百七十七頁 注意利用公用模塊在事務(wù)分析的過程中,如果不同(b tn)事務(wù)的一些中間模塊可由具有類似的語法和語義的若干個低層模塊組成,則可以把這些低層模塊構(gòu)造成公用模塊。 對每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個事務(wù)處理模塊;如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務(wù),可以把它們組成一個事務(wù)處理模塊。共一百七十七頁 對事務(wù)處理模塊規(guī)定它們?nèi)康南聦硬僮髂K 對操作模塊規(guī)定它們的全部細(xì)節(jié)模塊 變換、事務(wù)混合型結(jié)構(gòu):以變換分析(fnx)為主,事務(wù)分析(fnx)為輔,

38、即總體框架是變換型,變換中心的下層分解則基于事務(wù)型 共一百七十七頁變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計的主要方法。一般,一個大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行(jnxng)軟件結(jié)構(gòu)設(shè)計。共一百七十七頁 共一百七十七頁共一百七十七頁設(shè)計(shj)的后處理為每一個模塊寫一份處理說明為每一個模塊提供一份接口說明確定全局?jǐn)?shù)據(jù)結(jié)構(gòu)和局部數(shù)據(jù)結(jié)構(gòu)指出所有的設(shè)計約束和限制進(jìn)行概要設(shè)計的評審(pn shn)進(jìn)行設(shè)計的優(yōu)化(如果需要和可能的話)共一百七十七頁數(shù)據(jù)(shj)設(shè)計及文件設(shè)計數(shù)據(jù)(shj)設(shè)計的原則文件設(shè)計共一百七十七頁數(shù)據(jù)(shj)設(shè)計的

39、原則R.S.Pressman數(shù)據(jù)設(shè)計的過程 為在需求分析階段所確定的數(shù)據(jù)對象選擇邏輯表示,需要對不同結(jié)構(gòu)進(jìn)行算法分析,以便選擇一個最有效的結(jié)構(gòu);設(shè)計對于這種邏輯數(shù)據(jù)結(jié)構(gòu)的一組操作(cozu),以實現(xiàn)各種所期望的運算。共一百七十七頁 確定(qudng)對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包),以便限制或確定各個數(shù)據(jù)設(shè)計決策的影響范圍。Pressman提出了一組原則,用來定義和設(shè)計數(shù)據(jù)。實際上,在進(jìn)行需求分析時往往就開始了數(shù)據(jù)設(shè)計。共一百七十七頁1.用于軟件的系統(tǒng)化方法(fngf)也適用于數(shù)據(jù)。在導(dǎo)出、評審和定義軟件的需求和軟件系統(tǒng)結(jié)構(gòu)時,必須定義和評審其中所用到的數(shù)據(jù)流、數(shù)據(jù)對象及數(shù)據(jù)

40、結(jié)構(gòu)的表示。應(yīng)當(dāng)考慮幾種不同的數(shù)據(jù)組織方案,還應(yīng)當(dāng)分析數(shù)據(jù)設(shè)計給軟件設(shè)計帶來的影響。共一百七十七頁2.確定所有的數(shù)據(jù)結(jié)構(gòu)和在每種數(shù)據(jù)結(jié)構(gòu)上施加的操作。設(shè)計(shj)有效的數(shù)據(jù)結(jié)構(gòu),必須考慮到要對該數(shù)據(jù)結(jié)構(gòu)進(jìn)行的各種操作。3.應(yīng)當(dāng)建立一個數(shù)據(jù)詞典并用它來定義數(shù)據(jù)和軟件的設(shè)計。數(shù)據(jù)詞典清楚地說明了各個數(shù)據(jù)之間的關(guān)系和對數(shù)據(jù)結(jié)構(gòu)內(nèi)各個數(shù)據(jù)元素的約束。共一百七十七頁4.低層數(shù)據(jù)設(shè)計的決策應(yīng)推遲到設(shè)計過程的后期進(jìn)行。在進(jìn)行需求分析時確定的總體數(shù)據(jù)組織,應(yīng)在概要設(shè)計階段加以細(xì)化,在詳細(xì)設(shè)計階段才規(guī)定具體的細(xì)節(jié)(xji)。5.數(shù)據(jù)結(jié)構(gòu)的表示只限于那些必須直接使用該數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)的模塊才能知道。此原則就是信息

41、隱蔽和與此相關(guān)的耦合性原則。共一百七十七頁6.應(yīng)當(dāng)(yngdng)建立一個存放有效數(shù)據(jù)結(jié)構(gòu)及相關(guān)操作的庫。數(shù)據(jù)結(jié)構(gòu)應(yīng)當(dāng)設(shè)計成為可復(fù)用的。建立一個存有各種可復(fù)用的數(shù)據(jù)結(jié)構(gòu)模型的部件庫。7.軟件設(shè)計和程序設(shè)計語言應(yīng)當(dāng)支持抽象數(shù)據(jù)類型的定義和實現(xiàn)。 以上原則適用于軟件工程的定義階段和開發(fā)階段?!扒逦男畔⒍x是軟件開發(fā)成功的關(guān)鍵”。共一百七十七頁文件(wnjin)設(shè)計文件設(shè)計的過程,主要分兩個階段(jidun)。第一個階段(jidun)是文件的邏輯設(shè)計,主要在概要設(shè)計階段(jidun)實施。共一百七十七頁(1) 整理必須的數(shù)據(jù)元素: 在軟件設(shè)計中所使用的數(shù)據(jù),有長期的,有短期的,還有臨時的。它們都可

42、以存放在文件中,在需要時對它們進(jìn)行訪問。因此首先必須整理應(yīng)存儲的數(shù)據(jù)元素,給它們一個(y )易于理解的名字,指明其類型和位數(shù),以及其內(nèi)容涵義。共一百七十七頁(2) 分析數(shù)據(jù)間的關(guān)系: 分析在業(yè)務(wù)(yw)處理中哪些數(shù)據(jù)元素是同時使用的。把同時使用次數(shù)多的數(shù)據(jù)元素歸納成一個文件進(jìn)行管理。分析數(shù)據(jù)元素的內(nèi)容,研究數(shù)據(jù)元素與數(shù)據(jù)元素之間的邏輯關(guān)系,根據(jù)分析,弄清數(shù)據(jù)元素的含義及其屬性。共一百七十七頁(3) 確定文件的邏輯設(shè)計: 根據(jù)數(shù)據(jù)關(guān)聯(lián)性分析,明確哪些數(shù)據(jù)元素應(yīng)當(dāng)歸于一組進(jìn)行管理,把應(yīng)當(dāng)歸于一組的數(shù)據(jù)元素進(jìn)行統(tǒng)一布局,產(chǎn)生文件的邏輯設(shè)計。應(yīng)用關(guān)系模型設(shè)計文件的邏輯結(jié)構(gòu)時,必須使其達(dá)到第三(d sn

43、)范式(3NF),以減少數(shù)據(jù)的冗余,提高存取的效率。共一百七十七頁顧客文件(wnjin) 商品文件(wnjin)X : 英文字母數(shù)字(shz); K : 漢字; N : 數(shù)字共一百七十七頁 第二個階段是文件的物理設(shè)計,主要在軟件的詳細(xì)設(shè)計階段實施(4) 理解文件的特性: 對于文件的邏輯規(guī)格說明,研究從業(yè)務(wù)處理的觀點來看所要求(yoqi)的一些特性,包括文件的使用率、追加率和刪除率,以及保護(hù)和保密等??紤]需要采用什么文件組織形式。共一百七十七頁(5)確定文件的組織方式 一般要根據(jù)文件的特性(txng),來確定文件的組織方式。 順序文件:連續(xù)文件串聯(lián)文件。 直接存取文件:無關(guān)鍵字直接存取文件帶關(guān)鍵

44、字直接存取文件桶式直接存取文件。共一百七十七頁索引順序文件:其基本(jbn)數(shù)據(jù)記錄按順序文件組織,記錄排列順序必須按關(guān)鍵字值升序或降序安排,且具有索引部分,也按同一關(guān)鍵字進(jìn)行索引。分區(qū)文件:這類文件主要用于存放程序。它由若干稱為成員的順序組織的記錄組和索引組成。共一百七十七頁虛擬存儲文件: 這是基于操作系統(tǒng)(co zu x tn)的請求頁式存儲管理功能而建立的索引順序文件。倒排文件:按候選屬性建立索引表。共一百七十七頁(6)確定文件的存儲介質(zhì);(7)確定文件的記錄格式;確定文件記錄中各數(shù)據(jù)項以及它們在記錄中的物理安排。 記錄的長度:設(shè)計記錄的長度要確保能滿足需要,還要考慮使用設(shè)備的制約和效率

45、,盡可能與讀寫單位匹配,并盡可能減少處理過程中內(nèi)外存的交換(jiohun)次數(shù)。共一百七十七頁 數(shù)據(jù)項的順序:對于可變長記錄,應(yīng)在記錄的開頭(ki tu)記入長度信息;對于關(guān)鍵字項,應(yīng)盡量按級別高低,順序配置;聯(lián)系較密切的數(shù)據(jù)項,應(yīng)歸納在一起進(jìn)行配置。 數(shù)據(jù)項的屬性:屬性相同的數(shù)據(jù)項,應(yīng)盡量歸納在一起配置;數(shù)據(jù)項應(yīng)按雙字長,全字長,半字長和字節(jié)的屬性,順序配置。共一百七十七頁 預(yù)留空間:考慮到將來可能的變更(bingng)或擴充,應(yīng)當(dāng)預(yù)先留一些空閑空間。不必統(tǒng)一地預(yù)留,可在有可能變更(bingng)或擴充的項旁邊,在相鄰接處預(yù)留。(8) 估算存取時間和存儲容量。共一百七十七頁詳細(xì)(過程(guc

46、hng)/模塊)設(shè)計從軟件開發(fā)的工程化觀點來看,在使用程序設(shè)計語言編制程序以前,需要對所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計出全部必要(byo)的過程細(xì)節(jié),并給予清晰的表達(dá)。這就是詳細(xì)(過程)設(shè)計的任務(wù)。共一百七十七頁在過程設(shè)計階段,要決定各個模塊的實現(xiàn)算法,并精確地表達(dá)這些算法。表達(dá)過程規(guī)格說明的工具叫做詳細(xì)設(shè)計工具,它可以(ky)分為以下三類: 圖形工具過程細(xì)節(jié)用圖形描述,主要:程序流程圖(Program Flow Chart=PFC),N-S圖,PAD圖) 表格工具判定表(Decision Table) 語言工具偽碼(PDL) 共一百七十七頁1)結(jié)構(gòu)化程序設(shè)計(shj)方法(SP)a)“Goto語句之爭”1。E.W.Dijkstra,1965,a)在高級語言中取消Goto語言,b)程序質(zhì)量與程序中使用的Goto語句成反比。爭論:“在高級語言中是否應(yīng)取消無條件轉(zhuǎn)移Goto語句”主張:程序結(jié)構(gòu)不清晰,可理解性,可維護(hù)性差。反對:程序運行效率提高(t go),降低復(fù)雜性。實質(zhì):在程序設(shè)計中,良好

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論