第3章軟件設(shè)計(jì)_第1頁(yè)
第3章軟件設(shè)計(jì)_第2頁(yè)
第3章軟件設(shè)計(jì)_第3頁(yè)
第3章軟件設(shè)計(jì)_第4頁(yè)
第3章軟件設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩188頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、珠海市軟件行業(yè)協(xié)會(huì)專(zhuān)家委員會(huì)主任珠海市軟件行業(yè)協(xié)會(huì)專(zhuān)家委員會(huì)主任吉林大學(xué)珠海學(xué)院計(jì)算機(jī)系教授吉林大學(xué)珠海學(xué)院計(jì)算機(jī)系教授第四章 軟件設(shè)計(jì)3 軟件設(shè)計(jì)是軟件開(kāi)發(fā)的核心。是在需求分析和軟件設(shè)計(jì)是軟件開(kāi)發(fā)的核心。是在需求分析和設(shè)計(jì)的基礎(chǔ)上進(jìn)行的。設(shè)計(jì)的基礎(chǔ)上進(jìn)行的。 本章論述本章論述軟件設(shè)計(jì)的任務(wù)及目標(biāo)、軟件設(shè)計(jì)的概軟件設(shè)計(jì)的任務(wù)及目標(biāo)、軟件設(shè)計(jì)的概念、原理和設(shè)計(jì)準(zhǔn)則、軟件設(shè)計(jì)常用的方法以及多念、原理和設(shè)計(jì)準(zhǔn)則、軟件設(shè)計(jì)常用的方法以及多層層結(jié)構(gòu)設(shè)計(jì)技術(shù)、設(shè)計(jì)文檔和管理文檔編寫(xiě)的參考指南、結(jié)構(gòu)設(shè)計(jì)技術(shù)、設(shè)計(jì)文檔和管理文檔編寫(xiě)的參考指南、數(shù)據(jù)庫(kù)設(shè)計(jì)方法,數(shù)據(jù)模型設(shè)計(jì)案例分析。數(shù)據(jù)庫(kù)設(shè)計(jì)方法,數(shù)據(jù)模型設(shè)計(jì)

2、案例分析。第四章 軟件設(shè)計(jì)4軟件設(shè)計(jì)是后續(xù)開(kāi)發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如軟件設(shè)計(jì)是后續(xù)開(kāi)發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒(méi)有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)果沒(méi)有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)第四章 軟件設(shè)計(jì)5概要設(shè)計(jì)說(shuō)明書(shū)概要設(shè)計(jì)說(shuō)明書(shū)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)軟件設(shè)計(jì)軟件設(shè)計(jì)簡(jiǎn)單地說(shuō),軟件設(shè)計(jì)就是根據(jù)需求分析的簡(jiǎn)單地說(shuō),軟件設(shè)計(jì)就是根據(jù)需求分析的“做什么做什么(What (What to do?)to do?)”,確定系統(tǒng)應(yīng)該,確定系統(tǒng)應(yīng)該“怎么做怎么做”(How to do?)(How to do?)。 需求規(guī)格說(shuō)明書(shū)需求規(guī)格說(shuō)明書(shū)第四章 軟件設(shè)計(jì)6概要設(shè)計(jì):將軟件需求轉(zhuǎn)化為軟

3、件的系統(tǒng)結(jié)構(gòu),形成概要設(shè)計(jì)規(guī)格書(shū)。詳細(xì)設(shè)計(jì):過(guò)程設(shè)計(jì)和界面設(shè)計(jì)。形成詳細(xì)設(shè)計(jì)規(guī)格書(shū)。數(shù)據(jù)設(shè)計(jì):包括數(shù)據(jù)結(jié)構(gòu)、文件和數(shù)據(jù)庫(kù)的設(shè)計(jì)。結(jié)構(gòu)設(shè)計(jì):選擇合理的體系結(jié)構(gòu),對(duì)系統(tǒng)進(jìn)行分解和劃分。過(guò)程設(shè)計(jì):通過(guò)對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的界面、數(shù)據(jù)結(jié)構(gòu)和程序算法。第四章 軟件設(shè)計(jì)7第四章 軟件設(shè)計(jì)8第四章 軟件設(shè)計(jì)9設(shè)計(jì)階段選用合適的設(shè)計(jì)方法進(jìn)行系統(tǒng)結(jié)構(gòu)、設(shè)計(jì)階段選用合適的設(shè)計(jì)方法進(jìn)行系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、界面表示和實(shí)現(xiàn)過(guò)程的設(shè)計(jì)。數(shù)據(jù)結(jié)構(gòu)、界面表示和實(shí)現(xiàn)過(guò)程的設(shè)計(jì)。 第四章 軟件設(shè)計(jì)10第四章 軟件設(shè)計(jì)11制定設(shè)計(jì)時(shí)共同制定設(shè)計(jì)時(shí)共同遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的工作。遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的

4、工作。 確定設(shè)計(jì)目標(biāo)和最合適的設(shè)計(jì)方法。確定設(shè)計(jì)目標(biāo)和最合適的設(shè)計(jì)方法。 規(guī)定編碼的信息形式和接口規(guī)約規(guī)定編碼的信息形式和接口規(guī)約。 確定命名規(guī)范。確定命名規(guī)范。 確定構(gòu)件重用策略。確定構(gòu)件重用策略。 面向模塊(部件或構(gòu)件)進(jìn)行設(shè)計(jì)。面向模塊(部件或構(gòu)件)進(jìn)行設(shè)計(jì)。 規(guī)定設(shè)計(jì)文檔的規(guī)定設(shè)計(jì)文檔的規(guī)范規(guī)范。 規(guī)定代碼編寫(xiě)規(guī)定代碼編寫(xiě)規(guī)范。規(guī)范。 概要設(shè)計(jì)方法;概要設(shè)計(jì)方法; 詳細(xì)設(shè)計(jì)和編程方法。詳細(xì)設(shè)計(jì)和編程方法。第四章 軟件設(shè)計(jì)12 將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu) 確定每個(gè)模塊的功能、與需求相對(duì)應(yīng)確定每個(gè)模塊的功能、與需求相對(duì)應(yīng) 確定模塊間的調(diào)用關(guān)系確定模塊間

5、的調(diào)用關(guān)系 確定模塊間的接口確定模塊間的接口 評(píng)估模塊劃分的質(zhì)量評(píng)估模塊劃分的質(zhì)量基于基于功能的層次結(jié)構(gòu)功能的層次結(jié)構(gòu)建立系統(tǒng)。建立系統(tǒng)。第四章 軟件設(shè)計(jì)13 確定確定算法算法,評(píng)估算法的性能,評(píng)估算法的性能 確定模塊間的控制方式確定模塊間的控制方式 周轉(zhuǎn)時(shí)間周轉(zhuǎn)時(shí)間 響應(yīng)時(shí)間響應(yīng)時(shí)間 吞吐量吞吐量 精度精度 確定外部信號(hào)的接收發(fā)送形式確定外部信號(hào)的接收發(fā)送形式第四章 軟件設(shè)計(jì)14確定確定I/OI/O文件的數(shù)據(jù)結(jié)構(gòu)文件的數(shù)據(jù)結(jié)構(gòu)確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所操作的程序模塊確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所操作的程序模塊限制和確定各個(gè)數(shù)據(jù)設(shè)計(jì)的影響范圍限制和確定各

6、個(gè)數(shù)據(jù)設(shè)計(jì)的影響范圍確定接口數(shù)據(jù)其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則確定接口數(shù)據(jù)其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則目的:保證數(shù)據(jù)完整性和安全性。目的:保證數(shù)據(jù)完整性和安全性。數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的的設(shè)計(jì))設(shè)計(jì))第四章 軟件設(shè)計(jì)15目的:確定數(shù)據(jù)庫(kù)的模式、子模式。目的:確定數(shù)據(jù)庫(kù)的模式、子模式。概念結(jié)構(gòu)設(shè)計(jì):概念結(jié)構(gòu)設(shè)計(jì):可以用可以用E-RE-R模型表示,也可以模型表示,也可以用用3NF3NF關(guān)系群表示關(guān)系群表示 邏輯結(jié)構(gòu)設(shè)計(jì):邏輯結(jié)構(gòu)設(shè)計(jì):是將概念模型轉(zhuǎn)換成是將概念模型轉(zhuǎn)換成DBMSDBMS支持支持的數(shù)據(jù)模型。的數(shù)據(jù)模型。物理結(jié)構(gòu)設(shè)計(jì)物理結(jié)構(gòu)設(shè)計(jì):設(shè)計(jì)數(shù)據(jù)模式的一些物理細(xì)節(jié),設(shè)計(jì)數(shù)據(jù)模式的一些物理細(xì)節(jié),選定存儲(chǔ)結(jié)構(gòu)

7、和存取方法選定存儲(chǔ)結(jié)構(gòu)和存取方法 ,以獲得數(shù)據(jù)庫(kù)的,以獲得數(shù)據(jù)庫(kù)的最佳存取效率。最佳存取效率。數(shù)據(jù)庫(kù)設(shè)計(jì))數(shù)據(jù)庫(kù)設(shè)計(jì))第四章 軟件設(shè)計(jì)16數(shù)據(jù)的保護(hù)性設(shè)計(jì))數(shù)據(jù)的保護(hù)性設(shè)計(jì))第四章 軟件設(shè)計(jì)17在軟件開(kāi)發(fā)的一開(kāi)始就應(yīng)確定軟件在軟件開(kāi)發(fā)的一開(kāi)始就應(yīng)確定軟件可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)措施,確保所做的設(shè)計(jì)具有良好的措施,確保所做的設(shè)計(jì)具有良好的質(zhì)量特性,使軟件易于修改和易于質(zhì)量特性,使軟件易于修改和易于維護(hù)。維護(hù)。(質(zhì)量設(shè)計(jì))(質(zhì)量設(shè)計(jì))第四章 軟件設(shè)計(jì)18 確定軟件各模塊內(nèi)的算法和數(shù)據(jù)結(jié)構(gòu)。確定軟件各模塊內(nèi)的算法和數(shù)據(jù)結(jié)構(gòu)。 選定某種過(guò)程的表達(dá)形式來(lái)描述各種算法。

