第6章信息系統(tǒng)的總體設(shè)計(jì)課件_第1頁(yè)
第6章信息系統(tǒng)的總體設(shè)計(jì)課件_第2頁(yè)
第6章信息系統(tǒng)的總體設(shè)計(jì)課件_第3頁(yè)
第6章信息系統(tǒng)的總體設(shè)計(jì)課件_第4頁(yè)
第6章信息系統(tǒng)的總體設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩60頁(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、信息系統(tǒng)分析與設(shè)計(jì)1教學(xué)內(nèi)容教學(xué)內(nèi)容 系統(tǒng)設(shè)計(jì)的基本原理包括模塊化設(shè)計(jì)原理、抽象系統(tǒng)設(shè)計(jì)的基本原理包括模塊化設(shè)計(jì)原理、抽象原理、信息隱蔽和局部化原理、逐步求精原理、模塊原理、信息隱蔽和局部化原理、逐步求精原理、模塊獨(dú)立性原理;系統(tǒng)設(shè)計(jì)的優(yōu)化規(guī)則;總體設(shè)計(jì)的目的、獨(dú)立性原理;系統(tǒng)設(shè)計(jì)的優(yōu)化規(guī)則;總體設(shè)計(jì)的目的、任務(wù)、文檔、評(píng)審以及圖形工具;面向數(shù)據(jù)流的總體任務(wù)、文檔、評(píng)審以及圖形工具;面向數(shù)據(jù)流的總體設(shè)計(jì)方法設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)方法的過(guò)程。結(jié)構(gòu)化設(shè)計(jì)方法的過(guò)程。教學(xué)要求教學(xué)要求 1 1熟練掌握:模塊獨(dú)立性原理的衡量標(biāo)準(zhǔn):內(nèi)聚熟練掌握:模塊獨(dú)立性原理的衡量標(biāo)準(zhǔn):內(nèi)聚和耦合;系統(tǒng)設(shè)計(jì)的優(yōu)化規(guī)則;結(jié)構(gòu)化

2、設(shè)計(jì)方法中的和耦合;系統(tǒng)設(shè)計(jì)的優(yōu)化規(guī)則;結(jié)構(gòu)化設(shè)計(jì)方法中的變換分析過(guò)程。變換分析過(guò)程。 2 2一般掌握:模塊化設(shè)計(jì)原理、逐步求精原理;一般掌握:模塊化設(shè)計(jì)原理、逐步求精原理;總體設(shè)計(jì)的目的、任務(wù)以及圖形工具;結(jié)構(gòu)化設(shè)計(jì)方總體設(shè)計(jì)的目的、任務(wù)以及圖形工具;結(jié)構(gòu)化設(shè)計(jì)方法中的事務(wù)分析及混合結(jié)構(gòu)分析過(guò)程。法中的事務(wù)分析及混合結(jié)構(gòu)分析過(guò)程。 3 3了解:抽象原理、信息隱蔽和局部化原理;總了解:抽象原理、信息隱蔽和局部化原理;總體設(shè)計(jì)的文檔和評(píng)審。體設(shè)計(jì)的文檔和評(píng)審。信息系統(tǒng)分析與設(shè)計(jì)2 6.1 系統(tǒng)設(shè)計(jì)的基本原理和優(yōu)化規(guī)則系統(tǒng)設(shè)計(jì)的基本原理和優(yōu)化規(guī)則 6.1.1 系統(tǒng)設(shè)計(jì)的基本原理系統(tǒng)設(shè)計(jì)的基本原理

3、在系統(tǒng)設(shè)計(jì)過(guò)程中應(yīng)該遵循一些基本原理,包括:在系統(tǒng)設(shè)計(jì)過(guò)程中應(yīng)該遵循一些基本原理,包括:模塊化設(shè)計(jì)原理、抽象原理、模塊化設(shè)計(jì)原理、抽象原理、信息隱蔽和局部化原理信息隱蔽和局部化原理、逐步求精原理、模塊獨(dú)立性原理等。逐步求精原理、模塊獨(dú)立性原理等。 1模塊化設(shè)計(jì)原理模塊化設(shè)計(jì)原理 所謂模塊是指具有相對(duì)獨(dú)立性的,由數(shù)據(jù)說(shuō)明、所謂模塊是指具有相對(duì)獨(dú)立性的,由數(shù)據(jù)說(shuō)明、執(zhí)行語(yǔ)句等程序?qū)ο髽?gòu)成的集合。程序中的每個(gè)模塊執(zhí)行語(yǔ)句等程序?qū)ο髽?gòu)成的集合。程序中的每個(gè)模塊都需要單獨(dú)命名,通過(guò)名字可實(shí)現(xiàn)對(duì)指定模塊的訪(fǎng)問(wèn)。都需要單獨(dú)命名,通過(guò)名字可實(shí)現(xiàn)對(duì)指定模塊的訪(fǎng)問(wèn)。 模塊化是指將整個(gè)程序劃分為若干個(gè)模塊,每個(gè)模塊

4、化是指將整個(gè)程序劃分為若干個(gè)模塊,每個(gè)模塊用于實(shí)現(xiàn)一個(gè)特定的功能。劃分模塊對(duì)于解決大模塊用于實(shí)現(xiàn)一個(gè)特定的功能。劃分模塊對(duì)于解決大型復(fù)雜的問(wèn)題是非常必要的,可以大大降低解決問(wèn)題型復(fù)雜的問(wèn)題是非常必要的,可以大大降低解決問(wèn)題的難度。的難度。 信息系統(tǒng)分析與設(shè)計(jì)3 為了說(shuō)明這一點(diǎn),可對(duì)問(wèn)題復(fù)雜性、開(kāi)發(fā)工作量和模塊數(shù)之間的關(guān)系為了說(shuō)明這一點(diǎn),可對(duì)問(wèn)題復(fù)雜性、開(kāi)發(fā)工作量和模塊數(shù)之間的關(guān)系進(jìn)行以下推理。首先,設(shè)進(jìn)行以下推理。首先,設(shè)C(x)為問(wèn)題為問(wèn)題x所對(duì)應(yīng)的復(fù)雜度函數(shù),所對(duì)應(yīng)的復(fù)雜度函數(shù),E(x)為解決問(wèn)為解決問(wèn)題題x所需要的工作量函數(shù)。對(duì)于兩個(gè)問(wèn)題所需要的工作量函數(shù)。對(duì)于兩個(gè)問(wèn)題P1和和P2,如果

5、:,如果: C(P1) C(P2) 即問(wèn)題即問(wèn)題P1的復(fù)雜度比的復(fù)雜度比P2高,則顯然有:高,則顯然有: E(P1) E(P2) 即解決問(wèn)題即解決問(wèn)題P1比比P2所需的工作量大。所需的工作量大。 在人們解決問(wèn)題的過(guò)程中,發(fā)現(xiàn)存在有另一個(gè)有趣的規(guī)律:在人們解決問(wèn)題的過(guò)程中,發(fā)現(xiàn)存在有另一個(gè)有趣的規(guī)律: C(P1+P2) C(P1)+C(P2) 即解決由多個(gè)問(wèn)題復(fù)合而成的大問(wèn)題的復(fù)即解決由多個(gè)問(wèn)題復(fù)合而成的大問(wèn)題的復(fù)雜度大于單獨(dú)解決各個(gè)問(wèn)題的復(fù)雜度之和。也就是說(shuō),對(duì)于一個(gè)復(fù)雜問(wèn)題,雜度大于單獨(dú)解決各個(gè)問(wèn)題的復(fù)雜度之和。也就是說(shuō),對(duì)于一個(gè)復(fù)雜問(wèn)題,將其分解成多個(gè)小問(wèn)題來(lái)分別解決比較容易。由此可以推出

6、:將其分解成多個(gè)小問(wèn)題來(lái)分別解決比較容易。由此可以推出: E(P1+P2) E(P1)+E(P2) 即將復(fù)雜問(wèn)題分解成若干個(gè)小問(wèn)題,各個(gè)即將復(fù)雜問(wèn)題分解成若干個(gè)小問(wèn)題,各個(gè)擊破,所需要的工作量小于直接解決復(fù)雜問(wèn)題所需的工作量。擊破,所需要的工作量小于直接解決復(fù)雜問(wèn)題所需的工作量。 根據(jù)上面的推理,可以得到這樣一個(gè)結(jié)論:模塊化可以降低解決問(wèn)題根據(jù)上面的推理,可以得到這樣一個(gè)結(jié)論:模塊化可以降低解決問(wèn)題的復(fù)雜度,從而降低系統(tǒng)開(kāi)發(fā)的工作量。的復(fù)雜度,從而降低系統(tǒng)開(kāi)發(fā)的工作量。 信息系統(tǒng)分析與設(shè)計(jì)4 但是不是模塊劃分得越多越好呢?雖然增加程序中的模塊數(shù)可以但是不是模塊劃分得越多越好呢?雖然增加程序中的

7、模塊數(shù)可以降低開(kāi)發(fā)每個(gè)模塊的工作量,但同時(shí)卻增加了設(shè)計(jì)模塊接口的工作量。降低開(kāi)發(fā)每個(gè)模塊的工作量,但同時(shí)卻增加了設(shè)計(jì)模塊接口的工作量。如圖如圖6-1所示表達(dá)了模塊數(shù)與系統(tǒng)開(kāi)發(fā)成本之間的關(guān)系,可以看出當(dāng)劃所示表達(dá)了模塊數(shù)與系統(tǒng)開(kāi)發(fā)成本之間的關(guān)系,可以看出當(dāng)劃分的模塊數(shù)處于最小成本區(qū)時(shí),開(kāi)發(fā)系統(tǒng)的總成本最低。分的模塊數(shù)處于最小成本區(qū)時(shí),開(kāi)發(fā)系統(tǒng)的總成本最低。雖然目前還雖然目前還不能精確地算出不能精確地算出M M的數(shù)值,但是在考慮程序模塊化的時(shí)候,總成本曲的數(shù)值,但是在考慮程序模塊化的時(shí)候,總成本曲線(xiàn)確實(shí)是有用的指南。下面即將介紹的模塊獨(dú)立性原理和啟發(fā)規(guī)則,線(xiàn)確實(shí)是有用的指南。下面即將介紹的模塊獨(dú)立

