第三單元軟件設(shè)計_第1頁
第三單元軟件設(shè)計_第2頁
第三單元軟件設(shè)計_第3頁
第三單元軟件設(shè)計_第4頁
第三單元軟件設(shè)計_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、軟件工程軟件工程1 1軟件工程軟件工程第三章第三章 軟件設(shè)計軟件設(shè)計3.1 3.1 軟件設(shè)計的概念軟件設(shè)計的概念3.2 3.2 功能獨立性功能獨立性3.3 3.3 結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計方法3.4 3.4 過程設(shè)計過程設(shè)計軟件工程軟件工程2 23.1 3.1 軟件設(shè)計的概念軟件設(shè)計的概念n軟件設(shè)計的基本目標(biāo)是軟件設(shè)計的基本目標(biāo)是用比較抽象概括的方式用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù)確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),即軟件設(shè),即軟件設(shè)計是確定系統(tǒng)的物理模型。計是確定系統(tǒng)的物理模型。n從技術(shù)觀點來看,軟件設(shè)計包括從技術(shù)觀點來看,軟件設(shè)計包括數(shù)據(jù)設(shè)計數(shù)據(jù)設(shè)計、體體系結(jié)構(gòu)設(shè)計系結(jié)構(gòu)設(shè)計

2、、接口設(shè)計接口設(shè)計、過程設(shè)計過程設(shè)計。n數(shù)據(jù)設(shè)計數(shù)據(jù)設(shè)計將實體關(guān)系圖中描述的對象和關(guān)系,將實體關(guān)系圖中描述的對象和關(guān)系,以及數(shù)據(jù)字典中描述的詳細數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)以及數(shù)據(jù)字典中描述的詳細數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。據(jù)結(jié)構(gòu)的定義。軟件工程軟件工程3 3 體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)設(shè)計定義軟件系統(tǒng)各主要成份之間的定義軟件系統(tǒng)各主要成份之間的關(guān)系。關(guān)系。 接口設(shè)計接口設(shè)計根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶之間的交互機制。間的交互機制。 過程設(shè)計過程設(shè)計則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性則是把結(jié)構(gòu)成份轉(zhuǎn)

3、換成軟件的過程性描述。描述。軟件工程軟件工程4 4將分析模型轉(zhuǎn)換為設(shè)計將分析模型轉(zhuǎn)換為設(shè)計數(shù)據(jù)字典數(shù)據(jù)字典數(shù)數(shù)據(jù)據(jù)流流圖圖實實體體關(guān)關(guān)系系圖圖狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖加加工工規(guī)規(guī)格格說說明明控控制制規(guī)規(guī) 格格說說明明數(shù)數(shù)據(jù)據(jù)對對象象描描述述過程設(shè)計過程設(shè)計接口設(shè)計接口設(shè)計體系結(jié)構(gòu)設(shè)計體系結(jié)構(gòu)設(shè)計數(shù)據(jù)設(shè)計數(shù)據(jù)設(shè)計軟件工程軟件工程5 5n從工程管理角度來看,軟件設(shè)計分兩步完成:從工程管理角度來看,軟件設(shè)計分兩步完成:概要設(shè)計和詳細設(shè)計。概要設(shè)計和詳細設(shè)計。n概要設(shè)計概要設(shè)計將軟件需求將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)轉(zhuǎn)化為軟件體系結(jié)構(gòu)確定系統(tǒng)級接口確定系統(tǒng)級接口全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。全局數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫

4、模式。n詳細設(shè)計詳細設(shè)計確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu)確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu)用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)軟件工程軟件工程6 6n軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護工作的基軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護工作的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。統(tǒng)結(jié)構(gòu)。設(shè)計設(shè)計編碼編碼測試測試維護維護測試測試編碼編碼維護維護有軟件設(shè)計有軟件設(shè)計 沒有軟件設(shè)計沒有軟件設(shè)計軟件工程軟件工程7 7n軟件設(shè)計既是過程又是模型。軟件設(shè)計既是過程又是模型。n設(shè)計過程設(shè)計過程是一系列的迭代步驟,使設(shè)計人員能是一系列

5、的迭代步驟,使設(shè)計人員能夠描述目標(biāo)系統(tǒng)的各個側(cè)面。夠描述目標(biāo)系統(tǒng)的各個側(cè)面。n設(shè)計模型設(shè)計模型首先描述目標(biāo)系統(tǒng)的整體架構(gòu),然后首先描述目標(biāo)系統(tǒng)的整體架構(gòu),然后逐步細化架構(gòu)得到構(gòu)造每個細節(jié)的指導(dǎo)原則,逐步細化架構(gòu)得到構(gòu)造每個細節(jié)的指導(dǎo)原則,從而得到系統(tǒng)的一系列不同的視圖。從而得到系統(tǒng)的一系列不同的視圖。n良好的設(shè)計原則可為設(shè)計過程導(dǎo)航。良好的設(shè)計原則可為設(shè)計過程導(dǎo)航。n衡量衡量設(shè)計過程設(shè)計過程的技術(shù)原則:的技術(shù)原則: 設(shè)計必須實現(xiàn)分析模型中描述的所有顯式需設(shè)計必須實現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。求,必須滿足用戶希望的所有隱式需求。衡量軟件設(shè)計的原則衡量軟件設(shè)計的

6、原則軟件工程軟件工程8 8對于開發(fā)者和未來的維護者而言,對于開發(fā)者和未來的維護者而言,設(shè)計必須是設(shè)計必須是可讀的、可理解的,使得將來易于編程、易可讀的、可理解的,使得將來易于編程、易于測試、易于維護。于測試、易于維護。設(shè)計應(yīng)該給出軟件的全貌,包括從實現(xiàn)角度可設(shè)計應(yīng)該給出軟件的全貌,包括從實現(xiàn)角度可看到的數(shù)據(jù)、功能、行為。看到的數(shù)據(jù)、功能、行為。n衡量衡量設(shè)計模型設(shè)計模型的技術(shù)原則的技術(shù)原則 設(shè)計模型應(yīng)該是一個分層結(jié)構(gòu)。該結(jié)構(gòu):設(shè)計模型應(yīng)該是一個分層結(jié)構(gòu)。該結(jié)構(gòu): 使用可識別的使用可識別的設(shè)計模式設(shè)計模式搭建系統(tǒng)結(jié)構(gòu)。搭建系統(tǒng)結(jié)構(gòu)。 用顯示良好設(shè)計特征的用顯示良好設(shè)計特征的構(gòu)件構(gòu)件構(gòu)成。構(gòu)成。

7、可以用可以用演化的方式演化的方式實現(xiàn)。實現(xiàn)。 設(shè)計應(yīng)當(dāng)模塊化。設(shè)計應(yīng)當(dāng)模塊化。軟件工程軟件工程9 9 設(shè)計應(yīng)當(dāng)包含數(shù)據(jù)、體系結(jié)構(gòu)、接口和構(gòu)件設(shè)計應(yīng)當(dāng)包含數(shù)據(jù)、體系結(jié)構(gòu)、接口和構(gòu)件(模塊)的清晰的視圖。(模塊)的清晰的視圖。 設(shè)計應(yīng)當(dāng)根據(jù)將要實現(xiàn)的對象和數(shù)據(jù)模式導(dǎo)設(shè)計應(yīng)當(dāng)根據(jù)將要實現(xiàn)的對象和數(shù)據(jù)模式導(dǎo)出合適的數(shù)據(jù)結(jié)構(gòu)。出合適的數(shù)據(jù)結(jié)構(gòu)。 設(shè)計應(yīng)當(dāng)建立具有獨立功能特征的構(gòu)件。設(shè)計應(yīng)當(dāng)建立具有獨立功能特征的構(gòu)件。 設(shè)計應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間設(shè)計應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。復(fù)雜連接的接口。 設(shè)計模型應(yīng)當(dāng)通過使用軟件需求信息所驅(qū)動設(shè)計模型應(yīng)當(dāng)通過使用軟件需求信息所驅(qū)動的