8、選定某種過(guò)程的表達(dá)形式來(lái)描述各種算法。 進(jìn)行詳細(xì)設(shè)計(jì)的評(píng)審進(jìn)行詳細(xì)設(shè)計(jì)的評(píng)審在詳細(xì)設(shè)計(jì)過(guò)程中,需要完成的工作是:在詳細(xì)設(shè)計(jì)過(guò)程中,需要完成的工作是:第四章 軟件設(shè)計(jì)19 概要設(shè)計(jì)規(guī)格說(shuō)明書(shū)概要設(shè)計(jì)規(guī)格說(shuō)明書(shū) 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)格規(guī)格說(shuō)明書(shū)說(shuō)明書(shū) 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)規(guī)格規(guī)格說(shuō)明書(shū)說(shuō)明書(shū) 用戶(hù)使用手冊(cè)用戶(hù)使用手冊(cè) 測(cè)試計(jì)劃與測(cè)試標(biāo)準(zhǔn)測(cè)試計(jì)劃與測(cè)試標(biāo)準(zhǔn)第四章 軟件設(shè)計(jì)20 可追溯性:可追溯性:需求復(fù)蓋需求復(fù)蓋確認(rèn)確認(rèn) 接口:接口:內(nèi)部接口與外部接口定義的確認(rèn)。內(nèi)部接口與外部接口定義的確認(rèn)。 風(fēng)險(xiǎn):風(fēng)險(xiǎn):確認(rèn)技術(shù)條件、預(yù)算范圍。確認(rèn)技術(shù)條件、預(yù)算范圍。 實(shí)用性:實(shí)用性:確認(rèn)對(duì)于需求的實(shí)用性。確認(rèn)對(duì)于

9、需求的實(shí)用性。 技術(shù)清晰度:技術(shù)清晰度:確認(rèn)代碼的可實(shí)現(xiàn)性確認(rèn)代碼的可實(shí)現(xiàn)性 可維護(hù)性:可維護(hù)性:確認(rèn)可維護(hù)性確認(rèn)可維護(hù)性 質(zhì)量:質(zhì)量:確認(rèn)質(zhì)量特征確認(rèn)質(zhì)量特征 各種選擇方案:各種選擇方案:選擇方案的標(biāo)準(zhǔn)選擇方案的標(biāo)準(zhǔn) 限制:限制:評(píng)估限制的現(xiàn)實(shí)性,與需求的一致性評(píng)估限制的現(xiàn)實(shí)性,與需求的一致性 其它具體問(wèn)題:其它具體問(wèn)題:對(duì)文檔、可測(cè)試性、設(shè)計(jì)過(guò)程等進(jìn)行評(píng)估對(duì)文檔、可測(cè)試性、設(shè)計(jì)過(guò)程等進(jìn)行評(píng)估第四章 軟件設(shè)計(jì)21 節(jié)省開(kāi)發(fā)費(fèi)用、節(jié)省開(kāi)發(fā)費(fèi)用、 降低資源消耗、降低資源消耗、 縮短開(kāi)發(fā)時(shí)間、縮短開(kāi)發(fā)時(shí)間、 能夠贏得較高的生產(chǎn)效率、能夠贏得較高的生產(chǎn)效率、 較高的可靠性、較高的可靠性、 可維護(hù)性的

10、方案。可維護(hù)性的方案。軟件設(shè)計(jì)的最終目標(biāo):軟件設(shè)計(jì)的最終目標(biāo):取得最佳方案取得最佳方案第四章 軟件設(shè)計(jì)223 3、軟件、軟件設(shè)計(jì)文檔設(shè)計(jì)文檔 概要設(shè)計(jì)規(guī)格書(shū)概要設(shè)計(jì)規(guī)格書(shū)詳細(xì)設(shè)計(jì)規(guī)格書(shū)詳細(xì)設(shè)計(jì)規(guī)格書(shū)數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)格書(shū)數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)格書(shū)用戶(hù)操作手冊(cè)用戶(hù)操作手冊(cè)測(cè)試計(jì)劃與標(biāo)準(zhǔn)測(cè)試計(jì)劃與標(biāo)準(zhǔn)第四章 軟件設(shè)計(jì)23概要設(shè)計(jì)說(shuō)明書(shū)要點(diǎn)概要設(shè)計(jì)說(shuō)明書(shū)要點(diǎn) 軟件軟件體系結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)和系統(tǒng)結(jié)構(gòu)設(shè)計(jì)模塊(部件)功能分配模塊(部件)功能分配數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)接口設(shè)計(jì)接口設(shè)計(jì)檢查列表檢查列表第四章 軟件設(shè)計(jì)24 主要設(shè)計(jì)思想與方法主要設(shè)計(jì)思想與方法 模塊實(shí)現(xiàn)過(guò)程設(shè)計(jì)模塊實(shí)現(xiàn)過(guò)程設(shè)計(jì) 接口實(shí)現(xiàn)過(guò)程設(shè)計(jì)接

11、口實(shí)現(xiàn)過(guò)程設(shè)計(jì) 主要算法和數(shù)據(jù)結(jié)構(gòu)說(shuō)明主要算法和數(shù)據(jù)結(jié)構(gòu)說(shuō)明 界面設(shè)計(jì)界面設(shè)計(jì) 檢查列表檢查列表第四章 軟件設(shè)計(jì)25概要設(shè)計(jì)說(shuō)明書(shū)評(píng)審記錄表概要設(shè)計(jì)說(shuō)明書(shū)評(píng)審記錄表詳細(xì)設(shè)計(jì)說(shuō)明書(shū)評(píng)審記錄表詳細(xì)設(shè)計(jì)說(shuō)明書(shū)評(píng)審記錄表突出設(shè)計(jì)書(shū)評(píng)審中不符合項(xiàng)的跟蹤記錄。突出設(shè)計(jì)書(shū)評(píng)審中不符合項(xiàng)的跟蹤記錄。不符合項(xiàng)主要是在系統(tǒng)功能、性能、接口的設(shè)不符合項(xiàng)主要是在系統(tǒng)功能、性能、接口的設(shè)計(jì)上存在的遺漏或缺陷。計(jì)上存在的遺漏或缺陷。只有不符合項(xiàng)為零時(shí),評(píng)審才能通過(guò)。只有不符合項(xiàng)為零時(shí),評(píng)審才能通過(guò)。因此,評(píng)審可能進(jìn)行多次。因此,評(píng)審可能進(jìn)行多次。意見(jiàn)指出不符合項(xiàng)、強(qiáng)項(xiàng)和弱項(xiàng)。意見(jiàn)指出不符合項(xiàng)、強(qiáng)項(xiàng)和弱項(xiàng)。評(píng)審結(jié)論就是通過(guò)

12、或不通過(guò)。評(píng)審結(jié)論就是通過(guò)或不通過(guò)。記錄表要點(diǎn):記錄表要點(diǎn):第四章 軟件設(shè)計(jì)26第四章 軟件設(shè)計(jì)27軟件過(guò)程集中考慮每個(gè)模塊各自的處軟件過(guò)程集中考慮每個(gè)模塊各自的處理細(xì)節(jié)。過(guò)程必須提供一個(gè)精確的處理規(guī)格說(shuō)明,理細(xì)節(jié)。過(guò)程必須提供一個(gè)精確的處理規(guī)格說(shuō)明,包括事件順序,精確的判定位置、重復(fù)的操作,包括事件順序,精確的判定位置、重復(fù)的操作,以及數(shù)據(jù)組織和結(jié)構(gòu)等以及數(shù)據(jù)組織和結(jié)構(gòu)等 。描述一個(gè)模塊的實(shí)現(xiàn),描述一個(gè)模塊的實(shí)現(xiàn),必須包括所有從屬于該模塊的所有模塊的引用,必須包括所有從屬于該模塊的所有模塊的引用,而從屬于該模塊的所有模塊是通過(guò)結(jié)構(gòu)體現(xiàn)的。而從屬于該模塊的所有模塊是通過(guò)結(jié)構(gòu)體現(xiàn)的。 第四章 軟

13、件設(shè)計(jì)28 數(shù)據(jù)詞典 數(shù) 據(jù) 流 圖 實(shí)實(shí) 體 關(guān) 系 圖 狀態(tài)轉(zhuǎn)換圖 加 工 控 制 規(guī) 規(guī) 格 格 說(shuō) 說(shuō) 明 明 數(shù) 據(jù) 對(duì) 象 描 述 過(guò)程設(shè)計(jì) 接口設(shè)計(jì) 體系結(jié)構(gòu)設(shè)計(jì) 數(shù)據(jù)設(shè)計(jì) 用數(shù)據(jù)、功能和行為模型表示的軟件需求,采用某種設(shè)計(jì)方用數(shù)據(jù)、功能和行為模型表示的軟件需求,采用某種設(shè)計(jì)方法進(jìn)行數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)和過(guò)程設(shè)計(jì)。法進(jìn)行數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)和過(guò)程設(shè)計(jì)。 第四章 軟件設(shè)計(jì)29 數(shù)據(jù)設(shè)計(jì)將實(shí)體數(shù)據(jù)設(shè)計(jì)將實(shí)體關(guān)系圖中描述的對(duì)象和關(guān)系,以及數(shù)關(guān)系圖中描述的對(duì)象和關(guān)系,以及數(shù)據(jù)詞典中描述的詳細(xì)數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。據(jù)詞典中描述的詳細(xì)數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定