8、性原理和啟發(fā)規(guī)則,可以在一定程度上幫助決定合適的模塊數(shù)目??梢栽谝欢ǔ潭壬蠋椭鷽Q定合適的模塊數(shù)目。圖圖6-1 模塊數(shù)與系統(tǒng)開(kāi)發(fā)成本模塊數(shù)與系統(tǒng)開(kāi)發(fā)成本 信息系統(tǒng)分析與設(shè)計(jì)5 采用模塊化設(shè)計(jì)原理可以帶來(lái)以下好處。采用模塊化設(shè)計(jì)原理可以帶來(lái)以下好處。 (1)模塊化使系統(tǒng)結(jié)構(gòu)清晰,容易設(shè)計(jì)也容易閱讀)模塊化使系統(tǒng)結(jié)構(gòu)清晰,容易設(shè)計(jì)也容易閱讀和理解。和理解。 (2)程序錯(cuò)誤通常局限在有關(guān)的模塊及它們之間的)程序錯(cuò)誤通常局限在有關(guān)的模塊及它們之間的接口中,所以模塊化能使系統(tǒng)容易測(cè)試和調(diào)試,從而接口中,所以模塊化能使系統(tǒng)容易測(cè)試和調(diào)試,從而有助于提高系統(tǒng)的可靠性。有助于提高系統(tǒng)的可靠性。 (3)系統(tǒng)的變動(dòng)

9、往往只涉及少數(shù)幾個(gè)模塊,所以模)系統(tǒng)的變動(dòng)往往只涉及少數(shù)幾個(gè)模塊,所以模塊化還能夠提高系統(tǒng)的可修改性。塊化還能夠提高系統(tǒng)的可修改性。 (4)模塊化使得一個(gè)復(fù)雜的大型程序可以由許多程)模塊化使得一個(gè)復(fù)雜的大型程序可以由許多程序員分工編寫(xiě),并且可以進(jìn)一步分配技術(shù)熟練的程序序員分工編寫(xiě),并且可以進(jìn)一步分配技術(shù)熟練的程序員編寫(xiě)困難的模塊,有助于系統(tǒng)開(kāi)發(fā)工程的組織管理。員編寫(xiě)困難的模塊,有助于系統(tǒng)開(kāi)發(fā)工程的組織管理。 (5)模塊化還有利于提高程序代碼的可重用性。)模塊化還有利于提高程序代碼的可重用性。 信息系統(tǒng)分析與設(shè)計(jì)6 2抽象原理抽象原理 抽象是人類(lèi)在解決復(fù)雜問(wèn)題時(shí)經(jīng)常采用的一種思維抽象是人類(lèi)在解決

10、復(fù)雜問(wèn)題時(shí)經(jīng)常采用的一種思維方式,它是指將現(xiàn)實(shí)世界中具有共性的一類(lèi)事物的相似方式,它是指將現(xiàn)實(shí)世界中具有共性的一類(lèi)事物的相似的、本質(zhì)的方面集中概括起來(lái),而暫時(shí)忽略它們之間的的、本質(zhì)的方面集中概括起來(lái),而暫時(shí)忽略它們之間的細(xì)節(jié)差異。在系統(tǒng)開(kāi)發(fā)中運(yùn)用抽象的概念,可以將復(fù)雜細(xì)節(jié)差異。在系統(tǒng)開(kāi)發(fā)中運(yùn)用抽象的概念,可以將復(fù)雜問(wèn)題的求解過(guò)程分層,在不同的抽象層上實(shí)現(xiàn)難度的分問(wèn)題的求解過(guò)程分層,在不同的抽象層上實(shí)現(xiàn)難度的分解。在抽象級(jí)別較高的層次上,可以將瑣碎的細(xì)節(jié)信息解。在抽象級(jí)別較高的層次上,可以將瑣碎的細(xì)節(jié)信息暫時(shí)隱藏起來(lái),以利于解決系統(tǒng)中的全局性的問(wèn)題。暫時(shí)隱藏起來(lái),以利于解決系統(tǒng)中的全局性的問(wèn)題。

11、 結(jié)構(gòu)化程序設(shè)計(jì)中自頂向下、逐步求精的模塊劃分結(jié)構(gòu)化程序設(shè)計(jì)中自頂向下、逐步求精的模塊劃分思想正是人類(lèi)思維中運(yùn)用抽象方法解決復(fù)雜問(wèn)題的體現(xiàn)。思想正是人類(lèi)思維中運(yùn)用抽象方法解決復(fù)雜問(wèn)題的體現(xiàn)。系統(tǒng)結(jié)構(gòu)中頂層的模塊抽象級(jí)別最高,控制并協(xié)調(diào)系統(tǒng)系統(tǒng)結(jié)構(gòu)中頂層的模塊抽象級(jí)別最高,控制并協(xié)調(diào)系統(tǒng)的主要功能且影響全局;系統(tǒng)結(jié)構(gòu)中位于底層的模塊抽的主要功能且影響全局;系統(tǒng)結(jié)構(gòu)中位于底層的模塊抽象級(jí)別最低,具體實(shí)現(xiàn)數(shù)據(jù)的處理過(guò)程。采用自頂向下、象級(jí)別最低,具體實(shí)現(xiàn)數(shù)據(jù)的處理過(guò)程。采用自頂向下、由抽象到具體的思維方式,不但降低了系統(tǒng)開(kāi)發(fā)中每個(gè)由抽象到具體的思維方式,不但降低了系統(tǒng)開(kāi)發(fā)中每個(gè)階段的工作難度,簡(jiǎn)化了

12、系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,還有階段的工作難度,簡(jiǎn)化了系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,還有助于提高系統(tǒng)的可讀性、可測(cè)試性和可維護(hù)性。此外,助于提高系統(tǒng)的可讀性、可測(cè)試性和可維護(hù)性。此外,在程序設(shè)計(jì)中運(yùn)用抽象的方法還能夠提高代碼的可重用在程序設(shè)計(jì)中運(yùn)用抽象的方法還能夠提高代碼的可重用性。性。 信息系統(tǒng)分析與設(shè)計(jì)7 3信息隱蔽和局部化原理信息隱蔽和局部化原理 應(yīng)用模塊化設(shè)計(jì)原理時(shí),自然會(huì)產(chǎn)生的一個(gè)問(wèn)題是:應(yīng)用模塊化設(shè)計(jì)原理時(shí),自然會(huì)產(chǎn)生的一個(gè)問(wèn)題是:“為了得到最好的一組模塊,應(yīng)該怎樣分解系統(tǒng)呢?為了得到最好的一組模塊,應(yīng)該怎樣分解系統(tǒng)呢?”信息隱蔽原理指出:應(yīng)該這樣設(shè)計(jì)和確定模塊,使得一信息隱蔽原理指出:應(yīng)該這樣

13、設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息個(gè)模塊內(nèi)包含的信息(過(guò)程和數(shù)據(jù)過(guò)程和數(shù)據(jù))對(duì)于不需要這些信息的對(duì)于不需要這些信息的模塊來(lái)說(shuō),是不能訪(fǎng)問(wèn)的。這一原理是由模塊來(lái)說(shuō),是不能訪(fǎng)問(wèn)的。這一原理是由D.L.Parnas在在1972年提出的,也就是說(shuō)有效的模塊化可以通過(guò)一組獨(dú)年提出的,也就是說(shuō)有效的模塊化可以通過(guò)一組獨(dú)立的模塊來(lái)實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些立的模塊來(lái)實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些為了完成系統(tǒng)功能而必須交換的信息。這一指導(dǎo)思想的為了完成系統(tǒng)功能而必須交換的信息。這一指導(dǎo)思想的目的是為了提高模塊的獨(dú)立性,即當(dāng)修改或維護(hù)模塊時(shí)目的是為了提高模塊的獨(dú)立性,即當(dāng)修改或維護(hù)模塊

14、時(shí)減少把一個(gè)模塊的錯(cuò)誤擴(kuò)散到其他模塊中去的機(jī)會(huì)。因減少把一個(gè)模塊的錯(cuò)誤擴(kuò)散到其他模塊中去的機(jī)會(huì)。因此,信息隱蔽簡(jiǎn)化了系統(tǒng)結(jié)構(gòu)的復(fù)雜度,提供了程序模此,信息隱蔽簡(jiǎn)化了系統(tǒng)結(jié)構(gòu)的復(fù)雜度,提供了程序模塊設(shè)計(jì)標(biāo)準(zhǔn)化的可能性。塊設(shè)計(jì)標(biāo)準(zhǔn)化的可能性。 局部化的概念和信息隱蔽概念密切相關(guān)。局部化是局部化的概念和信息隱蔽概念密切相關(guān)。局部化是指把一些關(guān)系密切的系統(tǒng)元素物理地放的比較近,嚴(yán)格指把一些關(guān)系密切的系統(tǒng)元素物理地放的比較近,嚴(yán)格控制數(shù)據(jù)對(duì)象可以訪(fǎng)問(wèn)的范圍。在模塊中使用局部數(shù)據(jù)控制數(shù)據(jù)對(duì)象可以訪(fǎng)問(wèn)的范圍。在模塊中使用局部數(shù)據(jù)元素就是局部化的一個(gè)例子。顯然,局部化有助于實(shí)現(xiàn)元素就是局部化的一個(gè)例子。顯然,