8、可重復(fù)的方法導(dǎo)出。的可重復(fù)的方法導(dǎo)出。nDavis的軟件設(shè)計原則的軟件設(shè)計原則 設(shè)計應(yīng)具有設(shè)計應(yīng)具有可跟蹤性可跟蹤性,能回溯到軟件需求,能回溯到軟件需求;軟件工程軟件工程1010 設(shè)計不必每次都從頭做起,可以復(fù)用已有的設(shè)計不必每次都從頭做起,可以復(fù)用已有的設(shè)計模式和數(shù)據(jù)模式。設(shè)計模式和數(shù)據(jù)模式。 設(shè)計應(yīng)當(dāng)縮小軟件與現(xiàn)實世界中問題的設(shè)計應(yīng)當(dāng)縮小軟件與現(xiàn)實世界中問題的“智智力距離力距離”,盡量逼近問題領(lǐng)域的結(jié)構(gòu),盡量逼近問題領(lǐng)域的結(jié)構(gòu); 設(shè)計應(yīng)具有一致性和集成性。整個系統(tǒng)應(yīng)具設(shè)計應(yīng)具有一致性和集成性。整個系統(tǒng)應(yīng)具有統(tǒng)一的風(fēng)格和格式,具有良好的接口。有統(tǒng)一的風(fēng)格和格式,具有良好的接口。 設(shè)計結(jié)果應(yīng)能

9、適應(yīng)未來可能的變更設(shè)計結(jié)果應(yīng)能適應(yīng)未來可能的變更; 設(shè)計不是編碼,編碼也不是設(shè)計。設(shè)計模型設(shè)計不是編碼,編碼也不是設(shè)計。設(shè)計模型的抽象級別比源代碼高。在編碼級別上唯一的抽象級別比源代碼高。在編碼級別上唯一的設(shè)計決策是補充一些實現(xiàn)細節(jié)。的設(shè)計決策是補充一些實現(xiàn)細節(jié)。軟件工程軟件工程11 11 設(shè)計應(yīng)具有容錯性和異常處理能力。對于異設(shè)計應(yīng)具有容錯性和異常處理能力。對于異常數(shù)據(jù)、事件、操作條件等能夠平滑處理。常數(shù)據(jù)、事件、操作條件等能夠平滑處理。 在建立設(shè)計方案時就應(yīng)能評估設(shè)計質(zhì)量,而在建立設(shè)計方案時就應(yīng)能評估設(shè)計質(zhì)量,而不是在系統(tǒng)編碼之后。不是在系統(tǒng)編碼之后。 應(yīng)堅持設(shè)計評審,減少概念性(語義性)

10、的應(yīng)堅持設(shè)計評審,減少概念性(語義性)的錯誤。錯誤。1)設(shè)計應(yīng)遵循設(shè)計應(yīng)遵循抽象化抽象化的原則,的原則,數(shù)據(jù)抽象數(shù)據(jù)抽象軟件設(shè)計的主要手段軟件設(shè)計的主要手段軟件工程軟件工程1212 過程抽象過程抽象 是指在軟件設(shè)計中將處理過程的是指在軟件設(shè)計中將處理過程的實現(xiàn)細節(jié)隱藏在過程抽象中,可以直接通過實現(xiàn)細節(jié)隱藏在過程抽象中,可以直接通過模塊接口使用這些處理操作模塊接口使用這些處理操作。 數(shù)據(jù)抽象數(shù)據(jù)抽象 是指采用抽象數(shù)據(jù)類型表示數(shù)據(jù),是指采用抽象數(shù)據(jù)類型表示數(shù)據(jù),實現(xiàn)數(shù)據(jù)封裝,使得使用者可通過接口使用實現(xiàn)數(shù)據(jù)封裝,使得使用者可通過接口使用數(shù)據(jù)而不必關(guān)心數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)。數(shù)據(jù)而不必關(guān)心數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)。2

11、)設(shè)計應(yīng)遵循設(shè)計應(yīng)遵循自頂向下自頂向下、逐步細化逐步細化的原則,建立一的原則,建立一個層次的結(jié)構(gòu)。個層次的結(jié)構(gòu)。 將軟件體系結(jié)構(gòu)自頂向下,對過程細節(jié)和數(shù)將軟件體系結(jié)構(gòu)自頂向下,對過程細節(jié)和數(shù)據(jù)細節(jié)從抽象到具體,逐層細化,直到用編據(jù)細節(jié)從抽象到具體,逐層細化,直到用編程語言的語句能夠?qū)崿F(xiàn)為止。程語言的語句能夠?qū)崿F(xiàn)為止。軟件工程軟件工程13133)設(shè)計應(yīng)當(dāng)遵循設(shè)計應(yīng)當(dāng)遵循模塊化模塊化的原則的原則。 每個模塊可獨立地開發(fā)、測試,最后組裝成每個模塊可獨立地開發(fā)、測試,最后組裝成完整的程序。完整的程序。 其出發(fā)點是本著將一種復(fù)雜問題其出發(fā)點是本著將一種復(fù)雜問題“分而治之分而治之”的原則。其目的是使程序的

12、結(jié)構(gòu)清晰,容易的原則。其目的是使程序的結(jié)構(gòu)清晰,容易閱讀、理解、測試、修改。閱讀、理解、測試、修改。 Meyer的的良好模塊設(shè)計方法的標(biāo)準(zhǔn)良好模塊設(shè)計方法的標(biāo)準(zhǔn)a) 模塊可分解性模塊可分解性 可將系統(tǒng)按問題子問題可將系統(tǒng)按問題子問題分解的原則分解成系統(tǒng)的模塊層次結(jié)構(gòu)分解的原則分解成系統(tǒng)的模塊層次結(jié)構(gòu);b) 模塊可組裝性模塊可組裝性 可利用已有的設(shè)計構(gòu)件組可利用已有的設(shè)計構(gòu)件組裝成新系統(tǒng),不必一切從頭開始。裝成新系統(tǒng),不必一切從頭開始。軟件工程軟件工程1414c) 模塊可理解性模塊可理解性 一個模塊可不參考其他模一個模塊可不參考其他模塊而被理解;塊而被理解;d) 模塊連續(xù)性模塊連續(xù)性 對軟件需求