14、義。體系結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)各主要成份之間的關(guān)系。體系結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)各主要成份之間的關(guān)系。接口設(shè)計(jì)根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件接口設(shè)計(jì)根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶(hù)之間的交互機(jī)制。與其它協(xié)同系統(tǒng)之間及軟件與用戶(hù)之間的交互機(jī)制。過(guò)程設(shè)計(jì)則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過(guò)程性描述。過(guò)程設(shè)計(jì)則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過(guò)程性描述。 軟件設(shè)計(jì)是開(kāi)發(fā)階段中最重要的步驟,它是軟件開(kāi)發(fā)過(guò)軟件設(shè)計(jì)是開(kāi)發(fā)階段中最重要的步驟,它是軟件開(kāi)發(fā)過(guò)程中質(zhì)量得以保證的關(guān)鍵步驟。程中質(zhì)量得以保證的關(guān)鍵步驟。 第四章 軟件設(shè)計(jì)30設(shè)計(jì)必須實(shí)現(xiàn)分析模型中描述的所有顯式需求,必設(shè)計(jì)

15、必須實(shí)現(xiàn)分析模型中描述的所有顯式需求,必須滿(mǎn)足用戶(hù)希望的所有隱式需求。須滿(mǎn)足用戶(hù)希望的所有隱式需求。設(shè)計(jì)必須是可讀、可理解的,使得將來(lái)易于編程、設(shè)計(jì)必須是可讀、可理解的,使得將來(lái)易于編程、易于測(cè)試、易于維護(hù)。易于測(cè)試、易于維護(hù)。設(shè)計(jì)應(yīng)從實(shí)現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為設(shè)計(jì)應(yīng)從實(shí)現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為相關(guān)的軟件全貌。相關(guān)的軟件全貌。第四章 軟件設(shè)計(jì)31設(shè)計(jì)出來(lái)的結(jié)構(gòu)應(yīng)是分層結(jié)構(gòu),從而建立軟件成份之間的控制。設(shè)計(jì)出來(lái)的結(jié)構(gòu)應(yīng)是分層結(jié)構(gòu),從而建立軟件成份之間的控制。設(shè)計(jì)應(yīng)當(dāng)模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的設(shè)計(jì)應(yīng)當(dāng)模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的構(gòu)件

16、。構(gòu)件。設(shè)計(jì)應(yīng)當(dāng)既包含數(shù)據(jù)抽象,也包含過(guò)程抽象。設(shè)計(jì)應(yīng)當(dāng)既包含數(shù)據(jù)抽象,也包含過(guò)程抽象。設(shè)計(jì)應(yīng)當(dāng)建立具有具有獨(dú)立功能特征的模塊。設(shè)計(jì)應(yīng)當(dāng)建立具有具有獨(dú)立功能特征的模塊。設(shè)計(jì)應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。設(shè)計(jì)應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。設(shè)計(jì)應(yīng)能根據(jù)軟件需求分析獲取的信息,建立可驅(qū)動(dòng)可重復(fù)的方法。設(shè)計(jì)應(yīng)能根據(jù)軟件需求分析獲取的信息,建立可驅(qū)動(dòng)可重復(fù)的方法。第四章 軟件設(shè)計(jì)32該劃分過(guò)程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)該劃分過(guò)程從需求分析確立的目標(biāo)系統(tǒng)的模型出發(fā),對(duì)整個(gè)問(wèn)題進(jìn)行分割,使每個(gè)部分用一個(gè)或幾個(gè)軟件成份整個(gè)問(wèn)題進(jìn)行分割,使每個(gè)部分用一個(gè)或幾個(gè)

17、軟件成份加以解決。加以解決。第四章 軟件設(shè)計(jì)33如果模塊是相互獨(dú)立的如果模塊是相互獨(dú)立的,模塊越小,每個(gè)模塊,模塊越小,每個(gè)模塊花費(fèi)的工作量越低;模花費(fèi)的工作量越低;模塊數(shù)增加時(shí),模塊間的塊數(shù)增加時(shí),模塊間的聯(lián)系也隨之增加,把這聯(lián)系也隨之增加,把這些模塊聯(lián)接起來(lái)的工作些模塊聯(lián)接起來(lái)的工作量也隨之增加。因此,量也隨之增加。因此,要設(shè)計(jì)成要設(shè)計(jì)成M個(gè)模塊,個(gè)模塊, 使使得總的開(kāi)發(fā)成本達(dá)到最得總的開(kāi)發(fā)成本達(dá)到最小。小。 第四章 軟件設(shè)計(jì)34整個(gè)整個(gè)結(jié)構(gòu)只有一個(gè)頂層模塊,結(jié)構(gòu)只有一個(gè)頂層模塊,而對(duì)于任何一個(gè)下層模而對(duì)于任何一個(gè)下層模塊,只有一個(gè)上級(jí)模塊,塊,只有一個(gè)上級(jí)模塊,而且同一層模塊之間不而且同

18、一層模塊之間不發(fā)生聯(lián)系發(fā)生聯(lián)系。任意任意兩個(gè)模塊間都可以有雙兩個(gè)模塊間都可以有雙向的關(guān)系。由于模塊間向的關(guān)系。由于模塊間不存在上下的關(guān)系,任不存在上下的關(guān)系,任何兩個(gè)模塊都是平等的,何兩個(gè)模塊都是平等的,因此分不出層次來(lái)。因此分不出層次來(lái)。 第四章 軟件設(shè)計(jì)35第四章 軟件設(shè)計(jì)36軟件系統(tǒng)的模塊化是指整個(gè)軟件被劃分成若干軟件系統(tǒng)的模塊化是指整個(gè)軟件被劃分成若干單獨(dú)命名和可編址的部分,稱(chēng)之為模塊。這些單獨(dú)命名和可編址的部分,稱(chēng)之為模塊。這些模塊可以被組裝起來(lái)以滿(mǎn)足整個(gè)問(wèn)題的需求。模塊可以被組裝起來(lái)以滿(mǎn)足整個(gè)問(wèn)題的需求。把問(wèn)題子問(wèn)題的分解與軟件開(kāi)發(fā)中的系統(tǒng)把問(wèn)題子問(wèn)題的分解與軟件開(kāi)發(fā)中的系統(tǒng)子系統(tǒng)

19、或系統(tǒng)模塊對(duì)應(yīng)起來(lái),就能夠把一個(gè)子系統(tǒng)或系統(tǒng)模塊對(duì)應(yīng)起來(lái),就能夠把一個(gè)大而復(fù)雜的軟件系統(tǒng)劃分成易于理解的比較單大而復(fù)雜的軟件系統(tǒng)劃分成易于理解的比較單純的模塊結(jié)構(gòu)。純的模塊結(jié)構(gòu)。第四章 軟件設(shè)計(jì)37“模塊模塊”,又稱(chēng),又稱(chēng)“組件組件”。一般有四個(gè)基本屬性。一般有四個(gè)基本屬性功能:功能:描述該模塊做什么?描述該模塊做什么?邏輯:邏輯:描述模塊內(nèi)部怎么做?描述模塊內(nèi)部怎么做?狀態(tài):狀態(tài):模塊使用時(shí)的環(huán)境和條件。模塊使用時(shí)的環(huán)境和條件。接口:接口:指模塊的輸入與輸出。指模塊的輸入與輸出。第四章 軟件設(shè)計(jì)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è)計(jì)39用層次的方式構(gòu)造和分析復(fù)雜系統(tǒng)。用層次的方式構(gòu)造和分析復(fù)雜系統(tǒng)。幫助開(kāi)發(fā)人員把精力集中在與當(dāng)前開(kāi)發(fā)幫助開(kāi)發(fā)人員把精力集中在與當(dāng)前開(kāi)發(fā)階段最相關(guān)的那些問(wèn)題上。階段最相關(guān)的那些問(wèn)題上。如果一個(gè)模塊內(nèi)包含的信息如果一個(gè)模塊內(nèi)包含的信息(過(guò)程和數(shù)據(jù)過(guò)程和數(shù)據(jù)) 不允許外部的模塊訪(fǎng)問(wèn)的話(huà),其它模塊不能對(duì)其訪(fǎng)不允許外部的模塊訪(fǎng)問(wèn)的話(huà),其它模塊不能對(duì)其訪(fǎng)問(wèn)。問(wèn)。把一些關(guān)系密切的軟件元素物理地放得彼把一些關(guān)系密切的軟件元素物理地放得彼此靠近。此靠近。第四章