15、局部化有助于實(shí)現(xiàn)信息隱蔽。信息隱蔽。 信息系統(tǒng)分析與設(shè)計(jì)8 4逐步求精原理逐步求精原理 逐步求精是人類(lèi)解決復(fù)雜問(wèn)題時(shí)采用的基本方法,逐步求精是人類(lèi)解決復(fù)雜問(wèn)題時(shí)采用的基本方法,也是許多軟件工程技術(shù)(例如,規(guī)格說(shuō)明技術(shù),設(shè)計(jì)和也是許多軟件工程技術(shù)(例如,規(guī)格說(shuō)明技術(shù),設(shè)計(jì)和實(shí)現(xiàn)技術(shù))的基礎(chǔ)。可以把逐步求精定義為:實(shí)現(xiàn)技術(shù))的基礎(chǔ)。可以把逐步求精定義為:“為了能為了能集中精力解決主要問(wèn)題而盡量推遲對(duì)問(wèn)題細(xì)節(jié)的考慮。集中精力解決主要問(wèn)題而盡量推遲對(duì)問(wèn)題細(xì)節(jié)的考慮?!?逐步求精之所以如此重要,是因?yàn)槿祟?lèi)的認(rèn)知過(guò)程逐步求精之所以如此重要,是因?yàn)槿祟?lèi)的認(rèn)知過(guò)程遵守遵守Miller法則:一個(gè)人在任何時(shí)候都只

16、能把注意力集中法則:一個(gè)人在任何時(shí)候都只能把注意力集中在(在(72)個(gè)知識(shí)塊上。但是,在開(kāi)發(fā)系統(tǒng)的過(guò)程中,)個(gè)知識(shí)塊上。但是,在開(kāi)發(fā)系統(tǒng)的過(guò)程中,軟件工程師在一段時(shí)間內(nèi)需要考慮的知識(shí)塊數(shù)遠(yuǎn)遠(yuǎn)多于軟件工程師在一段時(shí)間內(nèi)需要考慮的知識(shí)塊數(shù)遠(yuǎn)遠(yuǎn)多于7。例如,一個(gè)程序通常不止使用例如,一個(gè)程序通常不止使用7個(gè)數(shù)據(jù),一個(gè)用戶(hù)也往往個(gè)數(shù)據(jù),一個(gè)用戶(hù)也往往有不止有不止7個(gè)方面的需求。逐步求精方法的強(qiáng)大作用就在于,個(gè)方面的需求。逐步求精方法的強(qiáng)大作用就在于,它能幫助軟件工程師把精力集中在與當(dāng)前開(kāi)發(fā)階段最相它能幫助軟件工程師把精力集中在與當(dāng)前開(kāi)發(fā)階段最相關(guān)的那些方面上,而忽略那些對(duì)整體解決方案來(lái)說(shuō)雖然關(guān)的那些方

17、面上,而忽略那些對(duì)整體解決方案來(lái)說(shuō)雖然是必要的,然而目前還不需要考慮的細(xì)節(jié),這些細(xì)節(jié)將是必要的,然而目前還不需要考慮的細(xì)節(jié),這些細(xì)節(jié)將留到以后再考慮。留到以后再考慮。Miller法則是人類(lèi)智力的基本局限,我法則是人類(lèi)智力的基本局限,我們不可能戰(zhàn)勝自己的自然本性,只能接受這個(gè)事實(shí),承們不可能戰(zhàn)勝自己的自然本性,只能接受這個(gè)事實(shí),承認(rèn)自身的局限性,并在這個(gè)前提下盡我們的最大努力工認(rèn)自身的局限性,并在這個(gè)前提下盡我們的最大努力工作。作。 信息系統(tǒng)分析與設(shè)計(jì)9 5模塊獨(dú)立性原理模塊獨(dú)立性原理 模塊獨(dú)立性概括了把系統(tǒng)劃分為模塊時(shí)要遵守的模塊獨(dú)立性概括了把系統(tǒng)劃分為模塊時(shí)要遵守的準(zhǔn)則,也是判斷模塊構(gòu)造是不

18、是合理的標(biāo)準(zhǔn)。模塊獨(dú)準(zhǔn)則,也是判斷模塊構(gòu)造是不是合理的標(biāo)準(zhǔn)。模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。 模塊獨(dú)立性可以從兩個(gè)方面來(lái)衡量:模塊本身的模塊獨(dú)立性可以從兩個(gè)方面來(lái)衡量:模塊本身的內(nèi)聚和模塊之間的耦合。前者反映的是模塊內(nèi)部各個(gè)內(nèi)聚和模塊之間的耦合。前者反映的是模塊內(nèi)部各個(gè)成分之間的聯(lián)系,所以也稱(chēng)塊內(nèi)聯(lián)系;后者反映的是成分之間的聯(lián)系,所以也稱(chēng)塊內(nèi)聯(lián)系;后者反映的是一個(gè)模塊與其他模塊之間的聯(lián)系,所以又稱(chēng)塊間聯(lián)系。一個(gè)模塊與其他模塊之間的聯(lián)系,所以又稱(chēng)塊間聯(lián)系。模塊

19、的獨(dú)立性越高,則塊內(nèi)聯(lián)系越強(qiáng),塊間聯(lián)系越弱,模塊的獨(dú)立性越高,則塊內(nèi)聯(lián)系越強(qiáng),塊間聯(lián)系越弱,因此必須盡可能得設(shè)計(jì)出高內(nèi)聚低耦合的模塊。因此必須盡可能得設(shè)計(jì)出高內(nèi)聚低耦合的模塊。 信息系統(tǒng)分析與設(shè)計(jì)10 1)內(nèi)聚)內(nèi)聚 模塊的內(nèi)聚是指模塊內(nèi)部各成分間聯(lián)系的緊密程模塊的內(nèi)聚是指模塊內(nèi)部各成分間聯(lián)系的緊密程度。一個(gè)模塊內(nèi)部各成分之間的聯(lián)系越緊密,該模塊度。一個(gè)模塊內(nèi)部各成分之間的聯(lián)系越緊密,該模塊獨(dú)立性越高。按照由弱到強(qiáng)的順序,把模塊的內(nèi)聚分獨(dú)立性越高。按照由弱到強(qiáng)的順序,把模塊的內(nèi)聚分為為7種類(lèi)型,如圖種類(lèi)型,如圖6-2所示。所示。圖圖6-2 內(nèi)聚強(qiáng)度的劃分內(nèi)聚強(qiáng)度的劃分信息系統(tǒng)分析與設(shè)計(jì)11 (

20、1 1)偶然性偶然性?xún)?nèi)聚內(nèi)聚 當(dāng)幾個(gè)模塊內(nèi)正好有一段代碼是相同的,當(dāng)幾個(gè)模塊內(nèi)正好有一段代碼是相同的,將它們抽取出來(lái)形成單獨(dú)的模塊,即將它們抽取出來(lái)形成單獨(dú)的模塊,即偶然性偶然性?xún)?nèi)內(nèi)聚模塊。例如幾個(gè)模塊都要執(zhí)行聚模塊。例如幾個(gè)模塊都要執(zhí)行“讀讀A”A”的操作,的操作,為避免重復(fù)書(shū)寫(xiě)而將這些操作匯成一個(gè)模塊。為避免重復(fù)書(shū)寫(xiě)而將這些操作匯成一個(gè)模塊。偶然性?xún)?nèi)聚是內(nèi)聚程度最低的一種,具有偶然偶然性?xún)?nèi)聚是內(nèi)聚程度最低的一種,具有偶然性?xún)?nèi)聚的性?xún)?nèi)聚的模塊獨(dú)立性差,不容易理解模塊獨(dú)立性差,不容易理解和修改和修改,會(huì)給系統(tǒng)開(kāi)發(fā)帶來(lái)很大的困擾,出錯(cuò)的機(jī)率要會(huì)給系統(tǒng)開(kāi)發(fā)帶來(lái)很大的困擾,出錯(cuò)的機(jī)率要比其他類(lèi)型的模

21、塊大得多,因此在系統(tǒng)設(shè)計(jì)時(shí)比其他類(lèi)型的模塊大得多,因此在系統(tǒng)設(shè)計(jì)時(shí)應(yīng)盡量避免。應(yīng)盡量避免。 信息系統(tǒng)分析與設(shè)計(jì)12 (2)邏輯性?xún)?nèi)聚)邏輯性?xún)?nèi)聚 邏輯性?xún)?nèi)聚指模塊內(nèi)執(zhí)行幾個(gè)邏輯上相似的功能,邏輯性?xún)?nèi)聚指模塊內(nèi)執(zhí)行幾個(gè)邏輯上相似的功能, 通通過(guò)參數(shù)確定該模塊完成哪一個(gè)功能。如將產(chǎn)生各種類(lèi)型錯(cuò)過(guò)參數(shù)確定該模塊完成哪一個(gè)功能。如將產(chǎn)生各種類(lèi)型錯(cuò)誤的信息輸出放在一個(gè)模塊,或?qū)牟煌O(shè)備上的輸入放誤的信息輸出放在一個(gè)模塊,或?qū)牟煌O(shè)備上的輸入放在一個(gè)模塊,形成一種單入口多功能模塊。這種模塊內(nèi)聚在一個(gè)模塊,形成一種單入口多功能模塊。這種模塊內(nèi)聚程度有所提高,各部分之間在功能上有相互關(guān)系,但不易程度有所提

22、高,各部分之間在功能上有相互關(guān)系,但不易修改,因?yàn)楫?dāng)某個(gè)調(diào)用模塊要求修改此模塊公用代碼時(shí),修改,因?yàn)楫?dāng)某個(gè)調(diào)用模塊要求修改此模塊公用代碼時(shí),而另一些調(diào)用模塊又不要求修改。另外,調(diào)用時(shí)需要進(jìn)行而另一些調(diào)用模塊又不要求修改。另外,調(diào)用時(shí)需要進(jìn)行控制參數(shù)的傳遞,造成模塊間的控制耦合,而且在調(diào)用此控制參數(shù)的傳遞,造成模塊間的控制耦合,而且在調(diào)用此模塊時(shí),不用的部分也占據(jù)了主存,從而降低了系統(tǒng)效率。模塊時(shí),不用的部分也占據(jù)了主存,從而降低了系統(tǒng)效率。 信息系統(tǒng)分析與設(shè)計(jì)13 (3)時(shí)間性?xún)?nèi)聚)時(shí)間性?xún)?nèi)聚 若一個(gè)模塊包含了需要在同一時(shí)間段中執(zhí)行的多個(gè)任務(wù),若一個(gè)模塊包含了需要在同一時(shí)間段中執(zhí)行的多個(gè)任務(wù),