13、的一些微小變更對軟件需求的一些微小變更只導(dǎo)致對某個模塊的修改而整個系統(tǒng)不只導(dǎo)致對某個模塊的修改而整個系統(tǒng)不用大動用大動;e) 模塊保護模塊保護 將模塊內(nèi)出現(xiàn)異常情況的影響將模塊內(nèi)出現(xiàn)異常情況的影響范圍限制在模塊內(nèi)部;范圍限制在模塊內(nèi)部;4)設(shè)計應(yīng)遵循設(shè)計應(yīng)遵循信息隱蔽信息隱蔽的原則的原則。 Patnas主張在開發(fā)時,將每個程序的成分隱主張在開發(fā)時,將每個程序的成分隱藏在模塊內(nèi),定義每一個模塊時盡可能少藏在模塊內(nèi),定義每一個模塊時盡可能少地顯露其內(nèi)部的處理。地顯露其內(nèi)部的處理。軟件工程軟件工程1515 每個模塊的實現(xiàn)細節(jié)對于其它模塊是隱蔽的,每個模塊的實現(xiàn)細節(jié)對于其它模塊是隱蔽的,將來修改軟件時

14、偶然引入錯誤所造成的影響將來修改軟件時偶然引入錯誤所造成的影響就可以局限在一個或幾個模塊內(nèi)部,不致波就可以局限在一個或幾個模塊內(nèi)部,不致波及到軟件的其它部分。及到軟件的其它部分。 在可預(yù)見將來可能修改的場合,信息隱蔽可在可預(yù)見將來可能修改的場合,信息隱蔽可以提高軟件的可修改性、可測試性和可移植以提高軟件的可修改性、可測試性和可移植性。性。軟件工程軟件工程16163.2 3.2 功能獨立性功能獨立性n功能獨立性是抽象、模塊化和信息隱蔽的直接功能獨立性是抽象、模塊化和信息隱蔽的直接產(chǎn)物。如果一個模塊能夠獨立于其他模塊被編產(chǎn)物。如果一個模塊能夠獨立于其他模塊被編程、測試和修改,則該模塊具有功能獨立性

15、。程、測試和修改,則該模塊具有功能獨立性。n1978年年Myers提出用兩個準(zhǔn)則來度量功能獨立提出用兩個準(zhǔn)則來度量功能獨立性,即模塊間的耦合和模塊的內(nèi)聚。性,即模塊間的耦合和模塊的內(nèi)聚。n內(nèi)聚性內(nèi)聚性:內(nèi)聚是一個模塊內(nèi)部各個元素彼此結(jié):內(nèi)聚是一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。合的緊密程度的度量。n耦合性耦合性: 耦合是模塊間互相連接的緊密程度的耦合是模塊間互相連接的緊密程度的度量,它取決于各個模塊之間接口的復(fù)雜度、度量,它取決于各個模塊之間接口的復(fù)雜度、調(diào)用方式以及哪些信息通過接口。調(diào)用方式以及哪些信息通過接口。軟件工程軟件工程1717非直接非直接 數(shù)據(jù)數(shù)據(jù) 標(biāo)記標(biāo)記 控制控制 外

16、部外部 公共公共 內(nèi)容內(nèi)容 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合 耦合耦合耦合性耦合性功能獨立性功能獨立性模塊間的耦合模塊間的耦合n模塊之間耦合性越強,功能獨立性越差,這樣模塊之間耦合性越強,功能獨立性越差,這樣形成的模塊結(jié)構(gòu)界面不好。形成的模塊結(jié)構(gòu)界面不好。軟件工程軟件工程1818非直接耦合非直接耦合(Nondirect(Nondirect Coupling) Coupling)n兩個模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完兩個模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的。全是通過主模塊的控制和調(diào)用來實現(xiàn)的。n非直接耦合的模塊獨立性最強。非直接

17、耦合的模塊獨立性最強。主模塊主模塊ABCEFGXYZ軟件工程軟件工程1919數(shù)據(jù)耦合數(shù)據(jù)耦合 (Data Coupling)(Data Coupling)n一個模塊訪問另一個模塊時,彼此之間是通過簡一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù)單數(shù)據(jù)參數(shù) (不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量部變量) 來交換輸入、輸出信息的。來交換輸入、輸出信息的。p0 (x0, y0) p1 (x1, y1)數(shù)據(jù)耦合數(shù)據(jù)耦合 LINE ( x0, y0, x1, y1)軟件工程軟件工程2020標(biāo)記耦合標(biāo)記耦合 (Stamp Coupling)(Stamp Coupling

18、)n一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。簡單變量。p0 (x0, y0) p1 (x1, y1)標(biāo)記標(biāo)記耦合耦合 LINE ( p0, p1)軟件工程軟件工程2121控制耦合控制耦合 (Control Coupling)(Control Coupling)n如果一個模塊通過如果一個模塊通過傳送開關(guān)、標(biāo)志、傳送開關(guān)、標(biāo)志、名字等控制參數(shù),名字等控制參數(shù),明顯地控制選擇另明顯地控制選擇另一模塊的功能,就一模塊的功能,就是控制耦合。是控制耦合。FlagFlag

19、f1f2fn軟件工程軟件工程2222外部耦合(外部耦合(External CouplingExternal Coupling)n一組模塊都訪問同一全局簡單變量而不是同一一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。局變量的信息,則稱之為外部耦合。公共耦合(公共耦合(Common CouplingCommon Coupling)n若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可

20、以是全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存境可以是全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。的公共覆蓋區(qū)等。軟件工程軟件工程2323n公共耦合的復(fù)雜程度隨耦合模塊的個數(shù)增加而公共耦合的復(fù)雜程度隨耦合模塊的個數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。公共耦合。common公共數(shù)據(jù)區(qū)公共數(shù)據(jù)區(qū)ABcommon公共數(shù)據(jù)區(qū)公共數(shù)據(jù)區(qū)AB松散的公共耦合松散的公共耦合緊密的公共耦合緊密的公共耦合軟件工程軟件工程2424n如果發(fā)生下列情形,模塊之間就是內(nèi)容耦合如果發(fā)生下列情

21、形,模塊之間就是內(nèi)容耦合: 一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù)一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù); 一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部部; 兩個模塊有一部分程序代碼重迭兩個模塊有一部分程序代碼重迭(只可能出只可能出現(xiàn)在匯編語言中現(xiàn)在匯編語言中); 一個模塊有多個入口。一個模塊有多個入口。內(nèi)容耦合內(nèi)容耦合 (Content Coupling)(Content Coupling)軟件工程軟件工程2525 c AB進入另一模塊內(nèi)部進入另一模塊內(nèi)部模塊代碼重疊模塊代碼重疊ABentry1 entry2 模塊多個入口模塊多個入口軟件工程軟件工程2626模塊內(nèi)聚

22、模塊內(nèi)聚巧合巧合 邏輯邏輯 時間時間 過程過程 通信通信 信息信息 功能功能內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚 內(nèi)聚內(nèi)聚內(nèi)聚性內(nèi)聚性功能獨立性功能獨立性n模塊內(nèi)聚性越強,功能獨立性越好,對于形成模塊內(nèi)聚性越強,功能獨立性越好,對于形成的模塊結(jié)構(gòu)有比較好的作用。的模塊結(jié)構(gòu)有比較好的作用。n要求模塊結(jié)構(gòu)達到要求模塊結(jié)構(gòu)達到高內(nèi)聚,低耦合高內(nèi)聚,低耦合。軟件工程軟件工程2727n一個模塊中各個部分都是完成某一具體功能必一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密