21、 軟件設(shè)計(jì)40TOP菱形:表示模塊內(nèi)有判定功能;菱形:表示模塊內(nèi)有判定功能;陰影:表示模塊的作用范圍。陰影:表示模塊的作用范圍。ABCDEFTOPABCDEFTOPABCDEF第四章 軟件設(shè)計(jì)41傳入模塊傳入模塊AA傳出模塊傳出模塊DD變換模塊變換模塊BC協(xié)調(diào)模塊協(xié)調(diào)模塊XXYY第四章 軟件設(shè)計(jì)42軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能功能, , 和其它的模塊的接口是簡(jiǎn)單的。和其它的模塊的接口是簡(jiǎn)單的。一個(gè)模塊只具有單一的功能且與其它模塊沒(méi)有太一個(gè)模塊只具有單一的功能且與其它模塊沒(méi)有太多的聯(lián)系多的聯(lián)系, , 則稱(chēng)此模塊具有模塊獨(dú)立性。則稱(chēng)此模塊

22、具有模塊獨(dú)立性。模塊的獨(dú)立性是軟件質(zhì)量的關(guān)鍵。具有獨(dú)立模塊模塊的獨(dú)立性是軟件質(zhì)量的關(guān)鍵。具有獨(dú)立模塊的軟件容易開(kāi)發(fā),這是由于能夠?qū)浖墓δ芗拥能浖菀组_(kāi)發(fā),這是由于能夠?qū)浖墓δ芗右苑指睿嗷ソ涌诓粡?fù)雜,可有一組人員同時(shí)以分割,而相互接口不復(fù)雜,可有一組人員同時(shí)開(kāi)發(fā),由于模塊相互獨(dú)立,在各自設(shè)計(jì)和修改代開(kāi)發(fā),由于模塊相互獨(dú)立,在各自設(shè)計(jì)和修改代碼時(shí)所引起的二次影響不大,錯(cuò)誤傳播少。碼時(shí)所引起的二次影響不大,錯(cuò)誤傳播少。 第四章 軟件設(shè)計(jì)43耦合:耦合:各模塊之間的互相連接的緊密程度。各模塊之間的互相連接的緊密程度。模塊之間模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其獨(dú)立的連接越緊密

23、,聯(lián)系越多,耦合性就越高,而其獨(dú)立性就越弱。性就越弱。內(nèi)聚:內(nèi)聚:模塊內(nèi)各功能元素彼此結(jié)合的緊密程度。模塊內(nèi)各功能元素彼此結(jié)合的緊密程度。一個(gè)一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高,相對(duì)地,它與其它模塊之間的耦合性就會(huì)減就越高,相對(duì)地,它與其它模塊之間的耦合性就會(huì)減低,而模塊獨(dú)立性就越強(qiáng)。低,而模塊獨(dú)立性就越強(qiáng)。增強(qiáng)模塊獨(dú)立性的方法是盡量做到增強(qiáng)模塊獨(dú)立性的方法是盡量做到高內(nèi)聚、低耦合。高內(nèi)聚、低耦合。第四章 軟件設(shè)計(jì)44通常模塊之間總是相通常模塊之間總是相互關(guān)聯(lián)的,因?yàn)橥耆?dú)立的模塊是無(wú)法構(gòu)成系統(tǒng)的。關(guān)鍵互關(guān)聯(lián)的,因?yàn)橥耆?dú)立的

24、模塊是無(wú)法構(gòu)成系統(tǒng)的。關(guān)鍵是連接的程度和復(fù)雜度。我們用耦合度衡量連接的強(qiáng)度,是連接的程度和復(fù)雜度。我們用耦合度衡量連接的強(qiáng)度,模塊間連接很強(qiáng)叫模塊間連接很強(qiáng)叫“緊耦合緊耦合”,而模塊間的連接弱叫,而模塊間的連接弱叫“松松耦合耦合”。顯然,我們的目標(biāo)是努力實(shí)現(xiàn)。顯然,我們的目標(biāo)是努力實(shí)現(xiàn)“松耦合松耦合”系統(tǒng)。系統(tǒng)。耦合度耦合度第四章 軟件設(shè)計(jì)45耦合度耦合度描述了模塊間的連接程度,是一個(gè)抽象的描述了模塊間的連接程度,是一個(gè)抽象的概念,但它能用一個(gè)可操作的概念來(lái)描述,即程概念,但它能用一個(gè)可操作的概念來(lái)描述,即程序員在編碼、調(diào)試和修改一個(gè)模塊時(shí),需要考慮序員在編碼、調(diào)試和修改一個(gè)模塊時(shí),需要考慮另

25、外一個(gè)模塊的概率。如果兩個(gè)模塊是緊耦合的,另外一個(gè)模塊的概率。如果兩個(gè)模塊是緊耦合的,那么他修改一個(gè)模塊,需要修改另外一個(gè)模塊的那么他修改一個(gè)模塊,需要修改另外一個(gè)模塊的概率就高。顯然整個(gè)系統(tǒng)的開(kāi)發(fā)費(fèi)用及系統(tǒng)的復(fù)概率就高。顯然整個(gè)系統(tǒng)的開(kāi)發(fā)費(fèi)用及系統(tǒng)的復(fù)雜性與模塊間的耦合度有直接的關(guān)系。雜性與模塊間的耦合度有直接的關(guān)系。第四章 軟件設(shè)計(jì)46兩兩個(gè)模塊之間個(gè)模塊之間,它們之,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的調(diào)用來(lái)實(shí)現(xiàn)的。非。非直接耦合的模塊獨(dú)直接耦合的模塊獨(dú)立性最強(qiáng)。立性最強(qiáng)。一個(gè)模塊訪(fǎng)問(wèn)另一個(gè)模塊時(shí),彼此之一個(gè)模塊訪(fǎng)問(wèn)另一個(gè)模塊時(shí),彼此之間是通

26、過(guò)間是通過(guò) ( (不是控制參不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量) ) 來(lái)交來(lái)交換輸入、輸出信息的。換輸入、輸出信息的。第四章 軟件設(shè)計(jì)47如果一個(gè)模塊通過(guò)傳送如果一個(gè)模塊通過(guò)傳送,明顯,明顯地控制選擇另一模塊的功能,地控制選擇另一模塊的功能,就是控制耦合。就是控制耦合。一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。一組模塊都訪(fǎng)問(wèn)一組模塊都訪(fǎng)問(wèn)而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該全而且不是通過(guò)

27、參數(shù)表傳遞該全局變量的信息,則稱(chēng)之為外部局變量的信息,則稱(chēng)之為外部耦合耦合。第四章 軟件設(shè)計(jì)48若一組模塊都訪(fǎng)問(wèn)若一組模塊都訪(fǎng)問(wèn)環(huán)境,則它們之間環(huán)境,則它們之間的耦合就稱(chēng)為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局的耦合就稱(chēng)為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合兩種情況。松散公共耦合和緊密公共耦合。第

28、四章 軟件設(shè)計(jì)49模塊之間發(fā)生了下列情形,則稱(chēng)為內(nèi)容耦合模塊之間發(fā)生了下列情形,則稱(chēng)為內(nèi)容耦合一個(gè)模塊直接訪(fǎng)問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù)一個(gè)模塊直接訪(fǎng)問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù); ;一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部; ;兩個(gè)模塊有一部分程序代碼重迭兩個(gè)模塊有一部分程序代碼重迭( (只可能出現(xiàn)只可能出現(xiàn)在匯編語(yǔ)言中在匯編語(yǔ)言中););一個(gè)模塊有多個(gè)入口。一個(gè)模塊有多個(gè)入口。第四章 軟件設(shè)計(jì)50 連接方式的類(lèi)型。連接方式的類(lèi)型。 接口的復(fù)雜性。接口的復(fù)雜性。 傳送的信息流類(lèi)型。傳送的信息流類(lèi)型。 耦合的時(shí)間。耦合的時(shí)間。第四章 軟件設(shè)計(jì)51耦合度由低到高分別是:耦

29、合度由低到高分別是:獨(dú)立性最強(qiáng),一個(gè)模塊通過(guò)模塊名調(diào)獨(dú)立性最強(qiáng),一個(gè)模塊通過(guò)模塊名調(diào)用另一模塊,彼此之間的關(guān)系非常明確;用另一模塊,彼此之間的關(guān)系非常明確;可以直接引用其他模塊的數(shù)據(jù)或控制可以直接引用其他模塊的數(shù)據(jù)或控制指令耦合度最強(qiáng),一個(gè)模塊出錯(cuò),錯(cuò)誤有可能來(lái)自其它模指令耦合度最強(qiáng),一個(gè)模塊出錯(cuò),錯(cuò)誤有可能來(lái)自其它模塊。尤其是控制直接引用,因?yàn)椋航涌诓幻黠@;程序難以塊。尤其是控制直接引用,因?yàn)椋航涌诓幻黠@;程序難以理解,難以編寫(xiě),也難以糾錯(cuò)、改錯(cuò),所以通常將該種聯(lián)理解,難以編寫(xiě),也難以糾錯(cuò)、改錯(cuò),所以通常將該種聯(lián)系稱(chēng)為病態(tài)聯(lián)系,應(yīng)避免。系稱(chēng)為病態(tài)聯(lián)系,應(yīng)避免。第四章 軟件設(shè)計(jì)52當(dāng)幾個(gè)模塊在

30、一個(gè)公共數(shù)據(jù)區(qū)上工作時(shí)當(dāng)幾個(gè)模塊在一個(gè)公共數(shù)據(jù)區(qū)上工作時(shí), ,一個(gè)一個(gè)模塊的改變模塊的改變, ,可能造成另一些模塊的錯(cuò)誤。可能造成另一些模塊的錯(cuò)誤。如果有如果有M M個(gè)模塊個(gè)模塊, ,共享共享N N個(gè)數(shù)據(jù)的公共區(qū)個(gè)數(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ù)和類(lèi)型決接口間傳遞的信息數(shù)量以及穿越接口次數(shù)和類(lèi)型決定了接口的復(fù)雜性。例如:定了接口的復(fù)雜性。例如:第四章 軟件設(shè)計(jì)