23、則稱(chēng)該模塊的內(nèi)聚為時(shí)間性?xún)?nèi)聚。例如,將多個(gè)變量的初始則稱(chēng)該模塊的內(nèi)聚為時(shí)間性?xún)?nèi)聚。例如,將多個(gè)變量的初始化放在同一個(gè)模塊中實(shí)現(xiàn),或?qū)⑿枰瑫r(shí)使用的多個(gè)庫(kù)文件化放在同一個(gè)模塊中實(shí)現(xiàn),或?qū)⑿枰瑫r(shí)使用的多個(gè)庫(kù)文件的打開(kāi)操作放在同一個(gè)模塊中,都會(huì)產(chǎn)生時(shí)間性?xún)?nèi)聚的模塊。的打開(kāi)操作放在同一個(gè)模塊中,都會(huì)產(chǎn)生時(shí)間性?xún)?nèi)聚的模塊。由于時(shí)間性?xún)?nèi)聚模塊中的各個(gè)部分在時(shí)間上的聯(lián)系,其內(nèi)聚由于時(shí)間性?xún)?nèi)聚模塊中的各個(gè)部分在時(shí)間上的聯(lián)系,其內(nèi)聚程度比邏輯性?xún)?nèi)聚高一些。但這樣的模塊往往會(huì)和其他相關(guān)程度比邏輯性?xún)?nèi)聚高一些。但這樣的模塊往往會(huì)和其他相關(guān)模塊有著緊密的聯(lián)系,因而會(huì)造成耦合性的增加。模塊有著緊密的聯(lián)系,因而會(huì)造成耦

24、合性的增加。 (4)過(guò)程性?xún)?nèi)聚)過(guò)程性?xún)?nèi)聚 當(dāng)一個(gè)模塊中包含的一組任務(wù)必須按照某一特定的次序當(dāng)一個(gè)模塊中包含的一組任務(wù)必須按照某一特定的次序執(zhí)行時(shí),就稱(chēng)為過(guò)程性?xún)?nèi)聚模塊。如用高斯消去法解線(xiàn)形方執(zhí)行時(shí),就稱(chēng)為過(guò)程性?xún)?nèi)聚模塊。如用高斯消去法解線(xiàn)形方程組的流程為:建立方程組系數(shù)矩陣程組的流程為:建立方程組系數(shù)矩陣高斯消去高斯消去回代,將回代,將其納入一個(gè)模塊中就形成了一個(gè)過(guò)程性?xún)?nèi)聚模塊。其納入一個(gè)模塊中就形成了一個(gè)過(guò)程性?xún)?nèi)聚模塊。 信息系統(tǒng)分析與設(shè)計(jì)14 (5)通信性?xún)?nèi)聚)通信性?xún)?nèi)聚 如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)

25、據(jù),則稱(chēng)之為通信性?xún)?nèi)聚模塊。如或產(chǎn)生了相同的輸出數(shù)據(jù),則稱(chēng)之為通信性?xún)?nèi)聚模塊。如一個(gè)模塊完成一個(gè)模塊完成“建表建表”、“查表查表”兩部分功能,都使用同兩部分功能,都使用同一數(shù)據(jù)結(jié)構(gòu)一數(shù)據(jù)結(jié)構(gòu)名字表;又如一個(gè)模塊完成生產(chǎn)日?qǐng)?bào)表、名字表;又如一個(gè)模塊完成生產(chǎn)日?qǐng)?bào)表、 周報(bào)表和月報(bào)表,都使用同一數(shù)據(jù)周報(bào)表和月報(bào)表,都使用同一數(shù)據(jù)日產(chǎn)量。通信性?xún)?nèi)日產(chǎn)量。通信性?xún)?nèi)聚的模塊各部分都緊密相關(guān)于同一數(shù)據(jù)聚的模塊各部分都緊密相關(guān)于同一數(shù)據(jù)(或者數(shù)據(jù)結(jié)構(gòu)或者數(shù)據(jù)結(jié)構(gòu)),所以?xún)?nèi)聚性要高于前幾種類(lèi)型。同時(shí),如果把某一數(shù)據(jù)結(jié)所以?xún)?nèi)聚性要高于前幾種類(lèi)型。同時(shí),如果把某一數(shù)據(jù)結(jié)構(gòu)、文件及設(shè)備等操作都放在一個(gè)模塊內(nèi),可達(dá)到信

26、息隱構(gòu)、文件及設(shè)備等操作都放在一個(gè)模塊內(nèi),可達(dá)到信息隱藏的作用。藏的作用。 信息系統(tǒng)分析與設(shè)計(jì)15 (6 6)順序性?xún)?nèi)聚順序性?xún)?nèi)聚 若一個(gè)模塊中的各個(gè)部分都與同一個(gè)功能密切相若一個(gè)模塊中的各個(gè)部分都與同一個(gè)功能密切相關(guān),并且必須按照先后順序執(zhí)行關(guān),并且必須按照先后順序執(zhí)行( (通常前一個(gè)部分的輸通常前一個(gè)部分的輸出數(shù)據(jù)就是后一個(gè)部分的輸入數(shù)據(jù)出數(shù)據(jù)就是后一個(gè)部分的輸入數(shù)據(jù)) ),則稱(chēng)該模塊的內(nèi),則稱(chēng)該模塊的內(nèi)聚為順序性?xún)?nèi)聚。例如,在一個(gè)處理學(xué)生成績(jī)的模塊聚為順序性?xún)?nèi)聚。例如,在一個(gè)處理學(xué)生成績(jī)的模塊中,前一個(gè)部分根據(jù)成績(jī)統(tǒng)計(jì)出及格的學(xué)生人數(shù),后中,前一個(gè)部分根據(jù)成績(jī)統(tǒng)計(jì)出及格的學(xué)生人數(shù),后一個(gè)

27、部分根據(jù)及格人數(shù)計(jì)算出學(xué)生的及格率。由于順一個(gè)部分根據(jù)及格人數(shù)計(jì)算出學(xué)生的及格率。由于順序性?xún)?nèi)聚模塊中的各個(gè)部分在功能和執(zhí)行順序上都密序性?xún)?nèi)聚模塊中的各個(gè)部分在功能和執(zhí)行順序上都密切相關(guān),因此內(nèi)聚程度很高且易于理解。切相關(guān),因此內(nèi)聚程度很高且易于理解。 信息系統(tǒng)分析與設(shè)計(jì)16 (7 7)功能)功能性性?xún)?nèi)聚內(nèi)聚 一個(gè)模塊中各個(gè)部分都是為了完成某一具體功能一個(gè)模塊中各個(gè)部分都是為了完成某一具體功能必不可少的組成部分,或者說(shuō)該模塊中所有部分都是必不可少的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的,則稱(chēng)該模塊為

28、功能性?xún)?nèi)聚模塊。如分割的,則稱(chēng)該模塊為功能性?xún)?nèi)聚模塊。如“求一組求一組數(shù)的最大值數(shù)的最大值”這樣一個(gè)單一功能的模塊。功能性?xún)?nèi)聚這樣一個(gè)單一功能的模塊。功能性?xún)?nèi)聚是所有內(nèi)聚中內(nèi)聚程度最高的一種,功能性?xún)?nèi)聚的模是所有內(nèi)聚中內(nèi)聚程度最高的一種,功能性?xún)?nèi)聚的模塊易理解、易修改,有利于實(shí)現(xiàn)模塊的重用,從而提塊易理解、易修改,有利于實(shí)現(xiàn)模塊的重用,從而提高了系統(tǒng)開(kāi)發(fā)的效率。高了系統(tǒng)開(kāi)發(fā)的效率。 信息系統(tǒng)分析與設(shè)計(jì)17 綜上所述,綜上所述,對(duì)于內(nèi)聚應(yīng)該采取這樣的對(duì)于內(nèi)聚應(yīng)該采取這樣的設(shè)計(jì)原則:設(shè)計(jì)原則:禁用偶然性禁用偶然性?xún)?nèi)聚和邏輯內(nèi)聚和邏輯性性?xún)?nèi)聚,內(nèi)聚,限制使用時(shí)間限制使用時(shí)間性性?xún)?nèi)聚,少用過(guò)程內(nèi)聚,少

29、用過(guò)程性性?xún)?nèi)聚和內(nèi)聚和通信性?xún)?nèi)聚,提倡使用順序性?xún)?nèi)聚和通信性?xún)?nèi)聚,提倡使用順序性?xún)?nèi)聚和功能功能性性?xún)?nèi)聚。內(nèi)聚。 信息系統(tǒng)分析與設(shè)計(jì)18 2 2)耦合)耦合 模塊的耦合是指模塊之間相互聯(lián)系的程度。相互模塊的耦合是指模塊之間相互聯(lián)系的程度。相互聯(lián)系復(fù)雜的模塊耦合度強(qiáng),模塊獨(dú)立性低;相互聯(lián)系聯(lián)系復(fù)雜的模塊耦合度強(qiáng),模塊獨(dú)立性低;相互聯(lián)系簡(jiǎn)單的模塊耦合度弱,模塊獨(dú)立性高。按照由弱到強(qiáng)簡(jiǎn)單的模塊耦合度弱,模塊獨(dú)立性高。按照由弱到強(qiáng)的順序,把的順序,把模塊的模塊的耦合也耦合也分為分為7 7種類(lèi)型,如圖種類(lèi)型,如圖6-36-3所示。所示。圖圖6-3 耦合強(qiáng)度的劃分耦合強(qiáng)度的劃分信息系統(tǒng)分析與設(shè)計(jì)19 (1

30、1)非直接耦合)非直接耦合 非直接耦合非直接耦合是指是指兩個(gè)模塊之間沒(méi)有直接關(guān)系,相兩個(gè)模塊之間沒(méi)有直接關(guān)系,相互之間沒(méi)有信息傳遞,它們之間的聯(lián)系完全是通過(guò)主互之間沒(méi)有信息傳遞,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的。模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的。因此,模塊間的這種耦因此,模塊間的這種耦合性最弱,但模塊獨(dú)立性最高。合性最弱,但模塊獨(dú)立性最高。 (2 2)數(shù)據(jù)耦合)數(shù)據(jù)耦合 數(shù)據(jù)耦合是指若兩個(gè)模塊之間僅通過(guò)模塊參數(shù)交數(shù)據(jù)耦合是指若兩個(gè)模塊之間僅通過(guò)模塊參數(shù)交換信息,且交換的信息全部為簡(jiǎn)單數(shù)據(jù)信息,相當(dāng)于換信息,且交換的信息全部為簡(jiǎn)單數(shù)據(jù)信息,相當(dāng)于高級(jí)語(yǔ)言中的值傳遞,則稱(chēng)這種耦合為數(shù)據(jù)耦