23、都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。塊。n功能內(nèi)聚模塊的功能獨立性最強。功能內(nèi)聚模塊的功能獨立性最強。功能內(nèi)聚功能內(nèi)聚 (Functional Cohesion)(Functional Cohesion)軟件工程軟件工程2828n這種模塊完成多個功能,各個功能相互獨立但這種模塊完成多個功能,各個功能相互獨立但都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。確定該執(zhí)行哪一個功能

24、。n由于這個模塊的所有功能都是基于同一個數(shù)據(jù)由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的模塊。模塊。n信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的隱蔽。組合,并且達到信息的隱蔽。信息內(nèi)聚信息內(nèi)聚 (Informational Cohesion)(Informational Cohesion)軟件工程軟件工程2929初始化初始化插入插入刪除刪除查找查找修改修改符符 號號 表表軟件工程軟件工程3030n如果一個模塊內(nèi)各功能部分都使用了相同的輸如果一個模塊內(nèi)各功能部分都

25、使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。據(jù)流圖來定義的。n模塊內(nèi)各個功能是緊密相連的。模塊內(nèi)各個功能是緊密相連的。通信內(nèi)聚通信內(nèi)聚 (Communication Cohesion)(Communication Cohesion)軟件工程軟件工程3131打印打印檢驗結(jié)檢驗結(jié)果果讀文件讀文件文件文件計算計算A計算計算B合并合并修改修改文件文件新文件新文件A結(jié)果結(jié)果B結(jié)果結(jié)果軟件工程軟件工程3232n使用流程圖做為工具設(shè)計程序時,如果流程圖使用流程圖做

26、為工具設(shè)計程序時,如果流程圖太大,可以把流程圖中的某一部分劃出組成模太大,可以把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。塊,就得到過程內(nèi)聚模塊。n例如,把流程圖中的循環(huán)部分、判定部分、計例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內(nèi)算部分分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。聚模塊。過程內(nèi)聚(過程內(nèi)聚(Procedural CohesionProcedural Cohesion)軟件工程軟件工程3333n時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個功能的執(zhí)行與時間有功能模塊,但模塊的各個

27、功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。行。n例如,初始化模塊和終止模塊就是時間內(nèi)聚模例如,初始化模塊和終止模塊就是時間內(nèi)聚模塊。塊。時間內(nèi)聚(時間內(nèi)聚(Classical CohesionClassical Cohesion)軟件工程軟件工程3434n這種模塊把幾種相關(guān)的功能組合在一起,每次這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。模塊應(yīng)執(zhí)行哪一種功能。寫一個記錄寫一個記錄讀一個記錄讀一個記錄判定判定調(diào)用模塊調(diào)用模塊被調(diào)用被調(diào)用模塊

28、模塊邏輯內(nèi)聚(邏輯內(nèi)聚(Logical CohesionLogical Cohesion)軟件工程軟件工程3535n當(dāng)幾個模塊內(nèi)正好有一段代碼是相同的,將它們當(dāng)幾個模塊內(nèi)正好有一段代碼是相同的,將它們抽取出來形成單獨的模塊,即巧合內(nèi)聚模塊。這抽取出來形成單獨的模塊,即巧合內(nèi)聚模塊。這種模塊沒有獨立功能,各部分之間沒有聯(lián)系,或種模塊沒有獨立功能,各部分之間沒有聯(lián)系,或聯(lián)系很松散。聯(lián)系很松散。巧合內(nèi)聚(巧合內(nèi)聚(Coincidental CohesionCoincidental Cohesion)ABCM STORE REC() TO N READ MASTER FILE ADD 1 TO x 軟

29、件工程軟件工程3636n結(jié)構(gòu)化設(shè)計(結(jié)構(gòu)化設(shè)計(structured design,SD)是一)是一種面向數(shù)據(jù)流的設(shè)計方法,它可以與種面向數(shù)據(jù)流的設(shè)計方法,它可以與SA方法方法銜接。銜接。n結(jié)構(gòu)化設(shè)計是基于模塊化、自頂向下細化、結(jié)構(gòu)化設(shè)計是基于模塊化、自頂向下細化、結(jié)構(gòu)化程序設(shè)計等程序設(shè)計技術(shù)基礎(chǔ)上發(fā)展結(jié)構(gòu)化程序設(shè)計等程序設(shè)計技術(shù)基礎(chǔ)上發(fā)展起來的?;舅枷胧菍⑾到y(tǒng)設(shè)計成由相對獨起來的。基本思想是將系統(tǒng)設(shè)計成由相對獨立、功能單一的模塊組成的結(jié)構(gòu)。立、功能單一的模塊組成的結(jié)構(gòu)。n該方法實施的要點是:該方法實施的要點是:1) 首先首先研究研究、分析和審查數(shù)據(jù)流圖分析和審查數(shù)據(jù)流圖。 從軟件從軟件3.

30、3 3.3 結(jié)構(gòu)化設(shè)計方法結(jié)構(gòu)化設(shè)計方法軟件工程軟件工程3737的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對于發(fā)現(xiàn)的問題及時解決。對于發(fā)現(xiàn)的問題及時解決。2) 然后然后根據(jù)數(shù)據(jù)流圖確定數(shù)據(jù)處理的類型根據(jù)數(shù)據(jù)流圖確定數(shù)據(jù)處理的類型。典型的類型有兩種:變換型和事務(wù)型。針典型的類型有兩種:變換型和事務(wù)型。針對兩種對兩種不同類型分別進行分析處理。不同類型分別進行分析處理。3) 由數(shù)據(jù)流圖推導(dǎo)由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖出系統(tǒng)的初始結(jié)構(gòu)圖。4) 利用一些啟發(fā)式原則利用一些啟發(fā)式原則改進系統(tǒng)初始結(jié)構(gòu)圖改進系統(tǒng)初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。直到得到符合要求的

31、結(jié)構(gòu)圖為止。5) 修改和補充數(shù)據(jù)字典。修改和補充數(shù)據(jù)字典。6) 制定制定測試計劃。測試計劃。軟件工程軟件工程3838在系統(tǒng)結(jié)構(gòu)圖中的模塊在系統(tǒng)結(jié)構(gòu)圖中的模塊n傳入模塊傳入模塊 從下屬模塊取得數(shù)據(jù),經(jīng)過某些從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理處理, 再將其傳送給上級模塊。它傳送的數(shù)據(jù)再將其傳送給上級模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。流叫做邏輯輸入數(shù)據(jù)流。n傳出模塊傳出模塊 從上級模塊獲得數(shù)據(jù),進行某些從上級模塊獲得數(shù)據(jù),進行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。據(jù)流叫做邏輯輸出數(shù)據(jù)流。n變換模塊變換模塊 它從上級模塊取得數(shù)據(jù),進

32、行特它從上級模塊取得數(shù)據(jù),進行特定的處理,轉(zhuǎn)換成其它形式定的處理,轉(zhuǎn)換成其它形式, 再傳送回上級模再傳送回上級模塊。塊。軟件工程軟件工程3939n協(xié)調(diào)模塊協(xié)調(diào)模塊 對所有下屬模塊進行協(xié)調(diào)和管理對所有下屬模塊進行協(xié)調(diào)和管理的模塊。的模塊。傳入模塊傳入模塊AA傳出模塊傳出模塊DD變換模塊變換模塊AB協(xié)調(diào)模塊協(xié)調(diào)模塊AABB軟件工程軟件工程4040系統(tǒng)結(jié)構(gòu)圖的基本符號系統(tǒng)結(jié)構(gòu)圖的基本符號模塊模塊調(diào)用調(diào)用數(shù)據(jù)數(shù)據(jù)控制信息控制信息轉(zhuǎn)接符號轉(zhuǎn)接符號系統(tǒng)結(jié)構(gòu)圖的基本符系統(tǒng)結(jié)構(gòu)圖的基本符號號選擇(判斷)選擇(判斷)重復(fù)重復(fù)軟件工程軟件工程4141模塊調(diào)用示例模塊調(diào)用示例(a) 調(diào)用調(diào)用(b) 判斷調(diào)用判斷調(diào)用