31、53當(dāng)一個(gè)模塊修改另一個(gè)模塊的代碼時(shí)當(dāng)一個(gè)模塊修改另一個(gè)模塊的代碼時(shí), ,對(duì)修改者來(lái)說(shuō)對(duì)修改者來(lái)說(shuō), ,修改的代碼是當(dāng)作數(shù)據(jù)來(lái)處理的修改的代碼是當(dāng)作數(shù)據(jù)來(lái)處理的, ,而對(duì)被修改的模塊來(lái)說(shuō),則可能是對(duì)而對(duì)被修改的模塊來(lái)說(shuō),則可能是對(duì)“控制控制”的的改變,這種情況最難處理,耦合度最高。改變,這種情況最難處理,耦合度最高。一個(gè)模塊直接轉(zhuǎn)移到另一模塊的某點(diǎn)上,一個(gè)模塊直接轉(zhuǎn)移到另一模塊的某點(diǎn)上,就影響了兩個(gè)模塊的控制。由于很難找到這種轉(zhuǎn)就影響了兩個(gè)模塊的控制。由于很難找到這種轉(zhuǎn)移地址,通常可以通過(guò)傳遞參數(shù)來(lái)傳遞控制。這移地址,通常可以通過(guò)傳遞參數(shù)來(lái)傳遞控制。這種耦合度也很高。種耦合度也很高。第四章 軟

32、件設(shè)計(jì)54類(lèi)型類(lèi)型選擇是控制型參數(shù),決定了模塊選擇是控制型參數(shù),決定了模塊B B是取陰歷日期還是取陰歷日期還是取陽(yáng)歷日期,消除開(kāi)關(guān)信息,將模塊分解,每個(gè)模塊是取陽(yáng)歷日期,消除開(kāi)關(guān)信息,將模塊分解,每個(gè)模塊有明確的功能,成為數(shù)據(jù)耦合有明確的功能,成為數(shù)據(jù)耦合。A取陰歷日期取陰歷日期或或取陽(yáng)歷日期取陽(yáng)歷日期類(lèi)型選擇類(lèi)型選擇日期日期取陰歷取陰歷取陽(yáng)歷取陽(yáng)歷陰歷日期陰歷日期陽(yáng)歷日期陽(yáng)歷日期第四章 軟件設(shè)計(jì)55耦合的時(shí)間有以下幾種情況:耦合的時(shí)間有以下幾種情況: 編寫(xiě)程序時(shí)(程序員編寫(xiě)一行語(yǔ)句時(shí));編寫(xiě)程序時(shí)(程序員編寫(xiě)一行語(yǔ)句時(shí));模塊編譯或匯編時(shí);模塊編譯或匯編時(shí);程序模塊連接時(shí);程序模塊連接時(shí);系

33、統(tǒng)運(yùn)行時(shí)。系統(tǒng)運(yùn)行時(shí)。參數(shù)確定的越晚,就越容易修改,越靈活。參數(shù)確定的越晚,就越容易修改,越靈活。第四章 軟件設(shè)計(jì)56 耦合度是評(píng)價(jià)程序質(zhì)量的重要指標(biāo),耦合度越小,耦合度是評(píng)價(jià)程序質(zhì)量的重要指標(biāo),耦合度越小,則每個(gè)模塊越容易獨(dú)立地被理解、編寫(xiě)和修改,同時(shí)每則每個(gè)模塊越容易獨(dú)立地被理解、編寫(xiě)和修改,同時(shí)每個(gè)模塊的錯(cuò)誤越不容易擴(kuò)散蔓延到其他模塊。個(gè)模塊的錯(cuò)誤越不容易擴(kuò)散蔓延到其他模塊。 對(duì)需要了解的內(nèi)容,隱含的改為明顯的,便于理解;對(duì)需要了解的內(nèi)容,隱含的改為明顯的,便于理解; 連接的方式盡量標(biāo)準(zhǔn)化,避免直接引用;連接的方式盡量標(biāo)準(zhǔn)化,避免直接引用; 減少公共區(qū),將公共區(qū)劃分為若干個(gè)邏輯子區(qū);減少

34、公共區(qū),將公共區(qū)劃分為若干個(gè)邏輯子區(qū); 輸入輸出應(yīng)局限在少量模塊,不要分散在全系統(tǒng);輸入輸出應(yīng)局限在少量模塊,不要分散在全系統(tǒng);第四章 軟件設(shè)計(jì)57 c 模塊中各個(gè)部分都是完成某一具體模塊中各個(gè)部分都是完成某一具體功能必不可少功能必不可少的組的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割。則稱(chēng)該具體功能而協(xié)同工作,緊密聯(lián)系,不可分割。則稱(chēng)該模塊為功能內(nèi)聚模塊。模塊為功能內(nèi)聚模塊。第四章 軟件設(shè)計(jì)58模塊中模塊中上操作,每一項(xiàng)功能上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。模塊根據(jù)不同的要求,確定執(zhí)行有一個(gè)唯一的入

35、口點(diǎn)。模塊根據(jù)不同的要求,確定執(zhí)行哪一個(gè)功能。模塊內(nèi)所有功能都基于同一個(gè)數(shù)據(jù)結(jié)構(gòu)。哪一個(gè)功能。模塊內(nèi)所有功能都基于同一個(gè)數(shù)據(jù)結(jié)構(gòu)。信息內(nèi)聚模塊可以看成是多個(gè)功能內(nèi)聚模塊的組合,并信息內(nèi)聚模塊可以看成是多個(gè)功能內(nèi)聚模塊的組合,并且達(dá)到信息的隱蔽。即把某個(gè)數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱且達(dá)到信息的隱蔽。即把某個(gè)數(shù)據(jù)結(jié)構(gòu)、資源或設(shè)備隱蔽在一個(gè)模塊內(nèi),不為別的模塊所知曉。蔽在一個(gè)模塊內(nèi),不為別的模塊所知曉。第四章 軟件設(shè)計(jì)59如果一個(gè)模塊內(nèi)各功能部分都如果一個(gè)模塊內(nèi)各功能部分都,或產(chǎn)生了或產(chǎn)生了,則稱(chēng)之為通信內(nèi)聚模塊。,則稱(chēng)之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過(guò)數(shù)據(jù)流圖來(lái)定義的。通常,通信內(nèi)聚模塊是通過(guò)數(shù)

36、據(jù)流圖來(lái)定義的。第四章 軟件設(shè)計(jì)60使用流程圖做為工具設(shè)計(jì)程序時(shí),把流程圖中的某一使用流程圖做為工具設(shè)計(jì)程序時(shí),把流程圖中的某一部分劃出組成模塊,就得到過(guò)程內(nèi)聚模塊。例如,把部分劃出組成模塊,就得到過(guò)程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)模塊,這三個(gè)模塊都是過(guò)程內(nèi)聚模塊。模塊,這三個(gè)模塊都是過(guò)程內(nèi)聚模塊。時(shí)間內(nèi)聚又稱(chēng)為經(jīng)典內(nèi)聚。這種模塊大多為多功能時(shí)間內(nèi)聚又稱(chēng)為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求要求例如初始例如初始化模塊和終止模塊。化

37、模塊和終止模塊。第四章 軟件設(shè)計(jì)61 模塊內(nèi)各處理單元模塊內(nèi)各處理單元相關(guān),按特定次序執(zhí)相關(guān),按特定次序執(zhí)行,采用數(shù)據(jù)流圖時(shí)行,采用數(shù)據(jù)流圖時(shí)往往會(huì)出現(xiàn)此種內(nèi)聚。往往會(huì)出現(xiàn)此種內(nèi)聚。 如圖:讀入的數(shù)如圖:讀入的數(shù)據(jù)供編輯單元處理,據(jù)供編輯單元處理,讀入和編輯這兩個(gè)處讀入和編輯這兩個(gè)處理單元在一個(gè)過(guò)程中理單元在一個(gè)過(guò)程中相關(guān)。相關(guān)。讀入讀入編輯編輯數(shù)據(jù)數(shù)據(jù)第四章 軟件設(shè)計(jì)62邏輯內(nèi)聚把邏輯內(nèi)聚把幾種幾種每次被調(diào)用時(shí),由每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來(lái)確定傳送給模塊的判定參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪一種功能該模塊應(yīng)執(zhí)行哪一種功能。當(dāng)模塊內(nèi)當(dāng)模塊內(nèi),或者即使有聯(lián)系,這種聯(lián)系也或者即使有聯(lián)系,這種聯(lián)

38、系也很松散,則稱(chēng)這種模塊為巧合很松散,則稱(chēng)這種模塊為巧合內(nèi)聚模塊,它是內(nèi)聚程度最低內(nèi)聚模塊,它是內(nèi)聚程度最低的模塊。的模塊。巧合內(nèi)聚巧合內(nèi)聚實(shí)例實(shí)例第四章 軟件設(shè)計(jì)63 T MOV A TO B READ Card file MOV C TO DPQRS 此例中此例中A、B、C、D、T之間各不相之間各不相干,只因?yàn)楦桑灰驗(yàn)镻、Q、R、S都要用到它們,都要用到它們,為了節(jié)省一些存儲(chǔ)空間,將它們放在一為了節(jié)省一些存儲(chǔ)空間,將它們放在一個(gè)模塊中。個(gè)模塊中。問(wèn)題:這種模塊不易取名,模塊含義不問(wèn)題:這種模塊不易取名,模塊含義不易理解,難以測(cè)試,不易修改。當(dāng)易理解,難以測(cè)試,不易修改。當(dāng)P、Q有不同要求