31、合。數(shù)高級(jí)語(yǔ)言中的值傳遞,則稱(chēng)這種耦合為數(shù)據(jù)耦合。數(shù)據(jù)耦合的耦合程度較低,模塊的獨(dú)立性較高。通常軟據(jù)耦合的耦合程度較低,模塊的獨(dú)立性較高。通常軟件系統(tǒng)中都包含有數(shù)據(jù)耦合。件系統(tǒng)中都包含有數(shù)據(jù)耦合。信息系統(tǒng)分析與設(shè)計(jì)20 (3)特征耦合)特征耦合 特征耦合是指兩個(gè)模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)。特征耦合是指兩個(gè)模塊之間傳遞的是數(shù)據(jù)結(jié)構(gòu)。其實(shí)模塊間傳遞的是這個(gè)數(shù)據(jù)結(jié)構(gòu)的地址,兩個(gè)模塊其實(shí)模塊間傳遞的是這個(gè)數(shù)據(jù)結(jié)構(gòu)的地址,兩個(gè)模塊必須清楚這些數(shù)據(jù)結(jié)構(gòu),并按要求對(duì)其進(jìn)行操作,這必須清楚這些數(shù)據(jù)結(jié)構(gòu),并按要求對(duì)其進(jìn)行操作,這樣就降低了可理解性??刹捎脴泳徒档土丝衫斫庑浴?刹捎谩靶畔㈦[蔽信息隱蔽”的方法,的方法

32、,把該數(shù)據(jù)結(jié)構(gòu)以及在其上的操作全部集中在一個(gè)模塊,把該數(shù)據(jù)結(jié)構(gòu)以及在其上的操作全部集中在一個(gè)模塊,就可消除這種耦合,但有時(shí)因?yàn)檫€有其他功能的緣故,就可消除這種耦合,但有時(shí)因?yàn)檫€有其他功能的緣故,特征耦合往往是不可避免的。特征耦合往往是不可避免的。 (4)控制耦合)控制耦合 控制耦合是指一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),傳遞控制耦合是指一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),傳遞的是控制變量的是控制變量(如開(kāi)關(guān)、如開(kāi)關(guān)、 標(biāo)志等標(biāo)志等),被調(diào)模塊通過(guò)該控,被調(diào)模塊通過(guò)該控制變量的值有選擇地執(zhí)行塊內(nèi)某一功能。制變量的值有選擇地執(zhí)行塊內(nèi)某一功能。 因此被調(diào)模因此被調(diào)模塊內(nèi)應(yīng)具有多個(gè)功能,哪個(gè)功能起作用受其調(diào)用模塊塊內(nèi)應(yīng)具

33、有多個(gè)功能,哪個(gè)功能起作用受其調(diào)用模塊的控制。控制耦合增加了理解、編程及修改的復(fù)雜性,的控制。控制耦合增加了理解、編程及修改的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊內(nèi)部的邏輯關(guān)系,即被調(diào)調(diào)用模塊必須知道被調(diào)模塊內(nèi)部的邏輯關(guān)系,即被調(diào)模塊處理細(xì)節(jié)不能模塊處理細(xì)節(jié)不能“信息隱藏信息隱藏”,從而降低了模塊的,從而降低了模塊的獨(dú)立性。獨(dú)立性。 信息系統(tǒng)分析與設(shè)計(jì)21 (5 5)外部耦合)外部耦合 外部耦合外部耦合是指是指一組模塊訪(fǎng)問(wèn)同一個(gè)全局變量。一組模塊訪(fǎng)問(wèn)同一個(gè)全局變量。 (6 6)公共耦合)公共耦合 公共耦合是指一組模塊訪(fǎng)問(wèn)同一個(gè)全局性數(shù)據(jù)結(jié)公共耦合是指一組模塊訪(fǎng)問(wèn)同一個(gè)全局性數(shù)據(jù)結(jié)構(gòu)。如果在模塊之間

34、共享的數(shù)據(jù)很多,且通過(guò)參數(shù)的構(gòu)。如果在模塊之間共享的數(shù)據(jù)很多,且通過(guò)參數(shù)的傳遞很不方便時(shí),才使用公共耦合,因?yàn)楣柴詈蠒?huì)傳遞很不方便時(shí),才使用公共耦合,因?yàn)楣柴詈蠒?huì)引起以下問(wèn)題:引起以下問(wèn)題: 耦合的復(fù)雜程度隨模塊的個(gè)數(shù)增加而增加,無(wú)耦合的復(fù)雜程度隨模塊的個(gè)數(shù)增加而增加,無(wú)法控制各個(gè)模塊對(duì)公共數(shù)據(jù)的存取,若某個(gè)模塊有錯(cuò),法控制各個(gè)模塊對(duì)公共數(shù)據(jù)的存取,若某個(gè)模塊有錯(cuò),可通過(guò)公共區(qū)將錯(cuò)誤延伸到其他模塊,可通過(guò)公共區(qū)將錯(cuò)誤延伸到其他模塊, 則會(huì)影響到系則會(huì)影響到系統(tǒng)的可靠性。統(tǒng)的可靠性。 使系統(tǒng)的可維護(hù)性變差。若某一模塊修改了公使系統(tǒng)的可維護(hù)性變差。若某一模塊修改了公共區(qū)的數(shù)據(jù),則會(huì)影響到與此有

35、關(guān)的所有模塊。共區(qū)的數(shù)據(jù),則會(huì)影響到與此有關(guān)的所有模塊。 降低了系統(tǒng)的可理解性。因?yàn)楦鱾€(gè)模塊使用公降低了系統(tǒng)的可理解性。因?yàn)楦鱾€(gè)模塊使用公共區(qū)的數(shù)據(jù),使用方式往往是隱含的,某些數(shù)據(jù)被哪共區(qū)的數(shù)據(jù),使用方式往往是隱含的,某些數(shù)據(jù)被哪些模塊共享,不易很快搞清。些模塊共享,不易很快搞清。 信息系統(tǒng)分析與設(shè)計(jì)22 (7 7)內(nèi)容耦合)內(nèi)容耦合 如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合。耦合。 l l 一個(gè)模塊可以直接訪(fǎng)問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù);一個(gè)模塊可以直接訪(fǎng)問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù); l l 一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部;一個(gè)模塊不通過(guò)正常入口

36、轉(zhuǎn)到另一模塊內(nèi)部; l l 兩個(gè)模塊有一部分程序代碼重疊兩個(gè)模塊有一部分程序代碼重疊( (只可能出現(xiàn)在只可能出現(xiàn)在匯編語(yǔ)言中匯編語(yǔ)言中) ); l l 一個(gè)模塊有多個(gè)入口。一個(gè)模塊有多個(gè)入口。 內(nèi)容耦合是最高程度的耦合,也是最差的耦合。內(nèi)容耦合是最高程度的耦合,也是最差的耦合。它會(huì)使因模塊間的聯(lián)系過(guò)于緊密而對(duì)后期的開(kāi)發(fā)和維它會(huì)使因模塊間的聯(lián)系過(guò)于緊密而對(duì)后期的開(kāi)發(fā)和維護(hù)工作帶來(lái)很大的麻煩。護(hù)工作帶來(lái)很大的麻煩。 信息系統(tǒng)分析與設(shè)計(jì)23 綜上所述,綜上所述,對(duì)于耦合應(yīng)該采取這樣對(duì)于耦合應(yīng)該采取這樣的設(shè)計(jì)原則:盡量使用非直接耦合、數(shù)的設(shè)計(jì)原則:盡量使用非直接耦合、數(shù)據(jù)耦合和特征耦合,少用控制耦合和

37、外據(jù)耦合和特征耦合,少用控制耦合和外部耦合,限制公共耦合,完全不用內(nèi)容部耦合,限制公共耦合,完全不用內(nèi)容耦合。耦合。 信息系統(tǒng)分析與設(shè)計(jì)24 2. 模塊的作用域應(yīng)處于其控制域范圍之內(nèi)模塊的作用域應(yīng)處于其控制域范圍之內(nèi) 模塊的作用域是指受該模塊內(nèi)一個(gè)判定條件影響模塊的作用域是指受該模塊內(nèi)一個(gè)判定條件影響的所有模塊范圍;模塊的控制域是指該模塊本身以及的所有模塊范圍;模塊的控制域是指該模塊本身以及所有該模塊的下屬模塊所有該模塊的下屬模塊(包括該模塊可以直接調(diào)用的下包括該模塊可以直接調(diào)用的下級(jí)模塊和可以間接調(diào)用的更下層的模塊級(jí)模塊和可以間接調(diào)用的更下層的模塊)。例如,如圖。例如,如圖6-4所示,模塊所