33、(c) 循環(huán)調(diào)用循環(huán)調(diào)用軟件工程軟件工程4242n數(shù)據(jù)數(shù)據(jù):模塊之間傳送的數(shù)據(jù)用:模塊之間傳送的數(shù)據(jù)用帶空心圓的箭頭帶空心圓的箭頭表示,并在旁邊標(biāo)上數(shù)據(jù)名。表示,并在旁邊標(biāo)上數(shù)據(jù)名。n控制信息控制信息:控制信息與數(shù)據(jù)的主要區(qū)別是前者:控制信息與數(shù)據(jù)的主要區(qū)別是前者只反映數(shù)據(jù)的某種狀態(tài)。只反映數(shù)據(jù)的某種狀態(tài)。模塊間的數(shù)據(jù)傳遞模塊間的數(shù)據(jù)傳遞AB(a)xyz查職工簡歷查職工簡歷讀人事文件讀人事文件(b)職工號職工號簡歷數(shù)據(jù)簡歷數(shù)據(jù)無此職工無此職工軟件工程軟件工程4343數(shù)據(jù)處理的類型數(shù)據(jù)處理的類型 n在需求分析階段,面向數(shù)據(jù)流的在需求分析階段,面向數(shù)據(jù)流的SA方法產(chǎn)生數(shù)方法產(chǎn)生數(shù)據(jù)流圖據(jù)流圖DFD

34、。n在軟件設(shè)計階段,面向數(shù)據(jù)流的在軟件設(shè)計階段,面向數(shù)據(jù)流的SD方法將方法將DFD轉(zhuǎn)換成程序結(jié)構(gòu)圖。轉(zhuǎn)換成程序結(jié)構(gòu)圖。n數(shù)據(jù)處理即為在數(shù)據(jù)處理即為在DFD中從系統(tǒng)的輸入數(shù)據(jù)流到中從系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流所經(jīng)歷的一連串連續(xù)變換。系統(tǒng)的輸出數(shù)據(jù)流所經(jīng)歷的一連串連續(xù)變換。n數(shù)據(jù)處理的類型分為變換流型與事務(wù)流型。數(shù)據(jù)處理的類型分為變換流型與事務(wù)流型。 軟件工程軟件工程4444變換流變換流 n數(shù)據(jù)沿著數(shù)據(jù)沿著輸入通路輸入通路進入系統(tǒng),經(jīng)過一系列數(shù)進入系統(tǒng),經(jīng)過一系列數(shù)據(jù)變換,將數(shù)據(jù)的外部形式轉(zhuǎn)換成對應(yīng)的內(nèi)據(jù)變換,將數(shù)據(jù)的外部形式轉(zhuǎn)換成對應(yīng)的內(nèi)部表示,然后通過部表示,然后通過變換中心變換中心(

35、也稱主加工)(也稱主加工)處理,再沿著處理,再沿著輸出通路輸出通路轉(zhuǎn)換成外部形式離開轉(zhuǎn)換成外部形式離開系統(tǒng)。具有這種特性的數(shù)據(jù)流稱為變換流。系統(tǒng)。具有這種特性的數(shù)據(jù)流稱為變換流。n變換流型變換流型DFD可以分成:可以分成: 輸入變換中心(主加工)輸出輸入變換中心(主加工)輸出 輸入數(shù)據(jù)輸入數(shù)據(jù)C變換數(shù)據(jù)變換數(shù)據(jù)CD輸出數(shù)據(jù)輸出數(shù)據(jù)D軟件工程軟件工程4545n相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換流型系統(tǒng)結(jié)構(gòu)圖由輸入、變換中心和輸出換流型系統(tǒng)結(jié)構(gòu)圖由輸入、變換中心和輸出等三部分組成。等三部分組成。軟件工程軟件工程4646事務(wù)事務(wù)流流 n數(shù)據(jù)沿著數(shù)據(jù)沿著輸入

36、通路輸入通路到達一個到達一個事務(wù)中心事務(wù)中心,事務(wù),事務(wù)中心根據(jù)輸入數(shù)據(jù)(即事務(wù))的類型在若干中心根據(jù)輸入數(shù)據(jù)(即事務(wù))的類型在若干個動作(稱為活動流)中選擇一個來執(zhí)行,個動作(稱為活動流)中選擇一個來執(zhí)行,這種數(shù)據(jù)流也稱為事務(wù)流。這種數(shù)據(jù)流也稱為事務(wù)流。n事務(wù)流有明顯的事務(wù)中心,各活動流以事務(wù)事務(wù)流有明顯的事務(wù)中心,各活動流以事務(wù)中心為起點呈輻射狀流出。中心為起點呈輻射狀流出。n在事務(wù)流型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按在事務(wù)流型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)的類型,選擇某一事務(wù)(活動所接受的事務(wù)的類型,選擇某一事務(wù)(活動流)處理模塊執(zhí)行。各事務(wù)處理模塊并列。流)處理模塊執(zhí)行。各事務(wù)處

37、理模塊并列。軟件工程軟件工程4747事務(wù)中心事務(wù)中心分派模塊分派模塊輸出結(jié)果輸出結(jié)果事務(wù)事務(wù)1輸入作業(yè)信息輸入作業(yè)信息事務(wù)事務(wù)2事務(wù)事務(wù)3事務(wù)事務(wù)4作業(yè)信息作業(yè)信息作業(yè)作業(yè)信息信息結(jié)果結(jié)果結(jié)果結(jié)果操作操作1操作操作2操作操作3操作操作4操作操作5操作操作6細節(jié)細節(jié)1細節(jié)細節(jié)2細節(jié)細節(jié)3細節(jié)細節(jié)4細節(jié)細節(jié)5細節(jié)細節(jié)6軟件工程軟件工程4848變換分析變換分析 n變換分析從變換流型的數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)變換分析從變換流型的數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)構(gòu)圖構(gòu)圖.n步驟步驟1. 重畫數(shù)據(jù)流圖;重畫數(shù)據(jù)流圖;2. 區(qū)分有效(邏輯)輸入、有效(邏輯)輸區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和變換中心部分;出和變換中心部

38、分;3. 進行一級分解,設(shè)計模塊結(jié)構(gòu)的頂層和第進行一級分解,設(shè)計模塊結(jié)構(gòu)的頂層和第一層模塊;一層模塊;4. 進行二級分解,設(shè)計輸入、輸出和中心變進行二級分解,設(shè)計輸入、輸出和中心變換換部分的中、下層模塊。部分的中、下層模塊。軟件工程軟件工程49491. 1. 重畫數(shù)據(jù)流圖(平鋪)重畫數(shù)據(jù)流圖(平鋪)n為了建立系統(tǒng)結(jié)構(gòu),將數(shù)據(jù)流圖平鋪開來,為了建立系統(tǒng)結(jié)構(gòu),將數(shù)據(jù)流圖平鋪開來,物理輸入畫在左側(cè),物理輸出畫在右側(cè)。物理輸入畫在左側(cè),物理輸出畫在右側(cè)。n如果一個外部實體既是物理輸入又是物理輸如果一個外部實體既是物理輸入又是物理輸出,則兩側(cè)都要畫出它。出,則兩側(cè)都要畫出它。ABBCEGGHDFCDEA

