




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、珠海市軟件行業(yè)協(xié)會專家委員會主任珠海市軟件行業(yè)協(xié)會專家委員會主任吉林大學珠海學院計算機系教授吉林大學珠海學院計算機系教授第四章 軟件設(shè)計3 軟件設(shè)計是軟件開發(fā)的核心。是在需求分析和軟件設(shè)計是軟件開發(fā)的核心。是在需求分析和設(shè)計的基礎(chǔ)上進行的。設(shè)計的基礎(chǔ)上進行的。 本章論述本章論述軟件設(shè)計的任務及目標、軟件設(shè)計的概軟件設(shè)計的任務及目標、軟件設(shè)計的概念、原理和設(shè)計準則、軟件設(shè)計常用的方法以及多念、原理和設(shè)計準則、軟件設(shè)計常用的方法以及多層層結(jié)構(gòu)設(shè)計技術(shù)、設(shè)計文檔和管理文檔編寫的參考指南、結(jié)構(gòu)設(shè)計技術(shù)、設(shè)計文檔和管理文檔編寫的參考指南、數(shù)據(jù)庫設(shè)計方法,數(shù)據(jù)模型設(shè)計案例分析。數(shù)據(jù)庫設(shè)計方法,數(shù)據(jù)模型設(shè)計
2、案例分析。第四章 軟件設(shè)計4軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護工作的基礎(chǔ)。如軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護工作的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)第四章 軟件設(shè)計5概要設(shè)計說明書概要設(shè)計說明書詳細設(shè)計說明書詳細設(shè)計說明書軟件設(shè)計軟件設(shè)計簡單地說,軟件設(shè)計就是根據(jù)需求分析的簡單地說,軟件設(shè)計就是根據(jù)需求分析的“做什么做什么(What (What to do?)to do?)”,確定系統(tǒng)應該,確定系統(tǒng)應該“怎么做怎么做”(How to do?)(How to do?)。 需求規(guī)格說明書需求規(guī)格說明書第四章 軟件設(shè)計6概要設(shè)計:將軟件需求轉(zhuǎn)化為軟
3、件的系統(tǒng)結(jié)構(gòu),形成概要設(shè)計規(guī)格書。詳細設(shè)計:過程設(shè)計和界面設(shè)計。形成詳細設(shè)計規(guī)格書。數(shù)據(jù)設(shè)計:包括數(shù)據(jù)結(jié)構(gòu)、文件和數(shù)據(jù)庫的設(shè)計。結(jié)構(gòu)設(shè)計:選擇合理的體系結(jié)構(gòu),對系統(tǒng)進行分解和劃分。過程設(shè)計:通過對結(jié)構(gòu)表示進行細化,得到軟件詳細的界面、數(shù)據(jù)結(jié)構(gòu)和程序算法。第四章 軟件設(shè)計7第四章 軟件設(shè)計8第四章 軟件設(shè)計9設(shè)計階段選用合適的設(shè)計方法進行系統(tǒng)結(jié)構(gòu)、設(shè)計階段選用合適的設(shè)計方法進行系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、界面表示和實現(xiàn)過程的設(shè)計。數(shù)據(jù)結(jié)構(gòu)、界面表示和實現(xiàn)過程的設(shè)計。 第四章 軟件設(shè)計10第四章 軟件設(shè)計11制定設(shè)計時共同制定設(shè)計時共同遵守的標準,以便協(xié)調(diào)組內(nèi)各成員的工作。遵守的標準,以便協(xié)調(diào)組內(nèi)各成員的
4、工作。 確定設(shè)計目標和最合適的設(shè)計方法。確定設(shè)計目標和最合適的設(shè)計方法。 規(guī)定編碼的信息形式和接口規(guī)約規(guī)定編碼的信息形式和接口規(guī)約。 確定命名規(guī)范。確定命名規(guī)范。 確定構(gòu)件重用策略。確定構(gòu)件重用策略。 面向模塊(部件或構(gòu)件)進行設(shè)計。面向模塊(部件或構(gòu)件)進行設(shè)計。 規(guī)定設(shè)計文檔的規(guī)定設(shè)計文檔的規(guī)范規(guī)范。 規(guī)定代碼編寫規(guī)定代碼編寫規(guī)范。規(guī)范。 概要設(shè)計方法;概要設(shè)計方法; 詳細設(shè)計和編程方法。詳細設(shè)計和編程方法。第四章 軟件設(shè)計12 將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu) 確定每個模塊的功能、與需求相對應確定每個模塊的功能、與需求相對應 確定模塊間的調(diào)用關(guān)系確定模塊間
5、的調(diào)用關(guān)系 確定模塊間的接口確定模塊間的接口 評估模塊劃分的質(zhì)量評估模塊劃分的質(zhì)量基于基于功能的層次結(jié)構(gòu)功能的層次結(jié)構(gòu)建立系統(tǒng)。建立系統(tǒng)。第四章 軟件設(shè)計13 確定確定算法算法,評估算法的性能,評估算法的性能 確定模塊間的控制方式確定模塊間的控制方式 周轉(zhuǎn)時間周轉(zhuǎn)時間 響應時間響應時間 吞吐量吞吐量 精度精度 確定外部信號的接收發(fā)送形式確定外部信號的接收發(fā)送形式第四章 軟件設(shè)計14確定確定I/OI/O文件的數(shù)據(jù)結(jié)構(gòu)文件的數(shù)據(jù)結(jié)構(gòu)確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)確定對邏輯數(shù)據(jù)結(jié)構(gòu)所操作的程序模塊確定對邏輯數(shù)據(jù)結(jié)構(gòu)所操作的程序模塊限制和確定各個數(shù)據(jù)設(shè)計的影響范圍限制和確定各
6、個數(shù)據(jù)設(shè)計的影響范圍確定接口數(shù)據(jù)其詳細的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則確定接口數(shù)據(jù)其詳細的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則目的:保證數(shù)據(jù)完整性和安全性。目的:保證數(shù)據(jù)完整性和安全性。數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的的設(shè)計)設(shè)計)第四章 軟件設(shè)計15目的:確定數(shù)據(jù)庫的模式、子模式。目的:確定數(shù)據(jù)庫的模式、子模式。概念結(jié)構(gòu)設(shè)計:概念結(jié)構(gòu)設(shè)計:可以用可以用E-RE-R模型表示,也可以模型表示,也可以用用3NF3NF關(guān)系群表示關(guān)系群表示 邏輯結(jié)構(gòu)設(shè)計:邏輯結(jié)構(gòu)設(shè)計:是將概念模型轉(zhuǎn)換成是將概念模型轉(zhuǎn)換成DBMSDBMS支持支持的數(shù)據(jù)模型。的數(shù)據(jù)模型。物理結(jié)構(gòu)設(shè)計物理結(jié)構(gòu)設(shè)計:設(shè)計數(shù)據(jù)模式的一些物理細節(jié),設(shè)計數(shù)據(jù)模式的一些物理細節(jié),選定存儲結(jié)構(gòu)
7、和存取方法選定存儲結(jié)構(gòu)和存取方法 ,以獲得數(shù)據(jù)庫的,以獲得數(shù)據(jù)庫的最佳存取效率。最佳存取效率。數(shù)據(jù)庫設(shè)計)數(shù)據(jù)庫設(shè)計)第四章 軟件設(shè)計16數(shù)據(jù)的保護性設(shè)計)數(shù)據(jù)的保護性設(shè)計)第四章 軟件設(shè)計17在軟件開發(fā)的一開始就應確定軟件在軟件開發(fā)的一開始就應確定軟件可靠性和其它質(zhì)量指標,考慮相應可靠性和其它質(zhì)量指標,考慮相應措施,確保所做的設(shè)計具有良好的措施,確保所做的設(shè)計具有良好的質(zhì)量特性,使軟件易于修改和易于質(zhì)量特性,使軟件易于修改和易于維護。維護。(質(zhì)量設(shè)計)(質(zhì)量設(shè)計)第四章 軟件設(shè)計18 確定軟件各模塊內(nèi)的算法和數(shù)據(jù)結(jié)構(gòu)。確定軟件各模塊內(nèi)的算法和數(shù)據(jù)結(jié)構(gòu)。 選定某種過程的表達形式來描述各種算法。
8、選定某種過程的表達形式來描述各種算法。 進行詳細設(shè)計的評審進行詳細設(shè)計的評審在詳細設(shè)計過程中,需要完成的工作是:在詳細設(shè)計過程中,需要完成的工作是:第四章 軟件設(shè)計19 概要設(shè)計規(guī)格說明書概要設(shè)計規(guī)格說明書 數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計規(guī)格規(guī)格說明書說明書 詳細設(shè)計詳細設(shè)計規(guī)格規(guī)格說明書說明書 用戶使用手冊用戶使用手冊 測試計劃與測試標準測試計劃與測試標準第四章 軟件設(shè)計20 可追溯性:可追溯性:需求復蓋需求復蓋確認確認 接口:接口:內(nèi)部接口與外部接口定義的確認。內(nèi)部接口與外部接口定義的確認。 風險:風險:確認技術(shù)條件、預算范圍。確認技術(shù)條件、預算范圍。 實用性:實用性:確認對于需求的實用性。確認對于
9、需求的實用性。 技術(shù)清晰度:技術(shù)清晰度:確認代碼的可實現(xiàn)性確認代碼的可實現(xiàn)性 可維護性:可維護性:確認可維護性確認可維護性 質(zhì)量:質(zhì)量:確認質(zhì)量特征確認質(zhì)量特征 各種選擇方案:各種選擇方案:選擇方案的標準選擇方案的標準 限制:限制:評估限制的現(xiàn)實性,與需求的一致性評估限制的現(xiàn)實性,與需求的一致性 其它具體問題:其它具體問題:對文檔、可測試性、設(shè)計過程等進行評估對文檔、可測試性、設(shè)計過程等進行評估第四章 軟件設(shè)計21 節(jié)省開發(fā)費用、節(jié)省開發(fā)費用、 降低資源消耗、降低資源消耗、 縮短開發(fā)時間、縮短開發(fā)時間、 能夠贏得較高的生產(chǎn)效率、能夠贏得較高的生產(chǎn)效率、 較高的可靠性、較高的可靠性、 可維護性的
10、方案??删S護性的方案。軟件設(shè)計的最終目標:軟件設(shè)計的最終目標:取得最佳方案取得最佳方案第四章 軟件設(shè)計223 3、軟件、軟件設(shè)計文檔設(shè)計文檔 概要設(shè)計規(guī)格書概要設(shè)計規(guī)格書詳細設(shè)計規(guī)格書詳細設(shè)計規(guī)格書數(shù)據(jù)庫設(shè)計規(guī)格書數(shù)據(jù)庫設(shè)計規(guī)格書用戶操作手冊用戶操作手冊測試計劃與標準測試計劃與標準第四章 軟件設(shè)計23概要設(shè)計說明書要點概要設(shè)計說明書要點 軟件軟件體系結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)設(shè)計模塊(部件)功能分配模塊(部件)功能分配數(shù)據(jù)結(jié)構(gòu)設(shè)計數(shù)據(jù)結(jié)構(gòu)設(shè)計接口設(shè)計接口設(shè)計檢查列表檢查列表第四章 軟件設(shè)計24 主要設(shè)計思想與方法主要設(shè)計思想與方法 模塊實現(xiàn)過程設(shè)計模塊實現(xiàn)過程設(shè)計 接口實現(xiàn)過程設(shè)計接
11、口實現(xiàn)過程設(shè)計 主要算法和數(shù)據(jù)結(jié)構(gòu)說明主要算法和數(shù)據(jù)結(jié)構(gòu)說明 界面設(shè)計界面設(shè)計 檢查列表檢查列表第四章 軟件設(shè)計25概要設(shè)計說明書評審記錄表概要設(shè)計說明書評審記錄表詳細設(shè)計說明書評審記錄表詳細設(shè)計說明書評審記錄表突出設(shè)計書評審中不符合項的跟蹤記錄。突出設(shè)計書評審中不符合項的跟蹤記錄。不符合項主要是在系統(tǒng)功能、性能、接口的設(shè)不符合項主要是在系統(tǒng)功能、性能、接口的設(shè)計上存在的遺漏或缺陷。計上存在的遺漏或缺陷。只有不符合項為零時,評審才能通過。只有不符合項為零時,評審才能通過。因此,評審可能進行多次。因此,評審可能進行多次。意見指出不符合項、強項和弱項。意見指出不符合項、強項和弱項。評審結(jié)論就是通過
12、或不通過。評審結(jié)論就是通過或不通過。記錄表要點:記錄表要點:第四章 軟件設(shè)計26第四章 軟件設(shè)計27軟件過程集中考慮每個模塊各自的處軟件過程集中考慮每個模塊各自的處理細節(jié)。過程必須提供一個精確的處理規(guī)格說明,理細節(jié)。過程必須提供一個精確的處理規(guī)格說明,包括事件順序,精確的判定位置、重復的操作,包括事件順序,精確的判定位置、重復的操作,以及數(shù)據(jù)組織和結(jié)構(gòu)等以及數(shù)據(jù)組織和結(jié)構(gòu)等 。描述一個模塊的實現(xiàn),描述一個模塊的實現(xiàn),必須包括所有從屬于該模塊的所有模塊的引用,必須包括所有從屬于該模塊的所有模塊的引用,而從屬于該模塊的所有模塊是通過結(jié)構(gòu)體現(xiàn)的。而從屬于該模塊的所有模塊是通過結(jié)構(gòu)體現(xiàn)的。 第四章 軟
13、件設(shè)計28 數(shù)據(jù)詞典 數(shù) 據(jù) 流 圖 實實 體 關(guān) 系 圖 狀態(tài)轉(zhuǎn)換圖 加 工 控 制 規(guī) 規(guī) 格 格 說 說 明 明 數(shù) 據(jù) 對 象 描 述 過程設(shè)計 接口設(shè)計 體系結(jié)構(gòu)設(shè)計 數(shù)據(jù)設(shè)計 用數(shù)據(jù)、功能和行為模型表示的軟件需求,采用某種設(shè)計方用數(shù)據(jù)、功能和行為模型表示的軟件需求,采用某種設(shè)計方法進行數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計和過程設(shè)計。法進行數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計和過程設(shè)計。 第四章 軟件設(shè)計29 數(shù)據(jù)設(shè)計將實體數(shù)據(jù)設(shè)計將實體關(guān)系圖中描述的對象和關(guān)系,以及數(shù)關(guān)系圖中描述的對象和關(guān)系,以及數(shù)據(jù)詞典中描述的詳細數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。據(jù)詞典中描述的詳細數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定
14、義。體系結(jié)構(gòu)設(shè)計定義軟件系統(tǒng)各主要成份之間的關(guān)系。體系結(jié)構(gòu)設(shè)計定義軟件系統(tǒng)各主要成份之間的關(guān)系。接口設(shè)計根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件接口設(shè)計根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶之間的交互機制。與其它協(xié)同系統(tǒng)之間及軟件與用戶之間的交互機制。過程設(shè)計則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述。過程設(shè)計則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述。 軟件設(shè)計是開發(fā)階段中最重要的步驟,它是軟件開發(fā)過軟件設(shè)計是開發(fā)階段中最重要的步驟,它是軟件開發(fā)過程中質(zhì)量得以保證的關(guān)鍵步驟。程中質(zhì)量得以保證的關(guān)鍵步驟。 第四章 軟件設(shè)計30設(shè)計必須實現(xiàn)分析模型中描述的所有顯式需求,必設(shè)計
15、必須實現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。須滿足用戶希望的所有隱式需求。設(shè)計必須是可讀、可理解的,使得將來易于編程、設(shè)計必須是可讀、可理解的,使得將來易于編程、易于測試、易于維護。易于測試、易于維護。設(shè)計應從實現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為設(shè)計應從實現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為相關(guān)的軟件全貌。相關(guān)的軟件全貌。第四章 軟件設(shè)計31設(shè)計出來的結(jié)構(gòu)應是分層結(jié)構(gòu),從而建立軟件成份之間的控制。設(shè)計出來的結(jié)構(gòu)應是分層結(jié)構(gòu),從而建立軟件成份之間的控制。設(shè)計應當模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的設(shè)計應當模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的構(gòu)件
16、。構(gòu)件。設(shè)計應當既包含數(shù)據(jù)抽象,也包含過程抽象。設(shè)計應當既包含數(shù)據(jù)抽象,也包含過程抽象。設(shè)計應當建立具有具有獨立功能特征的模塊。設(shè)計應當建立具有具有獨立功能特征的模塊。設(shè)計應當建立能夠降低模塊與外部環(huán)境之間復雜連接的接口。設(shè)計應當建立能夠降低模塊與外部環(huán)境之間復雜連接的接口。設(shè)計應能根據(jù)軟件需求分析獲取的信息,建立可驅(qū)動可重復的方法。設(shè)計應能根據(jù)軟件需求分析獲取的信息,建立可驅(qū)動可重復的方法。第四章 軟件設(shè)計32該劃分過程從需求分析確立的目標系統(tǒng)的模型出發(fā),對該劃分過程從需求分析確立的目標系統(tǒng)的模型出發(fā),對整個問題進行分割,使每個部分用一個或幾個軟件成份整個問題進行分割,使每個部分用一個或幾個
17、軟件成份加以解決。加以解決。第四章 軟件設(shè)計33如果模塊是相互獨立的如果模塊是相互獨立的,模塊越小,每個模塊,模塊越小,每個模塊花費的工作量越低;?;ㄙM的工作量越低;模塊數(shù)增加時,模塊間的塊數(shù)增加時,模塊間的聯(lián)系也隨之增加,把這聯(lián)系也隨之增加,把這些模塊聯(lián)接起來的工作些模塊聯(lián)接起來的工作量也隨之增加。因此,量也隨之增加。因此,要設(shè)計成要設(shè)計成M個模塊,個模塊, 使使得總的開發(fā)成本達到最得總的開發(fā)成本達到最小。小。 第四章 軟件設(shè)計34整個整個結(jié)構(gòu)只有一個頂層模塊,結(jié)構(gòu)只有一個頂層模塊,而對于任何一個下層模而對于任何一個下層模塊,只有一個上級模塊,塊,只有一個上級模塊,而且同一層模塊之間不而且同
18、一層模塊之間不發(fā)生聯(lián)系發(fā)生聯(lián)系。任意任意兩個模塊間都可以有雙兩個模塊間都可以有雙向的關(guān)系。由于模塊間向的關(guān)系。由于模塊間不存在上下的關(guān)系,任不存在上下的關(guān)系,任何兩個模塊都是平等的,何兩個模塊都是平等的,因此分不出層次來。因此分不出層次來。 第四章 軟件設(shè)計35第四章 軟件設(shè)計36軟件系統(tǒng)的模塊化是指整個軟件被劃分成若干軟件系統(tǒng)的模塊化是指整個軟件被劃分成若干單獨命名和可編址的部分,稱之為模塊。這些單獨命名和可編址的部分,稱之為模塊。這些模塊可以被組裝起來以滿足整個問題的需求。模塊可以被組裝起來以滿足整個問題的需求。把問題子問題的分解與軟件開發(fā)中的系統(tǒng)把問題子問題的分解與軟件開發(fā)中的系統(tǒng)子系統(tǒng)
19、或系統(tǒng)模塊對應起來,就能夠把一個子系統(tǒng)或系統(tǒng)模塊對應起來,就能夠把一個大而復雜的軟件系統(tǒng)劃分成易于理解的比較單大而復雜的軟件系統(tǒng)劃分成易于理解的比較單純的模塊結(jié)構(gòu)。純的模塊結(jié)構(gòu)。第四章 軟件設(shè)計37“模塊模塊”,又稱,又稱“組件組件”。一般有四個基本屬性。一般有四個基本屬性功能:功能:描述該模塊做什么?描述該模塊做什么?邏輯:邏輯:描述模塊內(nèi)部怎么做?描述模塊內(nèi)部怎么做?狀態(tài):狀態(tài):模塊使用時的環(huán)境和條件。模塊使用時的環(huán)境和條件。接口:接口:指模塊的輸入與輸出。指模塊的輸入與輸出。第四章 軟件設(shè)計38 外部特性:外部特性:模塊的模塊名、參數(shù)表模塊的模塊名、參數(shù)表( (含輸入?yún)⒑斎雲(yún)?shù)和輸出參
20、數(shù)數(shù)和輸出參數(shù)) )。 內(nèi)部特性:內(nèi)部特性:完成其功能的程序代碼和僅供該模完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù)塊內(nèi)部使用的數(shù)據(jù)第四章 軟件設(shè)計39用層次的方式構(gòu)造和分析復雜系統(tǒng)。用層次的方式構(gòu)造和分析復雜系統(tǒng)。幫助開發(fā)人員把精力集中在與當前開發(fā)幫助開發(fā)人員把精力集中在與當前開發(fā)階段最相關(guān)的那些問題上。階段最相關(guān)的那些問題上。如果一個模塊內(nèi)包含的信息如果一個模塊內(nèi)包含的信息(過程和數(shù)據(jù)過程和數(shù)據(jù)) 不允許外部的模塊訪問的話,其它模塊不能對其訪不允許外部的模塊訪問的話,其它模塊不能對其訪問。問。把一些關(guān)系密切的軟件元素物理地放得彼把一些關(guān)系密切的軟件元素物理地放得彼此靠近。此靠近。第四章
21、 軟件設(shè)計40TOP菱形:表示模塊內(nèi)有判定功能;菱形:表示模塊內(nèi)有判定功能;陰影:表示模塊的作用范圍。陰影:表示模塊的作用范圍。ABCDEFTOPABCDEFTOPABCDEF第四章 軟件設(shè)計41傳入模塊傳入模塊AA傳出模塊傳出模塊DD變換模塊變換模塊BC協(xié)調(diào)模塊協(xié)調(diào)模塊XXYY第四章 軟件設(shè)計42軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能功能, , 和其它的模塊的接口是簡單的。和其它的模塊的接口是簡單的。一個模塊只具有單一的功能且與其它模塊沒有太一個模塊只具有單一的功能且與其它模塊沒有太多的聯(lián)系多的聯(lián)系, , 則稱此模塊具有模塊獨立性。則稱此模塊
22、具有模塊獨立性。模塊的獨立性是軟件質(zhì)量的關(guān)鍵。具有獨立模塊模塊的獨立性是軟件質(zhì)量的關(guān)鍵。具有獨立模塊的軟件容易開發(fā),這是由于能夠?qū)浖墓δ芗拥能浖菀组_發(fā),這是由于能夠?qū)浖墓δ芗右苑指?,而相互接口不復雜,可有一組人員同時以分割,而相互接口不復雜,可有一組人員同時開發(fā),由于模塊相互獨立,在各自設(shè)計和修改代開發(fā),由于模塊相互獨立,在各自設(shè)計和修改代碼時所引起的二次影響不大,錯誤傳播少。碼時所引起的二次影響不大,錯誤傳播少。 第四章 軟件設(shè)計43耦合:耦合:各模塊之間的互相連接的緊密程度。各模塊之間的互相連接的緊密程度。模塊之間模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其獨立的連接越緊密
23、,聯(lián)系越多,耦合性就越高,而其獨立性就越弱。性就越弱。內(nèi)聚:內(nèi)聚:模塊內(nèi)各功能元素彼此結(jié)合的緊密程度。模塊內(nèi)各功能元素彼此結(jié)合的緊密程度。一個一個模塊內(nèi)部各個元素之間的聯(lián)系越緊密,則它的內(nèi)聚性模塊內(nèi)部各個元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高,相對地,它與其它模塊之間的耦合性就會減就越高,相對地,它與其它模塊之間的耦合性就會減低,而模塊獨立性就越強。低,而模塊獨立性就越強。增強模塊獨立性的方法是盡量做到增強模塊獨立性的方法是盡量做到高內(nèi)聚、低耦合。高內(nèi)聚、低耦合。第四章 軟件設(shè)計44通常模塊之間總是相通常模塊之間總是相互關(guān)聯(lián)的,因為完全獨立的模塊是無法構(gòu)成系統(tǒng)的。關(guān)鍵互關(guān)聯(lián)的,因為完全獨立的
24、模塊是無法構(gòu)成系統(tǒng)的。關(guān)鍵是連接的程度和復雜度。我們用耦合度衡量連接的強度,是連接的程度和復雜度。我們用耦合度衡量連接的強度,模塊間連接很強叫模塊間連接很強叫“緊耦合緊耦合”,而模塊間的連接弱叫,而模塊間的連接弱叫“松松耦合耦合”。顯然,我們的目標是努力實現(xiàn)。顯然,我們的目標是努力實現(xiàn)“松耦合松耦合”系統(tǒng)。系統(tǒng)。耦合度耦合度第四章 軟件設(shè)計45耦合度耦合度描述了模塊間的連接程度,是一個抽象的描述了模塊間的連接程度,是一個抽象的概念,但它能用一個可操作的概念來描述,即程概念,但它能用一個可操作的概念來描述,即程序員在編碼、調(diào)試和修改一個模塊時,需要考慮序員在編碼、調(diào)試和修改一個模塊時,需要考慮另
25、外一個模塊的概率。如果兩個模塊是緊耦合的,另外一個模塊的概率。如果兩個模塊是緊耦合的,那么他修改一個模塊,需要修改另外一個模塊的那么他修改一個模塊,需要修改另外一個模塊的概率就高。顯然整個系統(tǒng)的開發(fā)費用及系統(tǒng)的復概率就高。顯然整個系統(tǒng)的開發(fā)費用及系統(tǒng)的復雜性與模塊間的耦合度有直接的關(guān)系。雜性與模塊間的耦合度有直接的關(guān)系。第四章 軟件設(shè)計46兩兩個模塊之間個模塊之間,它們之,它們之間的聯(lián)系完全是通過主模塊的控制和間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的調(diào)用來實現(xiàn)的。非。非直接耦合的模塊獨直接耦合的模塊獨立性最強。立性最強。一個模塊訪問另一個模塊時,彼此之一個模塊訪問另一個模塊時,彼此之間是通
26、過間是通過 ( (不是控制參不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量) ) 來交來交換輸入、輸出信息的。換輸入、輸出信息的。第四章 軟件設(shè)計47如果一個模塊通過傳送如果一個模塊通過傳送,明顯,明顯地控制選擇另一模塊的功能,地控制選擇另一模塊的功能,就是控制耦合。就是控制耦合。一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。一組模塊都訪問一組模塊都訪問而不是同一全局數(shù)據(jù)結(jié)構(gòu),而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全而且不是通過
27、參數(shù)表傳遞該全局變量的信息,則稱之為外部局變量的信息,則稱之為外部耦合耦合。第四章 軟件設(shè)計48若一組模塊都訪問若一組模塊都訪問環(huán)境,則它們之間環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。公共耦合的復雜程度隨耦合模塊的個數(shù)增加而顯著增公共耦合的復雜程度隨耦合模塊的個數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合兩種情況。松散公共耦合和緊密公共耦合。第
28、四章 軟件設(shè)計49模塊之間發(fā)生了下列情形,則稱為內(nèi)容耦合模塊之間發(fā)生了下列情形,則稱為內(nèi)容耦合一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù)一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù); ;一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部; ;兩個模塊有一部分程序代碼重迭兩個模塊有一部分程序代碼重迭( (只可能出現(xiàn)只可能出現(xiàn)在匯編語言中在匯編語言中););一個模塊有多個入口。一個模塊有多個入口。第四章 軟件設(shè)計50 連接方式的類型。連接方式的類型。 接口的復雜性。接口的復雜性。 傳送的信息流類型。傳送的信息流類型。 耦合的時間。耦合的時間。第四章 軟件設(shè)計51耦合度由低到高分別是:耦
29、合度由低到高分別是:獨立性最強,一個模塊通過模塊名調(diào)獨立性最強,一個模塊通過模塊名調(diào)用另一模塊,彼此之間的關(guān)系非常明確;用另一模塊,彼此之間的關(guān)系非常明確;可以直接引用其他模塊的數(shù)據(jù)或控制可以直接引用其他模塊的數(shù)據(jù)或控制指令耦合度最強,一個模塊出錯,錯誤有可能來自其它模指令耦合度最強,一個模塊出錯,錯誤有可能來自其它模塊。尤其是控制直接引用,因為:接口不明顯;程序難以塊。尤其是控制直接引用,因為:接口不明顯;程序難以理解,難以編寫,也難以糾錯、改錯,所以通常將該種聯(lián)理解,難以編寫,也難以糾錯、改錯,所以通常將該種聯(lián)系稱為病態(tài)聯(lián)系,應避免。系稱為病態(tài)聯(lián)系,應避免。第四章 軟件設(shè)計52當幾個模塊在
30、一個公共數(shù)據(jù)區(qū)上工作時當幾個模塊在一個公共數(shù)據(jù)區(qū)上工作時, ,一個一個模塊的改變模塊的改變, ,可能造成另一些模塊的錯誤。可能造成另一些模塊的錯誤。如果有如果有M M個模塊個模塊, ,共享共享N N個數(shù)據(jù)的公共區(qū)個數(shù)據(jù)的公共區(qū), ,可能產(chǎn)可能產(chǎn)生生M M* *(M-1)(M-1)* *N N聯(lián)系。聯(lián)系。修改一處,就要考慮很多模塊。若將公共數(shù)據(jù)修改一處,就要考慮很多模塊。若將公共數(shù)據(jù)區(qū)分割,就有可能大大減少耦合度。區(qū)分割,就有可能大大減少耦合度。接口間傳遞的信息數(shù)量以及穿越接口次數(shù)和類型決接口間傳遞的信息數(shù)量以及穿越接口次數(shù)和類型決定了接口的復雜性。例如:定了接口的復雜性。例如:第四章 軟件設(shè)計
31、53當一個模塊修改另一個模塊的代碼時當一個模塊修改另一個模塊的代碼時, ,對修改者來說對修改者來說, ,修改的代碼是當作數(shù)據(jù)來處理的修改的代碼是當作數(shù)據(jù)來處理的, ,而對被修改的模塊來說,則可能是對而對被修改的模塊來說,則可能是對“控制控制”的的改變,這種情況最難處理,耦合度最高。改變,這種情況最難處理,耦合度最高。一個模塊直接轉(zhuǎn)移到另一模塊的某點上,一個模塊直接轉(zhuǎn)移到另一模塊的某點上,就影響了兩個模塊的控制。由于很難找到這種轉(zhuǎn)就影響了兩個模塊的控制。由于很難找到這種轉(zhuǎn)移地址,通??梢酝ㄟ^傳遞參數(shù)來傳遞控制。這移地址,通??梢酝ㄟ^傳遞參數(shù)來傳遞控制。這種耦合度也很高。種耦合度也很高。第四章 軟
32、件設(shè)計54類型類型選擇是控制型參數(shù),決定了模塊選擇是控制型參數(shù),決定了模塊B B是取陰歷日期還是取陰歷日期還是取陽歷日期,消除開關(guān)信息,將模塊分解,每個模塊是取陽歷日期,消除開關(guān)信息,將模塊分解,每個模塊有明確的功能,成為數(shù)據(jù)耦合有明確的功能,成為數(shù)據(jù)耦合。A取陰歷日期取陰歷日期或或取陽歷日期取陽歷日期類型選擇類型選擇日期日期取陰歷取陰歷取陽歷取陽歷陰歷日期陰歷日期陽歷日期陽歷日期第四章 軟件設(shè)計55耦合的時間有以下幾種情況:耦合的時間有以下幾種情況: 編寫程序時(程序員編寫一行語句時);編寫程序時(程序員編寫一行語句時);模塊編譯或匯編時;模塊編譯或匯編時;程序模塊連接時;程序模塊連接時;系
33、統(tǒng)運行時。系統(tǒng)運行時。參數(shù)確定的越晚,就越容易修改,越靈活。參數(shù)確定的越晚,就越容易修改,越靈活。第四章 軟件設(shè)計56 耦合度是評價程序質(zhì)量的重要指標,耦合度越小,耦合度是評價程序質(zhì)量的重要指標,耦合度越小,則每個模塊越容易獨立地被理解、編寫和修改,同時每則每個模塊越容易獨立地被理解、編寫和修改,同時每個模塊的錯誤越不容易擴散蔓延到其他模塊。個模塊的錯誤越不容易擴散蔓延到其他模塊。 對需要了解的內(nèi)容,隱含的改為明顯的,便于理解;對需要了解的內(nèi)容,隱含的改為明顯的,便于理解; 連接的方式盡量標準化,避免直接引用;連接的方式盡量標準化,避免直接引用; 減少公共區(qū),將公共區(qū)劃分為若干個邏輯子區(qū);減少
34、公共區(qū),將公共區(qū)劃分為若干個邏輯子區(qū); 輸入輸出應局限在少量模塊,不要分散在全系統(tǒng);輸入輸出應局限在少量模塊,不要分散在全系統(tǒng);第四章 軟件設(shè)計57 c 模塊中各個部分都是完成某一具體模塊中各個部分都是完成某一具體功能必不可少功能必不可少的組的組成部分,或者說該模塊中所有部分都是為了完成一項成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割。則稱該具體功能而協(xié)同工作,緊密聯(lián)系,不可分割。則稱該模塊為功能內(nèi)聚模塊。模塊為功能內(nèi)聚模塊。第四章 軟件設(shè)計58模塊中模塊中上操作,每一項功能上操作,每一項功能有一個唯一的入口點。模塊根據(jù)不同的要求,確定執(zhí)行有一個唯一的入
35、口點。模塊根據(jù)不同的要求,確定執(zhí)行哪一個功能。模塊內(nèi)所有功能都基于同一個數(shù)據(jù)結(jié)構(gòu)。哪一個功能。模塊內(nèi)所有功能都基于同一個數(shù)據(jù)結(jié)構(gòu)。信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱且達到信息的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個模塊內(nèi),不為別的模塊所知曉。蔽在一個模塊內(nèi),不為別的模塊所知曉。第四章 軟件設(shè)計59如果一個模塊內(nèi)各功能部分都如果一個模塊內(nèi)各功能部分都,或產(chǎn)生了或產(chǎn)生了,則稱之為通信內(nèi)聚模塊。,則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。通常,通信內(nèi)聚模塊是通過數(shù)
36、據(jù)流圖來定義的。第四章 軟件設(shè)計60使用流程圖做為工具設(shè)計程序時,把流程圖中的某一使用流程圖做為工具設(shè)計程序時,把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。模塊,這三個模塊都是過程內(nèi)聚模塊。時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個功能的執(zhí)行與時間有關(guān),通常模塊,但模塊的各個功能的執(zhí)行與時間有關(guān),通常要求要求例如初始例如初始化模塊和終止模塊?;?/p>
37、模塊和終止模塊。第四章 軟件設(shè)計61 模塊內(nèi)各處理單元模塊內(nèi)各處理單元相關(guān),按特定次序執(zhí)相關(guān),按特定次序執(zhí)行,采用數(shù)據(jù)流圖時行,采用數(shù)據(jù)流圖時往往會出現(xiàn)此種內(nèi)聚。往往會出現(xiàn)此種內(nèi)聚。 如圖:讀入的數(shù)如圖:讀入的數(shù)據(jù)供編輯單元處理,據(jù)供編輯單元處理,讀入和編輯這兩個處讀入和編輯這兩個處理單元在一個過程中理單元在一個過程中相關(guān)。相關(guān)。讀入讀入編輯編輯數(shù)據(jù)數(shù)據(jù)第四章 軟件設(shè)計62邏輯內(nèi)聚把邏輯內(nèi)聚把幾種幾種每次被調(diào)用時,由每次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定傳送給模塊的判定參數(shù)來確定該模塊應執(zhí)行哪一種功能該模塊應執(zhí)行哪一種功能。當模塊內(nèi)當模塊內(nèi),或者即使有聯(lián)系,這種聯(lián)系也或者即使有聯(lián)系,這種聯(lián)
38、系也很松散,則稱這種模塊為巧合很松散,則稱這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。的模塊。巧合內(nèi)聚巧合內(nèi)聚實例實例第四章 軟件設(shè)計63 T MOV A TO B READ Card file MOV C TO DPQRS 此例中此例中A、B、C、D、T之間各不相之間各不相干,只因為干,只因為P、Q、R、S都要用到它們,都要用到它們,為了節(jié)省一些存儲空間,將它們放在一為了節(jié)省一些存儲空間,將它們放在一個模塊中。個模塊中。問題:這種模塊不易取名,模塊含義不問題:這種模塊不易取名,模塊含義不易理解,難以測試,不易修改。當易理解,難以測試,不易修改。當P、Q有不同要求
39、(如有不同要求(如P要求要求MOVE A TO B)時時 T的修改會很復雜。因為它們本來互的修改會很復雜。因為它們本來互不相關(guān),所以變動的可能性很大。不相關(guān),所以變動的可能性很大。 當存儲空間不是很緊張時,應盡量避當存儲空間不是很緊張時,應盡量避免巧合性內(nèi)聚。免巧合性內(nèi)聚。第四章 軟件設(shè)計64 劃分模塊時,盡量做到劃分模塊時,盡量做到高內(nèi)聚、低耦合,保持模塊相對獨立性。高內(nèi)聚、低耦合,保持模塊相對獨立性。模塊劃分的準則:模塊劃分的準則:“將相關(guān)的各部分放在一起,無關(guān)的東西不要將相關(guān)的各部分放在一起,無關(guān)的東西不要放在一起。放在一起?!?” 模塊的模塊的大小要適中大小要適中。 模塊的模塊的接口要
40、簡單、清晰、含義明確接口要簡單、清晰、含義明確。便于理解,易于實現(xiàn)、易便于理解,易于實現(xiàn)、易于測試和維護。于測試和維護。 一個一個模塊的作用范圍應在其控制范圍之內(nèi)模塊的作用范圍應在其控制范圍之內(nèi)。且判定所在的模塊,。且判定所在的模塊,應與受其影響的模塊在層次上盡量靠近。應與受其影響的模塊在層次上盡量靠近。 軟件結(jié)構(gòu)的軟件結(jié)構(gòu)的深度、寬度、扇入、扇出應適當深度、寬度、扇入、扇出應適當。 力求設(shè)計力求設(shè)計單入口和單出口單入口和單出口的模塊。避免的模塊。避免“病態(tài)連接病態(tài)連接”,以防止內(nèi),以防止內(nèi)容耦合。容耦合。 設(shè)計功能可預測模塊的劃分,應設(shè)計功能可預測模塊的劃分,應防止功能過分局限防止功能過分局
41、限。 第四章 軟件設(shè)計65第四章 軟件設(shè)計66面向數(shù)據(jù)流的(面向數(shù)據(jù)流的(結(jié)構(gòu)化)結(jié)構(gòu)化)設(shè)計方法。設(shè)計方法。結(jié)構(gòu)化設(shè)計包括一組概念、標準和指導思想。其目結(jié)構(gòu)化設(shè)計包括一組概念、標準和指導思想。其目的是降低軟件開發(fā)費用及維護費用,有利于修正軟的是降低軟件開發(fā)費用及維護費用,有利于修正軟件及實現(xiàn)新的軟件需求。其最大好處是極大地增加件及實現(xiàn)新的軟件需求。其最大好處是極大地增加了軟件復用能力。了軟件復用能力。結(jié)構(gòu)化設(shè)計的目標:將軟件設(shè)計為功能單一的模塊,結(jié)構(gòu)化設(shè)計的目標:將軟件設(shè)計為功能單一的模塊,建立系統(tǒng)的模塊結(jié)構(gòu)圖。它的主要表示方法是一種建立系統(tǒng)的模塊結(jié)構(gòu)圖。它的主要表示方法是一種分層次的結(jié)構(gòu)圖
42、。分層次的結(jié)構(gòu)圖。第四章 軟件設(shè)計67認為一個程序、一組程序或一個系統(tǒng),無非認為一個程序、一組程序或一個系統(tǒng),無非是由一組功能操作來構(gòu)成的,并進而吸取了是由一組功能操作來構(gòu)成的,并進而吸取了結(jié)構(gòu)化分析的結(jié)構(gòu)化分析的“黑盒子黑盒子”的概念。的概念。軟件設(shè)計者首先必須無視程序、模塊或過程軟件設(shè)計者首先必須無視程序、模塊或過程的內(nèi)部情況,而只對它們之間的關(guān)系進行分的內(nèi)部情況,而只對它們之間的關(guān)系進行分析。將系統(tǒng)看作是,邏輯功能的抽象集合析。將系統(tǒng)看作是,邏輯功能的抽象集合功能模塊的集合。這樣軟件設(shè)計者能夠有功能模塊的集合。這樣軟件設(shè)計者能夠有最大的自由度設(shè)計系統(tǒng)結(jié)構(gòu)。最大的自由度設(shè)計系統(tǒng)結(jié)構(gòu)。第四章
43、 軟件設(shè)計68減少設(shè)計復雜性。將大化小,使復雜問題簡單化。減少設(shè)計復雜性。將大化小,使復雜問題簡單化。結(jié)構(gòu)獨立。將程序劃分成多個相對獨立的模塊。結(jié)構(gòu)獨立。將程序劃分成多個相對獨立的模塊。模塊模塊功能單一化功能單一化,可使軟件設(shè)計獲得最大的益處。,可使軟件設(shè)計獲得最大的益處。便于軟件的修改。便于軟件的修改。易于開發(fā)和維護。易于開發(fā)和維護。加強了代碼的可重用性加強了代碼的可重用性。第四章 軟件設(shè)計69 結(jié)構(gòu)化設(shè)計方法通過一種圖形工具結(jié)構(gòu)化設(shè)計方法通過一種圖形工具結(jié)構(gòu)圖,進結(jié)構(gòu)圖,進行軟件結(jié)構(gòu)設(shè)計。行軟件結(jié)構(gòu)設(shè)計。 結(jié)構(gòu)圖是精確表達程序結(jié)構(gòu)的圖形表示方法。它作結(jié)構(gòu)圖是精確表達程序結(jié)構(gòu)的圖形表示方法。
44、它作為軟件文檔的一部分,清楚地反映出程序中模塊之為軟件文檔的一部分,清楚地反映出程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系。它不僅嚴格地定義了各間的層次調(diào)用關(guān)系和聯(lián)系。它不僅嚴格地定義了各個模塊的名字、功能和接口,而且還集中地反映了個模塊的名字、功能和接口,而且還集中地反映了設(shè)計思想。設(shè)計思想。第四章 軟件設(shè)計70模塊:方框表示,并用名字標識該模塊。模塊:方框表示,并用名字標識該模塊。模塊的控制關(guān)系:用單向箭頭或直線連接模模塊的控制關(guān)系:用單向箭頭或直線連接模塊間的控制關(guān)系。塊間的控制關(guān)系。模塊間的信息傳遞:用帶注釋的短箭頭表示模塊間的信息傳遞:用帶注釋的短箭頭表示模塊間傳遞的信息。通常箭頭尾部帶空心
45、圓,模塊間傳遞的信息。通常箭頭尾部帶空心圓,表示傳遞的是數(shù)據(jù),箭頭尾部帶實心圓,表表示傳遞的是數(shù)據(jù),箭頭尾部帶實心圓,表示傳遞的是控制信息。示傳遞的是控制信息。兩個附加符號:弧形線表示循環(huán)調(diào)用,菱形兩個附加符號:弧形線表示循環(huán)調(diào)用,菱形表示選擇調(diào)用。表示選擇調(diào)用。第四章 軟件設(shè)計71深度深度表示控制的層數(shù)。表示控制的層數(shù)。寬度寬度表示控制的總分布。表示控制的總分布。扇出扇出某一模塊直接控制的模塊數(shù)目的度量。某一模塊直接控制的模塊數(shù)目的度量。扇入扇入指出有多少個模塊直接控制一個給定的模塊。指出有多少個模塊直接控制一個給定的模塊。 如果一模塊控制另一個模塊便稱前者如果一模塊控制另一個模塊便稱前者“
46、統(tǒng)帥統(tǒng)帥”后者;后者;反之,稱后者反之,稱后者“從屬從屬”于前者。于前者。 第四章 軟件設(shè)計72同一名字的模塊在結(jié)構(gòu)圖中僅出現(xiàn)一次。同一名字的模塊在結(jié)構(gòu)圖中僅出現(xiàn)一次。調(diào)用關(guān)系只能從上到下。調(diào)用關(guān)系只能從上到下。結(jié)構(gòu)圖的調(diào)用次序是從左到右。有時為了減少連結(jié)構(gòu)圖的調(diào)用次序是從左到右。有時為了減少連線的交叉,適當?shù)卣{(diào)整同一層模塊的左右位置,線的交叉,適當?shù)卣{(diào)整同一層模塊的左右位置,以保持結(jié)構(gòu)圖的清晰。以保持結(jié)構(gòu)圖的清晰。第四章 軟件設(shè)計73查詢成績查詢成績學生記錄學生記錄學號查詢標志記錄地址ABCMT1T3T2模塊間的控制關(guān)模塊間的控制關(guān)系及信息傳遞系及信息傳遞模塊間選擇調(diào)用模塊間選擇調(diào)用模塊間循
47、環(huán)調(diào)用模塊間循環(huán)調(diào)用第四章 軟件設(shè)計74 SDSD方法是以數(shù)據(jù)流圖為基礎(chǔ)設(shè)計系統(tǒng)方法是以數(shù)據(jù)流圖為基礎(chǔ)設(shè)計系統(tǒng)的模塊結(jié)構(gòu)。不同類型的數(shù)據(jù)流圖設(shè)計的模塊結(jié)構(gòu)。不同類型的數(shù)據(jù)流圖設(shè)計的過程以及所導出的初始的軟件結(jié)構(gòu)不的過程以及所導出的初始的軟件結(jié)構(gòu)不同。不管系統(tǒng)的數(shù)據(jù)流圖如何龐大和復同。不管系統(tǒng)的數(shù)據(jù)流圖如何龐大和復雜,一般均可分為變換型、事務型和變雜,一般均可分為變換型、事務型和變換換/ /事務混合型。事務混合型。第四章 軟件設(shè)計75精化精化DFDDFD。確定確定DFDDFD類型,邏輯輸入、邏輯輸出的界限,映射出變換類型,邏輯輸入、邏輯輸出的界限,映射出變換結(jié)構(gòu)的頂層和第一層;如果為事務型,確定
48、事務中心和結(jié)構(gòu)的頂層和第一層;如果為事務型,確定事務中心和加工路徑,映射出事務結(jié)構(gòu)的頂層和第一層。加工路徑,映射出事務結(jié)構(gòu)的頂層和第一層。分解上層模塊,設(shè)計中下層模塊結(jié)構(gòu)。分解上層模塊,設(shè)計中下層模塊結(jié)構(gòu)。根據(jù)優(yōu)化準則對軟件結(jié)構(gòu)求精。根據(jù)優(yōu)化準則對軟件結(jié)構(gòu)求精。描述模塊功能、接口及全局數(shù)據(jù)結(jié)構(gòu)。描述模塊功能、接口及全局數(shù)據(jù)結(jié)構(gòu)。復查,如有錯轉(zhuǎn)向復查,如有錯轉(zhuǎn)向2 2、修改完善,否則進入詳細設(shè)計。、修改完善,否則進入詳細設(shè)計。第四章 軟件設(shè)計76 變換型的數(shù)據(jù)流圖是一個線性結(jié)構(gòu),變換型的數(shù)據(jù)流圖是一個線性結(jié)構(gòu),由輸入、變換和輸出三部分組成。信息由輸入、變換和輸出三部分組成。信息沿輸入通路進入系統(tǒng)
49、,同時由外部形式沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式。進入系統(tǒng)的信息通過變換成內(nèi)部形式。進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。路變換成外部形式離開軟件系統(tǒng)。 第四章 軟件設(shè)計77物理輸入物理輸入物理輸出物理輸出輸入流輸入流變換中心變換中心輸出流輸出流邏輯輸出邏輯輸出邏輯輸入邏輯輸入第四章 軟件設(shè)計78第四章 軟件設(shè)計79從物理從物理I/OI/O端開始,沿(逆)數(shù)據(jù)流方向向系端開始,沿(逆)數(shù)據(jù)流方向向系統(tǒng)中心尋找,直到有這樣的數(shù)據(jù)流,它不能統(tǒng)中心尋找,直到有這樣的數(shù)據(jù)流,它不能再被看作是系統(tǒng)的再被看作是系
50、統(tǒng)的I/OI/O時,則它的前一數(shù)據(jù)流時,則它的前一數(shù)據(jù)流就是系統(tǒng)的邏輯就是系統(tǒng)的邏輯I/OI/O。介于邏輯輸入和邏輯輸。介于邏輯輸入和邏輯輸出間的加工就是中心。出間的加工就是中心。通常幾股通常幾股數(shù)據(jù)流的匯合處數(shù)據(jù)流的匯合處就是系統(tǒng)的加工中心。就是系統(tǒng)的加工中心。也可用以下方法確定加工中心:也可用以下方法確定加工中心:第四章 軟件設(shè)計80A物理輸入物理輸入BCD物理輸出物理輸出G變換中心變換中心邏輯輸出邏輯輸出邏輯輸入邏輯輸入f1f2f3EFHf4f5f6f7f8f9f10f11第四章 軟件設(shè)計81頂層頂層就是主模塊的位置,其功能是完成對就是主模塊的位置,其功能是完成對所有模塊的控制,其名稱就
51、是系統(tǒng)名稱;所有模塊的控制,其名稱就是系統(tǒng)名稱;第一層一般至少有輸入、變換、輸出三種第一層一般至少有輸入、變換、輸出三種功能模塊。功能模塊。第四章 軟件設(shè)計82輸入模塊下屬模塊的設(shè)計:輸入模塊下屬模塊的設(shè)計:為每個輸入模塊設(shè)計兩為每個輸入模塊設(shè)計兩個下屬模塊,一個接受數(shù)據(jù),一個將數(shù)據(jù)轉(zhuǎn)換成調(diào)個下屬模塊,一個接受數(shù)據(jù),一個將數(shù)據(jù)轉(zhuǎn)換成調(diào)用模塊所需的信息。用類似的方法一直分解下去,用模塊所需的信息。用類似的方法一直分解下去,直至物理輸入端。直至物理輸入端。 輸出模塊下屬模塊的設(shè)計:輸出模塊下屬模塊的設(shè)計:為每個輸出模塊設(shè)計兩為每個輸出模塊設(shè)計兩個下屬模塊,一個將數(shù)據(jù)轉(zhuǎn)換成下屬模塊所需的信個下屬模塊
52、,一個將數(shù)據(jù)轉(zhuǎn)換成下屬模塊所需的信息,一個發(fā)送數(shù)據(jù)。用類似的方法一直分解下去,息,一個發(fā)送數(shù)據(jù)。用類似的方法一直分解下去,直至物理輸出端。直至物理輸出端。變換模塊下屬模塊的設(shè)計:變換模塊下屬模塊的設(shè)計:根據(jù)變換中心的組成情根據(jù)變換中心的組成情況,按照模塊獨立性原則,為每個基本加工建立一況,按照模塊獨立性原則,為每個基本加工建立一個功能模塊。個功能模塊。第四章 軟件設(shè)計83根據(jù)設(shè)計優(yōu)化準則對結(jié)構(gòu)細化和改進,根據(jù)設(shè)計優(yōu)化準則對結(jié)構(gòu)細化和改進,對模塊進行合并和調(diào)整,為每個物理輸對模塊進行合并和調(diào)整,為每個物理輸入和物理輸出設(shè)計專門模塊,以體現(xiàn)系入和物理輸出設(shè)計專門模塊,以體現(xiàn)系統(tǒng)的外部接口。統(tǒng)的外部
53、接口。第四章 軟件設(shè)計84第四章 軟件設(shè)計85步驟步驟1 1:復審基本系統(tǒng)模型(:復審基本系統(tǒng)模型(0 0層數(shù)據(jù)流圖和支持信息)。評估系統(tǒng)規(guī)格說層數(shù)據(jù)流圖和支持信息)。評估系統(tǒng)規(guī)格說明和軟件需求規(guī)格說明。明和軟件需求規(guī)格說明。步驟步驟2 2:復審和細化軟件的數(shù)據(jù)流圖。重畫數(shù)據(jù)流圖時,:復審和細化軟件的數(shù)據(jù)流圖。重畫數(shù)據(jù)流圖時, 可以從物理輸入可以從物理輸入到物理輸出,或者相反到物理輸出,或者相反. . 還可以從頂層加工框開始,逐層向下。還可以從頂層加工框開始,逐層向下。步驟步驟3 3:確定數(shù)據(jù)流圖中含有變換流特征還是含有事務流特征。通常,系:確定數(shù)據(jù)流圖中含有變換流特征還是含有事務流特征。通常
54、,系統(tǒng)的信息流總能表示為變換型,但其中也可能遇到明顯的事務流統(tǒng)的信息流總能表示為變換型,但其中也可能遇到明顯的事務流特征,這時可采用變換型為主,在局部范圍采用事務型的設(shè)計方特征,這時可采用變換型為主,在局部范圍采用事務型的設(shè)計方法。法。步驟步驟4 4:區(qū)分輸入流、輸出流和中心變換部分,即標明流的邊界。不同的:區(qū)分輸入流、輸出流和中心變換部分,即標明流的邊界。不同的設(shè)計人員可能選擇不同的流邊界,這將導致不同的系統(tǒng)結(jié)構(gòu)圖。設(shè)計人員可能選擇不同的流邊界,這將導致不同的系統(tǒng)結(jié)構(gòu)圖。第四章 軟件設(shè)計86步驟步驟5 5:進行一級:進行一級“因子化因子化”分解,設(shè)計頂層和第一層模塊。分解,設(shè)計頂層和第一層模
55、塊。步驟步驟6 6:進行二級:進行二級“因子化因子化”分解,設(shè)計中、下層模塊。這一步工作是分解,設(shè)計中、下層模塊。這一步工作是自頂向下,逐層細化,為每一個輸入模塊、輸出模塊、變換模自頂向下,逐層細化,為每一個輸入模塊、輸出模塊、變換模塊設(shè)計它們的從屬模塊。塊設(shè)計它們的從屬模塊。步驟步驟7 7:利用一些啟發(fā)式原則來改進系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合:利用一些啟發(fā)式原則來改進系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。要求的結(jié)構(gòu)圖為止。第四章 軟件設(shè)計87 模塊功能的完善化。一個完整的功能模塊,不僅應能完成指定的模塊功能的完善化。一個完整的功能模塊,不僅應能完成指定的功能,而且還應當能夠告訴使
56、用者完成任務的狀態(tài),以及不能完功能,而且還應當能夠告訴使用者完成任務的狀態(tài),以及不能完成的原因。成的原因。 消除重復功能,改善軟件結(jié)構(gòu)。在系統(tǒng)的初始結(jié)構(gòu)圖得出之后,消除重復功能,改善軟件結(jié)構(gòu)。在系統(tǒng)的初始結(jié)構(gòu)圖得出之后,應當審查分析這個結(jié)構(gòu)圖。如果發(fā)現(xiàn)幾個模塊的功能有相似之處,應當審查分析這個結(jié)構(gòu)圖。如果發(fā)現(xiàn)幾個模塊的功能有相似之處,可以加以改進??梢约右愿倪M。 模塊的作用范圍應在控制范圍之內(nèi)。模塊的控制范圍包括它本身模塊的作用范圍應在控制范圍之內(nèi)。模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個判定的作及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡
57、是受這個判定影響的所有模塊都屬于這個判定的作用用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍。如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。范圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。第四章 軟件設(shè)計88 盡可能減少高扇出結(jié)構(gòu),經(jīng)驗證明,一個設(shè)計得很好的軟件模塊盡可能減少高扇出結(jié)構(gòu),經(jīng)驗證明,一個設(shè)計得很好的軟件模塊結(jié)構(gòu),通常上層扇出比較高,中層扇出較少,底層扇入到有高扇結(jié)構(gòu),通常上層扇出比較高,中層扇出較少,底層扇入到有高扇入的公用模塊中。入的公用模塊
58、中。 避免或減少使用病態(tài)聯(lián)接。應限制使用如下三種病態(tài)聯(lián)接:直接避免或減少使用病態(tài)聯(lián)接。應限制使用如下三種病態(tài)聯(lián)接:直接病態(tài)聯(lián)接(內(nèi)容耦合)、公共數(shù)據(jù)域病態(tài)聯(lián)接(公共耦合)和通病態(tài)聯(lián)接(內(nèi)容耦合)、公共數(shù)據(jù)域病態(tài)聯(lián)接(公共耦合)和通過通信模塊聯(lián)接。過通信模塊聯(lián)接。 模塊的大小要適中。限制模塊的大小是減少復雜性的手段之一,模塊的大小要適中。限制模塊的大小是減少復雜性的手段之一,因而要求把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語句因而要求把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語句行數(shù)在行數(shù)在5050100100左右,最多不超過左右,最多不超過500500行。行。 設(shè)計功能可預測的模塊,但要
59、避免過分受限制的模塊。設(shè)計功能可預測的模塊,但要避免過分受限制的模塊。 軟件包應滿足設(shè)計約束和可移植性。軟件包應滿足設(shè)計約束和可移植性。第四章 軟件設(shè)計89 事務型的數(shù)據(jù)流圖中,數(shù)據(jù)沿輸入通路到達一個事務型的數(shù)據(jù)流圖中,數(shù)據(jù)沿輸入通路到達一個處理,這個處理將輸入分為許多相互平行的加工路徑,處理,這個處理將輸入分為許多相互平行的加工路徑,并根據(jù)輸入數(shù)據(jù)的類型,選擇某一加工路徑。其中并根據(jù)輸入數(shù)據(jù)的類型,選擇某一加工路徑。其中C C為為事務處理中心,其任務是輸入數(shù)據(jù)事務處理中心,其任務是輸入數(shù)據(jù)( (輸入數(shù)據(jù)又稱為事輸入數(shù)據(jù)又稱為事務務) )、分析每個事務以確定它的類型、根據(jù)事務類型選、分析每個事
60、務以確定它的類型、根據(jù)事務類型選取一條活動通路。取一條活動通路。 第四章 軟件設(shè)計90C加工路徑加工路徑輸入流輸入流事務處理中心事務處理中心第四章 軟件設(shè)計91 確定確定DFDDFD中的事物中心和加工路徑中的事物中心和加工路徑 設(shè)計結(jié)構(gòu)頂層和一層設(shè)計結(jié)構(gòu)頂層和一層事務結(jié)構(gòu)事務結(jié)構(gòu) 設(shè)計中、下層模塊并優(yōu)化設(shè)計中、下層模塊并優(yōu)化第四章 軟件設(shè)計92通常當通常當DFDDFD中的某個加工具有明顯中的某個加工具有明顯的將一個輸入數(shù)據(jù)流分解成多個發(fā)的將一個輸入數(shù)據(jù)流分解成多個發(fā)散的輸出數(shù)據(jù)流時,該加工就是系散的輸出數(shù)據(jù)流時,該加工就是系統(tǒng)的事務中心,從事務中心輻射出統(tǒng)的事務中心,從事務中心輻射出去的數(shù)據(jù)流
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年財務報告要求試題及答案
- 泡沫塑料應用領(lǐng)域考核試卷
- 2025年金屬非金屬礦井通風證考試題及答案
- 項目管理質(zhì)量控制問題及答案
- 2023年中國郵政集團有限公司湖北省分公司社會招聘【186崗】筆試參考題庫附帶答案詳解
- 2024年項目管理資格認證的實踐試題及答案
- 種下希望種子2025年國際金融理財師考試試題及答案
- 樂器清潔保護方案范本
- 皮裝飾制品的個性化定制服務考核試卷
- 納米尺度電子器件的量子效應研究考核試卷
- 公積金個人貸款合同模板
- 智能紡織技術(shù)的家居家紡應用
- 投標承諾函格式(具有履行合同所必需的設(shè)備和專業(yè)技術(shù)能力)
- DL∕T 515-2018 電站彎管 標準
- DZ∕T 0270-2014 地下水監(jiān)測井建設(shè)規(guī)范
- 監(jiān)護人考試試題
- DL-T5153-2014火力發(fā)電廠廠用電設(shè)計技術(shù)規(guī)程
- 木材加工廠衛(wèi)生操作與防疫
- HYT 241-2018 冷卻塔飄水率測試方法 等速取樣法(正式版)
- 2024年甘肅省蘭州市中考物理模擬試卷
- 2023-2024學年北京市西城區(qū)高一下學期期中考試數(shù)學質(zhì)量檢測試卷(含解析)
評論
0/150
提交評論