38、示,模塊C的控制域?yàn)槟K的控制域?yàn)槟KC、E和和F;若在模塊;若在模塊C中存在一個(gè)對(duì)模塊中存在一個(gè)對(duì)模塊D、E和和F均有影響的判定條件,均有影響的判定條件,即模塊即模塊C的作用域?yàn)槟K的作用域?yàn)槟KC、D、E和和F(圖中帶陰影的圖中帶陰影的模塊模塊),則顯然模塊,則顯然模塊C的作用域超出了其控制域。由于的作用域超出了其控制域。由于模塊模塊D在模塊在模塊C的作用域中,因此模塊的作用域中,因此模塊C對(duì)模塊對(duì)模塊D的控的控制信息必然要通過(guò)上級(jí)模塊制信息必然要通過(guò)上級(jí)模塊B進(jìn)行傳遞,這樣不但會(huì)進(jìn)行傳遞,這樣不但會(huì)增加模塊間的耦合性,而且會(huì)給模塊的維護(hù)和修改帶增加模塊間的耦合性,而且會(huì)給模塊的維護(hù)和修改

39、帶來(lái)麻煩來(lái)麻煩(若要修改模塊若要修改模塊C,可能會(huì)對(duì)不在它控制域中的,可能會(huì)對(duì)不在它控制域中的模塊模塊D造成影響造成影響)。因此,系統(tǒng)設(shè)計(jì)時(shí)應(yīng)使各個(gè)模塊的。因此,系統(tǒng)設(shè)計(jì)時(shí)應(yīng)使各個(gè)模塊的作用域處于其控制域范圍之內(nèi)。作用域處于其控制域范圍之內(nèi)。 信息系統(tǒng)分析與設(shè)計(jì)25 若發(fā)現(xiàn)不符合此設(shè)計(jì)原則的模塊,可通過(guò)下面的方法進(jìn)行改若發(fā)現(xiàn)不符合此設(shè)計(jì)原則的模塊,可通過(guò)下面的方法進(jìn)行改進(jìn):進(jìn): 將判定位置上移。如將圖將判定位置上移。如將圖6-46-4中的模塊中的模塊C C中的判定條件上中的判定條件上移到上級(jí)模塊移到上級(jí)模塊B B中或?qū)⒛K中或?qū)⒛KC C整個(gè)合并到模塊整個(gè)合并到模塊B B中。中。 將超出作用域

40、的模塊下移。如將圖將超出作用域的模塊下移。如將圖6-46-4中的模塊中的模塊D D移至模移至模塊塊C C的下一層上,使模塊的下一層上,使模塊D D處于模塊處于模塊C C的控制域中的控制域中 。圖圖6-4 6-4 模塊的作用域和控制域模塊的作用域和控制域 信息系統(tǒng)分析與設(shè)計(jì)26 3.3. 系統(tǒng)結(jié)構(gòu)中的深度和寬度不宜過(guò)大系統(tǒng)結(jié)構(gòu)中的深度和寬度不宜過(guò)大 所謂深度是指系統(tǒng)體系結(jié)構(gòu)中控制的層數(shù),它能所謂深度是指系統(tǒng)體系結(jié)構(gòu)中控制的層數(shù),它能夠粗略地反映出軟件系統(tǒng)的規(guī)模和復(fù)雜程度;所謂寬夠粗略地反映出軟件系統(tǒng)的規(guī)模和復(fù)雜程度;所謂寬度是指系統(tǒng)體系結(jié)構(gòu)內(nèi)同一層次上模塊個(gè)數(shù)的最大值,度是指系統(tǒng)體系結(jié)構(gòu)內(nèi)同一層

41、次上模塊個(gè)數(shù)的最大值,通常寬度越大的系統(tǒng)越復(fù)雜。例如,在如圖通常寬度越大的系統(tǒng)越復(fù)雜。例如,在如圖6-56-5所示的所示的系統(tǒng)結(jié)構(gòu)圖中,深度為系統(tǒng)結(jié)構(gòu)圖中,深度為5 5,寬度為,寬度為8 8。 圖圖6-5 6-5 系統(tǒng)結(jié)構(gòu)圖示例系統(tǒng)結(jié)構(gòu)圖示例信息系統(tǒng)分析與設(shè)計(jì)27 4模塊應(yīng)具有高扇入和適當(dāng)?shù)纳瘸瞿K應(yīng)具有高扇入和適當(dāng)?shù)纳瘸?對(duì)一模塊來(lái)說(shuō),扇入是指有多少上級(jí)模塊直接調(diào)用它,如圖對(duì)一模塊來(lái)說(shuō),扇入是指有多少上級(jí)模塊直接調(diào)用它,如圖6-6(a)所示,模塊所示,模塊M的扇入數(shù)為的扇入數(shù)為n;扇出是指一個(gè)模塊可以直接調(diào);扇出是指一個(gè)模塊可以直接調(diào)用的下級(jí)模塊數(shù),如圖用的下級(jí)模塊數(shù),如圖6-6(b)所示,

42、模塊所示,模塊M的扇出數(shù)為的扇出數(shù)為k。模塊的。模塊的扇入越大,則說(shuō)明共享該模塊的上級(jí)模塊數(shù)越多,或者說(shuō)該模塊扇入越大,則說(shuō)明共享該模塊的上級(jí)模塊數(shù)越多,或者說(shuō)該模塊在程序中的重用性越高;而對(duì)于扇出,根據(jù)實(shí)踐經(jīng)驗(yàn),在設(shè)計(jì)良在程序中的重用性越高;而對(duì)于扇出,根據(jù)實(shí)踐經(jīng)驗(yàn),在設(shè)計(jì)良好的典型系統(tǒng)中,模塊的平均扇出通常為好的典型系統(tǒng)中,模塊的平均扇出通常為34。 (a) 扇入扇入 (b) 扇出扇出圖圖6-6 模塊的扇入和扇出模塊的扇入和扇出 信息系統(tǒng)分析與設(shè)計(jì)28 5. 保持適中的模塊規(guī)模和復(fù)雜度保持適中的模塊規(guī)模和復(fù)雜度 程序中模塊的規(guī)模過(guò)大,會(huì)降低程序的可讀性;程序中模塊的規(guī)模過(guò)大,會(huì)降低程序的可

43、讀性;而模塊規(guī)模過(guò)小,勢(shì)必會(huì)導(dǎo)致程序中的模塊數(shù)目過(guò)多,而模塊規(guī)模過(guò)小,勢(shì)必會(huì)導(dǎo)致程序中的模塊數(shù)目過(guò)多,增加接口的復(fù)雜性。對(duì)于模塊的適當(dāng)規(guī)模并沒(méi)有嚴(yán)格增加接口的復(fù)雜性。對(duì)于模塊的適當(dāng)規(guī)模并沒(méi)有嚴(yán)格的規(guī)定,但普遍的觀(guān)點(diǎn)是模塊中的語(yǔ)句數(shù)最好保持在的規(guī)定,但普遍的觀(guān)點(diǎn)是模塊中的語(yǔ)句數(shù)最好保持在50150條語(yǔ)句左右,可以用條語(yǔ)句左右,可以用12頁(yè)打印紙打印,便頁(yè)打印紙打印,便于人們閱讀與研究。為了使模塊的規(guī)模適中,在保證于人們閱讀與研究。為了使模塊的規(guī)模適中,在保證模塊獨(dú)立性的前提下,可對(duì)程序中規(guī)模過(guò)小的模塊進(jìn)模塊獨(dú)立性的前提下,可對(duì)程序中規(guī)模過(guò)小的模塊進(jìn)行合并或?qū)σ?guī)模過(guò)大的模塊進(jìn)行分解。行合并或?qū)σ?guī)模

44、過(guò)大的模塊進(jìn)行分解。 模塊的復(fù)雜度的限制是基于模塊的復(fù)雜度的限制是基于McCade復(fù)雜度度量復(fù)雜度度量方法提出的,該方法是計(jì)算由程序流程圖得到的程序方法提出的,該方法是計(jì)算由程序流程圖得到的程序圖中的環(huán)的個(gè)數(shù)圖中的環(huán)的個(gè)數(shù)V(G),實(shí)踐表明),實(shí)踐表明V(G)10是模是模塊規(guī)模和復(fù)雜度的合理上限,關(guān)于模塊的復(fù)雜度將會(huì)塊規(guī)模和復(fù)雜度的合理上限,關(guān)于模塊的復(fù)雜度將會(huì)在第七章介紹。在第七章介紹。 信息系統(tǒng)分析與設(shè)計(jì)29 6. 降低模塊接口的復(fù)雜度降低模塊接口的復(fù)雜度 復(fù)雜的模塊接口是導(dǎo)致系統(tǒng)出現(xiàn)錯(cuò)誤的主要原因復(fù)雜的模塊接口是導(dǎo)致系統(tǒng)出現(xiàn)錯(cuò)誤的主要原因之一,因此在系統(tǒng)設(shè)計(jì)中應(yīng)盡量使模塊接口簡(jiǎn)單清晰。之

45、一,因此在系統(tǒng)設(shè)計(jì)中應(yīng)盡量使模塊接口簡(jiǎn)單清晰。降低模塊的接口復(fù)雜度,可以提高系統(tǒng)的可讀性,減降低模塊的接口復(fù)雜度,可以提高系統(tǒng)的可讀性,減少出現(xiàn)錯(cuò)誤的可能性,并有利于系統(tǒng)的測(cè)試和維護(hù)。少出現(xiàn)錯(cuò)誤的可能性,并有利于系統(tǒng)的測(cè)試和維護(hù)。例如,求一元二次方程的根模塊例如,求一元二次方程的根模塊QUAD_ROOT(TBL,X),其中其中TBL和和X分別是系數(shù)組參分別是系數(shù)組參數(shù)和根數(shù)組參數(shù),就不如將接口的參數(shù)簡(jiǎn)單化,模塊數(shù)和根數(shù)組參數(shù),就不如將接口的參數(shù)簡(jiǎn)單化,模塊變?yōu)樽優(yōu)镼UAD_ROOT(A,B,C,X1,X2),這樣容易理,這樣容易理解還不容易發(fā)生傳遞錯(cuò)誤。解還不容易發(fā)生傳遞錯(cuò)誤。 信息系統(tǒng)分析與