39、BCDEFGH物理輸入物理輸入物理輸出物理輸出軟件工程軟件工程50502. 2. 確定邏輯輸入、邏輯輸出確定邏輯輸入、邏輯輸出和變換中心部分和變換中心部分n變換中心是程序的核心功能,它的輸入是邏變換中心是程序的核心功能,它的輸入是邏輯輸入,它的輸出為邏輯輸出。輯輸入,它的輸出為邏輯輸出。變換中心變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸入物理輸出物理輸出邏輯輸入邏輯輸入邏輯輸出邏輯輸出軟件工程軟件工程51513. 3. 第一級分解:第一級分解:設(shè)計模塊結(jié)構(gòu)的頂層和第一層設(shè)計模塊結(jié)構(gòu)的頂層和第一層n頂層模塊:其功能就是整個系統(tǒng)的功能;頂層模塊:其功能就是整個系統(tǒng)的功能;n輸

40、入控制模塊:接收所有的輸入數(shù)據(jù);輸入控制模塊:接收所有的輸入數(shù)據(jù);n變換控制模塊:實現(xiàn)輸入到輸出的變換;變換控制模塊:實現(xiàn)輸入到輸出的變換;n輸出控制模塊:產(chǎn)生所有的輸出數(shù)據(jù)。輸出控制模塊:產(chǎn)生所有的輸出數(shù)據(jù)。頂層模塊頂層模塊變換控制變換控制輸出控制輸出控制輸入控制輸入控制軟件工程軟件工程5252變換中心變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸入物理輸出物理輸出邏輯輸入邏輯輸入邏輯輸出邏輯輸出主模塊主模塊C D、E輸入輸入C輸出輸出D輸出輸出ECCD,EDE邏輯輸入邏輯輸入變換中心變換中心邏輯輸出邏輯輸出軟件工程軟件工程53534. 4. 第二級分解:設(shè)計中、下層模塊第

41、二級分解:設(shè)計中、下層模塊輸入控制模塊的分解:從變換中心的邊界開輸入控制模塊的分解:從變換中心的邊界開始,沿著各輸入通路,把輸入通路上的每個始,沿著各輸入通路,把輸入通路上的每個加工映射成輸入控制模塊的一個低層模塊。加工映射成輸入控制模塊的一個低層模塊。輸出控制模塊的分解:從變換中心的邊界開輸出控制模塊的分解:從變換中心的邊界開始,沿著各輸出通路,把輸出通路上的每個始,沿著各輸出通路,把輸出通路上的每個加工映射成輸出控制模塊的一個低層模塊。加工映射成輸出控制模塊的一個低層模塊。變換控制模塊的分解:變換控制模塊通常沒變換控制模塊的分解:變換控制模塊通常沒有通用的分解方法,應(yīng)根據(jù)數(shù)據(jù)流圖中變換有通

42、用的分解方法,應(yīng)根據(jù)數(shù)據(jù)流圖中變換部分的實際情況進行設(shè)計。部分的實際情況進行設(shè)計。軟件工程軟件工程5454輸出輸出HG HABBCEGGHDFCD,EABCDEFGH物理輸入物理輸入物理輸出物理輸出主模塊主模塊CD,E輸入輸入C輸出輸出D輸出輸出ECCD,EDE輸入輸入BBBCBC輸入輸入AABABA輸出輸出GE G輸出輸出FDFDFFEGGGHH軟件工程軟件工程5555輸出輸出HG HABBCEGGHDFCD,EABCDEFGH物理輸入物理輸入物理輸出物理輸出主模塊主模塊CD,E輸入輸入C輸出輸出D輸出輸出ECCD,EDE輸入輸入BBBCBC輸入輸入AABABA輸出輸出GE G輸出輸出FDF

43、DFFEGGGHH軟件工程軟件工程5656變換分析練習(xí)-DFD練習(xí)1軟件工程軟件工程5757n畫出初始結(jié)構(gòu)圖軟件工程軟件工程58581格式格式檢查檢查3產(chǎn)生產(chǎn)生收據(jù)收據(jù)2計算計算匯費匯費4記賬記賬匯款單匯款單合格的合格的匯款單匯款單處理后的處理后的匯款單匯款單收據(jù)收據(jù)明細賬明細賬變換中變換中心心輸出輸出輸入輸入業(yè)務(wù)業(yè)務(wù)數(shù)據(jù)數(shù)據(jù)變換分析練習(xí)2-DFD軟件工程軟件工程5959變換分析練習(xí)1-轉(zhuǎn)換后的SC匯款處理系統(tǒng)匯款處理系統(tǒng)取得合格取得合格匯款單匯款單計算匯費計算匯費記賬記賬輸出處理后輸出處理后的匯款單的匯款單輸入輸入?yún)R款單匯款單格式檢查格式檢查產(chǎn)生收據(jù)產(chǎn)生收據(jù)打印收據(jù)打印收據(jù)合格的合格的匯款單

44、匯款單處理后的處理后的匯款單匯款單合格的合格的匯款單匯款單業(yè)務(wù)數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)處理后的處理后的匯款單匯款單匯款單匯款單合格的合格的匯款單匯款單匯款單匯款單處理后的處理后的匯款單匯款單收據(jù)收據(jù)收據(jù)收據(jù)業(yè)務(wù)數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)匯款處理系統(tǒng)匯款處理系統(tǒng)取得合格取得合格匯款單匯款單計算匯費計算匯費記賬記賬輸出處理后輸出處理后的匯款單的匯款單輸入輸入?yún)R款單匯款單格式檢查格式檢查產(chǎn)生收據(jù)產(chǎn)生收據(jù)打印收據(jù)打印收據(jù)合格的合格的匯款單匯款單處理后的處理后的匯款單匯款單合格的合格的匯款單匯款單業(yè)務(wù)數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)處理后的處理后的匯款單匯款單匯款單匯款單合格的合格的匯款單匯款單匯款單匯款單處理后的處理后的匯款單匯款單收據(jù)收據(jù)收據(jù)收

45、據(jù)業(yè)務(wù)數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)軟件工程軟件工程6060事務(wù)分析事務(wù)分析n事務(wù)分析是從事務(wù)流型數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)事務(wù)分析是從事務(wù)流型數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)構(gòu)圖。構(gòu)圖。n步驟:步驟:1. 確定事務(wù)中心和每條活動流的流特性確定事務(wù)中心和每條活動流的流特性 2. 將事務(wù)流型數(shù)據(jù)流圖映射成高層的系統(tǒng)結(jié)將事務(wù)流型數(shù)據(jù)流圖映射成高層的系統(tǒng)結(jié)構(gòu)構(gòu)3. 進一步分解進一步分解 軟件工程軟件工程61611. 1. 確定事務(wù)中心和各活動流的流特性確定事務(wù)中心和各活動流的流特性 n右圖為事務(wù)流型右圖為事務(wù)流型DFD的一般形式。的一般形式。n事務(wù)中心事務(wù)中心(圖中的(圖中的T):):位于活動流的起點,位于活動流的起點,活動流從該點成輻射