39、(如有不同要求(如P要求要求MOVE A TO B)時(shí)時(shí) T的修改會(huì)很復(fù)雜。因?yàn)樗鼈儽緛?lái)互的修改會(huì)很復(fù)雜。因?yàn)樗鼈儽緛?lái)互不相關(guān),所以變動(dòng)的可能性很大。不相關(guān),所以變動(dòng)的可能性很大。 當(dāng)存儲(chǔ)空間不是很緊張時(shí),應(yīng)盡量避當(dāng)存儲(chǔ)空間不是很緊張時(shí),應(yīng)盡量避免巧合性?xún)?nèi)聚。免巧合性?xún)?nèi)聚。第四章 軟件設(shè)計(jì)64 劃分模塊時(shí),盡量做到劃分模塊時(shí),盡量做到高內(nèi)聚、低耦合,保持模塊相對(duì)獨(dú)立性。高內(nèi)聚、低耦合,保持模塊相對(duì)獨(dú)立性。模塊劃分的準(zhǔn)則:模塊劃分的準(zhǔn)則:“將相關(guān)的各部分放在一起,無(wú)關(guān)的東西不要將相關(guān)的各部分放在一起,無(wú)關(guān)的東西不要放在一起。放在一起。” ” 模塊的模塊的大小要適中大小要適中。 模塊的模塊的接口要

40、簡(jiǎn)單、清晰、含義明確接口要簡(jiǎn)單、清晰、含義明確。便于理解,易于實(shí)現(xiàn)、易便于理解,易于實(shí)現(xiàn)、易于測(cè)試和維護(hù)。于測(cè)試和維護(hù)。 一個(gè)一個(gè)模塊的作用范圍應(yīng)在其控制范圍之內(nèi)模塊的作用范圍應(yīng)在其控制范圍之內(nèi)。且判定所在的模塊,。且判定所在的模塊,應(yīng)與受其影響的模塊在層次上盡量靠近。應(yīng)與受其影響的模塊在層次上盡量靠近。 軟件結(jié)構(gòu)的軟件結(jié)構(gòu)的深度、寬度、扇入、扇出應(yīng)適當(dāng)深度、寬度、扇入、扇出應(yīng)適當(dāng)。 力求設(shè)計(jì)力求設(shè)計(jì)單入口和單出口單入口和單出口的模塊。避免的模塊。避免“病態(tài)連接病態(tài)連接”,以防止內(nèi),以防止內(nèi)容耦合。容耦合。 設(shè)計(jì)功能可預(yù)測(cè)模塊的劃分,應(yīng)設(shè)計(jì)功能可預(yù)測(cè)模塊的劃分,應(yīng)防止功能過(guò)分局限防止功能過(guò)分局

41、限。 第四章 軟件設(shè)計(jì)65第四章 軟件設(shè)計(jì)66面向數(shù)據(jù)流的(面向數(shù)據(jù)流的(結(jié)構(gòu)化)結(jié)構(gòu)化)設(shè)計(jì)方法。設(shè)計(jì)方法。結(jié)構(gòu)化設(shè)計(jì)包括一組概念、標(biāo)準(zhǔn)和指導(dǎo)思想。其目結(jié)構(gòu)化設(shè)計(jì)包括一組概念、標(biāo)準(zhǔn)和指導(dǎo)思想。其目的是降低軟件開(kāi)發(fā)費(fèi)用及維護(hù)費(fèi)用,有利于修正軟的是降低軟件開(kāi)發(fā)費(fèi)用及維護(hù)費(fèi)用,有利于修正軟件及實(shí)現(xiàn)新的軟件需求。其最大好處是極大地增加件及實(shí)現(xiàn)新的軟件需求。其最大好處是極大地增加了軟件復(fù)用能力。了軟件復(fù)用能力。結(jié)構(gòu)化設(shè)計(jì)的目標(biāo):將軟件設(shè)計(jì)為功能單一的模塊,結(jié)構(gòu)化設(shè)計(jì)的目標(biāo):將軟件設(shè)計(jì)為功能單一的模塊,建立系統(tǒng)的模塊結(jié)構(gòu)圖。它的主要表示方法是一種建立系統(tǒng)的模塊結(jié)構(gòu)圖。它的主要表示方法是一種分層次的結(jié)構(gòu)圖

42、。分層次的結(jié)構(gòu)圖。第四章 軟件設(shè)計(jì)67認(rèn)為一個(gè)程序、一組程序或一個(gè)系統(tǒng),無(wú)非認(rèn)為一個(gè)程序、一組程序或一個(gè)系統(tǒng),無(wú)非是由一組功能操作來(lái)構(gòu)成的,并進(jìn)而吸取了是由一組功能操作來(lái)構(gòu)成的,并進(jìn)而吸取了結(jié)構(gòu)化分析的結(jié)構(gòu)化分析的“黑盒子黑盒子”的概念。的概念。軟件設(shè)計(jì)者首先必須無(wú)視程序、模塊或過(guò)程軟件設(shè)計(jì)者首先必須無(wú)視程序、模塊或過(guò)程的內(nèi)部情況,而只對(duì)它們之間的關(guān)系進(jìn)行分的內(nèi)部情況,而只對(duì)它們之間的關(guān)系進(jìn)行分析。將系統(tǒng)看作是,邏輯功能的抽象集合析。將系統(tǒng)看作是,邏輯功能的抽象集合功能模塊的集合。這樣軟件設(shè)計(jì)者能夠有功能模塊的集合。這樣軟件設(shè)計(jì)者能夠有最大的自由度設(shè)計(jì)系統(tǒng)結(jié)構(gòu)。最大的自由度設(shè)計(jì)系統(tǒng)結(jié)構(gòu)。第四章

43、 軟件設(shè)計(jì)68減少設(shè)計(jì)復(fù)雜性。將大化小,使復(fù)雜問(wèn)題簡(jiǎn)單化。減少設(shè)計(jì)復(fù)雜性。將大化小,使復(fù)雜問(wèn)題簡(jiǎn)單化。結(jié)構(gòu)獨(dú)立。將程序劃分成多個(gè)相對(duì)獨(dú)立的模塊。結(jié)構(gòu)獨(dú)立。將程序劃分成多個(gè)相對(duì)獨(dú)立的模塊。模塊模塊功能單一化功能單一化,可使軟件設(shè)計(jì)獲得最大的益處。,可使軟件設(shè)計(jì)獲得最大的益處。便于軟件的修改。便于軟件的修改。易于開(kāi)發(fā)和維護(hù)。易于開(kāi)發(fā)和維護(hù)。加強(qiáng)了代碼的可重用性加強(qiáng)了代碼的可重用性。第四章 軟件設(shè)計(jì)69 結(jié)構(gòu)化設(shè)計(jì)方法通過(guò)一種圖形工具結(jié)構(gòu)化設(shè)計(jì)方法通過(guò)一種圖形工具結(jié)構(gòu)圖,進(jìn)結(jié)構(gòu)圖,進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。行軟件結(jié)構(gòu)設(shè)計(jì)。 結(jié)構(gòu)圖是精確表達(dá)程序結(jié)構(gòu)的圖形表示方法。它作結(jié)構(gòu)圖是精確表達(dá)程序結(jié)構(gòu)的圖形表示方法。

44、它作為軟件文檔的一部分,清楚地反映出程序中模塊之為軟件文檔的一部分,清楚地反映出程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系。它不僅嚴(yán)格地定義了各間的層次調(diào)用關(guān)系和聯(lián)系。它不僅嚴(yán)格地定義了各個(gè)模塊的名字、功能和接口,而且還集中地反映了個(gè)模塊的名字、功能和接口,而且還集中地反映了設(shè)計(jì)思想。設(shè)計(jì)思想。第四章 軟件設(shè)計(jì)70模塊:方框表示,并用名字標(biāo)識(shí)該模塊。模塊:方框表示,并用名字標(biāo)識(shí)該模塊。模塊的控制關(guān)系:用單向箭頭或直線(xiàn)連接模模塊的控制關(guān)系:用單向箭頭或直線(xiàn)連接模塊間的控制關(guān)系。塊間的控制關(guān)系。模塊間的信息傳遞:用帶注釋的短箭頭表示模塊間的信息傳遞:用帶注釋的短箭頭表示模塊間傳遞的信息。通常箭頭尾部帶空心

45、圓,模塊間傳遞的信息。通常箭頭尾部帶空心圓,表示傳遞的是數(shù)據(jù),箭頭尾部帶實(shí)心圓,表表示傳遞的是數(shù)據(jù),箭頭尾部帶實(shí)心圓,表示傳遞的是控制信息。示傳遞的是控制信息。兩個(gè)附加符號(hào):弧形線(xiàn)表示循環(huán)調(diào)用,菱形兩個(gè)附加符號(hào):弧形線(xiàn)表示循環(huán)調(diào)用,菱形表示選擇調(diào)用。表示選擇調(diào)用。第四章 軟件設(shè)計(jì)71深度深度表示控制的層數(shù)。表示控制的層數(shù)。寬度寬度表示控制的總分布。表示控制的總分布。扇出扇出某一模塊直接控制的模塊數(shù)目的度量。某一模塊直接控制的模塊數(shù)目的度量。扇入扇入指出有多少個(gè)模塊直接控制一個(gè)給定的模塊。指出有多少個(gè)模塊直接控制一個(gè)給定的模塊。 如果一模塊控制另一個(gè)模塊便稱(chēng)前者如果一模塊控制另一個(gè)模塊便稱(chēng)前者“