46、設(shè)計(jì)30 7設(shè)計(jì)單入口單出口的模塊設(shè)計(jì)單入口單出口的模塊 這條規(guī)則告誡軟件工程師不要使模塊間出現(xiàn)內(nèi)容這條規(guī)則告誡軟件工程師不要使模塊間出現(xiàn)內(nèi)容耦合,設(shè)計(jì)出的每一個(gè)模塊都應(yīng)該只有一個(gè)入口一個(gè)耦合,設(shè)計(jì)出的每一個(gè)模塊都應(yīng)該只有一個(gè)入口一個(gè)出口,不要隨便使用出口,不要隨便使用GOTO語(yǔ)句。當(dāng)控制流從頂部進(jìn)語(yǔ)句。當(dāng)控制流從頂部進(jìn)入模塊并且從底部退出來(lái)時(shí),系統(tǒng)是比較容易理解的,入模塊并且從底部退出來(lái)時(shí),系統(tǒng)是比較容易理解的,因此也是比較容易維護(hù)的。因此也是比較容易維護(hù)的。 8模塊功能應(yīng)該可以預(yù)測(cè)模塊功能應(yīng)該可以預(yù)測(cè) 要求設(shè)計(jì)出來(lái)的模塊的功能應(yīng)該能夠預(yù)測(cè),但也要求設(shè)計(jì)出來(lái)的模塊的功能應(yīng)該能夠預(yù)測(cè),但也要防

47、止模塊功能過(guò)分局限。要防止模塊功能過(guò)分局限。 信息系統(tǒng)分析與設(shè)計(jì)31 6.2 總體設(shè)計(jì)概述總體設(shè)計(jì)概述 6.2.1 總體設(shè)計(jì)的目的和任務(wù)總體設(shè)計(jì)的目的和任務(wù) 總體設(shè)計(jì)的基本目的就是回答總體設(shè)計(jì)的基本目的就是回答“概括地說(shuō),系統(tǒng)概括地說(shuō),系統(tǒng)應(yīng)該如何實(shí)現(xiàn)應(yīng)該如何實(shí)現(xiàn)?”這個(gè)問(wèn)題,因此,總體設(shè)計(jì)又稱(chēng)為概這個(gè)問(wèn)題,因此,總體設(shè)計(jì)又稱(chēng)為概要設(shè)計(jì)或初步設(shè)計(jì)。要設(shè)計(jì)或初步設(shè)計(jì)。 總體設(shè)計(jì)的基本任務(wù)包括:總體設(shè)計(jì)的基本任務(wù)包括: 1. 設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)(簡(jiǎn)稱(chēng)軟件結(jié)構(gòu)簡(jiǎn)稱(chēng)軟件結(jié)構(gòu)) 2. 數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì) 3. 編寫(xiě)總體設(shè)計(jì)文檔編寫(xiě)總體設(shè)計(jì)文檔 4. 評(píng)審評(píng)審信息系統(tǒng)分

48、析與設(shè)計(jì)32 6.2.2 總體設(shè)計(jì)說(shuō)明書(shū)總體設(shè)計(jì)說(shuō)明書(shū) 總體設(shè)計(jì)說(shuō)明書(shū)是總體設(shè)計(jì)階段結(jié)束時(shí)提交的技總體設(shè)計(jì)說(shuō)明書(shū)是總體設(shè)計(jì)階段結(jié)束時(shí)提交的技術(shù)文檔,它的主要內(nèi)容如下:術(shù)文檔,它的主要內(nèi)容如下: (1) 引言:編寫(xiě)目的、背景、定義和參考資料。引言:編寫(xiě)目的、背景、定義和參考資料。 (2) 總體設(shè)計(jì):需求規(guī)定、運(yùn)行環(huán)境、基本設(shè)計(jì)概總體設(shè)計(jì):需求規(guī)定、運(yùn)行環(huán)境、基本設(shè)計(jì)概念、處理流程和結(jié)構(gòu)。念、處理流程和結(jié)構(gòu)。 (3) 接口設(shè)計(jì):用戶(hù)接口、外部接口和內(nèi)部接口。接口設(shè)計(jì):用戶(hù)接口、外部接口和內(nèi)部接口。 (4) 運(yùn)行設(shè)計(jì):運(yùn)行模塊的組合、運(yùn)行控制和運(yùn)行運(yùn)行設(shè)計(jì):運(yùn)行模塊的組合、運(yùn)行控制和運(yùn)行時(shí)間。時(shí)間。

49、 (5) 系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與程序的關(guān)系。設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與程序的關(guān)系。 (6) 系統(tǒng)出錯(cuò)處理設(shè)計(jì):出錯(cuò)信息、補(bǔ)救措施和系系統(tǒng)出錯(cuò)處理設(shè)計(jì):出錯(cuò)信息、補(bǔ)救措施和系統(tǒng)恢復(fù)設(shè)計(jì)。統(tǒng)恢復(fù)設(shè)計(jì)。 信息系統(tǒng)分析與設(shè)計(jì)33 6.2.3 總體設(shè)計(jì)的評(píng)審總體設(shè)計(jì)的評(píng)審 總體設(shè)計(jì)完成之后必須提交評(píng)審,總體設(shè)計(jì)評(píng)審包括的內(nèi)容總體設(shè)計(jì)完成之后必須提交評(píng)審,總體設(shè)計(jì)評(píng)審包括的內(nèi)容有:有: (1)可追溯性:確認(rèn)該設(shè)計(jì)是否覆蓋了所有已確定的系統(tǒng)需)可追溯性:確認(rèn)該設(shè)計(jì)是否覆蓋了所有已確定的系統(tǒng)需求,系統(tǒng)每一成份是否可追溯到某一項(xiàng)需求;求,系統(tǒng)每一成

50、份是否可追溯到某一項(xiàng)需求; (2)接口:確認(rèn)該系統(tǒng)的內(nèi)部接口與外部接口是否已經(jīng)明確)接口:確認(rèn)該系統(tǒng)的內(nèi)部接口與外部接口是否已經(jīng)明確定義。模塊是否滿(mǎn)足高內(nèi)聚和低耦合的要求,模塊作用范圍是否定義。模塊是否滿(mǎn)足高內(nèi)聚和低耦合的要求,模塊作用范圍是否在其控制范圍之內(nèi);在其控制范圍之內(nèi); (3)風(fēng)險(xiǎn):確認(rèn)該設(shè)計(jì)在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否)風(fēng)險(xiǎn):確認(rèn)該設(shè)計(jì)在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否能按時(shí)實(shí)現(xiàn);能按時(shí)實(shí)現(xiàn); (4)實(shí)用性:確認(rèn)該設(shè)計(jì)對(duì)于需求的解決方案是否實(shí)用;)實(shí)用性:確認(rèn)該設(shè)計(jì)對(duì)于需求的解決方案是否實(shí)用; (5)技術(shù)清晰度:確認(rèn)該設(shè)計(jì)是否以一種易于翻譯成代碼的)技術(shù)清晰度:確認(rèn)該設(shè)計(jì)是否以一

51、種易于翻譯成代碼的形式表達(dá);形式表達(dá); (6)可維護(hù)性:確認(rèn)該設(shè)計(jì)是否考慮了方便未來(lái)的維護(hù);)可維護(hù)性:確認(rèn)該設(shè)計(jì)是否考慮了方便未來(lái)的維護(hù); (7)質(zhì)量:確認(rèn)該設(shè)計(jì)是否表現(xiàn)出良好的質(zhì)量特征;)質(zhì)量:確認(rèn)該設(shè)計(jì)是否表現(xiàn)出良好的質(zhì)量特征; (8)各種選擇方案:看是否考慮過(guò)其它方案,比較各種選擇)各種選擇方案:看是否考慮過(guò)其它方案,比較各種選擇方案的標(biāo)準(zhǔn)是什么;方案的標(biāo)準(zhǔn)是什么; (9)限制:評(píng)估對(duì)該系統(tǒng)的限制是否現(xiàn)實(shí),是否與需求一致;)限制:評(píng)估對(duì)該系統(tǒng)的限制是否現(xiàn)實(shí),是否與需求一致; (10)其他具體問(wèn)題:對(duì)于文檔、可測(cè)試性、設(shè)計(jì)過(guò)程等方面)其他具體問(wèn)題:對(duì)于文檔、可測(cè)試性、設(shè)計(jì)過(guò)程等方面進(jìn)行評(píng)

52、估。進(jìn)行評(píng)估。 信息系統(tǒng)分析與設(shè)計(jì)34 6.2.4 總體設(shè)計(jì)的圖形工具總體設(shè)計(jì)的圖形工具 用于總體設(shè)計(jì)的圖形工具有用于總體設(shè)計(jì)的圖形工具有HIPO圖和結(jié)構(gòu)圖,它圖和結(jié)構(gòu)圖,它們主要用來(lái)描述系統(tǒng)模塊的層次結(jié)構(gòu)。們主要用來(lái)描述系統(tǒng)模塊的層次結(jié)構(gòu)。 1. HIPO圖圖 HIPO(Hierarchy Plus Input/Processing/Output)圖是圖是IBM公司在公司在20世紀(jì)世紀(jì)70年代發(fā)展起來(lái)的用于描述系年代發(fā)展起來(lái)的用于描述系統(tǒng)結(jié)構(gòu)的圖形工具。它實(shí)質(zhì)上是在描述系統(tǒng)總體模塊統(tǒng)結(jié)構(gòu)的圖形工具。它實(shí)質(zhì)上是在描述系統(tǒng)總體模塊結(jié)構(gòu)的層次圖結(jié)構(gòu)的層次圖(H圖圖)的基礎(chǔ)上,加入了用于描述每個(gè)模的