46、狀流出?;顒恿鲝脑擖c成輻射狀流出。n活動流:活動流:可為變換流可為變換流可為事務(wù)流可為事務(wù)流n事務(wù)流型的事務(wù)流型的DFD的組成:的組成:輸入流事務(wù)中心若干條活動流輸入流事務(wù)中心若干條活動流 T T輸入流輸入流事務(wù)流事務(wù)流活動流活動流軟件工程軟件工程6262n右圖為事務(wù)流型右圖為事務(wù)流型DFD的高層結(jié)構(gòu)形式。的高層結(jié)構(gòu)形式。n頂層模塊:頂層模塊:其功能就是整個系統(tǒng)的功能。其功能就是整個系統(tǒng)的功能。n接收模塊:接收模塊:接收輸入數(shù)據(jù)。接收輸入數(shù)據(jù)。n分派模塊:分派模塊:調(diào)度模塊,調(diào)度模塊,控制下層的所有活動模塊??刂葡聦拥乃谢顒幽K。n事務(wù)模塊:事務(wù)模塊:對應(yīng)活動流,對應(yīng)活動流,是該活動流映射成

47、的。是該活動流映射成的。 2. 2. 將事務(wù)流型將事務(wù)流型DFDDFD映射成映射成高層系統(tǒng)結(jié)構(gòu)高層系統(tǒng)結(jié)構(gòu)頂層模塊頂層模塊分派分派接收接收事務(wù)事務(wù)1 1事務(wù)事務(wù)2事務(wù)事務(wù)n軟件工程軟件工程63633. 3. 進一步分解進一步分解n接收模塊:接收模塊:類同于變換分析中輸入控制模塊的類同于變換分析中輸入控制模塊的分解。分解。n活動流模塊:活動流模塊:根據(jù)其流特性(變換流或事務(wù)流)根據(jù)其流特性(變換流或事務(wù)流)進一步采用變換分析或事務(wù)分析進行分解。進一步采用變換分析或事務(wù)分析進行分解。 軟件工程軟件工程6464事務(wù)分析舉例事務(wù)分析舉例-DFD-DFD要要求求類類型型處處理理圖圖書書管管理理要要求求無

48、無效效輸輸入入1 1. .1 1新新書書入入庫庫1 1. .2 2還還入入庫庫單單罰罰款款單單1 1. .5 5注注銷銷圖圖書書1 1. .3 3還還書書1 1. .4 4目目錄錄文文件件借借書書單單書書單單注注銷銷單單借借書書借借書書文文件件罰罰款款單單事事務(wù)務(wù)分分析析舉舉例例事事務(wù)務(wù)分分析析舉舉例例- - - -D DF FD DD DF FD D事事務(wù)務(wù)中中心心要要求求類類型型處處理理圖圖書書管管理理要要求求無無效效輸輸入入1 1. .1 1新新書書入入庫庫1 1. .2 2還還入入庫庫單單罰罰款款單單1 1. .5 5注注銷銷圖圖書書1 1. .3 3還還書書1 1. .4 4目目錄錄

49、文文件件借借書書單單書書單單注注銷銷單單借借書書借借書書文文件件罰罰款款單單事事務(wù)務(wù)分分析析舉舉例例事事務(wù)務(wù)分分析析舉舉例例- - - -D DF FD DD DF FD D事事務(wù)務(wù)中中心心軟件工程軟件工程6565事務(wù)分析舉例事務(wù)分析舉例- -轉(zhuǎn)換后的轉(zhuǎn)換后的SCSC圖書處理系統(tǒng)圖書處理系統(tǒng)取得圖書取得圖書處理要求處理要求修改目修改目錄文件錄文件操作層操作層細節(jié)層細節(jié)層新書入庫新書入庫注銷圖書注銷圖書借書借書還書還書打印打印罰款單罰款單修改借修改借書文件書文件圖書管圖書管理要求理要求入庫單入庫單借書單借書單還書單還書單注銷單注銷單圖書處理系統(tǒng)圖書處理系統(tǒng)取得圖書取得圖書處理要求處理要求修改目修

50、改目錄文件錄文件操作層操作層細節(jié)層細節(jié)層新書入庫新書入庫注銷圖書注銷圖書借書借書還書還書打印打印罰款單罰款單修改借修改借書文件書文件圖書管圖書管理要求理要求入庫單入庫單借書單借書單還書單還書單注銷單注銷單軟件工程軟件工程6666練習(xí)1n畫出初始結(jié)構(gòu)圖軟件工程軟件工程6767軟件工程軟件工程6868練習(xí)2n畫出初始結(jié)構(gòu)圖(變換型與事務(wù)型混合)軟件工程軟件工程6969軟件工程軟件工程7070模塊設(shè)計的原則模塊設(shè)計的原則n在選擇模塊設(shè)計的次序時,必須對一個模塊在選擇模塊設(shè)計的次序時,必須對一個模塊的全部直接下屬模塊都設(shè)計完成之后,才能的全部直接下屬模塊都設(shè)計完成之后,才能轉(zhuǎn)向另一個模塊的下層模塊的設(shè)

51、計。轉(zhuǎn)向另一個模塊的下層模塊的設(shè)計。n使用使用“黑盒黑盒”技術(shù)技術(shù): 在設(shè)計當(dāng)前模塊時,在設(shè)計當(dāng)前模塊時,先把先把該模塊的所有下層模塊定義成該模塊的所有下層模塊定義成“黑盒黑盒”,在,在設(shè)計中利用它們時暫不考慮其內(nèi)部結(jié)構(gòu)和實設(shè)計中利用它們時暫不考慮其內(nèi)部結(jié)構(gòu)和實現(xiàn)。在這一步定義好的現(xiàn)。在這一步定義好的“黑盒黑盒”,在下一步,在下一步就可以對它們進行設(shè)計和加工。最后,全部就可以對它們進行設(shè)計和加工。最后,全部“黑盒黑盒”的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。軟件工程軟件工程7171n在設(shè)計下層模塊時,應(yīng)考慮模塊的在設(shè)計下層模塊時,應(yīng)考慮模塊的耦合耦合和和內(nèi)內(nèi)聚聚問題,以提高初始結(jié)構(gòu)

52、圖質(zhì)量。問題,以提高初始結(jié)構(gòu)圖質(zhì)量。n模塊劃分時,一個模塊的直接下屬模塊一般模塊劃分時,一個模塊的直接下屬模塊一般在在 5 個左右。如果直接下屬模塊超過個左右。如果直接下屬模塊超過 10 個,個,可設(shè)立中間層次??稍O(shè)立中間層次。n如果出現(xiàn)以下情況,就停止模塊分解:如果出現(xiàn)以下情況,就停止模塊分解: 模塊不能再細分為明顯的子任務(wù);模塊不能再細分為明顯的子任務(wù); 分解成用戶提供的模塊或庫函數(shù);分解成用戶提供的模塊或庫函數(shù); 模塊接口是輸入輸出設(shè)備傳送的信息;模塊接口是輸入輸出設(shè)備傳送的信息; 模塊不宜再分解得過小。模塊不宜再分解得過小。軟件工程軟件工程7272n變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計的主要方法

