【正文】
。還可以與它的上級模塊合并。 ② 公共數(shù)據(jù)域病態(tài)聯(lián)接 模塊 A和模塊 B通過公共數(shù)據(jù)域,直接傳送或接受數(shù)據(jù),而不是通過它們的上級模塊。把模塊的大小限制在一定的范圍之內(nèi)。 ? 軟件包應(yīng)滿足設(shè)計約束和可移植性 為了使得軟件包可以在某些特定的環(huán)境下能夠安裝和運行,對軟件包提出了一些設(shè)計約束和可移植的要求。 在導(dǎo)出、評審和定義軟件的需求和軟件系統(tǒng)結(jié)構(gòu)時,必須定義和評審其中所用到的數(shù)據(jù)流、數(shù)據(jù)對象及數(shù)據(jù)結(jié)構(gòu)的表示。 接使用該數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)的模塊才能知道 。 文件設(shè)計 文件設(shè)計的過程,主要分兩個階段。 (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è)計。 直接存取文件 : 無關(guān)鍵字直接存取文件 帶關(guān)鍵字直接存取文件 桶式直接存取文件。 確定文件記錄中各數(shù)據(jù)項以及它們在記錄中的物理安排。這就是過程設(shè)計的任務(wù)。 ? 將右部每一縱列規(guī)定為一個處理規(guī)則,即對于某一條件取值組合將有什么動作。 ? 為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫。 使用 PDL語言 , 逐步求精: PROCEDURE spellcheck BEGIN * split document into single words LOOP get next word add word to word list in sortorder EXIT WHEN all words processed END LOOP * look up words in dictionary LOOP get word from word list IF word not in dictionary THEN * display words not in dictionary display word prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processed END LOOP * create a new words dictionary dictionary := merge dictionary and good word list END spellcheck 。 示例 : 拼詞檢查程序 PROCEDURE spellcheck IS BEGIN split document into single words lood up words in dictionary display words which are not in dictionary create a new dictionary END spellcheck PDL的特點 ? 提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊特征。 ? 列出過程執(zhí)行期間的所有條件 (或所有判斷 )。 (8) 估算存取時間和存儲容量。 (6)確定文件的存儲介質(zhì) 。 (5)確定文件的組織方式 一般要根據(jù)文件的特性,來確定文件的組織方式。把同時使用次數(shù)多的數(shù)據(jù)元素歸納成一個文件進(jìn)行管理。 以上原則適用于軟件工程的定義階段和開發(fā)階段。 過程的后期進(jìn)行 。實際上,在進(jìn)行需求分析時往往就開始了數(shù)據(jù)設(shè)計。 ? 為了能夠適應(yīng)將來的變更,軟件模塊中局部數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,控制流的選擇對于調(diào)用者來說,應(yīng)當(dāng)是可預(yù)測的。從這個意義上講,這種聯(lián)接是病態(tài)的。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。此時可以采取完全合并的方法。 ⑤ 對每一事務(wù),或?qū)β?lián)系密切的一組事務(wù),建立一個事務(wù)處理模塊; 如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務(wù),可以把它們組成一個事務(wù)處理模塊。 ? 與變換分析一樣,事務(wù)分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)到結(jié)構(gòu)圖。在這一步定義好的“黑箱”,在下一步就可以對它們進(jìn)行設(shè)計和加工。 事務(wù)型系統(tǒng)結(jié)構(gòu)圖 ? 它接受一項事務(wù),根據(jù)事務(wù)處理的特點和性質(zhì),選擇分派一個適當(dāng)?shù)奶幚韱卧?,然后給出結(jié)果。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。 ? 然后根據(jù)數(shù)據(jù)流圖決定問題的類型。 時間內(nèi)聚 ( Classical Cohesion) 時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。松散公共耦合和緊密公共耦合。 標(biāo)記耦合 (Stamp Coupling) 一組模塊通過參數(shù)表傳遞 記錄信息 ,就是標(biāo)記耦合。 模塊的獨立性 ? 模塊( Module) “模塊”,又稱“組件”。 例如,在 CAD軟件中,定義一個叫做 drawing的數(shù)據(jù)對象。 end. 在這個抽象層次上,未給出“怎樣做”的信息,不能直接實現(xiàn)。當(dāng)產(chǎn)生源程序時到達(dá)最低抽象層次。這些模塊可以被組裝起來以滿足整個問題的需求。 程序的模塊結(jié)構(gòu) 和 數(shù)據(jù)的結(jié)構(gòu) ? 軟件的體系結(jié)構(gòu)通過一個劃分過程來完成 。 ? 采用某種設(shè)計方法,將系統(tǒng)按功能 劃分成模塊的層次結(jié)構(gòu) ? 確定每個 模塊的功能 ? 建立與已確定的 軟件需求的對應(yīng)關(guān)系 ? 確定模塊間的 調(diào)用關(guān)系 ? 確定模塊間的 接口 ? 評估模塊 劃分的質(zhì)量 3. 處理方式設(shè)計 ? 確定為實現(xiàn)系統(tǒng)的功能需求所必需的 算法 ,評估算法的性能 ? 確定為滿足系統(tǒng)的性能需求所必需的算法和模塊間的控制方式 ? 周轉(zhuǎn)時間 ? 響應(yīng)時間 ? 吞吐量 ? 精度 ? 確定外部信號的接收發(fā)送形式 4. 數(shù)據(jù)結(jié)構(gòu)設(shè)計 ? 確定軟件涉及的文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫的模式、子模式,進(jìn)行數(shù)據(jù)完整性和安全性的設(shè)計 ? 確定輸入,輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu) ? 結(jié)合算法設(shè)計,確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作 ? 確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊 (軟件包 ) ? 限制和確定各個數(shù)據(jù)設(shè)計決策的影響范圍 ? 若需要與操作系統(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ā)處理過程中使用封鎖和解除