53、基礎(chǔ)上,加入了用于描述每個(gè)模塊輸入塊輸入/輸出數(shù)據(jù)和處理功能的輸出數(shù)據(jù)和處理功能的IPO圖,因此它的中文圖,因此它的中文全名為層次圖加輸入全名為層次圖加輸入/處理處理/輸出圖。輸出圖。 信息系統(tǒng)分析與設(shè)計(jì)35 1) HIPO圖中的圖中的H圖圖 H圖在第五章介紹過(guò)了,但在圖在第五章介紹過(guò)了,但在HIPO圖中為了使圖中為了使H圖更具有可追蹤圖更具有可追蹤性,可以為除頂層矩形框以外的其他矩形框加上能反映層次關(guān)系的編性,可以為除頂層矩形框以外的其他矩形框加上能反映層次關(guān)系的編號(hào)。例如,工資計(jì)算系統(tǒng)的號(hào)。例如,工資計(jì)算系統(tǒng)的H圖如圖圖如圖6-7所示。所示。 信息系統(tǒng)分析與設(shè)計(jì)36 2) HIPO圖中的圖

54、中的IPO圖圖 IPO圖在第五章也介紹過(guò),下面舉個(gè)例子,例如,圖在第五章也介紹過(guò),下面舉個(gè)例子,例如,工資計(jì)算系統(tǒng)中的計(jì)算工資模塊的工資計(jì)算系統(tǒng)中的計(jì)算工資模塊的IPO圖如圖圖如圖6-8所示。所示。 信息系統(tǒng)分析與設(shè)計(jì)37 2結(jié)構(gòu)圖結(jié)構(gòu)圖 Yourdon提出的結(jié)構(gòu)圖提出的結(jié)構(gòu)圖(SC,Structure Chart)是進(jìn)行系統(tǒng)是進(jìn)行系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的另一個(gè)有力工具。結(jié)構(gòu)圖能夠描述出軟件系統(tǒng)的模塊結(jié)構(gòu)設(shè)計(jì)的另一個(gè)有力工具。結(jié)構(gòu)圖能夠描述出軟件系統(tǒng)的模塊層次結(jié)構(gòu),清楚地反映出程序中各模塊之間的調(diào)用關(guān)系和聯(lián)系。層次結(jié)構(gòu),清楚地反映出程序中各模塊之間的調(diào)用關(guān)系和聯(lián)系。結(jié)構(gòu)圖中的基本符號(hào)及其含義如表結(jié)構(gòu)圖中

55、的基本符號(hào)及其含義如表6-1所示。所示。 表表6-1 結(jié)構(gòu)圖中的基本符號(hào)結(jié)構(gòu)圖中的基本符號(hào) 信息系統(tǒng)分析與設(shè)計(jì)38 在系統(tǒng)結(jié)構(gòu)圖中,模塊有以下幾種類(lèi)型:傳入模在系統(tǒng)結(jié)構(gòu)圖中,模塊有以下幾種類(lèi)型:傳入模塊、傳出模塊、變換模塊和協(xié)調(diào)模塊,如圖塊、傳出模塊、變換模塊和協(xié)調(diào)模塊,如圖6-9所示。所示。信息系統(tǒng)分析與設(shè)計(jì)39 如圖如圖6-10所示就是一個(gè)描繪了產(chǎn)生最佳解的結(jié)構(gòu)所示就是一個(gè)描繪了產(chǎn)生最佳解的結(jié)構(gòu)圖的例子。圖的例子。 信息系統(tǒng)分析與設(shè)計(jì)40 6.3 面向數(shù)據(jù)流的總體設(shè)計(jì)方法面向數(shù)據(jù)流的總體設(shè)計(jì)方法 在總體設(shè)計(jì)中,主要采用面向數(shù)據(jù)流的設(shè)計(jì)方法,結(jié)構(gòu)化設(shè)計(jì)在總體設(shè)計(jì)中,主要采用面向數(shù)據(jù)流的設(shè)計(jì)方

56、法,結(jié)構(gòu)化設(shè)計(jì)方法是一種典型的面向數(shù)據(jù)流的總體設(shè)計(jì)方法。面向數(shù)據(jù)流的體系方法是一種典型的面向數(shù)據(jù)流的總體設(shè)計(jì)方法。面向數(shù)據(jù)流的體系結(jié)構(gòu)設(shè)計(jì)的過(guò)程如圖結(jié)構(gòu)設(shè)計(jì)的過(guò)程如圖6-11所示。所示。信息系統(tǒng)分析與設(shè)計(jì)41 6.3.1 數(shù)據(jù)流圖的類(lèi)型數(shù)據(jù)流圖的類(lèi)型 根據(jù)數(shù)據(jù)流圖的結(jié)構(gòu)特點(diǎn)通常可將數(shù)據(jù)流圖劃分為根據(jù)數(shù)據(jù)流圖的結(jié)構(gòu)特點(diǎn)通??蓪?shù)據(jù)流圖劃分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖兩個(gè)基本類(lèi)型。變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖兩個(gè)基本類(lèi)型。 1. 變換型數(shù)據(jù)流圖變換型數(shù)據(jù)流圖 變換型數(shù)據(jù)流圖呈現(xiàn)出的結(jié)構(gòu)特點(diǎn)為:由變換型數(shù)據(jù)流圖呈現(xiàn)出的結(jié)構(gòu)特點(diǎn)為:由(邏輯邏輯)輸輸入、變換中心和入、變換中心和(邏輯邏輯)輸出三

57、部分組成,如圖輸出三部分組成,如圖6-12所示。所示。 信息系統(tǒng)分析與設(shè)計(jì)42 變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為三步,即變換型數(shù)據(jù)處理問(wèn)題的工作過(guò)程大致分為三步,即取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),如取得數(shù)據(jù)、變換數(shù)據(jù)和給出數(shù)據(jù),如圖圖6-13所示。由所示。由變變換換型數(shù)據(jù)流圖映射出的型數(shù)據(jù)流圖映射出的變換型變換型系統(tǒng)結(jié)構(gòu)圖,如圖系統(tǒng)結(jié)構(gòu)圖,如圖6-14所所示。示。 信息系統(tǒng)分析與設(shè)計(jì)43 2. 事務(wù)型數(shù)據(jù)流圖事務(wù)型數(shù)據(jù)流圖 事務(wù)型數(shù)據(jù)流圖呈現(xiàn)出的結(jié)構(gòu)特點(diǎn)為:輸入流在事務(wù)型數(shù)據(jù)流圖呈現(xiàn)出的結(jié)構(gòu)特點(diǎn)為:輸入流在經(jīng)過(guò)某個(gè)被稱(chēng)為經(jīng)過(guò)某個(gè)被稱(chēng)為“事務(wù)中心事務(wù)中心”的加工時(shí)被分離為多個(gè)的加工時(shí)被分離為多

58、個(gè)發(fā)散的輸出流,形成多個(gè)平行的加工處理路徑,如圖發(fā)散的輸出流,形成多個(gè)平行的加工處理路徑,如圖6-15所示。所示。信息系統(tǒng)分析與設(shè)計(jì)44 該類(lèi)型數(shù)據(jù)流圖所描述的加工過(guò)程為:外部數(shù)據(jù)沿輸入通路該類(lèi)型數(shù)據(jù)流圖所描述的加工過(guò)程為:外部數(shù)據(jù)沿輸入通路進(jìn)入系統(tǒng)后,被送往事務(wù)中心;事務(wù)中心接收輸入數(shù)據(jù)并分析確進(jìn)入系統(tǒng)后,被送往事務(wù)中心;事務(wù)中心接收輸入數(shù)據(jù)并分析確定其類(lèi)型;最后根據(jù)所確定的類(lèi)型為數(shù)據(jù)選擇其中的一條加工路定其類(lèi)型;最后根據(jù)所確定的類(lèi)型為數(shù)據(jù)選擇其中的一條加工路徑。由事務(wù)型數(shù)據(jù)流圖映射出的事務(wù)型系統(tǒng)結(jié)構(gòu)圖,如圖徑。由事務(wù)型數(shù)據(jù)流圖映射出的事務(wù)型系統(tǒng)結(jié)構(gòu)圖,如圖6-16所所示。示。信息系統(tǒng)分析與

59、設(shè)計(jì)45 6.3.2 變換分析變換分析 變換分析是一系列設(shè)計(jì)步驟的總稱(chēng),經(jīng)過(guò)這些步變換分析是一系列設(shè)計(jì)步驟的總稱(chēng),經(jīng)過(guò)這些步驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成系統(tǒng)結(jié)構(gòu)。變換分析的設(shè)計(jì)步驟如下:射成系統(tǒng)結(jié)構(gòu)。變換分析的設(shè)計(jì)步驟如下: (1) 復(fù)查基本系統(tǒng)模型。復(fù)查基本系統(tǒng)模型。 (2) 復(fù)查并精化數(shù)據(jù)流圖。復(fù)查并精化數(shù)據(jù)流圖。 (3) 確定數(shù)據(jù)流圖具有變換特性。確定數(shù)據(jù)流圖具有變換特性。 (4) 確定輸入流和輸出流的邊界,從而孤立出變換確定輸入流和輸出流的邊界,從而孤立出變換中心。中心。 (5) 完成完成“第一級(jí)分解第一級(jí)分解”。 (

60、6) 完成完成“第二級(jí)分解第二級(jí)分解”。 (7) 使用設(shè)計(jì)度量和啟發(fā)規(guī)則對(duì)第一次分割得到的使用設(shè)計(jì)度量和啟發(fā)規(guī)則對(duì)第一次分割得到的系統(tǒng)結(jié)構(gòu)進(jìn)一步精化。系統(tǒng)結(jié)構(gòu)進(jìn)一步精化。信息系統(tǒng)分析與設(shè)計(jì)46 下面通過(guò)一個(gè)例子說(shuō)明變換分析的方法。下面通過(guò)一個(gè)例子說(shuō)明變換分析的方法。 1假設(shè)汽車(chē)的儀表板將完成下述功能:假設(shè)汽車(chē)的儀表板將完成下述功能: 通過(guò)模通過(guò)模-數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理機(jī)接口;數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理機(jī)接口; 在發(fā)光二極管面板上顯示數(shù)據(jù);在發(fā)光二極管面板上顯示數(shù)據(jù); 指示每小時(shí)英里數(shù)(指示每小時(shí)英里數(shù)(mileh),行駛的里程,),行駛的里程,每加侖油行駛的英里數(shù)(每加侖油行駛的英里數(shù)(mi

溫馨提示

  • 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)論