53、。變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計的主要方法。n一般,一個大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和一般,一個大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進用以變換分析為主,事務(wù)分析為輔的方式進行軟件結(jié)構(gòu)設(shè)計。行軟件結(jié)構(gòu)設(shè)計。軟件工程軟件工程7373abdpqrsbac1d分派模塊分派模塊事務(wù)控制事務(wù)控制qrs接受通路接受通路p軟件工程軟件工程74741.模塊功能完善化模塊功能完善化 一個完整的模塊應(yīng)當(dāng)有以下幾部分:一個完整的模塊應(yīng)當(dāng)有以下幾部分: 執(zhí)行規(guī)定的功能的部分;執(zhí)行規(guī)定的功能的部分; 出錯處理的部分。當(dāng)模塊不

54、能完成規(guī)定的出錯處理的部分。當(dāng)模塊不能完成規(guī)定的功能時,必須回送出錯標(biāo)志,出現(xiàn)例外情功能時,必須回送出錯標(biāo)志,出現(xiàn)例外情況的原因。況的原因。 如果需要返回數(shù)據(jù)給它的調(diào)用者,在完成如果需要返回數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時,數(shù)據(jù)加工或結(jié)束時, 應(yīng)當(dāng)給它的調(diào)用者返應(yīng)當(dāng)給它的調(diào)用者返回一個狀態(tài)碼?;匾粋€狀態(tài)碼。改進系統(tǒng)結(jié)構(gòu)的啟發(fā)式原則改進系統(tǒng)結(jié)構(gòu)的啟發(fā)式原則軟件工程軟件工程75752.消除重復(fù)功能,改善軟件結(jié)構(gòu)消除重復(fù)功能,改善軟件結(jié)構(gòu) 完全相似完全相似:在結(jié)構(gòu)上完全相似,可能只是:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以采取完全在數(shù)據(jù)類型上不一致。此時可以采取完全合并的方法

55、。合并的方法。 局部相似局部相似:找出其相同部分,分離出去,:找出其相同部分,分離出去,重新定義成一個獨立的下一層模塊。還可重新定義成一個獨立的下一層模塊。還可以與它的上級模塊合并。以與它的上級模塊合并。軟件工程軟件工程7676R1R2XYR1R2XYR1+R2XYX+R1Y+R2R1Y+R2X不可取不可取開關(guān)太多開關(guān)太多軟件工程軟件工程77773.模塊的作用范圍應(yīng)在控制范圍之內(nèi)模塊的作用范圍應(yīng)在控制范圍之內(nèi) 模塊的模塊的控制范圍控制范圍包括它本身及其所有的從包括它本身及其所有的從屬模塊。屬模塊。 模塊的模塊的作用范圍作用范圍是指模塊內(nèi)一個判定的作是指模塊內(nèi)一個判定的作用范圍,凡是受這個判定影

56、響的所有模塊用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。都屬于這個判定的作用范圍。 如果一個判定的作用范圍包含在這個判定如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。簡單的,否則,它的結(jié)構(gòu)是不簡單的。軟件工程軟件工程7878軟件工程軟件工程79794.盡可能減少高扇出結(jié)構(gòu)盡可能減少高扇出結(jié)構(gòu)如果一個模塊的扇出數(shù)過大,就意味著該模如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。塊。應(yīng)

57、當(dāng)適當(dāng)增加中間層次的控制模塊。PPP1P2軟件工程軟件工程80805.避免或減少使用病態(tài)聯(lián)接避免或減少使用病態(tài)聯(lián)接a. 直接病態(tài)聯(lián)接直接病態(tài)聯(lián)接b. 公共數(shù)據(jù)域病態(tài)聯(lián)接公共數(shù)據(jù)域病態(tài)聯(lián)接c.通信通信模塊病態(tài)聯(lián)接模塊病態(tài)聯(lián)接ABcommonABTABLEITABABxxxx(a) 直接病態(tài)聯(lián)接直接病態(tài)聯(lián)接(b) 公共數(shù)據(jù)域公共數(shù)據(jù)域 病態(tài)聯(lián)接病態(tài)聯(lián)接(c) 通信模塊通信模塊 病態(tài)聯(lián)接病態(tài)聯(lián)接軟件工程軟件工程81816.模塊的大小要適中。模塊的大小要適中。7.設(shè)計功能可預(yù)測的模塊設(shè)計功能可預(yù)測的模塊 一個功能可預(yù)測的模塊一個功能可預(yù)測的模塊, 不論內(nèi)部處理細節(jié)如不論內(nèi)部處理細節(jié)如何,但對相同的輸入

58、數(shù)據(jù),總能產(chǎn)生同樣的何,但對相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模塊內(nèi)部蘊藏有一些特殊結(jié)果。但是,如果模塊內(nèi)部蘊藏有一些特殊的鮮為人知的功能時,這個模塊就可能是不的鮮為人知的功能時,這個模塊就可能是不可預(yù)測的。對于這種模塊,如果調(diào)用者不小可預(yù)測的。對于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測。心使用,其結(jié)果將不可預(yù)測。軟件工程軟件工程8282保存當(dāng)前標(biāo)記保存當(dāng)前標(biāo)記恢復(fù)恢復(fù)“以前以前”標(biāo)標(biāo)記記標(biāo)記?標(biāo)記?標(biāo)記?標(biāo)記?功能不可預(yù)測的模塊功能不可預(yù)測的模塊軟件工程軟件工程8383n在過程設(shè)計階段,要決定各個模塊的實現(xiàn)算法,在過程設(shè)計階段,要決定各個模塊的實現(xiàn)算法,并精確地表達這些

59、算法。并精確地表達這些算法。n對每個模塊規(guī)定的功能以及算法的設(shè)計,給出對每個模塊規(guī)定的功能以及算法的設(shè)計,給出適當(dāng)?shù)乃惴枋觯哼m當(dāng)?shù)乃惴枋觯簐圖形工具:程序流程圖,圖形工具:程序流程圖, N-S ,PAD, HIPOv表格工具:判定表表格工具:判定表v語言工具:語言工具: PDL , HIPO3.5 3.5 過程設(shè)計(詳細設(shè)計)過程設(shè)計(詳細設(shè)計)軟件工程軟件工程8484程序流程圖程序流程圖ABABPA1P=1A2=2An=nTSPFFSPT順序型順序型選擇型選擇型先判斷先判斷重復(fù)型重復(fù)型后判斷后判斷重復(fù)型重復(fù)型多分支選擇型多分支選擇型軟件工程軟件工程8585gabfx1x4x5x6x2x3

60、入口入口hijcde出口出口流程圖示例流程圖示例FFFFFTTTTTswitchdo-whiledo-whilewhile-do=1=2=3軟件工程軟件工程8686N-S N-S 圖圖ABPFTABPFTAwhile-do PAdo-while PAP= 1 = 2 = nA1 A2 An順序型順序型選擇型選擇型(1)選擇型選擇型(2)先判斷重復(fù)型先判斷重復(fù)型后判斷重復(fù)型后判斷重復(fù)型多分支選擇型多分支選擇型軟件工程軟件工程8787N-SN-S圖(盒圖)示例圖(盒圖)示例do-while x6abx1TTFFx2x4f=1=2=3gido-while x5hdec while-do x6j軟件工

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論