46、統(tǒng)帥統(tǒng)帥”后者;后者;反之,稱(chēng)后者反之,稱(chēng)后者“從屬?gòu)膶佟庇谇罢摺S谇罢摺?第四章 軟件設(shè)計(jì)72同一名字的模塊在結(jié)構(gòu)圖中僅出現(xiàn)一次。同一名字的模塊在結(jié)構(gòu)圖中僅出現(xiàn)一次。調(diào)用關(guān)系只能從上到下。調(diào)用關(guān)系只能從上到下。結(jié)構(gòu)圖的調(diào)用次序是從左到右。有時(shí)為了減少連結(jié)構(gòu)圖的調(diào)用次序是從左到右。有時(shí)為了減少連線(xiàn)的交叉,適當(dāng)?shù)卣{(diào)整同一層模塊的左右位置,線(xiàn)的交叉,適當(dāng)?shù)卣{(diào)整同一層模塊的左右位置,以保持結(jié)構(gòu)圖的清晰。以保持結(jié)構(gòu)圖的清晰。第四章 軟件設(shè)計(jì)73查詢(xún)成績(jī)查詢(xún)成績(jī)學(xué)生記錄學(xué)生記錄學(xué)號(hào)查詢(xún)標(biāo)志記錄地址ABCMT1T3T2模塊間的控制關(guān)模塊間的控制關(guān)系及信息傳遞系及信息傳遞模塊間選擇調(diào)用模塊間選擇調(diào)用模塊間循

47、環(huán)調(diào)用模塊間循環(huán)調(diào)用第四章 軟件設(shè)計(jì)74 SDSD方法是以數(shù)據(jù)流圖為基礎(chǔ)設(shè)計(jì)系統(tǒng)方法是以數(shù)據(jù)流圖為基礎(chǔ)設(shè)計(jì)系統(tǒng)的模塊結(jié)構(gòu)。不同類(lèi)型的數(shù)據(jù)流圖設(shè)計(jì)的模塊結(jié)構(gòu)。不同類(lèi)型的數(shù)據(jù)流圖設(shè)計(jì)的過(guò)程以及所導(dǎo)出的初始的軟件結(jié)構(gòu)不的過(guò)程以及所導(dǎo)出的初始的軟件結(jié)構(gòu)不同。不管系統(tǒng)的數(shù)據(jù)流圖如何龐大和復(fù)同。不管系統(tǒng)的數(shù)據(jù)流圖如何龐大和復(fù)雜,一般均可分為變換型、事務(wù)型和變雜,一般均可分為變換型、事務(wù)型和變換換/ /事務(wù)混合型。事務(wù)混合型。第四章 軟件設(shè)計(jì)75精化精化DFDDFD。確定確定DFDDFD類(lèi)型,邏輯輸入、邏輯輸出的界限,映射出變換類(lèi)型,邏輯輸入、邏輯輸出的界限,映射出變換結(jié)構(gòu)的頂層和第一層;如果為事務(wù)型,確定

48、事務(wù)中心和結(jié)構(gòu)的頂層和第一層;如果為事務(wù)型,確定事務(wù)中心和加工路徑,映射出事務(wù)結(jié)構(gòu)的頂層和第一層。加工路徑,映射出事務(wù)結(jié)構(gòu)的頂層和第一層。分解上層模塊,設(shè)計(jì)中下層模塊結(jié)構(gòu)。分解上層模塊,設(shè)計(jì)中下層模塊結(jié)構(gòu)。根據(jù)優(yōu)化準(zhǔn)則對(duì)軟件結(jié)構(gòu)求精。根據(jù)優(yōu)化準(zhǔn)則對(duì)軟件結(jié)構(gòu)求精。描述模塊功能、接口及全局?jǐn)?shù)據(jù)結(jié)構(gòu)。描述模塊功能、接口及全局?jǐn)?shù)據(jù)結(jié)構(gòu)。復(fù)查,如有錯(cuò)轉(zhuǎn)向復(fù)查,如有錯(cuò)轉(zhuǎn)向2 2、修改完善,否則進(jìn)入詳細(xì)設(shè)計(jì)。、修改完善,否則進(jìn)入詳細(xì)設(shè)計(jì)。第四章 軟件設(shè)計(jì)76 變換型的數(shù)據(jù)流圖是一個(gè)線(xiàn)性結(jié)構(gòu),變換型的數(shù)據(jù)流圖是一個(gè)線(xiàn)性結(jié)構(gòu),由輸入、變換和輸出三部分組成。信息由輸入、變換和輸出三部分組成。信息沿輸入通路進(jìn)入系統(tǒng)

49、,同時(shí)由外部形式沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式。進(jìn)入系統(tǒng)的信息通過(guò)變換成內(nèi)部形式。進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開(kāi)軟件系統(tǒng)。路變換成外部形式離開(kāi)軟件系統(tǒng)。 第四章 軟件設(shè)計(jì)77物理輸入物理輸入物理輸出物理輸出輸入流輸入流變換中心變換中心輸出流輸出流邏輯輸出邏輯輸出邏輯輸入邏輯輸入第四章 軟件設(shè)計(jì)78第四章 軟件設(shè)計(jì)79從物理從物理I/OI/O端開(kāi)始,沿(逆)數(shù)據(jù)流方向向系端開(kāi)始,沿(逆)數(shù)據(jù)流方向向系統(tǒng)中心尋找,直到有這樣的數(shù)據(jù)流,它不能統(tǒng)中心尋找,直到有這樣的數(shù)據(jù)流,它不能再被看作是系統(tǒng)的再被看作是系

50、統(tǒng)的I/OI/O時(shí),則它的前一數(shù)據(jù)流時(shí),則它的前一數(shù)據(jù)流就是系統(tǒng)的邏輯就是系統(tǒng)的邏輯I/OI/O。介于邏輯輸入和邏輯輸。介于邏輯輸入和邏輯輸出間的加工就是中心。出間的加工就是中心。通常幾股通常幾股數(shù)據(jù)流的匯合處數(shù)據(jù)流的匯合處就是系統(tǒng)的加工中心。就是系統(tǒng)的加工中心。也可用以下方法確定加工中心:也可用以下方法確定加工中心:第四章 軟件設(shè)計(jì)80A物理輸入物理輸入BCD物理輸出物理輸出G變換中心變換中心邏輯輸出邏輯輸出邏輯輸入邏輯輸入f1f2f3EFHf4f5f6f7f8f9f10f11第四章 軟件設(shè)計(jì)81頂層頂層就是主模塊的位置,其功能是完成對(duì)就是主模塊的位置,其功能是完成對(duì)所有模塊的控制,其名稱(chēng)就

51、是系統(tǒng)名稱(chēng);所有模塊的控制,其名稱(chēng)就是系統(tǒng)名稱(chēng);第一層一般至少有輸入、變換、輸出三種第一層一般至少有輸入、變換、輸出三種功能模塊。功能模塊。第四章 軟件設(shè)計(jì)82輸入模塊下屬模塊的設(shè)計(jì):輸入模塊下屬模塊的設(shè)計(jì):為每個(gè)輸入模塊設(shè)計(jì)兩為每個(gè)輸入模塊設(shè)計(jì)兩個(gè)下屬模塊,一個(gè)接受數(shù)據(jù),一個(gè)將數(shù)據(jù)轉(zhuǎn)換成調(diào)個(gè)下屬模塊,一個(gè)接受數(shù)據(jù),一個(gè)將數(shù)據(jù)轉(zhuǎn)換成調(diào)用模塊所需的信息。用類(lèi)似的方法一直分解下去,用模塊所需的信息。用類(lèi)似的方法一直分解下去,直至物理輸入端。直至物理輸入端。 輸出模塊下屬模塊的設(shè)計(jì):輸出模塊下屬模塊的設(shè)計(jì):為每個(gè)輸出模塊設(shè)計(jì)兩為每個(gè)輸出模塊設(shè)計(jì)兩個(gè)下屬模塊,一個(gè)將數(shù)據(jù)轉(zhuǎn)換成下屬模塊所需的信個(gè)下屬模塊

52、,一個(gè)將數(shù)據(jù)轉(zhuǎn)換成下屬模塊所需的信息,一個(gè)發(fā)送數(shù)據(jù)。用類(lèi)似的方法一直分解下去,息,一個(gè)發(fā)送數(shù)據(jù)。用類(lèi)似的方法一直分解下去,直至物理輸出端。直至物理輸出端。變換模塊下屬模塊的設(shè)計(jì):變換模塊下屬模塊的設(shè)計(jì):根據(jù)變換中心的組成情根據(jù)變換中心的組成情況,按照模塊獨(dú)立性原則,為每個(gè)基本加工建立一況,按照模塊獨(dú)立性原則,為每個(gè)基本加工建立一個(gè)功能模塊。個(gè)功能模塊。第四章 軟件設(shè)計(jì)83根據(jù)設(shè)計(jì)優(yōu)化準(zhǔn)則對(duì)結(jié)構(gòu)細(xì)化和改進(jìn),根據(jù)設(shè)計(jì)優(yōu)化準(zhǔn)則對(duì)結(jié)構(gòu)細(xì)化和改進(jìn),對(duì)模塊進(jìn)行合并和調(diào)整,為每個(gè)物理輸對(duì)模塊進(jìn)行合并和調(diào)整,為每個(gè)物理輸入和物理輸出設(shè)計(jì)專(zhuān)門(mén)模塊,以體現(xiàn)系入和物理輸出設(shè)計(jì)專(zhuān)門(mén)模塊,以體現(xiàn)系統(tǒng)的外部接口。統(tǒng)的外部

53、接口。第四章 軟件設(shè)計(jì)84第四章 軟件設(shè)計(jì)85步驟步驟1 1:復(fù)審基本系統(tǒng)模型(:復(fù)審基本系統(tǒng)模型(0 0層數(shù)據(jù)流圖和支持信息)。評(píng)估系統(tǒng)規(guī)格說(shuō)層數(shù)據(jù)流圖和支持信息)。評(píng)估系統(tǒng)規(guī)格說(shuō)明和軟件需求規(guī)格說(shuō)明。明和軟件需求規(guī)格說(shuō)明。步驟步驟2 2:復(fù)審和細(xì)化軟件的數(shù)據(jù)流圖。重畫(huà)數(shù)據(jù)流圖時(shí),:復(fù)審和細(xì)化軟件的數(shù)據(jù)流圖。重畫(huà)數(shù)據(jù)流圖時(shí), 可以從物理輸入可以從物理輸入到物理輸出,或者相反到物理輸出,或者相反. . 還可以從頂層加工框開(kāi)始,逐層向下。還可以從頂層加工框開(kāi)始,逐層向下。步驟步驟3 3:確定數(shù)據(jù)流圖中含有變換流特征還是含有事務(wù)流特征。通常,系:確定數(shù)據(jù)流圖中含有變換流特征還是含有事務(wù)流特征。通常

54、,系統(tǒng)的信息流總能表示為變換型,但其中也可能遇到明顯的事務(wù)流統(tǒng)的信息流總能表示為變換型,但其中也可能遇到明顯的事務(wù)流特征,這時(shí)可采用變換型為主,在局部范圍采用事務(wù)型的設(shè)計(jì)方特征,這時(shí)可采用變換型為主,在局部范圍采用事務(wù)型的設(shè)計(jì)方法。法。步驟步驟4 4:區(qū)分輸入流、輸出流和中心變換部分,即標(biāo)明流的邊界。不同的:區(qū)分輸入流、輸出流和中心變換部分,即標(biāo)明流的邊界。不同的設(shè)計(jì)人員可能選擇不同的流邊界,這將導(dǎo)致不同的系統(tǒng)結(jié)構(gòu)圖。設(shè)計(jì)人員可能選擇不同的流邊界,這將導(dǎo)致不同的系統(tǒng)結(jié)構(gòu)圖。第四章 軟件設(shè)計(jì)86步驟步驟5 5:進(jìn)行一級(jí):進(jìn)行一級(jí)“因子化因子化”分解,設(shè)計(jì)頂層和第一層模塊。分解,設(shè)計(jì)頂層和第一層模

55、塊。步驟步驟6 6:進(jìn)行二級(jí):進(jìn)行二級(jí)“因子化因子化”分解,設(shè)計(jì)中、下層模塊。這一步工作是分解,設(shè)計(jì)中、下層模塊。這一步工作是自頂向下,逐層細(xì)化,為每一個(gè)輸入模塊、輸出模塊、變換模自頂向下,逐層細(xì)化,為每一個(gè)輸入模塊、輸出模塊、變換模塊設(shè)計(jì)它們的從屬模塊。塊設(shè)計(jì)它們的從屬模塊。步驟步驟7 7:利用一些啟發(fā)式原則來(lái)改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合:利用一些啟發(fā)式原則來(lái)改進(jìn)系統(tǒng)的初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。要求的結(jié)構(gòu)圖為止。第四章 軟件設(shè)計(jì)87 模塊功能的完善化。一個(gè)完整的功能模塊,不僅應(yīng)能完成指定的模塊功能的完善化。一個(gè)完整的功能模塊,不僅應(yīng)能完成指定的功能,而且還應(yīng)當(dāng)能夠告訴使

56、用者完成任務(wù)的狀態(tài),以及不能完功能,而且還應(yīng)當(dāng)能夠告訴使用者完成任務(wù)的狀態(tài),以及不能完成的原因。成的原因。 消除重復(fù)功能,改善軟件結(jié)構(gòu)。在系統(tǒng)的初始結(jié)構(gòu)圖得出之后,消除重復(fù)功能,改善軟件結(jié)構(gòu)。在系統(tǒng)的初始結(jié)構(gòu)圖得出之后,應(yīng)當(dāng)審查分析這個(gè)結(jié)構(gòu)圖。如果發(fā)現(xiàn)幾個(gè)模塊的功能有相似之處,應(yīng)當(dāng)審查分析這個(gè)結(jié)構(gòu)圖。如果發(fā)現(xiàn)幾個(gè)模塊的功能有相似之處,可以加以改進(jìn)。可以加以改進(jìn)。 模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的控制范圍包括它本身模塊的作用范圍應(yīng)在控制范圍之內(nèi)。模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡

57、是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的,否則,它的結(jié)構(gòu)是不簡(jiǎn)單的。范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的,否則,它的結(jié)構(gòu)是不簡(jiǎn)單的。第四章 軟件設(shè)計(jì)88 盡可能減少高扇出結(jié)構(gòu),經(jīng)驗(yàn)證明,一個(gè)設(shè)計(jì)得很好的軟件模塊盡可能減少高扇出結(jié)構(gòu),經(jīng)驗(yàn)證明,一個(gè)設(shè)計(jì)得很好的軟件模塊結(jié)構(gòu),通常上層扇出比較高,中層扇出較少,底層扇入到有高扇結(jié)構(gòu),通常上層扇出比較高,中層扇出較少,底層扇入到有高扇入的公用模塊中。入的公用模塊

58、中。 避免或減少使用病態(tài)聯(lián)接。應(yīng)限制使用如下三種病態(tài)聯(lián)接:直接避免或減少使用病態(tài)聯(lián)接。應(yīng)限制使用如下三種病態(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)接(公共耦合)和通過(guò)通信模塊聯(lián)接。過(guò)通信模塊聯(lián)接。 模塊的大小要適中。限制模塊的大小是減少?gòu)?fù)雜性的手段之一,模塊的大小要適中。限制模塊的大小是減少?gòu)?fù)雜性的手段之一,因而要求把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語(yǔ)句因而要求把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語(yǔ)句行數(shù)在行數(shù)在5050100100左右,最多不超過(guò)左右,最多不超過(guò)500500行。行。 設(shè)計(jì)功能可預(yù)測(cè)的模塊,但要

59、避免過(guò)分受限制的模塊。設(shè)計(jì)功能可預(yù)測(cè)的模塊,但要避免過(guò)分受限制的模塊。 軟件包應(yīng)滿(mǎn)足設(shè)計(jì)約束和可移植性。軟件包應(yīng)滿(mǎn)足設(shè)計(jì)約束和可移植性。第四章 軟件設(shè)計(jì)89 事務(wù)型的數(shù)據(jù)流圖中,數(shù)據(jù)沿輸入通路到達(dá)一個(gè)事務(wù)型的數(shù)據(jù)流圖中,數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理,這個(gè)處理將輸入分為許多相互平行的加工路徑,處理,這個(gè)處理將輸入分為許多相互平行的加工路徑,并根據(jù)輸入數(shù)據(jù)的類(lèi)型,選擇某一加工路徑。其中并根據(jù)輸入數(shù)據(jù)的類(lèi)型,選擇某一加工路徑。其中C C為為事務(wù)處理中心,其任務(wù)是輸入數(shù)據(jù)事務(wù)處理中心,其任務(wù)是輸入數(shù)據(jù)( (輸入數(shù)據(jù)又稱(chēng)為事輸入數(shù)據(jù)又稱(chēng)為事務(wù)務(wù)) )、分析每個(gè)事務(wù)以確定它的類(lèi)型、根據(jù)事務(wù)類(lèi)型選、分析每個(gè)事

60、務(wù)以確定它的類(lèi)型、根據(jù)事務(wù)類(lèi)型選取一條活動(dòng)通路。取一條活動(dòng)通路。 第四章 軟件設(shè)計(jì)90C加工路徑加工路徑輸入流輸入流事務(wù)處理中心事務(wù)處理中心第四章 軟件設(shè)計(jì)91 確定確定DFDDFD中的事物中心和加工路徑中的事物中心和加工路徑 設(shè)計(jì)結(jié)構(gòu)頂層和一層設(shè)計(jì)結(jié)構(gòu)頂層和一層事務(wù)結(jié)構(gòu)事務(wù)結(jié)構(gòu) 設(shè)計(jì)中、下層模塊并優(yōu)化設(shè)計(jì)中、下層模塊并優(yōu)化第四章 軟件設(shè)計(jì)92通常當(dāng)通常當(dāng)DFDDFD中的某個(gè)加工具有明顯中的某個(gè)加工具有明顯的將一個(gè)輸入數(shù)據(jù)流分解成多個(gè)發(fā)的將一個(gè)輸入數(shù)據(jù)流分解成多個(gè)發(fā)散的輸出數(shù)據(jù)流時(shí),該加工就是系散的輸出數(shù)據(jù)流時(shí),該加工就是系統(tǒng)的事務(wù)中心,從事務(wù)中心輻射出統(tǒng)的事務(wù)中心,從事務(wù)中心輻射出去的數(shù)據(jù)流

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論